diff --git a/Dockerfile b/Dockerfile index 195cd9a..0f135ca 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,21 +1,8 @@ -FROM python:3.10-slim-buster - -# Set the working directory in the container to /app +FROM python:3.11-slim-bullseye WORKDIR /app - -# Install git RUN apt-get update && apt-get install -y git - -# Clone the repository RUN git clone https://github.com/YourUsername/YourRepoName.git . - -# Copy the local config.json file to the container - -# Install any needed packages specified in requirements.txt RUN pip install --no-cache-dir -r requirements.txt +EXPOSE 7860 +CMD ["uvicorn", "run:main_app", "--host", "0.0.0.0", "--port", "7860", "--workers", "4"] - -EXPOSE 8888 - -# Run run.py when the container launches -CMD ["uvicorn", "run:main_app", "--host", "0.0.0.0", "--port", "8888", "--workers", "4"] diff --git a/mediaflow_proxy/extractors/base.py b/mediaflow_proxy/extractors/base.py index 2b16f8a..bf8a15b 100644 --- a/mediaflow_proxy/extractors/base.py +++ b/mediaflow_proxy/extractors/base.py @@ -30,7 +30,6 @@ class BaseExtractor(ABC): try: async with create_httpx_client() as client: request_headers = self.base_headers - print(request_headers) request_headers.update(headers or {}) response = await client.request( method, diff --git a/mediaflow_proxy/extractors/fastream.py b/mediaflow_proxy/extractors/fastream.py index 55a1ae8..2f8d664 100644 --- a/mediaflow_proxy/extractors/fastream.py +++ b/mediaflow_proxy/extractors/fastream.py @@ -1,4 +1,3 @@ -import re from typing import Dict, Any from mediaflow_proxy.extractors.base import BaseExtractor @@ -17,10 +16,10 @@ class FastreamExtractor(BaseExtractor): #Init headers needed for the request. headers = {'Accept': '*/*', 'Connection': 'keep-alive','Accept-Language': 'en-US,en;q=0.5','Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'user-agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:138.0) Gecko/20100101 Firefox/138.0'} """Extract Fastream URL.""" - final_url = await eval_solver(self,url,headers) + final_url = await eval_solver(self,url,headers, r'file:"(.*?)"') - self.base_headers["referer"] = f'https://{url.replace('https://','').split('/')[0]}/' - self.base_headers["origin"] = f'https://{url.replace('https://','').split('/')[0]}' + self.base_headers["referer"] = f'https://{url.replace("https://","").split("/")[0]}/' + self.base_headers["origin"] = f'https://{url.replace("https://","").split("/")[0]}' self.base_headers['Accept-Language'] = 'en-US,en;q=0.5' self.base_headers['Accept'] = '*/*' self.base_headers['user-agent'] = 'Mozilla/5.0 (X11; Linux x86_64; rv:138.0) Gecko/20100101 Firefox/138.0' @@ -29,4 +28,4 @@ class FastreamExtractor(BaseExtractor): "destination_url": final_url, "request_headers": self.base_headers, "mediaflow_endpoint": self.mediaflow_endpoint, - } \ No newline at end of file + } diff --git a/mediaflow_proxy/extractors/mixdrop.py b/mediaflow_proxy/extractors/mixdrop.py index 4604463..21a1790 100644 --- a/mediaflow_proxy/extractors/mixdrop.py +++ b/mediaflow_proxy/extractors/mixdrop.py @@ -1,8 +1,7 @@ -import re -import string from typing import Dict, Any from mediaflow_proxy.extractors.base import BaseExtractor, ExtractorError +from mediaflow_proxy.utils.packed import eval_solver class MixdropExtractor(BaseExtractor): @@ -12,23 +11,10 @@ class MixdropExtractor(BaseExtractor): """Extract Mixdrop URL.""" if "club" in url: url = url.replace("club", "ps").split("/2")[0] - response = await self._make_request(url, headers={"accept-language": "en-US,en;q=0.5"}) - # Extract and decode URL - match = re.search(r"}\('(.+)',.+,'(.+)'\.split", response.text) - if not match: - raise ExtractorError("Failed to extract URL components") + headers = {"accept-language": "en-US,en;q=0.5"} - s1, s2 = match.group(1, 2) - schema = s1.split(";")[2][5:-1] - terms = s2.split("|") - - # Build character mapping - charset = string.digits + string.ascii_letters - char_map = {charset[i]: terms[i] or charset[i] for i in range(len(terms))} - - # Construct final URL - final_url = "https:" + "".join(char_map.get(c, c) for c in schema) + final_url = f"https:{await eval_solver(self, url, headers, r'MDCore.wurl ?= ?"(.*?)"')}" self.base_headers["referer"] = url return { diff --git a/mediaflow_proxy/extractors/supervideo.py b/mediaflow_proxy/extractors/supervideo.py index 31da858..adb3c42 100644 --- a/mediaflow_proxy/extractors/supervideo.py +++ b/mediaflow_proxy/extractors/supervideo.py @@ -19,7 +19,7 @@ class SupervideoExtractor(BaseExtractor): """Extract Supervideo URL.""" - final_url = await eval_solver(self,url,headers) + final_url = await eval_solver(self,url,headers, r'file:"(.*?)"') self.base_headers["referer"] = url return { diff --git a/mediaflow_proxy/speedtest/providers/__pycache__/all_debrid.cpython-313.pyc b/mediaflow_proxy/speedtest/providers/__pycache__/all_debrid.cpython-313.pyc deleted file mode 100644 index 65b4ba2..0000000 Binary files a/mediaflow_proxy/speedtest/providers/__pycache__/all_debrid.cpython-313.pyc and /dev/null differ diff --git a/mediaflow_proxy/speedtest/providers/__pycache__/base.cpython-313.pyc b/mediaflow_proxy/speedtest/providers/__pycache__/base.cpython-313.pyc deleted file mode 100644 index 039a4fc..0000000 Binary files a/mediaflow_proxy/speedtest/providers/__pycache__/base.cpython-313.pyc and /dev/null differ diff --git a/mediaflow_proxy/speedtest/providers/__pycache__/real_debrid.cpython-313.pyc b/mediaflow_proxy/speedtest/providers/__pycache__/real_debrid.cpython-313.pyc deleted file mode 100644 index e250cad..0000000 Binary files a/mediaflow_proxy/speedtest/providers/__pycache__/real_debrid.cpython-313.pyc and /dev/null differ diff --git a/mediaflow_proxy/static/index.html b/mediaflow_proxy/static/index.html index 9885320..87860dd 100644 --- a/mediaflow_proxy/static/index.html +++ b/mediaflow_proxy/static/index.html @@ -1,125 +1,3 @@ - -
- - -
- A high-performance proxy server for streaming media, supporting HTTP(S), HLS, and MPEG-DASH with real-time DRM decryption.
- -Test your connection speed with debrid services to optimize your streaming experience:
- -- Browser Speed Test: Tests your actual connection speed through MediaFlow proxy vs direct connection with support for multiple servers, interactive charts, and comprehensive analytics. -
-Visit the GitHub repository for installation instructions and documentation.
- -For a hassle-free experience, check out premium hosted service on ElfHosted.
- -Explore the Swagger UI for comprehensive details about the API endpoints and their usage.
- - - \ No newline at end of file +"The App is running"
+