Fix for SC
This commit is contained in:
+16
-5
@@ -1,5 +1,5 @@
|
|||||||
from urllib.parse import urlparse, parse_qs,unquote,quote
|
from urllib.parse import urlparse, parse_qs,unquote,quote
|
||||||
from fastapi import APIRouter, HTTPException, Response
|
from fastapi import APIRouter, HTTPException, Response, Request
|
||||||
from curl_cffi.requests import AsyncSession
|
from curl_cffi.requests import AsyncSession
|
||||||
|
|
||||||
router = APIRouter()
|
router = APIRouter()
|
||||||
@@ -25,16 +25,27 @@ async def clone_m3u8(d: str = None):
|
|||||||
|
|
||||||
|
|
||||||
@router.api_route("/vixcloud/manifest.m3u8", methods=["GET", "HEAD"])
|
@router.api_route("/vixcloud/manifest.m3u8", methods=["GET", "HEAD"])
|
||||||
async def clone2_m3u8(d:str,token:str,expires:str,h:str = None, b:str = None):
|
async def clone2_m3u8(d:str,token:str,expires:str,h:str = None, b:str = None, request: Request = None):
|
||||||
try:
|
try:
|
||||||
m3u8 = f'{d}?token={token}&expires={expires}'
|
m3u8 = f'{d}?token={token}&expires={expires}'
|
||||||
if h:
|
if h:
|
||||||
m3u8 = m3u8 + f'&h={h}'
|
m3u8 = m3u8 + f'&h={h}'
|
||||||
if b:
|
if b:
|
||||||
m3u8 = m3u8 + f'&b={b}'
|
m3u8 = m3u8 + f'&b={b}'
|
||||||
|
forwarded_proto = request.headers.get("x-forwarded-proto")
|
||||||
|
scheme = forwarded_proto if forwarded_proto else request.url.scheme
|
||||||
|
instance_url = f"{scheme}://{request.url.netloc}"
|
||||||
m3u8_content = await fetch_m3u8(m3u8)
|
m3u8_content = await fetch_m3u8(m3u8)
|
||||||
return Response(content=m3u8_content, media_type='application/vnd.apple.mpegurl')
|
modified_playlist = m3u8_content.replace("https://vixcloud.co/playlist/", f"{instance_url}/clony/")
|
||||||
|
|
||||||
|
return Response(content=modified_playlist, media_type='application/vnd.apple.mpegurl')
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Failed to fetch M3U8 file: {e}")
|
print(f"Failed to fetch M3U8 file: {e}")
|
||||||
raise HTTPException(status_code=404, detail="M3U8 content not found")
|
raise HTTPException(status_code=404, detail="M3U8 content not found")
|
||||||
|
|
||||||
|
@router.api_route("/clony/{segment:path}", methods=["GET", "HEAD"])
|
||||||
|
async def clony_m3u8(segment: str, request: Request):
|
||||||
|
base_url = "https://vixcloud.co/playlist/"
|
||||||
|
full_url = f"{base_url}{segment}?{request.query_params}"
|
||||||
|
m3u8_content = await fetch_m3u8(full_url)
|
||||||
|
return Response(content=m3u8_content, media_type='application/vnd.apple.mpegurl')
|
||||||
|
|||||||
Reference in New Issue
Block a user