Spaces:
Paused
Paused
from tmdbv3api import TMDb, Movie, TV | |
import requests | |
import logging | |
from bs4 import BeautifulSoup,SoupStrainer | |
from datetime import datetime | |
import dateparser | |
from convert import get_TMDb_id_from_IMDb_id | |
from info import get_info_tmdb, is_movie, get_info_imdb | |
import config | |
import re | |
LC_DOMAIN = config.LC_DOMAIN | |
def search(query,date,season,episode,ismovie): | |
response = requests.get(query) | |
soup = BeautifulSoup(response.text,"lxml") | |
cards = soup.find_all('div', class_='col-6 col-sm-4 col-lg-3 col-xl-3') | |
for card in cards: | |
a_tag = card.find('a', class_='card__play') | |
if a_tag is not None: # check if the a_tag exists | |
href = a_tag['href'] | |
link = f'https://lordchannel.{LC_DOMAIN}{href}' | |
response = requests.get(link) | |
soup2 = BeautifulSoup(response.text,'lxml') | |
li_tag = soup2.select_one("ul.card__meta li:nth-of-type(2)") | |
if li_tag is not None: # check if the li_tag exists | |
card_date = li_tag.text[-4:] | |
if card_date == date: | |
quality = soup2.select('ul.card__list li')[0].text | |
if ismovie == 1: | |
video_url = soup2.find('a', class_="btn-streaming streaming_btn") | |
video_url = video_url['href'] | |
return video_url,quality | |
elif ismovie == 0: | |
div = soup2.find('div', id=f'collapse{season}') | |
episode = episode -1 #Index start from 0 so I need to subtract 1 | |
episode = div.select('tr')[2] # index is 2 because we want the correct element | |
video_url = href = episode.find('a').get('href') | |
return video_url,quality | |
else: | |
print("Sadly date are not equals") | |
continue | |
def get_m3u8(video_url): | |
response = requests.get(video_url) | |
pattern = r'const videoData = \[(.*?)\];' | |
match = re.search(pattern, response.text) | |
if match: | |
video_data = match.group(1).strip().split(', ') | |
url = video_data[0] | |
return url | |
def lordchannel(imdb): | |
try: | |
general = is_movie(imdb) | |
ismovie = general[0] | |
imdb_id = general[1] | |
type = "LordChannel" | |
if ismovie == 0: | |
season = int(general[2]) | |
episode = int(general[3]) | |
if "tt" in imdb: | |
tmdba = get_TMDb_id_from_IMDb_id(imdb_id) | |
else: | |
tmdba = imdb_id | |
else: | |
season = None | |
episode = None | |
if "tt" in imdb: | |
tmdba = get_TMDb_id_from_IMDb_id(imdb_id) | |
else: | |
tmdba = imdb_id | |
showname,date = get_info_tmdb(tmdba,ismovie,type) | |
showname = showname.replace(" ", "+").replace("–", "+").replace("—","+") | |
query = f'https://lordchannel.{LC_DOMAIN}/cerca/?q={showname}' | |
video_url,quality = search(query,date,season,episode,ismovie) | |
url = get_m3u8(video_url) | |
url = url.replace('"','') | |
print(url) | |
return url,quality | |
except: | |
print("Lordchannel Failed") | |
return None,None |