mirror of
https://github.com/iptv-org/epg.git
synced 2025-05-10 00:50:09 -04:00
Merge branch 'master' into patch-2025.01.3
This commit is contained in:
commit
f7d038a5ba
11 changed files with 536 additions and 2 deletions
6
SITES.md
6
SITES.md
|
@ -36,7 +36,7 @@
|
||||||
<tr><td><a href="sites/cubmu.com">cubmu.com</a></td><td>🟢</td><td></td></tr>
|
<tr><td><a href="sites/cubmu.com">cubmu.com</a></td><td>🟢</td><td></td></tr>
|
||||||
<tr><td><a href="sites/cyta.com.cy">cyta.com.cy</a></td><td>🟢</td><td></td></tr>
|
<tr><td><a href="sites/cyta.com.cy">cyta.com.cy</a></td><td>🟢</td><td></td></tr>
|
||||||
<tr><td><a href="sites/dens.tv">dens.tv</a></td><td>🟢</td><td></td></tr>
|
<tr><td><a href="sites/dens.tv">dens.tv</a></td><td>🟢</td><td></td></tr>
|
||||||
<tr><td><a href="sites/digiturk.com.tr">digiturk.com.tr</a></td><td>🔴</td><td>https://github.com/iptv-org/epg/issues/2304, https://github.com/iptv-org/epg/issues/2547</td></tr>
|
<tr><td><a href="sites/digiturk.com.tr">digiturk.com.tr</a></td><td>🟢</td><td></td></tr>
|
||||||
<tr><td><a href="sites/directv.com">directv.com</a></td><td>🔴</td><td>https://github.com/iptv-org/epg/issues/2284</td></tr>
|
<tr><td><a href="sites/directv.com">directv.com</a></td><td>🔴</td><td>https://github.com/iptv-org/epg/issues/2284</td></tr>
|
||||||
<tr><td><a href="sites/directv.com.ar">directv.com.ar</a></td><td>🔴</td><td>https://github.com/iptv-org/epg/issues/2339</td></tr>
|
<tr><td><a href="sites/directv.com.ar">directv.com.ar</a></td><td>🔴</td><td>https://github.com/iptv-org/epg/issues/2339</td></tr>
|
||||||
<tr><td><a href="sites/directv.com.uy">directv.com.uy</a></td><td>🟢</td><td></td></tr>
|
<tr><td><a href="sites/directv.com.uy">directv.com.uy</a></td><td>🟢</td><td></td></tr>
|
||||||
|
@ -52,9 +52,11 @@
|
||||||
<tr><td><a href="sites/flixed.io">flixed.io</a></td><td>🟢</td><td></td></tr>
|
<tr><td><a href="sites/flixed.io">flixed.io</a></td><td>🟢</td><td></td></tr>
|
||||||
<tr><td><a href="sites/foxsports.com.au">foxsports.com.au</a></td><td>🟢</td><td></td></tr>
|
<tr><td><a href="sites/foxsports.com.au">foxsports.com.au</a></td><td>🟢</td><td></td></tr>
|
||||||
<tr><td><a href="sites/foxtel.com.au">foxtel.com.au</a></td><td>🟢</td><td></td></tr>
|
<tr><td><a href="sites/foxtel.com.au">foxtel.com.au</a></td><td>🟢</td><td></td></tr>
|
||||||
|
<tr><td><a href="sites/freeview.co.uk">freeview.co.uk</a></td><td>🟢</td><td></td></tr>
|
||||||
<tr><td><a href="sites/frikanalen.no">frikanalen.no</a></td><td>🟢</td><td></td></tr>
|
<tr><td><a href="sites/frikanalen.no">frikanalen.no</a></td><td>🟢</td><td></td></tr>
|
||||||
<tr><td><a href="sites/gatotv.com">gatotv.com</a></td><td>🟢</td><td></td></tr>
|
<tr><td><a href="sites/gatotv.com">gatotv.com</a></td><td>🟢</td><td></td></tr>
|
||||||
<tr><td><a href="sites/getafteritmedia.com">getafteritmedia.com</a></td><td>🟢</td><td></td></tr>
|
<tr><td><a href="sites/getafteritmedia.com">getafteritmedia.com</a></td><td>🟢</td><td></td></tr>
|
||||||
|
<tr><td><a href="sites/gigatv.3bbtv.co.th">gigatv.3bbtv.co.th</a></td><td>🟢</td><td></td></tr>
|
||||||
<tr><td><a href="sites/guida.tv">guida.tv</a></td><td>🟢</td><td></td></tr>
|
<tr><td><a href="sites/guida.tv">guida.tv</a></td><td>🟢</td><td></td></tr>
|
||||||
<tr><td><a href="sites/guidatv.sky.it">guidatv.sky.it</a></td><td>🟢</td><td></td></tr>
|
<tr><td><a href="sites/guidatv.sky.it">guidatv.sky.it</a></td><td>🟢</td><td></td></tr>
|
||||||
<tr><td><a href="sites/hd-plus.de">hd-plus.de</a></td><td>🔴</td><td>https://github.com/iptv-org/epg/issues/2173</td></tr>
|
<tr><td><a href="sites/hd-plus.de">hd-plus.de</a></td><td>🔴</td><td>https://github.com/iptv-org/epg/issues/2173</td></tr>
|
||||||
|
@ -105,7 +107,7 @@
|
||||||
<tr><td><a href="sites/nuevosiglo.com.uy">nuevosiglo.com.uy</a></td><td>🟢</td><td></td></tr>
|
<tr><td><a href="sites/nuevosiglo.com.uy">nuevosiglo.com.uy</a></td><td>🟢</td><td></td></tr>
|
||||||
<tr><td><a href="sites/nzxmltv.com">nzxmltv.com</a></td><td>🟢</td><td></td></tr>
|
<tr><td><a href="sites/nzxmltv.com">nzxmltv.com</a></td><td>🟢</td><td></td></tr>
|
||||||
<tr><td><a href="sites/ontvtonight.com">ontvtonight.com</a></td><td>🟢</td><td></td></tr>
|
<tr><td><a href="sites/ontvtonight.com">ontvtonight.com</a></td><td>🟢</td><td></td></tr>
|
||||||
<tr><td><a href="sites/orangetv.orange.es">orangetv.orange.es</a></td><td>🟡</td><td>https://github.com/iptv-org/epg/issues/2576</td></tr>
|
<tr><td><a href="sites/orangetv.orange.es">orangetv.orange.es</a></td><td>🟢</td><td></td></tr>
|
||||||
<tr><td><a href="sites/osn.com">osn.com</a></td><td>🟢</td><td></td></tr>
|
<tr><td><a href="sites/osn.com">osn.com</a></td><td>🟢</td><td></td></tr>
|
||||||
<tr><td><a href="sites/pbsguam.org">pbsguam.org</a></td><td>🟢</td><td></td></tr>
|
<tr><td><a href="sites/pbsguam.org">pbsguam.org</a></td><td>🟢</td><td></td></tr>
|
||||||
<tr><td><a href="sites/pickx.be">pickx.be</a></td><td>🟢</td><td></td></tr>
|
<tr><td><a href="sites/pickx.be">pickx.be</a></td><td>🟢</td><td></td></tr>
|
||||||
|
|
1
sites/freeview.co.uk/__data__/content.json
Normal file
1
sites/freeview.co.uk/__data__/content.json
Normal file
File diff suppressed because one or more lines are too long
168
sites/freeview.co.uk/freeview.co.uk.channels.xml
Normal file
168
sites/freeview.co.uk/freeview.co.uk.channels.xml
Normal file
|
@ -0,0 +1,168 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<channels>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#12952">YAAAS!</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#12960">Pop Player</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#13144">MBC</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#14448">TRUE CRIME</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#14456">TRUE CRIME XTRA</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#15016">Sonlife</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#15064">On Demand 365</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#15448">Channelbox</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#15480">UK RADIO PORTAL</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#15584">GREAT! mystery</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#16164">CNA</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#16170">GIGS</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#16176">EXTREME CHANNEL</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#16188">Trailblazer</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#16194">Odyssey TV</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#16200">Ketchup TV</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#16216">Ketchup Too</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#16224">Alaraby Network</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#16230">wedotv movies</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#16240">ROK</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#16264">3ABN</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#16284">Al Jazeera Arabic</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#16298">Real Crime</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#16310">Shots!</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#16322">NHK WORLD</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#16328">Newsmax</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#16346">Amazing Facts</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#16352">Moochi</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#16370">FRANCE 24</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#16376">Nosey</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#16394">Shop On TV</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#16400">Purpose Media</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#16406">Talk</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#22080">Sky News</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#22592">talkSPORT</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#22624">RNIB Connect</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#22656">Heart</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#22688">Capital</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#22848">Classic FM</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#22880">LBC</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#22912">Trans World Radio</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#23152">That's TV 2</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#23184">SonLife</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#23904">That's Dance</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#24448">Gems TV</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#26368">Smooth Radio</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#27424">POP UP</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#27744">Rewind TV</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#27808">Together TV IP</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#28032">That's Melody</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#28160">Premier Radio</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#28320">GREAT! movies extra</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#28352">GREAT! player</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#28384">GREAT! romance mix</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#33664">New Media TV</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#34048">Global Arabic +</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#34112">LEGEND XTRA</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#4416">BBC Red Button</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#5632">BBC R5L</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#5696">BBC 5SX</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#5760">BBC 6 Music</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#5824">BBC Radio 4 Ex</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#5888">BBC R1X</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#5952">BBC Asian Net.</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#6016">BBC World Sv.</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#6148">BBC Radio London</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#6157">BBC Three Counties</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#6275">BBC Berkshire</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#6279">BBC Essex</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#6284">BBC Surrey</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#6720">BBC Radio 1</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#6784">BBC Radio 2</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#6848">BBC Radio 3</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#6912">BBC Radio 4</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#7168">BBC RB 1</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="" site_id="64257#8700">That's TV 3</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="4seven.uk" site_id="64257#22528">4seven</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="5Action.uk" site_id="64257#16112">5ACTION</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="5SELECT.uk" site_id="64257#20256">5SELECT</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="5STAR.uk" site_id="64257#12928">5STAR</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="5USA.uk" site_id="64257#12992">5USA</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="Alarabiya.ae" site_id="64257#16304">AL ARABIYA</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="AlJazeeraEnglish.qa" site_id="64257#16278">Al Jazeera English</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="AsharqNews.sa" site_id="64257#16296">ASHARQ NEWS</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="BBCFour.uk" site_id="64257#4544">BBC FOUR</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="BBCFourHD.uk" site_id="64257#18048">BBC FOUR HD</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="BBCNews.uk" site_id="64257#4352">BBC NEWS</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="BBCOneLondon.uk" site_id="64257#4164">BBC ONE Lon</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="BBCOneLondonHD.uk" site_id="64257#17536">BBC ONE Lon HD</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="BBCParliament.uk" site_id="64257#4736">BBC Parliament</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="BBCThree.uk" site_id="64257#4288">BBC THREE</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="BBCThreeHD.uk" site_id="64257#17920">BBC THREE HD</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="BBCTwo.uk" site_id="64257#4287">BBC TWO</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="BBCTwoHD.uk" site_id="64257#17472">BBC TWO HD</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="Blaze.uk" site_id="64257#14384">Blaze</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="BlazePlus1.uk" site_id="64257#14388">Blaze+1</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="CBBC.uk" site_id="64257#4608">CBBC</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="CBBCHD.uk" site_id="64257#18112">CBBC HD</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="CBeebies.uk" site_id="64257#4672">CBeebies</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="CBeebiesHD.uk" site_id="64257#18176">CBeebies HD</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="Challenge.uk" site_id="64257#22226">Challenge</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="Channel4.uk" site_id="64257#8384">Channel 4</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="Channel4HD.uk" site_id="64257#17664">Channel 4 HD</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="Channel4Plus1.uk" site_id="64257#8452">Channel 4+1</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="Channel5.uk" site_id="64257#8500">Channel 5</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="Channel5HD.uk" site_id="64257#17728">Channel 5 HD</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="Channel5Plus1.uk" site_id="64257#13024">Channel 5+1</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="DMAX.uk" site_id="64257#27680">DMAX</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="E4.uk" site_id="64257#8448">E4</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="E4Extra.uk" site_id="64257#22368">E4 Extra</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="E4Plus1.uk" site_id="64257#8458">E4+1</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="Film4.uk" site_id="64257#8385">Film4</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="Film4Plus1.uk" site_id="64257#22464">Film4+1</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="FoodNetwork.uk" site_id="64257#23040">Food Network</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="GBNews.uk" site_id="64257#27360">GB News</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="GINXEsportsTV.uk" site_id="64257#16182">GINX TV</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="GODTV.uk" site_id="64257#16256">God TV</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="GREATaction.uk" site_id="64257#15576">GREAT! action</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="GREATmovies.uk" site_id="64257#27872">GREAT! movies</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="GREATromance.uk" site_id="64257#27296">GREAT! romance</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="GREATtv.uk" site_id="64257#27168">GREAT! tv</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="HGTV.uk" site_id="64257#28000">HGTV</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="HobbyMaker.uk" site_id="64257#27840">HobbyMaker</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="IdealWorldTV.uk" site_id="64257#25920">Ideal World</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="ITV1.uk" site_id="64257#8261">ITV1</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="ITV1HD.uk" site_id="64257#17604">ITV1 HD</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="ITV1Plus1.uk" site_id="64257#8361">ITV1+1</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="ITV2.uk" site_id="64257#8325">ITV2</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="ITV2Plus1.uk" site_id="64257#15952">ITV2+1</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="ITV3.uk" site_id="64257#8294">ITV3</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="ITV3Plus1.uk" site_id="64257#16016">ITV3+1</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="ITV4.uk" site_id="64257#8330">ITV4</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="ITV4Plus1.uk" site_id="64257#15920">ITV4+1</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="ITVBe.uk" site_id="64257#8340">ITVBe</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="ITVBePlus1.uk" site_id="64257#15864">ITVBe+1</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="JewelleryMaker.uk" site_id="64257#27200">Jewellery Maker</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="Legend.uk" site_id="64257#14480">LEGEND</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="LondonLive.uk" site_id="64257#32842">London Live</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="More4.uk" site_id="64257#8442">More 4</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="PBSAmerica.uk" site_id="64257#27968">PBS America</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="Pop.uk" site_id="64257#33280">POP</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="Quest.uk" site_id="64257#27328">QUEST</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="QuestPlus1.uk" site_id="64257#23808">QUEST+1</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="QuestRed.uk" site_id="64257#23744">Quest Red</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="QVC.uk" site_id="64257#13120">QVC</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="QVC2.uk" site_id="64257#14416">QVC2</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="Really.uk" site_id="64257#23712">Really</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="RevelationTV.uk" site_id="64257#16248">Revelation TV</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="SkyArts.uk" site_id="64257#22144">Sky Arts</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="SkyMix.uk" site_id="64257#22208">Sky Mix</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="TalkingPicturesTV.uk" site_id="64257#28224">TalkingPictures TV</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="TBNUK.uk" site_id="64257#20160">TBN UK</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="ThatsTV.uk" site_id="64257#27936">That's TV (UK)</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="TinyPop.uk" site_id="64257#33472">Tiny Pop</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="TJC.uk" site_id="64257#15592">TJC</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="TogetherTV.uk" site_id="64257#16364">Together TV</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="TogetherTVPlus1.uk" site_id="64257#27392">Together TV+1</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="UDave.uk" site_id="64257#22272">U&Dave</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="UDaveJaVu.uk" site_id="64257#13008">U&DaveJaVu</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="UDrama.uk" site_id="64257#16208">U&Drama</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="UDramaPlus1.us" site_id="64257#22336">U&Drama+1</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="UEden.uk" site_id="64257#19968">U&Eden</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="UW.uk" site_id="64257#28096">U&W</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="UYesterday.uk" site_id="64257#25792">U&Yesterday</channel>
|
||||||
|
<channel site="freeview.co.uk" lang="en" xmltv_id="WildEarth.uk" site_id="64257#14464">WildEarth</channel>
|
||||||
|
</channels>
|
73
sites/freeview.co.uk/freeview.co.uk.config.js
Normal file
73
sites/freeview.co.uk/freeview.co.uk.config.js
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
const axios = require('axios')
|
||||||
|
const dayjs = require('dayjs')
|
||||||
|
const utc = require('dayjs/plugin/utc')
|
||||||
|
const parseDuration = require('parse-duration')
|
||||||
|
|
||||||
|
dayjs.extend(utc)
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
site: 'freeview.co.uk',
|
||||||
|
days: 2,
|
||||||
|
url({ date, channel }) {
|
||||||
|
const [networkId] = channel.site_id.split('#')
|
||||||
|
const startTimestamp = date.startOf('d').unix()
|
||||||
|
|
||||||
|
return `https://www.freeview.co.uk/api/tv-guide?nid=${networkId}&start=${startTimestamp}`
|
||||||
|
},
|
||||||
|
parser({ content, channel }) {
|
||||||
|
let programs = []
|
||||||
|
let items = parseItems(content, channel)
|
||||||
|
items.forEach(item => {
|
||||||
|
const start = parseStart(item)
|
||||||
|
const duration = parseDuration(item.duration)
|
||||||
|
const stop = start.add(duration, 'ms')
|
||||||
|
programs.push({
|
||||||
|
title: item.main_title,
|
||||||
|
subtitle: item.secondary_title,
|
||||||
|
image: parseImage(item),
|
||||||
|
start,
|
||||||
|
stop
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
return programs
|
||||||
|
},
|
||||||
|
async channels() {
|
||||||
|
const networkId = '64257' // Great London
|
||||||
|
const startTimestamp = dayjs.utc().startOf('d').unix()
|
||||||
|
const data = await axios
|
||||||
|
.get(`https://www.freeview.co.uk/api/tv-guide?nid=${networkId}&start=${startTimestamp}`)
|
||||||
|
.then(r => r.data)
|
||||||
|
.catch(console.log)
|
||||||
|
|
||||||
|
return data.data.programs.map(item => ({
|
||||||
|
lang: 'en',
|
||||||
|
site_id: `${networkId}#${item.service_id}`,
|
||||||
|
name: item.title
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function parseImage(item) {
|
||||||
|
return item.image_url ? `${item.image_url}?w=800` : null
|
||||||
|
}
|
||||||
|
|
||||||
|
function parseStart(item) {
|
||||||
|
return dayjs(item.start_time)
|
||||||
|
}
|
||||||
|
|
||||||
|
function parseItems(content, channel) {
|
||||||
|
try {
|
||||||
|
const data = JSON.parse(content)
|
||||||
|
const programs = data?.data?.programs
|
||||||
|
if (!Array.isArray(programs)) return []
|
||||||
|
const [, channelId] = channel.site_id.split('#')
|
||||||
|
const channelData = programs.find(p => p.service_id === channelId)
|
||||||
|
const channelPrograms = channelData?.events
|
||||||
|
if (!Array.isArray(channelPrograms)) return []
|
||||||
|
|
||||||
|
return channelPrograms
|
||||||
|
} catch {
|
||||||
|
return []
|
||||||
|
}
|
||||||
|
}
|
55
sites/freeview.co.uk/freeview.co.uk.test.js
Normal file
55
sites/freeview.co.uk/freeview.co.uk.test.js
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
const { parser, url } = require('./freeview.co.uk.config.js')
|
||||||
|
const fs = require('fs')
|
||||||
|
const path = require('path')
|
||||||
|
const dayjs = require('dayjs')
|
||||||
|
const utc = require('dayjs/plugin/utc')
|
||||||
|
const customParseFormat = require('dayjs/plugin/customParseFormat')
|
||||||
|
dayjs.extend(customParseFormat)
|
||||||
|
dayjs.extend(utc)
|
||||||
|
|
||||||
|
const date = dayjs.utc('2025-01-16', 'YYYY-MM-DD').startOf('d')
|
||||||
|
const channel = {
|
||||||
|
site_id: '64257#4164',
|
||||||
|
xmltv_id: 'BBCOneLondon.uk'
|
||||||
|
}
|
||||||
|
|
||||||
|
it('can generate valid url', () => {
|
||||||
|
expect(url({ date, channel })).toBe(
|
||||||
|
'https://www.freeview.co.uk/api/tv-guide?nid=64257&start=1736985600'
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('can parse response', () => {
|
||||||
|
const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.json'))
|
||||||
|
let results = parser({ content, channel })
|
||||||
|
results = results.map(p => {
|
||||||
|
p.start = p.start.toJSON()
|
||||||
|
p.stop = p.stop.toJSON()
|
||||||
|
return p
|
||||||
|
})
|
||||||
|
|
||||||
|
expect(results.length).toBe(25)
|
||||||
|
expect(results[0]).toMatchObject({
|
||||||
|
start: '2025-01-16T00:00:00.000Z',
|
||||||
|
stop: '2025-01-16T00:45:00.000Z',
|
||||||
|
title: 'The Weakest Link',
|
||||||
|
subtitle: 'Series 4: Episode 7',
|
||||||
|
image: 'https://img.freeviewplay.tv/p0b041486e4378cbf074511098f74e78f?w=800'
|
||||||
|
})
|
||||||
|
expect(results[24]).toMatchObject({
|
||||||
|
start: '2025-01-16T23:40:00.000Z',
|
||||||
|
stop: '2025-01-17T00:10:00.000Z',
|
||||||
|
title: 'Newscast',
|
||||||
|
subtitle: 'Series 5: 16/01/2025',
|
||||||
|
image: 'https://img.freeviewplay.tv/pb43e790fe10fe5ba668caf22224bc312?w=800'
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
it('can handle empty guide', () => {
|
||||||
|
const results = parser({
|
||||||
|
content: '[]',
|
||||||
|
channel
|
||||||
|
})
|
||||||
|
|
||||||
|
expect(results).toMatchObject([])
|
||||||
|
})
|
21
sites/freeview.co.uk/readme.md
Normal file
21
sites/freeview.co.uk/readme.md
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
# freeview.co.uk
|
||||||
|
|
||||||
|
https://www.freeview.co.uk/tv-guide
|
||||||
|
|
||||||
|
### Download the guide
|
||||||
|
|
||||||
|
```sh
|
||||||
|
npm run grab --- --site=freeview.co.uk
|
||||||
|
```
|
||||||
|
|
||||||
|
### Update channel list
|
||||||
|
|
||||||
|
```sh
|
||||||
|
npm run channels:parse --- --config=./sites/freeview.co.uk/freeview.co.uk.config.js --output=./sites/freeview.co.uk/freeview.co.uk.channels.xml
|
||||||
|
```
|
||||||
|
|
||||||
|
### Test
|
||||||
|
|
||||||
|
```sh
|
||||||
|
npm test --- freeview.co.uk
|
||||||
|
```
|
1
sites/gigatv.3bbtv.co.th/__data__/content.json
Normal file
1
sites/gigatv.3bbtv.co.th/__data__/content.json
Normal file
File diff suppressed because one or more lines are too long
82
sites/gigatv.3bbtv.co.th/gigatv.3bbtv.co.th.channels.xml
Normal file
82
sites/gigatv.3bbtv.co.th/gigatv.3bbtv.co.th.channels.xml
Normal file
|
@ -0,0 +1,82 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<channels>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="" site_id="2">NBT</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="ThaiPBS.th" site_id="3">ThaiPBS</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="ALTV.th" site_id="4">ALTV</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="TV5HD.th" site_id="5">TV5 HD</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="TSports7.th" site_id="7">T Sports 7</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="ThaiParliamentTelevision.th" site_id="10">TPTV</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="TNN16.th" site_id="16">TNN16</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="JKN18.th" site_id="18">JKN 18</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="NationTV.th" site_id="22">Nation TV</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="WorkpointTV.th" site_id="23">Workpoint</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="True4U.th" site_id="24">True4U</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="GMM25.th" site_id="25">GMM 25</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="" site_id="27">CH8</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="MONO29.th" site_id="29">Mono 29</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="MCOTHD.th" site_id="30">MCOT HD</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="" site_id="31">ONE31 HD</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="ThairathTV.th" site_id="32">Thairath TV</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="" site_id="33">3HD</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="AmarinTV.th" site_id="34">AmarinTV HD</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="" site_id="35">CH7 HD</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="PPTV.th" site_id="36">PPTV HD</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="" site_id="101">3BB Asian</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="" site_id="103">HBO</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="" site_id="104">HBO Signature</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="" site_id="105">HBO Hits</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="" site_id="106">HBO Family</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="" site_id="107">Cinemax</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="" site_id="109">Mono29 Plus</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="" site_id="110">Warner TV</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="" site_id="111">Rock Action</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="" site_id="112">Rock Entertainment</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="Mangorn.th" site_id="121">Mangorn</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="" site_id="202">MONO 29 Music Station</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="" site_id="203">RUSH Stories</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="AlureChannel.th" site_id="204">A'lure Channel</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="" site_id="205">Food Network</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="" site_id="206">Asian Food Network</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="" site_id="207">Hunan TV HD</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="" site_id="208">Yunnan International</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="" site_id="210">TLC</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="Khongdee.th" site_id="221">Khongdee</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="ThainessTV.th" site_id="222">Thainess</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="" site_id="301">Cartoon Network</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="" site_id="302">Cartoonito</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="" site_id="303">Nickelodeon</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="" site_id="304">Nick Jr.</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="" site_id="306">Boomerang (Thai)</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="" site_id="401">3BB Sports One</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="" site_id="411">Golf Channel Thailand HD Plus</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="" site_id="503">Discovery Channel</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="" site_id="504">Animal Planet</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="" site_id="505">Discovery Asia</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="Samrujlok.th" site_id="521">Samrujlok</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="MySci.th" site_id="522">MySci</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="" site_id="523">Animal Show</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="" site_id="601">BBC News</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="" site_id="602">CNN INTERNATIONNAL</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="" site_id="603">Bloomberg</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="" site_id="604">CGTN</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="" site_id="605">CCTV 4</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="" site_id="606">Al Jazeera English HD</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="" site_id="607">CNA</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="" site_id="608">NHK WORLD-JAPAN</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="DLTV1.th" site_id="701">DLTV 1</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="DLTV2.th" site_id="702">DLTV 2</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="DLTV3.th" site_id="703">DLTV 3</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="DLTV4.th" site_id="704">DLTV 4</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="DLTV5.th" site_id="705">DLTV 5</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="DLTV6.th" site_id="706">DLTV 6</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="DLTV7.th" site_id="707">DLTV 7</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="DLTV8.th" site_id="708">DLTV 8</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="DLTV9.th" site_id="709">DLTV 9</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="DLTV10.th" site_id="710">DLTV 10</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="DLTV11.th" site_id="711">DLTV 11</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="DLTV12.th" site_id="712">DLTV 12</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="DLTV13.th" site_id="713">DLTV 13</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="DLTV14.th" site_id="714">DLTV 14</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="DLTV15.th" site_id="715">DLTV 15</channel>
|
||||||
|
<channel site="gigatv.3bbtv.co.th" lang="th" xmltv_id="ETV.th" site_id="716">ETV</channel>
|
||||||
|
</channels>
|
65
sites/gigatv.3bbtv.co.th/gigatv.3bbtv.co.th.config.js
Normal file
65
sites/gigatv.3bbtv.co.th/gigatv.3bbtv.co.th.config.js
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
const axios = require('axios')
|
||||||
|
const dayjs = require('dayjs')
|
||||||
|
const utc = require('dayjs/plugin/utc')
|
||||||
|
const timezone = require('dayjs/plugin/timezone')
|
||||||
|
const customParseFormat = require('dayjs/plugin/customParseFormat')
|
||||||
|
|
||||||
|
dayjs.extend(utc)
|
||||||
|
dayjs.extend(timezone)
|
||||||
|
dayjs.extend(customParseFormat)
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
site: 'gigatv.3bbtv.co.th',
|
||||||
|
days: 1,
|
||||||
|
url({ channel }) {
|
||||||
|
return `https://gigatv.3bbtv.co.th/wp-content/themes/changwattana/epg/${channel.site_id}.json`
|
||||||
|
},
|
||||||
|
parser: function ({ content, date }) {
|
||||||
|
let programs = []
|
||||||
|
const items = parseItems(content, date)
|
||||||
|
items.forEach(item => {
|
||||||
|
programs.push({
|
||||||
|
title: item.programName,
|
||||||
|
start: parseTime(item.startTime),
|
||||||
|
stop: parseTime(item.endTime)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
return programs
|
||||||
|
},
|
||||||
|
async channels() {
|
||||||
|
const data = await axios
|
||||||
|
.get('https://gigatv.3bbtv.co.th/wp-content/themes/changwattana/epg/channel.json')
|
||||||
|
.then(r => r.data)
|
||||||
|
.catch(console.log)
|
||||||
|
|
||||||
|
const channels = []
|
||||||
|
data.forEach(group => {
|
||||||
|
group.channel_list.forEach(channel => {
|
||||||
|
channels.push({
|
||||||
|
lang: 'th',
|
||||||
|
site_id: channel.channel_id,
|
||||||
|
name: channel.channel_name
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
return channels
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function parseTime(string) {
|
||||||
|
return dayjs.tz(string, 'YYYY-MM-DD HH:mm:ss', 'Asia/Bangkok')
|
||||||
|
}
|
||||||
|
|
||||||
|
function parseItems(content, date) {
|
||||||
|
try {
|
||||||
|
let data = JSON.parse(content)
|
||||||
|
if (!Array.isArray(data)) return []
|
||||||
|
data = data.filter(p => date.isSame(parseTime(p.startTime), 'day'))
|
||||||
|
|
||||||
|
return data
|
||||||
|
} catch {
|
||||||
|
return []
|
||||||
|
}
|
||||||
|
}
|
45
sites/gigatv.3bbtv.co.th/gigatv.3bbtv.co.th.test.js
Normal file
45
sites/gigatv.3bbtv.co.th/gigatv.3bbtv.co.th.test.js
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
const { parser, url } = require('./gigatv.3bbtv.co.th.config.js')
|
||||||
|
const fs = require('fs')
|
||||||
|
const path = require('path')
|
||||||
|
const dayjs = require('dayjs')
|
||||||
|
const utc = require('dayjs/plugin/utc')
|
||||||
|
const customParseFormat = require('dayjs/plugin/customParseFormat')
|
||||||
|
dayjs.extend(customParseFormat)
|
||||||
|
dayjs.extend(utc)
|
||||||
|
|
||||||
|
const date = dayjs.utc('2025-01-12', 'YYYY-MM-DD').startOf('d')
|
||||||
|
const channel = {
|
||||||
|
site_id: '222',
|
||||||
|
xmltv_id: 'ThainessTV.th'
|
||||||
|
}
|
||||||
|
|
||||||
|
it('can generate valid url', () => {
|
||||||
|
expect(url({ channel })).toBe(
|
||||||
|
'https://gigatv.3bbtv.co.th/wp-content/themes/changwattana/epg/222.json'
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('can parse response', () => {
|
||||||
|
const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.json'))
|
||||||
|
let results = parser({ content, date }).map(p => {
|
||||||
|
p.start = p.start.toJSON()
|
||||||
|
p.stop = p.stop.toJSON()
|
||||||
|
return p
|
||||||
|
})
|
||||||
|
|
||||||
|
expect(results.length).toBe(32)
|
||||||
|
expect(results[0]).toMatchObject({
|
||||||
|
start: '2025-01-12T00:00:00.000Z',
|
||||||
|
stop: '2025-01-12T00:30:00.000Z',
|
||||||
|
title: 'THAILAND FORM ABOVE : TAK'
|
||||||
|
})
|
||||||
|
expect(results[31]).toMatchObject({
|
||||||
|
start: '2025-01-12T23:30:00.000Z',
|
||||||
|
stop: '2025-01-13T00:00:00.000Z',
|
||||||
|
title: 'MAESA ELEPHANT CAMP'
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
it('can handle empty guide', () => {
|
||||||
|
expect(parser({ content: '', date })).toMatchObject([])
|
||||||
|
})
|
21
sites/gigatv.3bbtv.co.th/readme.md
Normal file
21
sites/gigatv.3bbtv.co.th/readme.md
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
# gigatv.3bbtv.co.th
|
||||||
|
|
||||||
|
https://gigatv.3bbtv.co.th/epg
|
||||||
|
|
||||||
|
### Download the guide
|
||||||
|
|
||||||
|
```sh
|
||||||
|
npm run grab --- --site=gigatv.3bbtv.co.th
|
||||||
|
```
|
||||||
|
|
||||||
|
### Update channel list
|
||||||
|
|
||||||
|
```sh
|
||||||
|
npm run channels:parse --- --config=./sites/gigatv.3bbtv.co.th/gigatv.3bbtv.co.th.config.js --output=./sites/gigatv.3bbtv.co.th/gigatv.3bbtv.co.th.channels.xml
|
||||||
|
```
|
||||||
|
|
||||||
|
### Test
|
||||||
|
|
||||||
|
```sh
|
||||||
|
npm test --- gigatv.3bbtv.co.th
|
||||||
|
```
|
Loading…
Add table
Add a link
Reference in a new issue