hockey-blast-common-lib 0.1.46__py3-none-any.whl → 0.1.48__py3-none-any.whl
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.
- hockey_blast_common_lib/aggregate_all_stats.py +7 -7
- hockey_blast_common_lib/find_leagues_seasons.py +53 -0
- hockey_blast_common_lib/hockey_blast_sample_backup.sql.gz +0 -0
- hockey_blast_common_lib/models.py +2 -2
- {hockey_blast_common_lib-0.1.46.dist-info → hockey_blast_common_lib-0.1.48.dist-info}/METADATA +1 -1
- {hockey_blast_common_lib-0.1.46.dist-info → hockey_blast_common_lib-0.1.48.dist-info}/RECORD +8 -7
- {hockey_blast_common_lib-0.1.46.dist-info → hockey_blast_common_lib-0.1.48.dist-info}/WHEEL +0 -0
- {hockey_blast_common_lib-0.1.46.dist-info → hockey_blast_common_lib-0.1.48.dist-info}/top_level.txt +0 -0
@@ -9,18 +9,18 @@ from hockey_blast_common_lib.aggregate_goalie_stats import run_aggregate_goalie_
|
|
9
9
|
from hockey_blast_common_lib.aggregate_referee_stats import run_aggregate_referee_stats
|
10
10
|
|
11
11
|
if __name__ == "__main__":
|
12
|
-
print("Running
|
13
|
-
run_aggregate_human_stats()
|
14
|
-
print("Finished running aggregate_human_stats\n")
|
15
|
-
|
16
|
-
print("Running aggregate_skater_stats...")
|
12
|
+
print("Running aggregate_skater_stats...", flush=True)
|
17
13
|
run_aggregate_skater_stats()
|
18
14
|
print("Finished running aggregate_skater_stats\n")
|
19
15
|
|
20
|
-
print("Running aggregate_goalie_stats...")
|
16
|
+
print("Running aggregate_goalie_stats...", flush=True)
|
21
17
|
run_aggregate_goalie_stats()
|
22
18
|
print("Finished running aggregate_goalie_stats\n")
|
23
19
|
|
24
|
-
print("Running aggregate_referee_stats...")
|
20
|
+
print("Running aggregate_referee_stats...", flush=True)
|
25
21
|
run_aggregate_referee_stats()
|
26
22
|
print("Finished running aggregate_referee_stats\n")
|
23
|
+
|
24
|
+
print("Running aggregate_human_stats...", flush=True)
|
25
|
+
run_aggregate_human_stats()
|
26
|
+
print("Finished running aggregate_human_stats\n")
|
@@ -0,0 +1,53 @@
|
|
1
|
+
import time
|
2
|
+
import json
|
3
|
+
import os
|
4
|
+
import requests
|
5
|
+
from bs4 import BeautifulSoup
|
6
|
+
|
7
|
+
def probe_leagues_and_seasons(min_league, max_league, min_season, max_season, interval_seconds, output_file):
|
8
|
+
results = []
|
9
|
+
|
10
|
+
for league_id in range(min_league, max_league + 1):
|
11
|
+
league_data = {"league": league_id, "seasons": set()}
|
12
|
+
for season_id in range(min_season, max_season + 1):
|
13
|
+
url = f"https://stats.sharksice.timetoscore.com/display-schedule.php?stat_class=1&league={league_id}&season={season_id}"
|
14
|
+
print(f"Probing URL: {url}")
|
15
|
+
|
16
|
+
try:
|
17
|
+
response = requests.get(url, timeout=10)
|
18
|
+
response.raise_for_status()
|
19
|
+
schedule_html = response.text
|
20
|
+
|
21
|
+
# Parse the schedule page to find all game links
|
22
|
+
soup = BeautifulSoup(schedule_html, "html.parser")
|
23
|
+
tables = soup.find_all('table')
|
24
|
+
top_level_tables = [table for table in tables if table.find_parent('table') is None]
|
25
|
+
|
26
|
+
if len(top_level_tables) > 0:
|
27
|
+
print(f"Data found for league {league_id}, season {season_id}")
|
28
|
+
league_data["seasons"].add(season_id)
|
29
|
+
|
30
|
+
# Save the fetched HTML to a subfolder
|
31
|
+
folder_path = os.path.join("schedules", f"league={league_id}", f"season={season_id}")
|
32
|
+
os.makedirs(folder_path, exist_ok=True)
|
33
|
+
with open(os.path.join(folder_path, "schedule.html"), "w") as f:
|
34
|
+
f.write(schedule_html)
|
35
|
+
else:
|
36
|
+
print(f"No data for league {league_id}, season {season_id}")
|
37
|
+
except Exception as e:
|
38
|
+
print(f"Error probing URL {url}: {e}")
|
39
|
+
|
40
|
+
# Wait for the specified interval before the next request
|
41
|
+
time.sleep(interval_seconds)
|
42
|
+
|
43
|
+
if league_data["seasons"]:
|
44
|
+
league_data["seasons"] = list(league_data["seasons"]) # Convert set to list for JSON serialization
|
45
|
+
results.append(league_data)
|
46
|
+
|
47
|
+
# Save results to a JSON file
|
48
|
+
with open(output_file, "w") as f:
|
49
|
+
json.dump(results, f, indent=4)
|
50
|
+
print(f"Results saved to {output_file}")
|
51
|
+
|
52
|
+
# Example usage
|
53
|
+
probe_leagues_and_seasons(min_league=1, max_league=70, min_season=1, max_season=70, interval_seconds=9, output_file="leagues_seasons_2_70_1_70.json")
|
Binary file
|
@@ -18,7 +18,7 @@ class Division(db.Model):
|
|
18
18
|
league_number = db.Column(db.Integer) # TODO: Deprecate usage and remove (get this info through Season->League)
|
19
19
|
season_number = db.Column(db.Integer) # TODO: Deprecate usage and remove (get this info from Season by season_id)
|
20
20
|
season_id = db.Column(db.Integer, db.ForeignKey('seasons.id'))
|
21
|
-
level = db.Column(db.String(100)) #
|
21
|
+
level = db.Column(db.String(100)) # Used to display original level name, however level_id may combine some levels with different name!
|
22
22
|
level_id = db.Column(db.Integer, db.ForeignKey('levels.id')) # New field
|
23
23
|
org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
|
24
24
|
__table_args__ = (
|
@@ -159,7 +159,7 @@ class Level(db.Model):
|
|
159
159
|
id = db.Column(db.Integer, primary_key=True)
|
160
160
|
org_id = db.Column(db.Integer, db.ForeignKey('organizations.id'), nullable=False)
|
161
161
|
skill_value = db.Column(db.Float) # A number from 0 (NHL) to 100 (pedestrian)
|
162
|
-
level_name = db.Column(db.String(100)
|
162
|
+
level_name = db.Column(db.String(100))
|
163
163
|
level_alternative_name = db.Column(db.String(100))
|
164
164
|
is_seed = db.Column(db.Boolean, nullable=True, default=False) # New field
|
165
165
|
skill_propagation_sequence = db.Column(db.Integer, nullable=True, default=-1)
|
{hockey_blast_common_lib-0.1.46.dist-info → hockey_blast_common_lib-0.1.48.dist-info}/RECORD
RENAMED
@@ -1,5 +1,5 @@
|
|
1
1
|
hockey_blast_common_lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
|
-
hockey_blast_common_lib/aggregate_all_stats.py,sha256=
|
2
|
+
hockey_blast_common_lib/aggregate_all_stats.py,sha256=2bOj2BW0k3ZPQR1NH04upnkIfO9SastzTz7XwO3ujYo,1104
|
3
3
|
hockey_blast_common_lib/aggregate_goalie_stats.py,sha256=FcYL40NP0-sPY7UI7F8Ny_RaPKz3mfkmhQnPVbeRtOc,12178
|
4
4
|
hockey_blast_common_lib/aggregate_human_stats.py,sha256=VmUAMbqtWRPFM64V8ECJ3eJjRXvblNbeVU9HFYNoPp0,23898
|
5
5
|
hockey_blast_common_lib/aggregate_referee_stats.py,sha256=FszWLTygddDQNcUgbmevQ-eGPrW8Y0nXpRvUluPRKnU,11920
|
@@ -7,8 +7,9 @@ hockey_blast_common_lib/aggregate_skater_stats.py,sha256=FBc6enJNnFXYg7mVPiXssle
|
|
7
7
|
hockey_blast_common_lib/assign_skater_skill.py,sha256=p-0fbodGpM8BCjKHDpxNb7BH2FcIlBsJwON844KNrUY,1817
|
8
8
|
hockey_blast_common_lib/db_connection.py,sha256=HvPxDvOj7j5H85RfslGvHVNevfg7mKCd0syJ6NX21mU,1890
|
9
9
|
hockey_blast_common_lib/dump_sample_db.sh,sha256=MY3lnzTXBoWd76-ZlZr9nWsKMEVgyRsUn-LZ2d1JWZs,810
|
10
|
-
hockey_blast_common_lib/
|
11
|
-
hockey_blast_common_lib/
|
10
|
+
hockey_blast_common_lib/find_leagues_seasons.py,sha256=abjzVsnaXXCLhzbTy7-6pDV_0LvXCJexuZVdIvc_DbI,2373
|
11
|
+
hockey_blast_common_lib/hockey_blast_sample_backup.sql.gz,sha256=aueh_CTlfYKoztGlzGVWRgaEYQ4GsyMmmYOxxkdDHIE,1256769
|
12
|
+
hockey_blast_common_lib/models.py,sha256=nbJjypa2OBO5_fwjAbWVgBp4WDCuE-RtaELzJ9cvqB4,16468
|
12
13
|
hockey_blast_common_lib/options.py,sha256=ejwDM2LVzeARlE5UwUNDt2Zzolat7OkXddhOZpzn1bw,823
|
13
14
|
hockey_blast_common_lib/restore_sample_db.sh,sha256=7W3lzRZeu9zXIu1Bvtnaw8EHc1ulHmFM4mMh86oUQJo,2205
|
14
15
|
hockey_blast_common_lib/skills_in_divisions.py,sha256=m-UEwMwn1KM7wOYvDstgsOEeH57M9V6yrkBoghzGYKE,7005
|
@@ -17,7 +18,7 @@ hockey_blast_common_lib/stats_models.py,sha256=NWigeIowIJU6o1Sk1cP08kEy4t594LZpe
|
|
17
18
|
hockey_blast_common_lib/stats_utils.py,sha256=DXsPO4jw8XsdRUN46TGF_IiBAfz3GCIVBswCGp5ELDk,284
|
18
19
|
hockey_blast_common_lib/utils.py,sha256=Sy5Pk40Tk3gsMrhMsUMlBD7i7jiVZmWLUBc94qI3zOA,5235
|
19
20
|
hockey_blast_common_lib/wsgi.py,sha256=7LGUzioigviJp-EUhSEaQcd4jBae0mxbkyBscQfZhlc,730
|
20
|
-
hockey_blast_common_lib-0.1.
|
21
|
-
hockey_blast_common_lib-0.1.
|
22
|
-
hockey_blast_common_lib-0.1.
|
23
|
-
hockey_blast_common_lib-0.1.
|
21
|
+
hockey_blast_common_lib-0.1.48.dist-info/METADATA,sha256=tHKz1KFr43yKZLDk8zSEknKFrQeGRC7RJpRV2SfXu_o,318
|
22
|
+
hockey_blast_common_lib-0.1.48.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
23
|
+
hockey_blast_common_lib-0.1.48.dist-info/top_level.txt,sha256=wIR4LIkE40npoA2QlOdfCYlgFeGbsHR8Z6r0h46Vtgc,24
|
24
|
+
hockey_blast_common_lib-0.1.48.dist-info/RECORD,,
|
File without changes
|
{hockey_blast_common_lib-0.1.46.dist-info → hockey_blast_common_lib-0.1.48.dist-info}/top_level.txt
RENAMED
File without changes
|