From 1f6e9de4ba505f83c41ff482a0d47dc69c54798e Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Wed, 8 Sep 2021 20:03:01 +0300 Subject: [PATCH 01/26] Update utils.js --- scripts/helpers/utils.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/helpers/utils.js b/scripts/helpers/utils.js index 277bae92f..6f8c7f33c 100644 --- a/scripts/helpers/utils.js +++ b/scripts/helpers/utils.js @@ -74,17 +74,17 @@ utils.removeProtocol = function (string) { return string.replace(/(^\w+:|^)\/\//, '') } -utils.filterPlaylists = function (arr, include = '', exclude = '') { +utils.filterFiles = function (arr, include = '', exclude = '') { if (include) { const included = include.split(',').map(filename => `channels/${filename}.m3u`) - return arr.filter(i => included.indexOf(i.url) > -1) + return arr.filter(filename => included.includes(filename)) } if (exclude) { const excluded = exclude.split(',').map(filename => `channels/${filename}.m3u`) - return arr.filter(i => excluded.indexOf(i.url) === -1) + return arr.filter(filename => !excluded.includes(filename)) } return arr From 2aa55af99e75485a785896e47c1eca723e41edc7 Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Wed, 8 Sep 2021 20:03:08 +0300 Subject: [PATCH 02/26] Update format.js --- scripts/format.js | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/scripts/format.js b/scripts/format.js index f1060295d..e5599a2e8 100644 --- a/scripts/format.js +++ b/scripts/format.js @@ -1,3 +1,4 @@ +const glob = require('glob') const IPTVChecker = require('iptv-checker') const normalize = require('normalize-url') const { program } = require('commander') @@ -24,14 +25,17 @@ const checker = new IPTVChecker({ }) let buffer, origins -async function main() { +function main() { log.start() - let playlists = parser.parseIndex().filter(i => i.url !== 'channels/unsorted.m3u') - playlists = utils.filterPlaylists(playlists, config.country, config.exclude) - if (!playlists.length) log.print(`No playlist is selected\n`) - for (const playlist of playlists) { - await parser.parsePlaylist(playlist.url).then(updatePlaylist).then(savePlaylist) + glob('channels/*.m3u', { ignore: ['unsorted.m3u'] }, handleFiles) +} + +async function handleFiles(er, files) { + const filtered = utils.filterFiles(files, config.country, config.exclude) + if (!filtered.length) log.print(`No files is selected\n`) + for (const file of filtered) { + await parser.parsePlaylist(file).then(updatePlaylist).then(savePlaylist) } log.finish() From 8a2473c64c8f19c86f7668b6312686d3dc6bbc39 Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Wed, 8 Sep 2021 20:46:14 +0300 Subject: [PATCH 03/26] Update utils.js --- scripts/helpers/utils.js | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/scripts/helpers/utils.js b/scripts/helpers/utils.js index 6f8c7f33c..eb8f3d814 100644 --- a/scripts/helpers/utils.js +++ b/scripts/helpers/utils.js @@ -74,22 +74,6 @@ utils.removeProtocol = function (string) { return string.replace(/(^\w+:|^)\/\//, '') } -utils.filterFiles = function (arr, include = '', exclude = '') { - if (include) { - const included = include.split(',').map(filename => `channels/${filename}.m3u`) - - return arr.filter(filename => included.includes(filename)) - } - - if (exclude) { - const excluded = exclude.split(',').map(filename => `channels/${filename}.m3u`) - - return arr.filter(filename => !excluded.includes(filename)) - } - - return arr -} - utils.sleep = function (ms) { return function (x) { return new Promise(resolve => setTimeout(() => resolve(x), ms)) From e51f10023a20eb79cd3560e92758ce6050b6b00b Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Wed, 8 Sep 2021 20:46:19 +0300 Subject: [PATCH 04/26] Update file.js --- scripts/helpers/file.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/scripts/helpers/file.js b/scripts/helpers/file.js index 578c76a73..71889707b 100644 --- a/scripts/helpers/file.js +++ b/scripts/helpers/file.js @@ -1,10 +1,30 @@ const markdownInclude = require('markdown-include') const path = require('path') +const glob = require('glob') const fs = require('fs') const rootPath = path.resolve(__dirname) + '/../../' const file = {} +file.list = function (include = [], exclude = []) { + return new Promise(resolve => { + glob('channels/*.m3u', function (err, files) { + console.log(include, exclude) + if (include.length) { + include = include.map(filename => `channels/${filename}.m3u`) + files = files.filter(filename => include.includes(filename)) + } + + if (exclude.length) { + exclude = exclude.map(filename => `channels/${filename}.m3u`) + files = files.filter(filename => !exclude.includes(filename)) + } + + resolve(files) + }) + }) +} + file.getFilename = function (filename) { return path.parse(filename).name } From 1b2fbcce3a4dc80d8a0a051ccc5a726a1051698e Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Wed, 8 Sep 2021 20:46:27 +0300 Subject: [PATCH 05/26] Update format.js --- scripts/format.js | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/scripts/format.js b/scripts/format.js index e5599a2e8..c0ee856f8 100644 --- a/scripts/format.js +++ b/scripts/format.js @@ -1,4 +1,3 @@ -const glob = require('glob') const IPTVChecker = require('iptv-checker') const normalize = require('normalize-url') const { program } = require('commander') @@ -25,16 +24,15 @@ const checker = new IPTVChecker({ }) let buffer, origins -function main() { +async function main() { log.start() - glob('channels/*.m3u', { ignore: ['unsorted.m3u'] }, handleFiles) -} - -async function handleFiles(er, files) { - const filtered = utils.filterFiles(files, config.country, config.exclude) - if (!filtered.length) log.print(`No files is selected\n`) - for (const file of filtered) { + const include = config.country.split(',').filter(i => i) + const exclude = config.exclude.split(',').filter(i => i) + let files = await file.list(include, exclude) + files = files.filter(file => file !== 'channels/unsorted.m3u') + if (!files.length) log.print(`No files is selected\n`) + for (const file of files) { await parser.parsePlaylist(file).then(updatePlaylist).then(savePlaylist) } From da29bd114ec46f3342f8f9112f3d6b9d6da59f38 Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Wed, 8 Sep 2021 20:47:56 +0300 Subject: [PATCH 06/26] Update file.js --- scripts/helpers/file.js | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/helpers/file.js b/scripts/helpers/file.js index 71889707b..b670fdc94 100644 --- a/scripts/helpers/file.js +++ b/scripts/helpers/file.js @@ -9,7 +9,6 @@ const file = {} file.list = function (include = [], exclude = []) { return new Promise(resolve => { glob('channels/*.m3u', function (err, files) { - console.log(include, exclude) if (include.length) { include = include.map(filename => `channels/${filename}.m3u`) files = files.filter(filename => include.includes(filename)) From 7229493995b79917d7ae687c8d95c018ad32f085 Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Wed, 8 Sep 2021 20:49:27 +0300 Subject: [PATCH 07/26] Update filter.js --- scripts/filter.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/scripts/filter.js b/scripts/filter.js index 3efbc492e..f6676c937 100644 --- a/scripts/filter.js +++ b/scripts/filter.js @@ -1,16 +1,17 @@ const blacklist = require('./data/blacklist.json') const parser = require('./helpers/parser') +const file = require('./helpers/file') const log = require('./helpers/log') async function main() { log.start() - log.print(`Parsing 'index.m3u'...`) - const playlists = parser.parseIndex() - for (const playlist of playlists) { - log.print(`\nProcessing '${playlist.url}'...`) + const files = await file.list() + if (!files.length) log.print(`No files is selected\n`) + for (const file of files) { + log.print(`\nProcessing '${file}'...`) await parser - .parsePlaylist(playlist.url) + .parsePlaylist(file) .then(removeBlacklisted) .then(p => p.save()) } From b442162ecdae1128e9c78dc8339784d423e8d66e Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Wed, 8 Sep 2021 20:52:57 +0300 Subject: [PATCH 08/26] Update remove-broken-links.js --- scripts/remove-broken-links.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/scripts/remove-broken-links.js b/scripts/remove-broken-links.js index 3faf9968b..a6fff7a85 100644 --- a/scripts/remove-broken-links.js +++ b/scripts/remove-broken-links.js @@ -1,15 +1,17 @@ const parser = require('./helpers/parser') +const file = require('./helpers/file') const log = require('./helpers/log') async function main() { log.start() - log.print(`Parsing 'index.m3u'...`) - const playlists = parser.parseIndex().filter(i => i.url !== 'channels/unsorted.m3u') - for (const playlist of playlists) { - log.print(`\nProcessing '${playlist.url}'...`) + let files = await file.list() + if (!files.length) log.print(`No files is selected\n`) + files = files.filter(file => file !== 'channels/unsorted.m3u') + for (const file of files) { + log.print(`\nProcessing '${file}'...`) await parser - .parsePlaylist(playlist.url) + .parsePlaylist(file) .then(removeBrokenLinks) .then(p => p.save()) } From e1d5a6d06275f8e0da115523212666875d7d5dc6 Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Wed, 8 Sep 2021 20:57:13 +0300 Subject: [PATCH 09/26] Update remove-duplicates.js --- scripts/remove-duplicates.js | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/scripts/remove-duplicates.js b/scripts/remove-duplicates.js index aa2c3d827..c75882f70 100644 --- a/scripts/remove-duplicates.js +++ b/scripts/remove-duplicates.js @@ -1,5 +1,6 @@ const parser = require('./helpers/parser') const utils = require('./helpers/utils') +const file = require('./helpers/file') const log = require('./helpers/log') let globalBuffer = [] @@ -7,18 +8,19 @@ let globalBuffer = [] async function main() { log.start() - log.print(`Parsing 'index.m3u'...`) - const playlists = parser.parseIndex().filter(i => i.url !== 'channels/unsorted.m3u') - for (const playlist of playlists) { - log.print(`\nProcessing '${playlist.url}'...`) + let files = await file.list() + if (!files.length) log.print(`No files is selected\n`) + files = files.filter(file => file !== 'channels/unsorted.m3u') + for (const file of files) { + log.print(`\nProcessing '${file}'...`) await parser - .parsePlaylist(playlist.url) + .parsePlaylist(file) .then(addToGlobalBuffer) .then(removeDuplicates) .then(p => p.save()) } - if (playlists.length) { + if (files.length) { log.print(`\nProcessing 'channels/unsorted.m3u'...`) await parser .parsePlaylist('channels/unsorted.m3u') From 1f2827f51a42d44d9a08e5c257205dfc990b262e Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Wed, 8 Sep 2021 21:04:38 +0300 Subject: [PATCH 10/26] Update sort.js --- scripts/sort.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/scripts/sort.js b/scripts/sort.js index 17560b848..976dfcae0 100644 --- a/scripts/sort.js +++ b/scripts/sort.js @@ -1,16 +1,18 @@ const parser = require('./helpers/parser') const utils = require('./helpers/utils') +const file = require('./helpers/file') const log = require('./helpers/log') async function main() { log.start() - log.print(`Parsing 'index.m3u'...`) - let playlists = parser.parseIndex().filter(i => i.url !== 'channels/unsorted.m3u') - for (const playlist of playlists) { - log.print(`\nProcessing '${playlist.url}'...`) + let files = await file.list() + if (!files.length) log.print(`No files is selected\n`) + files = files.filter(file => file !== 'channels/unsorted.m3u') + for (const file of files) { + log.print(`\nProcessing '${file}'...`) await parser - .parsePlaylist(playlist.url) + .parsePlaylist(file) .then(sortChannels) .then(p => p.save()) } From 59d564282a4da25ec6d8af1257271a71f18d6cac Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Wed, 8 Sep 2021 21:28:57 +0300 Subject: [PATCH 11/26] Create countries.json --- scripts/data/countries.json | 1087 +++++++++++++++++++++++++++++++++++ 1 file changed, 1087 insertions(+) create mode 100644 scripts/data/countries.json diff --git a/scripts/data/countries.json b/scripts/data/countries.json new file mode 100644 index 000000000..308b8a248 --- /dev/null +++ b/scripts/data/countries.json @@ -0,0 +1,1087 @@ +[ + { + "flag": "๐Ÿ‡ฆ๐Ÿ‡ซ", + "name": "Afghanistan", + "code": "af" + }, + { + "flag": "๐Ÿ‡ฆ๐Ÿ‡ฑ", + "name": "Albania", + "code": "al" + }, + { + "flag": "๐Ÿ‡ฉ๐Ÿ‡ฟ", + "name": "Algeria", + "code": "dz" + }, + { + "flag": "๐Ÿ‡ฆ๐Ÿ‡ธ", + "name": "American Samoa", + "code": "as" + }, + { + "flag": "๐Ÿ‡ฆ๐Ÿ‡ฉ", + "name": "Andorra", + "code": "ad" + }, + { + "flag": "๐Ÿ‡ฆ๐Ÿ‡ด", + "name": "Angola", + "code": "ao" + }, + { + "flag": "๐Ÿ‡ฆ๐Ÿ‡ฌ", + "name": "Antigua & Barbuda", + "code": "ag" + }, + { + "flag": "๐Ÿ‡ฆ๐Ÿ‡ท", + "name": "Argentina", + "code": "ar" + }, + { + "flag": "๐Ÿ‡ฆ๐Ÿ‡ฒ", + "name": "Armenia", + "code": "am" + }, + { + "flag": "๐Ÿ‡ฆ๐Ÿ‡ผ", + "name": "Aruba", + "code": "aw" + }, + { + "flag": "๐Ÿ‡ฆ๐Ÿ‡บ", + "name": "Australia", + "code": "au" + }, + { + "flag": "๐Ÿ‡ฆ๐Ÿ‡น", + "name": "Austria", + "code": "at" + }, + { + "flag": "๐Ÿ‡ฆ๐Ÿ‡ฟ", + "name": "Azerbaijan", + "code": "az" + }, + { + "flag": "๐Ÿ‡ง๐Ÿ‡ธ", + "name": "Bahamas", + "code": "bs" + }, + { + "flag": "๐Ÿ‡ง๐Ÿ‡ญ", + "name": "Bahrain", + "code": "bh" + }, + { + "flag": "๐Ÿ‡ง๐Ÿ‡ฉ", + "name": "Bangladesh", + "code": "bd" + }, + { + "flag": "๐Ÿ‡ง๐Ÿ‡ง", + "name": "Barbados", + "code": "bb" + }, + { + "flag": "๐Ÿ‡ง๐Ÿ‡พ", + "name": "Belarus", + "code": "by" + }, + { + "flag": "๐Ÿ‡ง๐Ÿ‡ช", + "name": "Belgium", + "code": "be" + }, + { + "flag": "๐Ÿ‡ง๐Ÿ‡ฏ", + "name": "Benin", + "code": "bj" + }, + { + "flag": "๐Ÿ‡ง๐Ÿ‡น", + "name": "Bhutan", + "code": "bt" + }, + { + "flag": "๐Ÿ‡ง๐Ÿ‡ด", + "name": "Bolivia", + "code": "bo" + }, + { + "flag": "๐Ÿ‡ง๐Ÿ‡ฆ", + "name": "Bosnia", + "code": "ba" + }, + { + "flag": "๐Ÿ‡ง๐Ÿ‡ผ", + "name": "Botswana", + "code": "bw" + }, + { + "flag": "๐Ÿ‡ง๐Ÿ‡ท", + "name": "Brazil", + "code": "br" + }, + { + "flag": "๐Ÿ‡ง๐Ÿ‡ณ", + "name": "Brunei", + "code": "bn" + }, + { + "flag": "๐Ÿ‡ง๐Ÿ‡ฌ", + "name": "Bulgaria", + "code": "bg" + }, + { + "flag": "๐Ÿ‡ง๐Ÿ‡ซ", + "name": "Burkina Faso", + "code": "bf" + }, + { + "flag": "๐Ÿ‡ง๐Ÿ‡ฎ", + "name": "Burundi", + "code": "bi" + }, + { + "flag": "๐Ÿ‡ฐ๐Ÿ‡ญ", + "name": "Cambodia", + "code": "kh" + }, + { + "flag": "๐Ÿ‡จ๐Ÿ‡ฒ", + "name": "Cameroon", + "code": "cm" + }, + { + "flag": "๐Ÿ‡จ๐Ÿ‡ฆ", + "name": "Canada", + "code": "ca" + }, + { + "flag": "๐Ÿ‡จ๐Ÿ‡ป", + "name": "Cape Verde", + "code": "cv" + }, + { + "flag": "๐Ÿ‡จ๐Ÿ‡ซ", + "name": "Central African Republic", + "code": "cf" + }, + { + "flag": "๐Ÿ‡น๐Ÿ‡ฉ", + "name": "Chad", + "code": "td" + }, + { + "flag": "๐Ÿ‡จ๐Ÿ‡ฑ", + "name": "Chile", + "code": "cl" + }, + { + "flag": "๐Ÿ‡จ๐Ÿ‡ณ", + "name": "China", + "code": "cn" + }, + { + "flag": "๐Ÿ‡จ๐Ÿ‡ด", + "name": "Colombia", + "code": "co" + }, + { + "flag": "๐Ÿ‡ฐ๐Ÿ‡ฒ", + "name": "Comoros", + "code": "km" + }, + { + "flag": "๐Ÿ‡จ๐Ÿ‡ฌ", + "name": "Congo - Brazzaville", + "code": "cg" + }, + { + "flag": "๐Ÿ‡จ๐Ÿ‡ฉ", + "name": "Congo - Kinshasa", + "code": "cd" + }, + { + "flag": "๐Ÿ‡จ๐Ÿ‡ฐ", + "name": "Cook Islands", + "code": "ck" + }, + { + "flag": "๐Ÿ‡จ๐Ÿ‡ท", + "name": "Costa Rica", + "code": "cr" + }, + { + "flag": "๐Ÿ‡ญ๐Ÿ‡ท", + "name": "Croatia", + "code": "hr" + }, + { + "flag": "๐Ÿ‡จ๐Ÿ‡บ", + "name": "Cuba", + "code": "cu" + }, + { + "flag": "๐Ÿ‡จ๐Ÿ‡ผ", + "name": "Curaรงao", + "code": "cw" + }, + { + "flag": "๐Ÿ‡จ๐Ÿ‡พ", + "name": "Cyprus", + "code": "cy" + }, + { + "flag": "๐Ÿ‡จ๐Ÿ‡ฟ", + "name": "Czechia", + "code": "cz" + }, + { + "flag": "๐Ÿ‡จ๐Ÿ‡ฎ", + "name": "Cรดte dโ€™Ivoire", + "code": "ci" + }, + { + "flag": "๐Ÿ‡ฉ๐Ÿ‡ฐ", + "name": "Denmark", + "code": "dk" + }, + { + "flag": "๐Ÿ‡ฉ๐Ÿ‡ฏ", + "name": "Djibouti", + "code": "dj" + }, + { + "flag": "๐Ÿ‡ฉ๐Ÿ‡ด", + "name": "Dominican Republic", + "code": "do" + }, + { + "flag": "๐Ÿ‡ช๐Ÿ‡จ", + "name": "Ecuador", + "code": "ec" + }, + { + "flag": "๐Ÿ‡ช๐Ÿ‡ฌ", + "name": "Egypt", + "code": "eg" + }, + { + "flag": "๐Ÿ‡ธ๐Ÿ‡ป", + "name": "El Salvador", + "code": "sv" + }, + { + "flag": "๐Ÿ‡ฌ๐Ÿ‡ถ", + "name": "Equatorial Guinea", + "code": "gq" + }, + { + "flag": "๐Ÿ‡ช๐Ÿ‡ท", + "name": "Eritrea", + "code": "er" + }, + { + "flag": "๐Ÿ‡ช๐Ÿ‡ช", + "name": "Estonia", + "code": "ee" + }, + { + "flag": "๐Ÿ‡ธ๐Ÿ‡ฟ", + "name": "Eswatini", + "code": "sz" + }, + { + "flag": "๐Ÿ‡ช๐Ÿ‡น", + "name": "Ethiopia", + "code": "et" + }, + { + "flag": "๐Ÿ‡ซ๐Ÿ‡ด", + "name": "Faroe Islands", + "code": "fo" + }, + { + "flag": "๐Ÿ‡ซ๐Ÿ‡ฏ", + "name": "Fiji", + "code": "fj" + }, + { + "flag": "๐Ÿ‡ซ๐Ÿ‡ฎ", + "name": "Finland", + "code": "fi" + }, + { + "flag": "๐Ÿ‡ซ๐Ÿ‡ท", + "name": "France", + "code": "fr" + }, + { + "flag": "๐Ÿ‡ฌ๐Ÿ‡ซ", + "name": "French Guiana", + "code": "gf" + }, + { + "flag": "๐Ÿ‡ต๐Ÿ‡ซ", + "name": "French Polynesia", + "code": "pf" + }, + { + "flag": "๐Ÿ‡น๐Ÿ‡ซ", + "name": "French Southern Territories", + "code": "tf" + }, + { + "flag": "๐Ÿ‡ฌ๐Ÿ‡ฆ", + "name": "Gabon", + "code": "ga" + }, + { + "flag": "๐Ÿ‡ฌ๐Ÿ‡ฒ", + "name": "Gambia", + "code": "gm" + }, + { + "flag": "๐Ÿ‡ฌ๐Ÿ‡ช", + "name": "Georgia", + "code": "ge" + }, + { + "flag": "๐Ÿ‡ฉ๐Ÿ‡ช", + "name": "Germany", + "code": "de" + }, + { + "flag": "๐Ÿ‡ฌ๐Ÿ‡ญ", + "name": "Ghana", + "code": "gh" + }, + { + "flag": "๐Ÿ‡ฌ๐Ÿ‡ท", + "name": "Greece", + "code": "gr" + }, + { + "flag": "๐Ÿ‡ฌ๐Ÿ‡ต", + "name": "Guadeloupe", + "code": "gp" + }, + { + "flag": "๐Ÿ‡ฌ๐Ÿ‡บ", + "name": "Guam", + "code": "gu" + }, + { + "flag": "๐Ÿ‡ฌ๐Ÿ‡น", + "name": "Guatemala", + "code": "gt" + }, + { + "flag": "๐Ÿ‡ฌ๐Ÿ‡ณ", + "name": "Guinea", + "code": "gn" + }, + { + "flag": "๐Ÿ‡ฌ๐Ÿ‡ผ", + "name": "Guinea-Bissau", + "code": "gw" + }, + { + "flag": "๐Ÿ‡ญ๐Ÿ‡น", + "name": "Haiti", + "code": "ht" + }, + { + "flag": "๐Ÿ‡ญ๐Ÿ‡ณ", + "name": "Honduras", + "code": "hn" + }, + { + "flag": "๐Ÿ‡ญ๐Ÿ‡ฐ", + "name": "Hong Kong", + "code": "hk" + }, + { + "flag": "๐Ÿ‡ญ๐Ÿ‡บ", + "name": "Hungary", + "code": "hu" + }, + { + "flag": "๐Ÿ‡ฎ๐Ÿ‡ธ", + "name": "Iceland", + "code": "is" + }, + { + "flag": "๐Ÿ‡ฎ๐Ÿ‡ณ", + "name": "India", + "code": "in" + }, + { + "flag": "๐Ÿ‡ฎ๐Ÿ‡ฉ", + "name": "Indonesia", + "code": "id" + }, + { + "flag": "๐Ÿ‡ฎ๐Ÿ‡ท", + "name": "Iran", + "code": "ir" + }, + { + "flag": "๐Ÿ‡ฎ๐Ÿ‡ถ", + "name": "Iraq", + "code": "iq" + }, + { + "flag": "๐Ÿ‡ฎ๐Ÿ‡ช", + "name": "Ireland", + "code": "ie" + }, + { + "flag": "๐Ÿ‡ฎ๐Ÿ‡ฑ", + "name": "Israel", + "code": "il" + }, + { + "flag": "๐Ÿ‡ฎ๐Ÿ‡น", + "name": "Italy", + "code": "it" + }, + { + "flag": "๐Ÿ‡ฏ๐Ÿ‡ฒ", + "name": "Jamaica", + "code": "jm" + }, + { + "flag": "๐Ÿ‡ฏ๐Ÿ‡ต", + "name": "Japan", + "code": "jp" + }, + { + "flag": "๐Ÿ‡ฏ๐Ÿ‡ด", + "name": "Jordan", + "code": "jo" + }, + { + "flag": "๐Ÿ‡ฐ๐Ÿ‡ฟ", + "name": "Kazakhstan", + "code": "kz" + }, + { + "flag": "๐Ÿ‡ฐ๐Ÿ‡ช", + "name": "Kenya", + "code": "ke" + }, + { + "flag": "๐Ÿ‡ฐ๐Ÿ‡ฎ", + "name": "Kiribati", + "code": "ki" + }, + { + "flag": "๐Ÿ‡ฝ๐Ÿ‡ฐ", + "name": "Kosovo", + "code": "xk" + }, + { + "flag": "๐Ÿ‡ฐ๐Ÿ‡ผ", + "name": "Kuwait", + "code": "kw" + }, + { + "flag": "๐Ÿ‡ฐ๐Ÿ‡ฌ", + "name": "Kyrgyzstan", + "code": "kg" + }, + { + "flag": "๐Ÿ‡ฑ๐Ÿ‡ฆ", + "name": "Laos", + "code": "la" + }, + { + "flag": "๐Ÿ‡ฑ๐Ÿ‡ป", + "name": "Latvia", + "code": "lv" + }, + { + "flag": "๐Ÿ‡ฑ๐Ÿ‡ง", + "name": "Lebanon", + "code": "lb" + }, + { + "flag": "๐Ÿ‡ฑ๐Ÿ‡ธ", + "name": "Lesotho", + "code": "ls" + }, + { + "flag": "๐Ÿ‡ฑ๐Ÿ‡ท", + "name": "Liberia", + "code": "lr" + }, + { + "flag": "๐Ÿ‡ฑ๐Ÿ‡พ", + "name": "Libya", + "code": "ly" + }, + { + "flag": "๐Ÿ‡ฑ๐Ÿ‡ฎ", + "name": "Liechtenstein", + "code": "li" + }, + { + "flag": "๐Ÿ‡ฑ๐Ÿ‡น", + "name": "Lithuania", + "code": "lt" + }, + { + "flag": "๐Ÿ‡ฑ๐Ÿ‡บ", + "name": "Luxembourg", + "code": "lu" + }, + { + "flag": "๐Ÿ‡ฒ๐Ÿ‡ด", + "name": "Macao", + "code": "mo" + }, + { + "flag": "๐Ÿ‡ฒ๐Ÿ‡ฌ", + "name": "Madagascar", + "code": "mg" + }, + { + "flag": "๐Ÿ‡ฒ๐Ÿ‡ผ", + "name": "Malawi", + "code": "mw" + }, + { + "flag": "๐Ÿ‡ฒ๐Ÿ‡พ", + "name": "Malaysia", + "code": "my" + }, + { + "flag": "๐Ÿ‡ฒ๐Ÿ‡ป", + "name": "Maldives", + "code": "mv" + }, + { + "flag": "๐Ÿ‡ฒ๐Ÿ‡ฑ", + "name": "Mali", + "code": "ml" + }, + { + "flag": "๐Ÿ‡ฒ๐Ÿ‡น", + "name": "Malta", + "code": "mt" + }, + { + "flag": "๐Ÿ‡ฒ๐Ÿ‡ญ", + "name": "Marshall Islands", + "code": "mh" + }, + { + "flag": "๐Ÿ‡ฒ๐Ÿ‡ถ", + "name": "Martinique", + "code": "mq" + }, + { + "flag": "๐Ÿ‡ฒ๐Ÿ‡ท", + "name": "Mauritania", + "code": "mr" + }, + { + "flag": "๐Ÿ‡ฒ๐Ÿ‡บ", + "name": "Mauritius", + "code": "mu" + }, + { + "flag": "๐Ÿ‡พ๐Ÿ‡น", + "name": "Mayotte", + "code": "yt" + }, + { + "flag": "๐Ÿ‡ฒ๐Ÿ‡ฝ", + "name": "Mexico", + "code": "mx" + }, + { + "flag": "๐Ÿ‡ซ๐Ÿ‡ฒ", + "name": "Micronesia", + "code": "fm" + }, + { + "flag": "๐Ÿ‡ฒ๐Ÿ‡ฉ", + "name": "Moldova", + "code": "md" + }, + { + "flag": "๐Ÿ‡ฒ๐Ÿ‡จ", + "name": "Monaco", + "code": "mc" + }, + { + "flag": "๐Ÿ‡ฒ๐Ÿ‡ณ", + "name": "Mongolia", + "code": "mn" + }, + { + "flag": "๐Ÿ‡ฒ๐Ÿ‡ช", + "name": "Montenegro", + "code": "me" + }, + { + "flag": "๐Ÿ‡ฒ๐Ÿ‡ฆ", + "name": "Morocco", + "code": "ma" + }, + { + "flag": "๐Ÿ‡ฒ๐Ÿ‡ฟ", + "name": "Mozambique", + "code": "mz" + }, + { + "flag": "๐Ÿ‡ฒ๐Ÿ‡ฒ", + "name": "Myanmar", + "code": "mm" + }, + { + "flag": "๐Ÿ‡ณ๐Ÿ‡ฆ", + "name": "Namibia", + "code": "na" + }, + { + "flag": "๐Ÿ‡ณ๐Ÿ‡ท", + "name": "Nauru", + "code": "nr" + }, + { + "flag": "๐Ÿ‡ณ๐Ÿ‡ต", + "name": "Nepal", + "code": "np" + }, + { + "flag": "๐Ÿ‡ณ๐Ÿ‡ฑ", + "name": "Netherlands", + "code": "nl" + }, + { + "flag": "๐Ÿ‡ณ๐Ÿ‡จ", + "name": "New Caledonia", + "code": "nc" + }, + { + "flag": "๐Ÿ‡ณ๐Ÿ‡ฟ", + "name": "New Zealand", + "code": "nz" + }, + { + "flag": "๐Ÿ‡ณ๐Ÿ‡ฎ", + "name": "Nicaragua", + "code": "ni" + }, + { + "flag": "๐Ÿ‡ณ๐Ÿ‡ช", + "name": "Niger", + "code": "ne" + }, + { + "flag": "๐Ÿ‡ณ๐Ÿ‡ฌ", + "name": "Nigeria", + "code": "ng" + }, + { + "flag": "๐Ÿ‡ณ๐Ÿ‡บ", + "name": "Niue", + "code": "nu" + }, + { + "flag": "๐Ÿ‡ณ๐Ÿ‡ซ", + "name": "Norfolk Island", + "code": "nf" + }, + { + "flag": "๐Ÿ‡ฐ๐Ÿ‡ต", + "name": "North Korea", + "code": "kp" + }, + { + "flag": "๐Ÿ‡ฒ๐Ÿ‡ฐ", + "name": "North Macedonia", + "code": "mk" + }, + { + "flag": "๐Ÿ‡ฒ๐Ÿ‡ต", + "name": "Northern Mariana Islands", + "code": "mp" + }, + { + "flag": "๐Ÿ‡ณ๐Ÿ‡ด", + "name": "Norway", + "code": "no" + }, + { + "flag": "๐Ÿ‡ด๐Ÿ‡ฒ", + "name": "Oman", + "code": "om" + }, + { + "flag": "๐Ÿ‡ต๐Ÿ‡ฐ", + "name": "Pakistan", + "code": "pk" + }, + { + "flag": "๐Ÿ‡ต๐Ÿ‡ผ", + "name": "Palau", + "code": "pw" + }, + { + "flag": "๐Ÿ‡ต๐Ÿ‡ธ", + "name": "Palestine", + "code": "ps" + }, + { + "flag": "๐Ÿ‡ต๐Ÿ‡ฆ", + "name": "Panama", + "code": "pa" + }, + { + "flag": "๐Ÿ‡ต๐Ÿ‡ฌ", + "name": "Papua New Guinea", + "code": "pg" + }, + { + "flag": "๐Ÿ‡ต๐Ÿ‡พ", + "name": "Paraguay", + "code": "py" + }, + { + "flag": "๐Ÿ‡ต๐Ÿ‡ช", + "name": "Peru", + "code": "pe" + }, + { + "flag": "๐Ÿ‡ต๐Ÿ‡ญ", + "name": "Philippines", + "code": "ph" + }, + { + "flag": "๐Ÿ‡ต๐Ÿ‡ณ", + "name": "Pitcairn Islands", + "code": "pn" + }, + { + "flag": "๐Ÿ‡ต๐Ÿ‡ฑ", + "name": "Poland", + "code": "pl" + }, + { + "flag": "๐Ÿ‡ต๐Ÿ‡น", + "name": "Portugal", + "code": "pt" + }, + { + "flag": "๐Ÿ‡ต๐Ÿ‡ท", + "name": "Puerto Rico", + "code": "pr" + }, + { + "flag": "๐Ÿ‡ถ๐Ÿ‡ฆ", + "name": "Qatar", + "code": "qa" + }, + { + "flag": "๐Ÿ‡ท๐Ÿ‡ด", + "name": "Romania", + "code": "ro" + }, + { + "flag": "๐Ÿ‡ท๐Ÿ‡บ", + "name": "Russia", + "code": "ru" + }, + { + "flag": "๐Ÿ‡ท๐Ÿ‡ผ", + "name": "Rwanda", + "code": "rw" + }, + { + "flag": "๐Ÿ‡ท๐Ÿ‡ช", + "name": "Rรฉunion", + "code": "re" + }, + { + "flag": "๐Ÿ‡ผ๐Ÿ‡ธ", + "name": "Samoa", + "code": "ws" + }, + { + "flag": "๐Ÿ‡ธ๐Ÿ‡ฒ", + "name": "San Marino", + "code": "sm" + }, + { + "flag": "๐Ÿ‡ธ๐Ÿ‡ฆ", + "name": "Saudi Arabia", + "code": "sa" + }, + { + "flag": "๐Ÿ‡ธ๐Ÿ‡ณ", + "name": "Senegal", + "code": "sn" + }, + { + "flag": "๐Ÿ‡ท๐Ÿ‡ธ", + "name": "Serbia", + "code": "rs" + }, + { + "flag": "๐Ÿ‡ธ๐Ÿ‡จ", + "name": "Seychelles", + "code": "sc" + }, + { + "flag": "๐Ÿ‡ธ๐Ÿ‡ฑ", + "name": "Sierra Leone", + "code": "sl" + }, + { + "flag": "๐Ÿ‡ธ๐Ÿ‡ฌ", + "name": "Singapore", + "code": "sg" + }, + { + "flag": "๐Ÿ‡ธ๐Ÿ‡ฐ", + "name": "Slovakia", + "code": "sk" + }, + { + "flag": "๐Ÿ‡ธ๐Ÿ‡ฎ", + "name": "Slovenia", + "code": "si" + }, + { + "flag": "๐Ÿ‡ธ๐Ÿ‡ง", + "name": "Solomon Islands", + "code": "sb" + }, + { + "flag": "๐Ÿ‡ธ๐Ÿ‡ด", + "name": "Somalia", + "code": "so" + }, + { + "flag": "๐Ÿ‡ฟ๐Ÿ‡ฆ", + "name": "South Africa", + "code": "za" + }, + { + "flag": "๐Ÿ‡ฐ๐Ÿ‡ท", + "name": "South Korea", + "code": "kr" + }, + { + "flag": "๐Ÿ‡ธ๐Ÿ‡ธ", + "name": "South Sudan", + "code": "ss" + }, + { + "flag": "๐Ÿ‡ช๐Ÿ‡ธ", + "name": "Spain", + "code": "es" + }, + { + "flag": "๐Ÿ‡ฑ๐Ÿ‡ฐ", + "name": "Sri Lanka", + "code": "lk" + }, + { + "flag": "๐Ÿ‡ง๐Ÿ‡ฑ", + "name": "St. Barthรฉlemy", + "code": "bl" + }, + { + "flag": "๐Ÿ‡ธ๐Ÿ‡ญ", + "name": "St. Helena", + "code": "sh" + }, + { + "flag": "๐Ÿ‡ฒ๐Ÿ‡ซ", + "name": "St. Martin", + "code": "mf" + }, + { + "flag": "๐Ÿ‡ธ๐Ÿ‡ฉ", + "name": "Sudan", + "code": "sd" + }, + { + "flag": "๐Ÿ‡ธ๐Ÿ‡ช", + "name": "Sweden", + "code": "se" + }, + { + "flag": "๐Ÿ‡จ๐Ÿ‡ญ", + "name": "Switzerland", + "code": "ch" + }, + { + "flag": "๐Ÿ‡ธ๐Ÿ‡พ", + "name": "Syria", + "code": "sy" + }, + { + "flag": "๐Ÿ‡ธ๐Ÿ‡น", + "name": "Sรฃo Tomรฉ & Prรญncipe", + "code": "st" + }, + { + "flag": "๐Ÿ‡น๐Ÿ‡ผ", + "name": "Taiwan", + "code": "tw" + }, + { + "flag": "๐Ÿ‡น๐Ÿ‡ฏ", + "name": "Tajikistan", + "code": "tj" + }, + { + "flag": "๐Ÿ‡น๐Ÿ‡ฟ", + "name": "Tanzania", + "code": "tz" + }, + { + "flag": "๐Ÿ‡น๐Ÿ‡ญ", + "name": "Thailand", + "code": "th" + }, + { + "flag": "๐Ÿ‡น๐Ÿ‡ฑ", + "name": "Timor-Leste", + "code": "tl" + }, + { + "flag": "๐Ÿ‡น๐Ÿ‡ฌ", + "name": "Togo", + "code": "tg" + }, + { + "flag": "๐Ÿ‡น๐Ÿ‡ฐ", + "name": "Tokelau", + "code": "tk" + }, + { + "flag": "๐Ÿ‡น๐Ÿ‡ด", + "name": "Tonga", + "code": "to" + }, + { + "flag": "๐Ÿ‡น๐Ÿ‡น", + "name": "Trinidad & Tobago", + "code": "tt" + }, + { + "flag": "๐Ÿ‡น๐Ÿ‡ณ", + "name": "Tunisia", + "code": "tn" + }, + { + "flag": "๐Ÿ‡น๐Ÿ‡ท", + "name": "Turkey", + "code": "tr" + }, + { + "flag": "๐Ÿ‡น๐Ÿ‡ฒ", + "name": "Turkmenistan", + "code": "tm" + }, + { + "flag": "๐Ÿ‡น๐Ÿ‡ป", + "name": "Tuvalu", + "code": "tv" + }, + { + "flag": "๐Ÿ‡ป๐Ÿ‡ฎ", + "name": "U.S. Virgin Islands", + "code": "vi" + }, + { + "flag": "๐Ÿ‡บ๐Ÿ‡ฌ", + "name": "Uganda", + "code": "ug" + }, + { + "flag": "๐Ÿ‡บ๐Ÿ‡ฆ", + "name": "Ukraine", + "code": "ua" + }, + { + "flag": "๐Ÿ‡ฆ๐Ÿ‡ช", + "name": "United Arab Emirates", + "code": "ae" + }, + { + "flag": "๐Ÿ‡ฌ๐Ÿ‡ง", + "name": "United Kingdom", + "code": "uk" + }, + { + "flag": "๐Ÿ‡บ๐Ÿ‡ธ", + "name": "United States", + "code": "us" + }, + { + "flag": "๐Ÿ‡บ๐Ÿ‡พ", + "name": "Uruguay", + "code": "uy" + }, + { + "flag": "๐Ÿ‡บ๐Ÿ‡ฟ", + "name": "Uzbekistan", + "code": "uz" + }, + { + "flag": "๐Ÿ‡ป๐Ÿ‡บ", + "name": "Vanuatu", + "code": "vu" + }, + { + "flag": "๐Ÿ‡ป๐Ÿ‡ฆ", + "name": "Vatican City", + "code": "va" + }, + { + "flag": "๐Ÿ‡ป๐Ÿ‡ช", + "name": "Venezuela", + "code": "ve" + }, + { + "flag": "๐Ÿ‡ป๐Ÿ‡ณ", + "name": "Vietnam", + "code": "vn" + }, + { + "flag": "๐Ÿ‡ผ๐Ÿ‡ซ", + "name": "Wallis & Futuna", + "code": "wf" + }, + { + "flag": "๐Ÿ‡ช๐Ÿ‡ญ", + "name": "Western Sahara", + "code": "eh" + }, + { + "flag": "๐Ÿ‡พ๐Ÿ‡ช", + "name": "Yemen", + "code": "ye" + }, + { + "flag": "๐Ÿ‡ฟ๐Ÿ‡ฒ", + "name": "Zambia", + "code": "zm" + }, + { + "flag": "๐Ÿ‡ฟ๐Ÿ‡ผ", + "name": "Zimbabwe", + "code": "zw" + } +] From e9d7ddf4ffac1c7f82429dea3c49f7dec1d82ed7 Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Wed, 8 Sep 2021 21:31:14 +0300 Subject: [PATCH 12/26] Delete index.m3u --- index.m3u | 323 ------------------------------------------------------ 1 file changed, 323 deletions(-) delete mode 100644 index.m3u diff --git a/index.m3u b/index.m3u deleted file mode 100644 index 714c18671..000000000 --- a/index.m3u +++ /dev/null @@ -1,323 +0,0 @@ -#EXTM3U -#EXTINF:-1,Afghanistan -channels/af.m3u -#EXTINF:-1,Albania -channels/al.m3u -#EXTINF:-1,Algeria -channels/dz.m3u -#EXTINF:-1,Andorra -channels/ad.m3u -#EXTINF:-1,Angola -channels/ao.m3u -#EXTINF:-1,Antigua and Barbuda -channels/ag.m3u -#EXTINF:-1,Argentina -channels/ar.m3u -#EXTINF:-1,Armenia -channels/am.m3u -#EXTINF:-1,Aruba -channels/aw.m3u -#EXTINF:-1,Australia -channels/au.m3u -#EXTINF:-1,Austria -channels/at.m3u -#EXTINF:-1,Azerbaijan -channels/az.m3u -#EXTINF:-1,Bahamas -channels/bs.m3u -#EXTINF:-1,Bahrain -channels/bh.m3u -#EXTINF:-1,Bangladesh -channels/bd.m3u -#EXTINF:-1,Barbados -channels/bb.m3u -#EXTINF:-1,Belarus -channels/by.m3u -#EXTINF:-1,Belgium -channels/be.m3u -#EXTINF:-1,Bolivia -channels/bo.m3u -#EXTINF:-1,Bosnia and Herzegovina -channels/ba.m3u -#EXTINF:-1,Brazil -channels/br.m3u -#EXTINF:-1,Brunei -channels/bn.m3u -#EXTINF:-1,Bulgaria -channels/bg.m3u -#EXTINF:-1,Burkina Faso -channels/bf.m3u -#EXTINF:-1,Cambodia -channels/kh.m3u -#EXTINF:-1,Cameroon -channels/cm.m3u -#EXTINF:-1,Canada -channels/ca.m3u -#EXTINF:-1,Chile -channels/cl.m3u -#EXTINF:-1,China -channels/cn.m3u -#EXTINF:-1,Colombia -channels/co.m3u -#EXTINF:-1,Costa Rica -channels/cr.m3u -#EXTINF:-1,Croatia -channels/hr.m3u -#EXTINF:-1,Cuba -channels/cu.m3u -#EXTINF:-1,Curaรงao -channels/cw.m3u -#EXTINF:-1,Cyprus -channels/cy.m3u -#EXTINF:-1,Czech Republic -channels/cz.m3u -#EXTINF:-1,Democratic Republic of the Congo -channels/cd.m3u -#EXTINF:-1,Republic of the Congo -channels/cg.m3u -#EXTINF:-1,Denmark -channels/dk.m3u -#EXTINF:-1,Dominican Republic -channels/do.m3u -#EXTINF:-1,Ecuador -channels/ec.m3u -#EXTINF:-1,Egypt -channels/eg.m3u -#EXTINF:-1,El Salvador -channels/sv.m3u -#EXTINF:-1,Equatorial Guinea -channels/gq.m3u -#EXTINF:-1,Estonia -channels/ee.m3u -#EXTINF:-1,Ethiopia -channels/et.m3u -#EXTINF:-1,Faroe Islands -channels/fo.m3u -#EXTINF:-1,Finland -channels/fi.m3u -#EXTINF:-1,Fiji -channels/fj.m3u -#EXTINF:-1,France -channels/fr.m3u -#EXTINF:-1,French Polynesia -channels/pf.m3u -#EXTINF:-1,Gambia -channels/gm.m3u -#EXTINF:-1,Georgia -channels/ge.m3u -#EXTINF:-1,Germany -channels/de.m3u -#EXTINF:-1,Ghana -channels/gh.m3u -#EXTINF:-1,Greece -channels/gr.m3u -#EXTINF:-1,Guadeloupe -channels/gp.m3u -#EXTINF:-1,Guatemala -channels/gt.m3u -#EXTINF:-1,Guinea -channels/gn.m3u -#EXTINF:-1,Haiti -channels/ht.m3u -#EXTINF:-1,Honduras -channels/hn.m3u -#EXTINF:-1,Hong Kong -channels/hk.m3u -#EXTINF:-1,Hungary -channels/hu.m3u -#EXTINF:-1,Iceland -channels/is.m3u -#EXTINF:-1,India -channels/in.m3u -#EXTINF:-1,Indonesia -channels/id.m3u -#EXTINF:-1,Iran -channels/ir.m3u -#EXTINF:-1,Iraq -channels/iq.m3u -#EXTINF:-1,Ireland -channels/ie.m3u -#EXTINF:-1,Israel -channels/il.m3u -#EXTINF:-1,Italy -channels/it.m3u -#EXTINF:-1,Ivory Coast -channels/ci.m3u -#EXTINF:-1,Jamaica -channels/jm.m3u -#EXTINF:-1,Japan -channels/jp.m3u -#EXTINF:-1,Jordan -channels/jo.m3u -#EXTINF:-1,Kazakhstan -channels/kz.m3u -#EXTINF:-1,Kenya -channels/ke.m3u -#EXTINF:-1,Kosovo -channels/xk.m3u -#EXTINF:-1,Kuwait -channels/kw.m3u -#EXTINF:-1,Kyrgyzstan -channels/kg.m3u -#EXTINF:-1,Laos -channels/la.m3u -#EXTINF:-1,Latvia -channels/lv.m3u -#EXTINF:-1,Lebanon -channels/lb.m3u -#EXTINF:-1,Libya -channels/ly.m3u -#EXTINF:-1,Liechtenstein -channels/li.m3u -#EXTINF:-1,Lithuania -channels/lt.m3u -#EXTINF:-1,Luxembourg -channels/lu.m3u -#EXTINF:-1,Macau -channels/mo.m3u -#EXTINF:-1,Malaysia -channels/my.m3u -#EXTINF:-1,Maldives -channels/mv.m3u -#EXTINF:-1,Mali -channels/ml.m3u -#EXTINF:-1,Malta -channels/mt.m3u -#EXTINF:-1,Mexico -channels/mx.m3u -#EXTINF:-1,Moldova -channels/md.m3u -#EXTINF:-1,Monaco -channels/mc.m3u -#EXTINF:-1,Mongolia -channels/mn.m3u -#EXTINF:-1,Montenegro -channels/me.m3u -#EXTINF:-1,Morocco -channels/ma.m3u -#EXTINF:-1,Mozambique -channels/mz.m3u -#EXTINF:-1,Myanmar -channels/mm.m3u -#EXTINF:-1,Nepal -channels/np.m3u -#EXTINF:-1,Netherlands -channels/nl.m3u -#EXTINF:-1,New Zealand -channels/nz.m3u -#EXTINF:-1,Nicaragua -channels/ni.m3u -#EXTINF:-1,Niger -channels/ne.m3u -#EXTINF:-1,Nigeria -channels/ng.m3u -#EXTINF:-1,North Korea -channels/kp.m3u -#EXTINF:-1,North Macedonia -channels/mk.m3u -#EXTINF:-1,Norway -channels/no.m3u -#EXTINF:-1,Oman -channels/om.m3u -#EXTINF:-1,Pakistan -channels/pk.m3u -#EXTINF:-1,Palestine -channels/ps.m3u -#EXTINF:-1,Panama -channels/pa.m3u -#EXTINF:-1,Paraguay -channels/py.m3u -#EXTINF:-1,Peru -channels/pe.m3u -#EXTINF:-1,Philippines -channels/ph.m3u -#EXTINF:-1,Poland -channels/pl.m3u -#EXTINF:-1,Portugal -channels/pt.m3u -#EXTINF:-1,Puerto Rico -channels/pr.m3u -#EXTINF:-1,Qatar -channels/qa.m3u -#EXTINF:-1,Romania -channels/ro.m3u -#EXTINF:-1,Russia -channels/ru.m3u -#EXTINF:-1,Rwanda -channels/rw.m3u -#EXTINF:-1,San Marino -channels/sm.m3u -#EXTINF:-1,Saudi Arabia -channels/sa.m3u -#EXTINF:-1,Senegal -channels/sn.m3u -#EXTINF:-1,Serbia -channels/rs.m3u -#EXTINF:-1,Sierra Leone -channels/sl.m3u -#EXTINF:-1,Singapore -channels/sg.m3u -#EXTINF:-1,Slovakia -channels/sk.m3u -#EXTINF:-1,Slovenia -channels/si.m3u -#EXTINF:-1,Somalia -channels/so.m3u -#EXTINF:-1,South Korea -channels/kr.m3u -#EXTINF:-1,Spain -channels/es.m3u -#EXTINF:-1,Sri Lanka -channels/lk.m3u -#EXTINF:-1,Sudan -channels/sd.m3u -#EXTINF:-1,Sweden -channels/se.m3u -#EXTINF:-1,Switzerland -channels/ch.m3u -#EXTINF:-1,Syria -channels/sy.m3u -#EXTINF:-1,Taiwan -channels/tw.m3u -#EXTINF:-1,Tajikistan -channels/tj.m3u -#EXTINF:-1,Tanzania -channels/tz.m3u -#EXTINF:-1,Thailand -channels/th.m3u -#EXTINF:-1,Trinidad and Tobago -channels/tt.m3u -#EXTINF:-1,Tunisia -channels/tn.m3u -#EXTINF:-1,Turkey -channels/tr.m3u -#EXTINF:-1,Turkmenistan -channels/tm.m3u -#EXTINF:-1,Uganda -channels/ug.m3u -#EXTINF:-1,Ukraine -channels/ua.m3u -#EXTINF:-1,United Arab Emirates -channels/ae.m3u -#EXTINF:-1,United Kingdom -channels/uk.m3u -#EXTINF:-1,United States -channels/us.m3u -#EXTINF:-1,Uruguay -channels/uy.m3u -#EXTINF:-1,Uzbekistan -channels/uz.m3u -#EXTINF:-1,Vatican City -channels/va.m3u -#EXTINF:-1,Venezuela -channels/ve.m3u -#EXTINF:-1,Vietnam -channels/vn.m3u -#EXTINF:-1,Virgin Islands of the United States -channels/vi.m3u -#EXTINF:-1,Yemen -channels/ye.m3u -#EXTINF:-1,Zambia -channels/zm.m3u -#EXTINF:-1,Unsorted -channels/unsorted.m3u From 88eec2024455544108f9428c7bfb71847bab96b9 Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Wed, 8 Sep 2021 21:32:32 +0300 Subject: [PATCH 13/26] Update db.js --- scripts/helpers/db.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/scripts/helpers/db.js b/scripts/helpers/db.js index 3354071c3..859a41576 100644 --- a/scripts/helpers/db.js +++ b/scripts/helpers/db.js @@ -1,13 +1,14 @@ const categories = require('../data/categories') const parser = require('./parser') const utils = require('./utils') +const file = require('./file') const db = {} db.load = async function () { - const items = parser.parseIndex() - for (const item of items) { - const playlist = await parser.parsePlaylist(item.url) + let files = await file.list() + for (const file of files) { + const playlist = await parser.parsePlaylist(file) db.playlists.add(playlist) for (const channel of playlist.channels) { db.channels.add(channel) From 39ab38d277eeacd17a77fb284c19d1a1e3040918 Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Wed, 8 Sep 2021 21:33:50 +0300 Subject: [PATCH 14/26] Update parser.js --- scripts/helpers/parser.js | 7 ------- 1 file changed, 7 deletions(-) diff --git a/scripts/helpers/parser.js b/scripts/helpers/parser.js index 98f315c16..138af5907 100644 --- a/scripts/helpers/parser.js +++ b/scripts/helpers/parser.js @@ -5,13 +5,6 @@ const file = require('./file') const parser = {} -parser.parseIndex = function () { - const content = file.read('index.m3u') - const result = playlistParser.parse(content) - - return result.items -} - parser.parsePlaylist = async function (url) { const content = file.read(url) const result = playlistParser.parse(content) From 9734ea69909c093211641639fa4f57a85ae02e31 Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Wed, 8 Sep 2021 21:45:14 +0300 Subject: [PATCH 15/26] Delete countries.json --- scripts/data/countries.json | 1087 ----------------------------------- 1 file changed, 1087 deletions(-) delete mode 100644 scripts/data/countries.json diff --git a/scripts/data/countries.json b/scripts/data/countries.json deleted file mode 100644 index 308b8a248..000000000 --- a/scripts/data/countries.json +++ /dev/null @@ -1,1087 +0,0 @@ -[ - { - "flag": "๐Ÿ‡ฆ๐Ÿ‡ซ", - "name": "Afghanistan", - "code": "af" - }, - { - "flag": "๐Ÿ‡ฆ๐Ÿ‡ฑ", - "name": "Albania", - "code": "al" - }, - { - "flag": "๐Ÿ‡ฉ๐Ÿ‡ฟ", - "name": "Algeria", - "code": "dz" - }, - { - "flag": "๐Ÿ‡ฆ๐Ÿ‡ธ", - "name": "American Samoa", - "code": "as" - }, - { - "flag": "๐Ÿ‡ฆ๐Ÿ‡ฉ", - "name": "Andorra", - "code": "ad" - }, - { - "flag": "๐Ÿ‡ฆ๐Ÿ‡ด", - "name": "Angola", - "code": "ao" - }, - { - "flag": "๐Ÿ‡ฆ๐Ÿ‡ฌ", - "name": "Antigua & Barbuda", - "code": "ag" - }, - { - "flag": "๐Ÿ‡ฆ๐Ÿ‡ท", - "name": "Argentina", - "code": "ar" - }, - { - "flag": "๐Ÿ‡ฆ๐Ÿ‡ฒ", - "name": "Armenia", - "code": "am" - }, - { - "flag": "๐Ÿ‡ฆ๐Ÿ‡ผ", - "name": "Aruba", - "code": "aw" - }, - { - "flag": "๐Ÿ‡ฆ๐Ÿ‡บ", - "name": "Australia", - "code": "au" - }, - { - "flag": "๐Ÿ‡ฆ๐Ÿ‡น", - "name": "Austria", - "code": "at" - }, - { - "flag": "๐Ÿ‡ฆ๐Ÿ‡ฟ", - "name": "Azerbaijan", - "code": "az" - }, - { - "flag": "๐Ÿ‡ง๐Ÿ‡ธ", - "name": "Bahamas", - "code": "bs" - }, - { - "flag": "๐Ÿ‡ง๐Ÿ‡ญ", - "name": "Bahrain", - "code": "bh" - }, - { - "flag": "๐Ÿ‡ง๐Ÿ‡ฉ", - "name": "Bangladesh", - "code": "bd" - }, - { - "flag": "๐Ÿ‡ง๐Ÿ‡ง", - "name": "Barbados", - "code": "bb" - }, - { - "flag": "๐Ÿ‡ง๐Ÿ‡พ", - "name": "Belarus", - "code": "by" - }, - { - "flag": "๐Ÿ‡ง๐Ÿ‡ช", - "name": "Belgium", - "code": "be" - }, - { - "flag": "๐Ÿ‡ง๐Ÿ‡ฏ", - "name": "Benin", - "code": "bj" - }, - { - "flag": "๐Ÿ‡ง๐Ÿ‡น", - "name": "Bhutan", - "code": "bt" - }, - { - "flag": "๐Ÿ‡ง๐Ÿ‡ด", - "name": "Bolivia", - "code": "bo" - }, - { - "flag": "๐Ÿ‡ง๐Ÿ‡ฆ", - "name": "Bosnia", - "code": "ba" - }, - { - "flag": "๐Ÿ‡ง๐Ÿ‡ผ", - "name": "Botswana", - "code": "bw" - }, - { - "flag": "๐Ÿ‡ง๐Ÿ‡ท", - "name": "Brazil", - "code": "br" - }, - { - "flag": "๐Ÿ‡ง๐Ÿ‡ณ", - "name": "Brunei", - "code": "bn" - }, - { - "flag": "๐Ÿ‡ง๐Ÿ‡ฌ", - "name": "Bulgaria", - "code": "bg" - }, - { - "flag": "๐Ÿ‡ง๐Ÿ‡ซ", - "name": "Burkina Faso", - "code": "bf" - }, - { - "flag": "๐Ÿ‡ง๐Ÿ‡ฎ", - "name": "Burundi", - "code": "bi" - }, - { - "flag": "๐Ÿ‡ฐ๐Ÿ‡ญ", - "name": "Cambodia", - "code": "kh" - }, - { - "flag": "๐Ÿ‡จ๐Ÿ‡ฒ", - "name": "Cameroon", - "code": "cm" - }, - { - "flag": "๐Ÿ‡จ๐Ÿ‡ฆ", - "name": "Canada", - "code": "ca" - }, - { - "flag": "๐Ÿ‡จ๐Ÿ‡ป", - "name": "Cape Verde", - "code": "cv" - }, - { - "flag": "๐Ÿ‡จ๐Ÿ‡ซ", - "name": "Central African Republic", - "code": "cf" - }, - { - "flag": "๐Ÿ‡น๐Ÿ‡ฉ", - "name": "Chad", - "code": "td" - }, - { - "flag": "๐Ÿ‡จ๐Ÿ‡ฑ", - "name": "Chile", - "code": "cl" - }, - { - "flag": "๐Ÿ‡จ๐Ÿ‡ณ", - "name": "China", - "code": "cn" - }, - { - "flag": "๐Ÿ‡จ๐Ÿ‡ด", - "name": "Colombia", - "code": "co" - }, - { - "flag": "๐Ÿ‡ฐ๐Ÿ‡ฒ", - "name": "Comoros", - "code": "km" - }, - { - "flag": "๐Ÿ‡จ๐Ÿ‡ฌ", - "name": "Congo - Brazzaville", - "code": "cg" - }, - { - "flag": "๐Ÿ‡จ๐Ÿ‡ฉ", - "name": "Congo - Kinshasa", - "code": "cd" - }, - { - "flag": "๐Ÿ‡จ๐Ÿ‡ฐ", - "name": "Cook Islands", - "code": "ck" - }, - { - "flag": "๐Ÿ‡จ๐Ÿ‡ท", - "name": "Costa Rica", - "code": "cr" - }, - { - "flag": "๐Ÿ‡ญ๐Ÿ‡ท", - "name": "Croatia", - "code": "hr" - }, - { - "flag": "๐Ÿ‡จ๐Ÿ‡บ", - "name": "Cuba", - "code": "cu" - }, - { - "flag": "๐Ÿ‡จ๐Ÿ‡ผ", - "name": "Curaรงao", - "code": "cw" - }, - { - "flag": "๐Ÿ‡จ๐Ÿ‡พ", - "name": "Cyprus", - "code": "cy" - }, - { - "flag": "๐Ÿ‡จ๐Ÿ‡ฟ", - "name": "Czechia", - "code": "cz" - }, - { - "flag": "๐Ÿ‡จ๐Ÿ‡ฎ", - "name": "Cรดte dโ€™Ivoire", - "code": "ci" - }, - { - "flag": "๐Ÿ‡ฉ๐Ÿ‡ฐ", - "name": "Denmark", - "code": "dk" - }, - { - "flag": "๐Ÿ‡ฉ๐Ÿ‡ฏ", - "name": "Djibouti", - "code": "dj" - }, - { - "flag": "๐Ÿ‡ฉ๐Ÿ‡ด", - "name": "Dominican Republic", - "code": "do" - }, - { - "flag": "๐Ÿ‡ช๐Ÿ‡จ", - "name": "Ecuador", - "code": "ec" - }, - { - "flag": "๐Ÿ‡ช๐Ÿ‡ฌ", - "name": "Egypt", - "code": "eg" - }, - { - "flag": "๐Ÿ‡ธ๐Ÿ‡ป", - "name": "El Salvador", - "code": "sv" - }, - { - "flag": "๐Ÿ‡ฌ๐Ÿ‡ถ", - "name": "Equatorial Guinea", - "code": "gq" - }, - { - "flag": "๐Ÿ‡ช๐Ÿ‡ท", - "name": "Eritrea", - "code": "er" - }, - { - "flag": "๐Ÿ‡ช๐Ÿ‡ช", - "name": "Estonia", - "code": "ee" - }, - { - "flag": "๐Ÿ‡ธ๐Ÿ‡ฟ", - "name": "Eswatini", - "code": "sz" - }, - { - "flag": "๐Ÿ‡ช๐Ÿ‡น", - "name": "Ethiopia", - "code": "et" - }, - { - "flag": "๐Ÿ‡ซ๐Ÿ‡ด", - "name": "Faroe Islands", - "code": "fo" - }, - { - "flag": "๐Ÿ‡ซ๐Ÿ‡ฏ", - "name": "Fiji", - "code": "fj" - }, - { - "flag": "๐Ÿ‡ซ๐Ÿ‡ฎ", - "name": "Finland", - "code": "fi" - }, - { - "flag": "๐Ÿ‡ซ๐Ÿ‡ท", - "name": "France", - "code": "fr" - }, - { - "flag": "๐Ÿ‡ฌ๐Ÿ‡ซ", - "name": "French Guiana", - "code": "gf" - }, - { - "flag": "๐Ÿ‡ต๐Ÿ‡ซ", - "name": "French Polynesia", - "code": "pf" - }, - { - "flag": "๐Ÿ‡น๐Ÿ‡ซ", - "name": "French Southern Territories", - "code": "tf" - }, - { - "flag": "๐Ÿ‡ฌ๐Ÿ‡ฆ", - "name": "Gabon", - "code": "ga" - }, - { - "flag": "๐Ÿ‡ฌ๐Ÿ‡ฒ", - "name": "Gambia", - "code": "gm" - }, - { - "flag": "๐Ÿ‡ฌ๐Ÿ‡ช", - "name": "Georgia", - "code": "ge" - }, - { - "flag": "๐Ÿ‡ฉ๐Ÿ‡ช", - "name": "Germany", - "code": "de" - }, - { - "flag": "๐Ÿ‡ฌ๐Ÿ‡ญ", - "name": "Ghana", - "code": "gh" - }, - { - "flag": "๐Ÿ‡ฌ๐Ÿ‡ท", - "name": "Greece", - "code": "gr" - }, - { - "flag": "๐Ÿ‡ฌ๐Ÿ‡ต", - "name": "Guadeloupe", - "code": "gp" - }, - { - "flag": "๐Ÿ‡ฌ๐Ÿ‡บ", - "name": "Guam", - "code": "gu" - }, - { - "flag": "๐Ÿ‡ฌ๐Ÿ‡น", - "name": "Guatemala", - "code": "gt" - }, - { - "flag": "๐Ÿ‡ฌ๐Ÿ‡ณ", - "name": "Guinea", - "code": "gn" - }, - { - "flag": "๐Ÿ‡ฌ๐Ÿ‡ผ", - "name": "Guinea-Bissau", - "code": "gw" - }, - { - "flag": "๐Ÿ‡ญ๐Ÿ‡น", - "name": "Haiti", - "code": "ht" - }, - { - "flag": "๐Ÿ‡ญ๐Ÿ‡ณ", - "name": "Honduras", - "code": "hn" - }, - { - "flag": "๐Ÿ‡ญ๐Ÿ‡ฐ", - "name": "Hong Kong", - "code": "hk" - }, - { - "flag": "๐Ÿ‡ญ๐Ÿ‡บ", - "name": "Hungary", - "code": "hu" - }, - { - "flag": "๐Ÿ‡ฎ๐Ÿ‡ธ", - "name": "Iceland", - "code": "is" - }, - { - "flag": "๐Ÿ‡ฎ๐Ÿ‡ณ", - "name": "India", - "code": "in" - }, - { - "flag": "๐Ÿ‡ฎ๐Ÿ‡ฉ", - "name": "Indonesia", - "code": "id" - }, - { - "flag": "๐Ÿ‡ฎ๐Ÿ‡ท", - "name": "Iran", - "code": "ir" - }, - { - "flag": "๐Ÿ‡ฎ๐Ÿ‡ถ", - "name": "Iraq", - "code": "iq" - }, - { - "flag": "๐Ÿ‡ฎ๐Ÿ‡ช", - "name": "Ireland", - "code": "ie" - }, - { - "flag": "๐Ÿ‡ฎ๐Ÿ‡ฑ", - "name": "Israel", - "code": "il" - }, - { - "flag": "๐Ÿ‡ฎ๐Ÿ‡น", - "name": "Italy", - "code": "it" - }, - { - "flag": "๐Ÿ‡ฏ๐Ÿ‡ฒ", - "name": "Jamaica", - "code": "jm" - }, - { - "flag": "๐Ÿ‡ฏ๐Ÿ‡ต", - "name": "Japan", - "code": "jp" - }, - { - "flag": "๐Ÿ‡ฏ๐Ÿ‡ด", - "name": "Jordan", - "code": "jo" - }, - { - "flag": "๐Ÿ‡ฐ๐Ÿ‡ฟ", - "name": "Kazakhstan", - "code": "kz" - }, - { - "flag": "๐Ÿ‡ฐ๐Ÿ‡ช", - "name": "Kenya", - "code": "ke" - }, - { - "flag": "๐Ÿ‡ฐ๐Ÿ‡ฎ", - "name": "Kiribati", - "code": "ki" - }, - { - "flag": "๐Ÿ‡ฝ๐Ÿ‡ฐ", - "name": "Kosovo", - "code": "xk" - }, - { - "flag": "๐Ÿ‡ฐ๐Ÿ‡ผ", - "name": "Kuwait", - "code": "kw" - }, - { - "flag": "๐Ÿ‡ฐ๐Ÿ‡ฌ", - "name": "Kyrgyzstan", - "code": "kg" - }, - { - "flag": "๐Ÿ‡ฑ๐Ÿ‡ฆ", - "name": "Laos", - "code": "la" - }, - { - "flag": "๐Ÿ‡ฑ๐Ÿ‡ป", - "name": "Latvia", - "code": "lv" - }, - { - "flag": "๐Ÿ‡ฑ๐Ÿ‡ง", - "name": "Lebanon", - "code": "lb" - }, - { - "flag": "๐Ÿ‡ฑ๐Ÿ‡ธ", - "name": "Lesotho", - "code": "ls" - }, - { - "flag": "๐Ÿ‡ฑ๐Ÿ‡ท", - "name": "Liberia", - "code": "lr" - }, - { - "flag": "๐Ÿ‡ฑ๐Ÿ‡พ", - "name": "Libya", - "code": "ly" - }, - { - "flag": "๐Ÿ‡ฑ๐Ÿ‡ฎ", - "name": "Liechtenstein", - "code": "li" - }, - { - "flag": "๐Ÿ‡ฑ๐Ÿ‡น", - "name": "Lithuania", - "code": "lt" - }, - { - "flag": "๐Ÿ‡ฑ๐Ÿ‡บ", - "name": "Luxembourg", - "code": "lu" - }, - { - "flag": "๐Ÿ‡ฒ๐Ÿ‡ด", - "name": "Macao", - "code": "mo" - }, - { - "flag": "๐Ÿ‡ฒ๐Ÿ‡ฌ", - "name": "Madagascar", - "code": "mg" - }, - { - "flag": "๐Ÿ‡ฒ๐Ÿ‡ผ", - "name": "Malawi", - "code": "mw" - }, - { - "flag": "๐Ÿ‡ฒ๐Ÿ‡พ", - "name": "Malaysia", - "code": "my" - }, - { - "flag": "๐Ÿ‡ฒ๐Ÿ‡ป", - "name": "Maldives", - "code": "mv" - }, - { - "flag": "๐Ÿ‡ฒ๐Ÿ‡ฑ", - "name": "Mali", - "code": "ml" - }, - { - "flag": "๐Ÿ‡ฒ๐Ÿ‡น", - "name": "Malta", - "code": "mt" - }, - { - "flag": "๐Ÿ‡ฒ๐Ÿ‡ญ", - "name": "Marshall Islands", - "code": "mh" - }, - { - "flag": "๐Ÿ‡ฒ๐Ÿ‡ถ", - "name": "Martinique", - "code": "mq" - }, - { - "flag": "๐Ÿ‡ฒ๐Ÿ‡ท", - "name": "Mauritania", - "code": "mr" - }, - { - "flag": "๐Ÿ‡ฒ๐Ÿ‡บ", - "name": "Mauritius", - "code": "mu" - }, - { - "flag": "๐Ÿ‡พ๐Ÿ‡น", - "name": "Mayotte", - "code": "yt" - }, - { - "flag": "๐Ÿ‡ฒ๐Ÿ‡ฝ", - "name": "Mexico", - "code": "mx" - }, - { - "flag": "๐Ÿ‡ซ๐Ÿ‡ฒ", - "name": "Micronesia", - "code": "fm" - }, - { - "flag": "๐Ÿ‡ฒ๐Ÿ‡ฉ", - "name": "Moldova", - "code": "md" - }, - { - "flag": "๐Ÿ‡ฒ๐Ÿ‡จ", - "name": "Monaco", - "code": "mc" - }, - { - "flag": "๐Ÿ‡ฒ๐Ÿ‡ณ", - "name": "Mongolia", - "code": "mn" - }, - { - "flag": "๐Ÿ‡ฒ๐Ÿ‡ช", - "name": "Montenegro", - "code": "me" - }, - { - "flag": "๐Ÿ‡ฒ๐Ÿ‡ฆ", - "name": "Morocco", - "code": "ma" - }, - { - "flag": "๐Ÿ‡ฒ๐Ÿ‡ฟ", - "name": "Mozambique", - "code": "mz" - }, - { - "flag": "๐Ÿ‡ฒ๐Ÿ‡ฒ", - "name": "Myanmar", - "code": "mm" - }, - { - "flag": "๐Ÿ‡ณ๐Ÿ‡ฆ", - "name": "Namibia", - "code": "na" - }, - { - "flag": "๐Ÿ‡ณ๐Ÿ‡ท", - "name": "Nauru", - "code": "nr" - }, - { - "flag": "๐Ÿ‡ณ๐Ÿ‡ต", - "name": "Nepal", - "code": "np" - }, - { - "flag": "๐Ÿ‡ณ๐Ÿ‡ฑ", - "name": "Netherlands", - "code": "nl" - }, - { - "flag": "๐Ÿ‡ณ๐Ÿ‡จ", - "name": "New Caledonia", - "code": "nc" - }, - { - "flag": "๐Ÿ‡ณ๐Ÿ‡ฟ", - "name": "New Zealand", - "code": "nz" - }, - { - "flag": "๐Ÿ‡ณ๐Ÿ‡ฎ", - "name": "Nicaragua", - "code": "ni" - }, - { - "flag": "๐Ÿ‡ณ๐Ÿ‡ช", - "name": "Niger", - "code": "ne" - }, - { - "flag": "๐Ÿ‡ณ๐Ÿ‡ฌ", - "name": "Nigeria", - "code": "ng" - }, - { - "flag": "๐Ÿ‡ณ๐Ÿ‡บ", - "name": "Niue", - "code": "nu" - }, - { - "flag": "๐Ÿ‡ณ๐Ÿ‡ซ", - "name": "Norfolk Island", - "code": "nf" - }, - { - "flag": "๐Ÿ‡ฐ๐Ÿ‡ต", - "name": "North Korea", - "code": "kp" - }, - { - "flag": "๐Ÿ‡ฒ๐Ÿ‡ฐ", - "name": "North Macedonia", - "code": "mk" - }, - { - "flag": "๐Ÿ‡ฒ๐Ÿ‡ต", - "name": "Northern Mariana Islands", - "code": "mp" - }, - { - "flag": "๐Ÿ‡ณ๐Ÿ‡ด", - "name": "Norway", - "code": "no" - }, - { - "flag": "๐Ÿ‡ด๐Ÿ‡ฒ", - "name": "Oman", - "code": "om" - }, - { - "flag": "๐Ÿ‡ต๐Ÿ‡ฐ", - "name": "Pakistan", - "code": "pk" - }, - { - "flag": "๐Ÿ‡ต๐Ÿ‡ผ", - "name": "Palau", - "code": "pw" - }, - { - "flag": "๐Ÿ‡ต๐Ÿ‡ธ", - "name": "Palestine", - "code": "ps" - }, - { - "flag": "๐Ÿ‡ต๐Ÿ‡ฆ", - "name": "Panama", - "code": "pa" - }, - { - "flag": "๐Ÿ‡ต๐Ÿ‡ฌ", - "name": "Papua New Guinea", - "code": "pg" - }, - { - "flag": "๐Ÿ‡ต๐Ÿ‡พ", - "name": "Paraguay", - "code": "py" - }, - { - "flag": "๐Ÿ‡ต๐Ÿ‡ช", - "name": "Peru", - "code": "pe" - }, - { - "flag": "๐Ÿ‡ต๐Ÿ‡ญ", - "name": "Philippines", - "code": "ph" - }, - { - "flag": "๐Ÿ‡ต๐Ÿ‡ณ", - "name": "Pitcairn Islands", - "code": "pn" - }, - { - "flag": "๐Ÿ‡ต๐Ÿ‡ฑ", - "name": "Poland", - "code": "pl" - }, - { - "flag": "๐Ÿ‡ต๐Ÿ‡น", - "name": "Portugal", - "code": "pt" - }, - { - "flag": "๐Ÿ‡ต๐Ÿ‡ท", - "name": "Puerto Rico", - "code": "pr" - }, - { - "flag": "๐Ÿ‡ถ๐Ÿ‡ฆ", - "name": "Qatar", - "code": "qa" - }, - { - "flag": "๐Ÿ‡ท๐Ÿ‡ด", - "name": "Romania", - "code": "ro" - }, - { - "flag": "๐Ÿ‡ท๐Ÿ‡บ", - "name": "Russia", - "code": "ru" - }, - { - "flag": "๐Ÿ‡ท๐Ÿ‡ผ", - "name": "Rwanda", - "code": "rw" - }, - { - "flag": "๐Ÿ‡ท๐Ÿ‡ช", - "name": "Rรฉunion", - "code": "re" - }, - { - "flag": "๐Ÿ‡ผ๐Ÿ‡ธ", - "name": "Samoa", - "code": "ws" - }, - { - "flag": "๐Ÿ‡ธ๐Ÿ‡ฒ", - "name": "San Marino", - "code": "sm" - }, - { - "flag": "๐Ÿ‡ธ๐Ÿ‡ฆ", - "name": "Saudi Arabia", - "code": "sa" - }, - { - "flag": "๐Ÿ‡ธ๐Ÿ‡ณ", - "name": "Senegal", - "code": "sn" - }, - { - "flag": "๐Ÿ‡ท๐Ÿ‡ธ", - "name": "Serbia", - "code": "rs" - }, - { - "flag": "๐Ÿ‡ธ๐Ÿ‡จ", - "name": "Seychelles", - "code": "sc" - }, - { - "flag": "๐Ÿ‡ธ๐Ÿ‡ฑ", - "name": "Sierra Leone", - "code": "sl" - }, - { - "flag": "๐Ÿ‡ธ๐Ÿ‡ฌ", - "name": "Singapore", - "code": "sg" - }, - { - "flag": "๐Ÿ‡ธ๐Ÿ‡ฐ", - "name": "Slovakia", - "code": "sk" - }, - { - "flag": "๐Ÿ‡ธ๐Ÿ‡ฎ", - "name": "Slovenia", - "code": "si" - }, - { - "flag": "๐Ÿ‡ธ๐Ÿ‡ง", - "name": "Solomon Islands", - "code": "sb" - }, - { - "flag": "๐Ÿ‡ธ๐Ÿ‡ด", - "name": "Somalia", - "code": "so" - }, - { - "flag": "๐Ÿ‡ฟ๐Ÿ‡ฆ", - "name": "South Africa", - "code": "za" - }, - { - "flag": "๐Ÿ‡ฐ๐Ÿ‡ท", - "name": "South Korea", - "code": "kr" - }, - { - "flag": "๐Ÿ‡ธ๐Ÿ‡ธ", - "name": "South Sudan", - "code": "ss" - }, - { - "flag": "๐Ÿ‡ช๐Ÿ‡ธ", - "name": "Spain", - "code": "es" - }, - { - "flag": "๐Ÿ‡ฑ๐Ÿ‡ฐ", - "name": "Sri Lanka", - "code": "lk" - }, - { - "flag": "๐Ÿ‡ง๐Ÿ‡ฑ", - "name": "St. Barthรฉlemy", - "code": "bl" - }, - { - "flag": "๐Ÿ‡ธ๐Ÿ‡ญ", - "name": "St. Helena", - "code": "sh" - }, - { - "flag": "๐Ÿ‡ฒ๐Ÿ‡ซ", - "name": "St. Martin", - "code": "mf" - }, - { - "flag": "๐Ÿ‡ธ๐Ÿ‡ฉ", - "name": "Sudan", - "code": "sd" - }, - { - "flag": "๐Ÿ‡ธ๐Ÿ‡ช", - "name": "Sweden", - "code": "se" - }, - { - "flag": "๐Ÿ‡จ๐Ÿ‡ญ", - "name": "Switzerland", - "code": "ch" - }, - { - "flag": "๐Ÿ‡ธ๐Ÿ‡พ", - "name": "Syria", - "code": "sy" - }, - { - "flag": "๐Ÿ‡ธ๐Ÿ‡น", - "name": "Sรฃo Tomรฉ & Prรญncipe", - "code": "st" - }, - { - "flag": "๐Ÿ‡น๐Ÿ‡ผ", - "name": "Taiwan", - "code": "tw" - }, - { - "flag": "๐Ÿ‡น๐Ÿ‡ฏ", - "name": "Tajikistan", - "code": "tj" - }, - { - "flag": "๐Ÿ‡น๐Ÿ‡ฟ", - "name": "Tanzania", - "code": "tz" - }, - { - "flag": "๐Ÿ‡น๐Ÿ‡ญ", - "name": "Thailand", - "code": "th" - }, - { - "flag": "๐Ÿ‡น๐Ÿ‡ฑ", - "name": "Timor-Leste", - "code": "tl" - }, - { - "flag": "๐Ÿ‡น๐Ÿ‡ฌ", - "name": "Togo", - "code": "tg" - }, - { - "flag": "๐Ÿ‡น๐Ÿ‡ฐ", - "name": "Tokelau", - "code": "tk" - }, - { - "flag": "๐Ÿ‡น๐Ÿ‡ด", - "name": "Tonga", - "code": "to" - }, - { - "flag": "๐Ÿ‡น๐Ÿ‡น", - "name": "Trinidad & Tobago", - "code": "tt" - }, - { - "flag": "๐Ÿ‡น๐Ÿ‡ณ", - "name": "Tunisia", - "code": "tn" - }, - { - "flag": "๐Ÿ‡น๐Ÿ‡ท", - "name": "Turkey", - "code": "tr" - }, - { - "flag": "๐Ÿ‡น๐Ÿ‡ฒ", - "name": "Turkmenistan", - "code": "tm" - }, - { - "flag": "๐Ÿ‡น๐Ÿ‡ป", - "name": "Tuvalu", - "code": "tv" - }, - { - "flag": "๐Ÿ‡ป๐Ÿ‡ฎ", - "name": "U.S. Virgin Islands", - "code": "vi" - }, - { - "flag": "๐Ÿ‡บ๐Ÿ‡ฌ", - "name": "Uganda", - "code": "ug" - }, - { - "flag": "๐Ÿ‡บ๐Ÿ‡ฆ", - "name": "Ukraine", - "code": "ua" - }, - { - "flag": "๐Ÿ‡ฆ๐Ÿ‡ช", - "name": "United Arab Emirates", - "code": "ae" - }, - { - "flag": "๐Ÿ‡ฌ๐Ÿ‡ง", - "name": "United Kingdom", - "code": "uk" - }, - { - "flag": "๐Ÿ‡บ๐Ÿ‡ธ", - "name": "United States", - "code": "us" - }, - { - "flag": "๐Ÿ‡บ๐Ÿ‡พ", - "name": "Uruguay", - "code": "uy" - }, - { - "flag": "๐Ÿ‡บ๐Ÿ‡ฟ", - "name": "Uzbekistan", - "code": "uz" - }, - { - "flag": "๐Ÿ‡ป๐Ÿ‡บ", - "name": "Vanuatu", - "code": "vu" - }, - { - "flag": "๐Ÿ‡ป๐Ÿ‡ฆ", - "name": "Vatican City", - "code": "va" - }, - { - "flag": "๐Ÿ‡ป๐Ÿ‡ช", - "name": "Venezuela", - "code": "ve" - }, - { - "flag": "๐Ÿ‡ป๐Ÿ‡ณ", - "name": "Vietnam", - "code": "vn" - }, - { - "flag": "๐Ÿ‡ผ๐Ÿ‡ซ", - "name": "Wallis & Futuna", - "code": "wf" - }, - { - "flag": "๐Ÿ‡ช๐Ÿ‡ญ", - "name": "Western Sahara", - "code": "eh" - }, - { - "flag": "๐Ÿ‡พ๐Ÿ‡ช", - "name": "Yemen", - "code": "ye" - }, - { - "flag": "๐Ÿ‡ฟ๐Ÿ‡ฒ", - "name": "Zambia", - "code": "zm" - }, - { - "flag": "๐Ÿ‡ฟ๐Ÿ‡ผ", - "name": "Zimbabwe", - "code": "zw" - } -] From 5d76cc2dac4ecae4d3f427368ea785fd28704c84 Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Wed, 8 Sep 2021 21:46:06 +0300 Subject: [PATCH 16/26] Update auto-update.yml --- .github/workflows/auto-update.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/auto-update.yml b/.github/workflows/auto-update.yml index bd24eab3a..6d3c8a89c 100644 --- a/.github/workflows/auto-update.yml +++ b/.github/workflows/auto-update.yml @@ -197,7 +197,7 @@ jobs: - name: Install Dependencies run: npm install - name: Format Playlists - run: node scripts/format.js --country=${{ matrix.country }} --debug + run: node scripts/format.js --country=${{ matrix.country }} --debug --offline - name: Upload Artifact uses: actions/upload-artifact@v2 with: From 1572f1c799c6ee9404553ad7148bdd20febcd979 Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Thu, 9 Sep 2021 00:09:50 +0300 Subject: [PATCH 17/26] Update CONTRIBUTING.md --- CONTRIBUTING.md | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 40147d210..d0123b2aa 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -152,15 +152,14 @@ http://example.com/stream.m3u8 - `.github/` - `ISSUE_TEMPLATE/`: issue templates for this repository. - `workflows/` - - `auto-update.yml`: GitHub Action that automatically updates all playlists every day. - - `check.yml`: GitHub Action that automatically checks every pull request for syntax errors. + - `auto-update.yml`: GitHub workflow that automatically updates all playlists every day. + - `check.yml`: GitHub workflow that automatically checks every pull request for syntax errors. + - `cleanup.yml`: GitHub workflow that automatically removes broken links every week. - `CODE_OF_CONDUCT.md`: rules you shouldn't break if you don't want to get banned. - `.readme/` - - `_categories.md`: automatically generated list of all categories and their corresponding playlists. - - `_countries.md`: automatically generated list of all countries and their corresponding playlists. - - `_languages.md`: automatically generated list of all languages and their corresponding playlists. - `config.json`: config for the `markdown-include` package, which is used to compile everything into one `README.md` file. - `preview.png`: image displayed in the `README.md`. + - `supported-categories.md`: list of supported categories. - `supported-region-codes.md`: list of supported region codes. - `template.md`: template for `README.md`. - `channels/`: contains all channels broken down by the country from which they are broadcast. @@ -168,13 +167,13 @@ http://example.com/stream.m3u8 - `unsorted.m3u`: playlist with channels not yet sorted. - `scripts/` - `data/`: data used in scripts. - - `helpers/`: helper scripts used in GitHub Actions. - - `filter.js`: used within GitHub Action to remove blacklisted channels from playlists. - - `format.js`: used within GitHub Action to format channel descriptions. - - `generate.js`: used within GitHub Action to generate all additional playlists. - - `remove-duplicates.js`: used in GitHub Action to remove duplicates from the playlist. - - `sort.js`: used within GitHub Action to sort channels by name. - - `update-readme.js`: used within GitHub Action to update the `README.md` file. + - `helpers/`: helper scripts. + - `filter.js`: used within GitHub workflow to remove blacklisted channels from playlists. + - `format.js`: used within GitHub workflow to format channel descriptions. + - `generate.js`: used within GitHub workflow to generate all additional playlists. + - `remove-broken-links.js`: used in GitHub workflow to remove broken links from the playlist. + - `remove-duplicates.js`: used in GitHub workflow to remove duplicates from the playlist. + - `sort.js`: used within GitHub workflow to sort channels by name. + - `update-readme.js`: used within GitHub workflow to update the `README.md` file. - `CONTRIBUTING.md`: file you are currently reading. -- `index.m3u`: main playlist that contains links to all playlists in the `channels/` folder. - `README.md`: project description generated from the contents of the `.readme/` folder. From 41e21e2d640f6405cb5a58cd3d29d0d50dc5d4fa Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Thu, 9 Sep 2021 00:43:01 +0300 Subject: [PATCH 18/26] Update file.js --- scripts/helpers/file.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/helpers/file.js b/scripts/helpers/file.js index b670fdc94..44ff35135 100644 --- a/scripts/helpers/file.js +++ b/scripts/helpers/file.js @@ -8,7 +8,7 @@ const file = {} file.list = function (include = [], exclude = []) { return new Promise(resolve => { - glob('channels/*.m3u', function (err, files) { + glob('channels/**/*.m3u', function (err, files) { if (include.length) { include = include.map(filename => `channels/${filename}.m3u`) files = files.filter(filename => include.includes(filename)) From 63c5a3e2e2652aa22988009fcb2e670dad52e85f Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Thu, 9 Sep 2021 00:54:29 +0300 Subject: [PATCH 19/26] Update auto-update.yml --- .github/workflows/auto-update.yml | 175 ++---------------------------- 1 file changed, 10 insertions(+), 165 deletions(-) diff --git a/.github/workflows/auto-update.yml b/.github/workflows/auto-update.yml index 6d3c8a89c..d856905c8 100644 --- a/.github/workflows/auto-update.yml +++ b/.github/workflows/auto-update.yml @@ -17,176 +17,21 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: branch: 'bot/auto-update' - format: + create-matrix: runs-on: ubuntu-latest needs: create-branch + outputs: + matrix: ${{ steps.set-matrix.outputs.matrix }} + steps: + - id: set-matrix + run: echo "::set-output name=matrix::{\"country\":[\"ad\"]}" + format: + runs-on: ubuntu-latest + needs: create-matrix continue-on-error: true strategy: fail-fast: false - matrix: - country: - [ - ad, - ae, - af, - ag, - al, - am, - ao, - ar, - at, - au, - aw, - az, - ba, - bb, - bd, - be, - bf, - bg, - bh, - bn, - bo, - br, - bs, - by, - ca, - cd, - cg, - ch, - ci, - cl, - cm, - cn, - co, - cr, - cu, - cw, - cy, - cz, - de, - dk, - do, - dz, - ec, - ee, - eg, - es, - et, - fi, - fj, - fo, - fr, - pf, - ge, - gh, - gm, - gn, - gp, - gq, - gr, - gt, - hk, - hn, - hr, - ht, - hu, - id, - ie, - il, - in, - iq, - ir, - is, - it, - jm, - jo, - jp, - ke, - kg, - kh, - kp, - kr, - kw, - kz, - la, - lb, - li, - lk, - lt, - lu, - lv, - ly, - ma, - mc, - md, - me, - mk, - ml, - mm, - mn, - mo, - mt, - mv, - mx, - my, - mz, - ne, - ng, - ni, - nl, - no, - np, - nz, - om, - pa, - pe, - ph, - pk, - pl, - pr, - ps, - pt, - py, - qa, - ro, - rs, - ru, - rw, - sa, - sd, - se, - sg, - si, - sk, - sl, - sm, - sn, - so, - sv, - sy, - th, - tj, - tm, - tn, - tr, - tt, - tw, - tz, - ua, - ug, - uk, - us, - uy, - uz, - va, - ve, - vi, - vn, - xk, - ye, - zm - ] + matrix: ${{fromJSON(needs.create-matrix.outputs.matrix)}} steps: - name: Checkout uses: actions/checkout@v2 From c575062cd77dc17714d76690f8e870e49a1f1a35 Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Thu, 9 Sep 2021 01:22:20 +0300 Subject: [PATCH 20/26] Create create-matrix.js --- scripts/create-matrix.js | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 scripts/create-matrix.js diff --git a/scripts/create-matrix.js b/scripts/create-matrix.js new file mode 100644 index 000000000..19b36270c --- /dev/null +++ b/scripts/create-matrix.js @@ -0,0 +1,8 @@ +const file = require('./helpers/file') + +file.list().then(files => { + const country = files.map(file => file.replace(/channels\/|\.m3u/gi, '')) + const matrix = { country } + const output = `::set-output name=matrix::${JSON.stringify(matrix)}` + console.log(output) +}) From 8dd85e5176084cee7d260c0856ab1543ce1949ce Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Thu, 9 Sep 2021 01:22:26 +0300 Subject: [PATCH 21/26] Update auto-update.yml --- .github/workflows/auto-update.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/auto-update.yml b/.github/workflows/auto-update.yml index d856905c8..080b8c474 100644 --- a/.github/workflows/auto-update.yml +++ b/.github/workflows/auto-update.yml @@ -23,8 +23,9 @@ jobs: outputs: matrix: ${{ steps.set-matrix.outputs.matrix }} steps: - - id: set-matrix - run: echo "::set-output name=matrix::{\"country\":[\"ad\"]}" + - name: Create Matrix + id: set-matrix + run: node scripts/create-matrix.js format: runs-on: ubuntu-latest needs: create-matrix From c936f43c3ebeb2384bfbbf4fcab6461d1a6607f9 Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Thu, 9 Sep 2021 01:27:05 +0300 Subject: [PATCH 22/26] Update auto-update.yml --- .github/workflows/auto-update.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/auto-update.yml b/.github/workflows/auto-update.yml index 080b8c474..7dfd68411 100644 --- a/.github/workflows/auto-update.yml +++ b/.github/workflows/auto-update.yml @@ -23,6 +23,12 @@ jobs: outputs: matrix: ${{ steps.set-matrix.outputs.matrix }} steps: + - name: Checkout + uses: actions/checkout@v2 + with: + ref: bot/auto-update + - name: Install Dependencies + run: npm install - name: Create Matrix id: set-matrix run: node scripts/create-matrix.js From 85eb26abf00dc7640c9d969de0d8c5ca44a2afd7 Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Thu, 9 Sep 2021 01:32:42 +0300 Subject: [PATCH 23/26] Update create-matrix.js --- scripts/create-matrix.js | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/create-matrix.js b/scripts/create-matrix.js index 19b36270c..6e306d42b 100644 --- a/scripts/create-matrix.js +++ b/scripts/create-matrix.js @@ -1,6 +1,7 @@ const file = require('./helpers/file') file.list().then(files => { + files = files.filter(file => file !== 'channels/unsorted.m3u') const country = files.map(file => file.replace(/channels\/|\.m3u/gi, '')) const matrix = { country } const output = `::set-output name=matrix::${JSON.stringify(matrix)}` From fbc23d1675d48f1a9934230104ad6c61186a507f Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Thu, 9 Sep 2021 01:39:01 +0300 Subject: [PATCH 24/26] Update format.js --- scripts/format.js | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/format.js b/scripts/format.js index c0ee856f8..f70d11b39 100644 --- a/scripts/format.js +++ b/scripts/format.js @@ -30,7 +30,6 @@ async function main() { const include = config.country.split(',').filter(i => i) const exclude = config.exclude.split(',').filter(i => i) let files = await file.list(include, exclude) - files = files.filter(file => file !== 'channels/unsorted.m3u') if (!files.length) log.print(`No files is selected\n`) for (const file of files) { await parser.parsePlaylist(file).then(updatePlaylist).then(savePlaylist) From fa6af2cdc6709bae6fdf27c4f5b7aebea31df96a Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Thu, 9 Sep 2021 01:55:44 +0300 Subject: [PATCH 25/26] Update CONTRIBUTING.md --- CONTRIBUTING.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d0123b2aa..2d835b3e8 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -168,6 +168,7 @@ http://example.com/stream.m3u8 - `scripts/` - `data/`: data used in scripts. - `helpers/`: helper scripts. + - `create-matrix.js`: used within GitHub workflow to create matrix of files to process. - `filter.js`: used within GitHub workflow to remove blacklisted channels from playlists. - `format.js`: used within GitHub workflow to format channel descriptions. - `generate.js`: used within GitHub workflow to generate all additional playlists. From 9d611e58bc5f409c77a1a6ad98ad534039ae4591 Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Thu, 9 Sep 2021 01:58:53 +0300 Subject: [PATCH 26/26] Update auto-update.yml --- .github/workflows/auto-update.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/auto-update.yml b/.github/workflows/auto-update.yml index 7dfd68411..6074f14c6 100644 --- a/.github/workflows/auto-update.yml +++ b/.github/workflows/auto-update.yml @@ -49,7 +49,7 @@ jobs: - name: Install Dependencies run: npm install - name: Format Playlists - run: node scripts/format.js --country=${{ matrix.country }} --debug --offline + run: node scripts/format.js --country=${{ matrix.country }} --debug - name: Upload Artifact uses: actions/upload-artifact@v2 with: