jaynesmax commited on
Commit
8d488d0
·
verified ·
1 Parent(s): bd14a5f

Upload index.html

Browse files
Files changed (1) hide show
  1. index.html +25 -7
index.html CHANGED
@@ -1583,7 +1583,8 @@ async function authSignOutEverywhere(){
1583
  // Omba barua pepe ya kuweka upya nenosiri (Supabase GoTrue "recover").
1584
  // Haihitaji password ya sasa — Supabase inatuma kiungo (link) kwa barua pepe husika.
1585
  async function authRecoverPassword(email){
1586
- const redirect = encodeURIComponent('https://jaynestv-jaynestv.static.hf.space/reset.html');
 
1587
  return authRequest('/recover?redirect_to=' + redirect, { email });
1588
  }
1589
  // fetch yenye Authorization ya mtumiaji, hujaribu ku-refresh token ikiisha muda (401)
@@ -3296,9 +3297,14 @@ function jmxSocialBar(){
3296
  // Pre-roll: kila filamu/series/Live TV/mechi inapoanza (pamoja na kipindi kinachofuata).
3297
  // Mid-roll: kila dakika 10 za kutazama (kama YouTube). Download: tangazo kabla ya kuanza (juu 2 kwa download nyingi).
3298
  // HAZIONEKANI: offline (zilizopakuliwa), trailer, Hali ya Mtoto. Tangazo likishindikana kwa sababu yoyote, video inaendelea moja kwa moja.
3299
- // Zima kabisa: JM_CONFIG.ADS_ENABLED = false, au JMX_VAST.url = ''.
3300
  const JMX_VAST = {
3301
- url: 'https://sadpicture.com/dMmlFsz.dhGcNovMZkGwUp/teFmT9hugZPUjl/kUPMT-c/1IM/TQAmxdN/j_kYt/NqzCUsxNM/DREX3AMdwv',
 
 
 
 
 
3302
  fetchMs: 6000, // muda wa juu wa kupata VAST XML
3303
  startMs: 9000, // muda wa juu wa video ya tangazo kuanza kucheza
3304
  skipAfter: 5, // sekunde ya kuruhusu "Ruka" kama VAST haijaweka skipoffset
@@ -3307,6 +3313,18 @@ const JMX_VAST = {
3307
  downloadAds: 2, // idadi ya juu ya matangazo kwa download moja au nyingi kwa pamoja
3308
  };
3309
  let __jmxPre = null; // tangazo linaloendelea sasa: { end(reason) }
 
 
 
 
 
 
 
 
 
 
 
 
3310
  let __jmxPrePromise = null; // tangazo la kuanza-kucheza linalosubiriwa na player
3311
  function jmxPrerollAbort(){ try { if (__jmxPre) __jmxPre.end('aborted'); } catch (_) {} }
3312
  // Player huita hii kabla ya kuanza kucheza: inasubiri tangazo likiisha. false = mtumiaji alibadilisha/alifunga.
@@ -3373,7 +3391,7 @@ async function jmxVastLoad(url, depth, acc){
3373
  // opts: { fixed: skrini nzima juu ya app (download), mid: katikati ya video, onReady: ikaitwa tangazo linapokuwa tayari kuonyeshwa }
3374
  function jmxPreroll(opts){
3375
  opts = opts || {};
3376
- if (!JMX_VAST.url || !jmxAdsOn()) return Promise.resolve('skipped');
3377
  if (!opts.fixed && playerEl.classList.contains('mini')) return Promise.resolve('skipped');
3378
  jmxPrerollAbort();
3379
  return new Promise(resolve => {
@@ -3393,7 +3411,7 @@ function jmxPreroll(opts){
3393
  __jmxPre = { end };
3394
  (async () => {
3395
  try {
3396
- vast = await jmxVastLoad(JMX_VAST.url, 0, { imps: [], errs: [], clickTr: [], track: {}, media: '', click: '', dur: null, skipoff: '' });
3397
  } catch (e) { return end('failed'); }
3398
  if (done) return;
3399
  if (opts.fixed) host = document.body;
@@ -3465,7 +3483,7 @@ function jmxPreroll(opts){
3465
  }
3466
  // Tangazo katikati ya video (kama YouTube): kila JMX_VAST.midrollEverySec za kutazama kweli (si wakati imesimama).
3467
  function jmxMidroll(v){
3468
- if (!JMX_VAST.url || !v || v.__jmxMid) return;
3469
  v.__jmxMid = 1;
3470
  let acc = 0, busy = false, adOn = false;
3471
  v.addEventListener('play', () => { if (adOn) { try { v.pause(); } catch (_) {} } });
@@ -3490,7 +3508,7 @@ function jmxMidroll(v){
3490
  }
3491
  // Download: tangazo 1 kwa download moja; kwa nyingi kwa pamoja (mf. 5) matangazo yasizidi JMX_VAST.downloadAds (2).
3492
  async function jmxDownloadAds(n){
3493
- if (!JMX_VAST.url || !jmxAdsOn()) return;
3494
  const times = Math.max(1, Math.min(JMX_VAST.downloadAds, n || 1));
3495
  for (let i = 0; i < times; i++) {
3496
  const r = await jmxPreroll({ fixed: true });
 
1583
  // Omba barua pepe ya kuweka upya nenosiri (Supabase GoTrue "recover").
1584
  // Haihitaji password ya sasa — Supabase inatuma kiungo (link) kwa barua pepe husika.
1585
  async function authRecoverPassword(email){
1586
+ // Anwani ya reset inachukuliwa kutoka kwenye domain ambayo app inafunguliwa (haitegemei jina la Space tena)
1587
+ const redirect = encodeURIComponent(location.origin + location.pathname.replace(/index\.html$/i, '') + 'reset.html');
1588
  return authRequest('/recover?redirect_to=' + redirect, { email });
1589
  }
1590
  // fetch yenye Authorization ya mtumiaji, hujaribu ku-refresh token ikiisha muda (401)
 
3297
  // Pre-roll: kila filamu/series/Live TV/mechi inapoanza (pamoja na kipindi kinachofuata).
3298
  // Mid-roll: kila dakika 10 za kutazama (kama YouTube). Download: tangazo kabla ya kuanza (juu 2 kwa download nyingi).
3299
  // HAZIONEKANI: offline (zilizopakuliwa), trailer, Hali ya Mtoto. Tangazo likishindikana kwa sababu yoyote, video inaendelea moja kwa moja.
3300
+ // Zima kabisa: JM_CONFIG.ADS_ENABLED = false, au acha orodha ya JMX_VAST.urls tupu.
3301
  const JMX_VAST = {
3302
+ // Kampuni za matangazo ya video (VAST). Ongeza kiungo kipya kwenye orodha hii. Zinabadilishana kila tangazo (round-robin);
3303
+ // kampuni moja ikikosa tangazo (hakuna fill/hitilafu), inayofuata inajaribiwa mara moja.
3304
+ urls: [
3305
+ 'https://sadpicture.com/dMmlFsz.dhGcNovMZkGwUp/teFmT9hugZPUjl/kUPMT-c/1IM/TQAmxdN/j_kYt/NqzCUsxNM/DREX3AMdwv', // HilltopAds
3306
+ // 'PAKA_VAST_URL_YA_KAMPUNI_YA_PILI_HAPA', // mf. ExoClick / RichAds
3307
+ ],
3308
  fetchMs: 6000, // muda wa juu wa kupata VAST XML
3309
  startMs: 9000, // muda wa juu wa video ya tangazo kuanza kucheza
3310
  skipAfter: 5, // sekunde ya kuruhusu "Ruka" kama VAST haijaweka skipoffset
 
3313
  downloadAds: 2, // idadi ya juu ya matangazo kwa download moja au nyingi kwa pamoja
3314
  };
3315
  let __jmxPre = null; // tangazo linaloendelea sasa: { end(reason) }
3316
+ let __jmxRR = 0; // round-robin: kampuni ipi inaanza tangazo linalofuata
3317
+ function jmxVastUrls(){ return (JMX_VAST.urls || []).filter(u => u && /^https?:\/\//i.test(u)); }
3318
+ // Hupata VAST kwa kuzunguka kampuni zote; ya kwanza yenye tangazo halisi inashinda.
3319
+ async function jmxVastPick(){
3320
+ const L = jmxVastUrls(); if (!L.length) throw new Error('no_urls');
3321
+ const start = __jmxRR++ % L.length; let lastErr = null;
3322
+ for (let k = 0; k < L.length; k++) {
3323
+ try { return await jmxVastLoad(L[(start + k) % L.length], 0, { imps: [], errs: [], clickTr: [], track: {}, media: '', click: '', dur: null, skipoff: '' }); }
3324
+ catch (e) { lastErr = e; }
3325
+ }
3326
+ throw lastErr || new Error('no_fill');
3327
+ }
3328
  let __jmxPrePromise = null; // tangazo la kuanza-kucheza linalosubiriwa na player
3329
  function jmxPrerollAbort(){ try { if (__jmxPre) __jmxPre.end('aborted'); } catch (_) {} }
3330
  // Player huita hii kabla ya kuanza kucheza: inasubiri tangazo likiisha. false = mtumiaji alibadilisha/alifunga.
 
3391
  // opts: { fixed: skrini nzima juu ya app (download), mid: katikati ya video, onReady: ikaitwa tangazo linapokuwa tayari kuonyeshwa }
3392
  function jmxPreroll(opts){
3393
  opts = opts || {};
3394
+ if (!jmxVastUrls().length || !jmxAdsOn()) return Promise.resolve('skipped');
3395
  if (!opts.fixed && playerEl.classList.contains('mini')) return Promise.resolve('skipped');
3396
  jmxPrerollAbort();
3397
  return new Promise(resolve => {
 
3411
  __jmxPre = { end };
3412
  (async () => {
3413
  try {
3414
+ vast = await jmxVastPick();
3415
  } catch (e) { return end('failed'); }
3416
  if (done) return;
3417
  if (opts.fixed) host = document.body;
 
3483
  }
3484
  // Tangazo katikati ya video (kama YouTube): kila JMX_VAST.midrollEverySec za kutazama kweli (si wakati imesimama).
3485
  function jmxMidroll(v){
3486
+ if (!jmxVastUrls().length || !v || v.__jmxMid) return;
3487
  v.__jmxMid = 1;
3488
  let acc = 0, busy = false, adOn = false;
3489
  v.addEventListener('play', () => { if (adOn) { try { v.pause(); } catch (_) {} } });
 
3508
  }
3509
  // Download: tangazo 1 kwa download moja; kwa nyingi kwa pamoja (mf. 5) matangazo yasizidi JMX_VAST.downloadAds (2).
3510
  async function jmxDownloadAds(n){
3511
+ if (!jmxVastUrls().length || !jmxAdsOn()) return;
3512
  const times = Math.max(1, Math.min(JMX_VAST.downloadAds, n || 1));
3513
  for (let i = 0; i < times; i++) {
3514
  const r = await jmxPreroll({ fixed: true });