diff --git a/SITES.md b/SITES.md index c2da69e5..00a82749 100644 --- a/SITES.md +++ b/SITES.md @@ -16,7 +16,7 @@ antennasatellite.gr11🟢 arianatelevision.com11🟢 arirang.com33🟢 - artonline.tv55🟢https://github.com/iptv-org/epg/issues/2954 + artonline.tv55🟢 awilime.com1100🟢 bein.com134134🟢 beinsports.com13081🟢 @@ -42,6 +42,7 @@ directv.com.ar3710🔴https://github.com/iptv-org/epg/issues/2339 directv.com.uy37459🟢 dishtv.in434326🟢 + distro.tv315123🟢 dna.fi1230🟢 dsmart.com.tr10076🟢 dstv.com297980🟢 @@ -91,7 +92,7 @@ mediaklikk.hu88🟢 mediasetinfinity.mediaset.it1313🟢 melita.com127110🟢 - meo.pt211185🟢 + meo.pt211185🟢https://github.com/iptv-org/epg/issues/3022 meuguia.tv10296🟢 mewatch.sg2524🟢 mi.tv2084614🟢 @@ -230,6 +231,7 @@ wavve.com7776🟢 web.magentatv.de348226🟢https://github.com/iptv-org/epg/issues/2966 webtv.delta.nl247204🟢 + webtv.sk1860🟢 winplay.co22🟢https://github.com/iptv-org/epg/issues/3003 worldfishingnetwork.com11🟢 www3.nhk.or.jp11🟢 diff --git a/sites/distro.tv/__data__/content.json b/sites/distro.tv/__data__/content.json new file mode 100644 index 00000000..0f7fcb06 --- /dev/null +++ b/sites/distro.tv/__data__/content.json @@ -0,0 +1,734 @@ +{ + "version": "1.0", + "env": { + "st": "2026-02-10 10:24:59" + }, + "epg": { + "45143": { + "title": "Euronews", + "description": "Europe’s leading international news channel. Its mission is to empower people to form their own opinion. Euronews is impartial with a diversity of viewpoints.", + "slots": [ + { + "title": "News", + "description": "The leading news stories of the moment.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-10 10:17:05", + "end": "2026-02-10 10:30:00" + }, + { + "title": "Euronews Now", + "description": "Breaking News. In depth analysis on the biggest stories making headlines in Europe and across the world.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-10 10:30:00", + "end": "2026-02-10 10:46:00" + }, + { + "title": "News", + "description": "The leading news stories of the moment.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-10 10:46:00", + "end": "2026-02-10 11:00:00" + }, + { + "title": "Euronews Now", + "description": "Breaking News. In depth analysis on the biggest stories making headlines in Europe and across the world.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-10 11:00:00", + "end": "2026-02-10 11:30:05" + }, + { + "title": "Euronews Now", + "description": "Breaking News. In depth analysis on the biggest stories making headlines in Europe and across the world.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-10 11:30:05", + "end": "2026-02-10 12:15:30" + }, + { + "title": "Euronews Now", + "description": "Breaking News. In depth analysis on the biggest stories making headlines in Europe and across the world.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-10 12:15:30", + "end": "2026-02-10 13:00:00" + }, + { + "title": "Euronews Now", + "description": "Breaking News. In depth analysis on the biggest stories making headlines in Europe and across the world.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-10 13:00:00", + "end": "2026-02-10 13:30:05" + }, + { + "title": "Euronews Now", + "description": "Breaking News. In depth analysis on the biggest stories making headlines in Europe and across the world.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-10 13:30:05", + "end": "2026-02-10 14:15:30" + }, + { + "title": "Euronews Now", + "description": "Breaking News. In depth analysis on the biggest stories making headlines in Europe and across the world.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-10 14:15:30", + "end": "2026-02-10 14:45:55" + }, + { + "title": "News", + "description": "The leading news stories of the moment.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-10 14:45:55", + "end": "2026-02-10 15:00:00" + }, + { + "title": "The European debrief", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-10 15:00:00", + "end": "2026-02-10 15:18:40" + }, + { + "title": "News", + "description": "The leading news stories of the moment.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-10 15:18:40", + "end": "2026-02-10 15:30:00" + }, + { + "title": "The European debrief", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-10 15:30:00", + "end": "2026-02-10 16:00:00" + }, + { + "title": "The European debrief", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-10 16:00:00", + "end": "2026-02-10 16:30:05" + }, + { + "title": "The European debrief", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-10 16:30:05", + "end": "2026-02-10 17:15:30" + }, + { + "title": "The European debrief", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-10 17:15:30", + "end": "2026-02-10 18:00:00" + }, + { + "title": "The European debrief", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-10 18:00:00", + "end": "2026-02-10 18:30:05" + }, + { + "title": "The European debrief", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-10 18:30:05", + "end": "2026-02-10 19:14:30" + }, + { + "title": "The European debrief", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-10 19:14:30", + "end": "2026-02-10 19:30:55" + }, + { + "title": "News", + "description": "The leading news stories of the moment.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-10 19:30:55", + "end": "2026-02-10 19:45:00" + }, + { + "title": "The European debrief", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-10 19:45:00", + "end": "2026-02-10 20:15:30" + }, + { + "title": "The European debrief", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-10 20:15:30", + "end": "2026-02-10 21:00:00" + }, + { + "title": "The European debrief", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-10 21:00:00", + "end": "2026-02-10 21:31:15" + }, + { + "title": "News", + "description": "The leading news stories of the moment.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-10 21:31:15", + "end": "2026-02-10 22:00:00" + }, + { + "title": "The European debrief", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-10 22:00:00", + "end": "2026-02-10 22:30:05" + }, + { + "title": "The European debrief", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-10 22:30:05", + "end": "2026-02-10 23:15:30" + }, + { + "title": "The European debrief", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-10 23:15:30", + "end": "2026-02-11 00:00:00" + }, + { + "title": "The European debrief", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-11 00:00:00", + "end": "2026-02-11 00:30:05" + }, + { + "title": "The European debrief", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-11 00:30:05", + "end": "2026-02-11 01:15:30" + }, + { + "title": "The European debrief", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-11 01:15:30", + "end": "2026-02-11 02:00:00" + }, + { + "title": "The European debrief", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-11 02:00:00", + "end": "2026-02-11 02:30:05" + }, + { + "title": "The European debrief", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-11 02:30:05", + "end": "2026-02-11 03:15:30" + }, + { + "title": "The European debrief", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-11 03:15:30", + "end": "2026-02-11 04:00:00" + }, + { + "title": "The European debrief", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-11 04:00:00", + "end": "2026-02-11 04:30:05" + }, + { + "title": "The European debrief", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-11 04:30:05", + "end": "2026-02-11 05:00:00" + }, + { + "title": "Wake up Europe", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-11 05:00:00", + "end": "2026-02-11 05:30:05" + }, + { + "title": "Wake up Europe", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-11 05:30:05", + "end": "2026-02-11 06:15:30" + }, + { + "title": "Wake up Europe", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-11 06:15:30", + "end": "2026-02-11 07:00:00" + }, + { + "title": "News", + "description": "The leading news stories of the moment.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-11 07:00:00", + "end": "2026-02-11 07:30:00" + }, + { + "title": "Wake up Europe", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-11 07:30:00", + "end": "2026-02-11 08:00:00" + }, + { + "title": "News", + "description": "The leading news stories of the moment.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-11 08:00:00", + "end": "2026-02-11 08:30:00" + }, + { + "title": "Wake up Europe", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-11 08:30:00", + "end": "2026-02-11 09:00:00" + }, + { + "title": "News", + "description": "The leading news stories of the moment.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-11 09:00:00", + "end": "2026-02-11 09:30:00" + }, + { + "title": "Euronews Now", + "description": "Breaking News. In depth analysis on the biggest stories making headlines in Europe and across the world.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-11 09:30:00", + "end": "2026-02-11 10:00:00" + }, + { + "title": "Euronews Now", + "description": "Breaking News. In depth analysis on the biggest stories making headlines in Europe and across the world.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-11 10:00:00", + "end": "2026-02-11 10:31:15" + }, + { + "title": "News", + "description": "The leading news stories of the moment.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-11 10:31:15", + "end": "2026-02-11 11:00:00" + }, + { + "title": "Euronews Now", + "description": "Breaking News. In depth analysis on the biggest stories making headlines in Europe and across the world.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-11 11:00:00", + "end": "2026-02-11 11:30:05" + }, + { + "title": "Euronews Now", + "description": "Breaking News. In depth analysis on the biggest stories making headlines in Europe and across the world.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-11 11:30:05", + "end": "2026-02-11 11:46:30" + }, + { + "title": "News", + "description": "The leading news stories of the moment.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-11 11:46:30", + "end": "2026-02-11 12:00:00" + }, + { + "title": "Euronews Now", + "description": "Breaking News. In depth analysis on the biggest stories making headlines in Europe and across the world.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-11 12:00:00", + "end": "2026-02-11 12:30:05" + }, + { + "title": "Euronews Now", + "description": "Breaking News. In depth analysis on the biggest stories making headlines in Europe and across the world.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-11 12:30:05", + "end": "2026-02-11 13:15:30" + }, + { + "title": "Euronews Now", + "description": "Breaking News. In depth analysis on the biggest stories making headlines in Europe and across the world.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-11 13:15:30", + "end": "2026-02-11 14:00:00" + }, + { + "title": "Euronews Now", + "description": "Breaking News. In depth analysis on the biggest stories making headlines in Europe and across the world.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-11 14:00:00", + "end": "2026-02-11 14:31:00" + }, + { + "title": "News", + "description": "The leading news stories of the moment.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-11 14:31:00", + "end": "2026-02-11 15:00:00" + }, + { + "title": "The European debrief", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-11 15:00:00", + "end": "2026-02-11 15:30:00" + }, + { + "title": "The European debrief", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-11 15:30:00", + "end": "2026-02-11 16:00:00" + }, + { + "title": "The European debrief", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-11 16:00:00", + "end": "2026-02-11 16:30:05" + }, + { + "title": "The European debrief", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-11 16:30:05", + "end": "2026-02-11 17:15:30" + }, + { + "title": "The European debrief", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-11 17:15:30", + "end": "2026-02-11 17:48:25" + }, + { + "title": "News", + "description": "The leading news stories of the moment.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-11 17:48:25", + "end": "2026-02-11 18:00:00" + }, + { + "title": "The European debrief", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-11 18:00:00", + "end": "2026-02-11 18:30:05" + }, + { + "title": "The European debrief", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-11 18:30:05", + "end": "2026-02-11 19:14:30" + }, + { + "title": "The European debrief", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-11 19:14:30", + "end": "2026-02-11 19:30:51" + }, + { + "title": "News", + "description": "The leading news stories of the moment.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-11 19:30:51", + "end": "2026-02-11 20:00:00" + }, + { + "title": "The European debrief", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-11 20:00:00", + "end": "2026-02-11 20:30:05" + }, + { + "title": "The European debrief", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-11 20:30:05", + "end": "2026-02-11 21:15:30" + }, + { + "title": "The European debrief", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-11 21:15:30", + "end": "2026-02-11 22:00:00" + }, + { + "title": "The European debrief", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-11 22:00:00", + "end": "2026-02-11 22:29:55" + }, + { + "title": "News", + "description": "The leading news stories of the moment.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-11 22:29:55", + "end": "2026-02-11 23:00:00" + }, + { + "title": "The European debrief", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-11 23:00:00", + "end": "2026-02-11 23:30:05" + }, + { + "title": "The European debrief", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-11 23:30:05", + "end": "2026-02-11 23:46:15" + }, + { + "title": "News", + "description": "The leading news stories of the moment.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-11 23:46:15", + "end": "2026-02-12 00:00:00" + }, + { + "title": "The European debrief", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-12 00:00:00", + "end": "2026-02-12 00:31:30" + }, + { + "title": "News", + "description": "The leading news stories of the moment.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-12 00:31:30", + "end": "2026-02-12 01:00:00" + }, + { + "title": "The European debrief", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-12 01:00:00", + "end": "2026-02-12 01:30:05" + }, + { + "title": "The European debrief", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-12 01:30:05", + "end": "2026-02-12 02:14:30" + }, + { + "title": "The European debrief", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-12 02:14:30", + "end": "2026-02-12 03:00:00" + }, + { + "title": "The European debrief", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-12 03:00:00", + "end": "2026-02-12 03:30:05" + }, + { + "title": "The European debrief", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-12 03:30:05", + "end": "2026-02-12 04:15:30" + }, + { + "title": "The European debrief", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-12 04:15:30", + "end": "2026-02-12 05:00:00" + }, + { + "title": "Wake up Europe", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-12 05:00:00", + "end": "2026-02-12 05:30:05" + }, + { + "title": "Wake up Europe", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-12 05:30:05", + "end": "2026-02-12 06:15:30" + }, + { + "title": "Wake up Europe", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-12 06:15:30", + "end": "2026-02-12 07:00:00" + }, + { + "title": "News", + "description": "The leading news stories of the moment.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-12 07:00:00", + "end": "2026-02-12 07:30:00" + }, + { + "title": "Wake up Europe", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-12 07:30:00", + "end": "2026-02-12 08:00:00" + }, + { + "title": "News", + "description": "The leading news stories of the moment.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-12 08:00:00", + "end": "2026-02-12 08:30:00" + }, + { + "title": "Wake up Europe", + "description": "Live headlines,breaking news, analysis and interviews from Europe's News Centre.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-12 08:30:00", + "end": "2026-02-12 09:00:00" + }, + { + "title": "News", + "description": "The leading news stories of the moment.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-12 09:00:00", + "end": "2026-02-12 09:30:00" + }, + { + "title": "Euronews Now", + "description": "Breaking News. In depth analysis on the biggest stories making headlines in Europe and across the world.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-12 09:30:00", + "end": "2026-02-12 10:00:00" + }, + { + "title": "Euronews Now", + "description": "Breaking News. In depth analysis on the biggest stories making headlines in Europe and across the world.", + "rating": null, + "img_thumbh": null, + "start": "2026-02-12 10:00:00", + "end": "2026-02-12 10:30:00" + } + ] +} + } +} \ No newline at end of file diff --git a/sites/distro.tv/distro.tv.channels.xml b/sites/distro.tv/distro.tv.channels.xml new file mode 100644 index 00000000..821f1309 --- /dev/null +++ b/sites/distro.tv/distro.tv.channels.xml @@ -0,0 +1,211 @@ + + + Horizon Sports + The Boat Show + Outside + Lone Star + Hard Knocks + Right Now Tv + OAN Plus + AWE Plus + Schwab Network + CJC Television Network + World Poker Tour + Humor Mill + SKWAD + Cooking Panda + SportsGrid + Revry + Revry Her + Euronews + Euronews Español + Zoomer TV + MotorRacing + BarkTV + Times Now Navbharat + Powersports World + Garv Punjab Gurbani + Swar Shree + True History + ACL Cornhole TV + Hare Krsna + TV Punjab + Kaloopy + ABP News + ABP Asmita + ABP Majha + ABP Ananda + ABP Ganga + ABP Sanjha + Bless TV + Afriwood Blockbuster + Cinema Hausa + True African + NatureStream.tv + Africanews + Pitaara TV + FUEL TV + Gusto TV + 4K TRAVEL TV + ENCORE+ + KOZOOM TV + Balle Balle + TRACE Latina + TRACE Urban + IndieBox + TRACE Brazuca + Bleav Football + DeFiance Media + Sports Connect + CraftsyTV + 9XM + 9X Jalwa + BritAsiaTV + News9Live + TV9 Bangla + TV9 Bharatvarsh + TV9 Gujarati + TV9 Kannada + TV9 Marathi + TV9 Telugu + FloRacing 24/7 + crema.tv + Negocios TV + FEVA TV + FEVA MUSIC + Lakshya TV + Kartavya TV + Kalyan TV + Al Arabiya + PNC Drama + Rotana Aflam+ + M+ + Mediacorp Entertainment – English + Mediacorp Entertainment – Tamil + Shemaroo Bollywood + Shemaroo Filmigaane + Bollywood Masala + YRF Music + Saga Music + Toon Goggles en Español + DroneTV + PLL Network + TRACE UK + TidPix-Authentically African + Green Chillies TV- Zindagi ka Tadka! + Cowboy Channel + News Nation + Watch Wellness + Watch Wellness Telugu + Ghost Dimension + Tabbar Hits + Comercio TV + Cartoon Classics + Comedy Classics + SportsTVPlus + Old West TV + 4ACETV + 4ACETV CLASSIC HITS + The Holiday TV Channel + Haryana Beat + Nakshatra Digital Tv + Sudarshan News + Sundrani Tv + Colorized.TV + MomCave + HIP HOP TV + Fitness Rewind by Collage Video + AMusic Channel + Skull Bound TV + Viajar TV + Box Cinema + Box Gamers + HITS MEXICANOS + Rockola Television + Nigbati TV + Urban Action Channel + a-z Best Classic TV + a-z Classic Flix + a-z Western Grit + OurVinyl + Sports First TV + ACI On The Go + NOMADslow tv + Cigar TV + Aaj Ki Khabar + Atmadarshan Tv + Namma Bangalore + Tara Tv + The Unmute + Bhakthi Siri + Wild TV + Vande Bharat News + KTV Bangla + Ann Channel + Indian News + Mahua Play + Mahua Khabar + The Reuters 60 + In Touch+ + Anand Tv + Bharat 24 + Mahaa Max + Mahaa News + Munsif Tv + News India 24X7 + News Marathi 24X7 + Rongeen Tv + Rozana Spokesman + Prameya News7 + Amplified Voices TV + UnchainedTV + POWERtube TV + Mi Raza Canal + Mi Raza Canal Plus + Mi Miedo Canal + India Daily 24x7 + Elevation Church Network + News Tamil 24x7 + News Malayalam 24x7 + World Punjabi Tv + Top News Marathi + Pratham Khabar 24x7 + Novo Comedy + Crime & Evidence + Cinema Yoruba + Kolkata Tv + P18 News + Big Tv + ABN Andhra Jyothy + Outdoor Channel + WFN: World Fishing Network + Sana Tv + Janataa TV Kannada + DA News Plus + Sandesh News + Gujarat First + 35MM + Sakshi Tv + Unleashed by DOGTV + Prime Asia Tv + Daystar TV + Daystar Español + Bowling TV + CTVN AKD Plus + CN News + RVTV + Wine, Watches & Whiskey + ONTV4U + Amar Ujala + DJ Central TV + GTC Punjabi + Punjabi Shorts + Rock Solid Wrestling TV + CarbonTV + CG Central + spot on news + Golf Network + Foosball TV + Bharat Express + Argus News + \ No newline at end of file diff --git a/sites/distro.tv/distro.tv.config.js b/sites/distro.tv/distro.tv.config.js new file mode 100644 index 00000000..0d84df6f --- /dev/null +++ b/sites/distro.tv/distro.tv.config.js @@ -0,0 +1,81 @@ +const axios = require('axios') +const dayjs = require('dayjs') +const utc = require('dayjs/plugin/utc') +const customParseFormat = require('dayjs/plugin/customParseFormat') + +const HEADERS = { + 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36 Edg/144.0.0.0', + 'Referer': 'https://distro.tv/', + 'Origin': 'https://distro.tv' +} + +dayjs.extend(utc) +dayjs.extend(customParseFormat) + +module.exports = { + site: 'distro.tv', + days: 3, + request: { + headers: HEADERS, + timeout: 60000 + }, + url({ channel, date }) { + const diff = date.diff(dayjs.utc().startOf('d'), 'd') + let range + + if (diff <= 0) { + range = 'now,24h' + } else { + const start = diff * 24 + const end = (diff + 1) * 24 + range = `${start}h,${end}h` + } + + return `https://tv.jsrdn.com/epg/query.php?range=${range}&id=${channel.site_id},` + }, + parser({ content, channel }) { + if (!content || !channel) return [] + let programs = [] + try { + const data = JSON.parse(content) + if (!data.epg || !data.epg[channel.site_id] || !Array.isArray(data.epg[channel.site_id].slots)) { + return [] + } + programs = data.epg[channel.site_id].slots.map(program => ({ + title: program.title, + description: program.description || null, + icon: program.img_thumbh || null, + start: dayjs.utc(program.start, 'YYYY-MM-DD HH:mm:ss'), + stop: dayjs.utc(program.end, 'YYYY-MM-DD HH:mm:ss') + })) + } catch { + return [] + } + + return programs.filter(p => p.title && p.start.isValid() && p.stop.isValid()) + }, + async channels() { + const { data } = await axios.get('https://tv.jsrdn.com/tv_v5/getfeed.php?type=live', { + headers: HEADERS + }) + + const channels = [] + if (data && data.shows) { + Object.values(data.shows).forEach(show => { + const episode = show.seasons?.[0]?.episodes?.[0] + if (episode && episode.id) { + channels.push({ + lang: 'en', + // lang: show.language || 'en', + site_id: episode.id.toString(), + name: show.title, + // logo: show.img_logo, + // url: episode.content?.url || null + }) + } + }) + } + + return channels + } +} \ No newline at end of file diff --git a/sites/distro.tv/distro.tv.test.js b/sites/distro.tv/distro.tv.test.js new file mode 100644 index 00000000..45148b71 --- /dev/null +++ b/sites/distro.tv/distro.tv.test.js @@ -0,0 +1,70 @@ +const fs = require('fs') +const path = require('path') +const { parser, url, channels } = require('./distro.tv.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 axios = require('axios') +jest.mock('axios') + +const date = dayjs.utc().add(1, 'd').startOf('d') +const channel = { + site_id: '45143' +} + +it('can generate valid url', () => { + expect(url({ channel, date })).toBe( + 'https://tv.jsrdn.com/epg/query.php?range=24h,48h&id=45143,' + ) +}) + +it('can parse response', () => { + const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.json'), 'utf8') + const results = parser({ content, channel }) + + expect(results[0]).toMatchObject({ + title: 'News', + description: 'The leading news stories of the moment.', + start: dayjs.utc('2026-02-10 10:17:05'), + stop: dayjs.utc('2026-02-10 10:30:00') + }) + expect(results[1]).toMatchObject({ + title: 'Euronews Now', + description: 'Breaking News. In depth analysis on the biggest stories making headlines in Europe and across the world.', + start: dayjs.utc('2026-02-10 10:30:00'), + stop: dayjs.utc('2026-02-10 10:46:00') + }) +}) + +it('can handle empty guide', () => { + const results = parser({ + content: '{"epg":{"45143":{"title":"Euronews","slots":[]}}}', + channel + }) + expect(results).toMatchObject([]) +}) + +it('can fetch channels', async () => { + axios.get.mockResolvedValue({ + data: { + shows: { + 414: { + title: 'Titanic TV', + language: 'en', + img_logo: 'logo.png', + seasons: [{ episodes: [{ id: 10953 }] }] + } + } + } + }) + + const result = await channels() + expect(result[0]).toMatchObject({ + lang: 'en', + site_id: '10953', + name: 'Titanic TV' + }) +}) \ No newline at end of file diff --git a/sites/distro.tv/distro.tv_us.channels.xml b/sites/distro.tv/distro.tv_us.channels.xml new file mode 100644 index 00000000..d51b6c15 --- /dev/null +++ b/sites/distro.tv/distro.tv_us.channels.xml @@ -0,0 +1,110 @@ + + + FTF Sports + Dove + The First + Newsmax TV + Qello Concerts + Stingray Karaoke + Stingray Naturescape + Stingray Classica + Stingray DJAZZ + Stingray Hit List + Stingray Hot Country + Stingray Rock Alternative + Stingray Pop Adult + Stingray Classic Rock + Stingray Éxitos del Momento + Stingray Greatest Hits + Stingray HipHop and RnB + Stingray Flashback 70s + Stingray Remember the 80s + Law & Crime + 24 Hour Free Movies + Channel Fight + Business Rockstars + Cinepride + Dungeon TV + Frightflix + Galxy TV + Screendreams by Invincible + Slopes TV + Watchit Scream! + Bloomberg Television + CineLife + Bloomberg Originals + Wired2fish TV + XFC TV + NOST - The Nostalgia Network + ShopLC + Horror Machine + Journy + WION World is One News + Billiard TV + Mirror Now + ACE TV + Real America's Voice + SI TV + AfroLandTV + Swerve Combat + FITE 24/7 + TNA Wrestling Channel + Fight Network + AXS TV Now + beIN SPORTS Xtra + beIN SPORTS Xtra en Español + Watchit Kid! + FUEL TV + Nolly Africa HD + EstrellaTV + Estrella News + Estrella Games + Bollywood Classic + Bollywood HD + Motorvision TV + Motorvision TV Español + Western Bound + CCTV-4 + CGTN + CGTN Documentary + CGTN Español + MTRSPT1 + Jewish Life Television JLTV + Scream TV + TV9 Telugu USA + Court Sports Network + Romance Channel + NTD News + Mediacorp Entertainment – Chinese + Pitufo TV + Zee BollyWorld + Fork & Flight + Investigation + Global Punjab TV + PLL Network + Willow Sports + CNA Originals + CinePast + Cowboy Classics + Hollywood Classic Movies + Kung Fu Movies + The Family TV Channel + The Spanish Family Channel + ToonOvation + Digo TV + History Film Channel + hi Drama! + hi Life! + hi Vida! + My Money + Cirque du Soleil + Wild Nature + Chicas Guapas TV + Screams TV by Trinian + Gritos TV by Trinian + CGTN Global Biz + China Travel + Discovering China + Pickleball Now + PTC Punjabi Canada + \ No newline at end of file diff --git a/sites/distro.tv/readme.md b/sites/distro.tv/readme.md new file mode 100644 index 00000000..abca8329 --- /dev/null +++ b/sites/distro.tv/readme.md @@ -0,0 +1,21 @@ +# distro.tv + +https://distro.tv + +### Download the guide + +```sh +npm run grab --- --site=distro.tv +``` + +### Update channel list (varies based on region/IP) + +```sh +npm run channels:parse --- --config=./sites/distro.tv/distro.tv.config.js --output=./sites/distro.tv/distro.tv.channels.xml +``` + +### Test + +```sh +npm test --- distro.tv +``` \ No newline at end of file