MyanmarSwe commited on
Commit
c9abf24
·
verified ·
1 Parent(s): dae5709

Update sync.py

Browse files
Files changed (1) hide show
  1. sync.py +18 -31
sync.py CHANGED
@@ -22,23 +22,17 @@ def get_tmdb_meta(tmdb_id, m_type):
22
  target_logo = en_logos[0] if en_logos else logos[0]
23
  logo = f"https://image.tmdb.org/t/p/w500{target_logo['file_path']}"
24
 
25
- # Cast နှင့် Director ရယူခြင်း (Safe Parsing)
26
- credits = res.get("credits") or {}
27
- cast_list = credits.get("cast") or []
28
- cast = [c.get("name") for c in cast_list[:15] if c.get("name")]
29
 
30
  director = []
31
  if m_type == "movie":
32
- crew_list = credits.get("crew") or []
33
- director = [c.get("name") for c in crew_list if c.get("job") == "Director" and c.get("name")]
34
  else:
35
- created_by = res.get("created_by") or []
36
- director = [c.get("name") for c in created_by if c.get("name")]
37
- if not director: # Creator မရှိလျှင် Executive Producer ကို ရှာသည်
38
- crew_list = credits.get("crew") or []
39
- director = [c.get("name") for c in crew_list if c.get("job") == "Executive Producer" and c.get("name")][:2]
40
-
41
- print(f"Syncing: {res.get('title') or res.get('name')} | Cast Count: {len(cast)} | Director Count: {len(director)}")
42
 
43
  genres = [g["name"] for g in res.get("genres", [])]
44
  vote_avg = res.get("vote_average")
@@ -60,22 +54,20 @@ def get_tmdb_meta(tmdb_id, m_type):
60
  "updated_at": datetime.utcnow()
61
  }
62
 
63
- # TV Series အပိုင်းများ (Videos) ကို ရယူခြင်း
64
  if m_type == "series":
65
  videos = []
66
  for s in res.get("seasons", []):
67
  s_num = s.get("season_number")
68
- if s_num == 0: continue # Specials များကို ချန်လှပ်သည်
69
 
70
  s_url = f"https://api.themoviedb.org/3/tv/{tmdb_id}/season/{s_num}?api_key={TMDB_KEY}"
71
  s_res = requests.get(s_url).json()
72
 
73
  for ep in s_res.get("episodes", []):
74
- e_num = ep.get("episode_number")
75
  videos.append({
76
- "id": f"tmdb:{tmdb_id}:{s_num}:{e_num}",
77
- "title": ep.get("name") or f"S{s_num} E{e_num}",
78
- "season": s_num, "episode": e_num,
79
  "thumbnail": f"https://image.tmdb.org/t/p/w500{ep.get('still_path')}" if ep.get('still_path') else meta["poster"],
80
  "overview": ep.get("overview", "")
81
  })
@@ -83,11 +75,11 @@ def get_tmdb_meta(tmdb_id, m_type):
83
 
84
  return meta
85
  except Exception as e:
86
- print(f"TMDB Fetch Error for {tmdb_id}: {e}")
87
  return None
88
 
89
-
90
  def process_sync(data):
 
91
  if "users" in data:
92
  users_col.delete_many({})
93
  users_col.insert_many(data["users"])
@@ -100,33 +92,28 @@ def process_sync(data):
100
  meta_id = f"tmdb:{t_id}"
101
 
102
  if meta_id not in processed_metas:
 
103
  new_meta = get_tmdb_meta(t_id, m_type)
104
  if new_meta:
105
- # 1. Custom overview ကို Sheet မှ ဦးစားပယူမည်
106
  custom_ov = item.get('custom_overview')
107
  if custom_ov and str(custom_ov).strip():
108
  new_meta['description'] = str(custom_ov).strip()
109
  new_meta['is_custom_overview'] = True
110
  else:
111
- # 2. မပါလျှင် Database ထဲကဟောင်ကိ ပြန်သုံးမည်
112
  existing = metas_col.find_one({"id": meta_id})
113
  if existing and existing.get('is_custom_overview'):
114
  new_meta['description'] = existing['description']
115
  new_meta['is_custom_overview'] = True
116
 
117
  processed_metas[meta_id] = new_meta
118
- else:
119
- # Batch ထဲမှာပါပြီးသားဆိုရင်တောင် ဒီ row မှာ Custom Overview ပါရင် ထည့်ပေးမည်
120
- custom_ov = item.get('custom_overview')
121
- if custom_ov and str(custom_ov).strip():
122
- processed_metas[meta_id]['description'] = str(custom_ov).strip()
123
- processed_metas[meta_id]['is_custom_overview'] = True
124
 
125
- # Stream link းဆည်းခြင်း
126
  s_query = {"tmdb_id": t_id, "season": item.get('season'), "episode": item.get('episode')}
127
  streams_col.update_one(s_query, {"$set": {**s_query, "url": item['stream_url']}}, upsert=True)
128
 
129
- # Meta data အားလုံးကို Update လုပ်ခြင်း
130
  for m_id, m_data in processed_metas.items():
131
  metas_col.update_one({"id": m_id}, {"$set": m_data}, upsert=True)
132
 
 
22
  target_logo = en_logos[0] if en_logos else logos[0]
23
  logo = f"https://image.tmdb.org/t/p/w500{target_logo['file_path']}"
24
 
25
+ # Cast နှင့် Director ရယူခြင်း (Stremio format အတိုင်း String List ပြုလုပ်ခြင်း)
26
+ credits = res.get("credits", {})
27
+ cast = [c["name"] for c in credits.get("cast", [])[:10]] # ထိပ်ဆုံး ၁၀ ယောက်
 
28
 
29
  director = []
30
  if m_type == "movie":
31
+ director = [c["name"] for c in credits.get("crew", []) if c.get("job") == "Director"]
 
32
  else:
33
+ director = [c["name"] for c in res.get("created_by", [])]
34
+ if not director: # Creator မရှိလျှင် Executive Producer ကို ယူသည်
35
+ director = [c["name"] for c in credits.get("crew", []) if c.get("job") == "Executive Producer"][:2]
 
 
 
 
36
 
37
  genres = [g["name"] for g in res.get("genres", [])]
38
  vote_avg = res.get("vote_average")
 
54
  "updated_at": datetime.utcnow()
55
  }
56
 
 
57
  if m_type == "series":
58
  videos = []
59
  for s in res.get("seasons", []):
60
  s_num = s.get("season_number")
61
+ if s_num == 0: continue
62
 
63
  s_url = f"https://api.themoviedb.org/3/tv/{tmdb_id}/season/{s_num}?api_key={TMDB_KEY}"
64
  s_res = requests.get(s_url).json()
65
 
66
  for ep in s_res.get("episodes", []):
 
67
  videos.append({
68
+ "id": f"tmdb:{tmdb_id}:{s_num}:{ep['episode_number']}",
69
+ "title": ep.get("name") or f"S{s_num} E{ep['episode_number']}",
70
+ "season": s_num, "episode": ep['episode_number'],
71
  "thumbnail": f"https://image.tmdb.org/t/p/w500{ep.get('still_path')}" if ep.get('still_path') else meta["poster"],
72
  "overview": ep.get("overview", "")
73
  })
 
75
 
76
  return meta
77
  except Exception as e:
78
+ print(f"Error fetching TMDB {tmdb_id}: {e}")
79
  return None
80
 
 
81
  def process_sync(data):
82
+ # Sync Users
83
  if "users" in data:
84
  users_col.delete_many({})
85
  users_col.insert_many(data["users"])
 
92
  meta_id = f"tmdb:{t_id}"
93
 
94
  if meta_id not in processed_metas:
95
+ # 1. TMDB မှ data အရင်ယူမည်
96
  new_meta = get_tmdb_meta(t_id, m_type)
97
  if new_meta:
98
+ # 2. Custom Overview စစ်ဆေးခြင်း (Sheet ထဲမှ စာသားပါရင် အဲ့ဒါကို သုံးမည်)
99
  custom_ov = item.get('custom_overview')
100
  if custom_ov and str(custom_ov).strip():
101
  new_meta['description'] = str(custom_ov).strip()
102
  new_meta['is_custom_overview'] = True
103
  else:
104
+ # Sheet ထဲှာ မပါင် DB ထဲမှာင်က ရှခဲ့ဖူးတဲ့ Custom Overview ရှိလာ စစ်မည်
105
  existing = metas_col.find_one({"id": meta_id})
106
  if existing and existing.get('is_custom_overview'):
107
  new_meta['description'] = existing['description']
108
  new_meta['is_custom_overview'] = True
109
 
110
  processed_metas[meta_id] = new_meta
 
 
 
 
 
 
111
 
112
+ # Stream link ကု update လုပ်ခြင်း
113
  s_query = {"tmdb_id": t_id, "season": item.get('season'), "episode": item.get('episode')}
114
  streams_col.update_one(s_query, {"$set": {**s_query, "url": item['stream_url']}}, upsert=True)
115
 
116
+ # Meta data အားလုံးကို Database ထဲ သိမခြင်း
117
  for m_id, m_data in processed_metas.items():
118
  metas_col.update_one({"id": m_id}, {"$set": m_data}, upsert=True)
119