@@ -38,38 +38,52 @@ def collect_season(self) -> None:
3838 soup = BeautifulSoup (response .text , "html.parser" )
3939 self .series_name = soup .find ("title" ).get_text (strip = True ).split (" - " )[0 ]
4040
41- # Process all seasons
42- season_items = soup .find_all ('div' , class_ = 'accordion-item' )
43-
44- for season_idx , season_item in enumerate (season_items , 1 ):
45- season_header = season_item .find ('div' , class_ = 'accordion-header' )
46- if not season_header :
47- continue
48-
49- season_name = season_header .get_text (strip = True )
41+ # Find all season dropdowns
42+ seasons_dropdown = soup .find ('div' , class_ = 'dropdown seasons' )
43+ if not seasons_dropdown :
44+ return
45+
46+ # Get all season items
47+ season_items = seasons_dropdown .find_all ('span' , {'data-season' : True })
48+
49+ for season_item in season_items :
50+ season_num = int (season_item ['data-season' ])
51+ season_name = season_item .get_text (strip = True )
5052
51- # Create a new season and get a reference to it
53+ # Create a new season
5254 current_season = self .seasons_manager .add_season ({
53- 'number' : season_idx ,
55+ 'number' : season_num ,
5456 'name' : season_name
5557 })
5658
57- # Find episodes for this season
58- episode_divs = season_item .find_all ('div' , class_ = 'down-episode' )
59- for ep_idx , ep_div in enumerate (episode_divs , 1 ):
60- episode_name_tag = ep_div .find ('b' )
61- if not episode_name_tag :
59+ # Find all episodes for this season
60+ episodes_container = soup .find ('div' , {'class' : 'dropdown mirrors' , 'data-season' : str (season_num )})
61+ if not episodes_container :
62+ continue
63+
64+ # Get all episode mirrors for this season
65+ episode_mirrors = soup .find_all ('div' , {'class' : 'dropdown mirrors' ,
66+ 'data-season' : str (season_num )})
67+
68+ for mirror in episode_mirrors :
69+ episode_data = mirror .get ('data-episode' , '' ).split ('-' )
70+ if len (episode_data ) != 2 :
71+ continue
72+
73+ ep_num = int (episode_data [1 ])
74+
75+ # Find supervideo link
76+ supervideo_span = mirror .find ('span' , {'data-id' : 'supervideo' })
77+ if not supervideo_span :
6278 continue
6379
64- episode_name = episode_name_tag .get_text (strip = True )
65- link_tag = ep_div .find ('a' , string = lambda text : text and "Supervideo" in text )
66- episode_url = link_tag ['href' ] if link_tag else None
80+ episode_url = supervideo_span .get ('data-link' , '' )
6781
6882 # Add episode to the season
6983 if current_season :
7084 current_season .episodes .add ({
71- 'number' : ep_idx ,
72- 'name' : episode_name ,
85+ 'number' : ep_num ,
86+ 'name' : f"Episodio { ep_num } " ,
7387 'url' : episode_url
7488 })
7589
0 commit comments