13 Commits
11 changed files with 65 additions and 36 deletions
+8
View File
@@ -2,7 +2,15 @@ FROM python:3.11-slim-bullseye
WORKDIR /app WORKDIR /app
ADD . /app ADD . /app
RUN apt-get update && \
apt-get install -y tesseract-ocr libtesseract-dev && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
RUN pip install --no-cache-dir -r requirements.txt RUN pip install --no-cache-dir -r requirements.txt
RUN pip install --no-cache-dir pytesseract
EXPOSE 8080 EXPOSE 8080
# Run run.py when the container launches # Run run.py when the container launches
+1
View File
@@ -165,6 +165,7 @@ async def series_redirect_url(link,season,episode,client,MFP,MFP_CREDENTIALS,str
mixdrop_real_link = await get_stayonline(mixdrop_link,client) mixdrop_real_link = await get_stayonline(mixdrop_link,client)
streams = await mixdrop(mixdrop_real_link,client,MFP,MFP_CREDENTIALS,streams,"CB01",proxies,ForwardProxy,"") streams = await mixdrop(mixdrop_real_link,client,MFP,MFP_CREDENTIALS,streams,"CB01",proxies,ForwardProxy,"")
return streams return streams
return streams
+1 -1
View File
@@ -218,7 +218,7 @@ async def eurostreaming(streams,id,client,MFP,MFP_CREDENTIALS):
async def test_euro(): async def test_euro():
from curl_cffi.requests import AsyncSession from curl_cffi.requests import AsyncSession
async with AsyncSession() as client: async with AsyncSession() as client:
results = await eurostreaming({'streams': []},"tt9253284:1:4",client,"0",['test','test']) results = await eurostreaming({'streams': []},"tt6156584:4:1",client,"0",['test','test'])
print(results) print(results)
async def test_deltabit(): async def test_deltabit():
+16 -1
View File
@@ -59,7 +59,7 @@ async def deltabit(page_url,client,streams,site_name,proxies,ForwardProxy,langua
if not link: if not link:
if not i >= 3: if not i >= 3:
page_url = 'https://deltabit.co/q4r8w4assff4' page_url = 'https://deltabit.co/q4r8w4assff4'
link,fname = await deltabit(page_url,client) link,fname = await deltabit(page_url,client,streams,site_name,proxies,ForwardProxy,language)
i +=1 i +=1
else: else:
link = link[0] link = link[0]
@@ -68,3 +68,18 @@ async def deltabit(page_url,client,streams,site_name,proxies,ForwardProxy,langua
return streams return streams
#Testing
async def test_deltabit():
from curl_cffi.requests import AsyncSession
async with AsyncSession() as client:
results = await deltabit("https://deltabit.co/a54ehb8w42pe",client,{'streams': []},'Deltabit', {},"","")
print(results)
if __name__ == "__main__":
import asyncio
asyncio.run(test_deltabit())
# https://loadm.cam/#cfnqx
+1 -1
View File
@@ -15,7 +15,7 @@ async def uqload(player_link,client,MFP,MFP_CREDENTIALS,streams,site_name,proxie
headers = random_headers.generate() headers = random_headers.generate()
if MFP == "1": if MFP == "1":
url = await build_mfp(MFP_CREDENTIALS, player_link, "Uqload",client) url = await build_mfp(MFP_CREDENTIALS, player_link, "Uqload",client)
streams['streams'].append({'name': f"{Name} 🕵️‍♂️",'title': f'{Icon}Guardaflix\n▶️ Uqload', 'url': url, 'behaviorHints': {'proxyHeaders': {"request": {"User-Agent": 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36'}}, 'notWebReady': True, 'bingeGroup': 'guardaflix'}}) streams['streams'].append({'name': f"{Name} 🕵️‍♂️",'title': f'{Icon}{site_name}\n▶️ Uqload', 'url': url, 'behaviorHints': {'proxyHeaders': {"request": {"User-Agent": 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36'}}, 'notWebReady': True, 'bingeGroup': 'guardaflix'}})
return streams return streams
response = await client.get(ForwardProxy + player_link, headers = headers, proxies = proxies) response = await client.get(ForwardProxy + player_link, headers = headers, proxies = proxies)
video_url_match = re.search(r'sources: \["(.*?)"]', response.text) video_url_match = re.search(r'sources: \["(.*?)"]', response.text)
+28 -26
View File
@@ -19,32 +19,34 @@ async def vixcloud(link,client,MFP,MFP_CREDENTIALS,streams,site_name,proxies,For
final_url = await build_mfp(MFP_CREDENTIALS, link, "VixCloud",client) final_url = await build_mfp(MFP_CREDENTIALS, link, "VixCloud",client)
quality = "" quality = ""
mfp_icon = '🕵️‍♂️' mfp_icon = '🕵️‍♂️'
else: if final_url:
mfp_icon = '' streams['streams'].append({"name":f'{Name} {mfp_icon}\n{quality}', 'title': f'{Icon} StreamingCommunity\n▶️ Vixcloud','url': final_url,'behaviorHints': {'bingeGroup': f'{site_name.lower()}{quality}'}})
headers = random_headers.generate() return streams
headers['Referer'] = f"{SC_DOMAIN}/" mfp_icon = ''
headers['Origin'] = f"{SC_DOMAIN}" headers = random_headers.generate()
headers['User-Agent'] = User_Agent headers['Referer'] = f"{SC_DOMAIN}/"
headers['user-agent'] = User_Agent headers['Origin'] = f"{SC_DOMAIN}"
response = await client.get(link) headers['User-Agent'] = User_Agent
if response.status_code != 200: headers['user-agent'] = User_Agent
logger.warning("Failed to extract URL components, Invalid Request") response = await client.get(link)
soup = BeautifulSoup(response.text, "lxml", parse_only=SoupStrainer("body")) if response.status_code != 200:
if soup: logger.warning("Failed to extract URL components, Invalid Request")
script = soup.find("body").find("script").text soup = BeautifulSoup(response.text, "lxml", parse_only=SoupStrainer("body"))
token = re.search(r"'token':\s*'(\w+)'", script).group(1) if soup:
expires = re.search(r"'expires':\s*'(\d+)'", script).group(1) script = soup.find("body").find("script").text
server_url = re.search(r"url:\s*'([^']+)'", script).group(1) token = re.search(r"'token':\s*'(\w+)'", script).group(1)
try: expires = re.search(r"'expires':\s*'(\d+)'", script).group(1)
quality = re.search(r'"quality":(\d+)', script).group(1) server_url = re.search(r"url:\s*'([^']+)'", script).group(1)
except: try:
quality = "" quality = re.search(r'"quality":(\d+)', script).group(1)
if "?b=1" in server_url: except:
final_url = f'{server_url}&token={token}&expires={expires}' quality = ""
else: if "?b=1" in server_url:
final_url = f"{server_url}?token={token}&expires={expires}" final_url = f'{server_url}&token={token}&expires={expires}'
if "window.canPlayFHD = true" in script: else:
final_url += "&h=1" final_url = f"{server_url}?token={token}&expires={expires}"
if "window.canPlayFHD = true" in script:
final_url += "&h=1"
if final_url: if final_url:
logger.info(f"Vixcloud Found Results for the current ID") logger.info(f"Vixcloud Found Results for the current ID")
streams['streams'].append({"name":f'{Name} {mfp_icon}\n{quality}', 'title': f'{Icon} StreamingCommunity\n▶️ Vixcloud','url': final_url,'behaviorHints': {'proxyHeaders': {"request": {"user-agent": User_Agent}}, 'notWebReady': True, 'bingeGroup': f'{site_name.lower()}{quality}'}}) streams['streams'].append({"name":f'{Name} {mfp_icon}\n{quality}', 'title': f'{Icon} StreamingCommunity\n▶️ Vixcloud','url': final_url,'behaviorHints': {'proxyHeaders': {"request": {"user-agent": User_Agent}}, 'notWebReady': True, 'bingeGroup': f'{site_name.lower()}{quality}'}})
+3 -2
View File
@@ -9,6 +9,8 @@ from Src.API.extractors.uqload import uqload
from Src.API.extractors.dropload import dropload from Src.API.extractors.dropload import dropload
import logging import logging
from Src.Utilities.config import setup_logging from Src.Utilities.config import setup_logging
import json
import random
level = config.LEVEL level = config.LEVEL
logger = setup_logging(level) logger = setup_logging(level)
env_vars = load_env() env_vars = load_env()
@@ -55,7 +57,6 @@ async def search(showname,date,MFP,MFP_CREDENTIALS,client,streams):
headers['Origin'] = f'{GF_DOMAIN}' headers['Origin'] = f'{GF_DOMAIN}'
headers['Referer'] = f'{GF_DOMAIN}/' headers['Referer'] = f'{GF_DOMAIN}/'
headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8' headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8'
showname = quote(showname)
data = { data = {
'action': 'action_tr_search_suggest', 'action': 'action_tr_search_suggest',
'nonce': '20115729b4', 'nonce': '20115729b4',
@@ -109,7 +110,7 @@ async def guardaflix(streams,id,client,MFP,MFP_CREDENTIALS):
async def test_guardaflix(): async def test_guardaflix():
from curl_cffi.requests import AsyncSession from curl_cffi.requests import AsyncSession
async with AsyncSession() as client: async with AsyncSession() as client:
results = await guardaflix({'streams': []},"tt16426418",client,"0",['test','test']) results = await guardaflix({'streams': []},"tt4045450",client,"0",['test','test'])
print(results) print(results)
+3 -1
View File
@@ -11,6 +11,8 @@ from Src.API.extractors.dropload import dropload
import logging import logging
from Src.Utilities.config import setup_logging from Src.Utilities.config import setup_logging
level = config.LEVEL level = config.LEVEL
import json
import random
logger = setup_logging(level) logger = setup_logging(level)
env_vars = load_env() env_vars = load_env()
random_headers = Headers() random_headers = Headers()
@@ -130,7 +132,7 @@ async def guardoserie(streams,id,client,MFP,MFP_CREDENTIALS):
async def test_guardoserie(): async def test_guardoserie():
from curl_cffi.requests import AsyncSession from curl_cffi.requests import AsyncSession
async with AsyncSession() as client: async with AsyncSession() as client:
results = await guardoserie({'streams': []},"tt16426418",client,"1",['test','test']) results = await guardoserie({'streams': []},"tt10919420:1:1",client,"1",['test','test'])
print(results) print(results)
+1 -1
View File
@@ -1,4 +1,4 @@
{ {
"projectName": "MammaMia", "projectName": "MammaMia",
"lastCommit": "10f381b" "lastCommit": "d39bc34"
} }
+1 -1
View File
@@ -174,7 +174,7 @@ CONFIGURE = """
<img src="https://creazilla-store.fra1.digitaloceanspaces.com/emojis/49647/pizza-emoji-clipart-md.png" alt="Logo"> <img src="https://creazilla-store.fra1.digitaloceanspaces.com/emojis/49647/pizza-emoji-clipart-md.png" alt="Logo">
</div> </div>
<h1 class="name">Mamma Mia</h1> <h1 class="name">Mamma Mia</h1>
<h2 class="version">v1.5.0</h2> <h2 class="version">v2.0.0</h2>
<div id="additionalText"> <div id="additionalText">
<h2>This addon provides Movie, Series, Anime, and Live TV HTTPS Streams.<br> https://github.com/UrloMythus/MammaMia/</h2> <h2>This addon provides Movie, Series, Anime, and Live TV HTTPS Streams.<br> https://github.com/UrloMythus/MammaMia/</h2>
</div> </div>
+1 -1
View File
@@ -174,7 +174,7 @@ HTML = """
<img src="https://creazilla-store.fra1.digitaloceanspaces.com/emojis/49647/pizza-emoji-clipart-md.png" alt="Logo"> <img src="https://creazilla-store.fra1.digitaloceanspaces.com/emojis/49647/pizza-emoji-clipart-md.png" alt="Logo">
</div> </div>
<h1 class="name">Mamma Mia</h1> <h1 class="name">Mamma Mia</h1>
<h2 class="version">v1.5.0</h2> <h2 class="version">v2.0.0</h2>
<div id="additionalText"> <div id="additionalText">
<h2>This addon provides Movie, Series, Anime, and Live TV HTTPS Streams.<br> https://github.com/UrloMythus/MammaMia/</h2> <h2>This addon provides Movie, Series, Anime, and Live TV HTTPS Streams.<br> https://github.com/UrloMythus/MammaMia/</h2>
</div> </div>