Merge pull request #1703 from iptv-org/update-dsmart.com.tr

Update dsmart.com.tr
This commit is contained in:
Aleksandr Statciuk authored and GitHub committed 2023-01-17 13:49:49 +03:00
commit 2e915ec51d
5 files changed
+75 -54

No files matched your search

@@ -0,0 +1 @@
{"meta": {"code": 200, "message": "OK"}, "data": {"total": 203, "channels": [{"rating": 3, "ch_id": 805, "logo": "59f97253cfef0b75f4723ded", "ch_no": 1, "is_hd": true, "genre": [1, 2], "packages": ["58cfc9c7e138237a591f9a61", "58cfc9c7e138237a591f9a62", "58cfc9c7e138237a591f9a5f", "58cfc9c7e138237a591f9a60"], "slug": "moviesmart-premium", "hd": true, "_id": "58d29bb0eefad3db9c606290", "order": 1, "channel_name": "MovieSmart Premium", "description": "", "schedule": []}, {"rating": 3, "ch_id": 808, "logo": "59f9725ccfef0b75f4723df0", "ch_no": 2, "is_hd": true, "genre": [1, 2], "packages": ["58cfc9c7e138237a591f9a61", "58cfc9c7e138237a591f9a62"], "slug": "moviesmart-premium-2", "hd": true, "_id": "58d29bb0eefad3db9c606291", "order": 2, "channel_name": "MovieSmart Premium 2", "description": "", "schedule": []}, {"logo": "", "ch_no": 3, "genre": [2], "packages": ["58cfc9c7e138237a591f9a62", "58cfc9c7e138237a591f9a61", "58cfc9c7e138237a591f9a60", "58cfc9c7e138237a591f9a5f"], "slug": "sinema-tv", "_id": "5fe07d7acfef0b1593275751", "order": 3, "channel_name": "Sinema TV", "schedule": [{"actor": "", "year": "2017", "id": "623c24abcfef0b02d61003cd", "subject": "Bizi Ay\u0131ran Her \u015eey (All That Divides Us) T\u00fcr:Gerilim,Dram; Y\u00f6netmen:Thierry Klifa; Oyuncular:Catherine Deneuve,Diane Kruger,Nekfeu", "audio_subtitles": "", "start_date": "2022-12-30T22:00:00Z", "channel": "5fe07d7acfef0b1593275751", "description": "Iss\u0131zl\u0131\u011f\u0131n ortas\u0131nda yer alan orta s\u0131n\u0131f bir evde bir anne k\u0131z ya\u015famaktad\u0131r. \u00c7evrelerindeki ta\u015flar\u0131 insanlarla ya\u015fad\u0131klar\u0131 \u00e7at\u0131\u015fmalar, anne-k\u0131z\u0131n hayat\u0131n\u0131 olumsuz y\u00f6nde etkilemektedir. K\u0131z\u0131n\u0131n ans\u0131z\u0131n ortadan kaybolmas\u0131, bu \u00e7at\u0131\u015fmalar\u0131n seviyesini art\u0131racak ve anne, k\u0131z\u0131n\u0131 bulmak i\u00e7in her t\u00fcrl\u00fc yola ba\u015fvuracakt\u0131r. ", "director": "", "end_date": "2022-12-30T23:45:00Z", "genre": "sinema/genel", "program_name": "Bizi Ay\u0131ran Her \u015eey", "day": "2023-01-15T21:00:00Z", "episode": "", "screen_violence": 4, "_id": "63aff2b8cfef0b02d2549811", "duration": "1:45:00"}, {"actor": "", "year": "2020", "id": "636003eccfef0b02d2375788", "subject": "Pixie (Pixie) T\u00fcr:Komedi,Su\u00e7,Gerilim; Y\u00f6netmen:Barnaby Thompson; Oyuncular:Olivia Cooke,Ben Hardy,Daryl McCormack", "audio_subtitles": "", "start_date": "2022-12-30T23:45:00Z", "channel": "5fe07d7acfef0b1593275751", "description": "Annesinin intikam\u0131n\u0131 almak isteyen Pixie, dahiyane bir soygun planlar. Fakat i\u015fler planlad\u0131\u011f\u0131 gibi gitmeyince kendini \u0130rlanda\u2019n\u0131n vah\u015fi gangsterleri taraf\u0131ndan kovalanan iki adamla birlikte ka\u00e7arken bulur. ", "director": "", "end_date": "2022-12-31T01:30:00Z", "genre": "sinema/genel", "program_name": "Pixie", "day": "2023-01-15T21:00:00Z", "episode": "", "screen_violence": 4, "_id": "63aff2b8cfef0b02d2549812", "duration": "1:45:00"}, {"actor": "", "year": "2020", "id": "623c24abcfef0b02d6100357", "subject": "K\u00fc\u00e7\u00fck Bal\u0131k (Little Fish (Spwa)) T\u00fcr:Romantik,Bilim-Kurgu,Dram; Y\u00f6netmen:Chad Hartigan; Oyuncular:Olivia Cooke,Jack O'Connell,Soko", "audio_subtitles": "", "start_date": "2022-12-31T01:30:00Z", "channel": "5fe07d7acfef0b1593275751", "description": "D\u00fcnya \u00fczerinde bir salg\u0131n patlak verir ve en b\u00fcy\u00fck belirtisi haf\u0131za kayb\u0131d\u0131r. Yeni evli \u00e7ift Emma ve Jude kendilerini bu d\u00fcnyan\u0131n i\u00e7inde bulurlar. \u00c7ok ge\u00e7meden korktuklar\u0131 ba\u015flar\u0131na gelir ve Jude hastal\u0131\u011fa yakalan\u0131r. Gen\u00e7 \u00e7ift, ili\u015fkilerine dair an\u0131lar\u0131n\u0131 kaybetmemek i\u00e7in her \u015feyi yapmaya haz\u0131rd\u0131r.", "director": "", "end_date": "2022-12-31T03:30:00Z", "genre": "sinema/bilim-kurgu", "program_name": "K\u00fc\u00e7\u00fck Bal\u0131k", "day": "2023-01-15T21:00:00Z", "episode": "", "screen_violence": 4, "_id": "63aff2b8cfef0b02d2549813", "duration": "2:00:00"}, {"actor": "", "year": "2020", "id": "6386fa91cfef0b02d24439a3", "subject": "Hayat\u0131n Yollar\u0131 (The Roads Not Taken) T\u00fcr:Dram; Y\u00f6netmen:Sally Potter; Oyuncular:Javier Bardem,Elle Fanning,Salma Hayek", "audio_subtitles": "", "start_date": "2022-12-31T03:30:00Z", "channel": "5fe07d7acfef0b1593275751", "description": "New York\u2019ta hayatlar\u0131n\u0131 s\u00fcrd\u00fcren baba Leo ve k\u0131z\u0131 Molly, Leo\u2019nun mental rahats\u0131zl\u0131\u011f\u0131ndan dolay\u0131 sorunlar ya\u015famaya ba\u015flar. Leo\u2019nun kafas\u0131n\u0131n i\u00e7inde ya\u015fad\u0131\u011f\u0131 farkl\u0131 paralel hayatlar yava\u015f yava\u015f g\u00fcn y\u00fcz\u00fcne \u00e7\u0131kmaya ba\u015flay\u0131nca, insanlardan kopmaya ve kendi ya\u015fam\u0131n\u0131 idame ettiremeyecek d\u00fczeyde ruhsal ve fiziksel de\u011fi\u015fimler ge\u00e7irmeye ba\u015flar. ", "diLine truncated
@@ -0,0 +1 @@
{"meta": {"code": 200, "message": "OK"}, "data": {"total": 203, "channels": [{"rating": 3, "ch_id": 805, "logo": "59f97253cfef0b75f4723ded", "ch_no": 1, "is_hd": true, "genre": [1, 2], "packages": ["58cfc9c7e138237a591f9a61", "58cfc9c7e138237a591f9a62", "58cfc9c7e138237a591f9a5f", "58cfc9c7e138237a591f9a60"], "slug": "moviesmart-premium", "hd": true, "_id": "58d29bb0eefad3db9c606290", "order": 1, "channel_name": "MovieSmart Premium", "description": "", "schedule": []}, {"rating": 3, "ch_id": 808, "logo": "59f9725ccfef0b75f4723df0", "ch_no": 2, "is_hd": true, "genre": [1, 2], "packages": ["58cfc9c7e138237a591f9a61", "58cfc9c7e138237a591f9a62"], "slug": "moviesmart-premium-2", "hd": true, "_id": "58d29bb0eefad3db9c606291", "order": 2, "channel_name": "MovieSmart Premium 2", "description": "", "schedule": []}, {"logo": "", "ch_no": 3, "genre": [2], "packages": ["58cfc9c7e138237a591f9a62", "58cfc9c7e138237a591f9a61", "58cfc9c7e138237a591f9a60", "58cfc9c7e138237a591f9a5f"], "slug": "sinema-tv", "_id": "5fe07d7acfef0b1593275751", "order": 3, "channel_name": "Sinema TV", "schedule": []}, {"logo": "", "ch_no": 4, "genre": [2], "packages": ["58cfc9c7e138237a591f9a5f", "58cfc9c7e138237a591f9a60", "58cfc9c7e138237a591f9a61", "58cfc9c7e138237a591f9a62"], "slug": "sinema-tv-2", "_id": "5fe07d9fcfef0b1593275754", "order": 4, "channel_name": "Sinema TV 2", "schedule": []}, {"logo": "", "ch_no": 5, "genre": [2], "packages": ["58cfc9c7e138237a591f9a5f", "58cfc9c7e138237a591f9a60", "58cfc9c7e138237a591f9a61", "58cfc9c7e138237a591f9a62"], "slug": "sinema-tv-aksiyon", "_id": "5fe07dd5cfef0b1593275758", "order": 5, "channel_name": "Sinema TV Aksiyon", "schedule": []}, {"logo": "", "ch_no": 6, "genre": [2], "packages": ["58cfc9c7e138237a591f9a5f", "58cfc9c7e138237a591f9a60", "58cfc9c7e138237a591f9a61", "58cfc9c7e138237a591f9a62"], "slug": "sinema-tv-aksiyon-2", "_id": "5fe07e23cfef0b15932757a1", "order": 6, "channel_name": "Sinema TV Aksiyon 2", "schedule": []}, {"logo": "", "ch_no": 7, "genre": [2], "packages": ["58cfc9c7e138237a591f9a5f", "58cfc9c7e138237a591f9a60", "58cfc9c7e138237a591f9a61", "58cfc9c7e138237a591f9a62"], "slug": "sinema-tv-aile", "_id": "5fe07e42cfef0b15932757a3", "order": 7, "channel_name": "Sinema TV Aile", "schedule": []}, {"logo": "", "ch_no": 8, "genre": [2], "packages": ["58cfc9c7e138237a591f9a5f", "58cfc9c7e138237a591f9a60", "58cfc9c7e138237a591f9a61", "58cfc9c7e138237a591f9a62"], "slug": "sinema-tv-aile-2", "_id": "5fe07eabcfef0b15932757a6", "order": 8, "channel_name": "Sinema TV Aile 2", "schedule": []}, {"logo": "", "ch_no": 9, "genre": [2], "packages": ["58cfc9c7e138237a591f9a5f", "58cfc9c7e138237a591f9a60", "58cfc9c7e138237a591f9a61", "58cfc9c7e138237a591f9a62"], "slug": "sinema-tv-comedy", "_id": "5fe07f29cfef0b1593275800", "order": 9, "channel_name": "Sinema TV Comedy", "schedule": []}, {"logo": "", "ch_no": 10, "genre": [2], "packages": ["58cfc9c7e138237a591f9a5f", "58cfc9c7e138237a591f9a60", "58cfc9c7e138237a591f9a61", "58cfc9c7e138237a591f9a62"], "slug": "sinema-tv-comedy-2", "_id": "5fe07f45cfef0b159327581f", "order": 10, "channel_name": "Sinema TV Comedy 2", "schedule": []}, {"logo": "", "ch_no": 11, "genre": [2], "packages": ["58cfc9c7e138237a591f9a5f", "58cfc9c7e138237a591f9a60", "58cfc9c7e138237a591f9a61", "58cfc9c7e138237a591f9a62"], "slug": "sinema-tv-1001", "_id": "5fe07f5dcfef0b1593275822", "order": 11, "channel_name": "Sinema TV 1001", "schedule": []}, {"logo": "", "ch_no": 12, "genre": [2], "packages": ["58cfc9c7e138237a591f9a5f", "58cfc9c7e138237a591f9a60", "58cfc9c7e138237a591f9a61", "58cfc9c7e138237a591f9a62"], "slug": "sinema-tv-1002", "_id": "5fe07f72cfef0b159327585a", "order": 12, "channel_name": "Sinema TV 1002", "schedule": []}, {"rating": 3, "ch_id": 879, "logo": "59f19761cfef0b221f7da7e6", "ch_no": 13, "is_hd": false, "genre": [1, 2], "packages": ["58cfc9c7e138237a591f9a60", "58cfc9c7e138237a591f9a61", "58cfc9c7e138237a591f9a62", "58cfc9c7e138237a591f9a5f"], "slug": "filmbox", "hd": true, "_id": "58d29bb0eefad3db9c6062ba", "order": 13, "channel_name": "FilmBox", "description": "", "schedule": []}, {"rating": 3, "ch_id": 831, "logo": "59f97297cfef0b75f4723f91", "ch_no": 14, "is_hd": true, "genre": [1, 2], "packages": ["58cfc9c7e138237a591f9a61", "58cfc9c7e138237a591f9a62"], "slug": "moviesmart-classic", "hd": true, "_id": "58d29bb0eefad3db9c60629a", "order": 14, "channel_name": "MovieSmart Classic", "description": "", "schedule": []}, {"rating": 3, "ch_id": 830, "logo": "59f972a1cfef0b75f4723f94", "ch_no": 15, "is_hd": true, "genre": [1, 2], "packages": ["58cfc9c7e138237a591f9a61", "58cfc9c7e138237a591f9a62", "58cfc9c7e138237a591f9a5f", "58cfc9c7e138237a591f9a60"], "slug": "moviesmart-turk", "hd": true, "_id": "58d29bb0eefad3db9c606299", "order": 15, "channel_name": "MovieSmart T\u00fcrk", "description": "", "schedule": []}, {"rating": 3, "ch_id": 692, "logo": "59f972a9cfef0b75f4723f97", "ch_no": 16, "is_hd": true, "genre": [1, 4], "packages": ["58cfc9c7e138237a591f9a61",Line truncated
@@ -1,22 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<site site="dsmart.com.tr">
<channels>
<channel lang="en" xmltv_id="ANews.tr" site_id="59638e5fcfef0b43f0fd31b5">A News</channel>
<channel lang="en" xmltv_id="BabyTV.uk" site_id="58d29bb0eefad3db9c6062b7">Baby TV Europe</channel>
<channel lang="en" xmltv_id="BBCWorldNewsEurope.uk" site_id="58d29bb0eefad3db9c6062c6">BBC World News Europe</channel>
<channel lang="en" xmltv_id="CNNInternationalEurope.us" site_id="58d29bb0eefad3db9c6062b8">CNN International Europe</channel>
<channel lang="en" xmltv_id="FashionTVEurope.fr" site_id="59dca3b2cfef0b4d80a47b77">FashionTV HD Europe</channel>
<channel lang="en" xmltv_id="NBATV.us" site_id="58d29bb0eefad3db9c60626e">NBA TV</channel>
<channel lang="en" xmltv_id="TraceUrban.fr" site_id="58d29bb0eefad3db9c6062c5">Trace Urban</channel>
<channel lang="tr" xmltv_id="24KitchenTurkey.tr" site_id="58d29bb0eefad3db9c60627b">24 Kitchen Türkiye</channel>
<channel lang="tr" xmltv_id="24TV.tr" site_id="58d29bb0eefad3db9c60622e">24 TV</channel>
<channel lang="tr" xmltv_id="360.tr" site_id="58d29bb0eefad3db9c606236">360</channel>
<channel lang="tr" xmltv_id="AHaber.tr" site_id="58d29bb0eefad3db9c60625e">A Haber</channel>
<channel lang="tr" xmltv_id="ANews.tr" site_id="59638e5fcfef0b43f0fd31b5">A News</channel>
<channel lang="tr" xmltv_id="ASpor.tr" site_id="58d29bb0eefad3db9c6062b2">A Spor</channel>
<channel lang="tr" xmltv_id="ATV.tr" site_id="58d29bb0eefad3db9c60625f">ATV Türkiye</channel>
<channel lang="tr" xmltv_id="BabyTV.uk" site_id="58d29bb0eefad3db9c6062b7">Baby TV Europe</channel>
<channel lang="tr" xmltv_id="BBCEarthTurkey.tr" site_id="58d29bb0eefad3db9c6062bc">BBC Earth Türkiye</channel>
<channel lang="tr" xmltv_id="BBCWorldNewsEurope.uk" site_id="58d29bb0eefad3db9c6062c6">BBC World News Europe</channel>
<channel lang="tr" xmltv_id="BBNTurk.tr" site_id="5fd318b4cfef0b15932230d0">BBN Türk</channel>
<channel lang="tr" xmltv_id="BeyazTV.tr" site_id="58d29bb0eefad3db9c606298">Beyaz TV</channel>
<channel lang="tr" xmltv_id="BloombergHT.tr" site_id="58d29bb0eefad3db9c60623e">Bloomberg HT</channel>
<channel lang="tr" xmltv_id="BoomerangTurkey.tr" site_id="58d29bb0eefad3db9c6062b9">Boomerang Türkiye</channel>
<channel lang="tr" xmltv_id="CartoonNetworkTurkey.tr" site_id="58d29bb0eefad3db9c6062c8">Cartoon Network Türkiye</channel>
<channel lang="tr" xmltv_id="CNNInternationalEurope.us" site_id="58d29bb0eefad3db9c6062b8">CNN International Europe</channel>
<channel lang="tr" xmltv_id="CNNTurk.tr" site_id="59dca1f3cfef0b4d80a47a5f">CNN Türk</channel>
<channel lang="tr" xmltv_id="CocukSmart.tr" site_id="58d29bb0eefad3db9c6062b5">Çocuk Smart</channel>
<channel lang="tr" xmltv_id="DaVinci.de" site_id="58d29bb0eefad3db9c6062b6">Da Vinci</channel>
@@ -31,7 +34,6 @@
<channel lang="tr" xmltv_id="EuroD.tr" site_id="59dcbfdccfef0b4d80a4974a">Euro D</channel>
<channel lang="tr" xmltv_id="Eurosport1.fr" site_id="58d29bb0eefad3db9c6062aa">Eurosport 1</channel>
<channel lang="tr" xmltv_id="Eurosport2.fr" site_id="58d29bb0eefad3db9c606281">Eurosport 2</channel>
<channel lang="tr" xmltv_id="FashionTVEurope.fr" site_id="59dca3b2cfef0b4d80a47b77">FashionTV HD Europe</channel>
<channel lang="tr" xmltv_id="FastFunBox.nl" site_id="58d29bb0eefad3db9c6062bf">Fast &amp; FunBox HD</channel>
<channel lang="tr" xmltv_id="FBTV.tr" site_id="58d29bb0eefad3db9c606235">FB TV</channel>
<channel lang="tr" xmltv_id="FightBox.nl" site_id="58d29bb0eefad3db9c6062b4">FightBox HD</channel>
@@ -54,7 +56,6 @@
<channel lang="tr" xmltv_id="MovieSmartTurk.tr" site_id="58d29bb0eefad3db9c606299">MovieSmart Türk</channel>
<channel lang="tr" xmltv_id="NationalGeographicTurkey.tr" site_id="58d29bb0eefad3db9c6062a4">National Geographic Türkiye</channel>
<channel lang="tr" xmltv_id="NationalGeographicWildTurkey.tr" site_id="58d29bb0eefad3db9c6062a5">National Geographic Wild Türkiye</channel>
<channel lang="tr" xmltv_id="NBATV.us" site_id="58d29bb0eefad3db9c60626e">NBA TV</channel>
<channel lang="tr" xmltv_id="NTV.tr" site_id="58d29bb0eefad3db9c60623a">NTV</channel>
<channel lang="tr" xmltv_id="Number1Turk.tr" site_id="58d29bb0eefad3db9c606245">Number 1 Türk</channel>
<channel lang="tr" xmltv_id="Number1TV.tr" site_id="58d29bb0eefad3db9c60623c">Number 1 TV</channel>
@@ -82,7 +83,6 @@
<channel lang="tr" xmltv_id="TGRTHaber.tr" site_id="58d29bb0eefad3db9c60623d">TGRT Haber</channel>
<channel lang="tr" xmltv_id="TLCTurkey.tr" site_id="58d29bb0eefad3db9c606238">TLC Türkiye</channel>
<channel lang="tr" xmltv_id="TMB.tr" site_id="58d29bb0eefad3db9c606272">TMB</channel>
<channel lang="tr" xmltv_id="TraceUrban.fr" site_id="58d29bb0eefad3db9c6062c5">Trace Urban</channel>
<channel lang="tr" xmltv_id="TRT1.tr" site_id="58d29bb0eefad3db9c606274">TRT 1</channel>
<channel lang="tr" xmltv_id="TRT2.tr" site_id="58d29bb0eefad3db9c606263">TRT 2</channel>
<channel lang="tr" xmltv_id="TRT3.tr" site_id="58d29bb0eefad3db9c606231">TRT 3</channel>
+26 -21
View File
@@ -1,7 +1,9 @@
const dayjs = require('dayjs')
const utc = require('dayjs/plugin/utc')
const customParseFormat = require('dayjs/plugin/customParseFormat')
dayjs.extend(utc)
dayjs.extend(customParseFormat)
module.exports = {
site: 'dsmart.com.tr',
@@ -16,23 +18,27 @@ module.exports = {
'YYYY-MM-DD'
)}`
},
parser: function ({ content, channel, date }) {
parser: function ({ content, channel }) {
let offset = -1
let programs = []
const items = parseItems(content, channel)
items.forEach(item => {
let start = parseStart(item, date)
if (offset === -1 && start.hour() > 18) start = start.subtract(1, 'd')
let stop = parseStop(item, date)
if (offset === -1 && stop.hour() > 18) stop = stop.subtract(1, 'd')
if (start.hour() < 18 || stop.hour() < 18) offset = 0
items.forEach((item, i) => {
const prev = programs[programs.length - 1]
let start
if (prev) {
start = parseStart(item, prev.stop)
} else {
start = parseStart(item, dayjs.utc(item.day))
}
let duration = parseDuration(item)
let stop = start.add(duration, 's')
programs.push({
title: item.program_name,
category: item.genre,
description: item.description,
start: start.toJSON(),
stop: stop.toJSON()
description: item.description.trim(),
start,
stop
})
})
@@ -41,22 +47,21 @@ module.exports = {
}
function parseStart(item, date) {
return dayjs.utc(item.start_date).set('date', date.get('date'))
const time = dayjs.utc(item.start_date)
return dayjs.utc(`${date.format('YYYY-MM-DD')} ${time.format('HH:mm:ss')}`, 'YYYY-MM-DD HH:mm:ss')
}
function parseStop(item, date) {
return dayjs.utc(item.end_date).set('date', date.get('date'))
}
function parseDuration(item) {
const [_, H, mm, ss] = item.duration.match(/(\d+):(\d+):(\d+)$/)
function parseContent(content, channel) {
const data = JSON.parse(content)
if (!data || !data.data || !Array.isArray(data.data.channels)) return null
return data.data.channels.find(i => i._id == channel.site_id)
return parseInt(H) * 3600 + parseInt(mm) * 60 + parseInt(ss)
}
function parseItems(content, channel) {
const data = parseContent(content, channel)
const data = JSON.parse(content)
if (!data || !data.data || !Array.isArray(data.data.channels)) return null
const channelData = data.data.channels.find(i => i._id == channel.site_id)
return data ? data.schedule : []
return channelData && Array.isArray(channelData.schedule) ? channelData.schedule : []
}
+40 -26
View File
@@ -2,49 +2,63 @@
const { parser, url } = require('./dsmart.com.tr.config.js')
const dayjs = require('dayjs')
const fs = require('fs')
const path = require('path')
const utc = require('dayjs/plugin/utc')
const customParseFormat = require('dayjs/plugin/customParseFormat')
dayjs.extend(customParseFormat)
dayjs.extend(utc)
const date = dayjs.utc('2021-11-06', 'YYYY-MM-DD').startOf('d')
const date = dayjs.utc('2023-01-16', 'YYYY-MM-DD').startOf('d')
const channel = {
site_id: '58d29bb0eefad3db9c606290',
xmltv_id: 'MovieSmartPremium.tr'
site_id: '5fe07d7acfef0b1593275751',
xmltv_id: 'SinemaTV.tr'
}
const content = `{"meta": {"code": 200, "message": "OK"}, "data": {"total": 200, "channels": [{"rating": 3, "ch_id": 805, "logo": "59f97253cfef0b75f4723ded", "ch_no": 1, "is_hd": true, "genre": [1, 2], "packages": ["58cfc9c7e138237a591f9a61", "58cfc9c7e138237a591f9a62", "58cfc9c7e138237a591f9a5f", "58cfc9c7e138237a591f9a60"], "slug": "moviesmart-premium", "hd": true, "_id": "58d29bb0eefad3db9c606290", "order": 1, "channel_name": "MovieSmart Premium", "description": "", "schedule": [{"actor": "", "year": "2015", "id": "60488f69cfef0b15935d70d7", "subject": "Goosebumps: Canavarlar Firarda (Goosebumps) T\\u00fcr: Komedi - Macera Y\\u00f6netmen: Rob Letterman Oyuncular: Jack Black, Dylan Minnette, Odeya Rush", "audio_subtitles": 3, "start_date": "2021-11-03T21:15:00Z", "channel": "58d29bb0eefad3db9c606290", "description": "B\\u00fcy\\u00fck \\u015fehirden k\\u00fc\\u00e7\\u00fck bir kasabaya ta\\u015f\\u0131nd\\u0131\\u011f\\u0131 i\\u00e7in mutsuz olan Zach Cooper, ta\\u015f\\u0131nd\\u0131klar\\u0131 evin tam yan\\u0131ndaki evde ya\\u015fayan g\\u00fczel k\\u0131z Hannah ile kar\\u015f\\u0131la\\u015f\\u0131p, Champ ile de k\\u0131sa s\\u00fcrede arkada\\u015f olunca yeni bir hayat i\\u00e7in umutlan\\u0131r. Ancak Zach, Hannah'n\\u0131n gizemli babas\\u0131n\\u0131n Goosebumps kitaplar\\u0131n\\u0131n yazar\\u0131, R.L. Stine oldu\\u011funu \\u00f6\\u011frendi\\u011finde, olaylar\\u0131n normal gitmeyece\\u011fini anlar. (Dil:T\\u00fcrk\\u00e7e/Orijinal - Altyaz\\u0131:T\\u00fcrk\\u00e7e/\\u0130ngilizce)", "director": "", "end_date": "2021-11-03T23:55:00Z", "genre": "sinema/genel", "program_name": "Goosebumps: Canavarlar Firarda", "day": "2021-11-05T21:00:00Z", "episode": "", "screen_violence": 4, "_id": "6185a3f6cfef0b1593e44e63", "duration": "1:40:00"},{"actor": "", "year": "2015", "id": "60488f69cfef0b15935d70d7", "subject": "Goosebumps: Canavarlar Firarda (Goosebumps) T\\u00fcr: Komedi - Macera Y\\u00f6netmen: Rob Letterman Oyuncular: Jack Black, Dylan Minnette, Odeya Rush", "audio_subtitles": 3, "start_date": "2021-11-03T23:55:00Z", "channel": "58d29bb0eefad3db9c606290", "description": "B\\u00fcy\\u00fck \\u015fehirden k\\u00fc\\u00e7\\u00fck bir kasabaya ta\\u015f\\u0131nd\\u0131\\u011f\\u0131 i\\u00e7in mutsuz olan Zach Cooper, ta\\u015f\\u0131nd\\u0131klar\\u0131 evin tam yan\\u0131ndaki evde ya\\u015fayan g\\u00fczel k\\u0131z Hannah ile kar\\u015f\\u0131la\\u015f\\u0131p, Champ ile de k\\u0131sa s\\u00fcrede arkada\\u015f olunca yeni bir hayat i\\u00e7in umutlan\\u0131r. Ancak Zach, Hannah'n\\u0131n gizemli babas\\u0131n\\u0131n Goosebumps kitaplar\\u0131n\\u0131n yazar\\u0131, R.L. Stine oldu\\u011funu \\u00f6\\u011frendi\\u011finde, olaylar\\u0131n normal gitmeyece\\u011fini anlar. (Dil:T\\u00fcrk\\u00e7e/Orijinal - Altyaz\\u0131:T\\u00fcrk\\u00e7e/\\u0130ngilizce)", "director": "", "end_date": "2021-11-03T01:55:00Z", "genre": "sinema/genel", "program_name": "Goosebumps: Canavarlar Firarda", "day": "2021-11-05T21:00:00Z", "episode": "", "screen_violence": 4, "_id": "6185a3f6cfef0b1593e44e63", "duration": "1:40:00"}]}]}}`
it('can generate valid url', () => {
expect(url({ date, channel })).toBe(
'https://www.dsmart.com.tr/api/v1/public/epg/schedules?page=1&limit=500&day=2021-11-06'
'https://www.dsmart.com.tr/api/v1/public/epg/schedules?page=1&limit=500&day=2023-01-16'
)
})
it('can parse response', () => {
const result = parser({ date, channel, content })
expect(result).toMatchObject([
{
start: '2021-11-05T21:15:00.000Z',
stop: '2021-11-05T23:55:00.000Z',
title: 'Goosebumps: Canavarlar Firarda',
category: 'sinema/genel',
description: `Büyük şehirden küçük bir kasabaya taşındığı için mutsuz olan Zach Cooper, taşındıkları evin tam yanındaki evde yaşayan güzel kız Hannah ile karşılaşıp, Champ ile de kısa sürede arkadaş olunca yeni bir hayat için umutlanır. Ancak Zach, Hannah'nın gizemli babasının Goosebumps kitaplarının yazarı, R.L. Stine olduğunu öğrendiğinde, olayların normal gitmeyeceğini anlar. (Dil:Türkçe/Orijinal - Altyazı:Türkçe/İngilizce)`
},
{
start: '2021-11-05T23:55:00.000Z',
stop: '2021-11-06T01:55:00.000Z',
title: 'Goosebumps: Canavarlar Firarda',
category: 'sinema/genel',
description: `Büyük şehirden küçük bir kasabaya taşındığı için mutsuz olan Zach Cooper, taşındıkları evin tam yanındaki evde yaşayan güzel kız Hannah ile karşılaşıp, Champ ile de kısa sürede arkadaş olunca yeni bir hayat için umutlanır. Ancak Zach, Hannah'nın gizemli babasının Goosebumps kitaplarının yazarı, R.L. Stine olduğunu öğrendiğinde, olayların normal gitmeyeceğini anlar. (Dil:Türkçe/Orijinal - Altyazı:Türkçe/İngilizce)`
}
])
const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.json'))
const results = parser({ channel, content }).map(p => {
p.start = p.start.toJSON()
p.stop = p.stop.toJSON()
return p
})
expect(results[0]).toMatchObject({
start: '2023-01-15T22:00:00.000Z',
stop: '2023-01-15T23:45:00.000Z',
title: 'Bizi Ayıran Her Şey',
category: 'sinema/genel',
description: `Issızlığın ortasında yer alan orta sınıf bir evde bir anne kız yaşamaktadır. Çevrelerindeki taşları insanlarla yaşadıkları çatışmalar, anne-kızın hayatını olumsuz yönde etkilemektedir. Kızının ansızın ortadan kaybolması, bu çatışmaların seviyesini artıracak ve anne, kızını bulmak için her türlü yola başvuracaktır.`
})
expect(results[1]).toMatchObject({
start: '2023-01-15T23:45:00.000Z',
stop: '2023-01-16T01:30:00.000Z',
title: 'Pixie',
category: 'sinema/genel',
description: `Annesinin intikamını almak isteyen Pixie, dahiyane bir soygun planlar. Fakat işler planladığı gibi gitmeyince kendini İrlanda’nın vahşi gangsterleri tarafından kovalanan iki adamla birlikte kaçarken bulur.`
})
expect(results[12]).toMatchObject({
start: '2023-01-16T20:30:00.000Z',
stop: '2023-01-16T22:30:00.000Z',
title: 'Seberg',
category: 'sinema/genel',
description: `Başrolünde ünlü yıldız Kristen Stewart’ın yer aldığı politik gerilim, 1960’ların sonunda insan hakları aktivisti Hakim Jamal ile yaşadığı politik ve romantik ilişki sebebiyle FBI tarafından hedef alınan, Fransız Yeni Dalgası’nın sevilen yüzü ve Serseri Aşıklar’ın yıldızı Jean Seberg’ün çarpıcı hikayesini anlatıyor.`
})
})
it('can handle empty guide', () => {
const result = parser({
date,
const results = parser({
channel,
content: `{"meta": {"code": 200, "message": "OK"}, "data": {"total": 200, "channels": []}}`
content: fs.readFileSync(path.resolve(__dirname, '__data__/no_content.json'))
})
expect(result).toMatchObject([])
expect(results).toMatchObject([])
})