teleapi / Unused Codes /listings.py
privateone's picture
Slight Edit
6026e10
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
CORS_HEADERS = {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Headers": "*"
}
# API endpoint to list 10 files (pagination optimization)
async def list_10_all_files_db(request):
db = Database(Telegram.DATABASE_URL, Telegram.SESSION_NAME)
files, total_files = await db.find_all_files([1, 10])
return web.json_response([dict(file) async for file in files], headers=CORS_HEADERS)
# API endpoint to list all files in database
async def list_all_files_db(request):
db = Database(Telegram.DATABASE_URL, Telegram.SESSION_NAME)
files = await db.get_all_files_api() # Ensure `get_all_files_api` is optimized for performance
return web.json_response(json.loads(dumps(files)), headers=CORS_HEADERS)
# API endpoint to list all TMDB movies related to files in the database
async def list_all_tmdb_movies_from_db(request):
db = Database(Telegram.DATABASE_URL, Telegram.SESSION_NAME)
files = await db.get_all_files()
response = []
for row in files:
try:
resp = search_tmdb_movies(str(row['file']['caption']) if row['file']['caption'] else str(row['file']['file_name']))
if resp:
response.append(resp)
except Exception as e:
logging.error(f"Error while fetching TMDB movie for {row['file']['caption']}: {e}")
return web.json_response(json.loads(dumps(response)), headers=CORS_HEADERS)
# API endpoint to list all TMDB TV shows related to files in the database
async def list_all_tmdb_tv_from_db(request):
db = Database(Telegram.DATABASE_URL, Telegram.SESSION_NAME)
files = await db.get_all_files()
response = []
for row in files:
try:
resp = search_tmdb_tv(str(row['file']['caption']) if row['file']['caption'] else str(row['file']['file_name']))
if resp:
response.append(resp)
except Exception as e:
logging.error(f"Error while fetching TMDB TV show for {row['file']['caption']}: {e}")
return web.json_response(json.loads(dumps(response)), headers=CORS_HEADERS)
# API endpoint to list all TMDB results, streaming them to the client
async def list_all_files_tmdb(request):
db = Database(Telegram.DATABASE_URL, Telegram.SESSION_NAME)
files = await db.get_all_files()
async def data_generator():
for row in files:
try:
resp = search_tmdb_any(str(row['file']['caption']) if row['file']['caption'] else str(row['file']['file_name']))
if resp:
yield json.dumps(resp) + '\n' # Streaming data to client in chunks
except Exception as e:
logging.error(f"Error while fetching TMDB data for {row['file']['caption']}: {e}")
return web.Response(body=data_generator(), content_type='application/json', headers=CORS_HEADERS)
# API endpoint to list all files for a simple response
async def list_all_files(request):
db = Database(Telegram.DATABASE_URL, Telegram.SESSION_NAME)
files = await db.get_all_files_api()
resp = [{
"adult": False,
"backdrop_path": "/c1bz69r0v065TGFA5nqBiKzPDys.jpg",
"genre_ids": [35, 10751, 10402],
"id": f"{row['_id']}",
"original_language": "en-hi",
"original_title": f"{str(row['file']['caption'])}",
"overview": "XRepo Movies",
"popularity": 1710.176,
"poster_path": "/irIS5Tn3TXjNi1R9BpWvGAN4CZ1.jpg",
"release_date": "2022-10-07",
"title": f"{str(row['file']['caption'])}",
"link": f"{Server.URL}api/dl/{row['_id']}",
"vote_average": 7.8,
"vote_count": 122,
} for row in files]
return web.json_response(json.loads(dumps(resp)), headers=CORS_HEADERS)