MammaMia version 2.0.0

This commit is contained in:
UrloMythus
2025-09-15 17:31:03 +02:00 Unverified
parent 87d5253580
commit 1ac0869350
47 changed files with 1513 additions and 1241 deletions
+30 -15
View File
@@ -1,11 +1,19 @@
from bs4 import BeautifulSoup
import datetime
import logging
import json
from Src.Utilities.info import get_info_kitsu
import Src.Utilities.config as config
import re
from fake_headers import Headers
import Src.Utilities.config as config
from Src.Utilities.config import setup_logging
level = config.LEVEL
logger = setup_logging(level)
Icon = config.Icon
Name = config.Name
random_headers = Headers()
proxies = {}
from Src.Utilities.loadenv import load_env
@@ -55,7 +63,7 @@ async def security_cookie (response):
f"SecurityAW-{unknown_chars}": Security_Cookie
}
return cookies
async def get_mp4(anime_url,ismovie,episode,client):
async def get_mp4(anime_url,ismovie,episode,client,i,streams):
cookies = {}
if ForwardProxy != "":
response = await client.get(ForwardProxy + anime_url,allow_redirects=True,impersonate = "chrome124",proxies=proxies)
@@ -82,12 +90,18 @@ async def get_mp4(anime_url,ismovie,episode,client):
response = await client.head(url)
if response.status_code == 404:
url = None
return url
if url:
if i == 0:
language = "Original"
elif i == 1:
language = "Italian"
streams['streams'].append({'title': f'{Icon}Animeworld {language}', 'url': url,'behaviorHints': {'bingeGroup': 'animeworld'}})
return streams
async def search(showname,date,ismovie,episode,client):
async def search(showname,date,ismovie,episode,client,streams):
search_year = date[:4]
headers = random_headers.generate()
link = f'{AW_DOMAIN}/filter?year={search_year}&sort=2&keyword={showname}'
@@ -99,7 +113,7 @@ async def search(showname,date,ismovie,episode,client):
cookies = {}
soup = BeautifulSoup(response.text,'lxml')
anime_list = soup.find_all('a', class_=['poster', 'tooltipstered'])
final_urls = []
i = 0
for anime in anime_list:
anime_info_url = f'{AW_DOMAIN}/{anime["data-tip"]}'
response = await client.get(ForwardProxy + anime_info_url,allow_redirects=True, impersonate = "chrome124", cookies = cookies, proxies = proxies)
@@ -118,12 +132,13 @@ async def search(showname,date,ismovie,episode,client):
release_date == (datetime.datetime.strptime(date, "%Y-%m-%d") + datetime.timedelta(days=1)).strftime("%Y-%m-%d") or
release_date == (datetime.datetime.strptime(date, "%Y-%m-%d") - datetime.timedelta(days=1)).strftime("%Y-%m-%d")):
anime_url = f'{AW_DOMAIN}{anime["href"]}'
final_url = await get_mp4(anime_url,ismovie,episode,client)
if final_url:
final_urls.append(final_url)
return final_urls
streams = await get_mp4(anime_url,ismovie,episode,client,i,streams)
i+=1
logger.info(f"AnimeWorld Found Results for current ID")
async def animeworld(id,client):
return streams
async def animeworld(streams,id,client):
try:
kitsu_id = id.split(":")[1]
ismovie = 1 if len(id.split(":")) == 2 else 0
@@ -142,11 +157,11 @@ async def animeworld(id,client):
showname = showname.split("’")[0]
if ":" in showname:
showname = showname.split(":")[0]
final_urls = await search(showname,date,ismovie,episode,client)
return final_urls
streams = await search(showname,date,ismovie,episode,client,streams)
return streams
except Exception as e:
print("Animeworld failed",e)
return None
logger.warning(f"Animeworld failed {e}")
return streams
async def test_animeworld():
async with AsyncSession() as client:
@@ -200,7 +215,7 @@ async def old_search(showname,date,ismovie,episode,client):
'keyword': showname,
}
response = await client.post(f'https://www.animeworld.{AW_DOMAIN}/api/search/v2', params=params, cookies=cookies, headers=headers,allow_redirects=True, impersonate = "chrome124")
response = await client.post(f'https://www.animeworld.{AW_DOMAIN}/api/search/v2', params=params, cookies=cookies, headers=headers,allow_redirects=True)
data = json.loads(response.text)
final_urls = []
@@ -221,7 +236,7 @@ async def old_search(showname,date,ismovie,episode,client):
params = {
'keyword': showname,
}
response = await client.post(ForwardProxy + f'https://www.animeworld.{AW_DOMAIN}/api/search/v2', params=params, cookies=cookies, headers=headers, allow_redirects=True, impersonate = "chrome124", proxies = proxies)
response = await client.post(ForwardProxy + f'https://www.animeworld.{AW_DOMAIN}/api/search/v2', params=params, cookies=cookies, headers=headers, allow_redirects=True, proxies = proxies)
data = json.loads(response.text)
for anime in data["animes"]:
release_date = anime["release"]