├── assets └── logo.webp ├── scrapers ├── __pycache__ │ ├── azm.cpython-310.pyc │ ├── filecdn.cpython-310.pyc │ ├── frembed.cpython-310.pyc │ ├── downloads.cpython-310.pyc │ ├── showflix.cpython-310.pyc │ ├── streamium.cpython-310.pyc │ ├── subtitles.cpython-310.pyc │ ├── twoembed.cpython-310.pyc │ ├── vidsrcme.cpython-310.pyc │ ├── vidsrcto.cpython-310.pyc │ ├── vixcloud.cpython-310.pyc │ ├── dreamfilmsw.cpython-310.pyc │ └── meinecloud.cpython-310.pyc ├── embeds │ ├── __pycache__ │ │ ├── dood.cpython-310.pyc │ │ └── streamwish.cpython-310.pyc │ ├── showflix.py │ ├── streamwish.py │ ├── uqload.py │ ├── voe.py │ ├── upstream.py │ └── dood.py ├── meinecloud.py ├── frembed.py ├── filecdn.py ├── extractors │ └── megacloud.py ├── subtitles.py ├── streamium.py ├── showflix.py ├── unfinished │ ├── vidsrcme.py │ └── uhdmovies.py ├── downloads.py ├── twoembed.py ├── utils │ └── unpacker.py ├── vidsrcto.py ├── dreamfilmsw.py ├── azm.py ├── vidsrcme.py ├── vixcloud.py └── flixhq.py ├── requirements.txt ├── README.md └── main.py /assets/logo.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/streamflix-one/providers/HEAD/assets/logo.webp -------------------------------------------------------------------------------- /scrapers/__pycache__/azm.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/streamflix-one/providers/HEAD/scrapers/__pycache__/azm.cpython-310.pyc -------------------------------------------------------------------------------- /scrapers/__pycache__/filecdn.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/streamflix-one/providers/HEAD/scrapers/__pycache__/filecdn.cpython-310.pyc -------------------------------------------------------------------------------- /scrapers/__pycache__/frembed.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/streamflix-one/providers/HEAD/scrapers/__pycache__/frembed.cpython-310.pyc -------------------------------------------------------------------------------- /scrapers/__pycache__/downloads.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/streamflix-one/providers/HEAD/scrapers/__pycache__/downloads.cpython-310.pyc -------------------------------------------------------------------------------- /scrapers/__pycache__/showflix.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/streamflix-one/providers/HEAD/scrapers/__pycache__/showflix.cpython-310.pyc -------------------------------------------------------------------------------- /scrapers/__pycache__/streamium.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/streamflix-one/providers/HEAD/scrapers/__pycache__/streamium.cpython-310.pyc -------------------------------------------------------------------------------- /scrapers/__pycache__/subtitles.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/streamflix-one/providers/HEAD/scrapers/__pycache__/subtitles.cpython-310.pyc -------------------------------------------------------------------------------- /scrapers/__pycache__/twoembed.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/streamflix-one/providers/HEAD/scrapers/__pycache__/twoembed.cpython-310.pyc -------------------------------------------------------------------------------- /scrapers/__pycache__/vidsrcme.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/streamflix-one/providers/HEAD/scrapers/__pycache__/vidsrcme.cpython-310.pyc -------------------------------------------------------------------------------- /scrapers/__pycache__/vidsrcto.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/streamflix-one/providers/HEAD/scrapers/__pycache__/vidsrcto.cpython-310.pyc -------------------------------------------------------------------------------- /scrapers/__pycache__/vixcloud.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/streamflix-one/providers/HEAD/scrapers/__pycache__/vixcloud.cpython-310.pyc -------------------------------------------------------------------------------- /scrapers/__pycache__/dreamfilmsw.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/streamflix-one/providers/HEAD/scrapers/__pycache__/dreamfilmsw.cpython-310.pyc -------------------------------------------------------------------------------- /scrapers/__pycache__/meinecloud.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/streamflix-one/providers/HEAD/scrapers/__pycache__/meinecloud.cpython-310.pyc -------------------------------------------------------------------------------- /scrapers/embeds/__pycache__/dood.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/streamflix-one/providers/HEAD/scrapers/embeds/__pycache__/dood.cpython-310.pyc -------------------------------------------------------------------------------- /scrapers/embeds/__pycache__/streamwish.cpython-310.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/streamflix-one/providers/HEAD/scrapers/embeds/__pycache__/streamwish.cpython-310.pyc -------------------------------------------------------------------------------- /scrapers/embeds/showflix.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import re 3 | 4 | class ShowFlix: 5 | def __init__(self, url): 6 | self.url = url 7 | 8 | def main(self): 9 | headers = { 10 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8", 11 | "Accept-Language": "en-GB,en;q=0.9", 12 | "Connection": "keep-alive", 13 | "Host": "showflix.cfd", 14 | "Referer": "https://showflix.lol/", 15 | "sec-ch-ua": '"Chromium";v="122", "Not(A:Brand";v="24", "Brave";v="122"', 16 | "sec-ch-ua-mobile": "?0", 17 | "sec-ch-ua-platform": '"Windows"', 18 | "Sec-Fetch-Dest": "iframe", 19 | "Sec-Fetch-Mode": "navigate", 20 | "Sec-Fetch-Site": "cross-site", 21 | "Sec-Fetch-User": "?1", 22 | "Sec-GPC": "1", 23 | "Upgrade-Insecure-Requests": "1", 24 | "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36" 25 | } 26 | 27 | response = requests.get(self.url, headers=headers) 28 | html_content = response.text 29 | 30 | m3u8_url_match = re.search(r'sources: \[\{[^}]*file:\s*"([^"]+)"[^}]*\}\]', html_content) 31 | if m3u8_url_match: 32 | m3u8_url = m3u8_url_match.group(1) 33 | return m3u8_url 34 | else: 35 | return None 36 | 37 | -------------------------------------------------------------------------------- /scrapers/meinecloud.py: -------------------------------------------------------------------------------- 1 | import cloudscraper 2 | import re 3 | import requests 4 | from scrapers.embeds.dood import Doodstream 5 | 6 | class MeineCloud: 7 | def __init__(self, tmdb_api_key): 8 | self.scraper = cloudscraper.create_scraper() 9 | self.tmdb_api_key = tmdb_api_key 10 | 11 | def fetch_sources(self, user_ip, tmdb_id): 12 | imdb_id = self._get_imdb_id(tmdb_id) 13 | html_content = self.scraper.get(f"https://meinecloud.click/movie/{imdb_id}").text 14 | pattern = r'
  • ' 15 | 16 | matches = re.findall(pattern, html_content) 17 | if matches: 18 | dood_id = matches[0].split("/e/")[1] 19 | formatted_url = f"https://d0o0d.com/e/{dood_id}?" 20 | doodstream = Doodstream(formatted_url, user_ip) 21 | r = doodstream.main().split("\n")[0] 22 | print(r) 23 | return {'url': f'{r}#.mp4', 'source': 'MeineCloud', 'proxy': 'False', 'lang': 'de', 'type': 'mp4'} 24 | else: 25 | return None 26 | 27 | def _get_imdb_id(self, tmdb_id): 28 | tmdb_api_url = f"https://api.themoviedb.org/3/movie/{tmdb_id}?api_key={self.tmdb_api_key}" 29 | response = requests.get(tmdb_api_url) 30 | if response.status_code == 200: 31 | data = response.json() 32 | imdb_id = data.get("imdb_id", "") 33 | return imdb_id 34 | else: 35 | raise ValueError(f"Error fetching IMDb ID from TMDB API. Status Code: {response.status_code}") 36 | -------------------------------------------------------------------------------- /scrapers/embeds/streamwish.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import re 3 | 4 | class Streamwish: 5 | def __init__(self, url, ip): 6 | self.url = url 7 | self.user_ip = ip 8 | 9 | def main(self): 10 | headers = { 11 | "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8", 12 | "Accept-Language": "en-GB,en;q=0.9", 13 | "Connection": "keep-alive", 14 | "Host": f"{self.url.split('/e/')[0].strip('https://')}", 15 | "Referer": "https://showflix.lol/", # showflix for everything cause why not 16 | "sec-ch-ua": '"Chromium";v="122", "Not(A:Brand";v="24", "Brave";v="122"', 17 | "sec-ch-ua-mobile": "?0", 18 | "sec-ch-ua-platform": '"Windows"', 19 | "Sec-Fetch-Dest": "iframe", 20 | "Sec-Fetch-Mode": "navigate", 21 | "Sec-Fetch-Site": "cross-site", 22 | "Sec-Fetch-User": "?1", 23 | "Sec-GPC": "1", 24 | "Upgrade-Insecure-Requests": "1", 25 | "X-Forwarded-For": self.user_ip, 26 | "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36" 27 | } 28 | 29 | response = requests.get(self.url, headers=headers) 30 | html_content = response.text 31 | m3u8_url_match = re.search(r'sources: \[\{[^}]*file:\s*"([^"]+)"[^}]*\}\]', html_content) 32 | if m3u8_url_match: 33 | m3u8_url = m3u8_url_match.group(1) 34 | return m3u8_url 35 | else: 36 | return None 37 | 38 | -------------------------------------------------------------------------------- /scrapers/frembed.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import re 3 | 4 | class FrEmbed: 5 | def __init__(self): 6 | self.headers = { 7 | "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8", 8 | "accept-language": "en-GB,en;q=0.9", 9 | "sec-ch-ua": "\"Chromium\";v=\"122\", \"Not(A:Brand\";v=\"24\", \"Brave\";v=\"122\"", 10 | "Connection": "keep-alive", 11 | "Host": "frembed.fun", 12 | "sec-ch-ua-mobile": "?0", 13 | "sec-ch-ua-platform": '"Windows"', 14 | "Sec-Fetch-Dest": "iframe", 15 | "Sec-Fetch-Mode": "navigate", 16 | "Sec-Fetch-Site": "same-origin", 17 | "Sec-Fetch-User": "?1", 18 | "Sec-GPC": "1", 19 | "Upgrade-Insecure-Requests": "1", 20 | "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36", 21 | } 22 | 23 | def fetch_sources(self, tmdb_id, season=None, episode=None): 24 | url = f"https://frembed.fun/player/test.php?id={tmdb_id}" 25 | response = requests.get(url, headers=self.headers) 26 | 27 | if response.status_code == 200: 28 | m3u8_url = self.extract_m3u8_url(response.text) 29 | return m3u8_url 30 | else: 31 | print("Failed to retrieve content. Status Code:", response.status_code) 32 | return None 33 | 34 | def extract_m3u8_url(self, content): 35 | pattern = r"src:\s*'([^']*\bmaster\.m3u8\b[^']*)'" 36 | match = re.search(pattern, content) 37 | 38 | if match: 39 | return {'url': match.group(1), 'source': 'FrEmbed', 'proxy': 'False', 'lang': 'fr', 'type': 'hls'} 40 | else: 41 | print("M3U8 URL not found in the response content.") 42 | return None -------------------------------------------------------------------------------- /scrapers/filecdn.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import re 3 | 4 | class FileCDNScraper: 5 | def scrape_movie(self, tmdb_id): 6 | url = f'https://www.filecdn.cloud/e/tmdb{tmdb_id}dub' 7 | return {'url': self._scrape(url), 'source': 'FileCDN - Movie', 'proxy': 'False', 'lang': 'pt', 'type': 'mp4'} 8 | 9 | 10 | def scrape_tv_show(self, tmdb_id, season, episode): 11 | url = f'https://www.filecdn.cloud/e/tvtmdb{tmdb_id}t{season}e{episode}dub' 12 | return {'url': self._scrape(url), 'source': 'FileCDN - TV Show', 'proxy': 'False', 'lang': 'pt', 'type': 'mp4'} 13 | 14 | def _scrape(self, url): 15 | response = requests.get(url) 16 | if response.status_code == 200: 17 | iframe_match = re.search(r'