MyanmarSwe commited on
Commit
529fbc0
Β·
verified Β·
1 Parent(s): 334e816

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +40 -14
main.py CHANGED
@@ -1,5 +1,4 @@
1
  import os
2
- from datetime import datetime
3
  from fastapi import FastAPI, Request
4
  from fastapi.middleware.cors import CORSMiddleware
5
  from pymongo import MongoClient, DESCENDING
@@ -12,6 +11,10 @@ client = MongoClient(os.environ.get("MONGODB_URI"))
12
  db = client['myanmarswe_cinema']
13
  metas_col, streams_col, users_col = db['metas'], db['streams'], db['users']
14
 
 
 
 
 
15
  def is_user_valid(key):
16
  user = users_col.find_one({"key": key})
17
  return user and user.get("status") == "active"
@@ -26,15 +29,29 @@ def manifest(user_key: str):
26
  valid = is_user_valid(user_key)
27
  return {
28
  "id": "com.myanmarswe.pro",
29
- "version": "2.7.0",
30
  "name": f"MSwe Cinema {'πŸ’Ž' if valid else '⚠️'}",
31
  "resources": ["catalog", "meta", "stream"],
32
  "types": ["movie", "series"],
33
  "idPrefixes": ["tmdb:", "tmdb_col:"],
34
  "catalogs": [
35
- {"type": "movie", "id": "mswe_m", "name": "Latest Movies", "extra": [{"name": "search"}]},
36
- {"type": "series", "id": "mswe_s", "name": "Latest TV Shows", "extra": [{"name": "search"}]},
37
- {"type": "series", "id": "mswe_col", "name": "Collections"}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38
  ]
39
  }
40
 
@@ -42,16 +59,22 @@ def manifest(user_key: str):
42
  @app.get("/{user_key}/catalog/{m_type}/{cat_id}/{extra}.json")
43
  def catalog(user_key: str, m_type: str, cat_id: str, extra: str = None):
44
  if not is_user_valid(user_key): return {"metas": []}
45
- query = {}
46
- if extra and "search=" in extra:
47
- query["name"] = {"$regex": extra.replace("search=", ""), "$options": "i"}
48
 
 
49
  if cat_id == "mswe_col":
50
  query["id"] = {"$regex": "^tmdb_col:"}
51
  else:
52
  query["type"] = m_type
53
  if "id" not in query: query["id"] = {"$regex": "^tmdb:"}
54
 
 
 
 
 
 
 
 
 
55
  cursor = metas_col.find(query).sort("updated_at", DESCENDING).limit(100)
56
 
57
  metas_list = []
@@ -61,10 +84,10 @@ def catalog(user_key: str, m_type: str, cat_id: str, extra: str = None):
61
  "type": m.get("type", m_type),
62
  "name": m.get("name"),
63
  "poster": m.get("poster"),
64
- "logo": m.get("logo"), # Logo α€•α€«α€α€„α€Ία€‘α€±α€¬α€„α€Ία€‘α€Šα€·α€Ία€‘α€¬α€Έα€žα€Šα€Ί
65
  "description": m.get("description"),
66
  "genres": m.get("genres", []),
67
- "releaseInfo": m.get("releaseInfo", m.get("year", "")),
68
  "imdbRating": m.get("imdbRating"),
69
  "runtime": m.get("runtime")
70
  })
@@ -75,12 +98,15 @@ def meta(user_key: str, m_type: str, meta_id: str):
75
  if not is_user_valid(user_key): return {"meta": {}}
76
  m = metas_col.find_one({"id": meta_id})
77
  if not m: return {"meta": {}}
78
- m.pop("_id", None)
79
 
80
- # Cast, Director များကို List string ထဖြစ် α€žα€±α€α€»α€¬α€•α€Όα€±α€¬α€„α€Ία€Έα€•α€±α€Έα€α€Όα€„α€Ία€Έ
81
- if "cast" in m: m["cast"] = list(m["cast"]) if isinstance(m["cast"], (list, set)) else []
82
- if "director" in m: m["director"] = list(m["director"]) if isinstance(m["director"], (list, set)) else []
83
 
 
 
 
 
 
 
84
  return {"meta": m}
85
 
86
  @app.get("/{user_key}/stream/{m_type}/{id}.json")
 
1
  import os
 
2
  from fastapi import FastAPI, Request
3
  from fastapi.middleware.cors import CORSMiddleware
4
  from pymongo import MongoClient, DESCENDING
 
11
  db = client['myanmarswe_cinema']
12
  metas_col, streams_col, users_col = db['metas'], db['streams'], db['users']
13
 
14
+ # Genre list များ (Manifest တွင် α€•α€Όα€žα€›α€”α€Ί)
15
+ MOVIE_GENRES = ["Action", "Adventure", "Animation", "Comedy", "Crime", "Documentary", "Drama", "Family", "Fantasy", "History", "Horror", "Music", "Mystery", "Romance", "Sci-Fi", "Thriller", "War"]
16
+ SERIES_GENRES = ["Action & Adventure", "Animation", "Comedy", "Crime", "Documentary", "Drama", "Family", "Kids", "Mystery", "News", "Reality", "Sci-Fi & Fantasy", "Soap", "Talk", "War & Politics"]
17
+
18
  def is_user_valid(key):
19
  user = users_col.find_one({"key": key})
20
  return user and user.get("status") == "active"
 
29
  valid = is_user_valid(user_key)
30
  return {
31
  "id": "com.myanmarswe.pro",
32
+ "version": "2.8.0",
33
  "name": f"MSwe Cinema {'πŸ’Ž' if valid else '⚠️'}",
34
  "resources": ["catalog", "meta", "stream"],
35
  "types": ["movie", "series"],
36
  "idPrefixes": ["tmdb:", "tmdb_col:"],
37
  "catalogs": [
38
+ {
39
+ "type": "movie",
40
+ "id": "mswe_m",
41
+ "name": "Latest Movies",
42
+ "extra": [{"name": "search"}, {"name": "genre", "options": MOVIE_GENRES}]
43
+ },
44
+ {
45
+ "type": "series",
46
+ "id": "mswe_s",
47
+ "name": "Latest TV Shows",
48
+ "extra": [{"name": "search"}, {"name": "genre", "options": SERIES_GENRES}]
49
+ },
50
+ {
51
+ "type": "series",
52
+ "id": "mswe_col",
53
+ "name": "Collections"
54
+ }
55
  ]
56
  }
57
 
 
59
  @app.get("/{user_key}/catalog/{m_type}/{cat_id}/{extra}.json")
60
  def catalog(user_key: str, m_type: str, cat_id: str, extra: str = None):
61
  if not is_user_valid(user_key): return {"metas": []}
 
 
 
62
 
63
+ query = {}
64
  if cat_id == "mswe_col":
65
  query["id"] = {"$regex": "^tmdb_col:"}
66
  else:
67
  query["type"] = m_type
68
  if "id" not in query: query["id"] = {"$regex": "^tmdb:"}
69
 
70
+ # Genre နှင့် Search Filter α€€α€­α€― α€€α€­α€―α€„α€Ία€α€½α€šα€Ία€α€Όα€„α€Ία€Έ
71
+ if extra:
72
+ params = dict(x.split('=') for x in extra.split('&') if '=' in x)
73
+ if "search" in params:
74
+ query["name"] = {"$regex": params["search"], "$options": "i"}
75
+ if "genre" in params:
76
+ query["genres"] = params["genre"]
77
+
78
  cursor = metas_col.find(query).sort("updated_at", DESCENDING).limit(100)
79
 
80
  metas_list = []
 
84
  "type": m.get("type", m_type),
85
  "name": m.get("name"),
86
  "poster": m.get("poster"),
87
+ "logo": m.get("logo"), # Logo α€›α€Ύα€­α€œα€»α€Ύα€„α€Ί Stremio α€™α€Ύ α€…α€¬α€žα€¬α€Έα€‘α€…α€¬α€Έ Logo α€•α€Όα€•α€±α€Έα€™α€Šα€Ί
88
  "description": m.get("description"),
89
  "genres": m.get("genres", []),
90
+ "releaseInfo": str(m.get("releaseInfo", m.get("year", ""))),
91
  "imdbRating": m.get("imdbRating"),
92
  "runtime": m.get("runtime")
93
  })
 
98
  if not is_user_valid(user_key): return {"meta": {}}
99
  m = metas_col.find_one({"id": meta_id})
100
  if not m: return {"meta": {}}
 
101
 
102
+ m.pop("_id", None)
 
 
103
 
104
+ # Cast နှင့် Director α€€α€­α€― String List ဖြစ်ထောင် α€žα€±α€α€»α€¬α€•α€Όα€”α€Ία€•α€Όα€„α€Ία€•α€±α€Έα€α€Όα€„α€Ία€Έ
105
+ if "cast" in m:
106
+ m["cast"] = [str(x) for x in m["cast"] if x]
107
+ if "director" in m:
108
+ m["director"] = [str(x) for x in m["director"] if x]
109
+
110
  return {"meta": m}
111
 
112
  @app.get("/{user_key}/stream/{m_type}/{id}.json")