Merge branch 'master' into sguinetti-patch

This commit is contained in:
Shadix A 2021-12-15 00:40:55 +02:00 committed by GitHub
commit a420998f3d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 4275 additions and 96 deletions

View File

@ -1743,3 +1743,9 @@ https://thegateway.app/YouToo/CueTones/playlist.m3u8
https://thegateway.app/YouToo/YTamerica/playlist.m3u8
#EXTINF:-1 tvg-id="KanalDisney.us" tvg-country="RU" tvg-language="Russian" tvg-logo="https://i.imgur.com/Q9KoVy9.png" group-title="Kids",Канал Disney (576p) [Not 24/7]
http://188.40.68.167/russia/disney/playlist.m3u8
#EXTINF:-1 tvg-id="WABCTV.us" tvg-country="US" tvg-logo="" tvg-language="English" group-title="News",WABC-TV News (720p)
https://api.abcotvs.com/v3/wabc/m3u8/url?id=503123&key=yuemix
#EXTINF:-1 tvg-id="WPVITV.us" tvg-country="US" tvg-logo="" tvg-language="English" group-title="News",WPVI-TV News (720p)
https://api.abcotvs.com/v3/wpvi/m3u8/url?id=531099&key=yuemix
#EXTINF:-1 tvg-id="KGOTV.us" tvg-country="US" tvg-logo="" tvg-language="English" group-title="News",KGO-TV News (720p)
https://api.abcotvs.com/v3/kgo/m3u8/url?id=530971&key=yuemix

View File

@ -23,42 +23,42 @@ https://csm-e-eb.csm.tubi.video/csm/live/283326845.m3u8
https://csm-e-eb.csm.tubi.video/csm/live/243017997.m3u8
#EXTINF:-1 tvg-id="EstrellaNews.us" tvg-country="US" tvg-language="Spanish" tvg-logo="https://i.imgur.com/f4Bec0i.png" group-title="News",Estrella News (720p)
https://csm-e-eb.csm.tubi.video/csm/live/247083838.m3u8
#EXTINF:-1 tvg-id="WJBK.us" tvg-country="US" tvg-language="English" tvg-logo="https://i.imgur.com/EL9Bwtf.png" group-title="News",FOX 2 Detroit MI (WJBK) (720p) [Offline]
https://lnc-wjbk-fox-aws.tubi.video/index.m3u8
#EXTINF:-1 tvg-id="KTVUTV.us" tvg-country="US" tvg-language="English" tvg-logo="https://i.imgur.com/18isSVd.png" group-title="News",FOX 2 San Francisco CA (KTVU) (720p) [Offline]
https://lnc-ktvu-fox-aws.tubi.video/index.m3u8
#EXTINF:-1 tvg-id="KDFWTV.us" tvg-country="US" tvg-language="English" tvg-logo="https://i.imgur.com/gjIKpMJ.png" group-title="News",FOX 4 Dallas / Fort Worth TX (KDFW) (720p) [Offline]
https://lnc-kdfw-fox-aws.tubi.video/index.m3u8
#EXTINF:-1 tvg-id="WAGATV.us" tvg-country="US" tvg-language="English" tvg-logo="https://i.imgur.com/DcZoeGw.jpg" group-title="News",FOX 5 Atlanta GA (WAGA-TV) (720p) [Offline]
https://lnc-waga-fox-aws.tubi.video/index.m3u8
#EXTINF:-1 tvg-id="WNYWTV.us" tvg-country="US" tvg-language="English" tvg-logo="https://i.imgur.com/OfGcsUO.png" group-title="Local",FOX 5 New York NY (WNYW) (720p) [Offline]
https://lnc-wnyw-fox-aws.tubi.video/index.m3u8
#EXTINF:-1 tvg-id="WTTGTV.us" tvg-country="US" tvg-language="English" tvg-logo="https://i.imgur.com/ktLKla7.png" group-title="Local",FOX 5 Washington DC (WTTG) (720p) [Offline]
https://lnc-wttg-fox-aws.tubi.video/index.m3u8
#EXTINF:-1 tvg-id="WITITV.us" tvg-country="US" tvg-language="English" tvg-logo="https://i.imgur.com/qmOd9Yr.jpg" group-title="Local",FOX 6 Milwaukee WI (WITI) (720p) [Offline]
https://lnc-witi-fox-aws.tubi.video/index.m3u8
#EXTINF:-1 tvg-id="KTBCTV.us" tvg-country="US" tvg-language="English" tvg-logo="https://i.imgur.com/ugLwGEY.png" group-title="News",FOX 7 Austin TX (KTBC) (720p) [Offline]
https://lnc-ktbc-fox-aws.tubi.video/index.m3u8
#EXTINF:-1 tvg-id="KMSPTV.us" tvg-country="US" tvg-language="English" tvg-logo="https://i.imgur.com/WBgiaiB.jpg" group-title="News",FOX 9 ST Paul Minneapolis MN (KMSP) (720p) [Offline]
https://lnc-kmsp-fox-aws.tubi.video/index.m3u8
#EXTINF:-1 tvg-id="KZAS.us" tvg-country="US" tvg-language="English" tvg-logo="https://i.imgur.com/TCzjchS.jpg" group-title="News",FOX 10 Phoenix AZ (KZAS) (720p) [Offline]
https://lnc-ksaz-fox-aws.tubi.video/index.m3u8
#EXTINF:-1 tvg-id="KTTVTV.us" tvg-country="US" tvg-language="English" tvg-logo="http://live-tv-channels.org/pt-data/uploads/logo/us-fox-11-los-angeles.jpg" group-title="News",FOX 11 Los Angeles CA (KTTV) (720p) [Offline]
https://lnc-kttv-fox-aws.tubi.video/index.m3u8
#EXTINF:-1 tvg-id="WJBK.us" tvg-country="US" tvg-language="English" tvg-logo="https://i.imgur.com/EL9Bwtf.png" group-title="News",FOX 2 Detroit MI (WJBK) (720p)
https://csm-e-eb.csm.tubi.video/csm/extlive/tubiprd01,p-WJBK-Monetizer.m3u8
#EXTINF:-1 tvg-id="KTVUTV.us" tvg-country="US" tvg-language="English" tvg-logo="https://i.imgur.com/18isSVd.png" group-title="News",FOX 2 San Francisco CA (KTVU) (720p)
https://csm-e-eb.csm.tubi.video/csm/extlive/tubiprd01,p-KTVU-Monetizer.m3u8
#EXTINF:-1 tvg-id="KDFWTV.us" tvg-country="US" tvg-language="English" tvg-logo="https://i.imgur.com/gjIKpMJ.png" group-title="News",FOX 4 Dallas / Fort Worth TX (KDFW) (720p)
https://csm-e-eb.csm.tubi.video/csm/extlive/tubiprd01,p-KDFW-Monetizer.m3u8
#EXTINF:-1 tvg-id="WAGATV.us" tvg-country="US" tvg-language="English" tvg-logo="https://i.imgur.com/DcZoeGw.jpg" group-title="News",FOX 5 Atlanta GA (WAGA-TV) (720p)
https://csm-e-eb.csm.tubi.video/csm/extlive/tubiprd01,p-WAGA-Monetizer.m3u8
#EXTINF:-1 tvg-id="WNYWTV.us" tvg-country="US" tvg-language="English" tvg-logo="https://i.imgur.com/OfGcsUO.png" group-title="Local",FOX 5 New York NY (WNYW) (720p)
https://csm-e-eb.csm.tubi.video/csm/extlive/tubiprd01,p-WNYW-Monetizer.m3u8
#EXTINF:-1 tvg-id="WTTGTV.us" tvg-country="US" tvg-language="English" tvg-logo="https://i.imgur.com/ktLKla7.png" group-title="Local",FOX 5 Washington DC (WTTG) (720p)
https://csm-e-eb.csm.tubi.video/csm/extlive/tubiprd01,p-WTTG-Monetizer.m3u8
#EXTINF:-1 tvg-id="WITITV.us" tvg-country="US" tvg-language="English" tvg-logo="https://i.imgur.com/qmOd9Yr.jpg" group-title="Local",FOX 6 Milwaukee WI (WITI) (720p)
https://csm-e-eb.csm.tubi.video/csm/extlive/tubiprd01,p-WITI-Monetizer.m3u8
#EXTINF:-1 tvg-id="KTBCTV.us" tvg-country="US" tvg-language="English" tvg-logo="https://i.imgur.com/ugLwGEY.png" group-title="News",FOX 7 Austin TX (KTBC) (720p)
https://csm-e-eb.csm.tubi.video/csm/extlive/tubiprd01,p-KTBC-Monetizer.m3u8
#EXTINF:-1 tvg-id="KMSPTV.us" tvg-country="US" tvg-language="English" tvg-logo="https://i.imgur.com/WBgiaiB.jpg" group-title="News",FOX 9 ST Paul Minneapolis MN (KMSP) (720p)
https://csm-e-eb.csm.tubi.video/csm/extlive/tubiprd01,p-KMSP-Monetizer.m3u8
#EXTINF:-1 tvg-id="KZAS.us" tvg-country="US" tvg-language="English" tvg-logo="https://i.imgur.com/TCzjchS.jpg" group-title="News",FOX 10 Phoenix AZ (KZAS) (720p)
https://csm-e-eb.csm.tubi.video/csm/extlive/tubiprd01,p-KSAZ-Monetizer.m3u8
#EXTINF:-1 tvg-id="KTTVTV.us" tvg-country="US" tvg-language="English" tvg-logo="http://live-tv-channels.org/pt-data/uploads/logo/us-fox-11-los-angeles.jpg" group-title="News",FOX 11 Los Angeles CA (KTTV) (720p)
https://csm-e-eb.csm.tubi.video/csm/extlive/tubiprd01,p-KTTV-Monetizer.m3u8
#EXTINF:-1 tvg-id="WHBQTV.us" tvg-country="US" tvg-language="English" tvg-logo="https://i.imgur.com/E9vX12j.jpg" group-title="Local",FOX 13 Memphis TN (WHBQ-TV) (720p)
https://live-news-manifest.tubi.video/live-news-manifest/csm/extlive/tubiprd01,Cloudfront-WHBQ.m3u8
#EXTINF:-1 tvg-id="WTVTTV.us" tvg-country="US" tvg-language="English" tvg-logo="https://i.imgur.com/Bvkri2L.png" group-title="Local",FOX 13 Tampa Bay FL (WTVT) (720p) [Offline]
https://lnc-wtvt-fox-aws.tubi.video/index.m3u8
#EXTINF:-1 tvg-id="KRIV.us" tvg-country="US" tvg-language="English" tvg-logo="https://i.imgur.com/AZ8MWRp.jpg" group-title="News",FOX 26 Houston TX (KRIV) (720p) [Offline]
https://lnc-kriv-fox-aws.tubi.video/index.m3u8
#EXTINF:-1 tvg-id="WTXFTV.us" tvg-country="US" tvg-language="English" tvg-logo="https://i.imgur.com/fRjmk5r.png" group-title="Local",FOX 29 Philadelphia PA (WTXF-TV) (720p) [Offline]
https://lnc-wtxf-fox-aws.tubi.video/index.m3u8
#EXTINF:-1 tvg-id="WFLDTV.us" tvg-country="US" tvg-language="English" tvg-logo="https://i.imgur.com/lf5sLNn.png" group-title="Local",FOX 32 Chicago IL (WFLD) (720p) [Offline]
https://lnc-wfld-fox-aws.tubi.video/index.m3u8
#EXTINF:-1 tvg-id="WOFLTV.us" tvg-country="US" tvg-language="English" tvg-logo="https://i.imgur.com/BOA8KKZ.jpg" group-title="Local",FOX 35 Orlando FL (WOFL) (720p) [Offline]
https://lnc-wofl-fox-aws.tubi.video/index.m3u8
#EXTINF:-1 tvg-id="KCPQTV.us" tvg-country="US" tvg-language="English" tvg-logo="https://i.imgur.com/4xs5ERr.jpg" group-title="News",FOX Q13 Seattle WA (KCPQ) (720p) [Offline]
https://lnc-kcpq-fox-aws.tubi.video/index.m3u8
#EXTINF:-1 tvg-id="WTVTTV.us" tvg-country="US" tvg-language="English" tvg-logo="https://i.imgur.com/Bvkri2L.png" group-title="Local",FOX 13 Tampa Bay FL (WTVT) (720p)
https://csm-e-eb.csm.tubi.video/csm/extlive/tubiprd01,p-WTVT-Monetizer.m3u8
#EXTINF:-1 tvg-id="KRIV.us" tvg-country="US" tvg-language="English" tvg-logo="https://i.imgur.com/AZ8MWRp.jpg" group-title="News",FOX 26 Houston TX (KRIV) (720p)
https://csm-e-eb.csm.tubi.video/csm/extlive/tubiprd01,p-KRIV-Monetizer.m3u8
#EXTINF:-1 tvg-id="WTXFTV.us" tvg-country="US" tvg-language="English" tvg-logo="https://i.imgur.com/fRjmk5r.png" group-title="Local",FOX 29 Philadelphia PA (WTXF-TV) (720p)
https://csm-e-eb.csm.tubi.video/csm/extlive/tubiprd01,p-WTXF-Monetizer.m3u8
#EXTINF:-1 tvg-id="WFLDTV.us" tvg-country="US" tvg-language="English" tvg-logo="https://i.imgur.com/lf5sLNn.png" group-title="Local",FOX 32 Chicago IL (WFLD) (720p)
https://csm-e-eb.csm.tubi.video/csm/extlive/tubiprd01,p-WFLD-Monetizer.m3u8
#EXTINF:-1 tvg-id="WOFLTV.us" tvg-country="US" tvg-language="English" tvg-logo="https://i.imgur.com/BOA8KKZ.jpg" group-title="Local",FOX 35 Orlando FL (WOFL) (720p)
https://csm-e-eb.csm.tubi.video/csm/extlive/tubiprd01,p-WOFL-Monetizer.m3u8
#EXTINF:-1 tvg-id="KCPQTV.us" tvg-country="US" tvg-language="English" tvg-logo="https://i.imgur.com/4xs5ERr.jpg" group-title="News",FOX Q13 Seattle WA (KCPQ) (720p)
https://csm-e-eb.csm.tubi.video/csm/extlive/tubiprd01,p-KCPQ-Monetizer.m3u8
#EXTINF:-1 tvg-id="FoxSoul.us" tvg-country="US" tvg-language="English" tvg-logo="https://i.imgur.com/YIamDGn.png" group-title="Culture",Fox Soul (720p)
https://lnc-fox-soul-scte.tubi.video/index.m3u8
#EXTINF:-1 tvg-id="WLWTTV.us" tvg-country="US" tvg-language="English" tvg-logo="https://i.imgur.com/7erOEZJ.gif" group-title="News",NBC 5 Cincinnati OH (WLWT) (720p)

View File

@ -5,6 +5,7 @@
"require-header": true,
"attribute-quotes": true,
"require-info": true,
"require-title": true,
"no-trailing-spaces": false,
"no-whitespace-before-title": true,
"no-multi-spaces": true,

4220
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -20,7 +20,7 @@
"iptv-playlist-parser": "^0.10.2",
"jest": "^27.4.3",
"lodash": "^4.17.21",
"m3u-linter": "^0.2.2",
"m3u-linter": "^0.3.0",
"markdown-include": "^0.4.3",
"mz": "^2.7.0",
"nedb-promises": "^5.0.2",

View File

@ -86,11 +86,20 @@ async function updateStreams() {
if (result) {
const { error, streams, requests } = result
const status = parseStatus(error, item.status)
const resolution = parseResolution(streams)
const origin = findOrigin(requests)
let status = parseStatus(error)
if (status) {
const prevStatus = item.status
if (prevStatus.code === 'not_247') // not_247 -> * = not_247
status = item.status
else if (prevStatus.code === 'geo_blocked') // geo_blocked -> * = geo_blocked
status = item.status
else if(prevStatus.code === 'offline' && status.code === 'online') // offline -> online = not_247
status = statuses['not_247']
stream.set('status', { status })
stream.set('is_broken', { status: stream.get('status') })
}
@ -200,24 +209,9 @@ function parseResolution(streams) {
return null
}
// Mapping Scheme:
// ===============
// not_247 -> * = not_247
// geo_blocked -> * = geo_blocked
// offline -> online = not_247
// * -> online = online
// * -> timeout = timeout
// * -> geo_blocked = geo_blocked
// * -> offline = offline
function parseStatus(error, prevStatus) {
if (['not_247', 'geo_blocked'].includes(prevStatus.code)) return null
if(!error && prevStatus.code === 'offline') return statuses['not_247']
if(!error) return statuses['online']
function parseStatus(error) {
if (error) {
if (['not_247', 'geo_blocked'].includes(prevStatus.code)) {
return prevStatus
} else if (error.includes('timed out')) {
if (error.includes('timed out')) {
return statuses['timeout']
} else if (error.includes('403')) {
return statuses['geo_blocked']
@ -225,7 +219,7 @@ function parseStatus(error, prevStatus) {
return statuses['offline']
}
return null
return statuses['online']
}
function findLogo(id) {

View File

@ -41,7 +41,7 @@ async function generateCategoryTable() {
const table = markdown.createTable(rows, [
{ name: 'Category', align: 'left' },
{ name: 'Channels', align: 'right' },
{ name: 'Playlist', align: 'left' }
{ name: 'Playlist', align: 'left', nowrap: true }
])
await file.create('./.readme/_categories.md', table)
@ -65,7 +65,7 @@ async function generateCountryTable() {
const table = markdown.createTable(rows, [
{ name: 'Country', align: 'left' },
{ name: 'Channels', align: 'right' },
{ name: 'Playlist', align: 'left' }
{ name: 'Playlist', align: 'left', nowrap: true }
])
await file.create('./.readme/_countries.md', table)
@ -86,7 +86,7 @@ async function generateRegionTable() {
const table = markdown.createTable(rows, [
{ name: 'Region', align: 'left' },
{ name: 'Channels', align: 'right' },
{ name: 'Playlist', align: 'left' }
{ name: 'Playlist', align: 'left', nowrap: true }
])
await file.create('./.readme/_regions.md', table)
@ -107,7 +107,7 @@ async function generateLanguageTable() {
const table = markdown.createTable(rows, [
{ name: 'Language', align: 'left' },
{ name: 'Channels', align: 'right' },
{ name: 'Playlist', align: 'left' }
{ name: 'Playlist', align: 'left', nowrap: true }
])
await file.create('./.readme/_languages.md', table)

View File

@ -34,9 +34,9 @@ Or select one of the playlists from the list below.
<tr><th align="left">Category</th><th align="right">Channels</th><th align="left">Playlist</th></tr>
</thead>
<tbody>
<tr><td align="left">General</td><td align="right">1</td><td align="left"><code>https://iptv-org.github.io/iptv/categories/general.m3u</code></td></tr>
<tr><td align="left">News</td><td align="right">1</td><td align="left"><code>https://iptv-org.github.io/iptv/categories/news.m3u</code></td></tr>
<tr><td align="left">Other</td><td align="right">0</td><td align="left"><code>https://iptv-org.github.io/iptv/categories/other.m3u</code></td></tr>
<tr><td align="left">General</td><td align="right">1</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/categories/general.m3u</code></td></tr>
<tr><td align="left">News</td><td align="right">1</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/categories/news.m3u</code></td></tr>
<tr><td align="left">Other</td><td align="right">0</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/categories/other.m3u</code></td></tr>
</tbody>
</table>
@ -54,10 +54,10 @@ Or select one of the playlists from the list below.
<tr><th align="left">Language</th><th align="right">Channels</th><th align="left">Playlist</th></tr>
</thead>
<tbody>
<tr><td align="left">Catalan</td><td align="right">0</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/cat.m3u</code></td></tr>
<tr><td align="left">English</td><td align="right">1</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/eng.m3u</code></td></tr>
<tr><td align="left">Russian</td><td align="right">1</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/rus.m3u</code></td></tr>
<tr><td align="left">Undefined</td><td align="right">0</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/undefined.m3u</code></td></tr>
<tr><td align="left">Catalan</td><td align="right">0</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/languages/cat.m3u</code></td></tr>
<tr><td align="left">English</td><td align="right">1</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/languages/eng.m3u</code></td></tr>
<tr><td align="left">Russian</td><td align="right">1</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/languages/rus.m3u</code></td></tr>
<tr><td align="left">Undefined</td><td align="right">0</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/languages/undefined.m3u</code></td></tr>
</tbody>
</table>
@ -75,11 +75,11 @@ Or select one of the playlists from the list below.
<tr><th align="left">Region</th><th align="right">Channels</th><th align="left">Playlist</th></tr>
</thead>
<tbody>
<tr><td align="left">Asia</td><td align="right">1</td><td align="left"><code>https://iptv-org.github.io/iptv/regions/asia.m3u</code></td></tr>
<tr><td align="left">Commonwealth of Independent States</td><td align="right">1</td><td align="left"><code>https://iptv-org.github.io/iptv/regions/cis.m3u</code></td></tr>
<tr><td align="left">Europe</td><td align="right">2</td><td align="left"><code>https://iptv-org.github.io/iptv/regions/eur.m3u</code></td></tr>
<tr><td align="left">Europe, the Middle East and Africa</td><td align="right">2</td><td align="left"><code>https://iptv-org.github.io/iptv/regions/emea.m3u</code></td></tr>
<tr><td align="left">Undefined</td><td align="right">0</td><td align="left"><code>https://iptv-org.github.io/iptv/regions/undefined.m3u</code></td></tr>
<tr><td align="left">Asia</td><td align="right">1</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/regions/asia.m3u</code></td></tr>
<tr><td align="left">Commonwealth of Independent States</td><td align="right">1</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/regions/cis.m3u</code></td></tr>
<tr><td align="left">Europe</td><td align="right">2</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/regions/eur.m3u</code></td></tr>
<tr><td align="left">Europe, the Middle East and Africa</td><td align="right">2</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/regions/emea.m3u</code></td></tr>
<tr><td align="left">Undefined</td><td align="right">0</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/regions/undefined.m3u</code></td></tr>
</tbody>
</table>
@ -97,11 +97,11 @@ Or select one of the playlists from the list below.
<tr><th align="left">Country</th><th align="right">Channels</th><th align="left">Playlist</th></tr>
</thead>
<tbody>
<tr><td align="left">🇦🇩 Andorra</td><td align="right">0</td><td align="left"><code>https://iptv-org.github.io/iptv/countries/ad.m3u</code></td></tr>
<tr><td align="left">🇷🇺 Russia</td><td align="right">1</td><td align="left"><code>https://iptv-org.github.io/iptv/countries/ru.m3u</code></td></tr>
<tr><td align="left">🇬🇧 United Kingdom</td><td align="right">1</td><td align="left"><code>https://iptv-org.github.io/iptv/countries/uk.m3u</code></td></tr>
<tr><td align="left">🌍 International</td><td align="right">0</td><td align="left"><code>https://iptv-org.github.io/iptv/countries/int.m3u</code></td></tr>
<tr><td align="left">Undefined</td><td align="right">0</td><td align="left"><code>https://iptv-org.github.io/iptv/countries/undefined.m3u</code></td></tr>
<tr><td align="left">🇦🇩 Andorra</td><td align="right">0</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/ad.m3u</code></td></tr>
<tr><td align="left">🇷🇺 Russia</td><td align="right">1</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/ru.m3u</code></td></tr>
<tr><td align="left">🇬🇧 United Kingdom</td><td align="right">1</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/uk.m3u</code></td></tr>
<tr><td align="left">🌍 International</td><td align="right">0</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/int.m3u</code></td></tr>
<tr><td align="left">Undefined</td><td align="right">0</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/undefined.m3u</code></td></tr>
</tbody>
</table>