Spaces:
Paused
Paused
| import re | |
| import time | |
| import pymongo | |
| import motor.motor_asyncio | |
| from bson.objectid import ObjectId | |
| from bson.errors import InvalidId | |
| from bson.json_util import dumps | |
| from pymongo.errors import PyMongoError | |
| class PUBLICFilesDB: | |
| def __init__(self, uri, database_name): | |
| self._client = motor.motor_asyncio.AsyncIOMotorClient(uri) | |
| self.db = self._client[database_name] | |
| self.files = self.db.Public_Files | |
| async def GetSeriesAllBy10(self, offset=None): | |
| try: | |
| filter = {"type": "TVSeries"} # Define the filter for movies | |
| total_results = await self.files.count_documents(filter) | |
| offset=int( offset if offset else 0) | |
| next_offset = offset + 10 | |
| if next_offset >= total_results: # Changed > to >= to handle the last page correctly | |
| next_offset = '' | |
| cursor = self.files.find(filter) # Apply the filter | |
| cursor.sort('$natural', pymongo.DESCENDING) # Use pymongo.DESCENDING | |
| cursor.skip(offset).limit(10) | |
| files = await cursor.to_list(length=10) | |
| return files, next_offset | |
| except PyMongoError as e: | |
| print(f"MongoDB error: {e}") | |
| return [], '' # Return empty list and '' on error | |
| except Exception as e: | |
| print(f"An unexpected error occurred: {e}") | |
| return [], '' | |
| async def GetMoviesAllBy10(self, offset=None): | |
| try: | |
| filter = {"type": "Movie"} # Define the filter for movies | |
| total_results = await self.files.count_documents(filter) | |
| offset=int( offset if offset else 0) | |
| next_offset = offset + 10 | |
| if next_offset >= total_results: # Changed > to >= to handle the last page correctly | |
| next_offset = '' | |
| cursor = self.files.find(filter) # Apply the filter | |
| cursor.sort('$natural', pymongo.DESCENDING) # Use pymongo.DESCENDING | |
| cursor.skip(offset).limit(10) | |
| files = await cursor.to_list(length=10) | |
| return files, next_offset | |
| except PyMongoError as e: | |
| print(f"MongoDB error: {e}") | |
| return [], '' # Return empty list and '' on error | |
| except Exception as e: | |
| print(f"An unexpected error occurred: {e}") | |
| return [], '' | |
| async def GetLatestAllBy10(self, offset=None): | |
| try: | |
| total_results = await self.files.count_documents({}) | |
| offset=int( offset if offset else 0) | |
| next_offset = offset + 10 | |
| if next_offset >= total_results: # Changed > to >= to handle the last page correctly | |
| next_offset = '' | |
| cursor = self.files.find({}, {"_id": 1, "poster": 1, "title": 1, "release_date": 1, "description": 1, "genre": 1, "IMDB_id": 1, "type": 1, "file": 1}) # Apply the filter with projection | |
| cursor.sort('$natural', pymongo.DESCENDING ) # Use pymongo.DESCENDING | |
| cursor.skip(offset).limit(10) | |
| files = await cursor.to_list(length=10) | |
| return files, next_offset | |
| except PyMongoError as e: | |
| print(f"MongoDB error: {e}") | |
| return [], '' # Return empty list and '' on error | |
| except Exception as e: | |
| print(f"An unexpected error occurred: {e}") | |
| return [], '' | |