Spaces:
Running
Running
| 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.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)) |