sportsball 0.3.27__tar.gz → 0.3.29__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {sportsball-0.3.27/sportsball.egg-info → sportsball-0.3.29}/PKG-INFO +1 -1
- {sportsball-0.3.27 → sportsball-0.3.29}/setup.py +1 -1
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/__init__.py +1 -1
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/afl/afltables/afl_afltables_league_model.py +16 -3
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/afl/combined/afl_combined_league_model.py +1 -1
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/google/google_address_model.py +192 -54
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/ncaab/combined/ncaab_combined_league_model.py +5 -2
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/oddsportal/oddsportal_game_model.py +15 -5
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/oddsportal/oddsportal_league_model.py +3 -2
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/oddsportal/oddsportal_team_model.py +11 -4
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/weather/openmeteo/openmeteo_weather_model.py +5 -1
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/proxy_session.py +1 -1
- {sportsball-0.3.27 → sportsball-0.3.29/sportsball.egg-info}/PKG-INFO +1 -1
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/oddsportal/oddsportal_game_model_test.py +18 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/LICENSE +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/MANIFEST.in +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/README.md +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/requirements.txt +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/setup.cfg +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/__main__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/args.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/cache.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/address_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/afl/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/afl/afltables/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/afl/afltables/afl_afltables_game_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/afl/afltables/afl_afltables_player_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/afl/afltables/afl_afltables_team_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/afl/afltables/afl_afltables_venue_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/afl/aussportsbetting/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/afl/aussportsbetting/afl_aussportsbetting_league_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/afl/combined/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/afl/espn/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/afl/espn/afl_espn_league_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/afl/oddsportal/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/afl/oddsportal/afl_oddsportal_league_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/aussportsbetting/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/aussportsbetting/aussportsbetting_bookie_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/aussportsbetting/aussportsbetting_game_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/aussportsbetting/aussportsbetting_league_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/aussportsbetting/aussportsbetting_odds_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/aussportsbetting/aussportsbetting_team_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/aussportsbetting/aussportsbetting_venue_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/bookie_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/combined/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/combined/combined_address_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/combined/combined_game_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/combined/combined_league_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/combined/combined_player_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/combined/combined_team_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/combined/combined_venue_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/combined/combined_weather_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/espn/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/espn/espn_bookie_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/espn/espn_game_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/espn/espn_league_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/espn/espn_odds_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/espn/espn_player_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/espn/espn_team_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/espn/espn_venue_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/field_type.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/game_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/google/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/google/google_news_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/league.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/league_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/nba/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/nba/combined/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/nba/combined/nba_combined_league_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/nba/espn/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/nba/espn/nba_espn_league_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/nba/nba/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/nba/nba/nba_nba_game_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/nba/nba/nba_nba_league_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/nba/nba/nba_nba_player_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/nba/nba/nba_nba_team_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/nba/oddsportal/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/nba/oddsportal/nba_oddsportal_league_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/nba/sportsdb/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/nba/sportsdb/nba_sportsdb_league_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/nba/sportsreference/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/nba/sportsreference/nba_sportsreference_league_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/ncaab/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/ncaab/combined/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/ncaab/espn/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/ncaab/espn/ncaab_espn_league_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/ncaab/oddsportal/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/ncaab/oddsportal/ncaab_oddsportal_league_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/ncaab/sportsreference/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/ncaab/sportsreference/ncaab_sportsreference_league_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/ncaaf/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/ncaaf/combined/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/ncaaf/combined/ncaaf_combined_league_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/ncaaf/espn/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/ncaaf/espn/ncaaf_espn_league_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/ncaaf/oddsportal/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/ncaaf/oddsportal/ncaaf_oddsportal_league_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/news_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/nfl/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/nfl/aussportsbetting/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/nfl/aussportsbetting/nfl_aussportsbetting_league_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/nfl/combined/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/nfl/combined/nfl_combined_league_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/nfl/espn/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/nfl/espn/nfl_espn_league_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/nfl/oddsportal/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/nfl/oddsportal/nfl_oddsportal_league_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/nfl/sportsdb/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/nfl/sportsdb/nfl_sportsdb_league_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/odds_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/oddsportal/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/oddsportal/oddsportal_bookie_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/oddsportal/oddsportal_odds_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/oddsportal/oddsportal_venue_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/player_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/season_type.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/social_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/sportsdb/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/sportsdb/sportsdb_game_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/sportsdb/sportsdb_league_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/sportsdb/sportsdb_team_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/sportsdb/sportsdb_venue_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/sportsreference/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/sportsreference/sportsreference_game_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/sportsreference/sportsreference_league_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/sportsreference/sportsreference_player_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/sportsreference/sportsreference_team_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/sportsreference/sportsreference_venue_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/team_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/venue_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/weather/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/weather/gribstream/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/weather/gribstream/gribstream_weather_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/weather/multi_weather_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/weather/openmeteo/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/weather_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/wikipedia/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/wikipedia/wikipedia_venue_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/x/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/x/x_social_model.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/logger.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/loglevel.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/session.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/sportsball.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/vendor/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball/vendor/pygooglenews/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball.egg-info/SOURCES.txt +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball.egg-info/dependency_links.txt +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball.egg-info/entry_points.txt +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball.egg-info/not-zip-safe +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball.egg-info/requires.txt +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/sportsball.egg-info/top_level.txt +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/afl/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/afl/afltables/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/afl/afltables/afl_afltables_league_model_test.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/afl/afltables/afl_afltables_player_model_test.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/aussportsbetting/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/aussportsbetting/aussportsbetting_game_model_test.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/combined/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/combined/combined_game_model_test.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/combined/combined_player_model_test.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/espn/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/espn/espn_game_model_test.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/espn/espn_player_model_test.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/game_model_test.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/google/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/google/google_address_model_test.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/google/google_news_model_test.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/nba/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/nba/nba/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/nba/nba/nba_nba_game_model_test.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/nba/nba/nba_nba_league_model_test.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/nba/nba/nba_nba_player_model_test.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/nba/nba/nba_nba_team_model_test.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/nba/sportsdb/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/nba/sportsdb/nba_sportsdb_league_model_test.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/nba/sportsreference/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/nba/sportsreference/nba_sportsreference_league_model_test.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/ncaab/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/ncaab/sportsreference/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/ncaab/sportsreference/ncaab_sportsreference_league_model_test.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/nfl/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/nfl/sportsdb/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/nfl/sportsdb/nfl_sportsdb_league_model_test.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/oddsportal/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/player_model_test.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/social_model_test.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/sportsdb/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/sportsdb/sportsdb_game_model_test.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/sportsdb/sportsdb_league_model_test.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/sportsdb/sportsdb_team_model_test.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/sportsdb/sportsdb_venue_model_test.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/sportsreference/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/sportsreference/sportsreference_game_model_test.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/sportsreference/sportsreference_league_model_test.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/sportsreference/sportsreference_player_model_test.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/sportsreference/sportsreference_team_model_test.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/sportsreference/sportsreference_venue_model_test.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/team_model_test.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/x/__init__.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/data/x/x_social_model_test.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/proxy_session_test.py +0 -0
- {sportsball-0.3.27 → sportsball-0.3.29}/tests/sportsball_test.py +0 -0
@@ -26,7 +26,7 @@ def install_requires() -> typing.List[str]:
|
|
26
26
|
|
27
27
|
setup(
|
28
28
|
name='sportsball',
|
29
|
-
version='0.3.
|
29
|
+
version='0.3.29',
|
30
30
|
description='A library for pulling in and normalising sports stats.',
|
31
31
|
long_description=long_description,
|
32
32
|
long_description_content_type='text/markdown',
|
{sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/afl/afltables/afl_afltables_league_model.py
RENAMED
@@ -1,7 +1,8 @@
|
|
1
1
|
"""AFL AFLTables league model."""
|
2
2
|
|
3
|
-
# pylint: disable=too-many-statements
|
3
|
+
# pylint: disable=too-many-statements,protected-access
|
4
4
|
import datetime
|
5
|
+
import logging
|
5
6
|
import os
|
6
7
|
import urllib.parse
|
7
8
|
from typing import Iterator
|
@@ -59,9 +60,21 @@ class AFLAFLTablesLeagueModel(LeagueModel):
|
|
59
60
|
for td in table.find_all("td"):
|
60
61
|
td_text = td.get_text().strip()
|
61
62
|
if "Venue:" in td_text:
|
62
|
-
cleaned_text =
|
63
|
+
cleaned_text = (
|
64
|
+
td_text.split("Venue:")[0]
|
65
|
+
.split("Att:")[0]
|
66
|
+
.strip()
|
67
|
+
.split("(")[0]
|
68
|
+
.strip()
|
69
|
+
)
|
63
70
|
cleaned_text = " ".join(cleaned_text.split()[-3:])
|
64
|
-
|
71
|
+
try:
|
72
|
+
current_dt = parser.parse(cleaned_text)
|
73
|
+
except parser._parser.ParserError as exc: # type: ignore
|
74
|
+
logging.error(
|
75
|
+
"Failed to parse date in season URL: %s", season_url
|
76
|
+
)
|
77
|
+
raise exc
|
65
78
|
for a in table.find_all("a", href=True):
|
66
79
|
if a.get_text().strip().lower() == "match stats":
|
67
80
|
url = urllib.parse.urljoin(season_url, a.get("href"))
|
{sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/afl/combined/afl_combined_league_model.py
RENAMED
@@ -213,7 +213,7 @@ class AFLCombinedLeagueModel(CombinedLeagueModel):
|
|
213
213
|
AFLAFLTablesLeagueModel(session, position=0),
|
214
214
|
AFLESPNLeagueModel(session, position=1),
|
215
215
|
AFLAusSportsBettingLeagueModel(session, position=2),
|
216
|
-
AFLOddsPortalLeagueModel(session),
|
216
|
+
AFLOddsPortalLeagueModel(session, position=3),
|
217
217
|
],
|
218
218
|
)
|
219
219
|
|
@@ -1387,6 +1387,60 @@ CORBETT_SPORTS_CENTER = SportsballGeocodeTuple(
|
|
1387
1387
|
housenumber="1601",
|
1388
1388
|
country="USA",
|
1389
1389
|
)
|
1390
|
+
EA_DIDDLE_ARENA = SportsballGeocodeTuple(
|
1391
|
+
city="Bowling Green",
|
1392
|
+
state="KY",
|
1393
|
+
postal="42101",
|
1394
|
+
lat=36.985833,
|
1395
|
+
lng=-86.4575,
|
1396
|
+
housenumber="1526",
|
1397
|
+
country="USA",
|
1398
|
+
)
|
1399
|
+
JMA_WIRELESS_DOME = SportsballGeocodeTuple(
|
1400
|
+
city="Syracuse",
|
1401
|
+
state="NY",
|
1402
|
+
postal="13244",
|
1403
|
+
lat=43.036111,
|
1404
|
+
lng=-76.136389,
|
1405
|
+
housenumber="900",
|
1406
|
+
country="USA",
|
1407
|
+
)
|
1408
|
+
AG_SPANOS_CENTER = SportsballGeocodeTuple(
|
1409
|
+
city="Stockton",
|
1410
|
+
state="CA",
|
1411
|
+
postal="95211",
|
1412
|
+
lat=37.976669,
|
1413
|
+
lng=-121.315095,
|
1414
|
+
housenumber="1178",
|
1415
|
+
country="USA",
|
1416
|
+
)
|
1417
|
+
WAR_MEMORIAL_GYMNASIUM = SportsballGeocodeTuple(
|
1418
|
+
city="San Francisco",
|
1419
|
+
state="CA",
|
1420
|
+
postal="94118",
|
1421
|
+
lat=37.776944,
|
1422
|
+
lng=-122.449444,
|
1423
|
+
housenumber="2335",
|
1424
|
+
country="USA",
|
1425
|
+
)
|
1426
|
+
HENDERSON_CENTER = SportsballGeocodeTuple(
|
1427
|
+
city="Huntington",
|
1428
|
+
state="WV",
|
1429
|
+
postal="25755",
|
1430
|
+
lat=38.424517,
|
1431
|
+
lng=-82.425211,
|
1432
|
+
housenumber="",
|
1433
|
+
country="USA",
|
1434
|
+
)
|
1435
|
+
TED_CONSTANT_CONVOCATION_CENTER = SportsballGeocodeTuple(
|
1436
|
+
city="Norfolk",
|
1437
|
+
state="VA",
|
1438
|
+
postal="",
|
1439
|
+
lat=36.884169,
|
1440
|
+
lng=-76.301231,
|
1441
|
+
housenumber="4320",
|
1442
|
+
country="USA",
|
1443
|
+
)
|
1390
1444
|
_CACHED_GEOCODES: dict[str, Any] = {
|
1391
1445
|
"S.C.G. - Australia": SCG,
|
1392
1446
|
"Victoria Park - Australia": SportsballGeocodeTuple(
|
@@ -2306,15 +2360,7 @@ _CACHED_GEOCODES: dict[str, Any] = {
|
|
2306
2360
|
housenumber="1972",
|
2307
2361
|
country="USA",
|
2308
2362
|
),
|
2309
|
-
"JMA Wireless Dome - Syracuse - NY - 13244":
|
2310
|
-
city="Syracuse",
|
2311
|
-
state="NY",
|
2312
|
-
postal="13244",
|
2313
|
-
lat=43.036111,
|
2314
|
-
lng=-76.136389,
|
2315
|
-
housenumber="900",
|
2316
|
-
country="USA",
|
2317
|
-
),
|
2363
|
+
"JMA Wireless Dome - Syracuse - NY - 13244": JMA_WIRELESS_DOME,
|
2318
2364
|
"Davis Wade Stadium - Starkville - MS - 39762": SportsballGeocodeTuple(
|
2319
2365
|
city="Starkville",
|
2320
2366
|
state="MS",
|
@@ -3474,15 +3520,7 @@ _CACHED_GEOCODES: dict[str, Any] = {
|
|
3474
3520
|
housenumber="1000",
|
3475
3521
|
country="USA",
|
3476
3522
|
),
|
3477
|
-
"Ted Constant Convocation Ctr., Norfolk, Virginia":
|
3478
|
-
city="Norfolk",
|
3479
|
-
state="VA",
|
3480
|
-
postal="",
|
3481
|
-
lat=36.884169,
|
3482
|
-
lng=-76.301231,
|
3483
|
-
housenumber="4320",
|
3484
|
-
country="USA",
|
3485
|
-
),
|
3523
|
+
"Ted Constant Convocation Ctr., Norfolk, Virginia": TED_CONSTANT_CONVOCATION_CENTER,
|
3486
3524
|
"Yanitelli Center, Jersey City, New Jersey": SportsballGeocodeTuple(
|
3487
3525
|
city="Jersey City",
|
3488
3526
|
state="NJ",
|
@@ -4951,15 +4989,7 @@ _CACHED_GEOCODES: dict[str, Any] = {
|
|
4951
4989
|
housenumber="18",
|
4952
4990
|
country="USA",
|
4953
4991
|
),
|
4954
|
-
"Henderson Center, Huntington, West Virginia":
|
4955
|
-
city="Huntington",
|
4956
|
-
state="WV",
|
4957
|
-
postal="25755",
|
4958
|
-
lat=38.424517,
|
4959
|
-
lng=-82.425211,
|
4960
|
-
housenumber="",
|
4961
|
-
country="USA",
|
4962
|
-
),
|
4992
|
+
"Henderson Center, Huntington, West Virginia": HENDERSON_CENTER,
|
4963
4993
|
"Costello Athletic Center, Lowell, Massachusetts": SportsballGeocodeTuple(
|
4964
4994
|
city="Lowell",
|
4965
4995
|
state="MA",
|
@@ -5095,15 +5125,7 @@ _CACHED_GEOCODES: dict[str, Any] = {
|
|
5095
5125
|
housenumber="1",
|
5096
5126
|
country="USA",
|
5097
5127
|
),
|
5098
|
-
"E.A. Diddle Arena, Bowling Green, Kentucky":
|
5099
|
-
city="Bowling Green",
|
5100
|
-
state="KY",
|
5101
|
-
postal="42101",
|
5102
|
-
lat=36.985833,
|
5103
|
-
lng=-86.4575,
|
5104
|
-
housenumber="1526",
|
5105
|
-
country="USA",
|
5106
|
-
),
|
5128
|
+
"E.A. Diddle Arena, Bowling Green, Kentucky": EA_DIDDLE_ARENA,
|
5107
5129
|
"Don Haskins Center, El Paso, Texas": SportsballGeocodeTuple(
|
5108
5130
|
city="El Paso",
|
5109
5131
|
state="TX",
|
@@ -5131,15 +5153,7 @@ _CACHED_GEOCODES: dict[str, Any] = {
|
|
5131
5153
|
housenumber="1",
|
5132
5154
|
country="USA",
|
5133
5155
|
),
|
5134
|
-
"A.G. Spanos Center, Stockton, California":
|
5135
|
-
city="Stockton",
|
5136
|
-
state="CA",
|
5137
|
-
postal="95211",
|
5138
|
-
lat=37.976669,
|
5139
|
-
lng=-121.315095,
|
5140
|
-
housenumber="1178",
|
5141
|
-
country="USA",
|
5142
|
-
),
|
5156
|
+
"A.G. Spanos Center, Stockton, California": AG_SPANOS_CENTER,
|
5143
5157
|
"Leavey Center, Santa Clara, California": SportsballGeocodeTuple(
|
5144
5158
|
city="Santa Clara",
|
5145
5159
|
state="CA",
|
@@ -5685,15 +5699,7 @@ _CACHED_GEOCODES: dict[str, Any] = {
|
|
5685
5699
|
country="USA",
|
5686
5700
|
),
|
5687
5701
|
"John F. Savage Hall, Toledo, Ohio": SAVAGE_ARENA,
|
5688
|
-
"War Memorial at The Sobrato Center, San Francisco, California":
|
5689
|
-
city="San Francisco",
|
5690
|
-
state="CA",
|
5691
|
-
postal="94118",
|
5692
|
-
lat=37.776944,
|
5693
|
-
lng=-122.449444,
|
5694
|
-
housenumber="2335",
|
5695
|
-
country="USA",
|
5696
|
-
),
|
5702
|
+
"War Memorial at The Sobrato Center, San Francisco, California": WAR_MEMORIAL_GYMNASIUM,
|
5697
5703
|
"The Jungle, Indianapolis, Indiana": SportsballGeocodeTuple(
|
5698
5704
|
city="Indianapolis",
|
5699
5705
|
state="IN",
|
@@ -7687,6 +7693,138 @@ _CACHED_GEOCODES: dict[str, Any] = {
|
|
7687
7693
|
housenumber="",
|
7688
7694
|
country="USA",
|
7689
7695
|
),
|
7696
|
+
"University Credit Union Center, Davis, California": SportsballGeocodeTuple(
|
7697
|
+
city="Davis",
|
7698
|
+
state="CA",
|
7699
|
+
postal="95616",
|
7700
|
+
lat=38.541667,
|
7701
|
+
lng=-121.759444,
|
7702
|
+
housenumber="1",
|
7703
|
+
country="USA",
|
7704
|
+
),
|
7705
|
+
"Buccaneer Field House, Charleston, South Carolina": SportsballGeocodeTuple(
|
7706
|
+
city="Charleston",
|
7707
|
+
state="SC",
|
7708
|
+
postal="29406",
|
7709
|
+
lat=32.980822,
|
7710
|
+
lng=-80.067125,
|
7711
|
+
housenumber="9200",
|
7712
|
+
country="USA",
|
7713
|
+
),
|
7714
|
+
"Credit Union 1 Arena, Chicago, Illinois": SportsballGeocodeTuple(
|
7715
|
+
city="Chicago",
|
7716
|
+
state="IL",
|
7717
|
+
postal="60607",
|
7718
|
+
lat=41.874722,
|
7719
|
+
lng=-87.656111,
|
7720
|
+
housenumber="525",
|
7721
|
+
country="USA",
|
7722
|
+
),
|
7723
|
+
"E. A. Diddle Arena, Bowling Green, Kentucky": EA_DIDDLE_ARENA,
|
7724
|
+
"JMA Wireless Dome, Syracuse, New York": JMA_WIRELESS_DOME,
|
7725
|
+
"Truist Arena, Highland Heights, Kentucky": SportsballGeocodeTuple(
|
7726
|
+
city="Highland Heights",
|
7727
|
+
state="KT",
|
7728
|
+
postal="41099",
|
7729
|
+
lat=39.032273,
|
7730
|
+
lng=-84.458864,
|
7731
|
+
housenumber="500",
|
7732
|
+
country="USA",
|
7733
|
+
),
|
7734
|
+
"Kress Events Center, Green Bay, Wisconsin": SportsballGeocodeTuple(
|
7735
|
+
city="Green Bay",
|
7736
|
+
state="WI",
|
7737
|
+
postal="",
|
7738
|
+
lat=44.530069,
|
7739
|
+
lng=-87.915967,
|
7740
|
+
housenumber="",
|
7741
|
+
country="USA",
|
7742
|
+
),
|
7743
|
+
"OceanFirst Bank Center, West Long Branch, New Jersey": SportsballGeocodeTuple(
|
7744
|
+
city="West Long Branch",
|
7745
|
+
state="NJ",
|
7746
|
+
postal="07764",
|
7747
|
+
lat=40.279475,
|
7748
|
+
lng=-74.007583,
|
7749
|
+
housenumber="400",
|
7750
|
+
country="USA",
|
7751
|
+
),
|
7752
|
+
"Alex G. Spanos Center, Stockton, California": AG_SPANOS_CENTER,
|
7753
|
+
"War Memorial Gymnasium, San Francisco, California": WAR_MEMORIAL_GYMNASIUM,
|
7754
|
+
"First National Bank Arena, Jonesboro, Arkansas": SportsballGeocodeTuple(
|
7755
|
+
city="Jonesboro",
|
7756
|
+
state="AR",
|
7757
|
+
postal="72401",
|
7758
|
+
lat=35.845422,
|
7759
|
+
lng=-90.670319,
|
7760
|
+
housenumber="217",
|
7761
|
+
country="USA",
|
7762
|
+
),
|
7763
|
+
"Frost Arena, Brookings, South Dakota": SportsballGeocodeTuple(
|
7764
|
+
city="Brookings",
|
7765
|
+
state="SD",
|
7766
|
+
postal="57007",
|
7767
|
+
lat=44.317984,
|
7768
|
+
lng=-96.779058,
|
7769
|
+
housenumber="1165",
|
7770
|
+
country="USA",
|
7771
|
+
),
|
7772
|
+
"Louisville, Kentucky": SportsballGeocodeTuple(
|
7773
|
+
city="Louisville",
|
7774
|
+
state="KT",
|
7775
|
+
postal="",
|
7776
|
+
lat=38.256111,
|
7777
|
+
lng=-85.751389,
|
7778
|
+
housenumber="",
|
7779
|
+
country="USA",
|
7780
|
+
),
|
7781
|
+
"Saint Charles, Missouri": SportsballGeocodeTuple(
|
7782
|
+
city="Saint Charles",
|
7783
|
+
state="MO",
|
7784
|
+
postal="",
|
7785
|
+
lat=38.789,
|
7786
|
+
lng=-90.514,
|
7787
|
+
housenumber="",
|
7788
|
+
country="USA",
|
7789
|
+
),
|
7790
|
+
"Cam Henderson Center, Huntington, West Virginia": HENDERSON_CENTER,
|
7791
|
+
"Ted Constant Convocaation Center, Norfolk, Virginia": TED_CONSTANT_CONVOCATION_CENTER,
|
7792
|
+
"Brooklyn, New York": SportsballGeocodeTuple(
|
7793
|
+
city="Brooklyn",
|
7794
|
+
state="NY",
|
7795
|
+
postal="",
|
7796
|
+
lat=40.65,
|
7797
|
+
lng=-73.95,
|
7798
|
+
housenumber="",
|
7799
|
+
country="USA",
|
7800
|
+
),
|
7801
|
+
"Chicago, Illinois": SportsballGeocodeTuple(
|
7802
|
+
city="Chicago",
|
7803
|
+
state="IL",
|
7804
|
+
postal="",
|
7805
|
+
lat=41.881944,
|
7806
|
+
lng=-87.627778,
|
7807
|
+
housenumber="",
|
7808
|
+
country="USA",
|
7809
|
+
),
|
7810
|
+
"Alabama A&M Events Center, Huntsville, Alabama": SportsballGeocodeTuple(
|
7811
|
+
city="Huntsville",
|
7812
|
+
state="AL",
|
7813
|
+
postal="35810",
|
7814
|
+
lat=34.781139,
|
7815
|
+
lng=-86.580528,
|
7816
|
+
housenumber="",
|
7817
|
+
country="USA",
|
7818
|
+
),
|
7819
|
+
"Vadalabene Center, Edwardsville, Illinois": SportsballGeocodeTuple(
|
7820
|
+
city="Edwardsville",
|
7821
|
+
state="IL",
|
7822
|
+
postal="",
|
7823
|
+
lat=38.795989,
|
7824
|
+
lng=-89.999883,
|
7825
|
+
housenumber="35",
|
7826
|
+
country="USA",
|
7827
|
+
),
|
7690
7828
|
}
|
7691
7829
|
|
7692
7830
|
|
@@ -5,6 +5,8 @@ import requests_cache
|
|
5
5
|
from ...combined.combined_league_model import CombinedLeagueModel
|
6
6
|
from ...league import League
|
7
7
|
from ..espn.ncaab_espn_league_model import NCAABESPNLeagueModel
|
8
|
+
from ..oddsportal.ncaab_oddsportal_league_model import \
|
9
|
+
NCAABOddsPortalLeagueModel
|
8
10
|
from ..sportsreference.ncaab_sportsreference_league_model import \
|
9
11
|
NCAABSportsReferenceLeagueModel
|
10
12
|
|
@@ -749,8 +751,9 @@ class NCAABCombinedLeagueModel(CombinedLeagueModel):
|
|
749
751
|
session,
|
750
752
|
League.NCAAB,
|
751
753
|
[
|
752
|
-
NCAABSportsReferenceLeagueModel(session),
|
753
|
-
NCAABESPNLeagueModel(session),
|
754
|
+
NCAABSportsReferenceLeagueModel(session, position=0),
|
755
|
+
NCAABESPNLeagueModel(session, position=1),
|
756
|
+
NCAABOddsPortalLeagueModel(session, position=2),
|
754
757
|
],
|
755
758
|
)
|
756
759
|
|
@@ -10,6 +10,7 @@ import requests_cache
|
|
10
10
|
from bs4 import BeautifulSoup, Tag
|
11
11
|
|
12
12
|
from ...cache import MEMORY
|
13
|
+
from ...proxy_session import X_NO_WAYBACK
|
13
14
|
from ..game_model import GameModel
|
14
15
|
from ..league import League
|
15
16
|
from .oddsportal_team_model import create_oddsportal_team_model
|
@@ -21,14 +22,19 @@ def _create_oddsportal_game_model(
|
|
21
22
|
url: str,
|
22
23
|
league: League,
|
23
24
|
) -> GameModel:
|
24
|
-
response = session.get(url, headers={
|
25
|
+
response = session.get(url, headers={X_NO_WAYBACK: "1"})
|
25
26
|
response.raise_for_status()
|
26
27
|
|
27
28
|
soup = BeautifulSoup(response.text, "html.parser")
|
28
29
|
event_tag = soup.find("div", id="react-event-header")
|
29
30
|
if not isinstance(event_tag, Tag):
|
30
|
-
|
31
|
-
|
31
|
+
soup_x = BeautifulSoup(response.text, "xml")
|
32
|
+
event_tag = soup_x.find("Event")
|
33
|
+
if not isinstance(event_tag, Tag):
|
34
|
+
raise ValueError(f"event_tag is not a tag for URL: {url}.")
|
35
|
+
event = json.loads(str(event_tag[":data"]))
|
36
|
+
else:
|
37
|
+
event = json.loads(str(event_tag["data"]))
|
32
38
|
|
33
39
|
event_body = event["eventBody"]
|
34
40
|
event_data = event["eventData"]
|
@@ -51,7 +57,7 @@ def _create_oddsportal_game_model(
|
|
51
57
|
continue
|
52
58
|
if "/app.js" in src:
|
53
59
|
src_url = urllib.parse.urljoin(url, src)
|
54
|
-
src_response = session.get(src_url)
|
60
|
+
src_response = session.get(src_url, headers={X_NO_WAYBACK: "1"})
|
55
61
|
src_response.raise_for_status()
|
56
62
|
variables = src_response.text
|
57
63
|
sentinel = 'break}return e.next=9,g(r.data,"'
|
@@ -77,7 +83,11 @@ def _create_oddsportal_game_model(
|
|
77
83
|
away_points = float(event_body["awayResult"])
|
78
84
|
|
79
85
|
venue = None
|
80
|
-
if
|
86
|
+
if (
|
87
|
+
event_body.get("venue", "")
|
88
|
+
and event_body.get("venueTown", "")
|
89
|
+
and event_body.get("venueCountry", "")
|
90
|
+
):
|
81
91
|
venue = create_oddsportal_venue_model(
|
82
92
|
session,
|
83
93
|
dt,
|
{sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/oddsportal/oddsportal_league_model.py
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
"""Odds Portal league model."""
|
2
2
|
|
3
|
-
# pylint: disable=too-many-locals,too-many-branches,too-many-statements
|
3
|
+
# pylint: disable=too-many-locals,too-many-branches,too-many-statements,protected-access
|
4
4
|
import http
|
5
5
|
import json
|
6
6
|
import logging
|
@@ -82,6 +82,7 @@ class OddsPortalLeagueModel(LeagueModel):
|
|
82
82
|
url = queued_urls.pop()
|
83
83
|
if url in seen_urls:
|
84
84
|
continue
|
85
|
+
logging.debug("processing url: %s", url)
|
85
86
|
seen_urls.add(url)
|
86
87
|
|
87
88
|
if url.endswith(standard_suffix):
|
@@ -163,5 +164,5 @@ class OddsPortalLeagueModel(LeagueModel):
|
|
163
164
|
@property
|
164
165
|
def games(self) -> Iterator[GameModel]:
|
165
166
|
with tqdm.tqdm(position=self.position) as pbar:
|
166
|
-
yield from self._find_next(pbar)
|
167
|
+
# yield from self._find_next(pbar)
|
167
168
|
yield from self._find_previous(pbar)
|
@@ -66,10 +66,17 @@ def _create_oddsportal_team_model(
|
|
66
66
|
if end_of_json != -1:
|
67
67
|
decrypted_data = decrypted_data[: end_of_json + 1]
|
68
68
|
parsed_data = json.loads(decrypted_data)
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
69
|
+
try:
|
70
|
+
odds_data = parsed_data["d"]["oddsdata"]["back"][
|
71
|
+
f"E-{default_bet_id}-{default_scope_id}-0-0-0"
|
72
|
+
]
|
73
|
+
except KeyError:
|
74
|
+
back = parsed_data["d"]["oddsdata"]["back"]
|
75
|
+
odds_data = back[sorted(list(back.keys()))[0]]
|
76
|
+
try:
|
77
|
+
outcome_id = odds_data["outcomeId"][team_idx]
|
78
|
+
except KeyError:
|
79
|
+
outcome_id = odds_data["outcomeId"][str(team_idx)]
|
73
80
|
history = odds_data["history"][outcome_id]
|
74
81
|
odds_models = []
|
75
82
|
for bookie_id, bookie_name in bookie_names.items():
|
{sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/weather/openmeteo/openmeteo_weather_model.py
RENAMED
@@ -131,7 +131,11 @@ def _create_openmeteo_weather_model(
|
|
131
131
|
},
|
132
132
|
)
|
133
133
|
return _parse_openmeteo(responses, tz, dt)
|
134
|
-
except (
|
134
|
+
except (
|
135
|
+
requests.exceptions.RetryError,
|
136
|
+
OpenMeteoRequestsError,
|
137
|
+
requests.exceptions.ReadTimeout,
|
138
|
+
):
|
135
139
|
return None
|
136
140
|
except Exception as e:
|
137
141
|
e_text = str(e)
|
@@ -145,7 +145,7 @@ class ProxySession(requests_cache.CachedSession):
|
|
145
145
|
logging.info("Request for %s not cached.", request.url)
|
146
146
|
|
147
147
|
# Otherwise check the wayback machine
|
148
|
-
if not _is_fast_fail_url(request.url) and no_wayback:
|
148
|
+
if not _is_fast_fail_url(request.url) and not no_wayback:
|
149
149
|
response = self._wayback_machine_request(
|
150
150
|
request.method, request.url, headers=request.headers
|
151
151
|
)
|
@@ -33,3 +33,21 @@ class TestOddsPortalGameModel(unittest.TestCase):
|
|
33
33
|
True,
|
34
34
|
)
|
35
35
|
self.assertEqual(game_model.dt, datetime.datetime(2025, 3, 6, 3, 50))
|
36
|
+
|
37
|
+
def test_event_dt(self):
|
38
|
+
url = "https://www.oddsportal.com/aussie-rules/australia/afl-2013/collingwood-magpies-north-melbourne-kangaroos-6yxbPNei/"
|
39
|
+
with requests_mock.Mocker() as m:
|
40
|
+
with open(os.path.join(self.dir, "collingwood-magpies-north-melbourne-kangaroos-6yxbPNei.html"), "rb") as f:
|
41
|
+
m.get(url, content=f.read())
|
42
|
+
with open(os.path.join(self.dir, "app.js"), "rb") as f:
|
43
|
+
m.get("https://www.oddsportal.com/res/public/js/build/app.js?v=240917140831", content=f.read())
|
44
|
+
with open(os.path.join(self.dir, "1-18-6yxbPNei-3-1-yj485.dat"), "rb") as f:
|
45
|
+
m.get("https://www.oddsportal.com/match-event/1-18-6yxbPNei-3-1-yj485.dat", content=f.read())
|
46
|
+
|
47
|
+
game_model = create_oddsportal_game_model(
|
48
|
+
self.session,
|
49
|
+
url,
|
50
|
+
League.AFL,
|
51
|
+
True,
|
52
|
+
)
|
53
|
+
self.assertEqual(game_model.dt, datetime.datetime(2013, 9, 1, 1, 20))
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/afl/afltables/afl_afltables_game_model.py
RENAMED
File without changes
|
{sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/afl/afltables/afl_afltables_player_model.py
RENAMED
File without changes
|
{sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/afl/afltables/afl_afltables_team_model.py
RENAMED
File without changes
|
{sportsball-0.3.27 → sportsball-0.3.29}/sportsball/data/afl/afltables/afl_afltables_venue_model.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|