Spaces:
Running
Running
Upload index.html
Browse files- 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
|
| 3571 |
-
|
| 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
|
| 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
|
| 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 (_) {}
|