Spaces:
Running
Running
BinaryONe
commited on
Commit
·
bf84dca
1
Parent(s):
ea43231
AllFilesDB
Browse files
FileStream/DBFiles/database.py
CHANGED
@@ -14,6 +14,27 @@ class PUBLICFilesDB:
|
|
14 |
self.db = self._client[database_name]
|
15 |
self.files = self.db.Public_Files
|
16 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
async def GetMoviesAllBy10(self, offset=None):
|
18 |
try:
|
19 |
filter = {"type": "Movie"} # Define the filter for movies
|
@@ -35,3 +56,24 @@ class PUBLICFilesDB:
|
|
35 |
print(f"An unexpected error occurred: {e}")
|
36 |
return [], ''
|
37 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
14 |
self.db = self._client[database_name]
|
15 |
self.files = self.db.Public_Files
|
16 |
|
17 |
+
async def GetSeriesAllBy10(self, offset=None):
|
18 |
+
try:
|
19 |
+
filter = {"type": "TVSeries"} # Define the filter for movies
|
20 |
+
total_results = await self.files.count_documents(filter)
|
21 |
+
offset=int( offset if offset else 0)
|
22 |
+
next_offset = offset + 10
|
23 |
+
if next_offset >= total_results: # Changed > to >= to handle the last page correctly
|
24 |
+
next_offset = ''
|
25 |
+
cursor = self.files.find(filter) # Apply the filter
|
26 |
+
cursor.sort('$natural', pymongo.DESCENDING) # Use pymongo.DESCENDING
|
27 |
+
cursor.skip(offset).limit(10)
|
28 |
+
files = await cursor.to_list(length=10)
|
29 |
+
return files, next_offset
|
30 |
+
|
31 |
+
except PyMongoError as e:
|
32 |
+
print(f"MongoDB error: {e}")
|
33 |
+
return [], '' # Return empty list and '' on error
|
34 |
+
except Exception as e:
|
35 |
+
print(f"An unexpected error occurred: {e}")
|
36 |
+
return [], ''
|
37 |
+
|
38 |
async def GetMoviesAllBy10(self, offset=None):
|
39 |
try:
|
40 |
filter = {"type": "Movie"} # Define the filter for movies
|
|
|
56 |
print(f"An unexpected error occurred: {e}")
|
57 |
return [], ''
|
58 |
|
59 |
+
async def GetLatestAllBy10(self, offset=None):
|
60 |
+
try:
|
61 |
+
total_results = await self.files.count_documents()
|
62 |
+
offset=int( offset if offset else 0)
|
63 |
+
next_offset = offset + 10
|
64 |
+
if next_offset >= total_results: # Changed > to >= to handle the last page correctly
|
65 |
+
next_offset = ''
|
66 |
+
cursor = self.files.find() # Apply the filter
|
67 |
+
cursor.sort('$natural', pymongo.ASCENDING ) # Use pymongo.DESCENDING
|
68 |
+
cursor.skip(offset).limit(10)
|
69 |
+
files = await cursor.to_list(length=10)
|
70 |
+
return files, next_offset
|
71 |
+
|
72 |
+
except PyMongoError as e:
|
73 |
+
print(f"MongoDB error: {e}")
|
74 |
+
return [], '' # Return empty list and '' on error
|
75 |
+
except Exception as e:
|
76 |
+
print(f"An unexpected error occurred: {e}")
|
77 |
+
return [], ''
|
78 |
+
|
79 |
+
|
FileStream/bot/__init__.py
CHANGED
@@ -7,7 +7,15 @@ if Telegram.SECONDARY:
|
|
7 |
no_updates = True
|
8 |
else:
|
9 |
plugins = dict(root="FileStream/bot/plugins")
|
10 |
-
no_updates =
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
|
12 |
FileStream = Client(name="FileStream",
|
13 |
api_id=Telegram.API_ID,
|
@@ -17,7 +25,8 @@ FileStream = Client(name="FileStream",
|
|
17 |
bot_token=Telegram.BOT_TOKEN,
|
18 |
sleep_threshold=Telegram.SLEEP_THRESHOLD,
|
19 |
workers=Telegram.WORKERS,
|
20 |
-
no_updates=no_updates
|
|
|
21 |
|
22 |
|
23 |
WORK_LOADS = {}
|
|
|
7 |
no_updates = True
|
8 |
else:
|
9 |
plugins = dict(root="FileStream/bot/plugins")
|
10 |
+
no_updates = False
|
11 |
+
|
12 |
+
# Create a custom session object with the sqlite.cloud connection string
|
13 |
+
session = Session(
|
14 |
+
session_name="FileStream",
|
15 |
+
api_id=Telegram.API_ID,
|
16 |
+
api_hash=Telegram.API_HASH,
|
17 |
+
db_uri="sqlitecloud://cgz1np12hz.g1.sqlite.cloud:8860/FileStream?apikey=NnfEaSHjnV1jpSUMlRMzm3agsn5jUb0dymlnCUXS2k8", # Set the custom database URI
|
18 |
+
)
|
19 |
|
20 |
FileStream = Client(name="FileStream",
|
21 |
api_id=Telegram.API_ID,
|
|
|
25 |
bot_token=Telegram.BOT_TOKEN,
|
26 |
sleep_threshold=Telegram.SLEEP_THRESHOLD,
|
27 |
workers=Telegram.WORKERS,
|
28 |
+
no_updates=no_updates,
|
29 |
+
session=session)
|
30 |
|
31 |
|
32 |
WORK_LOADS = {}
|
FileStream/server/API/__init__.py
CHANGED
@@ -28,9 +28,9 @@ cors = aiohttp_cors.setup(api, defaults={"*": aiohttp_cors.ResourceOptions(
|
|
28 |
cors.add(api.router.add_get('/', handle_v2)) #Basic Reponse
|
29 |
api.router.add_get('/search', SearchAll) #serch API
|
30 |
api.router.add_get('/movies', AllMovies10) #Movies
|
31 |
-
|
32 |
-
|
33 |
-
#api.router.add_get('/details', Details)
|
34 |
|
35 |
#----------------------------------------------------------------
|
36 |
#api.router.add_get('/files', list_all_files_db)
|
|
|
28 |
cors.add(api.router.add_get('/', handle_v2)) #Basic Reponse
|
29 |
api.router.add_get('/search', SearchAll) #serch API
|
30 |
api.router.add_get('/movies', AllMovies10) #Movies
|
31 |
+
api.router.add_get('/series', AllSeries10) #Webseries
|
32 |
+
api.router.add_get('/trending', Leatest10) #trending
|
33 |
+
#api.router.add_get('/details', Details) #details
|
34 |
|
35 |
#----------------------------------------------------------------
|
36 |
#api.router.add_get('/files', list_all_files_db)
|
FileStream/server/API/downloads.py
CHANGED
@@ -25,18 +25,14 @@ async def stream_handler(request: web.Request):
|
|
25 |
try:
|
26 |
path = request.match_info["path"]
|
27 |
return await media_streamer(request, path, "FAST")
|
28 |
-
|
29 |
except InvalidHash as e:
|
30 |
-
|
31 |
raise web.HTTPForbidden(text=e.message)
|
32 |
-
|
33 |
except FIleNotFound as e:
|
34 |
raise web.HTTPNotFound(text=e.message)
|
35 |
-
|
36 |
except (AttributeError, BadStatusLine, ConnectionResetError):
|
37 |
pass # Handle expected errors silently
|
38 |
-
|
39 |
except Exception as e:
|
40 |
logging.error(f"Error while streaming file: {str(e)}")
|
41 |
traceback.print_exc()
|
42 |
-
raise web.HTTPInternalServerError(text=str(e))
|
|
|
|
25 |
try:
|
26 |
path = request.match_info["path"]
|
27 |
return await media_streamer(request, path, "FAST")
|
|
|
28 |
except InvalidHash as e:
|
|
|
29 |
raise web.HTTPForbidden(text=e.message)
|
|
|
30 |
except FIleNotFound as e:
|
31 |
raise web.HTTPNotFound(text=e.message)
|
|
|
32 |
except (AttributeError, BadStatusLine, ConnectionResetError):
|
33 |
pass # Handle expected errors silently
|
|
|
34 |
except Exception as e:
|
35 |
logging.error(f"Error while streaming file: {str(e)}")
|
36 |
traceback.print_exc()
|
37 |
+
raise web.HTTPInternalServerError(text=str(e))
|
38 |
+
|
FileStream/server/API/listings.py
CHANGED
@@ -33,7 +33,43 @@ async def AllMovies10(request: web.Request):
|
|
33 |
})
|
34 |
return web.json_response({"count": len(results), "results": results, "next_offset": next_offset}) # Correct JSON response format
|
35 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
36 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
37 |
|
38 |
|
39 |
|
|
|
33 |
})
|
34 |
return web.json_response({"count": len(results), "results": results, "next_offset": next_offset}) # Correct JSON response format
|
35 |
|
36 |
+
async def AllSeries10(request: web.Request):
|
37 |
+
offset = request.rel_url.query.get('offset', 0) if request.rel_url.query.get('offset' ,0) else 0
|
38 |
+
results=[]
|
39 |
+
files, next_offset = await db.GetSeriesAllBy10(offset=offset)
|
40 |
+
for file in files:
|
41 |
+
results.append({
|
42 |
+
"poster":file['poster'],
|
43 |
+
"title":file['title'],
|
44 |
+
"release_date":file['release_date'],
|
45 |
+
"genre":file['genre'],
|
46 |
+
"imdb_id":file['IMDB_id'],
|
47 |
+
"type":file['type'],
|
48 |
+
"file_name": file['file']['file_name'],
|
49 |
+
"document_file_id": file['file']['file_id'],
|
50 |
+
"caption": file['file']['file_name'] or "",
|
51 |
+
"description": f"Size: {humanbytes(file['file']['file_size'])}\nType: {file['file']['mime_type']}",
|
52 |
+
})
|
53 |
+
return web.json_response({"count": len(results), "results": results, "next_offset": next_offset}) # Correct JSON response format
|
54 |
|
55 |
+
async def Leatest10(request: web.Request):
|
56 |
+
offset = request.rel_url.query.get('offset', 0) if request.rel_url.query.get('offset' ,0) else 0
|
57 |
+
results=[]
|
58 |
+
files, next_offset = await db.GetLatestAllBy10(offset=offset)
|
59 |
+
for file in files:
|
60 |
+
results.append({
|
61 |
+
"poster":file['poster'],
|
62 |
+
"title":file['title'],
|
63 |
+
"release_date":file['release_date'],
|
64 |
+
"genre":file['genre'],
|
65 |
+
"imdb_id":file['IMDB_id'],
|
66 |
+
"type":file['type'],
|
67 |
+
"file_name": file['file']['file_name'],
|
68 |
+
"document_file_id": file['file']['file_id'],
|
69 |
+
"caption": file['file']['file_name'] or "",
|
70 |
+
"description": f"Size: {humanbytes(file['file']['file_size'])}\nType: {file['file']['mime_type']}",
|
71 |
+
})
|
72 |
+
return web.json_response({"count": len(results), "results": results, "next_offset": next_offset}) # Correct JSON response format
|
73 |
|
74 |
|
75 |
|