Merge pull request #1233 from iptv-org/fix-telenettv.be

Fix telenettv.be
This commit is contained in:
Aleksandr Statciuk authored and GitHub committed 2022-10-29 05:42:59 +03:00
commit 2e730120d0
10 files changed
+216 -248

No files matched your search

@@ -0,0 +1 @@
{"duration":21600,"entries":[{"channelId":"outtv","events":[{"audioLanguages":[{"lang":"nl"}],"endTime":1667094240,"id":"crid:~~2F~~2Fgn.tv~~2F2459095~~2FEP036477800004,imi:0a2f4207b03c16c70b7fb3be8e07881aafe44106","mergedId":"184765|nl","minimumAge":16,"replayTVMinAge":16,"seriesMepSeriesFinale":1123372800,"seriesPremiereAirings":true,"startTime":1667087760,"title":"Queer as Folk USA"},{"audioLanguages":[{"lang":"nl"}],"endTime":1667098800,"id":"crid:~~2F~~2Fgn.tv~~2F8774515~~2FSH036008130000~~2Fspecial,imi:3710ee0cbcea41fb0c771c093765057533294374","mergedId":"8774515|nl","minimumAge":16,"replayTVMinAge":16,"startTime":1667094240,"title":"Leslie Jordan: My Trip Down the Pink Carpet"},{"audioLanguages":[{"lang":"nl"}],"endTime":1667109600,"id":"crid:~~2F~~2Fgn.tv~~2F10202528~~2FSH035723610000~~2Fspecial,imi:7d18e68e5b3c516c0baa1b94d4a8d41ad46a7ee9","mergedId":"10202528|nl","minimumAge":16,"replayTVMinAge":16,"startTime":1667098800,"title":"OUTmusic"}]},{"channelId":"bbcradio1"},{"channelId":"mcfrancofonie"},{"channelId":"bbcradio3"},{"channelId":"bbcradio2"},{"channelId":"11sports3betv","events":[{"audioLanguages":[{"lang":"fr"}],"endTime":1667100600,"id":"crid:~~2F~~2Fgn.tv~~2F23132839~~2FSH044995950000~~2F146313939,imi:74c4b3ecd132eb67fd2b56e23e128d3de405987d","isPlaceHolder":true,"seriesPremiereAirings":true,"startTime":1667084400,"title":"UFC Fight Night: Kattar vs. Allen"},{"audioLanguages":[{"lang":"fr"}],"endTime":1667100900,"id":"crid:~~2F~~2Fgn.tv~~2F22569632~~2FEP043545390003,imi:8f008db272c4ca4a6978adf7b41913974fe1f6bb","mergedId":"22230990|fr-FR","seriesPremiereAirings":true,"startTime":1667100600,"title":"ESkootr Championship"},{"audioLanguages":[{"lang":"fr"}],"endTime":1667112000,"id":"crid:~~2F~~2Fgn.tv~~2F22990921~~2FSH044882660000~~2F145607378,imi:93efde1299d22112307ae8cd9b9e7dce901fe5dd","isPlaceHolder":true,"seriesPremiereAirings":true,"startTime":1667100900,"title":"UFC 280: Oliveira vs. Makhachev"}]},{"channelId":"telenet5"},{"channelId":"telenet4"},{"channelId":"net5","events":[{"audioLanguages":[{"lang":"nl"}],"endTime":1667091840,"id":"crid:~~2F~~2Fgn.tv~~2F16927952~~2FEP037553470061,imi:86f2badf155c23b6203898b251c415960f5227f3","mergedId":"11352587|nl","seriesPremiereAirings":true,"startTime":1667084640,"title":"My Kitchen Rules Nieuw-Zeeland"},{"audioLanguages":[{"lang":"nl"}],"endTime":1667105100,"id":"crid:~~2F~~2Fgn.tv~~2F20574463~~2FSH039851580000~~2F145773759,imi:67683557627d904f5f89ab04db722e6f3d33488b","isPlaceHolder":true,"mergedId":"20574463|nl","startTime":1667091840,"title":"Loop: Hart van Nederland"},{"audioLanguages":[{"lang":"nl"}],"endTime":1667111460,"id":"crid:~~2F~~2Fgn.tv~~2F20574463~~2FSH039851580000~~2F147777218,imi:684e505b1567ccf534714ee95bce727b678665b8","isPlaceHolder":true,"mergedId":"20574463|nl","startTime":1667105100,"title":"Loop: Hart van Nederland"}]},{"channelId":"telenet3"},{"channelId":"playhousedisney","events":[{"audioLanguages":[{"lang":"nl"}],"endTime":1667091600,"hasReplayTV":false,"hasReplayTVOTT":false,"hasStartOver":false,"id":"crid:~~2F~~2Fgn.tv~~2F480440~~2FSH030038440000~~2Foffair,imi:1d2c778689173a727e7f3d222619223b5b548f1e","mergedId":"480440|nl","startTime":1667077200,"title":"Geen uitzending"},{"audioLanguages":[{"lang":"nl"}],"endTime":1667102400,"hasReplayTV":false,"hasReplayTVOTT":false,"hasStartOver":false,"id":"crid:~~2F~~2Fgn.tv~~2F480440~~2FSH030038440000~~2Foffair,imi:9a109485fc46157b07c56e99b2b6aaee39ce138d","mergedId":"480440|nl","startTime":1667091600,"title":"Geen uitzending"},{"audioLanguages":[{"lang":"nl"}],"endTime":1667103180,"id":"crid:~~2F~~2Fgn.tv~~2F9953356~~2FEP038129270101,imi:19f9e46df5409162f202689a6ac5752f51c1146c","mergedId":"9663502|nl","seriesMepSeriesFinale":1448841600,"seriesPremiereAirings":true,"startTime":1667102400,"title":"Henry Hugglemonster"},{"audioLanguages":[{"lang":"nl"}],"endTime":1667104620,"id":"crid:~~2F~~2Fgn.tv~~2F12025595~~2FEP038129270070,imi:13bb2d91e991c32bdc3e4401bd6ce4758bbbfe95","mergedId":"9663502|nl","seriesMepSeriesFinale":1448841600,"seriesPremiereAirings":true,"startTime":1667103180,"title":"Henry Hugglemonster"},{"audioLanguages":[{"lang":"nl"}],"endTime":1667106060,"id":"crid:~~2F~~2Fgn.tv~~2F12025581~~2FEP038129270068,imi:a2b5bf5f24c8903c7a07f1ef0f148d630850e8c9","mergedId":"9663502|nl","seriesMepSeriesFinale":1448841600,"seriesPremiereAirings":true,"startTime":1667104620,"title":"Henry Hugglemonster"},{"audioLanguages":[{"lang":"nl"}],"endTime":1667107680,"id":"crid:~~2F~~2Fgn.tv~~2F16461407~~2FEP033653970034,imi:40273d26ff0058d2ea3151ac2d974ed22b974fe5","mergedId":"16345968|nl","seriesPremiereAirings":true,"startTime":1667106060,"title":"Gigantosaurus"},{"audioLanguages":[{"lang":"nl"}],"endTime":1667109240,"id":"crid:~~2F~~2Fgn.tv~~2F16568959~~2FEP033653970039,imi:832573a1b6e794b5710cb21285f8583be4df9cca","mergedId":"16345968|nl","seriesPremiereAirings":true,"startTime":1667107680,"title":"Gigantosaurus"},{"audioLanguages":[{"lang":"nl"}],"endTime":1667110920,"id":"Line truncated
@@ -0,0 +1 @@
{"duration":21600,"entries":[{"channelId":"outtv","events":[{"audioLanguages":[{"lang":"nl"}],"endTime":1667113200,"id":"crid:~~2F~~2Fgn.tv~~2F19729344~~2FSH038167020000~~2F144085397,imi:9f2ace7394bee803f144c06a6c08861d5c680346","isPlaceHolder":true,"mergedId":"19729344|nl","replayTVMinAge":16,"seriesPremiereAirings":true,"startTime":1667109600,"title":"Tommy Teleshopping"},{"audioLanguages":[{"lang":"nl"}],"endTime":1667119080,"id":"crid:~~2F~~2Fgn.tv~~2F16398658~~2FMV014546160000,imi:3dca289c6495bb1e18950a9a99296cca65cbe252","mergedId":"16398658|nl","minimumAge":16,"replayTVMinAge":16,"startTime":1667113200,"title":"Tchindas"},{"audioLanguages":[{"lang":"nl"}],"endTime":1667124000,"id":"crid:~~2F~~2Fgn.tv~~2F11563114~~2FMV014467070000,imi:506336c198db3661fe34b41e3f54ba8c058f09f7","mergedId":"11563114|nl","minimumAge":16,"replayTVMinAge":16,"startTime":1667119080,"title":"The Dickumentary"},{"audioLanguages":[{"lang":"nl"}],"endTime":1667131200,"id":"crid:~~2F~~2Fgn.tv~~2F19729344~~2FSH038167020000~~2F144085400,imi:397dd42ad5ff01f4146307592df2bbba8d698b7e","isPlaceHolder":true,"mergedId":"19729344|nl","replayTVMinAge":16,"seriesPremiereAirings":true,"startTime":1667124000,"title":"Tommy Teleshopping"}]},{"channelId":"bbcradio1"},{"channelId":"mcfrancofonie"},{"channelId":"bbcradio3"},{"channelId":"bbcradio2"},{"channelId":"11sports3betv","events":[{"audioLanguages":[{"lang":"fr"}],"endTime":1667112000,"id":"crid:~~2F~~2Fgn.tv~~2F22990921~~2FSH044882660000~~2F145607378,imi:93efde1299d22112307ae8cd9b9e7dce901fe5dd","isPlaceHolder":true,"seriesPremiereAirings":true,"startTime":1667100900,"title":"UFC 280: Oliveira vs. Makhachev"},{"audioLanguages":[{"lang":"fr"}],"endTime":1667115000,"id":"crid:~~2F~~2Fgn.tv~~2F21666406~~2FEP019561580018,imi:dc31ff4e511ac3aaac06d7def7dde3a00007dad2","mergedId":"308826|fr-FR","minimumAge":18,"replayTVMinAge":18,"seriesPremiereAirings":true,"startTime":1667112000,"title":"UFC Unleashed"},{"audioLanguages":[{"lang":"fr"}],"endTime":1667118300,"id":"crid:~~2F~~2Fgn.tv~~2F22143862~~2FEP039635190004,imi:684fea65a8c1dc7ec42d6d9d806876e719694d3f","minimumAge":18,"replayTVMinAge":18,"seriesPremiereAirings":true,"startTime":1667115000,"title":"UFC"},{"audioLanguages":[{"lang":"fr"}],"endTime":1667120100,"id":"crid:~~2F~~2Fgn.tv~~2F23010369~~2FEP038199950020,imi:75e3036509ba259cf77ad018de07d98317ce423a","mergedId":"13990141|fr-FR","minimumAge":18,"replayTVMinAge":18,"seriesPremiereAirings":true,"startTime":1667118300,"title":"UFC Greatest Fights"},{"audioLanguages":[{"lang":"fr"}],"endTime":1667132700,"id":"crid:~~2F~~2Fgn.tv~~2F23132839~~2FSH044995950000~~2F146313922,imi:d25dfaad698424cc59a06bf5be32cea11283ce39","isPlaceHolder":true,"seriesPremiereAirings":true,"startTime":1667120100,"title":"UFC Fight Night: Kattar vs. Allen"}]},{"channelId":"telenet5"},{"channelId":"telenet4"},{"channelId":"net5","events":[{"audioLanguages":[{"lang":"nl"}],"endTime":1667111460,"id":"crid:~~2F~~2Fgn.tv~~2F20574463~~2FSH039851580000~~2F147777218,imi:684e505b1567ccf534714ee95bce727b678665b8","isPlaceHolder":true,"mergedId":"20574463|nl","startTime":1667105100,"title":"Loop: Hart van Nederland"},{"audioLanguages":[{"lang":"nl"}],"endTime":1667114100,"id":"crid:~~2F~~2Fgn.tv~~2F14854731~~2FEP027620350041,imi:ae25dada325afd4ad2c2428945def1bdce4e581f","mergedId":"14472907|nl","seriesPremiereAirings":true,"startTime":1667111460,"title":"Huizenjacht"},{"audioLanguages":[{"lang":"nl"}],"endTime":1667117460,"id":"crid:~~2F~~2Fgn.tv~~2F23170314~~2FEP027651790171,imi:684620f0f8e6afc1ffc853868c0303947374a5c8","mergedId":"14485542|nl","seriesPremiereAirings":true,"startTime":1667114100,"title":"VTWonen: Weer verliefd op je huis"},{"audioLanguages":[{"lang":"nl"}],"endTime":1667120940,"id":"crid:~~2F~~2Fgn.tv~~2F13204342~~2FEP040875120011,imi:c1e2f44b2579493d1299ea7125f06be4d11fa0c8","mergedId":"13204261|nl","seriesPremiereAirings":true,"startTime":1667117460,"title":"Reno Rumble"},{"audioLanguages":[{"lang":"nl"}],"endTime":1667122740,"id":"crid:~~2F~~2Fgn.tv~~2F23111382~~2FEP036082330039,imi:59b5d05034c3a1c9972e9c5ccee477cb93b8c42f","mergedId":"18753874|nl","seriesPremiereAirings":true,"startTime":1667120940,"title":"Helden Van Nu"},{"audioLanguages":[{"lang":"nl"}],"endTime":1667124480,"id":"crid:~~2F~~2Fgn.tv~~2F23111310~~2FEP034672570058,imi:d0f6795b3ec4c44667711b4580a2f8dd3fced8a7","mergedId":"18100219|nl","seriesPremiereAirings":true,"startTime":1667122740,"title":"Woontrends"},{"audioLanguages":[{"lang":"nl"}],"endTime":1667127960,"id":"crid:~~2F~~2Fgn.tv~~2F14812123~~2FEP037553470050,imi:fd2726a18a99f23b75f7f74ef6c300fec5189112","mergedId":"11352587|nl","seriesPremiereAirings":true,"startTime":1667124480,"title":"My Kitchen Rules Nieuw-Zeeland"},{"audioLanguages":[{"lang":"nl"}],"endTime":1667131140,"id":"crid:~~2F~~2Fgn.tv~~2F14812124~~2FEP037553470045,imi:17382ed1859b395ceb92b9509f4440ca9c81e7e1","mergedId":"11352587|nl","seriesPremiereAirings":true,"startTime":1667127960,"title":"My Kitchen Rules Nieuw-Line truncated
@@ -0,0 +1 @@
{"duration":21600,"entries":[{"channelId":"outtv","events":[{"audioLanguages":[{"lang":"nl"}],"endTime":1667134800,"id":"crid:~~2F~~2Fgn.tv~~2F10202528~~2FSH035723610000~~2Fspecial,imi:55631febc6c5f41ffdd31720fe1de482be07551d","mergedId":"10202528|nl","minimumAge":16,"replayTVMinAge":16,"startTime":1667131200,"title":"OUTmusic"},{"audioLanguages":[{"lang":"nl"}],"endTime":1667142000,"id":"crid:~~2F~~2Fgn.tv~~2F19729344~~2FSH038167020000~~2F144567373,imi:1353fe8809925173ea1afe54476d97b9338382ca","isPlaceHolder":true,"mergedId":"19729344|nl","replayTVMinAge":16,"seriesPremiereAirings":true,"startTime":1667134800,"title":"Tommy Teleshopping"},{"audioLanguages":[{"lang":"nl"}],"endTime":1667145600,"id":"crid:~~2F~~2Fgn.tv~~2F10202528~~2FSH035723610000~~2Fspecial,imi:f1aa4cd3a10d0d334bc32d5c1b9cfd028caf37ec","mergedId":"10202528|nl","minimumAge":16,"replayTVMinAge":16,"startTime":1667142000,"title":"OUTmusic"},{"audioLanguages":[{"lang":"nl"}],"endTime":1667148420,"id":"crid:~~2F~~2Fgn.tv~~2F12043940~~2FSH044125180000~~2Fspecial,imi:cad5560c70d57b9562a6660f08db996609eb2304","mergedId":"12043940|nl","minimumAge":16,"replayTVMinAge":16,"startTime":1667145600,"title":"Gaysian Drag Queens"},{"audioLanguages":[{"lang":"nl"}],"endTime":1667153400,"id":"crid:~~2F~~2Fgn.tv~~2F10683183~~2FMV014450620000,imi:004cda26297db90c1e72b638e76e1fa6633b71f7","mergedId":"10683183|nl","minimumAge":16,"replayTVMinAge":16,"startTime":1667148420,"title":"Campaign of Hate: Russia and Gay Propaganda"}]},{"channelId":"bbcradio1"},{"channelId":"mcfrancofonie"},{"channelId":"bbcradio3"},{"channelId":"bbcradio2"},{"channelId":"11sports3betv","events":[{"audioLanguages":[{"lang":"fr"}],"endTime":1667132700,"id":"crid:~~2F~~2Fgn.tv~~2F23132839~~2FSH044995950000~~2F146313922,imi:d25dfaad698424cc59a06bf5be32cea11283ce39","isPlaceHolder":true,"seriesPremiereAirings":true,"startTime":1667120100,"title":"UFC Fight Night: Kattar vs. Allen"},{"audioLanguages":[{"lang":"fr"}],"endTime":1667136600,"id":"crid:~~2F~~2Fgn.tv~~2F22009336~~2FEP031271410026,imi:3cac5cbb2361c2f2680f0f3ff39e1bbdb5014dac","mergedId":"9678233|fr-FR","startTime":1667132700,"title":"Sport"},{"audioLanguages":[{"lang":"fr"}],"endTime":1667148900,"id":"crid:~~2F~~2Fgn.tv~~2F22189074~~2FEP020217460761,imi:df2d9744e45f488550f7e9508651a952e1a1919b","isSportsTeamEvent":true,"mergedId":"191277|fr-FR","seriesPremiereAirings":true,"startTime":1667136600,"title":"Football Américain : NFL"},{"audioLanguages":[{"lang":"fr"}],"endTime":1667161500,"id":"crid:~~2F~~2Fgn.tv~~2F23132839~~2FSH044995950000~~2F146313925,imi:5dc0d1164a9910af27e888871d55cf9ec84b5bba","isPlaceHolder":true,"seriesPremiereAirings":true,"startTime":1667148900,"title":"UFC Fight Night: Kattar vs. Allen"}]},{"channelId":"telenet5"},{"channelId":"telenet4"},{"channelId":"net5","events":[{"audioLanguages":[{"lang":"nl"}],"endTime":1667134320,"id":"crid:~~2F~~2Fgn.tv~~2F14812126~~2FEP037553470044,imi:f938210786d3235aa826cb3fa3cea35721bd1acc","mergedId":"11352587|nl","seriesPremiereAirings":true,"startTime":1667131140,"title":"My Kitchen Rules Nieuw-Zeeland"},{"audioLanguages":[{"lang":"nl"}],"endTime":1667137500,"id":"crid:~~2F~~2Fgn.tv~~2F14812128~~2FEP037553470051,imi:a5491bd003b5e8f565344adcdd3af1867a77aa63","mergedId":"11352587|nl","seriesPremiereAirings":true,"startTime":1667134320,"title":"My Kitchen Rules Nieuw-Zeeland"},{"audioLanguages":[{"lang":"nl"}],"endTime":1667140740,"id":"crid:~~2F~~2Fgn.tv~~2F13204346~~2FEP040875120010,imi:35d637dacb89dec3c80ab533cb0674dbb6819c90","mergedId":"13204261|nl","seriesPremiereAirings":true,"startTime":1667137500,"title":"Reno Rumble"},{"audioLanguages":[{"lang":"nl"}],"endTime":1667143860,"id":"crid:~~2F~~2Fgn.tv~~2F23170314~~2FEP027651790171,imi:8dfa7ecdba631012f4125f9d4ac6cd68609af138","mergedId":"14485542|nl","seriesPremiereAirings":true,"startTime":1667140740,"title":"VTWonen: Weer verliefd op je huis"},{"audioLanguages":[{"lang":"nl"}],"endTime":1667145900,"id":"crid:~~2F~~2Fgn.tv~~2F23113070~~2FEP034160450593,imi:dd7d3829e3debc91bf6ba17f54d790eea5510387","mergedId":"17817493|nl","seriesPremiereAirings":true,"startTime":1667143860,"title":"Lang leve de liefde"},{"audioLanguages":[{"lang":"nl"}],"endTime":1667148000,"id":"crid:~~2F~~2Fgn.tv~~2F23113072~~2FEP034160450594,imi:5bd9a37a7bb5772d2bd6db4f0fbbfa43868f0442","mergedId":"17817493|nl","seriesPremiereAirings":true,"startTime":1667145900,"title":"Lang leve de liefde"},{"audioLanguages":[{"lang":"nl"}],"endTime":1667150100,"id":"crid:~~2F~~2Fgn.tv~~2F23121345~~2FEP034160450595,imi:3db71a4a264cb5b427385ce2e95dc7f6e7770939","mergedId":"17817493|nl","seriesPremiereAirings":true,"startTime":1667148000,"title":"Lang leve de liefde"},{"audioLanguages":[{"lang":"nl"}],"endTime":1667152380,"id":"crid:~~2F~~2Fgn.tv~~2F23130011~~2FEP034160450596,imi:c1e5f52192bf15066a30c19204191754c564c582","mergedId":"17817493|nl","seriesPremiereAirings":true,"startTime":1667150100,"title":"Lang leve de liefde"},{"audioLanguages":[{"lang":"nl"}],"endTLine truncated
@@ -0,0 +1 @@
{"duration":21600,"entries":[{"channelId":"outtv","events":[{"audioLanguages":[{"lang":"nl"}],"endTime":1667153400,"id":"crid:~~2F~~2Fgn.tv~~2F10683183~~2FMV014450620000,imi:004cda26297db90c1e72b638e76e1fa6633b71f7","mergedId":"10683183|nl","minimumAge":16,"replayTVMinAge":16,"startTime":1667148420,"title":"Campaign of Hate: Russia and Gay Propaganda"},{"audioLanguages":[{"lang":"nl"}],"endTime":1667156640,"id":"crid:~~2F~~2Fgn.tv~~2F61694~~2FMV019028630000,imi:614ee81c96daea71dc54cdd9f4dc197a76598b41","mergedId":"61694|nl","minimumAge":16,"replayTVMinAge":16,"startTime":1667153400,"title":"Licensed to Kill"},{"audioLanguages":[{"lang":"nl"}],"endTime":1667158080,"id":"crid:~~2F~~2Fgn.tv~~2F13589284~~2FEP036009500001,imi:21cebaed74837ea62ea398caf1874f2d5fb21af1","mergedId":"13526927|nl","minimumAge":16,"replayTVMinAge":16,"seriesPremiereAirings":true,"startTime":1667156640,"title":"Not Today Bianca"},{"audioLanguages":[{"lang":"nl"}],"endTime":1667159520,"id":"crid:~~2F~~2Fgn.tv~~2F13538088~~2FEP036009500002,imi:32deb6610ee3b6b5dc9e32b5099204d369d96117","mergedId":"13526927|nl","minimumAge":16,"replayTVMinAge":16,"seriesPremiereAirings":true,"startTime":1667158080,"title":"Not Today Bianca"},{"audioLanguages":[{"lang":"nl"}],"endTime":1667162880,"id":"crid:~~2F~~2Fgn.tv~~2F17626266~~2FEP035720380009,imi:818ed83e8575e05d35d527029778d94b0e24dcc4","mergedId":"17549540|nl","minimumAge":16,"replayTVMinAge":16,"seriesPremiereAirings":true,"startTime":1667159520,"title":"Drag Race Thailand"},{"audioLanguages":[{"lang":"nl"}],"endTime":1667164800,"id":"crid:~~2F~~2Fgn.tv~~2F9985739~~2FEP044410300004,imi:734af413c18750de3d16351fe1dcdcf6d9686355","mergedId":"9934754|nl","minimumAge":16,"replayTVMinAge":16,"seriesPremiereAirings":true,"startTime":1667162880,"title":"Boystown"},{"audioLanguages":[{"lang":"nl"}],"endTime":1667171040,"id":"crid:~~2F~~2Fgn.tv~~2F12951477~~2FMV015563550000,imi:21e61ce77fe29b0f892ea38f84187adc5ba6f24f","mergedId":"12951477|nl","minimumAge":16,"replayTVMinAge":16,"startTime":1667164800,"title":"Girls Lost"},{"audioLanguages":[{"lang":"nl"}],"endTime":1667172420,"id":"crid:~~2F~~2Fgn.tv~~2F13589284~~2FEP036009500001,imi:b34d242181c74515039d688a8ff32908640879d4","mergedId":"13526927|nl","minimumAge":16,"replayTVMinAge":16,"seriesPremiereAirings":true,"startTime":1667171040,"title":"Not Today Bianca"},{"audioLanguages":[{"lang":"nl"}],"endTime":1667173920,"id":"crid:~~2F~~2Fgn.tv~~2F13538088~~2FEP036009500002,imi:0836569ef1b9ef8676eea9238c2fac0ec71df7dc","mergedId":"13526927|nl","minimumAge":16,"replayTVMinAge":16,"seriesPremiereAirings":true,"startTime":1667172420,"title":"Not Today Bianca"},{"audioLanguages":[{"lang":"nl"}],"endTime":1667177220,"id":"crid:~~2F~~2Fgn.tv~~2F17626266~~2FEP035720380009,imi:809cac8e4b32f1545aab96709463dc4625f884f0","mergedId":"17549540|nl","minimumAge":16,"replayTVMinAge":16,"seriesPremiereAirings":true,"startTime":1667173920,"title":"Drag Race Thailand"}]},{"channelId":"bbcradio1"},{"channelId":"mcfrancofonie"},{"channelId":"bbcradio3"},{"channelId":"bbcradio2"},{"channelId":"11sports3betv","events":[{"audioLanguages":[{"lang":"fr"}],"endTime":1667161500,"id":"crid:~~2F~~2Fgn.tv~~2F23132839~~2FSH044995950000~~2F146313925,imi:5dc0d1164a9910af27e888871d55cf9ec84b5bba","isPlaceHolder":true,"seriesPremiereAirings":true,"startTime":1667148900,"title":"UFC Fight Night: Kattar vs. Allen"},{"audioLanguages":[{"lang":"fr"}],"endTime":1667173500,"id":"crid:~~2F~~2Fgn.tv~~2F22189140~~2FEP020217460762,imi:2717290ffd4e0f888b0f49348bc1a6dfc7a65d55","isSportsTeamEvent":true,"mergedId":"191277|fr-FR","seriesPremiereAirings":true,"startTime":1667161500,"title":"Football Américain : NFL"},{"audioLanguages":[{"lang":"fr"}],"endTime":1667175600,"id":"crid:~~2F~~2Fgn.tv~~2F19537426~~2FSH044928060000~~2Fspecial,imi:100da25ae05429a64d3c0927ed5f6e5e25646a75","mergedId":"19537426|fr-FR","startTime":1667173500,"title":"Creative Drive"}]},{"channelId":"telenet5"},{"channelId":"telenet4"},{"channelId":"net5","events":[{"audioLanguages":[{"lang":"nl"}],"endTime":1667154660,"id":"crid:~~2F~~2Fgn.tv~~2F23140055~~2FEP034160450597,imi:8671d433c964d983e7971bb0096408cf0c92ea37","mergedId":"17817493|nl","seriesPremiereAirings":true,"startTime":1667152380,"title":"Lang leve de liefde"},{"audioLanguages":[{"lang":"nl"}],"endTime":1667158200,"id":"crid:~~2F~~2Fgn.tv~~2F20610168~~2FEP041998630007,imi:79411b1a998120edc70220646c974c961a0285ee","mergedId":"20445163|nl","minimumAge":9,"replayTVMinAge":9,"seriesPremiereAirings":true,"startTime":1667154660,"title":"Royal Flying Doctor Service"},{"audioLanguages":[{"lang":"nl"}],"endTime":1667161800,"id":"crid:~~2F~~2Fgn.tv~~2F15965307~~2FEP038808510030,imi:801d17172a1510c942413ff7324189531b103c12","mergedId":"13265322|nl","minimumAge":12,"replayTVMinAge":12,"seriesPremiereAirings":true,"startTime":1667158200,"title":"The Heart Guy"},{"audioLanguages":[{"lang":"nl"}],"endTime":1667165340,"id":"crid:~~2F~~2Fgn.tv~~2F15972085~~2FEP038808510029,imi:448ad44109cLine truncated
+1
View File
@@ -0,0 +1 @@
{"imageVersion":"LlFleQ","eventId":"crid:~~2F~~2Fgn.tv~~2F2459095~~2FEP036477800004,imi:0a2f4207b03c16c70b7fb3be8e07881aafe44106","channelId":"outtv","title":"Queer as Folk USA","startTime":1667087760,"endTime":1667094240,"mergedId":"184765|nl","minimumAge":"16","replayTvMinAge":16,"seriesId":"crid:~~2F~~2Fgn.tv~~2F7894548~~2FSH036477800000","parentSeriesId":"crid:~~2F~~2Fgn.tv~~2F184765~~2FSH036477800000","seasonNumber":5,"episodeNumber":8,"shortDescription":"Justin belandt in de gevangenis, Brian en Brandon banen zich een weg door de lijst, Ben treurt, Melanie en Lindsay proberen een interne scheiding en Emmett's stalker onthult zichzelf.","longDescription":"Justin belandt in de gevangenis, Brian en Brandon banen zich een weg door de lijst, Ben treurt, Melanie en Lindsay proberen een interne scheiding en Emmett's stalker onthult zichzelf.","actors":["Gale Harold","Hal Sparks","Randy Harrison","Peter Paige","Scott Lowell","Thea Gill","Michelle Clunie","Sharon Gless"],"audioLanguages":[{"lang":"nl"}],"productionDate":"2005","countryOfOrigin":"US","genres":["Dramaserie","LHBTI"],"seriesMepSeriesFinale":1123372800,"seriesPremiereAirings":true}
+119
View File
@@ -0,0 +1,119 @@
const axios = require('axios')
const dayjs = require('dayjs')
const API_STATIC_ENDPOINT = 'https://static.spark.telenet.tv/eng/web/epg-service-lite/be'
const API_PROD_ENDPOINT = 'https://prod.spark.telenet.tv/eng/web/linear-service/v2'
module.exports = {
site: 'telenet.tv',
request: {
cache: {
ttl: 60 * 60 * 1000 // 1 hour
}
},
url: function ({ date, channel }) {
return `${API_STATIC_ENDPOINT}/${channel.lang}/events/segments/${date.format('YYYYMMDDHHmmss')}`
},
async parser({ content, channel, date }) {
let programs = []
let items = parseItems(content, channel)
if (!items.length) return programs
const promises = [
axios.get(
`${API_STATIC_ENDPOINT}/${channel.lang}/events/segments/${date
.add(6, 'h')
.format('YYYYMMDDHHmmss')}`,
{
responseType: 'arraybuffer'
}
),
axios.get(
`${API_STATIC_ENDPOINT}/${channel.lang}/events/segments/${date
.add(12, 'h')
.format('YYYYMMDDHHmmss')}`,
{
responseType: 'arraybuffer'
}
),
axios.get(
`${API_STATIC_ENDPOINT}/${channel.lang}/events/segments/${date
.add(18, 'h')
.format('YYYYMMDDHHmmss')}`,
{
responseType: 'arraybuffer'
}
)
]
await Promise.allSettled(promises)
.then(results => {
results.forEach(r => {
if (r.status === 'fulfilled') {
const parsed = parseItems(r.value.data, channel)
items = items.concat(parsed)
}
})
})
.catch(console.error)
for (let item of items) {
const detail = await loadProgramDetails(item, channel)
programs.push({
title: item.title,
description: detail.longDescription,
category: detail.genres,
actors: detail.actors,
season: detail.seasonNumber,
episode: detail.episodeNumber,
start: parseStart(item),
stop: parseStop(item)
})
}
return programs
},
async channels() {
const data = await axios
.get(`${API_PROD_ENDPOINT}/channels?cityId=65535&language=en&productClass=Orion-DASH`)
.then(r => r.data)
.catch(console.log)
return data.channels.map(item => {
return {
lang: 'be',
site_id: item.id,
name: item.name
}
})
}
}
async function loadProgramDetails(item, channel) {
if (!item.id) return {}
const url = `${API_PROD_ENDPOINT}/replayEvent/${item.id}?returnLinearContent=true&language=${channel.lang}`
const data = await axios
.get(url)
.then(r => r.data)
.catch(console.log)
return data || {}
}
function parseStart(item) {
return dayjs.unix(item.startTime)
}
function parseStop(item) {
return dayjs.unix(item.endTime)
}
function parseItems(content, channel) {
if (!content) return []
const data = JSON.parse(content)
if (!data || !Array.isArray(data.entries)) return []
const channelData = data.entries.find(e => e.channelId === channel.site_id)
if (!channelData) return []
return Array.isArray(channelData.events) ? channelData.events : []
}
+91
View File
@@ -0,0 +1,91 @@
// npm run channels:parse -- --config=./sites/telenet.tv/telenet.tv.config.js --output=./sites/telenet.tv/telenet.tv_be.channels.xml
// npx epg-grabber --config=sites/telenet.tv/telenet.tv.config.js --channels=sites/telenet.tv/telenet.tv_be.channels.xml --output=guide.xml --days=2
const { parser, url } = require('./telenet.tv.config.js')
const fs = require('fs')
const path = require('path')
const axios = require('axios')
const dayjs = require('dayjs')
const utc = require('dayjs/plugin/utc')
const customParseFormat = require('dayjs/plugin/customParseFormat')
dayjs.extend(customParseFormat)
dayjs.extend(utc)
const API_STATIC_ENDPOINT = 'https://static.spark.telenet.tv/eng/web/epg-service-lite/be'
const API_PROD_ENDPOINT = 'https://prod.spark.telenet.tv/eng/web/linear-service/v2'
jest.mock('axios')
const date = dayjs.utc('2022-10-30', 'YYYY-MM-DD').startOf('d')
const channel = {
site_id: 'outtv',
xmltv_id: 'OutTV.nl',
lang: 'nl'
}
it('can generate valid url', () => {
expect(url({ date, channel })).toBe(`${API_STATIC_ENDPOINT}/nl/events/segments/20221030000000`)
})
it('can parse response', async () => {
const content = fs.readFileSync(path.resolve(__dirname, '__data__/content_0000.json'))
axios.get.mockImplementation(url => {
if (url === `${API_STATIC_ENDPOINT}/nl/events/segments/20221030060000`) {
return Promise.resolve({
data: fs.readFileSync(path.resolve(__dirname, '__data__/content_0600.json'))
})
} else if (url === `${API_STATIC_ENDPOINT}/nl/events/segments/20221030120000`) {
return Promise.resolve({
data: fs.readFileSync(path.resolve(__dirname, '__data__/content_1200.json'))
})
} else if (url === `${API_STATIC_ENDPOINT}/nl/events/segments/20221030180000`) {
return Promise.resolve({
data: fs.readFileSync(path.resolve(__dirname, '__data__/content_1800.json'))
})
} else if (
url ===
`${API_PROD_ENDPOINT}/replayEvent/crid:~~2F~~2Fgn.tv~~2F2459095~~2FEP036477800004,imi:0a2f4207b03c16c70b7fb3be8e07881aafe44106?returnLinearContent=true&language=nl`
) {
return Promise.resolve({
data: JSON.parse(fs.readFileSync(path.resolve(__dirname, '__data__/program.json')))
})
} else {
return Promise.resolve({ data: '' })
}
})
let results = await parser({ content, channel, date })
results = results.map(p => {
p.start = p.start.toJSON()
p.stop = p.stop.toJSON()
return p
})
expect(results[0]).toMatchObject({
start: '2022-10-29T23:56:00.000Z',
stop: '2022-10-30T01:44:00.000Z',
title: 'Queer as Folk USA',
description:
"Justin belandt in de gevangenis, Brian en Brandon banen zich een weg door de lijst, Ben treurt, Melanie en Lindsay proberen een interne scheiding en Emmett's stalker onthult zichzelf.",
category: ['Dramaserie', 'LHBTI'],
actors: [
'Gale Harold',
'Hal Sparks',
'Randy Harrison',
'Peter Paige',
'Scott Lowell',
'Thea Gill',
'Michelle Clunie',
'Sharon Gless'
],
season: 5,
episode: 8
})
})
it('can handle empty guide', async () => {
let results = await parser({ content: ``, channel, date })
expect(results).toMatchObject([])
})
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<site site="telenettv.be"> <site site="telenet.tv">
<channels> <channels>
<channel lang="nl" xmltv_id="2MInternational.ma" site_id="2mmonde">2M Monde</channel> <channel lang="nl" xmltv_id="2MInternational.ma" site_id="2mmonde">2M Monde</channel>
<channel lang="nl" xmltv_id="AB3.be" site_id="ab3">AB 3</channel> <channel lang="nl" xmltv_id="AB3.be" site_id="ab3">AB 3</channel>
-108
View File
@@ -1,108 +0,0 @@
const axios = require('axios')
const dayjs = require('dayjs')
const API_ENDPOINT = `https://obo-prod.oesp.telenettv.be/oesp/v4/BE/eng/web`
module.exports = {
site: 'telenettv.be',
ignore: true, // INFO: Request failed with status code 404 (Not Found)
url: function ({ date }) {
return `${API_ENDPOINT}/programschedules/${date.format('YYYYMMDD')}/1`
},
async parser({ content, channel, date }) {
let programs = []
let items = parseItems(content, channel)
if (!items.length) return programs
const d = date.format('YYYYMMDD')
const promises = [
axios.get(`${API_ENDPOINT}/programschedules/${d}/2`),
axios.get(`${API_ENDPOINT}/programschedules/${d}/3`),
axios.get(`${API_ENDPOINT}/programschedules/${d}/4`)
]
await Promise.allSettled(promises)
.then(results => {
results.forEach(r => {
if (r.status === 'fulfilled') {
items = items.concat(parseItems(r.value.data, channel))
}
})
})
.catch(console.error)
// items.forEach(item => {
for (let item of items) {
const detail = await loadProgramDetails(item)
programs.push({
title: item.t,
description: parseDescription(detail),
category: parseCategory(detail),
season: parseSeason(detail),
episode: parseEpisode(detail),
start: parseStart(item),
stop: parseStop(item)
})
}
//)
return programs
},
async channels() {
const data = await axios
.get(`${API_ENDPOINT}/channels`)
.then(r => r.data)
.catch(console.log)
return data.channels.map(item => {
return {
lang: 'be',
site_id: item.id.replace('lgi-be-prod-master:28001-', ''),
name: item.title
}
})
}
}
async function loadProgramDetails(item) {
if (!item.i) return {}
const url = `${API_ENDPOINT}/listings/${item.i}`
const data = await axios
.get(url)
.then(r => r.data)
.catch(console.log)
return data || {}
}
function parseStart(item) {
return dayjs(item.s)
}
function parseStop(item) {
return dayjs(item.e)
}
function parseItems(content, channel) {
const data = typeof content === 'string' ? JSON.parse(content) : content
if (!data || !Array.isArray(data.entries)) return []
const entity = data.entries.find(e => e.o === `lgi-be-prod-master:${channel.site_id}`)
return entity ? entity.l : []
}
function parseDescription(detail) {
return detail.program.longDescription || null
}
function parseCategory(detail) {
let categories = []
detail.program.categories.forEach(category => {
categories.push(category.title)
})
return categories
}
function parseSeason(detail) {
return detail.program.seriesNumber || null
}
function parseEpisode(detail) {
return detail.program.seriesEpisodeNumber || null
}
-139
View File
@@ -1,139 +0,0 @@
// npm run channels:parse -- --config=./sites/telenettv.be/telenettv.be.config.js --output=./sites/telenettv.be/telenettv.be_be.channels.xml
// npx epg-grabber --config=sites/telenettv.be/telenettv.be.config.js --channels=sites/telenettv.be/telenettv.be_be.channels.xml --output=guide.xml --days=2
const { parser, url } = require('./telenettv.be.config.js')
const axios = require('axios')
const dayjs = require('dayjs')
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('2022-03-15', 'YYYY-MM-DD').startOf('d')
const channel = {
site_id: 'vierhd',
xmltv_id: 'Play4.be'
}
it('can generate valid url', () => {
expect(url({ date })).toBe(
'https://obo-prod.oesp.telenettv.be/oesp/v4/BE/eng/web/programschedules/20220315/1'
)
})
it('can parse response', done => {
const content = `{"entryCount":246,"totalResults":246,"updated":1647371436768,"expires":1647372154557,"title":"EPG","periods":4,"periodStartTime":1647298800000,"periodEndTime":1647320400000,"entries":[{"o":"lgi-be-prod-master:vierhd","l":[{"i":"crid:~~2F~~2Ftelenet.be~~2F9958a3e1-19b3-4322-9fa7-ab7fd44f1092,imi:f18168cd95d436ff631f07f08c7742f098cadb81","t":"Control Pedro","s":1647298200000,"e":1647301200000,"c":"lgi-be-prod-master:genre-18","a":false,"r":true,"rm":true,"rs":0,"re":604800,"rst":"cloud","ra":false,"ad":[],"sl":[]}]}]}`
axios.get.mockImplementation(url => {
if (url === 'https://obo-prod.oesp.telenettv.be/oesp/v4/BE/eng/web/programschedules/20220315/2') {
return Promise.resolve({
data: JSON.parse(
`{"entryCount":246,"totalResults":246,"updated":1647371436768,"expires":1647372236730,"title":"EPG","periods":4,"periodStartTime":1647320400000,"periodEndTime":1647342000000,"entries":[{"o":"lgi-be-prod-master:vierhd","l":[{"i":"crid:~~2F~~2Ftelenet.be~~2F047876c2-f18b-4909-b979-319d0db62ac8,imi:251c38754b1d0df6dbf1b09e5204d972910d6c4c","t":"Geen uitzending","s":1647305100000,"e":1647325800000,"c":"lgi-be-prod-master:genre-31","a":false,"r":true,"rm":true,"rs":0,"re":604800,"rst":"cloud","ra":false,"ad":[],"sl":[]}]}]}`
)
})
} else if (url === 'https://obo-prod.oesp.telenettv.be/oesp/v4/BE/eng/web/programschedules/20220315/3') {
return Promise.resolve({
data: JSON.parse(
`{"entryCount":246,"totalResults":246,"updated":1647370845273,"expires":1647371696930,"title":"EPG","periods":4,"periodStartTime":1647342000000,"periodEndTime":1647363600000,"entries":[{"o":"lgi-be-prod-master:vierhd","l":[{"i":"crid:~~2F~~2Ftelenet.be~~2F39d9f084-9df6-46b4-977f-169b3d9d4dac,imi:8977050fcabf581a9df0a1a65f64390788d65512","t":"Superior Donuts","s":1647340800000,"e":1647342600000,"c":"lgi-be-prod-master:genre-25","a":false,"r":true,"rm":true,"rs":0,"re":604800,"rst":"cloud","ra":false,"ad":[],"sl":[]}]}]}`
)
})
} else if (url === 'https://obo-prod.oesp.telenettv.be/oesp/v4/BE/eng/web/programschedules/20220315/4') {
return Promise.resolve({
data: JSON.parse(
`{"entryCount":246,"totalResults":246,"updated":1647370837179,"expires":1647371697340,"title":"EPG","periods":4,"periodStartTime":1647363600000,"periodEndTime":1647385200000,"entries":[{"o":"lgi-be-prod-master:vierhd","l":[{"i":"crid:~~2F~~2Ftelenet.be~~2Fbe6ad1a1-a43a-421c-b425-8aaa347ebb98,imi:0f9efbceed015758c57ee7894a45a469ff5a6ae7","t":"Huizenjagers","s":1647363000000,"e":1647366300000,"c":"lgi-be-prod-master:genre-8","a":false,"r":true,"rm":true,"rs":0,"re":604800,"rst":"cloud","ra":false,"ad":[],"sl":[]}]}]}`
)
})
} else if (url === 'https://obo-prod.oesp.telenettv.be/oesp/v4/BE/eng/web/listings/crid:~~2F~~2Ftelenet.be~~2F9958a3e1-19b3-4322-9fa7-ab7fd44f1092,imi:f18168cd95d436ff631f07f08c7742f098cadb81') {
return Promise.resolve({
data: JSON.parse(
`{"id":"crid:~~2F~~2Ftelenet.be~~2F9958a3e1-19b3-4322-9fa7-ab7fd44f1092,imi:f18168cd95d436ff631f07f08c7742f098cadb81","startTime":1647298200000,"endTime":1647301200000,"actualStartTime":1647298200000,"actualEndTime":1647301200000,"expirationDate":1647903000000,"stationId":"lgi-be-prod-master:vierhd","imi":"imi:f18168cd95d436ff631f07f08c7742f098cadb81","scCridImi":"crid:~~2F~~2Ftelenet.be~~2F9958a3e1-19b3-4322-9fa7-ab7fd44f1092,imi:f18168cd95d436ff631f07f08c7742f098cadb81","mediaGroupId":"crid:~~2F~~2Ftelenet.be~~2Fcc94642f-f752-4fdb-872a-208952fb01e3","program":{"id":"crid:~~2F~~2Ftelenet.be~~2F9958a3e1-19b3-4322-9fa7-ab7fd44f1092","title":"Control Pedro","description":"Gasten: Jelle De Beule, Jeroom, Jan Dircksens en Frances Lefebure.","longDescription":"Gasten: Jelle De Beule, Jeroom, Jan Dircksens en Frances Lefebure.","medium":"TV","categories":[{"id":"lgi-be-prod-master:genre-18","title":"Interests","scheme":"urn:libertyglobal:metadata:cs:ContentCS:2014_1"},{"id":"lgi-be-prod-master:genre-18_10","title":"Showbiz","scheme":"urn:libertyglobal:metadata:cs:ContentCS:2014_1"}],"isAdult":false,"parentalRating":"all","cast":[],"directors":[],"images":[{"assetType":"HighResLandscape","assetTypes":["HighResLandscape"],"url":"https://staticqbr-be-prod.tnprod.cdn.dmdsdp.com/image-service/ImagesEPG/EventImages/6d7__944__6d79441b-5aa3-4b50-b4f2-8d5b149de982__W78738332.jpg"},{"assetType":"HighResLandscapeProductionStill","assetTypes":["HighResLandscapeProductionStill"],"url":"https://staticqbr-be-prod.tnprod.cdn.dmdsdp.com/image-service/ImagesEPG/EventImages/639__60b__63960b1a-19a5-4b96-af1f-382f82418880__L106699838.jpg"},{"assetType":"HighResPortrait","assetTypes":["HighResPortrait"],"url":"https://staticqbr-be-prod.tnprod.cdn.dmdsdp.com/image-service/ImagesEPG/EventImages/5fe__9ad__5fe9ad75-aae2-41db-905d-d92df04dfb50__B143197463.jpg"}],"parentId":"crid:~~2F~~2Ftelenet.be~~2Fa7fa9b0a-5073-4f9a-891a-67519c2a259f","rootId":"crid:~~2F~~2Ftelenet.be~~2Fcc94642f-f752-4fdb-872a-208952fb01e3","parentalRatingDescription":[],"resolutions":[],"mediaGroupId":"crid:~~2F~~2Ftelenet.be~~2Fcc94642f-f752-4fdb-872a-208952fb01e3","shortDescription":"Gasten: Jelle De Beule, Jeroom, Jan Dircksens en Frances Lefebure.","mediaType":"Episode","seriesEpisodeNumber":"6","seriesNumber":"1","videos":[],"videoStreams":[],"entitlements":["VIP","_OPEN_"],"currentProductIds":[],"currentTvodProductIds":[]},"parentId":"crid:~~2F~~2Ftelenet.be~~2Fa7fa9b0a-5073-4f9a-891a-67519c2a259f","rootId":"crid:~~2F~~2Ftelenet.be~~2Fcc94642f-f752-4fdb-872a-208952fb01e3","replayTvAvailable":true,"audioTracks":[],"ratings":[],"offersLatestExpirationDate":1647301200000,"replayTvStartOffset":0,"replayTvEndOffset":604800,"replayEnabledOnMobileClients":true,"replaySource":"cloud","isGoReplayableViaExternalApp":false}`
)
})
} else if (url === 'https://obo-prod.oesp.telenettv.be/oesp/v4/BE/eng/web/listings/crid:~~2F~~2Ftelenet.be~~2F047876c2-f18b-4909-b979-319d0db62ac8,imi:251c38754b1d0df6dbf1b09e5204d972910d6c4c') {
return Promise.resolve({
data: JSON.parse(
`{"id":"crid:~~2F~~2Ftelenet.be~~2F047876c2-f18b-4909-b979-319d0db62ac8,imi:251c38754b1d0df6dbf1b09e5204d972910d6c4c","startTime":1647305100000,"endTime":1647325800000,"actualStartTime":1647305100000,"actualEndTime":1647325800000,"expirationDate":1647909900000,"stationId":"lgi-be-prod-master:vierhd","imi":"imi:251c38754b1d0df6dbf1b09e5204d972910d6c4c","scCridImi":"crid:~~2F~~2Ftelenet.be~~2F047876c2-f18b-4909-b979-319d0db62ac8,imi:251c38754b1d0df6dbf1b09e5204d972910d6c4c","mediaGroupId":"crid:~~2F~~2Ftelenet.be~~2F047876c2-f18b-4909-b979-319d0db62ac8","program":{"id":"crid:~~2F~~2Ftelenet.be~~2F047876c2-f18b-4909-b979-319d0db62ac8","title":"Geen uitzending","description":"Geen uitzending.","longDescription":"Geen uitzending.","medium":"Movie","categories":[{"id":"lgi-be-prod-master:genre-31","title":"Unclassified","scheme":"urn:libertyglobal:metadata:cs:ContentCS:2014_1"}],"isAdult":false,"cast":[],"directors":[],"images":[{"assetType":"HighResLandscapeProductionStill","assetTypes":["HighResLandscapeProductionStill"],"url":"https://staticqbr-be-prod.tnprod.cdn.dmdsdp.com/image-service/ImagesEPG/EventImages/576__a31__576a31db-5065-4b1f-a39f-f26302bba477__L181744529.jpg"},{"assetType":"HighResPortrait","assetTypes":["HighResPortrait"],"url":"https://staticqbr-be-prod.tnprod.cdn.dmdsdp.com/image-service/ImagesEPG/EventImages/167__ef8__167ef834-7d1c-4336-9234-795ed7efc46a__B181818910.jpg"}],"rootId":"crid:~~2F~~2Ftelenet.be~~2F047876c2-f18b-4909-b979-319d0db62ac8","parentalRatingDescription":[],"resolutions":[],"mediaGroupId":"crid:~~2F~~2Ftelenet.be~~2F047876c2-f18b-4909-b979-319d0db62ac8","shortDescription":"Geen uitzending.","mediaType":"FeatureFilm","videos":[],"videoStreams":[],"entitlements":["VIP","_OPEN_"],"currentProductIds":[],"currentTvodProductIds":[]},"rootId":"crid:~~2F~~2Ftelenet.be~~2F047876c2-f18b-4909-b979-319d0db62ac8","replayTvAvailable":true,"audioTracks":[],"ratings":[],"offersLatestExpirationDate":1647325800000,"replayTvStartOffset":0,"replayTvEndOffset":604800,"replayEnabledOnMobileClients":true,"replaySource":"cloud","isGoReplayableViaExternalApp":false}`
)
})
} else if (url === 'https://obo-prod.oesp.telenettv.be/oesp/v4/BE/eng/web/listings/crid:~~2F~~2Ftelenet.be~~2F39d9f084-9df6-46b4-977f-169b3d9d4dac,imi:8977050fcabf581a9df0a1a65f64390788d65512') {
return Promise.resolve({
data: JSON.parse(
`{"id":"crid:~~2F~~2Ftelenet.be~~2F39d9f084-9df6-46b4-977f-169b3d9d4dac,imi:8977050fcabf581a9df0a1a65f64390788d65512","startTime":1647340800000,"endTime":1647342600000,"actualStartTime":1647340800000,"actualEndTime":1647342600000,"expirationDate":1647945600000,"stationId":"lgi-be-prod-master:vierhd","imi":"imi:8977050fcabf581a9df0a1a65f64390788d65512","scCridImi":"crid:~~2F~~2Ftelenet.be~~2F39d9f084-9df6-46b4-977f-169b3d9d4dac,imi:8977050fcabf581a9df0a1a65f64390788d65512","mediaGroupId":"crid:~~2F~~2Ftelenet.be~~2F32ff65df-723e-4324-98d3-54c38fef574b","program":{"id":"crid:~~2F~~2Ftelenet.be~~2F39d9f084-9df6-46b4-977f-169b3d9d4dac","title":"Superior Donuts","description":"Tush en Sweatpants nemen hun rol als kerstman heel ernstig en al snel wordt het een strijd tussen de twee.","longDescription":"Tush en Sweatpants nemen hun rol als kerstman heel ernstig en al snel wordt het een strijd tussen de twee.","medium":"TV","categories":[{"id":"lgi-be-prod-master:genre-25","title":"Sitcoms","scheme":"urn:libertyglobal:metadata:cs:ContentCS:2014_1"}],"isAdult":false,"parentalRating":"all","cast":["Judd Hirsch","Jermaine Fowler","David Koechner","Maz Jobrani","Katey Sagal"],"directors":[],"images":[{"assetType":"HighResLandscape","assetTypes":["HighResLandscape"],"url":"https://staticqbr-be-prod.tnprod.cdn.dmdsdp.com/image-service/ImagesEPG/EventImages/c1e__fbf__c1efbfbb-d66c-4068-baca-451bafd66bdd__W137149145.jpg"},{"assetType":"HighResLandscapeProductionStill","assetTypes":["HighResLandscapeProductionStill"],"url":"https://staticqbr-be-prod.tnprod.cdn.dmdsdp.com/image-service/ImagesEPG/EventImages/7f6__f32__7f6f3204-c31a-4917-a5be-3e6a6e674f6f__L136396722.jpg"},{"assetType":"HighResPortrait","assetTypes":["HighResPortrait"],"url":"https://staticqbr-be-prod.tnprod.cdn.dmdsdp.com/image-service/ImagesEPG/EventImages/1e1__4cb__1e14cbdb-0f25-48b8-bcdc-a205f8b10cb1__B134685946.jpg"}],"parentId":"crid:~~2F~~2Ftelenet.be~~2F4139fd13-d201-4edc-8f17-e965a8b590cb","rootId":"crid:~~2F~~2Ftelenet.be~~2F32ff65df-723e-4324-98d3-54c38fef574b","parentalRatingDescription":[],"resolutions":[],"mediaGroupId":"crid:~~2F~~2Ftelenet.be~~2F32ff65df-723e-4324-98d3-54c38fef574b","shortDescription":"Tush en Sweatpants nemen hun rol als kerstman heel ernstig en al snel wordt het een strijd tussen de twee.","mediaType":"Episode","seriesEpisodeNumber":"7","seriesNumber":"2","videos":[],"videoStreams":[],"entitlements":["VIP","_OPEN_"],"currentProductIds":[],"currentTvodProductIds":[],"secondaryTitle":"Homeless for the Holidays"},"parentId":"crid:~~2F~~2Ftelenet.be~~2F4139fd13-d201-4edc-8f17-e965a8b590cb","rootId":"crid:~~2F~~2Ftelenet.be~~2F32ff65df-723e-4324-98d3-54c38fef574b","replayTvAvailable":true,"audioTracks":[],"ratings":[],"offersLatestExpirationDate":1647342600000,"replayTvStartOffset":0,"replayTvEndOffset":604800,"replayEnabledOnMobileClients":true,"replaySource":"cloud","isGoReplayableViaExternalApp":false}`
)
})
} else if (url === 'https://obo-prod.oesp.telenettv.be/oesp/v4/BE/eng/web/listings/crid:~~2F~~2Ftelenet.be~~2Fbe6ad1a1-a43a-421c-b425-8aaa347ebb98,imi:0f9efbceed015758c57ee7894a45a469ff5a6ae7') {
return Promise.resolve({
data: JSON.parse(
`{"id":"crid:~~2F~~2Ftelenet.be~~2Fbe6ad1a1-a43a-421c-b425-8aaa347ebb98,imi:0f9efbceed015758c57ee7894a45a469ff5a6ae7","startTime":1647363000000,"endTime":1647366300000,"actualStartTime":1647363000000,"actualEndTime":1647366300000,"expirationDate":1647967800000,"stationId":"lgi-be-prod-master:vierhd","imi":"imi:0f9efbceed015758c57ee7894a45a469ff5a6ae7","scCridImi":"crid:~~2F~~2Ftelenet.be~~2Fbe6ad1a1-a43a-421c-b425-8aaa347ebb98,imi:0f9efbceed015758c57ee7894a45a469ff5a6ae7","mediaGroupId":"crid:~~2F~~2Ftelenet.be~~2F60df2d31-977c-4e00-8e1c-d1e255fb068e","program":{"id":"crid:~~2F~~2Ftelenet.be~~2Fbe6ad1a1-a43a-421c-b425-8aaa347ebb98","title":"Huizenjagers","description":"Makelaars Alexandra, Kinga en Cedric gaan in de Limburgse Kempen op zoek naar droomwoningen voor enkele kandidaat-kopers.","longDescription":"Makelaars Alexandra, Kinga en Cedric gaan in de Limburgse Kempen op zoek naar droomwoningen voor enkele kandidaat-kopers. De eerste opdracht komt van Aika en Didier, een kieskeurig koppel uit Mol. Ze zoeken een eerste eigen huis met drie slaapkamers en een kleine tuin voor 300.000 euro. Heel belangrijk voor hen is dat er geen inkijk van de buren is. Bovendien moet er voldoende plaats zijn voor al hun fietsen.","medium":"TV","categories":[{"id":"lgi-be-prod-master:genre-8","title":"Documentary","scheme":"urn:libertyglobal:metadata:cs:ContentCS:2014_1"},{"id":"lgi-be-prod-master:genre-8_10","title":"Reality TV","scheme":"urn:libertyglobal:metadata:cs:ContentCS:2014_1"}],"isAdult":false,"parentalRating":"all","cast":[],"directors":[],"images":[{"assetType":"HighResLandscape","assetTypes":["HighResLandscape"],"url":"https://staticqbr-be-prod.tnprod.cdn.dmdsdp.com/image-service/ImagesEPG/EventImages/1d1__17e__1d117e2e-644c-4532-a393-2938fb0be42f__W109854859.jpg"},{"assetType":"HighResLandscapeProductionStill","assetTypes":["HighResLandscapeProductionStill"],"url":"https://staticqbr-be-prod.tnprod.cdn.dmdsdp.com/image-service/ImagesEPG/EventImages/b53__ebc__b53ebc21-ba0e-45cc-a7b6-5aca802f0fb5__L132922367.jpg"},{"assetType":"HighResPortrait","assetTypes":["HighResPortrait"],"url":"https://staticqbr-be-prod.tnprod.cdn.dmdsdp.com/image-service/ImagesEPG/EventImages/c81__2a3__c812a3d6-98b4-4964-8d9d-d7d190232f59__B141331067.jpg"}],"parentId":"crid:~~2F~~2Ftelenet.be~~2Fca7eb3e9-97d4-4962-8342-4c5748dcbc98","rootId":"crid:~~2F~~2Ftelenet.be~~2F60df2d31-977c-4e00-8e1c-d1e255fb068e","parentalRatingDescription":[],"resolutions":[],"mediaGroupId":"crid:~~2F~~2Ftelenet.be~~2F60df2d31-977c-4e00-8e1c-d1e255fb068e","shortDescription":"Makelaars Alexandra, Kinga en Cedric gaan in de Limburgse Kempen op zoek naar droomwoningen voor enkele kandidaat-kopers.","mediaType":"Episode","seriesEpisodeNumber":"25","seriesNumber":"3","videos":[],"videoStreams":[],"entitlements":["VIP","_OPEN_"],"currentProductIds":[],"currentTvodProductIds":[],"secondaryTitle":"Limburgse Kempen"},"parentId":"crid:~~2F~~2Ftelenet.be~~2Fca7eb3e9-97d4-4962-8342-4c5748dcbc98","rootId":"crid:~~2F~~2Ftelenet.be~~2F60df2d31-977c-4e00-8e1c-d1e255fb068e","replayTvAvailable":true,"audioTracks":[],"ratings":[],"offersLatestExpirationDate":1647706200000,"replayTvStartOffset":0,"replayTvEndOffset":604800,"replayEnabledOnMobileClients":true,"replaySource":"cloud","isGoReplayableViaExternalApp":false}`
)
})
} else {
return Promise.resolve({ data: '' })
}
})
parser({ content, channel, date })
.then(result => {
result = result.map(p => {
p.start = p.start.toJSON()
p.stop = p.stop.toJSON()
return p
})
expect(result).toMatchObject([
{
start: '2022-03-14T22:50:00.000Z',
stop: '2022-03-14T23:40:00.000Z',
title: 'Control Pedro',
description: 'Gasten: Jelle De Beule, Jeroom, Jan Dircksens en Frances Lefebure.',
category: ['Interests', 'Showbiz'],
season: '1',
episode: '6'
},
{
start: '2022-03-15T00:45:00.000Z',
stop: '2022-03-15T06:30:00.000Z',
title: 'Geen uitzending',
description: 'Geen uitzending.',
category: ['Unclassified'],
season: null,
episode: null
},
{
start: '2022-03-15T10:40:00.000Z',
stop: '2022-03-15T11:10:00.000Z',
title: 'Superior Donuts',
description: 'Tush en Sweatpants nemen hun rol als kerstman heel ernstig en al snel wordt het een strijd tussen de twee.',
category: ['Sitcoms'],
season: '2',
episode: '7'
},
{
start: '2022-03-15T16:50:00.000Z',
stop: '2022-03-15T17:45:00.000Z',
title: 'Huizenjagers',
description: 'Makelaars Alexandra, Kinga en Cedric gaan in de Limburgse Kempen op zoek naar droomwoningen voor enkele kandidaat-kopers. De eerste opdracht komt van Aika en Didier, een kieskeurig koppel uit Mol. Ze zoeken een eerste eigen huis met drie slaapkamers en een kleine tuin voor 300.000 euro. Heel belangrijk voor hen is dat er geen inkijk van de buren is. Bovendien moet er voldoende plaats zijn voor al hun fietsen.',
category: ['Documentary', 'Reality TV'],
season: '3',
episode: '25'
}
])
done()
})
.catch(done)
})
it('can handle empty guide', done => {
parser({
content: `[{"type":"PATH_PARAM","code":"period","reason":"INVALID"}]`,
channel,
date
})
.then(result => {
expect(result).toMatchObject([])
done()
})
.catch(done)
})