From 4700706feca886049b80fe224a0bfda149798370 Mon Sep 17 00:00:00 2001 From: Toha Date: Sun, 26 Apr 2026 22:00:38 +0700 Subject: [PATCH] Update cubmu.com api and channels. Signed-off-by: Toha --- sites/cubmu.com/__data__/content.json | 302 +++++++++++++++++++++- sites/cubmu.com/cubmu.com.channels.xml | 79 ++++++ sites/cubmu.com/cubmu.com.config.js | 190 ++++++++------ sites/cubmu.com/cubmu.com.test.js | 40 ++- sites/cubmu.com/cubmu.com_en.channels.xml | 73 ------ sites/cubmu.com/cubmu.com_id.channels.xml | 73 ------ sites/cubmu.com/readme.md | 20 +- 7 files changed, 507 insertions(+), 270 deletions(-) create mode 100644 sites/cubmu.com/cubmu.com.channels.xml delete mode 100644 sites/cubmu.com/cubmu.com_en.channels.xml delete mode 100644 sites/cubmu.com/cubmu.com_id.channels.xml diff --git a/sites/cubmu.com/__data__/content.json b/sites/cubmu.com/__data__/content.json index d27a2baa6..049ccbfd1 100644 --- a/sites/cubmu.com/__data__/content.json +++ b/sites/cubmu.com/__data__/content.json @@ -1 +1,301 @@ -{"result":[{"channel_id":"4028c68574537fcd0174be43042758d8","channel_name":"Trans TV","scehedule_title":"CNN Tech News","schedule_date":"2023-11-05 01:30:00","schedule_end_time":"02:00:00","schedule_json":{"availability":0,"channelId":"4028c68574537fcd0174be43042758d8","channelName":"Trans TV","duration":1800,"editable":true,"episodeName":"","imageUrl":"https://cdnjkt2.transvision.co.id:1001/catchup/schedule/thumbnail/4028c68574537fcd0174be43042758d8/4028c6858b8b3621018b9330e3701a7e/458x640","imageUrlWide":"https://cdnjkt2.transvision.co.id:1001/catchup/schedule/thumbnail/4028c68574537fcd0174be43042758d8/4028c6858b8b3621018b9330e3701a7e/320x180","name":"CNN Tech News","ottImageUrl":"","primarySynopsis":"CNN Indonesia Tech News adalah berita teknologi yang membawa pemirsa ke dunia teknologi yang penuh dengan informasi, pendidikan, hiburan sampai informasi kesehatan terkini.","scheduleId":"4028c6858b8b3621018b9330e3701a7e","scheduleTime":"18:30:00","secondarySynopsis":"CNN Indonesia Tech News is tech news brings viewers into the world of technology that provides information, education, entertainment to the latest health information.","startDt":"20231104183000","url":""},"schedule_start_time":"01:30:00"}]} \ No newline at end of file +{ + "data": [ + { + "catchup_id": "1409589", + "channel_id": "210", + "channel_name": "Trans TV", + "content_id": "800", + "duration": 45, + "genre_id": "10", + "is_catchup_available": true, + "is_live": false, + "program_name": "Lacak Kriminal", + "schedule_date": "2026-04-26", + "schedule_end_time": "2026-04-26 02:00:00", + "schedule_start_time": "2026-04-26 01:15:00" + }, + { + "catchup_id": "1409590", + "channel_id": "210", + "channel_name": "Trans TV", + "content_id": "800", + "duration": 60, + "genre_id": "10", + "is_catchup_available": true, + "is_live": false, + "program_name": "CNN Indonesia Prime News", + "schedule_date": "2026-04-26", + "schedule_end_time": "2026-04-26 03:00:00", + "schedule_start_time": "2026-04-26 02:00:00" + }, + { + "catchup_id": "1409591", + "channel_id": "210", + "channel_name": "Trans TV", + "content_id": "800", + "duration": 40, + "genre_id": "10", + "is_catchup_available": true, + "is_live": false, + "program_name": "The Transmart", + "schedule_date": "2026-04-26", + "schedule_end_time": "2026-04-26 03:40:00", + "schedule_start_time": "2026-04-26 03:00:00" + }, + { + "catchup_id": "1409592", + "channel_id": "210", + "channel_name": "Trans TV", + "content_id": "800", + "duration": 60, + "genre_id": "10", + "is_catchup_available": true, + "is_live": false, + "program_name": "Klinik Tendean", + "schedule_date": "2026-04-26", + "schedule_end_time": "2026-04-26 04:40:00", + "schedule_start_time": "2026-04-26 03:40:00" + }, + { + "catchup_id": "1409593", + "channel_id": "210", + "channel_name": "Trans TV", + "content_id": "800", + "duration": 20, + "genre_id": "10", + "is_catchup_available": true, + "is_live": false, + "program_name": "Adam And Inul Love Story", + "schedule_date": "2026-04-26", + "schedule_end_time": "2026-04-26 05:00:00", + "schedule_start_time": "2026-04-26 04:40:00" + }, + { + "catchup_id": "1409594", + "channel_id": "210", + "channel_name": "Trans TV", + "content_id": "800", + "duration": 90, + "genre_id": "10", + "is_catchup_available": true, + "is_live": false, + "program_name": "Islam Itu Indah", + "schedule_date": "2026-04-26", + "schedule_end_time": "2026-04-26 06:30:00", + "schedule_start_time": "2026-04-26 05:00:00" + }, + { + "catchup_id": "1409595", + "channel_id": "210", + "channel_name": "Trans TV", + "content_id": "800", + "duration": 60, + "genre_id": "10", + "is_catchup_available": true, + "is_live": false, + "program_name": "Insert Pagi", + "schedule_date": "2026-04-26", + "schedule_end_time": "2026-04-26 07:30:00", + "schedule_start_time": "2026-04-26 06:30:00" + }, + { + "catchup_id": "1409596", + "channel_id": "210", + "channel_name": "Trans TV", + "content_id": "800", + "duration": 60, + "genre_id": "10", + "is_catchup_available": true, + "is_live": false, + "program_name": "Kajian Hati", + "schedule_date": "2026-04-26", + "schedule_end_time": "2026-04-26 08:30:00", + "schedule_start_time": "2026-04-26 07:30:00" + }, + { + "catchup_id": "1409597", + "channel_id": "210", + "channel_name": "Trans TV", + "content_id": "800", + "duration": 120, + "genre_id": "10", + "is_catchup_available": true, + "is_live": false, + "program_name": "Ambyar In Weekend", + "schedule_date": "2026-04-26", + "schedule_end_time": "2026-04-26 10:30:00", + "schedule_start_time": "2026-04-26 08:30:00" + }, + { + "catchup_id": "1409598", + "channel_id": "210", + "channel_name": "Trans TV", + "content_id": "800", + "duration": 60, + "genre_id": "10", + "is_catchup_available": true, + "is_live": false, + "program_name": "Insert", + "schedule_date": "2026-04-26", + "schedule_end_time": "2026-04-26 11:30:00", + "schedule_start_time": "2026-04-26 10:30:00" + }, + { + "catchup_id": "1409599", + "channel_id": "210", + "channel_name": "Trans TV", + "content_id": "800", + "duration": 60, + "genre_id": "10", + "is_catchup_available": true, + "is_live": false, + "program_name": "Spill DD Tea", + "schedule_date": "2026-04-26", + "schedule_end_time": "2026-04-26 12:30:00", + "schedule_start_time": "2026-04-26 11:30:00" + }, + { + "catchup_id": "1409600", + "channel_id": "210", + "channel_name": "Trans TV", + "content_id": "800", + "duration": 90, + "genre_id": "10", + "is_catchup_available": true, + "is_live": false, + "program_name": "Brownis On The Weekend", + "schedule_date": "2026-04-26", + "schedule_end_time": "2026-04-26 14:00:00", + "schedule_start_time": "2026-04-26 12:30:00" + }, + { + "catchup_id": "1409601", + "channel_id": "210", + "channel_name": "Trans TV", + "content_id": "800", + "duration": 60, + "genre_id": "10", + "is_catchup_available": true, + "is_live": false, + "program_name": "Rumpi Hot Of The Week", + "schedule_date": "2026-04-26", + "schedule_end_time": "2026-04-26 15:00:00", + "schedule_start_time": "2026-04-26 14:00:00" + }, + { + "catchup_id": "1409602", + "channel_id": "210", + "channel_name": "Trans TV", + "content_id": "800", + "duration": 60, + "genre_id": "10", + "is_catchup_available": true, + "is_live": false, + "program_name": "Insert Investigasi", + "schedule_date": "2026-04-26", + "schedule_end_time": "2026-04-26 16:00:00", + "schedule_start_time": "2026-04-26 15:00:00" + }, + { + "catchup_id": "1409603", + "channel_id": "210", + "channel_name": "Trans TV", + "content_id": "800", + "duration": 60, + "genre_id": "10", + "is_catchup_available": true, + "is_live": false, + "program_name": "Sehari Jadi Ratu", + "schedule_date": "2026-04-26", + "schedule_end_time": "2026-04-26 17:00:00", + "schedule_start_time": "2026-04-26 16:00:00" + }, + { + "catchup_id": "1409604", + "channel_id": "210", + "channel_name": "Trans TV", + "content_id": "800", + "duration": 60, + "genre_id": "10", + "is_catchup_available": true, + "is_live": false, + "program_name": "Bikin Laper", + "schedule_date": "2026-04-26", + "schedule_end_time": "2026-04-26 18:00:00", + "schedule_start_time": "2026-04-26 17:00:00" + }, + { + "catchup_id": "1409605", + "channel_id": "210", + "channel_name": "Trans TV", + "content_id": "800", + "duration": 60, + "genre_id": "10", + "is_catchup_available": true, + "is_live": false, + "program_name": "Monitor Ketua", + "schedule_date": "2026-04-26", + "schedule_end_time": "2026-04-26 19:00:00", + "schedule_start_time": "2026-04-26 18:00:00" + }, + { + "catchup_id": "1409606", + "channel_id": "210", + "channel_name": "Trans TV", + "content_id": "800", + "duration": 75, + "genre_id": "10", + "is_catchup_available": true, + "is_live": false, + "program_name": "Insert Story", + "schedule_date": "2026-04-26", + "schedule_end_time": "2026-04-26 20:15:00", + "schedule_start_time": "2026-04-26 19:00:00" + }, + { + "catchup_id": "1409607", + "channel_id": "210", + "channel_name": "Trans TV", + "content_id": "800", + "duration": 60, + "genre_id": "10", + "is_catchup_available": true, + "is_live": false, + "program_name": "Highlight", + "schedule_date": "2026-04-26", + "schedule_end_time": "2026-04-26 21:15:00", + "schedule_start_time": "2026-04-26 20:15:00" + }, + { + "catchup_id": "1409608", + "channel_id": "210", + "channel_name": "Trans TV", + "content_id": "800", + "duration": 120, + "genre_id": "10", + "is_catchup_available": false, + "is_live": true, + "program_name": "Bioskop TransTV", + "schedule_date": "2026-04-26", + "schedule_end_time": "2026-04-26 23:15:00", + "schedule_start_time": "2026-04-26 21:15:00" + }, + { + "catchup_id": "1409609", + "channel_id": "210", + "channel_name": "Trans TV", + "content_id": "800", + "duration": 120, + "genre_id": "10", + "is_catchup_available": false, + "is_live": false, + "program_name": "Bioskop TransTV", + "schedule_date": "2026-04-26", + "schedule_end_time": "2026-04-27 01:15:00", + "schedule_start_time": "2026-04-26 23:15:00" + } + ], + "error": null, + "message": "Get list EPG success", + "status": "success" +} \ No newline at end of file diff --git a/sites/cubmu.com/cubmu.com.channels.xml b/sites/cubmu.com/cubmu.com.channels.xml new file mode 100644 index 000000000..dd3ee03f7 --- /dev/null +++ b/sites/cubmu.com/cubmu.com.channels.xml @@ -0,0 +1,79 @@ + + + Movies News + Golf Plus ID + Knowledge+ + Cartoon TV Premium + Cartoon TV + Cartoon TV Classic + Football TV + Sports TV + Xtrem Sports + Speed TV + Travel TV + Cooking TV + Gaming TV + Song TV + ABC Australia + Al Jazeera + ANTV + Arirang + Berita Satu + Bioskop Indonesia + BTV + CCTV4 + Celestial Movies + CGTN + CGTN Documentary + Channel Jowo + Channel NewsAsia + CNBC Asia + CNBC Indonesia + CNN Indonesia + DAAI TV + DayStar + DENS Food Channel + DENS Play Channel + DENS Show Bizz + Dunia Anak + Dunia Lain + Eat N Go + Euronews + Fashion TV + Fight TV Premium + France 24 + Garuda TV + GTV + Indosiar + JakTV + jtv + Khazanah + Kompas TV + MDTV + MetroTV + MNC TV + Musik Indonesia + Nabawi TV + NHK World Premium + !nsert + One TV + Pijar TV + PSJ TV + Al Quran Al Kareem + Rtv + RCTI + Russia Today + SCTV + Superyacht TV + Thrill + Trans 7 + Trans TV + TV5 Monde + TV9 + tvMU + tVN + TVN Movies + TVOne + TVRI + Wion TV + diff --git a/sites/cubmu.com/cubmu.com.config.js b/sites/cubmu.com/cubmu.com.config.js index 335a555d3..f3d9a1238 100644 --- a/sites/cubmu.com/cubmu.com.config.js +++ b/sites/cubmu.com/cubmu.com.config.js @@ -1,3 +1,4 @@ +const axios = require('axios') const dayjs = require('dayjs') const timezone = require('dayjs/plugin/timezone') const utc = require('dayjs/plugin/utc') @@ -5,78 +6,72 @@ const utc = require('dayjs/plugin/utc') dayjs.extend(timezone) dayjs.extend(utc) +const tz = 'Asia/Jakarta' +const dateFormat = 'YYYY-MM-DD HH:mm:ss' +const headers = { + 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36', + 'Origin': 'https://cubmu.com', + 'Referer': 'https://cubmu.com/', +} +let runtimeConfig, accessToken + module.exports = { site: 'cubmu.com', days: 2, url({ channel, date }) { - return `https://servicebuss.transvision.co.id/v2/cms/getEPGData?app_id=cubmu&tvs_platform_id=standalone&schedule_date=${date.format( + return `https://servicebuss.transvision.co.id/global/v2/epg/programs?channel_id=${ + channel.site_id + }&schedule_date=${date.format( 'YYYY-MM-DD' - )}&channel_id=${channel.site_id}` + )}` + }, + request: { + async headers() { + await fetchAccessToken() + + return { + Authorization: `Bearer ${accessToken}`, + ...headers, + } + } }, parser({ content, channel }) { const programs = [] - const items = parseItems(content) - items.forEach(item => { - programs.push({ - title: parseTitle(item), - description: parseDescription(item, channel.lang), - episode: parseEpisode(item), - start: parseStart(item).toISOString(), - stop: parseStop(item).toISOString() + if (content && typeof content === 'string') { + content = JSON.parse(content) + } + if (Array.isArray(content?.data)) { + content.data.forEach(item => { + programs.push({ + title: item.program_name, + start: dayjs.tz(item.schedule_start_time, dateFormat, tz), + stop: dayjs.tz(item.schedule_end_time, dateFormat, tz), + }) }) - }) + } return programs }, - async channels({ lang }) { - const axios = require('axios') - const cheerio = require('cheerio') + async channels({ lang = 'id' }) { + const now = dayjs() + await fetchAccessToken() const result = await axios - .get('https://cubmu.com/live-tv') - .then(response => response.data) - .catch(console.error) - - const $ = cheerio.load(result) - - // retrieve service api data - const config = JSON.parse($('#__NEXT_DATA__').text()).runtimeConfig || {} - - const options = { - headers: { - Origin: 'https://cubmu.com', - Referer: 'https://cubmu.com/live-tv' - } - } - // login to service bus - await axios - .post( - `https://servicebuss.transvision.co.id/tvs/login/external?email=${config.email}&password=${config.password}&deviceId=${config.deviceId}&deviceType=${config.deviceType}&deviceModel=${config.deviceModel}&deviceToken=&serial=&platformId=${config.platformId}`, - options - ) - .then(response => response.data) - .catch(console.error) - // list channels - const subscribedChannels = await axios - .post( - `https://servicebuss.transvision.co.id/tvs/subscribe_product/list?platformId=${config.platformId}`, - options - ) - .then(response => response.data) - .catch(console.error) + .get(`https://servicebuss.transvision.co.id/global/v2/master-channels?platform_id=1&page=1&per_page=100&schedule_date=${now.format('YYYY-MM-DD')}`, { + headers: { + Authorization: `Bearer ${accessToken}`, + ...headers, + } + }) + .then(r => r.data) + .catch(err => console.error(err.message)) const channels = [] - const included = [] - if (Array.isArray(subscribedChannels.channelPackageList)) { - subscribedChannels.channelPackageList.forEach(pkg => { - pkg.channelList.forEach(channel => { - if (included.indexOf(channel.id) < 0) { - included.push(channel.id) - channels.push({ - lang, - site_id: channel.id, - name: channel.name - }) - } + if (Array.isArray(result?.data?.items)) { + result.data.items.forEach(channel => { + channels.push({ + lang, + site_id: channel.channel_id, + name: channel.channel_name, }) }) } @@ -85,30 +80,65 @@ module.exports = { } } -function parseItems(content) { - return content ? JSON.parse(content.trim()).result || [] : [] +async function fetchRuntimeConfig() { + if (!runtimeConfig) { + const cheerio = require('cheerio') + const url = 'https://cubmu.com/' + const result = await axios + .get(url) + .then(r => r.data) + .catch(err => console.error(err.message)) + + const $ = cheerio.load(result) + + runtimeConfig = JSON.parse($('#__NEXT_DATA__').text()).runtimeConfig || {} + } } -function parseTitle(item) { - return item.scehedule_title -} +async function fetchAccessToken() { + if (!runtimeConfig) { + await fetchRuntimeConfig() + } + const url = 'https://servicebuss.transvision.co.id/global/v3/auth/redirect-login' + if (!accessToken) { + // extracted from https://cubmu.com/_next/static/chunks/pages/_app-ac49656f9b4eac2d.js + const f = t => { + let e = t, + r = 'xx', + n = Math.round(+new Date / 1e3), + i = ''.concat(e, '{SPLITTER}').concat(n) + return [0, 1].map(() => { + i = ''.concat(r).concat(btoa(i)) + }), i + } + const payload = { + app_id: 'cubmu', + device: { + device_brand: 'Web Browser', + device_id: 'web_browser', + device_type: 'Opera', + firebase_id: 'NOT_ALLOWED', + notes: 'Web Browser-V2.1', + }, + email_or_phone: runtimeConfig?.emailMaster, + password: f(runtimeConfig?.passwordMaster), + tvs_platform_id: 'standalone', + } + const result = await axios + .post(url, payload, { + headers: { + ...headers, + 'Content-Type': 'application/json', + } + }) + .then(r => r.data) + .catch(err => console.error(err.message)) -function parseDescription(item, lang = 'id') { - return lang === 'id' ? item.schedule_json.primarySynopsis : item.schedule_json.secondarySynopsis -} - -function parseEpisode(item) { - return item.schedule_json.episodeName -} - -function parseStart(item) { - return dayjs.tz(item.schedule_date, 'YYYY-MM-DD HH:mm:ss', 'Asia/Jakarta') -} - -function parseStop(item) { - return dayjs.tz( - [item.schedule_date.split(' ')[0], item.schedule_end_time].join(' '), - 'YYYY-MM-DD HH:mm:ss', - 'Asia/Jakarta' - ) + if (result?.data?.access_token) { + accessToken = result.data.access_token + } + } + if (!accessToken) { + throw new Error(`Unable to fetch access token from ${url}!`); + } } diff --git a/sites/cubmu.com/cubmu.com.test.js b/sites/cubmu.com/cubmu.com.test.js index a12f9e75c..fc45695dc 100644 --- a/sites/cubmu.com/cubmu.com.test.js +++ b/sites/cubmu.com/cubmu.com.test.js @@ -3,41 +3,31 @@ const fs = require('fs') const path = require('path') const dayjs = require('dayjs') const utc = require('dayjs/plugin/utc') + dayjs.extend(utc) -const date = dayjs.utc('2023-11-05', 'DD/MM/YYYY').startOf('d') -const channel = { site_id: '4028c68574537fcd0174be43042758d8', xmltv_id: 'TransTV.id', lang: 'id' } -const channelEn = Object.assign({}, channel, { lang: 'en' }) +const date = dayjs.utc('2026-04-26').startOf('d') +const channel = { site_id: '210', xmltv_id: 'TransTV.id', lang: 'id' } it('can generate valid url', () => { expect(url({ channel, date })).toBe( - 'https://servicebuss.transvision.co.id/v2/cms/getEPGData?app_id=cubmu&tvs_platform_id=standalone&schedule_date=2023-11-05&channel_id=4028c68574537fcd0174be43042758d8' + 'https://servicebuss.transvision.co.id/global/v2/epg/programs?channel_id=210&schedule_date=2026-04-26' ) }) it('can parse response', () => { const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.json'), 'utf8') - const idResults = parser({ content, channel }) - expect(idResults).toMatchObject([ - { - start: '2023-11-04T18:30:00.000Z', - stop: '2023-11-04T19:00:00.000Z', - title: 'CNN Tech News', - description: - 'CNN Indonesia Tech News adalah berita teknologi yang membawa pemirsa ke dunia teknologi yang penuh dengan informasi, pendidikan, hiburan sampai informasi kesehatan terkini.' - } - ]) - - const enResults = parser({ content, channel: channelEn }) - expect(enResults).toMatchObject([ - { - start: '2023-11-04T18:30:00.000Z', - stop: '2023-11-04T19:00:00.000Z', - title: 'CNN Tech News', - description: - 'CNN Indonesia Tech News is tech news brings viewers into the world of technology that provides information, education, entertainment to the latest health information.' - } - ]) + const results = parser({ content, channel }) + .map(p => { + p.start = p.start.toJSON() + p.stop = p.stop.toJSON() + return p + }) + expect(results[4]).toMatchObject({ + title: 'Adam And Inul Love Story', + start: '2026-04-25T21:40:00.000Z', + stop: '2026-04-25T22:00:00.000Z', + }) }) it('can handle empty guide', () => { diff --git a/sites/cubmu.com/cubmu.com_en.channels.xml b/sites/cubmu.com/cubmu.com_en.channels.xml deleted file mode 100644 index 5122dab05..000000000 --- a/sites/cubmu.com/cubmu.com_en.channels.xml +++ /dev/null @@ -1,73 +0,0 @@ - - - jtv - Musik Indonesia - Euronews - Wion TV - CCTV 4 - Fight TV Premium - Xtrem Sports - Travel TV - Fashion TV - Movies News - Sports TV - SuperYacht TV - Speed TV - PSJ TV - DENS Food Channel - DENS PLAY Channel - DENS ShowBiz - TV9 - tv Mu - Pijar TV - Al Quran Al Kareem - Nabawi TV - MDTV - Song TV - Cartoon TV Classics - One TV - Channel Jowo - Cooking TV - Cartoon TV Premium - Cartoon TV - Football TV - Knowledge+ - Berita Satu - Garuda TV - CNA - Al Jazeera - France 24 - Arirang - Dunia Anak - Channel Seru! - Dunia Lain - ABC Australia - Eat N Go - Khazanah - CNBC Indonesia - SCTV - Indosiar - DAAI TV - rtv - MNC TV - Lingua - Bioskop Indonesia - GTV - BTV - Russia Today - !nsert - MetroTV - CNN Indonesia - TVRI - CGTN - RCTI - Jak tv - Kompas TV - TV5 Monde - Trans TV - Trans 7 - CGTN Documentary - LPS Financial Festival 2025 - GOLF PLUS ID - Gaming TV - diff --git a/sites/cubmu.com/cubmu.com_id.channels.xml b/sites/cubmu.com/cubmu.com_id.channels.xml deleted file mode 100644 index 0ee5d3662..000000000 --- a/sites/cubmu.com/cubmu.com_id.channels.xml +++ /dev/null @@ -1,73 +0,0 @@ - - - jtv - Musik Indonesia - Euronews - Wion TV - CCTV 4 - Fight TV Premium - Xtrem Sports - Travel TV - Fashion TV - Movies News - Sports TV - SuperYacht TV - Speed TV - PSJ TV - DENS Food Channel - DENS PLAY Channel - DENS ShowBiz - TV9 - tv Mu - Pijar TV - Al Quran Al Kareem - Nabawi TV - MDTV - Song TV - Cartoon TV Classics - One TV - Channel Jowo - Cooking TV - Cartoon TV Premium - Cartoon TV - Football TV - Knowledge+ - Berita Satu - Garuda TV - CNA - Al Jazeera - France 24 - Arirang - Dunia Anak - Channel Seru! - Dunia Lain - ABC Australia - Eat N Go - Khazanah - CNBC Indonesia - SCTV - Indosiar - DAAI TV - rtv - MNC TV - Lingua - Bioskop Indonesia - GTV - BTV - Russia Today - !nsert - MetroTV - CNN Indonesia - TVRI - CGTN - RCTI - Jak tv - Kompas TV - TV5 Monde - Trans TV - Trans 7 - CGTN Documentary - LPS Financial Festival 2025 - GOLF PLUS ID - Gaming TV - diff --git a/sites/cubmu.com/readme.md b/sites/cubmu.com/readme.md index 8a10f641a..fa997a2c4 100644 --- a/sites/cubmu.com/readme.md +++ b/sites/cubmu.com/readme.md @@ -4,30 +4,14 @@ https://cubmu.com/live-tv _[Geo-restricted]_ ### Download the guide -Indonesian: - ```sh -npm run grab --- --sites=cubmu.com --lang=id -``` - -English: - -```sh -npm run grab --- --sites=cubmu.com --lang=en +npm run grab --- --sites=cubmu.com ``` ### Update channel list -Indonesian: - ```sh -npm run channels:parse --- --config=sites/cubmu.com/cubmu.com.config.js --output=sites/cubmu.com/cubmu.com_id.channels.xml --set=lang:id -``` - -English: - -```sh -npm run channels:parse --- --config=sites/cubmu.com/cubmu.com.config.js --output=sites/cubmu.com/cubmu.com_en.channels.xml --set=lang:en +npm run channels:parse --- --config=sites/cubmu.com/cubmu.com.config.js --output=sites/cubmu.com/cubmu.com.channels.xml ``` ### Test