Merge branch 'master' into LaneSh4d0w-patch-2

pull/4104/head
Shadix A 4 years ago committed by GitHub
commit 2e650f931b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -6,12 +6,9 @@ http://amtv1.livestreamingcdn.com/am2abr/index.m3u8
http://ott-cdn.ucom.am/s10/index.m3u8
#EXTINF:-1 tvg-id="5TV.am" tvg-name="5TV" tvg-country="AM" tvg-language="Armenian" tvg-logo="https://i.imgur.com/yigw9dr.png" group-title="",5TV (480p)
#EXTVLCOPT:http-user-agent=Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148
http://ott-cdn.ucom.am/s6/04.m3u8
http://ott-cdn.ucom.am/s6/index.m3u8
#EXTINF:-1 tvg-id="Amga.am" tvg-name="Amga" tvg-country="AM" tvg-language="Armenian" tvg-logo="https://i.imgur.com/3vQVwUV.jpg" group-title="",Amga (720p) [Not 24/7]
https://streamer1.connectto.com/AMGA_WEB_1202/playlist.m3u8
#EXTINF:-1 tvg-id="AraratTV.am" tvg-name="Ararat TV" tvg-country="AM" tvg-language="Armenian" tvg-logo="https://i.imgur.com/nCdGhjB.png" group-title="",Ararat TV (480p)
#EXTVLCOPT:http-user-agent=Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148
http://ott-cdn.ucom.am/s6/index.m3u8
#EXTINF:-1 tvg-id="Armenia2.am" tvg-name="Armenia 2" tvg-country="AM" tvg-language="Armenian" tvg-logo="https://i.imgur.com/XwbLfqd.png" group-title="",Armenia 2 (480p)
#EXTVLCOPT:http-user-agent=Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148
http://ott-cdn.ucom.am/s22/index.m3u8

@ -275,8 +275,6 @@ http://lb.streaming.sk/fashiontv/stream/playlist.m3u8
https://fash2043.cloudycdn.services/slive/ftv_ftv_pg13_gmt_ess_43126_default_1262_hls.smil/playlist.m3u8
#EXTINF:-1 tvg-id="France2.fr" tvg-name="France 2" tvg-country="FR" tvg-language="French" tvg-logo="" group-title="",France 2 (720p)
http://edge9.iptvnetwork.net/live/france2/playlist.m3u8
#EXTINF:-1 tvg-id="France24.fr" tvg-name="France 24" tvg-country="FR" tvg-language="" tvg-logo="" group-title="",France 24 (576p)
http://f24hls-i.akamaihd.net/hls/live/221193/F24_EN_LO_HLS/master_old_900.m3u8
#EXTINF:-1 tvg-id="France24Arabic.fr" tvg-name="France 24 Arabic" tvg-country="ARAB" tvg-language="Arabic" tvg-logo="https://i.imgur.com/61MSiq9.png" group-title="News",France 24 Arabic (1080p)
https://static.france24.com/live/F24_AR_HI_HLS/live_tv.m3u8
#EXTINF:-1 tvg-id="France24Arabic.fr" tvg-name="France 24 Arabic" tvg-country="ARAB" tvg-language="Arabic" tvg-logo="https://i.imgur.com/61MSiq9.png" group-title="News",France 24 Arabic (576p)

@ -42,12 +42,10 @@ https://www.rthk.hk/feeds/dtt/rthktv32_https.m3u8
http://61.238.6.49:8000/bysid/1
#EXTINF:-1 tvg-id="YaoCaiCaiJingTai.hk" tvg-name="耀才財經台" tvg-country="HK" tvg-language="Chinese;Yue Chinese" tvg-logo="https://i.imgur.com/xliVoIt.jpg?1" group-title="Shop",耀才財經台 (576p)
http://202.69.67.66:443/webcast/bshdlive-pc/playlist.m3u8
#EXTINF:-1 tvg-id="XiangGangKaiDianShiHKSTVHKS.hk" tvg-name="香港开电视 / HKSTV-HKS" tvg-country="HK" tvg-language="" tvg-logo="" group-title="",香港开电视 / HKSTV-HKS (720p)
#EXTINF:-1 tvg-id="XiangGangKaiDianShiHKSTVHKS.hk" tvg-name="香港开电视 / HKSTV-HKS" tvg-country="HK" tvg-language="Chinese;Yue Chinese" tvg-logo="https://upload.wikimedia.org/wikipedia/zh/e/ed/HK_open_tv_logo.jpg" group-title="",香港开电视 / HKSTV-HKS (720p)
http://media.fantv.hk/m3u8/archive/channel2.m3u8
#EXTINF:-1 tvg-id="XiangGangWeiShi.hk" tvg-name="香港衛視" tvg-country="HK" tvg-language="Chinese;Mandarin Chinese" tvg-logo="https://i.imgur.com/wnQPn2d.jpg" group-title="",香港衛視 [Offline]
http://zhibo.hkstv.tv/livestream/mutfysrq/playlist.m3u8
#EXTINF:-1 tvg-id="XiangGangKaiDianShi.hk" tvg-name="香港開電視" tvg-country="HK" tvg-language="Chinese;Yue Chinese" tvg-logo="https://upload.wikimedia.org/wikipedia/zh/e/ed/HK_open_tv_logo.jpg" group-title="General",香港開電視 (720p)
http://media.fantv.hk/m3u8/archive/channel2_stream1.m3u8
#EXTINF:-1 tvg-id="FengHuangWeiShiZhongWenTai.hk" tvg-name="鳳凰衛視中文台" tvg-country="HK" tvg-language="Chinese;Mandarin Chinese" tvg-logo="https://pbs.twimg.com/profile_images/1246604721462239232/QCKNvVux_400x400.jpg" group-title="",鳳凰衛視中文台
http://221.179.217.70/PLTV/88888888/224/3221225942/1.m3u8
#EXTINF:-1 tvg-id="FengHuangZiXun.hk" tvg-name="鳳凰資訊" tvg-country="HK" tvg-language="Chinese;Mandarin Chinese" tvg-logo="https://upload.wikimedia.org/wikipedia/zh/thumb/1/16/Phoenix_InfoNews.svg/1200px-Phoenix_InfoNews.svg.png" group-title="News",鳳凰衛視資訊台HD

@ -5,7 +5,7 @@ https://meridelive01-lh.akamaihd.net/i/tvparma_1@356964/master.m3u8
https://live3-mediaset-it.akamaized.net/Content/hls_h0_clr_vos/live/channel(lb)/index.m3u8
#EXTINF:-1 tvg-id="51RadioTV.it" tvg-name="51 Radio TV" tvg-country="IT" tvg-language="Italian" tvg-logo="http://i65.tinypic.com/wmf409.jpg" group-title="",51 Radio TV (480p)
http://wms.shared.streamshow.it/canale51/canale51/playlist.m3u8
#EXTINF:-1 tvg-id="A2itv.it" tvg-name="A2itv" tvg-country="IT" tvg-language="English,French" tvg-logo="" group-title="",A2itv (1080p)
#EXTINF:-1 tvg-id="A2itv.it" tvg-name="A2itv" tvg-country="IT" tvg-language="English;French" tvg-logo="" group-title="",A2itv (1080p)
https://stream.sen-gt.com/A2itv/myStream/playlist.m3u8
#EXTINF:-1 tvg-id="ABChannel.it" tvg-name="AB Channel" tvg-country="IT" tvg-language="" tvg-logo="https://i.imgur.com/y5564NI.png" group-title="",AB Channel (768p)
https://tsw.streamingwebtv24.it:1936/abchanneltv/abchanneltv/playlist.m3u8

@ -47,8 +47,6 @@ https://nhkwlive-ojp.akamaized.net/hls/live/2003459/nhkwlive-ojp-en/index_4M.m3u
https://nhkworld.webcdn.stream.ne.jp/www11/nhkworld-tv/zh/725580/livecom_zh.m3u8
#EXTINF:-1 tvg-id="NipponTV.jp" tvg-name="Nippon TV" tvg-country="JP" tvg-language="Japanese" tvg-logo="" group-title="",Nippon TV (540p)
https://ntv1.mov3.co/hls/ntv.m3u8
#EXTINF:-1 tvg-id="NipponTVNews24.jp" tvg-name="Nippon TV News 24" tvg-country="JP" tvg-language="Japanese" tvg-logo="" group-title="News",Nippon TV News 24 (480p)
https://n24-cdn-live.ntv.co.jp/ch01/high.m3u8
#EXTINF:-1 tvg-id="NTVNews24.jp" tvg-name="NTV News24" tvg-country="JP" tvg-language="Japanese" tvg-logo="https://i.imgur.com/Ya4yHpC.jpg" group-title="News",NTV News24 (480p)
https://www.news24.jp/livestream/index.m3u8
#EXTINF:-1 tvg-id="ShopChannel.jp" tvg-name="Shop Channel" tvg-country="JP" tvg-language="Japanese" tvg-logo="https://i.imgur.com/3K36JEA.jpg" group-title="Shop",Shop Channel (720p)

@ -6,6 +6,10 @@
"attribute-quotes": true,
"require-info": true,
"no-trailing-spaces": true,
"no-whitespace-before-title": true
"no-whitespace-before-title": true,
"no-multi-spaces": true,
"no-extra-comma": true,
"space-before-paren": true,
"no-dash": true
}
}

14
package-lock.json generated

@ -10,7 +10,7 @@
"commander": "^7.0.0",
"iptv-checker": "^0.20.2",
"iptv-playlist-parser": "^0.5.4",
"m3u-linter": "^0.1.3",
"m3u-linter": "^0.2.1",
"markdown-include": "^0.4.3",
"normalize-url": "^6.1.0",
"pre-push": "^0.1.1",
@ -2817,9 +2817,9 @@
}
},
"node_modules/m3u-linter": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/m3u-linter/-/m3u-linter-0.1.3.tgz",
"integrity": "sha512-UcOCA12gkZGs8gBE3HpBnPwZyVswan4VWBb4kTbxHZ84hBRVa00WreZSUDCgaPVmo52HyxZAI1FLuvOIRIAfZQ==",
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/m3u-linter/-/m3u-linter-0.2.1.tgz",
"integrity": "sha512-hSRnnJD/tom5bF0picznFMuUfbvUH7iPZfQ+3DhZ41Rk3N2LTMWzRlA1sCRWPT9dvyWuvYnhAIrxfv+fbsaIVQ==",
"dependencies": {
"chalk": "^4.1.1",
"commander": "^7.2.0",
@ -5946,9 +5946,9 @@
}
},
"m3u-linter": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/m3u-linter/-/m3u-linter-0.1.3.tgz",
"integrity": "sha512-UcOCA12gkZGs8gBE3HpBnPwZyVswan4VWBb4kTbxHZ84hBRVa00WreZSUDCgaPVmo52HyxZAI1FLuvOIRIAfZQ==",
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/m3u-linter/-/m3u-linter-0.2.1.tgz",
"integrity": "sha512-hSRnnJD/tom5bF0picznFMuUfbvUH7iPZfQ+3DhZ41Rk3N2LTMWzRlA1sCRWPT9dvyWuvYnhAIrxfv+fbsaIVQ==",
"requires": {
"chalk": "^4.1.1",
"commander": "^7.2.0",

@ -14,7 +14,7 @@
"commander": "^7.0.0",
"iptv-checker": "^0.20.2",
"iptv-playlist-parser": "^0.5.4",
"m3u-linter": "^0.1.3",
"m3u-linter": "^0.2.1",
"markdown-include": "^0.4.3",
"normalize-url": "^6.1.0",
"pre-push": "^0.1.1",

@ -14,6 +14,7 @@ program
.option('-r, --resolution', 'Detect stream resolution')
.option('-c, --country <country>', 'Comma-separated list of country codes', '')
.option('-e, --exclude <exclude>', 'Comma-separated list of country codes to be excluded', '')
.option('--delay <delay>', 'Set delay for each request', 0)
.option('--timeout <timeout>', 'Set timeout for each request', 5000)
.parse(process.argv)
@ -61,7 +62,7 @@ async function updatePlaylist(playlist) {
}
for (const channel of playlist.channels) {
addMissingData(channel)
addMissingData(channel, playlist)
updateGroupTitle(channel)
normalizeUrl(channel)
@ -90,6 +91,8 @@ async function updatePlaylist(playlist) {
.catch(err => {
if (config.debug) log.print(` ERR: ${channel.url} (${err.message})\n`)
})
await utils.sleep(config.delay)
}
if (!config.debug) bar.tick()
}
@ -122,7 +125,8 @@ function updateStatus(channel, status) {
}
}
function addMissingData(channel) {
function addMissingData(channel, playlist) {
const code = playlist.country.code
// tvg-name
if (!channel.tvg.name && channel.name) {
channel.tvg.name = channel.name.replace(/\"/gi, '')

@ -211,10 +211,10 @@ db.playlists = {
return this.list
},
only(list = []) {
return this.list.filter(playlist => list.includes(playlist.name))
return this.list.filter(playlist => list.includes(playlist.filename))
},
except(list = []) {
return this.list.filter(playlist => !list.includes(playlist.name))
return this.list.filter(playlist => !list.includes(playlist.filename))
},
sortBy(fields) {
this.list = utils.sortBy(this.list, fields)

@ -5,10 +5,6 @@ const fs = require('fs')
const rootPath = path.resolve(__dirname) + '/../../'
const file = {}
file.getBasename = function (filename) {
return path.basename(filename, path.extname(filename))
}
file.getFilename = function (filename) {
return path.parse(filename).name
}

@ -15,10 +15,13 @@ parser.parseIndex = function () {
parser.parsePlaylist = async function (url) {
const content = file.read(url)
const result = playlistParser.parse(content)
const name = file.getFilename(url)
const country = utils.code2name(name)
const filename = file.getFilename(url)
const country = {
code: filename,
name: utils.code2name(filename)
}
return new Playlist({ header: result.header, items: result.items, url, country, name })
return new Playlist({ header: result.header, items: result.items, url, filename, country })
}
module.exports = parser

@ -90,4 +90,10 @@ utils.filterPlaylists = function (arr, include = '', exclude = '') {
return arr
}
utils.sleep = function (ms) {
return function (x) {
return new Promise(resolve => setTimeout(() => resolve(x), ms))
}
}
module.exports = utils

Loading…
Cancel
Save