From 09dfd6493f08c8ae8b9f5cd12f973f0391eabf16 Mon Sep 17 00:00:00 2001 From: ksl1989 <40713728+ksl1989@users.noreply.github.com> Date: Sat, 28 Mar 2020 00:33:57 +0800 Subject: [PATCH 1/5] Added several Portuguese channels MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Added the following Portuguese channels: * RTP2 * RTP3 * RTP Internacional * RTP Memória * RTP Madeira * RTP Açores * RTP África (Public broadcasting station channels in the qualities available at the official site) * ARTV (parliament channel) * Porto Canal (private channel owned by FC Porto football club) * Removed the link for RTP1 and added the one from the official page. A couple notes about the RTP streams: * These are the streams used in the official page (https://www.rtp.pt/play/), they're fast, have good image quality and are stable but there are two issues: * When any of these channels is broadcasting a programme it doesn't have the rights to broadcast online (usually that's imported programmes) the m3u file will be empty, it may seem the stream is broken but it'll continue streaming as soon as this programme ends. * It doesn't work with Kodi's user-agent (and probably most IPTV apps' user-agents), but all streams are available just using "Mozilla" as a user-agent. I tried all links on Kodi for a couple days and they're all working. Maybe it should be noted on the README file that some streams may not work with the default user-agent. * The RTP1 stream that was on the list was working but I think it's better to have the official good quality stream rather than this low quality stream of an unknown source. * I used the `tvg-id` and `tvg-name` from https://siptv.eu/codes/ and https://www.iptv-epg.com/available-channels as these seem the most standard, this way it's more likely to work with most EPG sources. --- channels/pt.m3u | 39 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/channels/pt.m3u b/channels/pt.m3u index a2fe15c99..09dc998d8 100644 --- a/channels/pt.m3u +++ b/channels/pt.m3u @@ -17,8 +17,6 @@ http://c2.manasat.com:1935/kmusic/kmusic3/FluxusTV.m3u8?fluxustv.m3u8 http://195.22.11.11:1935/ktv/ktv1/FluxusTV.m3u8?fluxustv.m3u8 #EXTINF:-1 tvg-id="" tvg-name="" tvg-language="Portuguese" tvg-logo="https://i.imgur.com/M5i4hfh.png" group-title="",Kuriakos TV http://195.22.11.11:1935/ktv/ktv1/TeamBlue.m3u8 -#EXTINF:-1 tvg-id="RTP 1 PT" tvg-name="RTP 1 PT" tvg-language="Portuguese" tvg-logo="https://i.imgur.com/Rdt24TC.png" group-title="",RTP 1 -http://210.210.155.35/qwr9ew/s/s38/index.m3u8 #EXTINF:-1 tvg-id="" tvg-name="" tvg-language="Portuguese" tvg-logo="https://i.imgur.com/jYIf7Mz.png" group-title="",Sobrenatural TV http://213.13.26.11:1935/live/sobrenaturaltv/livestream.m3u8 #EXTINF:-1 tvg-id="" tvg-name="" tvg-language="Portuguese" tvg-logo="https://i.imgur.com/VgzVZto.png" group-title="",Sobrenatural TV @@ -31,3 +29,40 @@ https://streamer-b02.videos.sapo.pt/live/santuario.stream/chunklist.m3u8 http://streamspub.manasat.com:1935/tvar/tvmanaar2/playlist.m3u8 #EXTINF:-1 tvg-id="TVI Reality PT" tvg-name="TVI Reality PT" tvg-language="Portuguese" tvg-logo="https://i.imgur.com/yM3G8nv.jpg" group-title="",TVI Reality http://video-auth8.iol.pt:80/live_tvi_direct/live_tvi_direct-3/playlist.m3u8 + +#EXTINF:-1 tvg-id="ARTV.pt" tvg-name="ARTV" tvg-language="Portuguese" tvg-logo="http://www.canal.parlamento.pt/images/ARTV_Logo.png" tvg-country="PT" group-title="Legislative",ARTV | Canal Parlamento +https://5e4fc274d9d46.streamlock.net/livenlin4/2liveartvpub/playlist.m3u8 +#EXTINF:-1 tvg-id="rtp1.pt" tvg-name="RTP1" tvg-language="Portuguese" tvg-logo="https://cdn-images.rtp.pt/common/img/channels/logos/color/horizontal/5-563718101410.png" tvg-country="PT" group-title="",RTP1 (1290 kbps) +https://streaming-live.rtp.pt/liverepeater/smil:rtp1.smil/chunklist_b1290000_slpor.m3u8 +#EXTINF:-1 tvg-id="rtp1.pt" tvg-name="RTP1" tvg-language="Portuguese" tvg-logo="https://cdn-images.rtp.pt/common/img/channels/logos/color/horizontal/5-563718101410.png" tvg-country="PT" group-title="",RTP1 (640 kbps) +https://streaming-live.rtp.pt/liverepeater/smil:rtp1.smil/chunklist_b640000_slpor.m3u8 +#EXTINF:-1 tvg-id="rtp2.pt" tvg-name="RTP2" tvg-language="Portuguese" tvg-logo="https://cdn-images.rtp.pt/common/img/channels/logos/color/horizontal/3-363718101410.png" tvg-country="PT" group-title="",RTP2 (1290 kbps) +https://streaming-live.rtp.pt/liverepeater/smil:rtp2.smil/chunklist_b1290000_slpt.m3u8 +#EXTINF:-1 tvg-id="rtp2.pt" tvg-name="RTP2" tvg-language="Portuguese" tvg-logo="https://cdn-images.rtp.pt/common/img/channels/logos/color/horizontal/3-363718101410.png" tvg-country="PT" group-title="",RTP2 (640 kbps) +https://streaming-live.rtp.pt/liverepeater/smil:rtp2.smil/chunklist_b640000_slpt.m3u8 +#EXTINF:-1 tvg-id="RTP3.pt" tvg-name="RTP 3" tvg-language="Portuguese" tvg-logo="https://cdn-images.rtp.pt/common/img/channels/logos/color/horizontal/64-393818101410.png" tvg-country="PT" group-title="News",RTP3 (1290 kbps) +https://streaming-live.rtp.pt/livetvhlsDVR/rtpndvr.smil/chunklist_b1290000_DVR_slpt.m3u8 +#EXTINF:-1 tvg-id="RTP3.pt" tvg-name="RTP 3" tvg-language="Portuguese" tvg-logo="https://cdn-images.rtp.pt/common/img/channels/logos/color/horizontal/64-393818101410.png" tvg-country="PT" group-title="News",RTP3 (640 kbps) +https://streaming-live.rtp.pt/livetvhlsDVR/rtpndvr.smil/chunklist_b640000_DVR_slpt.m3u8 +#EXTINF:-1 tvg-id="RTPInternacional.pt" tvg-name="RTP Internacional" tvg-language="Portuguese" tvg-logo="https://cdn-images.rtp.pt/common/img/channels/logos/color/horizontal/120-344318101410.png" tvg-country="PT" group-title="",RTP Internacional (1290 kbps) +https://streaming-live.rtp.pt/liverepeater/smil:rtpi.smil/chunklist_b1290000_slpt.m3u8 +#EXTINF:-1 tvg-id="RTPInternacional.pt" tvg-name="RTP Internacional" tvg-language="Portuguese" tvg-logo="https://cdn-images.rtp.pt/common/img/channels/logos/color/horizontal/120-344318101410.png" tvg-country="PT" group-title="",RTP Internacional (640 kbps) +https://streaming-live.rtp.pt/liverepeater/smil:rtpi.smil/chunklist_b640000_slpt.m3u8 +#EXTINF:-1 tvg-id="rtpmemoria.pt" tvg-name="RTP Memoria" tvg-language="Portuguese" tvg-logo="https://cdn-images.rtp.pt/common/img/channels/logos/color/horizontal/80-584819141705.png" tvg-country="PT" group-title="",RTP Memória (640 kbps) +https://streaming-live.rtp.pt/liverepeater/smil:rtpmem.smil/chunklist_b640000_slpt.m3u8 +#EXTINF:-1 tvg-id="rtpmemoria.pt" tvg-name="RTP Memoria" tvg-language="Portuguese" tvg-logo="https://cdn-images.rtp.pt/common/img/channels/logos/color/horizontal/80-584819141705.png" tvg-country="PT" group-title="",RTP Memória (340 kbps) +https://streaming-live.rtp.pt/liverepeater/smil:rtpmem.smil/chunklist_b340000_slpt.m3u8 +#EXTINF:-1 tvg-id="RTPMadeira.pt" tvg-name="RTP Madeira" tvg-language="Portuguese" tvg-logo="https://cdn-images.rtp.pt/common/img/channels/logos/color/horizontal/107-443519141305.png" tvg-country="PT" group-title="",RTP Madeira (640 kbps) +https://streaming-live.rtp.pt/liverepeater/smil:rtpmadeira.smil/chunklist_b640000_slpt.m3u8 +#EXTINF:-1 tvg-id="RTPMadeira.pt" tvg-name="RTP Madeira" tvg-language="Portuguese" tvg-logo="https://cdn-images.rtp.pt/common/img/channels/logos/color/horizontal/107-443519141305.png" tvg-country="PT" group-title="",RTP Madeira (340 kbps) +https://streaming-live.rtp.pt/liverepeater/smil:rtpmadeira.smil/chunklist_b340000_slpt.m3u8 +#EXTINF:-1 tvg-id="RTPAcores.pt" tvg-name="RTP Acores" tvg-language="Portuguese" tvg-logo="https://cdn-images.rtp.pt/common/img/channels/logos/color/horizontal/106-563419141305.png" tvg-country="PT" group-title="",RTP Açores (640 kbps) +https://streaming-live.rtp.pt/liverepeater/smil:rtpacores.smil/chunklist_b640000_slpt.m3u8 +#EXTINF:-1 tvg-id="RTPAcores.pt" tvg-name="RTP Acores" tvg-language="Portuguese" tvg-logo="https://cdn-images.rtp.pt/common/img/channels/logos/color/horizontal/106-563419141305.png" tvg-country="PT" group-title="",RTP Açores (340 kbps) +https://streaming-live.rtp.pt/liverepeater/smil:rtpacores.smil/chunklist_b340000_slpt.m3u8 +#EXTINF:-1 tvg-id="RTPAfrica.pt" tvg-name="RTP Africa" tvg-language="Portuguese" tvg-logo="https://cdn-images.rtp.pt/common/img/channels/logos/color/horizontal/27-363219141305.png" tvg-country="PT" group-title="",RTP África (640 kbps) +https://streaming-live.rtp.pt/liverepeater/smil:rtpafrica.smil/chunklist_b640000_slpt.m3u8 +#EXTINF:-1 tvg-id="RTPAfrica.pt" tvg-name="RTP Africa" tvg-language="Portuguese" tvg-logo="https://cdn-images.rtp.pt/common/img/channels/logos/color/horizontal/27-363219141305.png" tvg-country="PT" group-title="",RTP África (340 kbps) +https://streaming-live.rtp.pt/liverepeater/smil:rtpafrica.smil/chunklist_b340000_slpt.m3u8 +#EXTINF:-1 tvg-id="PortoCanal.pt" tvg-name="Porto Canal" tvg-language="Portuguese" tvg-logo="https://upload.wikimedia.org/wikipedia/commons/b/ba/Logo_Porto_Canal.jpg" tvg-country="PT" group-title="",Porto Canal +https://streamer-b02.videos.sapo.pt/live/portocanal/playlist.m3u8 From cca540562d24a1e9076a63b3fa4153decbc2f03f Mon Sep 17 00:00:00 2001 From: ksl1989 <40713728+ksl1989@users.noreply.github.com> Date: Sat, 28 Mar 2020 00:38:36 +0800 Subject: [PATCH 2/5] Removed empty line. --- channels/pt.m3u | 1 - 1 file changed, 1 deletion(-) diff --git a/channels/pt.m3u b/channels/pt.m3u index 09dc998d8..f23039d5f 100644 --- a/channels/pt.m3u +++ b/channels/pt.m3u @@ -29,7 +29,6 @@ https://streamer-b02.videos.sapo.pt/live/santuario.stream/chunklist.m3u8 http://streamspub.manasat.com:1935/tvar/tvmanaar2/playlist.m3u8 #EXTINF:-1 tvg-id="TVI Reality PT" tvg-name="TVI Reality PT" tvg-language="Portuguese" tvg-logo="https://i.imgur.com/yM3G8nv.jpg" group-title="",TVI Reality http://video-auth8.iol.pt:80/live_tvi_direct/live_tvi_direct-3/playlist.m3u8 - #EXTINF:-1 tvg-id="ARTV.pt" tvg-name="ARTV" tvg-language="Portuguese" tvg-logo="http://www.canal.parlamento.pt/images/ARTV_Logo.png" tvg-country="PT" group-title="Legislative",ARTV | Canal Parlamento https://5e4fc274d9d46.streamlock.net/livenlin4/2liveartvpub/playlist.m3u8 #EXTINF:-1 tvg-id="rtp1.pt" tvg-name="RTP1" tvg-language="Portuguese" tvg-logo="https://cdn-images.rtp.pt/common/img/channels/logos/color/horizontal/5-563718101410.png" tvg-country="PT" group-title="",RTP1 (1290 kbps) From 2c9cdd61d6500fbe1c9cbc528e42ad038be3dbcd Mon Sep 17 00:00:00 2001 From: ksl1989 <40713728+ksl1989@users.noreply.github.com> Date: Wed, 8 Apr 2020 04:06:45 +0800 Subject: [PATCH 3/5] Update pt.m3u * Changed RTP links to multi-quality playlist rather than individual bitrate streams. * Added #EXTVLCOPT line to channels that need the user-agent to be set. * Changed tvg-id and tvg-name to the one in provided EPG file. * Re-added removed RTP1 stream as backup for RTP Internacional (was mislabled). * Added [not 24/7] to the title of RTP channels because the broadcast can be interrupted due to rights issues --- channels/pt.m3u | 62 ++++++++++++++++++++++--------------------------- 1 file changed, 28 insertions(+), 34 deletions(-) diff --git a/channels/pt.m3u b/channels/pt.m3u index f23039d5f..469ca21bd 100644 --- a/channels/pt.m3u +++ b/channels/pt.m3u @@ -29,39 +29,33 @@ https://streamer-b02.videos.sapo.pt/live/santuario.stream/chunklist.m3u8 http://streamspub.manasat.com:1935/tvar/tvmanaar2/playlist.m3u8 #EXTINF:-1 tvg-id="TVI Reality PT" tvg-name="TVI Reality PT" tvg-language="Portuguese" tvg-logo="https://i.imgur.com/yM3G8nv.jpg" group-title="",TVI Reality http://video-auth8.iol.pt:80/live_tvi_direct/live_tvi_direct-3/playlist.m3u8 -#EXTINF:-1 tvg-id="ARTV.pt" tvg-name="ARTV" tvg-language="Portuguese" tvg-logo="http://www.canal.parlamento.pt/images/ARTV_Logo.png" tvg-country="PT" group-title="Legislative",ARTV | Canal Parlamento +#EXTINF:-1 tvg-id="ARTV PT" tvg-name="ARTV PT" tvg-language="Portuguese" tvg-logo="http://www.canal.parlamento.pt/images/ARTV_Logo.png" tvg-country="PT" group-title="Legislative",ARTV | Canal Parlamento https://5e4fc274d9d46.streamlock.net/livenlin4/2liveartvpub/playlist.m3u8 -#EXTINF:-1 tvg-id="rtp1.pt" tvg-name="RTP1" tvg-language="Portuguese" tvg-logo="https://cdn-images.rtp.pt/common/img/channels/logos/color/horizontal/5-563718101410.png" tvg-country="PT" group-title="",RTP1 (1290 kbps) -https://streaming-live.rtp.pt/liverepeater/smil:rtp1.smil/chunklist_b1290000_slpor.m3u8 -#EXTINF:-1 tvg-id="rtp1.pt" tvg-name="RTP1" tvg-language="Portuguese" tvg-logo="https://cdn-images.rtp.pt/common/img/channels/logos/color/horizontal/5-563718101410.png" tvg-country="PT" group-title="",RTP1 (640 kbps) -https://streaming-live.rtp.pt/liverepeater/smil:rtp1.smil/chunklist_b640000_slpor.m3u8 -#EXTINF:-1 tvg-id="rtp2.pt" tvg-name="RTP2" tvg-language="Portuguese" tvg-logo="https://cdn-images.rtp.pt/common/img/channels/logos/color/horizontal/3-363718101410.png" tvg-country="PT" group-title="",RTP2 (1290 kbps) -https://streaming-live.rtp.pt/liverepeater/smil:rtp2.smil/chunklist_b1290000_slpt.m3u8 -#EXTINF:-1 tvg-id="rtp2.pt" tvg-name="RTP2" tvg-language="Portuguese" tvg-logo="https://cdn-images.rtp.pt/common/img/channels/logos/color/horizontal/3-363718101410.png" tvg-country="PT" group-title="",RTP2 (640 kbps) -https://streaming-live.rtp.pt/liverepeater/smil:rtp2.smil/chunklist_b640000_slpt.m3u8 -#EXTINF:-1 tvg-id="RTP3.pt" tvg-name="RTP 3" tvg-language="Portuguese" tvg-logo="https://cdn-images.rtp.pt/common/img/channels/logos/color/horizontal/64-393818101410.png" tvg-country="PT" group-title="News",RTP3 (1290 kbps) -https://streaming-live.rtp.pt/livetvhlsDVR/rtpndvr.smil/chunklist_b1290000_DVR_slpt.m3u8 -#EXTINF:-1 tvg-id="RTP3.pt" tvg-name="RTP 3" tvg-language="Portuguese" tvg-logo="https://cdn-images.rtp.pt/common/img/channels/logos/color/horizontal/64-393818101410.png" tvg-country="PT" group-title="News",RTP3 (640 kbps) -https://streaming-live.rtp.pt/livetvhlsDVR/rtpndvr.smil/chunklist_b640000_DVR_slpt.m3u8 -#EXTINF:-1 tvg-id="RTPInternacional.pt" tvg-name="RTP Internacional" tvg-language="Portuguese" tvg-logo="https://cdn-images.rtp.pt/common/img/channels/logos/color/horizontal/120-344318101410.png" tvg-country="PT" group-title="",RTP Internacional (1290 kbps) -https://streaming-live.rtp.pt/liverepeater/smil:rtpi.smil/chunklist_b1290000_slpt.m3u8 -#EXTINF:-1 tvg-id="RTPInternacional.pt" tvg-name="RTP Internacional" tvg-language="Portuguese" tvg-logo="https://cdn-images.rtp.pt/common/img/channels/logos/color/horizontal/120-344318101410.png" tvg-country="PT" group-title="",RTP Internacional (640 kbps) -https://streaming-live.rtp.pt/liverepeater/smil:rtpi.smil/chunklist_b640000_slpt.m3u8 -#EXTINF:-1 tvg-id="rtpmemoria.pt" tvg-name="RTP Memoria" tvg-language="Portuguese" tvg-logo="https://cdn-images.rtp.pt/common/img/channels/logos/color/horizontal/80-584819141705.png" tvg-country="PT" group-title="",RTP Memória (640 kbps) -https://streaming-live.rtp.pt/liverepeater/smil:rtpmem.smil/chunklist_b640000_slpt.m3u8 -#EXTINF:-1 tvg-id="rtpmemoria.pt" tvg-name="RTP Memoria" tvg-language="Portuguese" tvg-logo="https://cdn-images.rtp.pt/common/img/channels/logos/color/horizontal/80-584819141705.png" tvg-country="PT" group-title="",RTP Memória (340 kbps) -https://streaming-live.rtp.pt/liverepeater/smil:rtpmem.smil/chunklist_b340000_slpt.m3u8 -#EXTINF:-1 tvg-id="RTPMadeira.pt" tvg-name="RTP Madeira" tvg-language="Portuguese" tvg-logo="https://cdn-images.rtp.pt/common/img/channels/logos/color/horizontal/107-443519141305.png" tvg-country="PT" group-title="",RTP Madeira (640 kbps) -https://streaming-live.rtp.pt/liverepeater/smil:rtpmadeira.smil/chunklist_b640000_slpt.m3u8 -#EXTINF:-1 tvg-id="RTPMadeira.pt" tvg-name="RTP Madeira" tvg-language="Portuguese" tvg-logo="https://cdn-images.rtp.pt/common/img/channels/logos/color/horizontal/107-443519141305.png" tvg-country="PT" group-title="",RTP Madeira (340 kbps) -https://streaming-live.rtp.pt/liverepeater/smil:rtpmadeira.smil/chunklist_b340000_slpt.m3u8 -#EXTINF:-1 tvg-id="RTPAcores.pt" tvg-name="RTP Acores" tvg-language="Portuguese" tvg-logo="https://cdn-images.rtp.pt/common/img/channels/logos/color/horizontal/106-563419141305.png" tvg-country="PT" group-title="",RTP Açores (640 kbps) -https://streaming-live.rtp.pt/liverepeater/smil:rtpacores.smil/chunklist_b640000_slpt.m3u8 -#EXTINF:-1 tvg-id="RTPAcores.pt" tvg-name="RTP Acores" tvg-language="Portuguese" tvg-logo="https://cdn-images.rtp.pt/common/img/channels/logos/color/horizontal/106-563419141305.png" tvg-country="PT" group-title="",RTP Açores (340 kbps) -https://streaming-live.rtp.pt/liverepeater/smil:rtpacores.smil/chunklist_b340000_slpt.m3u8 -#EXTINF:-1 tvg-id="RTPAfrica.pt" tvg-name="RTP Africa" tvg-language="Portuguese" tvg-logo="https://cdn-images.rtp.pt/common/img/channels/logos/color/horizontal/27-363219141305.png" tvg-country="PT" group-title="",RTP África (640 kbps) -https://streaming-live.rtp.pt/liverepeater/smil:rtpafrica.smil/chunklist_b640000_slpt.m3u8 -#EXTINF:-1 tvg-id="RTPAfrica.pt" tvg-name="RTP Africa" tvg-language="Portuguese" tvg-logo="https://cdn-images.rtp.pt/common/img/channels/logos/color/horizontal/27-363219141305.png" tvg-country="PT" group-title="",RTP África (340 kbps) -https://streaming-live.rtp.pt/liverepeater/smil:rtpafrica.smil/chunklist_b340000_slpt.m3u8 -#EXTINF:-1 tvg-id="PortoCanal.pt" tvg-name="Porto Canal" tvg-language="Portuguese" tvg-logo="https://upload.wikimedia.org/wikipedia/commons/b/ba/Logo_Porto_Canal.jpg" tvg-country="PT" group-title="",Porto Canal +#EXTINF:-1 tvg-id="RTP 1 PT" tvg-name="RTP 1 PT" tvg-language="Portuguese" tvg-logo="https://cdn-images.rtp.pt/common/img/channels/logos/color/horizontal/5-563718101410.png" tvg-country="PT" group-title="General",RTP1 [not 24/7] +#EXTVLCOPT:http-user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64)" +https://streaming-live.rtp.pt/liverepeater/smil:rtp1.smil/playlist.m3u8 +#EXTINF:-1 tvg-id="RTP 2 PT" tvg-name="RTP 2 PT" tvg-language="Portuguese" tvg-logo="https://cdn-images.rtp.pt/common/img/channels/logos/color/horizontal/3-363718101410.png" tvg-country="PT" group-title="General",RTP2 [not 24/7] +#EXTVLCOPT:http-user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64)" +https://streaming-live.rtp.pt/liverepeater/smil:rtp2.smil/playlist.m3u8 +#EXTINF:-1 tvg-id="RTP 3 PT" tvg-name="RTP 3 PT" tvg-language="Portuguese" tvg-logo="https://cdn-images.rtp.pt/common/img/channels/logos/color/horizontal/64-393818101410.png" tvg-country="PT" group-title="News",RTP3 [not 24/7] +#EXTVLCOPT:http-user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) +https://streaming-live.rtp.pt/livetvhlsDVR/rtpndvr.smil/playlist.m3u8 +#EXTINF:-1 tvg-id="RTP Internacional PT" tvg-name="RTP Internacional PT" tvg-language="Portuguese" tvg-logo="https://cdn-images.rtp.pt/common/img/channels/logos/color/horizontal/120-344318101410.png" tvg-country="PT" group-title="General",RTP Internacional [not 24/7] +#EXTVLCOPT:http-user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) +https://streaming-live.rtp.pt/liverepeater/smil:rtpi.smil/playlist.m3u8 +#EXTINF:-1 tvg-id="RTP Internacional PT" tvg-name="RTP Internacional PT" tvg-language="Portuguese" tvg-logo="https://cdn-images.rtp.pt/common/img/channels/logos/color/horizontal/120-344318101410.png" tvg-country="PT" group-title="General",RTP Internacional (Backup) +http://210.210.155.35/qwr9ew/s/s38/index.m3u8 +#EXTINF:-1 tvg-id="RTP Memoria PT" tvg-name="RTP Memoria PT" tvg-language="Portuguese" tvg-logo="https://cdn-images.rtp.pt/common/img/channels/logos/color/horizontal/80-584819141705.png" tvg-country="PT" group-title="",RTP Memória [not 24/7] +#EXTVLCOPT:http-user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) +https://streaming-live.rtp.pt/liverepeater/smil:rtpmem.smil/playlist.m3u8 +#EXTINF:-1 tvg-id="RTP Madeira PT" tvg-name="RTP Madeira" tvg-language="Portuguese" tvg-logo="https://cdn-images.rtp.pt/common/img/channels/logos/color/horizontal/107-443519141305.png" tvg-country="PT" group-title="General",RTP Madeira [not 24/7] +#EXTVLCOPT:http-user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) +https://streaming-live.rtp.pt/liverepeater/smil:rtpmadeira.smil/playlist.m3u8 +#EXTINF:-1 tvg-id="RTP Acores PT" tvg-name="RTP Acores PT" tvg-language="Portuguese" tvg-logo="https://cdn-images.rtp.pt/common/img/channels/logos/color/horizontal/106-563419141305.png" tvg-country="PT" group-title="General",RTP Açores [not 24/7] +#EXTVLCOPT:http-user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) +https://streaming-live.rtp.pt/liverepeater/smil:rtpacores.smil/playlist.m3u8 +#EXTINF:-1 tvg-id="RTP Africa PT" tvg-name="RTP Africa PT" tvg-language="Portuguese" tvg-logo="https://cdn-images.rtp.pt/common/img/channels/logos/color/horizontal/27-363219141305.png" tvg-country="PT" group-title="General",RTP África [not 24/7] +#EXTVLCOPT:http-user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) +https://streaming-live.rtp.pt/liverepeater/smil:rtpafrica.smil/playlist.m3u8 +#EXTINF:-1 tvg-id="Porto Canal PT" tvg-name="Porto Canal PT" tvg-language="Portuguese" tvg-logo="https://upload.wikimedia.org/wikipedia/commons/b/ba/Logo_Porto_Canal.jpg" tvg-country="PT" group-title="",Porto Canal https://streamer-b02.videos.sapo.pt/live/portocanal/playlist.m3u8 From 7fb06b43d7cee0fcf07c8b809c850ad3b667e0a3 Mon Sep 17 00:00:00 2001 From: freearhey Date: Sat, 11 Apr 2020 18:55:58 +0300 Subject: [PATCH 4/5] Upgrade iptv-playlist-parser package to v0.4.0 --- package-lock.json | 58 ++++------------------------------------------- package.json | 2 +- 2 files changed, 5 insertions(+), 55 deletions(-) diff --git a/package-lock.json b/package-lock.json index d4671403f..64adc08d7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3,16 +3,6 @@ "requires": true, "lockfileVersion": 1, "dependencies": { - "@babel/runtime-corejs2": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs2/-/runtime-corejs2-7.6.3.tgz", - "integrity": "sha512-nuA2o+rgX2+PrNTZ063ehncVcg7sn+tU71BB81SaWRVUbGwCOlb0+yQA1e0QqmzOfRSYOxfvf8cosYqFbJEiwQ==", - "dev": true, - "requires": { - "core-js": "^2.6.5", - "regenerator-runtime": "^0.13.2" - } - }, "async": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/async/-/async-3.1.0.tgz", @@ -29,12 +19,6 @@ "is-buffer": "^2.0.2" } }, - "core-js": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", - "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==", - "dev": true - }, "debug": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", @@ -44,15 +28,6 @@ "ms": "2.0.0" } }, - "decamelize": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-3.2.0.tgz", - "integrity": "sha512-4TgkVUsmmu7oCSyGBm5FvfMoACuoh9EOidm7V5/J2X2djAwwt57qb3F2KMP2ITqODTCSwb+YRV+0Zqrv18k/hw==", - "dev": true, - "requires": { - "xregexp": "^4.2.4" - } - }, "epg-parser": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/epg-parser/-/epg-parser-0.1.1.tgz", @@ -88,14 +63,10 @@ } }, "iptv-playlist-parser": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/iptv-playlist-parser/-/iptv-playlist-parser-0.3.0.tgz", - "integrity": "sha512-FA9B+8Lh+0KtWWXDaxzFf1DY3QJI+mGCZP/E51XoJcfahnajyyqdfI1ClpQquFHok2CLNqnfbeW6rzJN9TCREg==", - "dev": true, - "requires": { - "decamelize": "^3.2.0", - "m3u8-file-parser": "^0.2.2" - } + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/iptv-playlist-parser/-/iptv-playlist-parser-0.4.0.tgz", + "integrity": "sha512-zgNM3chjwgd3bBQsujhdbospyYHky/zURdRSx5uVSkWK5Md6YssrIrVp98WMjJVx5dTlP81C8bdbPGYEyEIfOA==", + "dev": true }, "is-buffer": { "version": "2.0.3", @@ -115,12 +86,6 @@ "integrity": "sha1-AMMs5IFSpJphRFC5uiYyq1igo2Q=", "dev": true }, - "m3u8-file-parser": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/m3u8-file-parser/-/m3u8-file-parser-0.2.2.tgz", - "integrity": "sha512-OW2m2wcVh4g55MKpe5jxp4AOkpUVQEuaXEF8YTnIP1eAPmLtmuzfk+QcHqA+raqK3zdkz/nHjNvoCKn0k6UgzA==", - "dev": true - }, "markdown-include": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/markdown-include/-/markdown-include-0.4.3.tgz", @@ -142,12 +107,6 @@ "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", "dev": true }, - "regenerator-runtime": { - "version": "0.13.3", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", - "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==", - "dev": true - }, "sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", @@ -171,15 +130,6 @@ "requires": { "sax": "^1.2.4" } - }, - "xregexp": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.2.4.tgz", - "integrity": "sha512-sO0bYdYeJAJBcJA8g7MJJX7UrOZIfJPd8U2SC7B2Dd/J24U0aQNoGp33shCaBSWeb0rD5rh6VBUIXOkGal1TZA==", - "dev": true, - "requires": { - "@babel/runtime-corejs2": "^7.2.0" - } } } } diff --git a/package.json b/package.json index dcece8c73..1e4c9171d 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "epg-parser": "^0.1.1", "escape-string-regexp": "^2.0.0", "fluent-ffmpeg": "^2.1.2", - "iptv-playlist-parser": "^0.3.0", + "iptv-playlist-parser": "^0.4.0", "langs": "^2.0.0", "markdown-include": "^0.4.3" } From 80cbff843c4a518b84fc1362e3b481d62da12d42 Mon Sep 17 00:00:00 2001 From: freearhey Date: Sat, 11 Apr 2020 18:56:41 +0300 Subject: [PATCH 5/5] Added support for #EXTVLCOPT:http-referrer and #EXTVLCOPT:http-user-agent stream options --- scripts/helper.js | 45 ++++++++++++++++++++++++++++----------------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/scripts/helper.js b/scripts/helper.js index f4f335c63..c84fc7f5f 100644 --- a/scripts/helper.js +++ b/scripts/helper.js @@ -175,15 +175,7 @@ helper.generateTable = function (data, options) { } helper.createChannel = function (data) { - return new Channel({ - id: data.tvg.id, - name: data.tvg.name, - language: data.tvg.language, - logo: data.tvg.logo, - group: data.group.title, - url: data.url, - title: data.name - }) + return new Channel(data) } helper.writeToLog = function (country, msg, url) { @@ -230,13 +222,15 @@ class Playlist { class Channel { constructor(data) { - this.id = data.id - this.name = data.name - this.language = this._filterLanguage(data.language) - this.logo = data.logo - this.group = this._filterGroup(data.group) + this.id = data.tvg.id + this.name = data.tvg.name + this.language = this._filterLanguage(data.tvg.language) + this.logo = data.tvg.logo + this.group = this._filterGroup(data.group.title) this.url = data.url - this.title = data.title + this.title = data.name.trim() + this.userAgent = data.http['user-agent'] + this.referrer = data.http['referrer'] } _filterGroup(groupTitle) { @@ -297,13 +291,30 @@ class Channel { toString() { const country = this.countryCode.toUpperCase() const epg = this.id && this.epg ? this.epg : '' - const info = `-1 tvg-id="${this.id}" tvg-name="${this.name}" tvg-language="${this.language}" tvg-logo="${this.logo}" tvg-country="${country}" tvg-url="${epg}" group-title="${this.group}",${this.title}` + + let info = `-1 tvg-id="${this.id}" tvg-name="${this.name}" tvg-language="${this.language}" tvg-logo="${this.logo}" tvg-country="${country}" tvg-url="${epg}" group-title="${this.group}",${this.title}` + + if (this.referrer) { + info += `\n#EXTVLCOPT:http-referrer=${this.referrer}` + } + + if (this.userAgent) { + info += `\n#EXTVLCOPT:http-user-agent=${this.userAgent}` + } return '#EXTINF:' + info + '\n' + this.url + '\n' } toShortString() { - const info = `-1 tvg-id="${this.id}" tvg-name="${this.name}" tvg-language="${this.language}" tvg-logo="${this.logo}" group-title="${this.group}",${this.title}` + let info = `-1 tvg-id="${this.id}" tvg-name="${this.name}" tvg-language="${this.language}" tvg-logo="${this.logo}" group-title="${this.group}",${this.title}` + + if (this.referrer) { + info += `\n#EXTVLCOPT:http-referrer=${this.referrer}` + } + + if (this.userAgent) { + info += `\n#EXTVLCOPT:http-user-agent=${this.userAgent}` + } return '#EXTINF:' + info + '\n' + this.url + '\n' }