|
|
|
import os |
|
import json |
|
import logging |
|
import asyncio |
|
import traceback |
|
import aiohttp_cors |
|
from aiohttp import web |
|
from pyrogram import raw |
|
from bson import ObjectId |
|
from bson.json_util import dumps |
|
from aiohttp.http_exceptions import BadStatusLine |
|
|
|
|
|
from FileStream.bot import req_client |
|
from ..Functions import media_streamer |
|
from FileStream.Database import Database |
|
from FileStream.config import Telegram, Server |
|
from FileStream.Exceptions import FileNotFound, InvalidHash |
|
from FileStream.APIs.TMDB.Endpoint import search_tmdb_any, search_tmdb_tv, search_tmdb_movies |
|
|
|
|
|
|
|
async def stream_handler(request: web.Request): |
|
try: |
|
path = request.match_info["path"] |
|
return await media_streamer(request, path, "FAST") |
|
|
|
except InvalidHash as e: |
|
|
|
raise web.HTTPForbidden(text=e.message) |
|
|
|
except FIleNotFound as e: |
|
raise web.HTTPNotFound(text=e.message) |
|
|
|
except (AttributeError, BadStatusLine, ConnectionResetError): |
|
pass |
|
|
|
except Exception as e: |
|
logging.error(f"Error while streaming file: {str(e)}") |
|
traceback.print_exc() |
|
raise web.HTTPInternalServerError(text=str(e)) |