jaynesmax commited on
Commit
696de60
Β·
verified Β·
1 Parent(s): a797649

Upload index.html

Browse files
Files changed (1) hide show
  1. index.html +35 -11
index.html CHANGED
@@ -1477,6 +1477,18 @@ const TRAILER_KEY = SUPABASE_ANON_KEY;
1477
  // movie-zilizotafsiriwa β€” mradi TOFAUTI (DJ movies/series), function ya umma pekee (GET)
1478
  const TRANSLATED_BASE = JM_CONFIG.TRANSLATED_URL + '/functions/v1/' + JM_CONFIG.TRANSLATED_FN;
1479
  const TRANSLATED_KEY = JM_CONFIG.TRANSLATED_KEY;
 
 
 
 
 
 
 
 
 
 
 
 
1480
  const PIXTVMAX_CATEGORY_SW = {
1481
  'Sports': 'cat_sports', 'Movie Channels': 'cat_movies', 'News': 'cat_news',
1482
  'Entertainment': 'cat_ent', 'Documentary': 'cat_doc', 'Religion': 'cat_religion',
@@ -3567,15 +3579,29 @@ async function loadLive() {
3567
 
3568
  // ── ZILIZOTAFSIRIWA (movies/series za DJ β€” mradi tofauti) ──
3569
  async function fetchTranslatedList() {
3570
- const r = await fetch(TRANSLATED_BASE + '?limit=100', { headers: { apikey: TRANSLATED_KEY } });
3571
- if (!r.ok) throw new Error(T('err_generic') + ' ' + r.status);
3572
- const d = await r.json();
3573
- if (!d.ok) throw new Error(d.error || 'Seva imekataa ombi.');
3574
- return (d.movies || []).map(m => ({
3575
- id: m.id, kind: 'translated', title: m.title,
3576
  poster: m.thumb_url || m.poster_url || null, imgFallbackOn: true,
3577
  subtitle: m.dj || (m.category === 'series' ? 'Series' : 'Movie'),
3578
- }));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3579
  }
3580
 
3581
  async function loadTranslated() {
@@ -3611,8 +3637,7 @@ async function openTranslatedDetailScreen(item) {
3611
  detailBody.innerHTML = stateBoxHTML(t('state_loading'));
3612
  fadeInScreen(detailBody);
3613
  try {
3614
- const r = await fetch(TRANSLATED_BASE + '?id=' + encodeURIComponent(item.id), { headers: { apikey: TRANSLATED_KEY } });
3615
- const d = await r.json();
3616
  if (!d.ok) throw new Error(d.error || 'Haipatikani');
3617
  const m = d.movie || {};
3618
  const vids = m.video_urls || {};
@@ -8908,8 +8933,7 @@ async function openTranslatedDownloadSheet(d){
8908
  // Pata orodha kamili ya sasa kutoka server (ikishindwa, tumia tuliyonayo tayari)
8909
  let vids = d.vids || {};
8910
  try {
8911
- const r = await fetch(TRANSLATED_BASE + '?id=' + encodeURIComponent(d.id), { headers: { apikey: TRANSLATED_KEY } });
8912
- const j = await r.json();
8913
  const fresh = j && j.movie && j.movie.video_urls;
8914
  if (fresh && Object.keys(fresh).length) vids = fresh;
8915
  } catch (_) {}
 
1477
  // movie-zilizotafsiriwa β€” mradi TOFAUTI (DJ movies/series), function ya umma pekee (GET)
1478
  const TRANSLATED_BASE = JM_CONFIG.TRANSLATED_URL + '/functions/v1/' + JM_CONFIG.TRANSLATED_FN;
1479
  const TRANSLATED_KEY = JM_CONFIG.TRANSLATED_KEY;
1480
+ // movie-zilizotafsriwa2 β€” filamu zenye MP4 (draft/public kutoka admin); project ile ile ya CONTENT_URL.
1481
+ // Id zake zinaanza na 'n2-' ili zisigongane na za chanzo cha zamani.
1482
+ const TRANSLATED2_BASE = JM_CONFIG.CONTENT_URL + '/functions/v1/movie-zilizotafsriwa2';
1483
+ const TR2_PREFIX = 'n2-';
1484
+ async function fetchTranslatedMovie(id) { // -> { ok, error?, movie } kutoka chanzo sahihi
1485
+ const isNew = String(id).startsWith(TR2_PREFIX);
1486
+ const url = isNew ? TRANSLATED2_BASE + '?id=' + encodeURIComponent(String(id).slice(TR2_PREFIX.length))
1487
+ : TRANSLATED_BASE + '?id=' + encodeURIComponent(id);
1488
+ const r = await fetch(url, { headers: { apikey: isNew ? SUPABASE_ANON_KEY : TRANSLATED_KEY } });
1489
+ const d = await r.json();
1490
+ return isNew ? { ok: r.ok && !d.error, error: d.error, movie: d } : d;
1491
+ }
1492
  const PIXTVMAX_CATEGORY_SW = {
1493
  'Sports': 'cat_sports', 'Movie Channels': 'cat_movies', 'News': 'cat_news',
1494
  'Entertainment': 'cat_ent', 'Documentary': 'cat_doc', 'Religion': 'cat_religion',
 
3579
 
3580
  // ── ZILIZOTAFSIRIWA (movies/series za DJ β€” mradi tofauti) ──
3581
  async function fetchTranslatedList() {
3582
+ const card = (m, idPrefix) => ({
3583
+ id: idPrefix + m.id, kind: 'translated', title: m.title,
 
 
 
 
3584
  poster: m.thumb_url || m.poster_url || null, imgFallbackOn: true,
3585
  subtitle: m.dj || (m.category === 'series' ? 'Series' : 'Movie'),
3586
+ });
3587
+ const oldP = (async () => { // chanzo cha zamani
3588
+ const r = await fetch(TRANSLATED_BASE + '?limit=100', { headers: { apikey: TRANSLATED_KEY } });
3589
+ if (!r.ok) throw new Error(T('err_generic') + ' ' + r.status);
3590
+ const d = await r.json();
3591
+ if (!d.ok) throw new Error(d.error || 'Seva imekataa ombi.');
3592
+ return (d.movies || []).map(m => card(m, ''));
3593
+ })();
3594
+ const newP = (async () => { // movie-zilizotafsriwa2: public tu (seva inachuja)
3595
+ const r = await fetch(TRANSLATED2_BASE, { headers: { apikey: SUPABASE_ANON_KEY } });
3596
+ if (!r.ok) throw new Error(T('err_generic') + ' ' + r.status);
3597
+ const d = await r.json();
3598
+ return (Array.isArray(d) ? d : []).map(m => card(m, TR2_PREFIX));
3599
+ })();
3600
+ const [a, b] = await Promise.allSettled([oldP, newP]);
3601
+ if (a.status === 'rejected' && b.status === 'rejected') throw a.reason;
3602
+ const fresh = b.status === 'fulfilled' ? b.value : [], older = a.status === 'fulfilled' ? a.value : [];
3603
+ const seen = new Set(fresh.map(x => String(x.title || '').trim().toLowerCase()));
3604
+ return fresh.concat(older.filter(x => !seen.has(String(x.title || '').trim().toLowerCase())));
3605
  }
3606
 
3607
  async function loadTranslated() {
 
3637
  detailBody.innerHTML = stateBoxHTML(t('state_loading'));
3638
  fadeInScreen(detailBody);
3639
  try {
3640
+ const d = await fetchTranslatedMovie(item.id);
 
3641
  if (!d.ok) throw new Error(d.error || 'Haipatikani');
3642
  const m = d.movie || {};
3643
  const vids = m.video_urls || {};
 
8933
  // Pata orodha kamili ya sasa kutoka server (ikishindwa, tumia tuliyonayo tayari)
8934
  let vids = d.vids || {};
8935
  try {
8936
+ const j = await fetchTranslatedMovie(d.id);
 
8937
  const fresh = j && j.movie && j.movie.video_urls;
8938
  if (fresh && Object.keys(fresh).length) vids = fresh;
8939
  } catch (_) {}