new version

This commit is contained in:
UrloMythus
2026-04-15 19:23:14 +02:00
parent 5120b19d0b
commit 8134936d59
135 changed files with 3013 additions and 1589 deletions
+28 -33
View File
@@ -12,23 +12,17 @@ from starlette.staticfiles import StaticFiles
from mediaflow_proxy.configs import settings
from mediaflow_proxy.middleware import UIAccessControlMiddleware
from mediaflow_proxy.routes import (
proxy_router,
extractor_router,
speedtest_router,
playlist_builder_router,
xtream_root_router,
acestream_router,
telegram_router,
)
from mediaflow_proxy.routes.proxy import proxy_router
from mediaflow_proxy.routes.epg import epg_router
from mediaflow_proxy.routes.extractor import extractor_router
from mediaflow_proxy.routes.speedtest import speedtest_router
from mediaflow_proxy.routes.playlist_builder import playlist_builder_router
from mediaflow_proxy.routes.xtream import xtream_root_router
from mediaflow_proxy.schemas import GenerateUrlRequest, GenerateMultiUrlRequest, MultiUrlRequestItem
from mediaflow_proxy.utils.crypto_utils import EncryptionHandler, EncryptionMiddleware
from mediaflow_proxy.utils import redis_utils
from mediaflow_proxy.utils.http_utils import encode_mediaflow_proxy_url
from mediaflow_proxy.utils.base64_utils import encode_url_to_base64, decode_base64_url, is_base64_url
from mediaflow_proxy.utils.acestream import acestream_manager
from mediaflow_proxy.remuxer.video_transcoder import get_hw_capability, HWAccelType
from mediaflow_proxy.utils.telegram import telegram_manager
logging.basicConfig(level=settings.log_level, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s")
logger = logging.getLogger(__name__)
@@ -61,30 +55,22 @@ async def lifespan(app: FastAPI):
# use redis-cli KEYS "mfp:*" | xargs redis-cli DEL
logger.info("Cache clearing note: Redis entries will expire via TTL")
# Log transcoding capability
hw = get_hw_capability()
if hw.accel_type != HWAccelType.NONE and settings.transcode_prefer_gpu:
logger.info(
"Transcode ready: GPU %s (encoder=%s) | PyAV pipeline",
hw.accel_type.value,
hw.h264_encoder,
)
else:
logger.info(
"Transcode ready: CPU (%s) | PyAV pipeline",
hw.h264_encoder,
)
yield
# Shutdown
logger.info("Shutting down...")
# Close acestream sessions
await acestream_manager.close()
logger.info("Acestream manager closed")
if settings.enable_acestream:
from mediaflow_proxy.utils.acestream import acestream_manager
await acestream_manager.close()
logger.info("Acestream manager closed")
# Close telegram session
await telegram_manager.close()
logger.info("Telegram manager closed")
if settings.enable_telegram:
from mediaflow_proxy.utils.telegram import telegram_manager
await telegram_manager.close()
logger.info("Telegram manager closed")
# Close Redis connections
await redis_utils.close_redis()
logger.info("Redis connections closed")
@@ -318,8 +304,15 @@ async def check_base64_url(url: str):
app.include_router(proxy_router, prefix="/proxy", tags=["proxy"], dependencies=[Depends(verify_api_key)])
app.include_router(acestream_router, prefix="/proxy", tags=["acestream"], dependencies=[Depends(verify_api_key)])
app.include_router(telegram_router, prefix="/proxy", tags=["telegram"], dependencies=[Depends(verify_api_key)])
app.include_router(epg_router, prefix="/proxy", tags=["epg"], dependencies=[Depends(verify_api_key)])
if settings.enable_acestream:
from mediaflow_proxy.routes.acestream import acestream_router
app.include_router(acestream_router, prefix="/proxy", tags=["acestream"], dependencies=[Depends(verify_api_key)])
if settings.enable_telegram:
from mediaflow_proxy.routes.telegram import telegram_router
app.include_router(telegram_router, prefix="/proxy", tags=["telegram"], dependencies=[Depends(verify_api_key)])
app.include_router(extractor_router, prefix="/extractor", tags=["extractors"], dependencies=[Depends(verify_api_key)])
app.include_router(speedtest_router, prefix="/speedtest", tags=["speedtest"], dependencies=[Depends(verify_api_key)])
app.include_router(playlist_builder_router, prefix="/playlist", tags=["playlist"])
@@ -331,9 +324,11 @@ app.mount("/", StaticFiles(directory=str(static_path), html=True), name="static"
def run():
import os
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8888, log_level="info", workers=3)
port = int(os.environ.get("PORT", "8888"))
uvicorn.run(app, host="0.0.0.0", port=port, log_level="info", workers=3)
if __name__ == "__main__":