diff --git a/channels/pt.m3u b/channels/pt.m3u index 9e6b26c8b..7f2b6346c 100644 --- a/channels/pt.m3u +++ b/channels/pt.m3u @@ -17,8 +17,6 @@ http://c2.manasat.com:1935/kmusic/kmusic3/FluxusTV.m3u8 http://195.22.11.11:1935/ktv/ktv1/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,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 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="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 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" } 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' }