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 = None
 
 
 
 
 
 
 
 
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
- #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)
 
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