<h1 align="center">smartbetsAPI</h1>
<p align="center">
<a href="https://github.com/Simatwa/smartbetsAPI"><img alt="Github" src="https://img.shields.io/static/v1?logo=github&color=blueviolet&label=Test&message=Passing"/></a> <a href="LICENSE"><img alt="License" src="https://img.shields.io/static/v1?logo=GPL&color=Blue&message=GPL-v3&label=License"/></a> <a href="https://pypi.org/project/smartbetsAPI"><img alt="PyPi" src="https://img.shields.io/pypi/v/smartbetsAPI?color=green"/></a> <a href="https://github.com/psf/black"><img alt="Black" src="https://img.shields.io/static/v1?logo=Black&label=Code-style&message=Black"/></a> <a href="#"><img alt="Accuracy" src="https://img.shields.io/static/v1?logo=accuracy&label=Accuracy&message=55%&color=yellow"/></a> <a href="#"><img alt="Passing" src="https://img.shields.io/static/v1?logo=Docs&label=Docs&message=Passing&color=green"/></a> <a href="#"><img alt="coverage" src="https://img.shields.io/static/v1?logo=Coverage&label=Coverage&message=100%&color=yellowgreen"/></a> <a href="#" alt="progress"><img alt="Progress" src="https://img.shields.io/static/v1?logo=Progress&label=Progress&message=95%&color=green"/></a> <a href="https://pepy.tech/project/smartbetsapi"><img src="https://static.pepy.tech/personalized-badge/smartbetsapi?period=total&units=international_system&left_color=grey&left_text=Downloads" alt="Downloads"></a></p><br>
> "Punter's choice"
Worldwide soccer-matches predictor with Fast-API and a package for integrating the scripts in your own [Python](https://python.org) code.
## Features
- REST-API
- Script integration (package)
- Non-ML
## Installation and usage
### Installation
*Python 3.9+* is required for this script to be fruitful to you.
- Installing through pip is always the most preferred way:
```sh
pip install smartbetsAPI
```
- For those who like enjoying the **latest** releases from [Github](https://github.com) like [me](https://github.com/Simatwa), rather than waiting for the next one:
```sh
pip install git+https://github.com/Simatwa/smartbetsAPI.git
```
To install it alongside `REST-API` dependencies simply run:
```sh
pip install "smartbetsapi[api]"
```
### Usage
1. Terminal
Running `$ smartbetsAPI <token/password>` will fire up the FastAPI server with the following default configurations.
<table align="center">
<thead>
<tr><th>Command </th><th>Default </th></tr>
</thead>
<tbody>
<tr><td>Port </td><td>8000 </td></tr>
<tr><td>Username </td><td>API</td></tr>
<tr><td>Filename </td><td>None </td></tr>
<tr><td>level (Logging)</td><td>20 </td></tr>
<tr><td>host </td><td>False </td></tr>
<tr><td>debug </td><td>False </td></tr>
<tr><td>no-net </td><td>False </td></tr>
<tr><td>log </td><td>False </td></tr>
<tr><td>colorize </td><td>False </td></tr>
<tr><td>gui (Termux) </td><td>False </td></tr>
</tbody>
</table>
- For instance :
```sh
$ smartbetsAPI mypass9876
```
> [!TIP]
> `Docs` will be available at : http://localhost:8000/v1/docs
> `Redoc` will be available at : http://localhost:8000/v1/redoc
Here is an example of a [simple program](examples/bet_at_rest_api_level.py) that makes prediction using the REST API.
![api running](assets/api_running.gif)
> [!Note]
> Reinstall with `sudo` privileges if `smartbetsAPI` command can't be found.
> Example predicting using REST API
```py
from smartbets_API import predictor
predict = predictor('http://localhost:8080','password')
bets=predict.get_predictions('Arsenal','Manchester')
print(bets)
#Output
#(True, {'choice': 55.56, 'g': 14.0, 'gg': 80.0, 'ov15': 80.0, 'ov25': 65.0, 'ov35': 55.0, 'pick': 'ov15', 'result': '1'})
```
* For more information you can run `smartbetsAPI -h`
2. Importing Package
Module `predictor` provides two ways of interacting with it at the programming level, based on the `data-type` in which the teams have been packed and parsed to it:
* Using `predictorL` object which accepts *teams* (**List** data-type).
> For [example](examples/predict_using_list.py):
```py
#!/usr/bin/env python3
from smartbets_API.predictor import predictor
teams = [
"Napoli", # Home team (index [0])
"AC Milan", # Away team (index [1])
]
# Instantiating predictor
predict = predictor()
# Using predictorL object to handle teams (List data-type)
predictions = predict.predictorL(teams)
# Display info
print(predictions)
#Output
#{'g': 8.0, 'gg': 65.0, 'ov15': 70.0, 'ov25': 40.0, 'ov35': 30.0, 'choice': 60.0, 'result': '2', 'pick': 'ov15'}
```
* Using `predictorD` object which takes *teams* (**Dictionary** data-type):
> For [example](examples/predict_using_dict.py):
```py
#!/usr/bin/env python3
from smartbets_API.predictor import predictor
teams = {
1: "Manchester City", # 1 for home-team
2: "Liverpool", # 2 for away-team
}
# Instantiating predictor
predict = predictor()
# Using predictorD object to handle teams (Dictionary data-type)
predictions = predict.predictorD(teams)
# Display info
print(predictions)
#Output
#{'g': 8.0, 'gg': 65.0, 'ov15': 60.0, 'ov25': 45.0, 'ov35': 30.0, 'choice': 56.16, 'result': '1', 'pick': 'gg'}
```
- The output initials are explained in the table below.
<table>
<thead>
<tr><th>Parameter </th><th>Function </th></tr>
</thead>
<tbody>
<tr><td>g </td><td>Goal-average of the two teams </td></tr>
<tr><td>gg </td><td>Probability of both teams to score </td></tr>
<tr><td>ov15 </td><td>Probability of having more than 2 goals </td></tr>
<tr><td>ov25 </td><td>Probability of having more than 3 goals </td></tr>
<tr><td>ov35 </td><td>Probability of having more than 4 goals </td></tr>
<tr><td>choice </td><td>Probability of the specified 'result' to occur </td></tr>
<tr><td>result </td><td>The most suitable outcome from [1,1x,x,2x,2] </td></tr>
<tr><td>pick </td><td>The most suitable outcome from [1,1x,x,2x,2,gg,ov15,ov25,ov35]</td></tr>
</tbody>
</table>
> **Note**
- Probabilities are in percentange (%)
#### Further info
The `predictor` _class_ accepts multiple parameters that includes :
<table>
<thead>
<tr><th>Parameter </th><th>Function </th><th>Default </th></tr>
</thead>
<tbody>
<tr><td>include_position</td><td>Include team's league ranking in making predictions </td><td>False </td></tr>
<tr><td>log </td><td>Log at api default log's path </td><td>False </td></tr>
<tr><td>level </td><td>Logging level </td><td>0 </td></tr>
<tr><td>filename </td><td>Log to the filename specified </td><td>None </td></tr>
<tr><td>color </td><td>Colorize the logs </td><td>False </td></tr>
<tr><td>gui </td><td>Run with some Graphical interface notifications (Termux)</td><td>False </td></tr>
<tr><td>api </td><td>Run with api-server's configurations </td><td>False </td></tr>
</tbody>
</table>
The two predictor's object (`predictorD`, `predictorL`) accepts two parameters i.e.
* **teams** - Required
* **net** - Source of team's data - Default `True` (Online)
## Source of data
Team performances are sourced from [Soccerway](https://int.soccerway.com) after retrieving the *uri* from [Google](https://www.google.com).
> **Warning** Copyright related issues are liable to the user of this script!
## Disclaimer
This project aims to help *punters* and *bookmarkers* to make informed and well researched soccer-predictions. Nevertheless, it is important to specify that 100% accuracy does not exist and smartbetsAPI can't guarantee the accuracy of the predictions. It is therefore your responsibility to trust the information generated by smartbetsAPI after evaluating its reliability. As the [creator](https://github.com/Simatwa), I **CANNOT** be held responsible for any loss of capital that may occur during the use of this program.
## Contributing and Support
### Contributing
Contributions are always welcome! <br>
Please take a look at the [Contribution guidelines](CONTRIBUTING.md). <br>
Feel free to open an [Issue](https://github.com/Simatwa/smartbetsAPI/issues) or to [Fork](https://github.com/Simatwa/smartbetsAPI/fork) this repo.
### ToDo
- [ ] Upgrade to Machine learning
- [ ] Improve algorithim's accuracy
- [ ] General code improvements
- [ ] Fix bugs
### Support
Consider donating to this project if you find it useful:
<p align="center">
<a href="https://www.paypal.com/donate/?hosted_button_id=KLNYKSGUXY8R2"><img src="https://img.shields.io/static/v1?logo=paypal&message=Donate&color=blueviolet&label=Paypal"/></a>
</p>
### API Health Status
| No. | API | Status |
|--------|-----|--------|
| 1. | [On-render](https://smartbetsapi.onrender.com) | [cron-job](https://lfx48519.status.cron-job.org) |
## Credits
- [x] [Soccerway](https://int.soccerway.com)
- [x] [Google](https://www.google.com)
- [x] [Python.org](https://python.org)
## Special Thanks
* [x] [victhepythonista](https://github.com/victhepythonista)
* [x] YOU.
Raw data
{
"_id": null,
"home_page": "https://github.com/Simatwa/smartbetsAPI",
"name": "smartbetsAPI",
"maintainer": "Smartwa Caleb",
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": "smartwacaleb@gmail.com",
"keywords": "Football, Predictions, Betting API, Soccer predictions, Football Predictions",
"author": "Smartwa Caleb",
"author_email": "smartwacaleb@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/f6/8e/2643f9b67ad06d33a594feaa9dc73509cb4d7ddc6bee8f8a456c45c2f985/smartbetsapi-1.3.2.tar.gz",
"platform": null,
"description": "<h1 align=\"center\">smartbetsAPI</h1>\n\n<p align=\"center\">\n\n <a href=\"https://github.com/Simatwa/smartbetsAPI\"><img alt=\"Github\" src=\"https://img.shields.io/static/v1?logo=github&color=blueviolet&label=Test&message=Passing\"/></a> <a href=\"LICENSE\"><img alt=\"License\" src=\"https://img.shields.io/static/v1?logo=GPL&color=Blue&message=GPL-v3&label=License\"/></a> <a href=\"https://pypi.org/project/smartbetsAPI\"><img alt=\"PyPi\" src=\"https://img.shields.io/pypi/v/smartbetsAPI?color=green\"/></a> <a href=\"https://github.com/psf/black\"><img alt=\"Black\" src=\"https://img.shields.io/static/v1?logo=Black&label=Code-style&message=Black\"/></a> <a href=\"#\"><img alt=\"Accuracy\" src=\"https://img.shields.io/static/v1?logo=accuracy&label=Accuracy&message=55%&color=yellow\"/></a> <a href=\"#\"><img alt=\"Passing\" src=\"https://img.shields.io/static/v1?logo=Docs&label=Docs&message=Passing&color=green\"/></a> <a href=\"#\"><img alt=\"coverage\" src=\"https://img.shields.io/static/v1?logo=Coverage&label=Coverage&message=100%&color=yellowgreen\"/></a> <a href=\"#\" alt=\"progress\"><img alt=\"Progress\" src=\"https://img.shields.io/static/v1?logo=Progress&label=Progress&message=95%&color=green\"/></a> <a href=\"https://pepy.tech/project/smartbetsapi\"><img src=\"https://static.pepy.tech/personalized-badge/smartbetsapi?period=total&units=international_system&left_color=grey&left_text=Downloads\" alt=\"Downloads\"></a></p><br>\n\n \n\n > \"Punter's choice\"\n\n\n\n Worldwide soccer-matches predictor with Fast-API and a package for integrating the scripts in your own [Python](https://python.org) code.\n\n\n\n ## Features\n\n\n\n - REST-API\n\n - Script integration (package)\n\n - Non-ML\n\n\n\n ## Installation and usage\n\n\n\n ### Installation\n\n\n\n*Python 3.9+* is required for this script to be fruitful to you. \n\n- Installing through pip is always the most preferred way:\n\n\n\n ```sh\n\n pip install smartbetsAPI\n\n \n\n ```\n\n\n\n - For those who like enjoying the **latest** releases from [Github](https://github.com) like [me](https://github.com/Simatwa), rather than waiting for the next one:\n\n\n\n ```sh\n\n pip install git+https://github.com/Simatwa/smartbetsAPI.git\n\n\n\n ```\n\n\n\nTo install it alongside `REST-API` dependencies simply run:\n\n\n\n```sh\n\npip install \"smartbetsapi[api]\"\n\n```\n\n\n\n### Usage\n\n\n\n1. Terminal\n\n\n\n Running `$ smartbetsAPI <token/password>` will fire up the FastAPI server with the following default configurations.\n\n\n\n<table align=\"center\"> \n\n<thead>\n\n<tr><th>Command </th><th>Default </th></tr>\n\n</thead>\n\n<tbody>\n\n<tr><td>Port </td><td>8000 </td></tr>\n\n<tr><td>Username </td><td>API</td></tr>\n\n<tr><td>Filename </td><td>None </td></tr>\n\n<tr><td>level (Logging)</td><td>20 </td></tr>\n\n<tr><td>host </td><td>False </td></tr>\n\n<tr><td>debug </td><td>False </td></tr>\n\n<tr><td>no-net </td><td>False </td></tr>\n\n<tr><td>log </td><td>False </td></tr>\n\n<tr><td>colorize </td><td>False </td></tr>\n\n<tr><td>gui (Termux) </td><td>False </td></tr>\n\n</tbody>\n\n</table>\n\n\n\n- For instance :\n\n\n\n```sh\n\n $ smartbetsAPI mypass9876\n\n\n\n```\n\n\n\n> [!TIP]\n\n> `Docs` will be available at : http://localhost:8000/v1/docs\n\n> `Redoc` will be available at : http://localhost:8000/v1/redoc\n\n\n\nHere is an example of a [simple program](examples/bet_at_rest_api_level.py) that makes prediction using the REST API.\n\n\n\n![api running](assets/api_running.gif)\n\n\n\n> [!Note]\n\n> Reinstall with `sudo` privileges if `smartbetsAPI` command can't be found.\n\n\n\n> Example predicting using REST API\n\n\n\n```py\n\nfrom smartbets_API import predictor\n\npredict = predictor('http://localhost:8080','password')\n\nbets=predict.get_predictions('Arsenal','Manchester')\n\nprint(bets)\n\n#Output\n\n#(True, {'choice': 55.56, 'g': 14.0, 'gg': 80.0, 'ov15': 80.0, 'ov25': 65.0, 'ov35': 55.0, 'pick': 'ov15', 'result': '1'})\n\n```\n\n\n\n\n\n* For more information you can run `smartbetsAPI -h` \n\n\n\n\n\n2. Importing Package\n\n\n\nModule `predictor` provides two ways of interacting with it at the programming level, based on the `data-type` in which the teams have been packed and parsed to it:\n\n\n\n* Using `predictorL` object which accepts *teams* (**List** data-type).\n\n> For [example](examples/predict_using_list.py):\n\n\n\n```py\n\n#!/usr/bin/env python3\n\nfrom smartbets_API.predictor import predictor\n\n\n\nteams = [\n\n \"Napoli\", # Home team (index [0])\n\n \"AC Milan\", # Away team (index [1])\n\n]\n\n# Instantiating predictor\n\npredict = predictor()\n\n\n\n# Using predictorL object to handle teams (List data-type)\n\npredictions = predict.predictorL(teams)\n\n\n\n# Display info\n\nprint(predictions)\n\n\n\n#Output\n\n#{'g': 8.0, 'gg': 65.0, 'ov15': 70.0, 'ov25': 40.0, 'ov35': 30.0, 'choice': 60.0, 'result': '2', 'pick': 'ov15'}\n\n\n\n```\n\n\n\n* Using `predictorD` object which takes *teams* (**Dictionary** data-type):\n\n> For [example](examples/predict_using_dict.py):\n\n\n\n```py\n\n#!/usr/bin/env python3\n\nfrom smartbets_API.predictor import predictor\n\n\n\nteams = {\n\n 1: \"Manchester City\", # 1 for home-team\n\n 2: \"Liverpool\", # 2 for away-team\n\n}\n\n\n\n# Instantiating predictor\n\npredict = predictor()\n\n\n\n# Using predictorD object to handle teams (Dictionary data-type)\n\npredictions = predict.predictorD(teams)\n\n\n\n# Display info\n\nprint(predictions)\n\n\n\n#Output\n\n#{'g': 8.0, 'gg': 65.0, 'ov15': 60.0, 'ov25': 45.0, 'ov35': 30.0, 'choice': 56.16, 'result': '1', 'pick': 'gg'}\n\n\n\n```\n\n\n\n- The output initials are explained in the table below.\n\n\n\n<table>\n\n<thead>\n\n<tr><th>Parameter </th><th>Function </th></tr>\n\n</thead>\n\n<tbody>\n\n<tr><td>g </td><td>Goal-average of the two teams </td></tr>\n\n<tr><td>gg </td><td>Probability of both teams to score </td></tr>\n\n<tr><td>ov15 </td><td>Probability of having more than 2 goals </td></tr>\n\n<tr><td>ov25 </td><td>Probability of having more than 3 goals </td></tr>\n\n<tr><td>ov35 </td><td>Probability of having more than 4 goals </td></tr>\n\n<tr><td>choice </td><td>Probability of the specified 'result' to occur </td></tr>\n\n<tr><td>result </td><td>The most suitable outcome from [1,1x,x,2x,2] </td></tr>\n\n<tr><td>pick </td><td>The most suitable outcome from [1,1x,x,2x,2,gg,ov15,ov25,ov35]</td></tr>\n\n</tbody>\n\n</table>\n\n\n\n> **Note** \n\n - Probabilities are in percentange (%)\n\n\n\n#### Further info \n\n\n\nThe `predictor` _class_ accepts multiple parameters that includes :\n\n\n\n<table>\n\n<thead>\n\n<tr><th>Parameter </th><th>Function </th><th>Default </th></tr>\n\n</thead>\n\n<tbody>\n\n<tr><td>include_position</td><td>Include team's league ranking in making predictions </td><td>False </td></tr>\n\n<tr><td>log </td><td>Log at api default log's path </td><td>False </td></tr>\n\n<tr><td>level </td><td>Logging level </td><td>0 </td></tr>\n\n<tr><td>filename </td><td>Log to the filename specified </td><td>None </td></tr>\n\n<tr><td>color </td><td>Colorize the logs </td><td>False </td></tr>\n\n<tr><td>gui </td><td>Run with some Graphical interface notifications (Termux)</td><td>False </td></tr>\n\n<tr><td>api </td><td>Run with api-server's configurations </td><td>False </td></tr>\n\n</tbody>\n\n</table>\n\n\n\nThe two predictor's object (`predictorD`, `predictorL`) accepts two parameters i.e.\n\n* **teams** - Required\n\n* **net** - Source of team's data - Default `True` (Online)\n\n\n\n## Source of data\n\n\n\nTeam performances are sourced from [Soccerway](https://int.soccerway.com) after retrieving the *uri* from [Google](https://www.google.com).\n\n\n\n> **Warning** Copyright related issues are liable to the user of this script!\n\n\n\n## Disclaimer\n\n\n\nThis project aims to help *punters* and *bookmarkers* to make informed and well researched soccer-predictions. Nevertheless, it is important to specify that 100% accuracy does not exist and smartbetsAPI can't guarantee the accuracy of the predictions. It is therefore your responsibility to trust the information generated by smartbetsAPI after evaluating its reliability. As the [creator](https://github.com/Simatwa), I **CANNOT** be held responsible for any loss of capital that may occur during the use of this program.\n\n\n\n## Contributing and Support\n\n\n\n### Contributing\n\n\n\nContributions are always welcome! <br>\n\nPlease take a look at the [Contribution guidelines](CONTRIBUTING.md). <br>\n\nFeel free to open an [Issue](https://github.com/Simatwa/smartbetsAPI/issues) or to [Fork](https://github.com/Simatwa/smartbetsAPI/fork) this repo.\n\n\n\n### ToDo\n\n\n\n- [ ] Upgrade to Machine learning\n\n- [ ] Improve algorithim's accuracy\n\n- [ ] General code improvements\n\n- [ ] Fix bugs\n\n\n\n### Support \n\n\n\nConsider donating to this project if you find it useful:\n\n<p align=\"center\">\n\n<a href=\"https://www.paypal.com/donate/?hosted_button_id=KLNYKSGUXY8R2\"><img src=\"https://img.shields.io/static/v1?logo=paypal&message=Donate&color=blueviolet&label=Paypal\"/></a>\n\n</p>\n\n\n\n### API Health Status\n\n\n\n| No. | API | Status |\n\n|--------|-----|--------|\n\n| 1. | [On-render](https://smartbetsapi.onrender.com) | [cron-job](https://lfx48519.status.cron-job.org) |\n\n\n\n## Credits\n\n\n\n- [x] [Soccerway](https://int.soccerway.com)\n\n- [x] [Google](https://www.google.com)\n\n- [x] [Python.org](https://python.org)\n\n\n\n## Special Thanks\n\n\n\n* [x] [victhepythonista](https://github.com/victhepythonista)\n\n* [x] YOU.\n",
"bugtrack_url": null,
"license": "GPL-3.0",
"summary": "Simple football prediction API",
"version": "1.3.2",
"project_urls": {
"Bug Report": "https://github.com/Simatwa/smartbetsAPI/issues/new",
"Documentation": "https://github.com/Simatwa/smartbetsAPI/blob/main/README.md",
"Download": "https://github.com/Simatwa/smartbetsAPI/releases",
"Homepage": "https://github.com/Simatwa/smartbetsAPI",
"Issue Tracker": "https://github.com/Simatwa/smartbetsAPI/issues",
"Source Code": "https://github.com/Simatwa/smartbetsAPI"
},
"split_keywords": [
"football",
" predictions",
" betting api",
" soccer predictions",
" football predictions"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "278cad3f3b921d1e797572e687b76a09b986c9f615253944c2fcaf95f4676e6f",
"md5": "80a14d245ac3bc6f08bf41a23ca985c5",
"sha256": "6201f44aead8cbdd016a8a299fda66e972155b336ada619b8accf2b8b79b0416"
},
"downloads": -1,
"filename": "smartbetsAPI-1.3.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "80a14d245ac3bc6f08bf41a23ca985c5",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 38493,
"upload_time": "2024-07-06T13:08:14",
"upload_time_iso_8601": "2024-07-06T13:08:14.170959Z",
"url": "https://files.pythonhosted.org/packages/27/8c/ad3f3b921d1e797572e687b76a09b986c9f615253944c2fcaf95f4676e6f/smartbetsAPI-1.3.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f68e2643f9b67ad06d33a594feaa9dc73509cb4d7ddc6bee8f8a456c45c2f985",
"md5": "4c339afd445bd15f6d468e964b1357cb",
"sha256": "b30d8b78450fdeb9e4732a96e30afec7f89b2892881378ff59504bfd64635b06"
},
"downloads": -1,
"filename": "smartbetsapi-1.3.2.tar.gz",
"has_sig": false,
"md5_digest": "4c339afd445bd15f6d468e964b1357cb",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 34541,
"upload_time": "2024-07-06T13:08:15",
"upload_time_iso_8601": "2024-07-06T13:08:15.698605Z",
"url": "https://files.pythonhosted.org/packages/f6/8e/2643f9b67ad06d33a594feaa9dc73509cb4d7ddc6bee8f8a456c45c2f985/smartbetsapi-1.3.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-07-06 13:08:15",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Simatwa",
"github_project": "smartbetsAPI",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "fastapi",
"specs": [
[
"==",
"0.110.1"
]
]
},
{
"name": "appdirs",
"specs": [
[
"==",
"1.4.4"
]
]
},
{
"name": "requests",
"specs": [
[
"==",
"2.31.0"
]
]
},
{
"name": "colorama",
"specs": [
[
"==",
"0.4.6"
]
]
},
{
"name": "bs4",
"specs": [
[
"==",
"0.0.1"
]
]
},
{
"name": "Faker",
"specs": [
[
"==",
"15.3.4"
]
]
},
{
"name": "pyfreeproxies",
"specs": [
[
"==",
"0.1.1"
]
]
}
],
"lcname": "smartbetsapi"
}