import os import json import logging import asyncio import traceback from aiohttp import web from pyrogram import raw from aiohttp.http_exceptions import BadStatusLine from FileStream.utils.FileProcessors.human_readable import humanbytes from FileStream.Database import Database from FileStream.config import Telegram, Server db = Database(Telegram.DATABASE_URL, Telegram.SESSION_NAME) async def SearchAll(request: web.Request): print(Telegram.DATABASE_URL, Telegram.SESSION_NAME) query = request.rel_url.query.get('query', '') # Extract 'query' from URL params #print(query, offset) # Debugging print results = [] offset = int(request.rel_url.query.get('offset') if request.rel_url.query.get('offset') else 0 ) # Convert offset to integer # Simulating a database function call (replace with actual implementation) files, next_offset = await db.get_search_results(query, file_type=None, max_results=10, offset=offset) for file in files: results.append({ "id":f"{file['_id']}", "poster":file['poster'], "title":file['title'], "release_date":file['release_date'], "genre":file['genre'], "imdb_id":file['IMDB_id'], "type":file['type'], "file_name": file['file']['file_name'], "document_file_id": file['file']['file_id'], "caption": file['file']['file_name'] or "", "description": f"Size: {humanbytes(file['file']['file_size'])}\nType: {file['file']['mime_type']}", }) return web.json_response({"count": len(results), "results": results, "next_offset": next_offset}) # Correct JSON response format