en
Feedback
π‘½π’Šπ’π’› [ π‘°π’π’‡π’π’“π’Žπ’‚π’•π’Šπ’π’ ]

π‘½π’Šπ’π’› [ π‘°π’π’‡π’π’“π’Žπ’‚π’•π’Šπ’π’ ]

Open in Telegram

Hello @Durov This channel is legal. And it doesn't contain pornographic or offensive posts. Please note! Our official channel, proudly @Telegram No spam

Show more
1 027
Subscribers
+424 hours
+57 days
-1430 days
Posts Archive
tawarin username 5 huruf/yang gampang dibaca ke dm ga nerima username yang ada unsur top 1, ban
dm .@hoftashen

Nted Open Patner Function - Get New Function Pastinya - Get Base sc WhatsApp/Telegram - Get Script No Encrypt - Get Function Blank/Crash/Delay/Ios - Function Selalu Update Pastinya Nted Open Owner Function - Get Function Private - Get Function Delay Hard + Invisible - Get Function Blank/Crash Ui - Get Function Blank No Click - Get Function Force Close Group - Get Function Force Close Channel - Get Scrit Nted Crasher No Encrypt - Bisa Open Patner Function Lagi
Storan Function @PTfunctionGW Harga? Chat Saja @NtedPakeE

Nted Open Patner Function - Get New Function Pastinya - Get Base sc WhatsApp/Telegram - Get Script No Encrypt - Get Function Blank/Crash/Delay/Ios - Function Selalu Update Pastinya Nted Open Owner Function - Get Function Private - Get Function Delay Hard + Invisible - Get Function Blank/Crash Ui - Get Function Blank No Click - Get Function Force Close Group - Get Function Force Close Channel - Get Scrit Nted Crasher No Encrypt - Bisa Open Patner Function Lagi
Storan Function @PTfunctionGW Harga? Chat Saja @NtedPakeE

.build [ { "h2": ":dokumen: Scraper Cek Info Account Free Fire :bintang:" }, { "doc": { "src": "BQACAgUAAxkDAAJw9Wq86F_7G_v7m9m6nAGM2prXGplyAAKHIQAC3dDpVTtEU10kuCpAPQQ" } }, { "btn": [ { "text": "1sT ChanneL", "url": "https://t.me/aboutvin7x" }, { "text": "2nD ChanneL", "url": "https://t.me/vinzxcommnty" } ] }, { "btn": [ { "text": "Credit by", "url": "https://t.me/luyatiem" } ] } ]

.build [   {     "h2": ":dokumen: Scraper Cek Info Account Free Fire :bintang:"   },   {     "doc": {       "src": "BQACAgUAAxkDAAJw9Wq86F_7G_v7m9m6nAGM2prXGplyAAKHIQAC3dDpVTtEU10kuCpAPQQ"     }   },   {     "btn": [       {         "text": "1sT ChanneL",         "url": "https://t.me/aboutvin7x"       },       {         "text": "2nD ChanneL",         "url": "https://t.me/vinzxcommnty"       }     ]   },   {     "btn": [       {         "text": "Credit by",         "url": "https://t.me/luyatiem"       }     ]   } ]

const BASE = 'https://www.zerozx-stream.my.id';
const UA = 'Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Mobile Safari/537.36';

const headers = {
  accept: '*/*',
  'accept-language': 'id-ID,id;q=0.9,en-US;q=0.8,en;q=0.7',
  referer: `${BASE}/`,
  'user-agent': UA
};

async function getPopular(page = 1, type = 'all') {
  const url = `${BASE}/api/movies?action=popular&type=${type}&page=${page}`;
  const res = await fetch(url, { headers });
  return res.json();
}

async function searchMovies(query, page = 1) {
  const params = ['q', 'query', 'search', 'keyword', 's'];

  for (const key of params) {
    const url = `${BASE}/api/movies?action=search&${key}=${encodeURIComponent(query)}&page=${page}`;
    const res = await fetch(url, { headers });
    const data = await res.json();

    if (data.status !== false) {
      return {
        usedParam: key,
        data
      };
    }
  }

  return {
    usedParam: null,
    data: {
      status: false,
      message: 'Semua nama parameter dicoba, tidak ada yang cocok.'
    }
  };
}

async function getStream(id, type = 'film') {
  const url = `${BASE}/api/stream?id=${encodeURIComponent(id)}&type=${type}`;

  const res = await fetch(url, {
    headers: {
      ...headers,
      referer: `${BASE}/play/${type}/${id}`
    }
  });

  return res.json();
}

function normalizePlay(data, type = 'film') {
  if (data.status === false) return null;

  const results = data.results || {};
  const play = data.play || {};
  const streamsObj = play.streams || results.stream || {};

  const servers = Array.isArray(streamsObj.servers)
    ? streamsObj.servers
    : [];

  const primaryIframe =
    streamsObj.primaryIframe ||
    servers[0]?.url ||
    null;

  let streams = servers
    .map(server => ({
      name: server.server || server.name || 'Server',
      url: server.url || server.link || ''
    }))
    .filter(server => server.url);

  if (!streams.length && primaryIframe) {
    streams = [{
      name: 'Server Utama',
      url: primaryIframe
    }];
  }

  return {
    title: results.title || 'Tanpa Judul',
    type: results.type || type,
    year: results.year || '',
    rating: results.rating || null,
    streams
  };
}

async function getPlay(id, type = 'film') {
  const data = await getStream(id, type);
  return normalizePlay(data, type);
}