diff --git a/Src/API/eurostreaming.py b/Src/API/eurostreaming.py index c6ec862..8495dce 100644 --- a/Src/API/eurostreaming.py +++ b/Src/API/eurostreaming.py @@ -20,7 +20,7 @@ import time from Src.Utilities.eval import eval_solver import os import json - +import difflib import random ES_DOMAIN = config.ES_DOMAIN @@ -202,43 +202,51 @@ async def scraping_links(atag,MFP,client): print("Just give up") return None,"" - +async def episodes_find(description,season,episode,MFP,client): + episode = episode.zfill(2) + pattern = rf'{season}×{episode}\s*(.*?)(?=)' + match = re.findall(pattern, description) + urls= {} + if match: + for episode_details in match: + if "href" in episode_details: + full_url,name = await scraping_links(episode_details.split(' – ', 1)[1],MFP,client) + if full_url: + urls[full_url] = name + return urls async def search(showname,date,season,episode,MFP,client): headers = random_headers.generate() - response = await client.get(ForwardProxy + f"{ES_DOMAIN}/wp-json/wp/v2/search?search={showname}&_fields=id", proxies = proxies, headers = headers) + response = await client.get(ForwardProxy + f"{ES_DOMAIN}/wp-json/wp/v2/search?search={quote(showname)}&_fields=id", proxies = proxies, headers = headers) results = response.json() for i in results: - response = await client.get(ForwardProxy + f"{ES_DOMAIN}/wp-json/wp/v2/posts/{i['id']}?_fields=content", proxies = proxies, headers = headers) + response = await client.get(ForwardProxy + f"{ES_DOMAIN}/wp-json/wp/v2/posts/{i['id']}?_fields=content,title", proxies = proxies, headers = headers) if f'ID articolo non valido' in response.text: continue description = response.json() + title = description['title']['rendered'] description = description['content']['rendered'] - year_pattern = re.compile(r'(?=0.96: + urls = await episodes_find(description,season,episode,MFP,client) + return urls else: - pattern = r']*>Continua a leggere' - match = re.search(pattern, description) + year_pattern = re.compile(r'(?]*>Continua a leggere' + match = re.search(pattern, description) if match: - year = match.group(0) - if year == str(date): - episode = episode.zfill(2) - pattern = rf'{season}×{episode}\s*(.*?)(?=)' - match = re.findall(pattern, description) - urls= {} - if match: - for episode_details in match: - if "href" in episode_details: - full_url,name = await scraping_links(episode_details.split(' – ', 1)[1],MFP,client) - if full_url: - urls[full_url] = name + href_value = match.group(1) + response_2 = await client.get(ForwardProxy + href_value, proxies = proxies, headers = headers) + match = year_pattern.search(response_2.text) + if match: + year = match.group(0) + if abs(int(year) - int(date)) <=1: + urls = await episodes_find(description,season,episode,MFP,client) return urls @@ -260,7 +268,6 @@ async def eurostreaming(id,client,MFP): else: showname,date = await get_info_imdb(clean_id,ismovie,type,client) print(showname) - showname = quote(showname) urls = await search(showname,date, season,episode,MFP,client) return urls except Exception as e: @@ -272,7 +279,7 @@ async def eurostreaming(id,client,MFP): async def test_euro(): from curl_cffi.requests import AsyncSession async with AsyncSession() as client: - results = await eurostreaming("tt6156584:4:5",client,0) + results = await eurostreaming("tt2261391:6:1",client,0) print(results) async def test_deltabit(): @@ -286,4 +293,5 @@ if __name__ == "__main__": asyncio.run(test_euro()) #python3 -m Src.API.eurostreaming -'''tt11950864''' \ No newline at end of file +'''tt11950864 +'''