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 #---------------------Local Imports----------------------------------# 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 # Stream file handler with optimized error handling 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 # Handle expected errors silently except Exception as e: logging.error(f"Error while streaming file: {str(e)}") traceback.print_exc() raise web.HTTPInternalServerError(text=str(e))