diff --git a/README.md b/README.md index 9a29ee7..5261455 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ # MammaMia A Stremio Addon for HTTPS Stream in Italian +Note that for now only filmpertutti is avaiable which uses Mixdrop. Mixdrop allows to see the videos only from the same IP they were generated so, if you want to scrape filmpertutti, you have to host this project locally. # Installation Install required packages diff --git a/Spacefile b/Spacefile deleted file mode 100644 index 8c4e750..0000000 --- a/Spacefile +++ /dev/null @@ -1,7 +0,0 @@ -# Spacefile Docs: https://go.deta.dev/docs/spacefile/v0 -v: 0 -micros: - - name: MammaMia - src: ./ - engine: python3.9 - primary: true diff --git a/US_date.py b/US_date.py new file mode 100644 index 0000000..e2f14c8 --- /dev/null +++ b/US_date.py @@ -0,0 +1,20 @@ + +def convert_US_date(date): + us_data = next((country_data for country_data in date['results'] if country_data["iso_3166_1"] == "US"), None) + if us_data: + us_release_dates_type_3 = [rd for rd in us_data['release_dates'] if rd['type'] == 3] + # Sort the list of release dates and get the latest + us_release_dates_type_3.sort(key = lambda x: x['release_date'], reverse=True) + if len(us_release_dates_type_3) > 0: + latest_release_date = us_release_dates_type_3[0]['release_date'] + date = latest_release_date.split('T')[0] + print('Latest US theatrical release date:', date) + return date + else: + us_release_dates_type_4 = [rd for rd in us_data['release_dates'] if rd['type'] == 4] + us_release_dates_type_4.sort(key = lambda x: x['release_date'], reverse=True) + if len(us_release_dates_type_4) > 0: + latest_release_date = us_release_dates_type_4[0]['release_date'] + date = latest_release_date.split('T')[0] + print('Latest US theatrical release date (type 4):', date) + return date \ No newline at end of file diff --git a/__pycache__/US_date.cpython-311.pyc b/__pycache__/US_date.cpython-311.pyc new file mode 100644 index 0000000..3ebaad9 Binary files /dev/null and b/__pycache__/US_date.cpython-311.pyc differ diff --git a/__pycache__/convert.cpython-311.pyc b/__pycache__/convert.cpython-311.pyc new file mode 100644 index 0000000..1064d4d Binary files /dev/null and b/__pycache__/convert.cpython-311.pyc differ diff --git a/__pycache__/info.cpython-311.pyc b/__pycache__/info.cpython-311.pyc new file mode 100644 index 0000000..11cb6d8 Binary files /dev/null and b/__pycache__/info.cpython-311.pyc differ diff --git a/__pycache__/loadenv.cpython-311.pyc b/__pycache__/loadenv.cpython-311.pyc new file mode 100644 index 0000000..fe18b98 Binary files /dev/null and b/__pycache__/loadenv.cpython-311.pyc differ diff --git a/convert.py b/convert.py new file mode 100644 index 0000000..482686d --- /dev/null +++ b/convert.py @@ -0,0 +1,26 @@ +import requests +from tmdbv3api import TMDb, Movie, TV +from loadenv import load_env +TMDB_KEY, DOMAIN = load_env() + +def get_TMDb_id_from_IMDb_id(imdb_id): + if ":" in imdb_id: + season = imdb_id.split(":")[1] + episode = imdb_id[-1] + ismovie = 0 + imdb_id = imdb_id.split(":")[0] + else: + ismovie = 1 + response = requests.get(f'https://api.themoviedb.org/3/find/{imdb_id}', + params={'external_source': 'imdb_id', 'api_key': f'{TMDB_KEY}'}) + tmbda = response.json() + if tmbda['movie_results']: + print(tmbda) + return tmbda['movie_results'][0]['id'], ismovie + elif tmbda['tv_results']: + print(tmbda['tv_results'][0]['id']) + return tmbda['tv_results'][0]['id'], season, episode , ismovie + else: + return None + +get_TMDb_id_from_IMDb_id("tt1839578:1:1") \ No newline at end of file diff --git a/filmpertutti.py b/filmpertutti.py index 67044e0..8a3dc8c 100644 --- a/filmpertutti.py +++ b/filmpertutti.py @@ -6,14 +6,12 @@ import string import re from datetime import datetime import dateparser -import os -from dotenv import load_dotenv - -load_dotenv(".env") - -TMDB_KEY = os.getenv('TMDB_KEY') -DOMAIN = os.getenv('DOMAIN') +from convert import get_TMDb_id_from_IMDb_id +from loadenv import load_env +from info import get_info +from US_date import convert_US_date +TMDB_KEY, DOMAIN = load_env() 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' @@ -23,66 +21,6 @@ month_mapping = { 'May': 'Maggio', 'Jun': 'Giugno', 'Jul': 'Luglio', 'Aug': 'Agosto', 'Sep': 'Settembre', 'Oct': 'Ottobre', 'Nov': 'Novembre', 'Dec': 'Dicembre' } -def convert_US_date(date): - us_data = next((country_data for country_data in date['results'] if country_data["iso_3166_1"] == "US"), None) - if us_data: - us_release_dates_type_3 = [rd for rd in us_data['release_dates'] if rd['type'] == 3] - # Sort the list of release dates and get the latest - us_release_dates_type_3.sort(key = lambda x: x['release_date'], reverse=True) - if len(us_release_dates_type_3) > 0: - latest_release_date = us_release_dates_type_3[0]['release_date'] - date = latest_release_date.split('T')[0] - print('Latest US theatrical release date:', date) - return date - else: - us_release_dates_type_4 = [rd for rd in us_data['release_dates'] if rd['type'] == 4] - us_release_dates_type_4.sort(key = lambda x: x['release_date'], reverse=True) - if len(us_release_dates_type_4) > 0: - latest_release_date = us_release_dates_type_4[0]['release_date'] - date = latest_release_date.split('T')[0] - print('Latest US theatrical release date (type 4):', date) - return date -def get_TMDb_id_from_IMDb_id(imdb_id): - if ":" in imdb_id: - season = imdb_id.split(":")[1] - episode = imdb_id[-1] - ismovie = 0 - imdb_id = imdb_id.split(":")[0] - else: - ismovie = 1 - response = requests.get(f'https://api.themoviedb.org/3/find/{imdb_id}', - params={'external_source': 'imdb_id', 'api_key': f'{TMDB_KEY}'}) - tmbda = response.json() - if tmbda['movie_results']: - print(tmbda) - return tmbda['movie_results'][0]['id'], ismovie - elif tmbda['tv_results']: - print(tmbda['tv_results'][0]['id']) - return tmbda['tv_results'][0]['id'], season, episode , ismovie - else: - return None - -def get_mamma(tmbda,ismovie): - tmdb = TMDb() - tmdb.api_key = f'{TMDB_KEY}' - tmdb.language = 'it' - if ismovie == 0: - tv = TV() - show= tv.details(tmbda) - showname = show.name - date= show.first_air_date - else: - movie = Movie() - show= movie.details(tmbda) - showname= show.title - #Get all release dates - date = show.release_dates - #GET US RELEASE DATE because filmpertutti somewhy uses US release date - date = convert_US_date(date) - if ismovie==0: - return showname,date - else: - return showname,date def search(query,date): response = requests.get(query).json() @@ -153,7 +91,7 @@ def get_stream_link(imbd): tmdba,season,episode,ismovie = info else: tmdba,ismovie = info - showname,date = get_mamma(tmdba,ismovie) + showname,date = get_info(tmdba,ismovie) showname = showname.replace(" ", "+").replace("–", "+").replace("—","+") query = f'https://filmpertutti.{DOMAIN}/wp-json/wp/v2/posts?search={showname}&page=1&_fields=link,id' print(query) @@ -176,4 +114,3 @@ def get_stream_link(imbd): #let's get delivery link, streaming link streaming_link = get_true_link(real_link) return streaming_link - diff --git a/info.py b/info.py new file mode 100644 index 0000000..e1761b5 --- /dev/null +++ b/info.py @@ -0,0 +1,26 @@ +from loadenv import load_env +from tmdbv3api import TMDb, Movie, TV +from US_date import convert_US_date +TMDB_KEY, DOMAIN = load_env() + +def get_info(tmbda,ismovie): + tmdb = TMDb() + tmdb.api_key = f'{TMDB_KEY}' + tmdb.language = 'it' + if ismovie == 0: + tv = TV() + show= tv.details(tmbda) + showname = show.name + date= show.first_air_date + else: + movie = Movie() + show= movie.details(tmbda) + showname= show.title + #Get all release dates + date = show.release_dates + #GET US RELEASE DATE because filmpertutti somewhy uses US release date + date = convert_US_date(date) + if ismovie==0: + return showname,date + else: + return showname,date \ No newline at end of file diff --git a/loadenv.py b/loadenv.py new file mode 100644 index 0000000..c609f84 --- /dev/null +++ b/loadenv.py @@ -0,0 +1,7 @@ +import os +from dotenv import load_dotenv +load_dotenv(".env") +def load_env(): + TMDB_KEY = os.getenv('TMDB_KEY') + DOMAIN = os.getenv('DOMAIN') + return TMDB_KEY, DOMAIN \ No newline at end of file