mirror of
https://github.com/Arrowar/StreamingCommunity.git
synced 2025-06-07 12:05:35 +00:00
Update ScrapeSerie.py
This commit is contained in:
parent
0a03be0fae
commit
868bbfb32b
@ -29,6 +29,7 @@ class ScrapeSerieAnime:
|
|||||||
self.is_series = False
|
self.is_series = False
|
||||||
self.headers = {'user-agent': get_userAgent()}
|
self.headers = {'user-agent': get_userAgent()}
|
||||||
self.url = url
|
self.url = url
|
||||||
|
self.episodes_cache = None
|
||||||
|
|
||||||
def setup(self, version: str = None, media_id: int = None, series_name: str = None):
|
def setup(self, version: str = None, media_id: int = None, series_name: str = None):
|
||||||
self.version = version
|
self.version = version
|
||||||
@ -62,38 +63,41 @@ class ScrapeSerieAnime:
|
|||||||
logging.error(f"Error fetching episode count: {e}")
|
logging.error(f"Error fetching episode count: {e}")
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def get_info_episode(self, index_ep: int) -> Episode:
|
def _fetch_all_episodes(self):
|
||||||
"""
|
"""
|
||||||
Fetch detailed information for a specific episode.
|
Fetch all episodes data at once and cache it
|
||||||
|
|
||||||
Args:
|
|
||||||
index_ep (int): Zero-based index of the target episode
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
Episode: Detailed episode information
|
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
|
count = self.get_count_episodes()
|
||||||
params = {
|
if not count:
|
||||||
"start_range": index_ep,
|
return
|
||||||
"end_range": index_ep + 1
|
|
||||||
}
|
|
||||||
|
|
||||||
response = httpx.get(
|
response = httpx.get(
|
||||||
url=f"{self.url}/info_api/{self.media_id}/{index_ep}",
|
url=f"{self.url}/info_api/{self.media_id}/1",
|
||||||
|
params={
|
||||||
|
"start_range": 1,
|
||||||
|
"end_range": count
|
||||||
|
},
|
||||||
headers=self.headers,
|
headers=self.headers,
|
||||||
params=params,
|
|
||||||
timeout=max_timeout
|
timeout=max_timeout
|
||||||
)
|
)
|
||||||
response.raise_for_status()
|
response.raise_for_status()
|
||||||
|
|
||||||
# Return information about the episode
|
self.episodes_cache = response.json()["episodes"]
|
||||||
json_data = response.json()["episodes"][-1]
|
|
||||||
return Episode(json_data)
|
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logging.error(f"Error fetching episode information: {e}")
|
logging.error(f"Error fetching all episodes: {e}")
|
||||||
return None
|
self.episodes_cache = None
|
||||||
|
|
||||||
|
def get_info_episode(self, index_ep: int) -> Episode:
|
||||||
|
"""
|
||||||
|
Get episode info from cache
|
||||||
|
"""
|
||||||
|
if self.episodes_cache is None:
|
||||||
|
self._fetch_all_episodes()
|
||||||
|
|
||||||
|
if self.episodes_cache and 0 <= index_ep < len(self.episodes_cache):
|
||||||
|
return Episode(self.episodes_cache[index_ep])
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
# ------------- FOR GUI -------------
|
# ------------- FOR GUI -------------
|
||||||
|
Loading…
x
Reference in New Issue
Block a user