diff --git a/sites/dens.tv/__data__/content.json b/sites/dens.tv/__data__/content.json index ffb9eb6e..6f4ee804 100644 --- a/sites/dens.tv/__data__/content.json +++ b/sites/dens.tv/__data__/content.json @@ -1 +1 @@ -{"response":0,"data":[{"seq":"6961985","dateNow":"2023-11-10 16:57:47","id":"6","name":"Metro TV","title":"Follow Up","time":"00:00","starttime":"2023-11-10 00:00:00","endtime":"2023-11-10 00:05:00","play":"","status":0},{"seq":"6961986","dateNow":"2023-11-10 16:57:47","id":"6","name":"Metro TV","title":"Editorial Malam","time":"00:05","starttime":"2023-11-10 00:05:00","endtime":"2023-11-10 00:30:00","play":"","status":0},{"seq":"6961987","dateNow":"2023-11-10 16:57:47","id":"6","name":"Metro TV","title":"Primetime News","time":"00:30","starttime":"2023-11-10 00:30:00","endtime":"2023-11-10 03:05:00","play":"","status":0},{"seq":"6961988","dateNow":"2023-11-10 16:57:47","id":"6","name":"Metro TV","title":"Top News","time":"03:05","starttime":"2023-11-10 03:05:00","endtime":"2023-11-10 04:05:00","play":"","status":0},{"seq":"6961989","dateNow":"2023-11-10 16:57:47","id":"6","name":"Metro TV","title":"Metro Pagi Primetime","time":"04:05","starttime":"2023-11-10 04:05:00","endtime":"2023-11-10 06:05:00","play":"","status":0},{"seq":"6961990","dateNow":"2023-11-10 16:57:47","id":"6","name":"Metro TV","title":"Metro Sport","time":"06:05","starttime":"2023-11-10 06:05:00","endtime":"2023-11-10 06:30:00","play":"","status":0},{"seq":"6961991","dateNow":"2023-11-10 16:57:47","id":"6","name":"Metro TV","title":"Go Healthy","time":"06:30","starttime":"2023-11-10 06:30:00","endtime":"2023-11-10 07:05:00","play":"","status":0},{"seq":"6961992","dateNow":"2023-11-10 16:57:47","id":"6","name":"Metro TV","title":"Editorial Media Indonesia","time":"07:05","starttime":"2023-11-10 07:05:00","endtime":"2023-11-10 08:05:00","play":"","status":0},{"seq":"6961993","dateNow":"2023-11-10 16:57:47","id":"6","name":"Metro TV","title":"Metro Xin Wen","time":"08:05","starttime":"2023-11-10 08:05:00","endtime":"2023-11-10 08:30:00","play":"","status":0},{"seq":"6961994","dateNow":"2023-11-10 16:57:47","id":"6","name":"Metro TV","title":"Selamat Pagi Indonesia","time":"08:30","starttime":"2023-11-10 08:30:00","endtime":"2023-11-10 10:05:00","play":"","status":0},{"seq":"6961995","dateNow":"2023-11-10 16:57:47","id":"6","name":"Metro TV","title":"Zona Bisnis","time":"10:05","starttime":"2023-11-10 10:05:00","endtime":"2023-11-10 10:30:00","play":"","status":0},{"seq":"6961996","dateNow":"2023-11-10 16:57:47","id":"6","name":"Metro TV","title":"Go Healthy","time":"10:30","starttime":"2023-11-10 10:30:00","endtime":"2023-11-10 11:05:00","play":"","status":0},{"seq":"6961997","dateNow":"2023-11-10 16:57:47","id":"6","name":"Metro TV","title":"Metro Siang","time":"11:05","starttime":"2023-11-10 11:05:00","endtime":"2023-11-10 13:05:00","play":"","status":0},{"seq":"6961998","dateNow":"2023-11-10 16:57:47","id":"6","name":"Metro TV","title":"Kontroversi","time":"13:05","starttime":"2023-11-10 13:05:00","endtime":"2023-11-10 14:05:00","play":"","status":0},{"seq":"6961999","dateNow":"2023-11-10 16:57:47","id":"6","name":"Metro TV","title":"Untuk Indonesia","time":"14:05","starttime":"2023-11-10 14:05:00","endtime":"2023-11-10 14:30:00","play":"","status":0},{"seq":"6962000","dateNow":"2023-11-10 16:57:47","id":"6","name":"Metro TV","title":"Presisi Mengayomi","time":"14:30","starttime":"2023-11-10 14:30:00","endtime":"2023-11-10 15:05:00","play":"","status":0},{"seq":"6962001","dateNow":"2023-11-10 16:57:47","id":"6","name":"Metro TV","title":"Follow Up","time":"15:05","starttime":"2023-11-10 15:05:00","endtime":"2023-11-10 15:30:00","play":"","status":0},{"seq":"6962002","dateNow":"2023-11-10 16:57:47","id":"6","name":"Metro TV","title":"Berita Pemilu","time":"15:30","starttime":"2023-11-10 15:30:00","endtime":"2023-11-10 16:05:00","play":"","status":0},{"seq":"6962003","dateNow":"2023-11-10 16:57:47","id":"6","name":"Metro TV","title":"Metro Hari Ini","time":"16:05","starttime":"2023-11-10 16:05:00","endtime":"2023-11-10 17:30:00","play":"","status":0},{"seq":"6962004","dateNow":"2023-11-10 16:57:47","id":"6","name":"Metro TV","title":"Primetime News","time":"17:30","starttime":"2023-11-10 17:30:00","endtime":"2023-11-10 20:05:00","play":"","status":0},{"seq":"6962005","dateNow":"2023-11-10 16:57:47","id":"6","name":"Metro TV","title":"Top News","time":"20:05","starttime":"2023-11-10 20:05:00","endtime":"2023-11-10 21:05:00","play":"","status":0},{"seq":"6962006","dateNow":"2023-11-10 16:57:47","id":"6","name":"Metro TV","title":"Editorial Malam","time":"21:05","starttime":"2023-11-10 21:05:00","endtime":"2023-11-10 21:30:00","play":"","status":0},{"seq":"6962007","dateNow":"2023-11-10 16:57:47","id":"6","name":"Metro TV","title":"Visi Negarawan","time":"21:30","starttime":"2023-11-10 21:30:00","endtime":"2023-11-10 22:30:00","play":"","status":0},{"seq":"6962008","dateNow":"2023-11-10 16:57:47","id":"6","name":"Metro TV","title":"Top News","time":"22:30","starttime":"2023-11-10 22:30:00","endtime":"2023-11-10 23:30:00","play":"","status":0},{"seq":"6962009","dateNow":"2023-11-10 16:57:47","id":"6","name":"Metro TV","title":"Go Healthy","time":"23:30","starttime":"2023-11-10 23:30:00","endtime":"2023-11-10 23:59:50","play":"","status":0},{"seq":"6962010","dateNow":"2023-11-10 16:57:47","id":"6","name":"Metro TV","title":"Go Healthy","time":"23:59","starttime":"2023-11-10 23:59:50","endtime":"2023-11-10 23:59:59","play":"","status":0}],"sum_list":26} +{"success":true,"message":"success","data":[{"id":7745473,"title":"Migi & Dali Episode 2","description":"","slug":"migi-dali-episode-2","start_end":"00:00 - 00:30","start_time":"2024-11-24 00:00:00","end_time":"2024-11-24 00:30:00","play":"https:\/\/op-catchupswift-1.dens.tv\/tvod\/tvod5p.m3u8?code=h02&starttime=1732381200&endtime=1732383000","status":1},{"id":7745478,"title":"Attack on Titan Season 3 Episode 7","description":"","slug":"attack-on-titan-season-3-episode-7","start_end":"02:30 - 03:00","start_time":"2024-11-24 02:30:00","end_time":"2024-11-24 03:00:00","play":"https:\/\/op-catchupswift-1.dens.tv\/tvod\/tvod5p.m3u8?code=h02&starttime=1732390200&endtime=1732392000","status":1}]} \ No newline at end of file diff --git a/sites/dens.tv/__data__/no_content.json b/sites/dens.tv/__data__/no_content.json index 0184ed4f..070e9d6f 100644 --- a/sites/dens.tv/__data__/no_content.json +++ b/sites/dens.tv/__data__/no_content.json @@ -1 +1 @@ -{"response":201,"data":[],"sum_list":1} +{"success":false,"error":{"status":"Not Found"}} \ No newline at end of file diff --git a/sites/dens.tv/dens.tv.channels.xml b/sites/dens.tv/dens.tv.channels.xml index 7af3c474..87e2f21e 100644 --- a/sites/dens.tv/dens.tv.channels.xml +++ b/sites/dens.tv/dens.tv.channels.xml @@ -1,14 +1,8 @@ - Al Jazeera Arabic Al Jazeera English Quran TV @@ -16,27 +10,32 @@ ANIPLUS HD antv BTV - CCM (Celestial Classic MV) CCTV-4 + CCM (Celestial Classic MV) Celestial Movies HD CGTN Documentary - CinemaWorld HD + Channel Jowo CNA DAAI TV + Dance TV Deluxe Lounge DensFood Channel DensKnowledge DensLife & Style DensPlay DensShowBiz + DIM TV DW-TV Elshinta TV FIGHT SPORTS HD France 24 - HITS HD - HITS MOVIES + FREEDOM HorizonSports + IDTV + Indonesiana TV Jak tv + KBS Korea + KBS World KIX HD Kompas TV K-PLUS HD @@ -48,15 +47,15 @@ My Cinema Europe HD My Family Channel My Kidz HD - NaDoo Commerce - NaDooKorean NET. NHK WORLD-JAPAN + Nusantara TV (NTV) RTV ROCK Action ROCK Entertainment HD RodjaTV Stingray Classica + TBN Thrill TRT World TV5MONDE ASIE @@ -67,4 +66,5 @@ TVRI TVRI Sport WION + W-Sport diff --git a/sites/dens.tv/dens.tv.config.js b/sites/dens.tv/dens.tv.config.js index 2f8fa29e..4ac40aa3 100644 --- a/sites/dens.tv/dens.tv.config.js +++ b/sites/dens.tv/dens.tv.config.js @@ -7,13 +7,15 @@ dayjs.extend(utc) dayjs.extend(timezone) dayjs.extend(customParseFormat) +const tz = 'Asia/Jakarta' + module.exports = { site: 'dens.tv', days: 2, url({ channel, date }) { - return `https://www.dens.tv/tvpage_octo/epgchannel2/${date.format('YYYY-MM-DD')}/${ + return `https://www.dens.tv/api/dens3/tv/TvChannels/listEpgByDate?date=${date.format('YYYY-MM-DD')}&id_channel=${ channel.site_id - }` + }&app_type=10` }, parser({ content }) { // parsing @@ -22,10 +24,16 @@ module.exports = { if (Array.isArray(response?.data)) { response.data.forEach(item => { + const title = item.title + const [, , , season, , , episode] = title.match(/( (Season |Season|S)(\d+))?( (Episode|Ep) (\d+))/) || + [null, null, null, null, null, null, null] programs.push({ - title: item.title, - start: dayjs.tz(item.starttime, 'YYYY-MM-DD HH:mm:ss', 'Asia/Jakarta'), - stop: dayjs.tz(item.endtime, 'YYYY-MM-DD HH:mm:ss', 'Asia/Jakarta') + title, + description: item.description, + season: season ? parseInt(season) : season, + episode: episode ? parseInt(episode) : episode, + start: dayjs.tz(item.start_time, 'YYYY-MM-DD HH:mm:ss', tz), + stop: dayjs.tz(item.end_time, 'YYYY-MM-DD HH:mm:ss', tz) }) }) } diff --git a/sites/dens.tv/dens.tv.test.js b/sites/dens.tv/dens.tv.test.js index 7824b998..3417000e 100644 --- a/sites/dens.tv/dens.tv.test.js +++ b/sites/dens.tv/dens.tv.test.js @@ -6,11 +6,11 @@ const utc = require('dayjs/plugin/utc') dayjs.extend(utc) -const date = dayjs.utc('2023-11-10').startOf('d') -const channel = { site_id: '6', xmltv_id: 'MetroTV.id', lang: 'id' } +const date = dayjs.utc('2024-11-24').startOf('d') +const channel = { site_id: '38', xmltv_id: 'AniplusAsia.sg', lang: 'id' } it('can generate valid url', () => { - expect(url({ channel, date })).toBe('https://www.dens.tv/tvpage_octo/epgchannel2/2023-11-10/6') + expect(url({ channel, date })).toBe('https://www.dens.tv/api/dens3/tv/TvChannels/listEpgByDate?date=2024-11-24&id_channel=38&app_type=10') }) it('can parse response', () => { @@ -22,18 +22,21 @@ it('can parse response', () => { return p }) - expect(results.length).toBe(26) + expect(results.length).toBe(2) expect(results[0]).toMatchObject({ - start: '2023-11-09T17:00:00.000Z', - stop: '2023-11-09T17:05:00.000Z', - title: 'Follow Up' + start: '2024-11-23T17:00:00.000Z', + stop: '2024-11-23T17:30:00.000Z', + title: 'Migi & Dali Episode 2', + episode: 2 }) - expect(results[12]).toMatchObject({ - start: '2023-11-10T04:05:00.000Z', - stop: '2023-11-10T06:05:00.000Z', - title: 'Metro Siang' + expect(results[1]).toMatchObject({ + start: '2024-11-23T19:30:00.000Z', + stop: '2024-11-23T20:00:00.000Z', + title: 'Attack on Titan Season 3 Episode 7', + season: 3, + episode: 7 }) })