94 lines
3.5 KiB
Python
94 lines
3.5 KiB
Python
from fake_headers import Headers
|
|
import Src.Utilities.config as config
|
|
from bs4 import BeautifulSoup,SoupStrainer
|
|
import re
|
|
import time
|
|
import logging
|
|
from Src.Utilities.config import setup_logging
|
|
from Src.Utilities.eval import eval_solver
|
|
level = config.LEVEL
|
|
logger = setup_logging(level)
|
|
Icon = config.Icon
|
|
Name = config.Name
|
|
random_headers = Headers()
|
|
|
|
|
|
|
|
|
|
|
|
async def deltabit(page_url,client,streams,site_name,proxies,ForwardProxy,language,extractor):
|
|
"""Extract Deltabit URL."""
|
|
#Set up some headers
|
|
headers = random_headers.generate()
|
|
headers2 = random_headers.generate()
|
|
|
|
#Get the redirected link, so the actual deltabit link.
|
|
page_url_response = await client.get(ForwardProxy + page_url,headers={**headers, 'Range': 'bytes=0-0'}, proxies=proxies)
|
|
page_url = page_url_response.url
|
|
logger.info(f"Page_URl is {page_url}")
|
|
|
|
#Change the referer and user agent of the generated headers
|
|
headers2['referer'] = 'https://safego.cc/'
|
|
headers2['user-agent'] = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36'
|
|
|
|
#Request to the deltabit link
|
|
response = await client.get(ForwardProxy + page_url, headers = headers2, allow_redirects = True, proxies = proxies)
|
|
page_url = response.url
|
|
#Often deltabit redirects to another deltabit link. We need the redirected link to put it in the headers.
|
|
origin = page_url.split('/')[2]
|
|
headers['origin'] = f'https://{origin}'
|
|
headers['referer'] = page_url
|
|
headers['user-agent'] = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36'
|
|
#We check the page for the data such as hash and fname.
|
|
soup = BeautifulSoup(response.text, 'lxml', parse_only=SoupStrainer('input'))
|
|
data = {}
|
|
for input in soup:
|
|
name = input.get('name')
|
|
value = input.get('value')
|
|
data[name] = value
|
|
if extractor == 'Deltabit':
|
|
imhuman = ''
|
|
elif extractor == 'Turbovid':
|
|
imhuman = 'Proceed+to+video'
|
|
data['imhuman'] = imhuman
|
|
data['referer']= page_url
|
|
#We need to wait 2.5/5 seconds or the request will fail
|
|
if extractor == 'Deltabit':
|
|
time.sleep(2.5)
|
|
elif extractor == 'Turbovid':
|
|
time.sleep(5)
|
|
|
|
fname = data['fname']
|
|
#Request to the deltabit link
|
|
response = await client.post(ForwardProxy + page_url, data = data, headers = headers, proxies = proxies)
|
|
if extractor == 'Deltabit':
|
|
link = re.findall(r'sources:\s*\["([^"]+)"', response.text, re.DOTALL)
|
|
if link:
|
|
link = link[0]
|
|
elif extractor == 'Turbovid':
|
|
link = await eval_solver(response.text,proxies, ForwardProxy, client,r'sources:\s*\["([^"]+)"')
|
|
if not link:
|
|
i = 0
|
|
if not i >= 3:
|
|
link,fname = await deltabit(page_url,client,streams,site_name,proxies,ForwardProxy,language,extractor)
|
|
i +=1
|
|
if link:
|
|
streams['streams'].append({'name': f"{Name}{language}",'title': f'{Icon}{site_name}\n▶️ {extractor}\n{fname}', 'url': link, 'behaviorHints': {'bingeGroup': f'{site_name.lower()}'}})
|
|
|
|
|
|
return streams
|
|
|
|
|
|
|
|
|
|
#Testing
|
|
async def test_deltabit():
|
|
from curl_cffi.requests import AsyncSession
|
|
async with AsyncSession() as client:
|
|
results = await deltabit("https://turbovid.me/squc5gdzptgw",client,{'streams': []},'Deltabit', {},"","",'Turbovid')
|
|
print(results)
|
|
if __name__ == "__main__":
|
|
import asyncio
|
|
asyncio.run(test_deltabit())
|
|
|
|
# https://loadm.cam/#cfnqx |