Added pretty printing, reintroduced rich dependancy
This commit is contained in:
@@ -17,7 +17,7 @@ Next, ensure you have an API key from The Odds API and simply run:
|
||||
python main.py --key <YOUR_API_KEY>
|
||||
|
||||
## Usage
|
||||
The tool offers three optional command line arguments.
|
||||
The tool offers four optional command line arguments.
|
||||
|
||||
### API key
|
||||
In order to set the API key to use either the `-k` or `--key` arguments. If neither of these are used the script will read the value of `$API_KEY`. `.env` files are also supported and automatically loaded.
|
||||
@@ -25,5 +25,8 @@ In order to set the API key to use either the `-k` or `--key` arguments. If neit
|
||||
### Region
|
||||
Different parts of the world have different bookmakers. To reflect this the `-r` or `--region` arguments allow you to set the region in which to search. Accepts the values `"eu"`,`"us"`, `"uk"`, and `"au"`.
|
||||
|
||||
### Unformatted
|
||||
Using the `-u` or `--unformatted` will remove the pretty printing and simply dump the json which contains the arbs to the console directly. Use this if you intend to extend upon the script in some way, for regular usage the formatted print is significantly better.
|
||||
|
||||
### Help
|
||||
The `-h` or `--help` flags will show a short help message with documentation.
|
||||
29
main.py
29
main.py
@@ -1,12 +1,9 @@
|
||||
from logic import *
|
||||
import os
|
||||
import os, sys
|
||||
from itertools import chain
|
||||
import argparse
|
||||
from dotenv import load_dotenv
|
||||
try:
|
||||
from rich import print
|
||||
except ImportError:
|
||||
pass
|
||||
from rich import print
|
||||
|
||||
|
||||
def main():
|
||||
@@ -30,20 +27,36 @@ def main():
|
||||
default="eu",
|
||||
help="The region in which to look for arbitrage opportunities."
|
||||
)
|
||||
parser.add_argument(
|
||||
"-u", "--unformatted",
|
||||
action="store_true",
|
||||
help="If set, turn output into the json dump from the opportunities."
|
||||
)
|
||||
args = parser.parse_args()
|
||||
|
||||
key = args.key
|
||||
region = args.region
|
||||
print_unformatted = args.unformatted
|
||||
|
||||
# logic
|
||||
sports = get_sports(key)
|
||||
data = chain.from_iterable(get_data(key, sport, region=region) for sport in sports)
|
||||
data = filter(lambda x: x != "message", data)
|
||||
results = process_data(data)
|
||||
|
||||
arbitrage_opportunities = filter(lambda x: x["total_implied_odds"] < 1, results)
|
||||
for i in arbitrage_opportunities:
|
||||
print(i)
|
||||
|
||||
if print_unformatted:
|
||||
for arb in arbitrage_opportunities:
|
||||
print(arb)
|
||||
else:
|
||||
arbitrage_opportunities = list(arbitrage_opportunities)
|
||||
print(f"{len(arbitrage_opportunities)} arbitrage opportunities found {':money-mouth_face:' if len(arbitrage_opportunities) > 0 else ':man_shrugging:'}")
|
||||
|
||||
for arb in arbitrage_opportunities:
|
||||
print(f"\t[italic]{arb['match_name']} in {arb['league']} [/italic]")
|
||||
print(f"\t\tTotal implied odds: {arb['total_implied_odds']} with these odds:")
|
||||
for key, value in arb['best_outcome_odds'].items():
|
||||
print(f"\t\t[bold red]{key}[/bold red] with [green]{value[0]}[/green] for {value[1]}")
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
@@ -1,2 +1,3 @@
|
||||
requests~=2.28.1
|
||||
python-dotenv~=0.21.0
|
||||
python-dotenv~=0.21.0
|
||||
rich~=12.6.0
|
||||
Reference in New Issue
Block a user