From c5b574a22df95bea7349515d24e9b3a81cf462fd Mon Sep 17 00:00:00 2001 From: Urlo30 <91965455+UrloMythus@users.noreply.github.com> Date: Fri, 16 Aug 2024 20:58:00 +0200 Subject: [PATCH] Update streamingcommunity.py --- streamingcommunity.py | 150 ++---------------------------------------- 1 file changed, 6 insertions(+), 144 deletions(-) diff --git a/streamingcommunity.py b/streamingcommunity.py index 284c261..17de0db 100644 --- a/streamingcommunity.py +++ b/streamingcommunity.py @@ -1,141 +1,3 @@ -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 json -import re -#Get domain -SC_DOMAIN= config.SC_DOMAIN -SC_FAST_SEARCH = config.SC_FAST_SEARCH - -headers = { - 'User-Agent': 'Mozilla/5.0 (Windows NT 10.10; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3', - 'Accept-Language': 'en-US,en;q=0.5' -} - -#GET VERSION OF STREAMING COMMUNITY: -def get_version(): - #Extract the version from the main page of the site - - - try: - base_url = f'https://streamingcommunity.{SC_DOMAIN}/richiedi-un-titolo' - response = requests.get(base_url, headers=headers) - #Soup the response - soup = BeautifulSoup(response.text, "lxml") - - # Extract version - version = json.loads(soup.find("div", {"id": "app"}).get("data-page"))['version'] - return version - except: - print("Couldn't find the version") - version = "65e52dcf34d64173542cd2dc6b8bb75b" - return version - -def search(query,date,ismovie): - #Do a request to get the ID of serie/move and it's slug in the URL - response = requests.get(query).json() - for item in response['data']: - tid = item['id'] - slug = item['slug'] - type = item['type'] - if type == "tv": - type = 0 - elif type == "movie": - type = 1 - if type == ismovie: - #Added a Check to see if the result is what it is supposed to be - if SC_FAST_SEARCH == "0": - if ismovie == 0: - seasons_count = item['seasons_count'] - #Do not ask me why but somewhy streaming community call the first air date the last air date - first_air_date = item['last_air_date'] - if first_air_date: - first_air_year = first_air_date.split("-")[0] - if first_air_year == date: - return tid,slug - else: - response = requests.get ( f'https://streamingcommunity.boston/titles/{tid}-{slug}') - pattern = r']*class="features"[^>]*>.*?]*>(.*?)<\/span>' - match = re.search(pattern, response.text) - print(match.group(1).split("-")[0]) - first_air_year = match.group(1).split("-")[0] - date = int(date) - first_air_year = int(first_air_year) - if first_air_year == date: - return tid,slug - elif ismovie == 1: - return tid,slug - elif SC_FAST_SEARCH == "1": - return tid,slug - else: - print("Couldn't find anything") - - -def get_film(tid): - #Access the iframe - url = f'https://streamingcommunity.{SC_DOMAIN}/iframe/{tid}' - response = requests.get(url, headers=headers) - iframe = BeautifulSoup(response.text, 'lxml') - #Get the link of iframe - iframe = iframe.find('iframe').get("src") - #Get the ID containted in the src of iframe - vixid = iframe.split("/embed/")[1].split("?")[0] - #Build the url with 1080p, to get the highest resolution - url = f'https://vixcloud.co/playlist/{vixid}' - return url - -def get_season_episode_id(tid,slug,season,episode,version): - #Set some basic headers for the request - headers = { - 'user-agent': "Mozilla/5.0 (Windows NT 10.10; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3", - 'x-inertia': 'true', - #Version of streaming community - 'x-inertia-version': version - } - #Get episode ID - response = requests.get(f'https://streamingcommunity.{SC_DOMAIN}/titles/{tid}-{slug}/stagione-{season}', headers=headers) - # Print the json got - json_response = response.json().get('props', {}).get('loadedSeason', {}).get('episodes', []) - for dict_episode in json_response: - if dict_episode['number'] == episode: - return dict_episode['id'] - -def get_episode_link(episode_id,tid): - #The parameters for the request - params = { - 'episode_id': episode_id, - 'next_episode': '1' - } - #Let's try to get the link from iframe source - # Make a request to get iframe source - response = requests.get(f"https://streamingcommunity.{SC_DOMAIN}/iframe/{tid}", params=params) - - # Parse response with BeautifulSoup to get iframe source - soup = BeautifulSoup(response.text, "lxml") - iframe = soup.find("iframe").get("src") - vixid = iframe.split("/embed/")[1].split("?")[0] - url = f"https://vixcloud.co/playlist/{vixid}" - return url - - -def streaming_community(imdb): - try: - general = is_movie(imdb) - ismovie = general[0] - imdb_id = general[1] - type = "StreamingCommunity" - if ismovie == 0 : - season = int(general[2]) - episode = int(general[3]) - #Check if fast search is enabled or disabled - if SC_FAST_SEARCH == "1": - if "tt" in imdb: #Get showname showname = get_info_imdb(imdb_id,ismovie,type) date = None @@ -164,17 +26,17 @@ def streaming_community(imdb): showname = showname.replace(" ", "+").replace("–", "+").replace("—","+") query = f'https://streamingcommunity.{SC_DOMAIN}/api/search?q={showname}' tid,slug = search(query,date,ismovie) + version = get_version() if ismovie == 1: #TID means temporaly ID - url = get_film(tid) + url,url720,quality = get_film(tid,version) print(url) - return url + return url,url720,quality if ismovie == 0: #Uid = URL ID - version = get_version() episode_id = get_season_episode_id(tid,slug,season,episode,version) - url = get_episode_link(episode_id,tid) + url,url720,quality = get_episode_link(episode_id,tid,version) print(url) - return url + return url,url720,quality except Exception as e: - print("Nope It failed") \ No newline at end of file + print("Nope It failed")