mirror of
https://github.com/iptv-org/epg
synced 2025-12-18 03:16:53 -05:00
Merge pull request #205 from iptv-org/add-dsmart-com-tr
Add guide from dsmart.com.tr
This commit is contained in:
60
sites/dsmart.com.tr/dsmart.com.tr.config.js
Normal file
60
sites/dsmart.com.tr/dsmart.com.tr.config.js
Normal file
@@ -0,0 +1,60 @@
|
||||
const dayjs = require('dayjs')
|
||||
const utc = require('dayjs/plugin/utc')
|
||||
|
||||
dayjs.extend(utc)
|
||||
|
||||
module.exports = {
|
||||
request: {
|
||||
timeout: 15000
|
||||
},
|
||||
site: 'dsmart.com.tr',
|
||||
url({ date, channel }) {
|
||||
return `https://www.dsmart.com.tr/api/v1/public/epg/schedules?page=${
|
||||
channel.site_id
|
||||
}&limit=1&day=${date.format('YYYY-MM-DD')}`
|
||||
},
|
||||
logo({ content }) {
|
||||
const data = JSON.parse(content)
|
||||
if (!data || !data.data.channels.length) return null
|
||||
const logoId = data.data.channels[0].logo
|
||||
|
||||
return logoId ? `https://www.dsmart.com.tr/epg/images/0x50/${logoId}` : null
|
||||
},
|
||||
parser: function ({ content, channel, date }) {
|
||||
let offset = -1
|
||||
let programs = []
|
||||
const items = parseItems(content)
|
||||
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
|
||||
|
||||
programs.push({
|
||||
title: item.program_name,
|
||||
category: item.genre,
|
||||
description: item.description,
|
||||
start: start.toJSON(),
|
||||
stop: stop.toJSON()
|
||||
})
|
||||
})
|
||||
|
||||
return programs
|
||||
}
|
||||
}
|
||||
|
||||
function parseStart(item, date) {
|
||||
return dayjs.utc(item.start_date).set('date', date.get('date'))
|
||||
}
|
||||
|
||||
function parseStop(item, date) {
|
||||
return dayjs.utc(item.end_date).set('date', date.get('date'))
|
||||
}
|
||||
|
||||
function parseItems(content) {
|
||||
const data = JSON.parse(content)
|
||||
if (!data || !data.data.channels.length) return []
|
||||
|
||||
return data.data.channels[0].schedule
|
||||
}
|
||||
56
sites/dsmart.com.tr/dsmart.com.tr.test.js
Normal file
56
sites/dsmart.com.tr/dsmart.com.tr.test.js
Normal file
@@ -0,0 +1,56 @@
|
||||
// npx epg-grabber --config=sites/dsmart.com.tr/dsmart.com.tr.config.js --channels=sites/dsmart.com.tr/dsmart.com.tr_tr.channels.xml --output=.gh-pages/guides/tr/dsmart.com.tr.epg.xml --days=2
|
||||
|
||||
const { parser, url, logo } = require('./dsmart.com.tr.config.js')
|
||||
const dayjs = require('dayjs')
|
||||
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 channel = {
|
||||
site_id: '1',
|
||||
xmltv_id: 'MovieSmartPremium.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', () => {
|
||||
const result = url({ date, channel })
|
||||
expect(result).toBe(
|
||||
'https://www.dsmart.com.tr/api/v1/public/epg/schedules?page=1&limit=1&day=2021-11-06'
|
||||
)
|
||||
})
|
||||
|
||||
it('can get logo url', () => {
|
||||
const result = logo({ content })
|
||||
expect(result).toBe('https://www.dsmart.com.tr/epg/images/0x50/59f97253cfef0b75f4723ded')
|
||||
})
|
||||
|
||||
fit('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)`
|
||||
}
|
||||
])
|
||||
})
|
||||
|
||||
it('can handle empty guide', () => {
|
||||
const result = parser({
|
||||
date,
|
||||
channel,
|
||||
content: `{"meta": {"code": 200, "message": "OK"}, "data": {"total": 200, "channels": []}}`
|
||||
})
|
||||
expect(result).toMatchObject([])
|
||||
})
|
||||
110
sites/dsmart.com.tr/dsmart.com.tr_tr.channels.xml
Normal file
110
sites/dsmart.com.tr/dsmart.com.tr_tr.channels.xml
Normal file
@@ -0,0 +1,110 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<site site="dsmart.com.tr">
|
||||
<channels>
|
||||
<channel lang="tr" xmltv_id="24KitchenTurkiye.us" site_id="52">24 Kitchen Türkiye</channel>
|
||||
<channel lang="tr" xmltv_id="24TV.tr" site_id="33">24 TV</channel>
|
||||
<channel lang="tr" xmltv_id="360.tr" site_id="42">360</channel>
|
||||
<channel lang="tr" xmltv_id="AHaber.tr" site_id="34">A Haber</channel>
|
||||
<channel lang="tr" xmltv_id="ANews.tr" site_id="168">A News</channel>
|
||||
<channel lang="tr" xmltv_id="APara.tr" site_id="51">A Para</channel>
|
||||
<channel lang="tr" xmltv_id="ASpor.tr" site_id="76">A Spor</channel>
|
||||
<channel lang="tr" xmltv_id="ATVTurkiye.tr" site_id="24">ATV Türkiye</channel>
|
||||
<channel lang="tr" xmltv_id="BabyTVEurope.uk" site_id="107">Baby TV Europe</channel>
|
||||
<channel lang="tr" xmltv_id="BBCEarthTurkiye.uk" site_id="54">BBC Earth Türkiye</channel>
|
||||
<channel lang="tr" xmltv_id="BBCWorldNewsEurope.uk" site_id="50">BBC World News Europe</channel>
|
||||
<channel lang="tr" xmltv_id="BBNTurk.tr" site_id="37">BBN Türk</channel>
|
||||
<channel lang="tr" xmltv_id="BeyazTV.tr" site_id="39">Beyaz TV</channel>
|
||||
<channel lang="tr" xmltv_id="BloombergHT.us" site_id="43">Bloomberg HT</channel>
|
||||
<channel lang="tr" xmltv_id="BoomerangTurkiye.us" site_id="106">Boomerang Türkiye</channel>
|
||||
<channel lang="tr" xmltv_id="CartoonNetworkTurkiye.us" site_id="104">Cartoon Network Türkiye</channel>
|
||||
<channel lang="tr" xmltv_id="CNNInternationalEurope.us" site_id="49">CNN International Europe</channel>
|
||||
<channel lang="tr" xmltv_id="CNNTurk.us" site_id="200">CNN Türk</channel>
|
||||
<channel lang="tr" xmltv_id="CocukSmart.tr" site_id="105">Çocuk Smart</channel>
|
||||
<channel lang="tr" xmltv_id="DaVinci.de" site_id="110">Da Vinci</channel>
|
||||
<channel lang="tr" xmltv_id="DiscoveryChannelTurkiye.us" site_id="57">Discovery Channel Türkiye</channel>
|
||||
<channel lang="tr" xmltv_id="DiscoveryScienceTurkiye.us" site_id="58">Discovery Science Türkiye</channel>
|
||||
<channel lang="tr" xmltv_id="DisneyChannelTurkiye.us" site_id="112">Disney Channel Türkiye</channel>
|
||||
<channel lang="tr" xmltv_id="DisneyJuniorTurkiyePolska.us" site_id="111">Disney Junior Türkiye & Polska</channel>
|
||||
<channel lang="tr" xmltv_id="DiyanetTV.tr" site_id="90">Diyanet TV</channel>
|
||||
<channel lang="tr" xmltv_id="DiziSmartMax.tr" site_id="19">DiziSmart Max</channel>
|
||||
<channel lang="tr" xmltv_id="DiziSmartPremium.tr" site_id="16">DiziSmart Premium</channel>
|
||||
<channel lang="tr" xmltv_id="DMAXTurkiye.us" site_id="45">DMAX Türkiye</channel>
|
||||
<channel lang="tr" xmltv_id="DocuBoxHD.us" site_id="56">DocuBox HD</channel>
|
||||
<channel lang="tr" xmltv_id="EuroD.tr" site_id="170">Euro D</channel>
|
||||
<channel lang="tr" xmltv_id="Eurosport1.fr" site_id="71">Eurosport 1</channel>
|
||||
<channel lang="tr" xmltv_id="Eurosport2.fr" site_id="72">Eurosport 2</channel>
|
||||
<channel lang="tr" xmltv_id="FashionTVHDEurope.fr" site_id="65">FashionTV HD Europe</channel>
|
||||
<channel lang="tr" xmltv_id="FastFunBoxHD.us" site_id="67">Fast & FunBox HD</channel>
|
||||
<channel lang="tr" xmltv_id="FBTV.tr" site_id="79">FB TV</channel>
|
||||
<channel lang="tr" xmltv_id="FightBoxHD.us" site_id="77">FightBox HD</channel>
|
||||
<channel lang="tr" xmltv_id="FilmBoxTurkiye.us" site_id="13">FilmBox Türkiye</channel>
|
||||
<channel lang="tr" xmltv_id="FlashTV.tr" site_id="155">Flash TV</channel>
|
||||
<channel lang="tr" xmltv_id="FoxCrimeTurkiye.us" site_id="18">Fox Crime Türkiye</channel>
|
||||
<channel lang="tr" xmltv_id="FoxTurkiye.us" site_id="28">Fox Türkiye</channel>
|
||||
<channel lang="tr" xmltv_id="FXTurkiye.us" site_id="17">FX Türkiye</channel>
|
||||
<channel lang="tr" xmltv_id="HaberGlobal.tr" site_id="41">Haber Global</channel>
|
||||
<channel lang="tr" xmltv_id="Haberturk.tr" site_id="32">Habertürk</channel>
|
||||
<channel lang="tr" xmltv_id="HalkTV.tr" site_id="153">Halk TV</channel>
|
||||
<channel lang="tr" xmltv_id="InsightHD.nl" site_id="64">Insight HD</channel>
|
||||
<channel lang="tr" xmltv_id="Kanal7.tr" site_id="26">Kanal 7</channel>
|
||||
<channel lang="tr" xmltv_id="KanalD.tr" site_id="21">Kanal D</channel>
|
||||
<channel lang="tr" xmltv_id="LoveNature.ca" site_id="69">Love Nature</channel>
|
||||
<channel lang="tr" xmltv_id="MovieSmartClassic.tr" site_id="14">MovieSmart Classic</channel>
|
||||
<channel lang="tr" xmltv_id="MovieSmartPremium.tr" site_id="1">MovieSmart Premium</channel>
|
||||
<channel lang="tr" xmltv_id="MovieSmartPremium2.tr" site_id="2">MovieSmart Premium 2</channel>
|
||||
<channel lang="tr" xmltv_id="MovieSmartTurk.tr" site_id="15">MovieSmart Türk</channel>
|
||||
<channel lang="tr" xmltv_id="NationalGeographicTurkiye.us" site_id="60">National Geographic Türkiye</channel>
|
||||
<channel lang="tr" xmltv_id="NationalGeographicWildTurkiye.us" site_id="61">National Geographic Wild Türkiye</channel>
|
||||
<channel lang="tr" xmltv_id="NBATV.us" site_id="68">NBA TV</channel>
|
||||
<channel lang="tr" xmltv_id="NTV.tr" site_id="30">NTV</channel>
|
||||
<channel lang="tr" xmltv_id="Number1Turk.tr" site_id="99">Number 1 Türk</channel>
|
||||
<channel lang="tr" xmltv_id="Number1TV.tr" site_id="98">Number 1 TV</channel>
|
||||
<channel lang="tr" xmltv_id="PowerTV.tr" site_id="103">Power TV</channel>
|
||||
<channel lang="tr" xmltv_id="ShowTV.tr" site_id="22">Show TV</channel>
|
||||
<channel lang="tr" xmltv_id="Sinema2.tr" site_id="4">Sinema 2</channel>
|
||||
<channel lang="tr" xmltv_id="Sinema1001.tr" site_id="11">Sinema 1001</channel>
|
||||
<channel lang="tr" xmltv_id="Sinema1002.tr" site_id="12">Sinema 1002</channel>
|
||||
<channel lang="tr" xmltv_id="SinemaAile.tr" site_id="7">Sinema Aile</channel>
|
||||
<channel lang="tr" xmltv_id="SinemaAile2.tr" site_id="8">Sinema Aile 2</channel>
|
||||
<channel lang="tr" xmltv_id="SinemaAksiyon.tr" site_id="5">Sinema Aksiyon</channel>
|
||||
<channel lang="tr" xmltv_id="SinemaAksiyon2.tr" site_id="6">Sinema Aksiyon 2</channel>
|
||||
<channel lang="tr" xmltv_id="SinemaKomedi.tr" site_id="9">Sinema Komedi</channel>
|
||||
<channel lang="tr" xmltv_id="SinemaKomedi2.tr" site_id="10">Sinema Komedi 2</channel>
|
||||
<channel lang="tr" xmltv_id="SinemaTV.tr" site_id="3">Sinema TV</channel>
|
||||
<channel lang="tr" xmltv_id="SporSmart.tr" site_id="73">Spor Smart</channel>
|
||||
<channel lang="tr" xmltv_id="SporSmart2.tr" site_id="78">Spor Smart 2</channel>
|
||||
<channel lang="tr" xmltv_id="SportsTV.tr" site_id="80">Sports TV</channel>
|
||||
<channel lang="tr" xmltv_id="SSport.tr" site_id="74">S Sport</channel>
|
||||
<channel lang="tr" xmltv_id="SSport2.tr" site_id="75">S Sport 2</channel>
|
||||
<channel lang="tr" xmltv_id="StarTV.tr" site_id="23">Star TV</channel>
|
||||
<channel lang="tr" xmltv_id="StingrayNaturescape.ca" site_id="62">Stingray Naturescape</channel>
|
||||
<channel lang="tr" xmltv_id="TAYTV.tr" site_id="70">TAY TV</channel>
|
||||
<channel lang="tr" xmltv_id="Tele1.tr" site_id="154">Tele 1</channel>
|
||||
<channel lang="tr" xmltv_id="Teve2.tr" site_id="20">Teve 2</channel>
|
||||
<channel lang="tr" xmltv_id="TGRTHaber.tr" site_id="44">TGRT Haber</channel>
|
||||
<channel lang="tr" xmltv_id="TheHistoryChannelTurkey.us" site_id="59">The History Channel Turkey</channel>
|
||||
<channel lang="tr" xmltv_id="TLCTurkiye.us" site_id="35">TLC Türkiye</channel>
|
||||
<channel lang="tr" xmltv_id="TraceUrban.fr" site_id="66">Trace Urban</channel>
|
||||
<channel lang="tr" xmltv_id="TRT1.tr" site_id="25">TRT 1</channel>
|
||||
<channel lang="tr" xmltv_id="TRT2.tr" site_id="91">TRT 2</channel>
|
||||
<channel lang="tr" xmltv_id="TRT4K.tr" site_id="165">TRT 4K</channel>
|
||||
<channel lang="tr" xmltv_id="TRTAvaz.tr" site_id="163">TRT Avaz</channel>
|
||||
<channel lang="tr" xmltv_id="TRTBelgesel.tr" site_id="63">TRT Belgesel</channel>
|
||||
<channel lang="tr" xmltv_id="TRTCocuk.tr" site_id="109">TRT Çocuk</channel>
|
||||
<channel lang="tr" xmltv_id="TRTHaber.tr" site_id="31">TRT Haber</channel>
|
||||
<channel lang="tr" xmltv_id="TRTKurdi.tr" site_id="162">TRT Kurdî</channel>
|
||||
<channel lang="tr" xmltv_id="TRTMuzik.tr" site_id="94">TRT Müzik</channel>
|
||||
<channel lang="tr" xmltv_id="TRTSpor.tr" site_id="81">TRT Spor</channel>
|
||||
<channel lang="tr" xmltv_id="TRTSporYildiz.tr" site_id="82">TRT Spor Yildiz</channel>
|
||||
<channel lang="tr" xmltv_id="TRTTurk.tr" site_id="92">TRT Türk</channel>
|
||||
<channel lang="tr" xmltv_id="TV4.tr" site_id="83">TV 4</channel>
|
||||
<channel lang="tr" xmltv_id="TV8.tr" site_id="27">TV 8</channel>
|
||||
<channel lang="tr" xmltv_id="TV85.tr" site_id="46">TV 8.5</channel>
|
||||
<channel lang="tr" xmltv_id="TV100.tr" site_id="36">TV 100</channel>
|
||||
<channel lang="tr" xmltv_id="TVNet.tr" site_id="40">TV Net</channel>
|
||||
<channel lang="tr" xmltv_id="UcanKusTV.tr" site_id="38">UçanKus TV</channel>
|
||||
<channel lang="tr" xmltv_id="UlkeTV.tr" site_id="48">Ülke TV</channel>
|
||||
<channel lang="tr" xmltv_id="VavTV.tr" site_id="53">Vav TV</channel>
|
||||
<channel lang="tr" xmltv_id="ViasatHistoryHD.se" site_id="55">Viasat History HD</channel>
|
||||
</channels>
|
||||
</site>
|
||||
Reference in New Issue
Block a user