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