mirror of
https://github.com/iptv-org/epg
synced 2026-04-30 14:36:58 -04:00
Replace LF line endings with CRLF
This commit is contained in:
@@ -1,103 +1,103 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<channels>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="" site_id="58d29bb0eefad3db9c6062b4">CosmoSports</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="" site_id="58d29bb0eefad3db9c6062ba">FilmScreen</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="" site_id="58d29bb0eefad3db9c6062bf">Azoomee</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="" site_id="58d29bb0eefad3db9c6062cc">TRT World</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="" site_id="58d29bb0eefad3db9c60624f">NHK World English</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="" site_id="58d29bb0eefad3db9c60626d">Minika Çocuk</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="" site_id="58d29bb0eefad3db9c606231">TRT 3 Spor</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="" site_id="59dca29fcfef0b4d80a47a61">Nature Escape</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="" site_id="61a408d7cfef0b1593ed2812">History Channel</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="" site_id="67a3521bcfef0b3744abd66d">Docu Screen</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="" site_id="67c063a6cfef0b3744b5ff9e">TRT Diyanet Çocuk</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="" site_id="679b51bdcfef0b3744a77893">Tmb</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="" site_id="683d6eafcfef0b3744e79132">RT International</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="" site_id="6540d968cfef0b02d2dbb177">Moonbug</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="" site_id="67e5c4c6cfef0b3744c556fa">DMAX</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="" site_id="67e5c246cfef0b3744c53a83">TLC</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="" site_id="66337391cfef0b02d78776c8">Ekol Tv</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="" site_id="66e7e5cdcfef0b374461c45b">Spor Çoklu Ekran</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="" site_id="66e7e50dcfef0b374461c36e">Ulusal Çoklu Ekran</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="" site_id="66e7e54ccfef0b374461c370">Haber Çoklu Ekran</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="" site_id="5e75c923cfef0b15938bc9cc">TRT EBA TV</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="24TV.tr" site_id="58d29bb0eefad3db9c60622e">24</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="360.tr" site_id="58d29bb0eefad3db9c606236">360</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="A2TV.tr" site_id="59dcbe14cfef0b4d80a49646">a2</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="ANews.tr" site_id="59638e5fcfef0b43f0fd31b5">a News</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="APara.tr" site_id="5b9fb1eecfef0b35341b7eb7">A Para</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="BabyTV.uk@France" site_id="58d29bb0eefad3db9c6062b7">Baby TV</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="BBCEarth.uk@Turkey" site_id="58d29bb0eefad3db9c6062bc">BBC Earth</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="BBCNews.uk@Europe" site_id="58d29bb0eefad3db9c6062c6">BBC World News</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="BloombergHT.tr" site_id="58d29bb0eefad3db9c60623e">Bloomberg HT</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="Cartoonito.uk" site_id="58d29bb0eefad3db9c6062b9">Cartoonito</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="CartoonNetwork.tr" site_id="58d29bb0eefad3db9c6062c8">Cartoon Network</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="CNBCEurope.uk" site_id="66630f98cfef0b02d797d815">CNBC-e</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="CNNInternational.us@MENA" site_id="58d29bb0eefad3db9c6062b8">CNN International</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="CNNTurk.tr" site_id="59dca1f3cfef0b4d80a47a5f">CNN Türk SD</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="DaVinci.de" site_id="58d29bb0eefad3db9c6062b6">Da Vinci Learning</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="DiscoveryChannel.tr" site_id="58d29bb0eefad3db9c606248">Discovery</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="DisneyJr.tr" site_id="5fedddcecfef0b159330996e">Disney Junior</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="DiziSmartMax.tr" site_id="58d29bb0eefad3db9c606278">Dizi Smart Max</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="DiziSmartPremium.tr" site_id="58d29bb0eefad3db9c60625a">Dizi Smart Premium</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="DreamTurk.tr" site_id="58d29bb0eefad3db9c6062c5">Dream Tv</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="Ekoturk.tr" site_id="5c6e8e0ecfef0b613d9ff782">Ekotürk</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="EuroD.tr" site_id="59dcbfdccfef0b4d80a4974a">Euro D</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="Eurosport1.fr@Turkey" site_id="58d29bb0eefad3db9c6062aa">Eurosport</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="Eurosport2.fr@Turkey" site_id="58d29bb0eefad3db9c606281">Eurosport 2</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="FashionTVEurope.fr" site_id="59dca3b2cfef0b4d80a47b77">Fashion TV</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="FX.us" site_id="58d29bb0eefad3db9c606269">FX</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="HaberGlobal.tr" site_id="5bac7dedcfef0b02fac035fd">Haber Global</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="HaberturkTV.tr" site_id="58d29bb0eefad3db9c60629d">Haber Türk</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="HTSporTV.tr" site_id="66d839a0cfef0b37445c6db1">HT Spor</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="InvestigationDiscoveryEurope.us" site_id="58d29bb0eefad3db9c60628e">Discovery ID</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="Kanal7.tr" site_id="58d29bb0eefad3db9c60629c">Kanal 7</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="KanalD.tr" site_id="58d29bb0eefad3db9c606258">Kanal D</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="LoveNature.ca" site_id="5dfc9faacfef0b201d2246b5">Love Nature</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="MinikaGo.tr" site_id="58d29bb0eefad3db9c606257">Minika GO</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="MovieSmartClassic.tr" site_id="58d29bb0eefad3db9c60629a">MovieSmart Classic</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="MovieSmartTurk.tr" site_id="58d29bb0eefad3db9c606299">MovieSmart Türk</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="NationalGeographic.tr" site_id="58d29bb0eefad3db9c6062a4">National Geographic</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="NationalGeographicWild.tr" site_id="58d29bb0eefad3db9c6062a5">National Geographic WILD</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="NBATV.us" site_id="58d29bb0eefad3db9c60626e">NBA TV</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="NOWTV.tr" site_id="58d29bb0eefad3db9c6062a0">NOW</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="NTV.tr" site_id="58d29bb0eefad3db9c60623a">NTV</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="ShowTV.tr" site_id="58d29bb0eefad3db9c60629b">Show TV</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="Sinema2.tr" site_id="5fe07d9fcfef0b1593275754">Sinema TV 2</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="Sinema1001.tr" site_id="5fe07f5dcfef0b1593275822">Sinema TV 1001</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="Sinema1002.tr" site_id="5fe07f72cfef0b159327585a">Sinema TV 1002</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="SinemaAile2.tr" site_id="5fe07eabcfef0b15932757a6">Sinema TV Aile 2</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="SinemaAile.tr" site_id="5fe07e42cfef0b15932757a3">Sinema TV Aile</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="SinemaAksiyon2.tr" site_id="5fe07e23cfef0b15932757a1">Sinema TV Aksiyon 2</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="SinemaAksiyon.tr" site_id="5fe07dd5cfef0b1593275758">Sinema TV Aksiyon</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="SinemaKomedi2.tr" site_id="5fe07f45cfef0b159327581f">Sinema TV Comedy 2</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="SinemaKomedi.tr" site_id="5fe07f29cfef0b1593275800">Sinema TV Comedy</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="SinemaTV.tr" site_id="5fe07d7acfef0b1593275751">Sinema TV</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="SozcuTV.tr" site_id="63ecd91acfef0b02d2687aed">SZC</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="SporSmart2.tr" site_id="5fcb6bd2cfef0b15931fcdf8">SPOR SMART 2</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="SporSmart.tr" site_id="58d29bb0eefad3db9c60628a">Spor Smart</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="StarTV.tr" site_id="58d29bb0eefad3db9c606259">Star</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="TarihTV.tr" site_id="64edfc67cfef0b02d2c038c5">Tarih Tv</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="Tele1.tr" site_id="59dcbddccfef0b4d80a49642">Tele 1</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="Teve2.tr" site_id="58d29bb0eefad3db9c6062a1">teve2</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="TGRTHaber.tr" site_id="58d29bb0eefad3db9c60623d">TGRT Haber</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="TRT1.tr" site_id="58d29bb0eefad3db9c606274">TRT 1</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="TRT2.tr" site_id="58d29bb0eefad3db9c606263">trt 2</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="TRT4K.tr" site_id="59dcbee1cfef0b4d80a49650">TRT 4K</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="TRTAvaz.tr" site_id="58d29bb0eefad3db9c60624b">TRT Avaz</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="TRTBelgesel.tr" site_id="58d29bb0eefad3db9c6062a8">TRT Belgesel</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="TRTCocuk.tr" site_id="58d29bb0eefad3db9c606255">TRT Çocuk</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="TRTHaber.tr" site_id="58d29bb0eefad3db9c606289">TRT Haber</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="TRTKurdi.tr" site_id="58d29bb0eefad3db9c60624a">TRT Kurdi</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="TRTMuzik.tr" site_id="58d29bb0eefad3db9c606266">TRT Müzik</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="TRTSpor.tr" site_id="58d29bb0eefad3db9c6062a9">TRT Spor</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="TRTSporYildiz.tr" site_id="5da87214cfef0b4df9157780">Trt Spor Yıldız</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="TRTTurk.tr" site_id="58d29bb0eefad3db9c60624c">TRT Türk</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="TV4.tr" site_id="59dca577cfef0b4d80a47b7c">TV4</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="TV8.tr" site_id="58d29bb0eefad3db9c6062ae">TV8</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="TV85.tr" site_id="58d29bb0eefad3db9c6062cb">TV 8,5</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="TV100.tr" site_id="5ccfd6adcfef0b6021816941">Tv 100</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="TVNET.tr" site_id="58d29bb0eefad3db9c60629e">TV Net</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="UlkeTV.tr" site_id="58d29bb0eefad3db9c60629f">Ülke TV</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="ViasatHistory.tr" site_id="58d29bb0eefad3db9c6062bd">Viasat History</channel>
|
||||
</channels>
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<channels>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="" site_id="58d29bb0eefad3db9c6062b4">CosmoSports</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="" site_id="58d29bb0eefad3db9c6062ba">FilmScreen</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="" site_id="58d29bb0eefad3db9c6062bf">Azoomee</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="" site_id="58d29bb0eefad3db9c6062cc">TRT World</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="" site_id="58d29bb0eefad3db9c60624f">NHK World English</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="" site_id="58d29bb0eefad3db9c60626d">Minika Çocuk</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="" site_id="58d29bb0eefad3db9c606231">TRT 3 Spor</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="" site_id="59dca29fcfef0b4d80a47a61">Nature Escape</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="" site_id="61a408d7cfef0b1593ed2812">History Channel</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="" site_id="67a3521bcfef0b3744abd66d">Docu Screen</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="" site_id="67c063a6cfef0b3744b5ff9e">TRT Diyanet Çocuk</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="" site_id="679b51bdcfef0b3744a77893">Tmb</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="" site_id="683d6eafcfef0b3744e79132">RT International</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="" site_id="6540d968cfef0b02d2dbb177">Moonbug</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="" site_id="67e5c4c6cfef0b3744c556fa">DMAX</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="" site_id="67e5c246cfef0b3744c53a83">TLC</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="" site_id="66337391cfef0b02d78776c8">Ekol Tv</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="" site_id="66e7e5cdcfef0b374461c45b">Spor Çoklu Ekran</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="" site_id="66e7e50dcfef0b374461c36e">Ulusal Çoklu Ekran</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="" site_id="66e7e54ccfef0b374461c370">Haber Çoklu Ekran</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="" site_id="5e75c923cfef0b15938bc9cc">TRT EBA TV</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="24TV.tr" site_id="58d29bb0eefad3db9c60622e">24</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="360.tr" site_id="58d29bb0eefad3db9c606236">360</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="A2TV.tr" site_id="59dcbe14cfef0b4d80a49646">a2</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="ANews.tr" site_id="59638e5fcfef0b43f0fd31b5">a News</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="APara.tr" site_id="5b9fb1eecfef0b35341b7eb7">A Para</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="BabyTV.uk@France" site_id="58d29bb0eefad3db9c6062b7">Baby TV</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="BBCEarth.uk@Turkey" site_id="58d29bb0eefad3db9c6062bc">BBC Earth</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="BBCNews.uk@Europe" site_id="58d29bb0eefad3db9c6062c6">BBC World News</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="BloombergHT.tr" site_id="58d29bb0eefad3db9c60623e">Bloomberg HT</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="Cartoonito.uk" site_id="58d29bb0eefad3db9c6062b9">Cartoonito</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="CartoonNetwork.tr" site_id="58d29bb0eefad3db9c6062c8">Cartoon Network</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="CNBCEurope.uk" site_id="66630f98cfef0b02d797d815">CNBC-e</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="CNNInternational.us@MENA" site_id="58d29bb0eefad3db9c6062b8">CNN International</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="CNNTurk.tr" site_id="59dca1f3cfef0b4d80a47a5f">CNN Türk SD</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="DaVinci.de" site_id="58d29bb0eefad3db9c6062b6">Da Vinci Learning</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="DiscoveryChannel.tr" site_id="58d29bb0eefad3db9c606248">Discovery</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="DisneyJr.tr" site_id="5fedddcecfef0b159330996e">Disney Junior</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="DiziSmartMax.tr" site_id="58d29bb0eefad3db9c606278">Dizi Smart Max</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="DiziSmartPremium.tr" site_id="58d29bb0eefad3db9c60625a">Dizi Smart Premium</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="DreamTurk.tr" site_id="58d29bb0eefad3db9c6062c5">Dream Tv</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="Ekoturk.tr" site_id="5c6e8e0ecfef0b613d9ff782">Ekotürk</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="EuroD.tr" site_id="59dcbfdccfef0b4d80a4974a">Euro D</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="Eurosport1.fr@Turkey" site_id="58d29bb0eefad3db9c6062aa">Eurosport</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="Eurosport2.fr@Turkey" site_id="58d29bb0eefad3db9c606281">Eurosport 2</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="FashionTVEurope.fr" site_id="59dca3b2cfef0b4d80a47b77">Fashion TV</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="FX.us" site_id="58d29bb0eefad3db9c606269">FX</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="HaberGlobal.tr" site_id="5bac7dedcfef0b02fac035fd">Haber Global</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="HaberturkTV.tr" site_id="58d29bb0eefad3db9c60629d">Haber Türk</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="HTSporTV.tr" site_id="66d839a0cfef0b37445c6db1">HT Spor</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="InvestigationDiscoveryEurope.us" site_id="58d29bb0eefad3db9c60628e">Discovery ID</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="Kanal7.tr" site_id="58d29bb0eefad3db9c60629c">Kanal 7</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="KanalD.tr" site_id="58d29bb0eefad3db9c606258">Kanal D</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="LoveNature.ca" site_id="5dfc9faacfef0b201d2246b5">Love Nature</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="MinikaGo.tr" site_id="58d29bb0eefad3db9c606257">Minika GO</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="MovieSmartClassic.tr" site_id="58d29bb0eefad3db9c60629a">MovieSmart Classic</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="MovieSmartTurk.tr" site_id="58d29bb0eefad3db9c606299">MovieSmart Türk</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="NationalGeographic.tr" site_id="58d29bb0eefad3db9c6062a4">National Geographic</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="NationalGeographicWild.tr" site_id="58d29bb0eefad3db9c6062a5">National Geographic WILD</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="NBATV.us" site_id="58d29bb0eefad3db9c60626e">NBA TV</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="NOWTV.tr" site_id="58d29bb0eefad3db9c6062a0">NOW</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="NTV.tr" site_id="58d29bb0eefad3db9c60623a">NTV</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="ShowTV.tr" site_id="58d29bb0eefad3db9c60629b">Show TV</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="Sinema2.tr" site_id="5fe07d9fcfef0b1593275754">Sinema TV 2</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="Sinema1001.tr" site_id="5fe07f5dcfef0b1593275822">Sinema TV 1001</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="Sinema1002.tr" site_id="5fe07f72cfef0b159327585a">Sinema TV 1002</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="SinemaAile2.tr" site_id="5fe07eabcfef0b15932757a6">Sinema TV Aile 2</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="SinemaAile.tr" site_id="5fe07e42cfef0b15932757a3">Sinema TV Aile</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="SinemaAksiyon2.tr" site_id="5fe07e23cfef0b15932757a1">Sinema TV Aksiyon 2</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="SinemaAksiyon.tr" site_id="5fe07dd5cfef0b1593275758">Sinema TV Aksiyon</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="SinemaKomedi2.tr" site_id="5fe07f45cfef0b159327581f">Sinema TV Comedy 2</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="SinemaKomedi.tr" site_id="5fe07f29cfef0b1593275800">Sinema TV Comedy</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="SinemaTV.tr" site_id="5fe07d7acfef0b1593275751">Sinema TV</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="SozcuTV.tr" site_id="63ecd91acfef0b02d2687aed">SZC</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="SporSmart2.tr" site_id="5fcb6bd2cfef0b15931fcdf8">SPOR SMART 2</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="SporSmart.tr" site_id="58d29bb0eefad3db9c60628a">Spor Smart</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="StarTV.tr" site_id="58d29bb0eefad3db9c606259">Star</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="TarihTV.tr" site_id="64edfc67cfef0b02d2c038c5">Tarih Tv</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="Tele1.tr" site_id="59dcbddccfef0b4d80a49642">Tele 1</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="Teve2.tr" site_id="58d29bb0eefad3db9c6062a1">teve2</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="TGRTHaber.tr" site_id="58d29bb0eefad3db9c60623d">TGRT Haber</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="TRT1.tr" site_id="58d29bb0eefad3db9c606274">TRT 1</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="TRT2.tr" site_id="58d29bb0eefad3db9c606263">trt 2</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="TRT4K.tr" site_id="59dcbee1cfef0b4d80a49650">TRT 4K</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="TRTAvaz.tr" site_id="58d29bb0eefad3db9c60624b">TRT Avaz</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="TRTBelgesel.tr" site_id="58d29bb0eefad3db9c6062a8">TRT Belgesel</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="TRTCocuk.tr" site_id="58d29bb0eefad3db9c606255">TRT Çocuk</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="TRTHaber.tr" site_id="58d29bb0eefad3db9c606289">TRT Haber</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="TRTKurdi.tr" site_id="58d29bb0eefad3db9c60624a">TRT Kurdi</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="TRTMuzik.tr" site_id="58d29bb0eefad3db9c606266">TRT Müzik</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="TRTSpor.tr" site_id="58d29bb0eefad3db9c6062a9">TRT Spor</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="TRTSporYildiz.tr" site_id="5da87214cfef0b4df9157780">Trt Spor Yıldız</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="TRTTurk.tr" site_id="58d29bb0eefad3db9c60624c">TRT Türk</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="TV4.tr" site_id="59dca577cfef0b4d80a47b7c">TV4</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="TV8.tr" site_id="58d29bb0eefad3db9c6062ae">TV8</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="TV85.tr" site_id="58d29bb0eefad3db9c6062cb">TV 8,5</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="TV100.tr" site_id="5ccfd6adcfef0b6021816941">Tv 100</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="TVNET.tr" site_id="58d29bb0eefad3db9c60629e">TV Net</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="UlkeTV.tr" site_id="58d29bb0eefad3db9c60629f">Ülke TV</channel>
|
||||
<channel site="dsmart.com.tr" lang="tr" xmltv_id="ViasatHistory.tr" site_id="58d29bb0eefad3db9c6062bd">Viasat History</channel>
|
||||
</channels>
|
||||
|
||||
@@ -1,130 +1,130 @@
|
||||
const dayjs = require('dayjs')
|
||||
const utc = require('dayjs/plugin/utc')
|
||||
const customParseFormat = require('dayjs/plugin/customParseFormat')
|
||||
const duration = require('dayjs/plugin/duration')
|
||||
const doFetch = require('@ntlab/sfetch')
|
||||
const debug = require('debug')('site:dsmart.com.tr')
|
||||
|
||||
dayjs.extend(utc)
|
||||
dayjs.extend(customParseFormat)
|
||||
dayjs.extend(duration)
|
||||
|
||||
doFetch.setDebugger(debug)
|
||||
|
||||
const channelsWithSchedule = true
|
||||
const pageLimit = 10
|
||||
const caches = {}
|
||||
|
||||
module.exports = {
|
||||
site: 'dsmart.com.tr',
|
||||
days: 2,
|
||||
request: {
|
||||
cache: {
|
||||
ttl: 24 * 60 * 60 * 1000 // 1 day
|
||||
}
|
||||
},
|
||||
url({ date, page = 1 }) {
|
||||
return `https://www.dsmart.com.tr/api/v1/public/epg/schedules?page=${
|
||||
page
|
||||
}&limit=${
|
||||
pageLimit
|
||||
}&day=${
|
||||
date.format('YYYY-MM-DD')
|
||||
}`
|
||||
},
|
||||
async parser({ content, channel, date, useCache = true }) {
|
||||
const programs = []
|
||||
if (content) {
|
||||
if (typeof content === 'string') {
|
||||
content = JSON.parse(content)
|
||||
}
|
||||
if (useCache) {
|
||||
const cacheKey = date.format('YYYYMMDD')
|
||||
// cache whole channels for the day
|
||||
if (caches[cacheKey] === undefined) {
|
||||
if (content?.data?.total) {
|
||||
const queues = []
|
||||
const pages = Math.ceil(content.data.total / pageLimit)
|
||||
for (let page = 2; page <= pages; page++) {
|
||||
queues.push(module.exports.url({ date, page }))
|
||||
}
|
||||
await doFetch(queues, (url, res) => {
|
||||
if (Array.isArray(res?.data?.channels)) {
|
||||
content.data.channels.push(...res.data.channels)
|
||||
}
|
||||
})
|
||||
caches[cacheKey] = content
|
||||
}
|
||||
} else {
|
||||
content = caches[cacheKey]
|
||||
}
|
||||
}
|
||||
if (Array.isArray(content?.data?.channels)) {
|
||||
content.data.channels
|
||||
.filter(i => i._id === channel.site_id)
|
||||
.forEach(i => {
|
||||
if (i.schedule.length) {
|
||||
let dayStart, ofs
|
||||
programs.push(...i.schedule
|
||||
.map(p => {
|
||||
const baseDate = dayjs.utc(p.day)
|
||||
const startDate = dayjs.utc(p.start_date)
|
||||
// calculate base offset if needed
|
||||
if (!dayStart) {
|
||||
dayStart = startDate
|
||||
ofs = dayjs.duration(dayjs.utc(`${p.day.substr(0, 11)}${p.start_date.substr(11)}`).diff(baseDate))
|
||||
.asSeconds()
|
||||
}
|
||||
const delta = dayjs.duration(startDate.diff(dayStart)).asSeconds()
|
||||
// ignore days in duration
|
||||
const [h, m, s] = (p.duration.includes(',') ? p.duration.split(',')[1].trim() : p.duration)
|
||||
.split(':').map(Number)
|
||||
const duration = (h * 3600) + (m * 60) + s
|
||||
const start = baseDate.add(ofs + delta, 's')
|
||||
const stop = start.add(duration, 's')
|
||||
return {
|
||||
title: p.program_name,
|
||||
description: p.description,
|
||||
category: p.genre && p.genre.includes('/') ?
|
||||
p.genre.split('/').map(g => `${g.substr(0, 1).toUpperCase()}${g.substr(1)}`) : null,
|
||||
start,
|
||||
stop
|
||||
}
|
||||
})
|
||||
)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
return programs
|
||||
},
|
||||
async channels() {
|
||||
const channels = []
|
||||
const f = page => this.url({ date: dayjs(), page })
|
||||
let pages, page = 1
|
||||
const queues = [f(page)]
|
||||
await doFetch(queues, (url, res) => {
|
||||
if (!pages && res.data.total) {
|
||||
pages = Math.ceil(res.data.total / pageLimit)
|
||||
while (page < pages) {
|
||||
queues.push(f(++page))
|
||||
}
|
||||
}
|
||||
if (Array.isArray(res?.data?.channels)) {
|
||||
channels.push(...res.data.channels
|
||||
.filter(i => (channelsWithSchedule && i.schedule.length) || !channelsWithSchedule)
|
||||
.map(i => {
|
||||
return {
|
||||
lang: 'tr',
|
||||
name: i.channel_name,
|
||||
site_id: i._id
|
||||
}
|
||||
})
|
||||
)
|
||||
}
|
||||
})
|
||||
|
||||
return channels
|
||||
}
|
||||
}
|
||||
const dayjs = require('dayjs')
|
||||
const utc = require('dayjs/plugin/utc')
|
||||
const customParseFormat = require('dayjs/plugin/customParseFormat')
|
||||
const duration = require('dayjs/plugin/duration')
|
||||
const doFetch = require('@ntlab/sfetch')
|
||||
const debug = require('debug')('site:dsmart.com.tr')
|
||||
|
||||
dayjs.extend(utc)
|
||||
dayjs.extend(customParseFormat)
|
||||
dayjs.extend(duration)
|
||||
|
||||
doFetch.setDebugger(debug)
|
||||
|
||||
const channelsWithSchedule = true
|
||||
const pageLimit = 10
|
||||
const caches = {}
|
||||
|
||||
module.exports = {
|
||||
site: 'dsmart.com.tr',
|
||||
days: 2,
|
||||
request: {
|
||||
cache: {
|
||||
ttl: 24 * 60 * 60 * 1000 // 1 day
|
||||
}
|
||||
},
|
||||
url({ date, page = 1 }) {
|
||||
return `https://www.dsmart.com.tr/api/v1/public/epg/schedules?page=${
|
||||
page
|
||||
}&limit=${
|
||||
pageLimit
|
||||
}&day=${
|
||||
date.format('YYYY-MM-DD')
|
||||
}`
|
||||
},
|
||||
async parser({ content, channel, date, useCache = true }) {
|
||||
const programs = []
|
||||
if (content) {
|
||||
if (typeof content === 'string') {
|
||||
content = JSON.parse(content)
|
||||
}
|
||||
if (useCache) {
|
||||
const cacheKey = date.format('YYYYMMDD')
|
||||
// cache whole channels for the day
|
||||
if (caches[cacheKey] === undefined) {
|
||||
if (content?.data?.total) {
|
||||
const queues = []
|
||||
const pages = Math.ceil(content.data.total / pageLimit)
|
||||
for (let page = 2; page <= pages; page++) {
|
||||
queues.push(module.exports.url({ date, page }))
|
||||
}
|
||||
await doFetch(queues, (url, res) => {
|
||||
if (Array.isArray(res?.data?.channels)) {
|
||||
content.data.channels.push(...res.data.channels)
|
||||
}
|
||||
})
|
||||
caches[cacheKey] = content
|
||||
}
|
||||
} else {
|
||||
content = caches[cacheKey]
|
||||
}
|
||||
}
|
||||
if (Array.isArray(content?.data?.channels)) {
|
||||
content.data.channels
|
||||
.filter(i => i._id === channel.site_id)
|
||||
.forEach(i => {
|
||||
if (i.schedule.length) {
|
||||
let dayStart, ofs
|
||||
programs.push(...i.schedule
|
||||
.map(p => {
|
||||
const baseDate = dayjs.utc(p.day)
|
||||
const startDate = dayjs.utc(p.start_date)
|
||||
// calculate base offset if needed
|
||||
if (!dayStart) {
|
||||
dayStart = startDate
|
||||
ofs = dayjs.duration(dayjs.utc(`${p.day.substr(0, 11)}${p.start_date.substr(11)}`).diff(baseDate))
|
||||
.asSeconds()
|
||||
}
|
||||
const delta = dayjs.duration(startDate.diff(dayStart)).asSeconds()
|
||||
// ignore days in duration
|
||||
const [h, m, s] = (p.duration.includes(',') ? p.duration.split(',')[1].trim() : p.duration)
|
||||
.split(':').map(Number)
|
||||
const duration = (h * 3600) + (m * 60) + s
|
||||
const start = baseDate.add(ofs + delta, 's')
|
||||
const stop = start.add(duration, 's')
|
||||
return {
|
||||
title: p.program_name,
|
||||
description: p.description,
|
||||
category: p.genre && p.genre.includes('/') ?
|
||||
p.genre.split('/').map(g => `${g.substr(0, 1).toUpperCase()}${g.substr(1)}`) : null,
|
||||
start,
|
||||
stop
|
||||
}
|
||||
})
|
||||
)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
return programs
|
||||
},
|
||||
async channels() {
|
||||
const channels = []
|
||||
const f = page => this.url({ date: dayjs(), page })
|
||||
let pages, page = 1
|
||||
const queues = [f(page)]
|
||||
await doFetch(queues, (url, res) => {
|
||||
if (!pages && res.data.total) {
|
||||
pages = Math.ceil(res.data.total / pageLimit)
|
||||
while (page < pages) {
|
||||
queues.push(f(++page))
|
||||
}
|
||||
}
|
||||
if (Array.isArray(res?.data?.channels)) {
|
||||
channels.push(...res.data.channels
|
||||
.filter(i => (channelsWithSchedule && i.schedule.length) || !channelsWithSchedule)
|
||||
.map(i => {
|
||||
return {
|
||||
lang: 'tr',
|
||||
name: i.channel_name,
|
||||
site_id: i._id
|
||||
}
|
||||
})
|
||||
)
|
||||
}
|
||||
})
|
||||
|
||||
return channels
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,82 +1,82 @@
|
||||
const { parser, url } = require('./dsmart.com.tr.config.js')
|
||||
const axios = require('axios')
|
||||
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)
|
||||
|
||||
jest.mock('axios')
|
||||
|
||||
const date = dayjs.utc('2025-01-13', 'YYYY-MM-DD').startOf('d')
|
||||
const channel = {
|
||||
site_id: '5fe07f5dcfef0b1593275822',
|
||||
xmltv_id: 'Sinema1001.tr'
|
||||
}
|
||||
|
||||
axios.get.mockImplementation(url => {
|
||||
const result = {}
|
||||
const urls = {
|
||||
'https://www.dsmart.com.tr/api/v1/public/epg/schedules?page=1&limit=10&day=2025-01-13':
|
||||
'content1.json',
|
||||
'https://www.dsmart.com.tr/api/v1/public/epg/schedules?page=2&limit=10&day=2025-01-13':
|
||||
'content2.json',
|
||||
}
|
||||
if (urls[url] !== undefined) {
|
||||
result.data = fs.readFileSync(path.join(__dirname, '__data__', urls[url])).toString()
|
||||
if (!urls[url].startsWith('content1')) {
|
||||
result.data = JSON.parse(result.data)
|
||||
}
|
||||
}
|
||||
|
||||
return Promise.resolve(result)
|
||||
})
|
||||
|
||||
|
||||
it('can generate valid url', () => {
|
||||
expect(url({ date })).toBe(
|
||||
'https://www.dsmart.com.tr/api/v1/public/epg/schedules?page=1&limit=10&day=2025-01-13'
|
||||
)
|
||||
})
|
||||
|
||||
it('can parse response', async () => {
|
||||
const content = fs.readFileSync(path.join(__dirname, '__data__', 'content1.json')).toString()
|
||||
const results = (await parser({ content, channel, date })).map(p => {
|
||||
p.start = p.start.toJSON()
|
||||
p.stop = p.stop.toJSON()
|
||||
return p
|
||||
})
|
||||
|
||||
expect(results.length).toBe(11)
|
||||
|
||||
expect(results[0]).toMatchObject({
|
||||
start: '2025-01-12T21:30:00.000Z',
|
||||
stop: '2025-01-12T23:30:00.000Z',
|
||||
title: 'Taksi Şoförü',
|
||||
description:
|
||||
'Vietnam savaşının izlerinin etkisindeki bir asker ve New York sokakları. Travis Bickle, geceleri taksi şoförlüğü yaptığı New York’ta bir yandan da gündelik yaşama ayak uydurmaya çalışır. Çürümeye yüz tutmuş bir topluma karşı tutulan bir ayna niteliğindeki film, yönetmen Martin Scorsese’nin kariyerinin en önemli filmlerinden biri olarak kabul görür.',
|
||||
category: ['Sinema', 'Genel']
|
||||
})
|
||||
expect(results[10]).toMatchObject({
|
||||
start: '2025-01-13T19:00:00.000Z',
|
||||
stop: '2025-01-13T21:00:00.000Z',
|
||||
title: 'Senin Adın',
|
||||
description:
|
||||
'Dağların sardığı bir bölgede yaşayan Mitsuha, hayatından çok da memnun olmayan liseli bir kızdır. Babası vali olarak çalışmakta ve seçim kampanyaları ile uğraşmaktadır. Evde kendisi, kardeşi ve büyükannesi dışında kimse yoktur. Kırsal kesimdeki yaşamı onu bunaltmaktadır ve esas isteği Tokyo\'nun muhteşem şehir hayatının bir parçası olmaktır. Diğer tarafta ise Taki vardır.',
|
||||
category: ['Sinema', 'Genel']
|
||||
})
|
||||
})
|
||||
|
||||
it('can handle empty guide', async () => {
|
||||
const results = await parser({
|
||||
channel,
|
||||
date,
|
||||
content: fs.readFileSync(path.join(__dirname, '__data__', 'no_content.json')).toString(),
|
||||
useCache: false
|
||||
})
|
||||
|
||||
expect(results).toMatchObject([])
|
||||
})
|
||||
const { parser, url } = require('./dsmart.com.tr.config.js')
|
||||
const axios = require('axios')
|
||||
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)
|
||||
|
||||
jest.mock('axios')
|
||||
|
||||
const date = dayjs.utc('2025-01-13', 'YYYY-MM-DD').startOf('d')
|
||||
const channel = {
|
||||
site_id: '5fe07f5dcfef0b1593275822',
|
||||
xmltv_id: 'Sinema1001.tr'
|
||||
}
|
||||
|
||||
axios.get.mockImplementation(url => {
|
||||
const result = {}
|
||||
const urls = {
|
||||
'https://www.dsmart.com.tr/api/v1/public/epg/schedules?page=1&limit=10&day=2025-01-13':
|
||||
'content1.json',
|
||||
'https://www.dsmart.com.tr/api/v1/public/epg/schedules?page=2&limit=10&day=2025-01-13':
|
||||
'content2.json',
|
||||
}
|
||||
if (urls[url] !== undefined) {
|
||||
result.data = fs.readFileSync(path.join(__dirname, '__data__', urls[url])).toString()
|
||||
if (!urls[url].startsWith('content1')) {
|
||||
result.data = JSON.parse(result.data)
|
||||
}
|
||||
}
|
||||
|
||||
return Promise.resolve(result)
|
||||
})
|
||||
|
||||
|
||||
it('can generate valid url', () => {
|
||||
expect(url({ date })).toBe(
|
||||
'https://www.dsmart.com.tr/api/v1/public/epg/schedules?page=1&limit=10&day=2025-01-13'
|
||||
)
|
||||
})
|
||||
|
||||
it('can parse response', async () => {
|
||||
const content = fs.readFileSync(path.join(__dirname, '__data__', 'content1.json')).toString()
|
||||
const results = (await parser({ content, channel, date })).map(p => {
|
||||
p.start = p.start.toJSON()
|
||||
p.stop = p.stop.toJSON()
|
||||
return p
|
||||
})
|
||||
|
||||
expect(results.length).toBe(11)
|
||||
|
||||
expect(results[0]).toMatchObject({
|
||||
start: '2025-01-12T21:30:00.000Z',
|
||||
stop: '2025-01-12T23:30:00.000Z',
|
||||
title: 'Taksi Şoförü',
|
||||
description:
|
||||
'Vietnam savaşının izlerinin etkisindeki bir asker ve New York sokakları. Travis Bickle, geceleri taksi şoförlüğü yaptığı New York’ta bir yandan da gündelik yaşama ayak uydurmaya çalışır. Çürümeye yüz tutmuş bir topluma karşı tutulan bir ayna niteliğindeki film, yönetmen Martin Scorsese’nin kariyerinin en önemli filmlerinden biri olarak kabul görür.',
|
||||
category: ['Sinema', 'Genel']
|
||||
})
|
||||
expect(results[10]).toMatchObject({
|
||||
start: '2025-01-13T19:00:00.000Z',
|
||||
stop: '2025-01-13T21:00:00.000Z',
|
||||
title: 'Senin Adın',
|
||||
description:
|
||||
'Dağların sardığı bir bölgede yaşayan Mitsuha, hayatından çok da memnun olmayan liseli bir kızdır. Babası vali olarak çalışmakta ve seçim kampanyaları ile uğraşmaktadır. Evde kendisi, kardeşi ve büyükannesi dışında kimse yoktur. Kırsal kesimdeki yaşamı onu bunaltmaktadır ve esas isteği Tokyo\'nun muhteşem şehir hayatının bir parçası olmaktır. Diğer tarafta ise Taki vardır.',
|
||||
category: ['Sinema', 'Genel']
|
||||
})
|
||||
})
|
||||
|
||||
it('can handle empty guide', async () => {
|
||||
const results = await parser({
|
||||
channel,
|
||||
date,
|
||||
content: fs.readFileSync(path.join(__dirname, '__data__', 'no_content.json')).toString(),
|
||||
useCache: false
|
||||
})
|
||||
|
||||
expect(results).toMatchObject([])
|
||||
})
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
# dsmart.com.tr
|
||||
|
||||
https://www.dsmart.com.tr/yayin-akisi
|
||||
|
||||
### Download the guide
|
||||
|
||||
```sh
|
||||
npm run grab --- --site=dsmart.com.tr
|
||||
```
|
||||
|
||||
### Update channel list
|
||||
|
||||
```sh
|
||||
npm run channels:parse --- --config=./sites/dsmart.com.tr/dsmart.com.tr.config.js --output=./sites/dsmart.com.tr/dsmart.com.tr.channels.xml
|
||||
```
|
||||
|
||||
### Test
|
||||
|
||||
```sh
|
||||
npm test --- dsmart.com.tr
|
||||
```
|
||||
# dsmart.com.tr
|
||||
|
||||
https://www.dsmart.com.tr/yayin-akisi
|
||||
|
||||
### Download the guide
|
||||
|
||||
```sh
|
||||
npm run grab --- --site=dsmart.com.tr
|
||||
```
|
||||
|
||||
### Update channel list
|
||||
|
||||
```sh
|
||||
npm run channels:parse --- --config=./sites/dsmart.com.tr/dsmart.com.tr.config.js --output=./sites/dsmart.com.tr/dsmart.com.tr.channels.xml
|
||||
```
|
||||
|
||||
### Test
|
||||
|
||||
```sh
|
||||
npm test --- dsmart.com.tr
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user