|
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.TMDB.Endpoint import search_tmdb_any, search_tmdb_tv, search_tmdb_movies |
|
|
|
|
|
|
|
|
|
CORS_HEADERS = { |
|
"Access-Control-Allow-Origin": "*", |
|
"Access-Control-Allow-Headers": "*" |
|
} |
|
|
|
|
|
|
|
|
|
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) |
|
|
|
|
|
async def list_all_files_db(request): |
|
db = Database(Telegram.DATABASE_URL, Telegram.SESSION_NAME) |
|
files = await db.get_all_files_api() |
|
return web.json_response(json.loads(dumps(files)), headers=CORS_HEADERS) |
|
|
|
|
|
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) |
|
|
|
|
|
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) |
|
|
|
|
|
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' |
|
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) |
|
|
|
|
|
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) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|