diff --git a/sites/cubmu.com/cubmu.com.config.js b/sites/cubmu.com/cubmu.com.config.js index a1064e52..6b408aed 100644 --- a/sites/cubmu.com/cubmu.com.config.js +++ b/sites/cubmu.com/cubmu.com.config.js @@ -8,16 +8,16 @@ dayjs.extend(utc) module.exports = { site: 'cubmu.com', days: 2, - url: function ({ channel, date }) { + url({ channel, date }) { return `https://servicebuss.transvision.co.id/v2/cms/getEPGData?app_id=cubmu&tvs_platform_id=standalone&schedule_date=${date.format('YYYY-MM-DD')}&channel_id=${channel.site_id}` }, - parser({ content }) { + parser({ content, channel }) { const programs = [] const items = parseItems(content) items.forEach(item => { programs.push({ title: parseTitle(item), - description: parseDescription(item), + description: parseDescription(item, channel.lang), episode: parseEpisode(item), start: parseStart(item).toISOString(), stop: parseStop(item).toISOString() @@ -26,7 +26,7 @@ module.exports = { return programs }, - async channels() { + async channels({ lang = 'id' }) { const axios = require('axios') const cheerio = require('cheerio') const result = await axios @@ -57,15 +57,19 @@ module.exports = { .catch(console.error) const channels = [] + const included = [] if (Array.isArray(subscribedChannels.channelPackageList)) { subscribedChannels.channelPackageList.forEach(pkg => { - channels.push(...pkg.channelList.map(channel => { - return { - lang: 'id', - site_id: channel.id, - name: channel.name + pkg.channelList.forEach(channel => { + if (included.indexOf(channel.id) < 0) { + included.push(channel.id) + channels.push({ + lang, + site_id: channel.id, + name: channel.name + }) } - })) + }) }) } @@ -81,8 +85,8 @@ function parseTitle(item) { return item.scehedule_title } -function parseDescription(item) { - return item.schedule_json.primarySynopsis +function parseDescription(item, lang = 'id') { + return lang === 'id' ? item.schedule_json.primarySynopsis : item.schedule_json.secondarySynopsis } function parseEpisode(item) { diff --git a/sites/cubmu.com/cubmu.com.test.js b/sites/cubmu.com/cubmu.com.test.js index 56036459..38bbf099 100644 --- a/sites/cubmu.com/cubmu.com.test.js +++ b/sites/cubmu.com/cubmu.com.test.js @@ -1,6 +1,3 @@ -// [Geo-restricted] npm run channels:parse -- --config=./sites/cubmu.com/cubmu.com.config.js --output=./sites/cubmu.com/cubmu.com.channels.xml -// npm run grab -- --site=cubmu.com - const { url, parser } = require('./cubmu.com.config.js') const dayjs = require('dayjs') const utc = require('dayjs/plugin/utc') @@ -8,6 +5,7 @@ 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' }) it('can generate valid url', () => { expect(url({ channel, date })).toBe( @@ -18,9 +16,9 @@ it('can generate valid url', () => { it('can parse response', () => { const content = '{"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"}]}' - const results = parser({ content, channel }) - expect(results).toMatchObject([ + const idResults = parser({ content, channel }) + expect(idResults).toMatchObject([ { start: '2023-11-04T18:30:00.000Z', stop: '2023-11-04T19:00:00.000Z', @@ -29,6 +27,17 @@ it('can parse response', () => { '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.' + } + ]) }) 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 new file mode 100644 index 00000000..05e784ab --- /dev/null +++ b/sites/cubmu.com/cubmu.com_en.channels.xml @@ -0,0 +1,95 @@ + + + + ABC Australia + Al Jazeera + ANTV + Arirang + Bioskop Indonesia + Boonie Cubs TV + BTV + CCTV 4 + CGTN + CGTN Documentary + CNA + CNBC Indonesia + CNN Indonesia + DAAI TV + Duck TV + Dunia Anak + Dunia Lain + Eat N Go + English Club TV + Euronews + Fashion TV + Fight TV Premium + France 24 + Golf+ + GTV + Indosiar + Jak tv + jtv + Khazanah + Kompas TV + Lingua + MetroTV + MNC TV + Nabawi TV + NET TV + !nsert + Nusantara + One TV + Pijar TV + Gaming TV + Al Quran Al Kareem + rtv + RCTI + Russia Today + SCTV + Channel Seru! + SuperYacht TV + Toon Goggles + Trans 7 + Trans TV + TV5 Monde + TV9 + tv Mu + tvOne + TVRI + Wion TV + diff --git a/sites/cubmu.com/cubmu.com.channels.xml b/sites/cubmu.com/cubmu.com_id.channels.xml similarity index 61% rename from sites/cubmu.com/cubmu.com.channels.xml rename to sites/cubmu.com/cubmu.com_id.channels.xml index 2c9b6ae9..01fd14a0 100644 --- a/sites/cubmu.com/cubmu.com.channels.xml +++ b/sites/cubmu.com/cubmu.com_id.channels.xml @@ -1,46 +1,48 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + ABC Australia Al Jazeera ANTV Arirang - BTV Bioskop Indonesia Boonie Cubs TV + BTV CCTV 4 CGTN CGTN Documentary @@ -67,16 +69,13 @@ Lingua MetroTV MNC TV - Nabawi TV NET TV !nsert Nusantara One TV - Outdoor America Pijar TV Gaming TV - Pro Wrestling TV Al Quran Al Kareem rtv RCTI diff --git a/sites/cubmu.com/readme.md b/sites/cubmu.com/readme.md new file mode 100644 index 00000000..23f07209 --- /dev/null +++ b/sites/cubmu.com/readme.md @@ -0,0 +1,37 @@ +# cubmu.com + +https://cubmu.com/live-tv _[Geo-restricted]_ + +### Download the guide + +Indonesian: + +```sh +npm run grab -- --site=cubmu.com --lang=id +``` + +English: + +```sh +npm run grab -- --site=cubmu.com --lang=en +``` + +### 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 +``` + +### Test + +```sh +npm test -- cubmu.com +```