Update update-readme.js
This commit is contained in:
parent
b9a093d816
commit
822e39dcf0
@ -2,23 +2,20 @@
|
||||
|
||||
[![auto-update](https://github.com/iptv-org/iptv/actions/workflows/auto-update.yml/badge.svg)](https://github.com/iptv-org/iptv/actions/workflows/auto-update.yml)
|
||||
|
||||
Collection of publicly available IPTV channels from all over the world.
|
||||
Collection of publicly available IPTV (Internet Protocol television) channels from all over the world.
|
||||
|
||||
## Usage
|
||||
|
||||
To watch IPTV you just need to paste this link `https://iptv-org.github.io/iptv/index.m3u` to any player which supports M3U-playlists.
|
||||
![VLC Network Panel](https://github.com/iptv-org/iptv/raw/master/.readme/preview.png)
|
||||
|
||||
![VLC Network Panel](.readme/preview.png)
|
||||
To watch IPTV, simply insert one of the links below into any player that supports M3U playlists:
|
||||
|
||||
Also you can instead use one of these playlists:
|
||||
|
||||
- `https://iptv-org.github.io/iptv/index.category.m3u` (grouped by category)
|
||||
- `https://iptv-org.github.io/iptv/index.language.m3u` (grouped by language)
|
||||
- `https://iptv-org.github.io/iptv/index.country.m3u` (grouped by country)
|
||||
- `https://iptv-org.github.io/iptv/index.region.m3u` (grouped by region)
|
||||
- `https://iptv-org.github.io/iptv/index.m3u`
|
||||
- `https://iptv-org.github.io/iptv/index.nsfw.m3u` (includes adult channels)
|
||||
|
||||
Or select one of the playlists from the list below.
|
||||
- `https://iptv-org.github.io/iptv/index.category.m3u` (grouped by category)
|
||||
- `https://iptv-org.github.io/iptv/index.country.m3u` (grouped by country)
|
||||
- `https://iptv-org.github.io/iptv/index.language.m3u` (grouped by language)
|
||||
- `https://iptv-org.github.io/iptv/index.region.m3u` (grouped by region)
|
||||
|
||||
### Playlists by category
|
||||
|
||||
@ -31,6 +28,17 @@ Or select one of the playlists from the list below.
|
||||
|
||||
</details>
|
||||
|
||||
### Playlists by country
|
||||
|
||||
<details>
|
||||
<summary>Expand</summary>
|
||||
<br>
|
||||
|
||||
<!-- prettier-ignore -->
|
||||
#include "./.readme/_countries.md"
|
||||
|
||||
</details>
|
||||
|
||||
### Playlists by language
|
||||
|
||||
<details>
|
||||
@ -53,76 +61,9 @@ Or select one of the playlists from the list below.
|
||||
|
||||
</details>
|
||||
|
||||
### Playlists by country
|
||||
|
||||
<details>
|
||||
<summary>Expand</summary>
|
||||
<br>
|
||||
|
||||
<!-- prettier-ignore -->
|
||||
#include "./.readme/_countries.md"
|
||||
|
||||
</details>
|
||||
|
||||
## For Developers
|
||||
|
||||
In addition to the above methods, you can also get a list of all available channels in JSON format.
|
||||
|
||||
To do this, you just have to make a GET request to:
|
||||
|
||||
```
|
||||
https://iptv-org.github.io/iptv/channels.json
|
||||
```
|
||||
|
||||
If successful, you should get the following response:
|
||||
|
||||
<details>
|
||||
<summary>Expand</summary>
|
||||
<br>
|
||||
|
||||
```
|
||||
[
|
||||
...
|
||||
{
|
||||
"name": "CNN",
|
||||
"logo": "https://i.imgur.com/ilZJT5s.png",
|
||||
"url": "http://ott-cdn.ucom.am/s27/index.m3u8",
|
||||
"categories": [
|
||||
{
|
||||
"name": "News",
|
||||
"slug": "news"
|
||||
}
|
||||
],
|
||||
"countries": [
|
||||
{
|
||||
"code": "us",
|
||||
"name": "United States"
|
||||
},
|
||||
{
|
||||
"code": "ca",
|
||||
"name": "Canada"
|
||||
}
|
||||
],
|
||||
"languages": [
|
||||
{
|
||||
"code": "eng",
|
||||
"name": "English"
|
||||
}
|
||||
],
|
||||
"tvg": {
|
||||
"id": "cnn.us",
|
||||
"name": "CNN",
|
||||
"url": "http://epg.streamstv.me/epg/guide-usa.xml.gz"
|
||||
}
|
||||
},
|
||||
...
|
||||
]
|
||||
```
|
||||
</details>
|
||||
|
||||
## EPG
|
||||
|
||||
Playlists already have a built-in list of EPG, so players that support the `url-tvg` tag should load it automatically. If not, you can find a list of available programs here:
|
||||
Playlists already have a built-in list of EPG, so players that support the `x-tvg-url` tag should load it automatically. If not, you can find a list of available programs here:
|
||||
|
||||
https://github.com/iptv-org/epg
|
||||
|
||||
@ -130,6 +71,10 @@ https://github.com/iptv-org/epg
|
||||
|
||||
You can find links to various IPTV related resources in this repository [iptv-org/awesome-iptv](https://github.com/iptv-org/awesome-iptv).
|
||||
|
||||
## API
|
||||
|
||||
The API documentation can be found in the [iptv-org/api](https://github.com/iptv-org/api) repository.
|
||||
|
||||
## Contribution
|
||||
|
||||
Please make sure to read the [Contributing Guide](CONTRIBUTING.md) before sending an issue or making a pull request.
|
||||
|
@ -1,12 +1,8 @@
|
||||
const { file, markdown, parser, logger } = require('../core')
|
||||
const { file, markdown, parser, logger, api } = require('../core')
|
||||
const { create: createTable } = require('../core/table')
|
||||
const { program } = require('commander')
|
||||
|
||||
let categories = []
|
||||
let countries = []
|
||||
let languages = []
|
||||
let regions = []
|
||||
|
||||
const LOGS_PATH = process.env.LOGS_PATH || 'scripts/logs'
|
||||
const LOGS_DIR = process.env.LOGS_DIR || 'scripts/logs/generators'
|
||||
|
||||
const options = program
|
||||
.option('-c, --config <config>', 'Set path to config file', '.readme/config.json')
|
||||
@ -14,97 +10,79 @@ const options = program
|
||||
.opts()
|
||||
|
||||
async function main() {
|
||||
await setUp()
|
||||
|
||||
await generateCategoryTable()
|
||||
await generateLanguageTable()
|
||||
await generateRegionTable()
|
||||
await generateCountryTable()
|
||||
|
||||
await createCategoryTable()
|
||||
await createCountryTable()
|
||||
await createLanguageTable()
|
||||
await createRegionTable()
|
||||
await updateReadme()
|
||||
}
|
||||
|
||||
main()
|
||||
|
||||
async function generateCategoryTable() {
|
||||
logger.info('Generating category table...')
|
||||
|
||||
async function createCategoryTable() {
|
||||
logger.info('creating category table...')
|
||||
const rows = []
|
||||
for (const category of categories) {
|
||||
await api.categories.load()
|
||||
const items = await parser.parseLogs(`${LOGS_DIR}/categories.log`)
|
||||
for (const item of items) {
|
||||
const id = file.getFilename(item.filepath)
|
||||
const category = await api.categories.find({ id })
|
||||
rows.push({
|
||||
category: category.name,
|
||||
channels: category.count,
|
||||
playlist: `<code>https://iptv-org.github.io/iptv/categories/${category.slug}.m3u</code>`
|
||||
name: category ? category.name : 'Undefined',
|
||||
channels: item.count,
|
||||
playlist: `<code>https://iptv-org.github.io/iptv/${item.filepath}</code>`
|
||||
})
|
||||
}
|
||||
|
||||
const table = markdown.createTable(rows, [
|
||||
{ name: 'Category', align: 'left' },
|
||||
const table = createTable(rows, [
|
||||
{ name: 'Category' },
|
||||
{ name: 'Channels', align: 'right' },
|
||||
{ name: 'Playlist', align: 'left', nowrap: true }
|
||||
{ name: 'Playlist', nowrap: true }
|
||||
])
|
||||
|
||||
await file.create('./.readme/_categories.md', table)
|
||||
}
|
||||
|
||||
async function generateCountryTable() {
|
||||
logger.info('Generating country table...')
|
||||
|
||||
async function createCountryTable() {
|
||||
logger.info('creating country table...')
|
||||
const rows = []
|
||||
for (const country of countries) {
|
||||
const flag = getCountryFlag(country.code)
|
||||
const prefix = flag ? `${flag} ` : ''
|
||||
|
||||
await api.countries.load()
|
||||
const items = await parser.parseLogs(`${LOGS_DIR}/countries.log`)
|
||||
for (const item of items) {
|
||||
const code = file.getFilename(item.filepath)
|
||||
const country = await api.countries.find({ code: code.toUpperCase() })
|
||||
rows.push({
|
||||
country: prefix + country.name,
|
||||
channels: country.count,
|
||||
playlist: `<code>https://iptv-org.github.io/iptv/countries/${country.code.toLowerCase()}.m3u</code>`
|
||||
name: country ? `${country.flag} ${country.name}` : 'Undefined',
|
||||
channels: item.count,
|
||||
playlist: `<code>https://iptv-org.github.io/iptv/${item.filepath}</code>`
|
||||
})
|
||||
}
|
||||
|
||||
const table = markdown.createTable(rows, [
|
||||
{ name: 'Country', align: 'left' },
|
||||
const table = createTable(rows, [
|
||||
{ name: 'Country' },
|
||||
{ name: 'Channels', align: 'right' },
|
||||
{ name: 'Playlist', align: 'left', nowrap: true }
|
||||
{ name: 'Playlist', nowrap: true }
|
||||
])
|
||||
|
||||
await file.create('./.readme/_countries.md', table)
|
||||
}
|
||||
|
||||
async function generateRegionTable() {
|
||||
logger.info('Generating region table...')
|
||||
|
||||
async function createLanguageTable() {
|
||||
logger.info('creating language table...')
|
||||
const rows = []
|
||||
for (const region of regions) {
|
||||
await api.languages.load()
|
||||
const items = await parser.parseLogs(`${LOGS_DIR}/languages.log`)
|
||||
for (const item of items) {
|
||||
const code = file.getFilename(item.filepath)
|
||||
const language = await api.languages.find({ code })
|
||||
rows.push({
|
||||
region: region.name,
|
||||
channels: region.count,
|
||||
playlist: `<code>https://iptv-org.github.io/iptv/regions/${region.code.toLowerCase()}.m3u</code>`
|
||||
name: language ? language.name : 'Undefined',
|
||||
channels: item.count,
|
||||
playlist: `<code>https://iptv-org.github.io/iptv/${item.filepath}</code>`
|
||||
})
|
||||
}
|
||||
|
||||
const table = markdown.createTable(rows, [
|
||||
{ name: 'Region', align: 'left' },
|
||||
{ name: 'Channels', align: 'right' },
|
||||
{ name: 'Playlist', align: 'left', nowrap: true }
|
||||
])
|
||||
|
||||
await file.create('./.readme/_regions.md', table)
|
||||
}
|
||||
|
||||
async function generateLanguageTable() {
|
||||
logger.info('Generating language table...')
|
||||
|
||||
const rows = []
|
||||
for (const language of languages) {
|
||||
rows.push({
|
||||
language: language.name,
|
||||
channels: language.count,
|
||||
playlist: `<code>https://iptv-org.github.io/iptv/languages/${language.code}.m3u</code>`
|
||||
})
|
||||
}
|
||||
|
||||
const table = markdown.createTable(rows, [
|
||||
const table = createTable(rows, [
|
||||
{ name: 'Language', align: 'left' },
|
||||
{ name: 'Channels', align: 'right' },
|
||||
{ name: 'Playlist', align: 'left', nowrap: true }
|
||||
@ -113,28 +91,33 @@ async function generateLanguageTable() {
|
||||
await file.create('./.readme/_languages.md', table)
|
||||
}
|
||||
|
||||
async function updateReadme() {
|
||||
logger.info('Updating README.md...')
|
||||
async function createRegionTable() {
|
||||
logger.info('creating region table...')
|
||||
const rows = []
|
||||
await api.regions.load()
|
||||
const items = await parser.parseLogs(`${LOGS_DIR}/regions.log`)
|
||||
for (const item of items) {
|
||||
const code = file.getFilename(item.filepath)
|
||||
const region = await api.regions.find({ code: code.toUpperCase() })
|
||||
rows.push({
|
||||
name: region ? region.name : 'Undefined',
|
||||
channels: item.count,
|
||||
playlist: `<code>https://iptv-org.github.io/iptv/${item.filepath}</code>`
|
||||
})
|
||||
}
|
||||
|
||||
const table = createTable(rows, [
|
||||
{ name: 'Region', align: 'left' },
|
||||
{ name: 'Channels', align: 'right' },
|
||||
{ name: 'Playlist', align: 'left', nowrap: true }
|
||||
])
|
||||
|
||||
await file.create('./.readme/_regions.md', table)
|
||||
}
|
||||
|
||||
async function updateReadme() {
|
||||
logger.info('updating readme.md...')
|
||||
const config = require(file.resolve(options.config))
|
||||
await file.createDir(file.dirname(config.build))
|
||||
await markdown.compile(options.config)
|
||||
}
|
||||
|
||||
async function setUp() {
|
||||
categories = await parser.parseLogs(`${LOGS_PATH}/generate-playlists/categories.log`)
|
||||
countries = await parser.parseLogs(`${LOGS_PATH}/generate-playlists/countries.log`)
|
||||
languages = await parser.parseLogs(`${LOGS_PATH}/generate-playlists/languages.log`)
|
||||
regions = await parser.parseLogs(`${LOGS_PATH}/generate-playlists/regions.log`)
|
||||
}
|
||||
|
||||
function getCountryFlag(code) {
|
||||
switch (code) {
|
||||
case 'UK':
|
||||
return '🇬🇧'
|
||||
case 'UNDEFINED':
|
||||
return ''
|
||||
default:
|
||||
return code.replace(/./g, char => String.fromCodePoint(char.charCodeAt(0) + 127397))
|
||||
}
|
||||
}
|
||||
|
@ -3,35 +3,6 @@ const file = require('./file')
|
||||
|
||||
const markdown = {}
|
||||
|
||||
markdown.createTable = function (data, cols) {
|
||||
let output = '<table>\n'
|
||||
|
||||
output += ' <thead>\n <tr>'
|
||||
for (let column of cols) {
|
||||
output += `<th align="${column.align}">${column.name}</th>`
|
||||
}
|
||||
output += '</tr>\n </thead>\n'
|
||||
|
||||
output += ' <tbody>\n'
|
||||
for (let item of data) {
|
||||
output += ' <tr>'
|
||||
let i = 0
|
||||
for (let prop in item) {
|
||||
const column = cols[i]
|
||||
let nowrap = column.nowrap
|
||||
let align = column.align
|
||||
output += `<td align="${align}"${nowrap ? ' nowrap' : ''}>${item[prop]}</td>`
|
||||
i++
|
||||
}
|
||||
output += '</tr>\n'
|
||||
}
|
||||
output += ' </tbody>\n'
|
||||
|
||||
output += '</table>'
|
||||
|
||||
return output
|
||||
}
|
||||
|
||||
markdown.compile = function (filepath) {
|
||||
markdownInclude.compileFiles(file.resolve(filepath))
|
||||
}
|
||||
|
32
scripts/core/table.js
Normal file
32
scripts/core/table.js
Normal file
@ -0,0 +1,32 @@
|
||||
const table = {}
|
||||
|
||||
table.create = function (data, cols) {
|
||||
let output = '<table>\n'
|
||||
|
||||
output += ' <thead>\n <tr>'
|
||||
for (let column of cols) {
|
||||
output += `<th align="left">${column.name}</th>`
|
||||
}
|
||||
output += '</tr>\n </thead>\n'
|
||||
|
||||
output += ' <tbody>\n'
|
||||
for (let item of data) {
|
||||
output += ' <tr>'
|
||||
let i = 0
|
||||
for (let prop in item) {
|
||||
const column = cols[i]
|
||||
let nowrap = column.nowrap ? ` nowrap` : ''
|
||||
let align = column.align ? ` align="${column.align}"` : ''
|
||||
output += `<td${align}${nowrap}>${item[prop]}</td>`
|
||||
i++
|
||||
}
|
||||
output += '</tr>\n'
|
||||
}
|
||||
output += ' </tbody>\n'
|
||||
|
||||
output += '</table>'
|
||||
|
||||
return output
|
||||
}
|
||||
|
||||
module.exports = table
|
418
tests/__data__/expected/_readme.md
Normal file
418
tests/__data__/expected/_readme.md
Normal file
@ -0,0 +1,418 @@
|
||||
# IPTV
|
||||
|
||||
[![auto-update](https://github.com/iptv-org/iptv/actions/workflows/auto-update.yml/badge.svg)](https://github.com/iptv-org/iptv/actions/workflows/auto-update.yml)
|
||||
|
||||
Collection of publicly available IPTV (Internet Protocol television) channels from all over the world.
|
||||
|
||||
## Usage
|
||||
|
||||
![VLC Network Panel](https://github.com/iptv-org/iptv/raw/master/.readme/preview.png)
|
||||
|
||||
To watch IPTV, simply insert one of the links below into any player that supports M3U playlists:
|
||||
|
||||
- `https://iptv-org.github.io/iptv/index.m3u`
|
||||
- `https://iptv-org.github.io/iptv/index.nsfw.m3u` (includes adult channels)
|
||||
- `https://iptv-org.github.io/iptv/index.category.m3u` (grouped by category)
|
||||
- `https://iptv-org.github.io/iptv/index.country.m3u` (grouped by country)
|
||||
- `https://iptv-org.github.io/iptv/index.language.m3u` (grouped by language)
|
||||
- `https://iptv-org.github.io/iptv/index.region.m3u` (grouped by region)
|
||||
|
||||
### Playlists by category
|
||||
|
||||
<details>
|
||||
<summary>Expand</summary>
|
||||
<br>
|
||||
|
||||
<!-- prettier-ignore -->
|
||||
<table>
|
||||
<thead>
|
||||
<tr><th align="left">Category</th><th align="left">Channels</th><th align="left">Playlist</th></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><td>Auto</td><td align="right">0</td><td nowrap><code>https://iptv-org.github.io/iptv/categories/auto.m3u</code></td></tr>
|
||||
<tr><td>Animation</td><td align="right">0</td><td nowrap><code>https://iptv-org.github.io/iptv/categories/animation.m3u</code></td></tr>
|
||||
<tr><td>Business</td><td align="right">0</td><td nowrap><code>https://iptv-org.github.io/iptv/categories/business.m3u</code></td></tr>
|
||||
<tr><td>Classic</td><td align="right">0</td><td nowrap><code>https://iptv-org.github.io/iptv/categories/classic.m3u</code></td></tr>
|
||||
<tr><td>Comedy</td><td align="right">0</td><td nowrap><code>https://iptv-org.github.io/iptv/categories/comedy.m3u</code></td></tr>
|
||||
<tr><td>Cooking</td><td align="right">0</td><td nowrap><code>https://iptv-org.github.io/iptv/categories/cooking.m3u</code></td></tr>
|
||||
<tr><td>Culture</td><td align="right">0</td><td nowrap><code>https://iptv-org.github.io/iptv/categories/culture.m3u</code></td></tr>
|
||||
<tr><td>Documentary</td><td align="right">0</td><td nowrap><code>https://iptv-org.github.io/iptv/categories/documentary.m3u</code></td></tr>
|
||||
<tr><td>Education</td><td align="right">0</td><td nowrap><code>https://iptv-org.github.io/iptv/categories/education.m3u</code></td></tr>
|
||||
<tr><td>Entertainment</td><td align="right">0</td><td nowrap><code>https://iptv-org.github.io/iptv/categories/entertainment.m3u</code></td></tr>
|
||||
<tr><td>Family</td><td align="right">0</td><td nowrap><code>https://iptv-org.github.io/iptv/categories/family.m3u</code></td></tr>
|
||||
<tr><td>General</td><td align="right">2</td><td nowrap><code>https://iptv-org.github.io/iptv/categories/general.m3u</code></td></tr>
|
||||
<tr><td>Kids</td><td align="right">0</td><td nowrap><code>https://iptv-org.github.io/iptv/categories/kids.m3u</code></td></tr>
|
||||
<tr><td>Legislative</td><td align="right">0</td><td nowrap><code>https://iptv-org.github.io/iptv/categories/legislative.m3u</code></td></tr>
|
||||
<tr><td>Lifestyle</td><td align="right">0</td><td nowrap><code>https://iptv-org.github.io/iptv/categories/lifestyle.m3u</code></td></tr>
|
||||
<tr><td>Movies</td><td align="right">0</td><td nowrap><code>https://iptv-org.github.io/iptv/categories/movies.m3u</code></td></tr>
|
||||
<tr><td>Music</td><td align="right">0</td><td nowrap><code>https://iptv-org.github.io/iptv/categories/music.m3u</code></td></tr>
|
||||
<tr><td>News</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/categories/news.m3u</code></td></tr>
|
||||
<tr><td>Outdoor</td><td align="right">0</td><td nowrap><code>https://iptv-org.github.io/iptv/categories/outdoor.m3u</code></td></tr>
|
||||
<tr><td>Relax</td><td align="right">0</td><td nowrap><code>https://iptv-org.github.io/iptv/categories/relax.m3u</code></td></tr>
|
||||
<tr><td>Religious</td><td align="right">0</td><td nowrap><code>https://iptv-org.github.io/iptv/categories/religious.m3u</code></td></tr>
|
||||
<tr><td>Series</td><td align="right">0</td><td nowrap><code>https://iptv-org.github.io/iptv/categories/series.m3u</code></td></tr>
|
||||
<tr><td>Science</td><td align="right">0</td><td nowrap><code>https://iptv-org.github.io/iptv/categories/science.m3u</code></td></tr>
|
||||
<tr><td>Shop</td><td align="right">0</td><td nowrap><code>https://iptv-org.github.io/iptv/categories/shop.m3u</code></td></tr>
|
||||
<tr><td>Sports</td><td align="right">0</td><td nowrap><code>https://iptv-org.github.io/iptv/categories/sports.m3u</code></td></tr>
|
||||
<tr><td>Travel</td><td align="right">0</td><td nowrap><code>https://iptv-org.github.io/iptv/categories/travel.m3u</code></td></tr>
|
||||
<tr><td>Weather</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/categories/weather.m3u</code></td></tr>
|
||||
<tr><td>XXX</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/categories/xxx.m3u</code></td></tr>
|
||||
<tr><td>Undefined</td><td align="right">3</td><td nowrap><code>https://iptv-org.github.io/iptv/categories/undefined.m3u</code></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</details>
|
||||
|
||||
### Playlists by country
|
||||
|
||||
<details>
|
||||
<summary>Expand</summary>
|
||||
<br>
|
||||
|
||||
<!-- prettier-ignore -->
|
||||
<table>
|
||||
<thead>
|
||||
<tr><th align="left">Country</th><th align="left">Channels</th><th align="left">Playlist</th></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><td>🇦🇫 Afghanistan</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/af.m3u</code></td></tr>
|
||||
<tr><td>🇦🇱 Albania</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/al.m3u</code></td></tr>
|
||||
<tr><td>🇩🇿 Algeria</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/dz.m3u</code></td></tr>
|
||||
<tr><td>🇦🇸 American Samoa</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/as.m3u</code></td></tr>
|
||||
<tr><td>🇦🇩 Andorra</td><td align="right">2</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/ad.m3u</code></td></tr>
|
||||
<tr><td>🇦🇴 Angola</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/ao.m3u</code></td></tr>
|
||||
<tr><td>🇦🇮 Anguilla</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/ai.m3u</code></td></tr>
|
||||
<tr><td>🇦🇶 Antarctica</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/aq.m3u</code></td></tr>
|
||||
<tr><td>🇦🇬 Antigua and Barbuda</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/ag.m3u</code></td></tr>
|
||||
<tr><td>🇦🇷 Argentina</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/ar.m3u</code></td></tr>
|
||||
<tr><td>🇦🇲 Armenia</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/am.m3u</code></td></tr>
|
||||
<tr><td>🇦🇼 Aruba</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/aw.m3u</code></td></tr>
|
||||
<tr><td>🇦🇺 Australia</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/au.m3u</code></td></tr>
|
||||
<tr><td>🇦🇹 Austria</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/at.m3u</code></td></tr>
|
||||
<tr><td>🇦🇿 Azerbaijan</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/az.m3u</code></td></tr>
|
||||
<tr><td>🇧🇸 Bahamas</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/bs.m3u</code></td></tr>
|
||||
<tr><td>🇧🇭 Bahrain</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/bh.m3u</code></td></tr>
|
||||
<tr><td>🇧🇩 Bangladesh</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/bd.m3u</code></td></tr>
|
||||
<tr><td>🇧🇧 Barbados</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/bb.m3u</code></td></tr>
|
||||
<tr><td>🇧🇾 Belarus</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/by.m3u</code></td></tr>
|
||||
<tr><td>🇧🇪 Belgium</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/be.m3u</code></td></tr>
|
||||
<tr><td>🇧🇿 Belize</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/bz.m3u</code></td></tr>
|
||||
<tr><td>🇧🇯 Benin</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/bj.m3u</code></td></tr>
|
||||
<tr><td>🇧🇲 Bermuda</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/bm.m3u</code></td></tr>
|
||||
<tr><td>🇧🇹 Bhutan</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/bt.m3u</code></td></tr>
|
||||
<tr><td>🇧🇴 Bolivia</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/bo.m3u</code></td></tr>
|
||||
<tr><td>🇧🇶 Bonaire</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/bq.m3u</code></td></tr>
|
||||
<tr><td>🇧🇦 Bosnia and Herzegovina</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/ba.m3u</code></td></tr>
|
||||
<tr><td>🇧🇼 Botswana</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/bw.m3u</code></td></tr>
|
||||
<tr><td>🇧🇻 Bouvet Island</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/bv.m3u</code></td></tr>
|
||||
<tr><td>🇧🇷 Brazil</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/br.m3u</code></td></tr>
|
||||
<tr><td>🇮🇴 British Indian Ocean Territory</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/io.m3u</code></td></tr>
|
||||
<tr><td>🇻🇬 British Virgin Islands</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/vg.m3u</code></td></tr>
|
||||
<tr><td>🇧🇳 Brunei</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/bn.m3u</code></td></tr>
|
||||
<tr><td>🇧🇬 Bulgaria</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/bg.m3u</code></td></tr>
|
||||
<tr><td>🇧🇫 Burkina Faso</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/bf.m3u</code></td></tr>
|
||||
<tr><td>🇧🇮 Burundi</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/bi.m3u</code></td></tr>
|
||||
<tr><td>🇰🇭 Cambodia</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/kh.m3u</code></td></tr>
|
||||
<tr><td>🇨🇲 Cameroon</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/cm.m3u</code></td></tr>
|
||||
<tr><td>🇨🇦 Canada</td><td align="right">2</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/ca.m3u</code></td></tr>
|
||||
<tr><td>🇨🇻 Cape Verde</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/cv.m3u</code></td></tr>
|
||||
<tr><td>🇰🇾 Cayman Islands</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/ky.m3u</code></td></tr>
|
||||
<tr><td>🇨🇫 Central African Republic</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/cf.m3u</code></td></tr>
|
||||
<tr><td>🇹🇩 Chad</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/td.m3u</code></td></tr>
|
||||
<tr><td>🇨🇱 Chile</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/cl.m3u</code></td></tr>
|
||||
<tr><td>🇨🇳 China</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/cn.m3u</code></td></tr>
|
||||
<tr><td>🇨🇽 Christmas Island</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/cx.m3u</code></td></tr>
|
||||
<tr><td>🇨🇨 Cocos (Keeling) Islands</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/cc.m3u</code></td></tr>
|
||||
<tr><td>🇨🇴 Colombia</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/co.m3u</code></td></tr>
|
||||
<tr><td>🇰🇲 Comoros</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/km.m3u</code></td></tr>
|
||||
<tr><td>🇨🇰 Cook Islands</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/ck.m3u</code></td></tr>
|
||||
<tr><td>🇨🇷 Costa Rica</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/cr.m3u</code></td></tr>
|
||||
<tr><td>🇭🇷 Croatia</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/hr.m3u</code></td></tr>
|
||||
<tr><td>🇨🇺 Cuba</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/cu.m3u</code></td></tr>
|
||||
<tr><td>🇨🇼 Curacao</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/cw.m3u</code></td></tr>
|
||||
<tr><td>🇨🇾 Cyprus</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/cy.m3u</code></td></tr>
|
||||
<tr><td>🇨🇿 Czech Republic</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/cz.m3u</code></td></tr>
|
||||
<tr><td>🇨🇩 Democratic Republic of the Congo</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/cd.m3u</code></td></tr>
|
||||
<tr><td>🇩🇰 Denmark</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/dk.m3u</code></td></tr>
|
||||
<tr><td>🇩🇯 Djibouti</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/dj.m3u</code></td></tr>
|
||||
<tr><td>🇩🇲 Dominica</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/dm.m3u</code></td></tr>
|
||||
<tr><td>🇩🇴 Dominican Republic</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/do.m3u</code></td></tr>
|
||||
<tr><td>🇹🇱 East Timor</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/tl.m3u</code></td></tr>
|
||||
<tr><td>🇪🇨 Ecuador</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/ec.m3u</code></td></tr>
|
||||
<tr><td>🇪🇬 Egypt</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/eg.m3u</code></td></tr>
|
||||
<tr><td>🇸🇻 El Salvador</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/sv.m3u</code></td></tr>
|
||||
<tr><td>🇬🇶 Equatorial Guinea</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/gq.m3u</code></td></tr>
|
||||
<tr><td>🇪🇷 Eritrea</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/er.m3u</code></td></tr>
|
||||
<tr><td>🇪🇪 Estonia</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/ee.m3u</code></td></tr>
|
||||
<tr><td>🇪🇹 Ethiopia</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/et.m3u</code></td></tr>
|
||||
<tr><td>🇫🇰 Falkland Islands</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/fk.m3u</code></td></tr>
|
||||
<tr><td>🇫🇴 Faroe Islands</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/fo.m3u</code></td></tr>
|
||||
<tr><td>🇫🇯 Fiji</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/fj.m3u</code></td></tr>
|
||||
<tr><td>🇫🇮 Finland</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/fi.m3u</code></td></tr>
|
||||
<tr><td>🇫🇷 France</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/fr.m3u</code></td></tr>
|
||||
<tr><td>🇬🇫 French Guiana</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/gf.m3u</code></td></tr>
|
||||
<tr><td>🇵🇫 French Polynesia</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/pf.m3u</code></td></tr>
|
||||
<tr><td>🇹🇫 French Southern Territories</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/tf.m3u</code></td></tr>
|
||||
<tr><td>🇬🇦 Gabon</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/ga.m3u</code></td></tr>
|
||||
<tr><td>🇬🇲 Gambia</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/gm.m3u</code></td></tr>
|
||||
<tr><td>🇬🇪 Georgia</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/ge.m3u</code></td></tr>
|
||||
<tr><td>🇩🇪 Germany</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/de.m3u</code></td></tr>
|
||||
<tr><td>🇬🇭 Ghana</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/gh.m3u</code></td></tr>
|
||||
<tr><td>🇬🇮 Gibraltar</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/gi.m3u</code></td></tr>
|
||||
<tr><td>🇬🇷 Greece</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/gr.m3u</code></td></tr>
|
||||
<tr><td>🇬🇱 Greenland</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/gl.m3u</code></td></tr>
|
||||
<tr><td>🇬🇩 Grenada</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/gd.m3u</code></td></tr>
|
||||
<tr><td>🇬🇵 Guadeloupe</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/gp.m3u</code></td></tr>
|
||||
<tr><td>🇬🇺 Guam</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/gu.m3u</code></td></tr>
|
||||
<tr><td>🇬🇹 Guatemala</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/gt.m3u</code></td></tr>
|
||||
<tr><td>🇬🇬 Guernsey</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/gg.m3u</code></td></tr>
|
||||
<tr><td>🇬🇳 Guinea</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/gn.m3u</code></td></tr>
|
||||
<tr><td>🇬🇼 Guinea-Bissau</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/gw.m3u</code></td></tr>
|
||||
<tr><td>🇬🇾 Guyana</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/gy.m3u</code></td></tr>
|
||||
<tr><td>🇭🇹 Haiti</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/ht.m3u</code></td></tr>
|
||||
<tr><td>🇭🇲 Heard Island and McDonald Islands</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/hm.m3u</code></td></tr>
|
||||
<tr><td>🇭🇳 Honduras</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/hn.m3u</code></td></tr>
|
||||
<tr><td>🇭🇰 Hong Kong</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/hk.m3u</code></td></tr>
|
||||
<tr><td>🇭🇺 Hungary</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/hu.m3u</code></td></tr>
|
||||
<tr><td>🇮🇸 Iceland</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/is.m3u</code></td></tr>
|
||||
<tr><td>🇮🇳 India</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/in.m3u</code></td></tr>
|
||||
<tr><td>🇮🇩 Indonesia</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/id.m3u</code></td></tr>
|
||||
<tr><td>🇮🇷 Iran</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/ir.m3u</code></td></tr>
|
||||
<tr><td>🇮🇶 Iraq</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/iq.m3u</code></td></tr>
|
||||
<tr><td>🇮🇪 Ireland</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/ie.m3u</code></td></tr>
|
||||
<tr><td>🇮🇲 Isle of Man</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/im.m3u</code></td></tr>
|
||||
<tr><td>🇮🇱 Israel</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/il.m3u</code></td></tr>
|
||||
<tr><td>🇮🇹 Italy</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/it.m3u</code></td></tr>
|
||||
<tr><td>🇨🇮 Ivory Coast</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/ci.m3u</code></td></tr>
|
||||
<tr><td>🇯🇲 Jamaica</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/jm.m3u</code></td></tr>
|
||||
<tr><td>🇯🇵 Japan</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/jp.m3u</code></td></tr>
|
||||
<tr><td>🇯🇪 Jersey</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/je.m3u</code></td></tr>
|
||||
<tr><td>🇯🇴 Jordan</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/jo.m3u</code></td></tr>
|
||||
<tr><td>🇰🇿 Kazakhstan</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/kz.m3u</code></td></tr>
|
||||
<tr><td>🇰🇪 Kenya</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/ke.m3u</code></td></tr>
|
||||
<tr><td>🇰🇮 Kiribati</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/ki.m3u</code></td></tr>
|
||||
<tr><td>🇽🇰 Kosovo</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/xk.m3u</code></td></tr>
|
||||
<tr><td>🇰🇼 Kuwait</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/kw.m3u</code></td></tr>
|
||||
<tr><td>🇰🇬 Kyrgyzstan</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/kg.m3u</code></td></tr>
|
||||
<tr><td>🇱🇦 Laos</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/la.m3u</code></td></tr>
|
||||
<tr><td>🇱🇻 Latvia</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/lv.m3u</code></td></tr>
|
||||
<tr><td>🇱🇧 Lebanon</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/lb.m3u</code></td></tr>
|
||||
<tr><td>🇱🇸 Lesotho</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/ls.m3u</code></td></tr>
|
||||
<tr><td>🇱🇷 Liberia</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/lr.m3u</code></td></tr>
|
||||
<tr><td>🇱🇾 Libya</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/ly.m3u</code></td></tr>
|
||||
<tr><td>🇱🇮 Liechtenstein</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/li.m3u</code></td></tr>
|
||||
<tr><td>🇱🇹 Lithuania</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/lt.m3u</code></td></tr>
|
||||
<tr><td>🇱🇺 Luxembourg</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/lu.m3u</code></td></tr>
|
||||
<tr><td>🇲🇴 Macao</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/mo.m3u</code></td></tr>
|
||||
<tr><td>🇲🇬 Madagascar</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/mg.m3u</code></td></tr>
|
||||
<tr><td>🇲🇼 Malawi</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/mw.m3u</code></td></tr>
|
||||
<tr><td>🇲🇾 Malaysia</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/my.m3u</code></td></tr>
|
||||
<tr><td>🇲🇻 Maldives</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/mv.m3u</code></td></tr>
|
||||
<tr><td>🇲🇱 Mali</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/ml.m3u</code></td></tr>
|
||||
<tr><td>🇲🇹 Malta</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/mt.m3u</code></td></tr>
|
||||
<tr><td>🇲🇭 Marshall Islands</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/mh.m3u</code></td></tr>
|
||||
<tr><td>🇲🇶 Martinique</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/mq.m3u</code></td></tr>
|
||||
<tr><td>🇲🇷 Mauritania</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/mr.m3u</code></td></tr>
|
||||
<tr><td>🇲🇺 Mauritius</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/mu.m3u</code></td></tr>
|
||||
<tr><td>🇾🇹 Mayotte</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/yt.m3u</code></td></tr>
|
||||
<tr><td>🇲🇽 Mexico</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/mx.m3u</code></td></tr>
|
||||
<tr><td>🇫🇲 Micronesia</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/fm.m3u</code></td></tr>
|
||||
<tr><td>🇲🇩 Moldova</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/md.m3u</code></td></tr>
|
||||
<tr><td>🇲🇨 Monaco</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/mc.m3u</code></td></tr>
|
||||
<tr><td>🇲🇳 Mongolia</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/mn.m3u</code></td></tr>
|
||||
<tr><td>🇲🇪 Montenegro</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/me.m3u</code></td></tr>
|
||||
<tr><td>🇲🇸 Montserrat</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/ms.m3u</code></td></tr>
|
||||
<tr><td>🇲🇦 Morocco</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/ma.m3u</code></td></tr>
|
||||
<tr><td>🇲🇿 Mozambique</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/mz.m3u</code></td></tr>
|
||||
<tr><td>🇲🇲 Myanmar (Burma)</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/mm.m3u</code></td></tr>
|
||||
<tr><td>🇳🇦 Namibia</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/na.m3u</code></td></tr>
|
||||
<tr><td>🇳🇷 Nauru</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/nr.m3u</code></td></tr>
|
||||
<tr><td>🇳🇵 Nepal</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/np.m3u</code></td></tr>
|
||||
<tr><td>🇳🇱 Netherlands</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/nl.m3u</code></td></tr>
|
||||
<tr><td>🇳🇨 New Caledonia</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/nc.m3u</code></td></tr>
|
||||
<tr><td>🇳🇿 New Zealand</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/nz.m3u</code></td></tr>
|
||||
<tr><td>🇳🇮 Nicaragua</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/ni.m3u</code></td></tr>
|
||||
<tr><td>🇳🇪 Niger</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/ne.m3u</code></td></tr>
|
||||
<tr><td>🇳🇬 Nigeria</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/ng.m3u</code></td></tr>
|
||||
<tr><td>🇳🇺 Niue</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/nu.m3u</code></td></tr>
|
||||
<tr><td>🇳🇫 Norfolk Island</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/nf.m3u</code></td></tr>
|
||||
<tr><td>🇰🇵 North Korea</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/kp.m3u</code></td></tr>
|
||||
<tr><td>🇲🇰 North Macedonia</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/mk.m3u</code></td></tr>
|
||||
<tr><td>🇲🇵 Northern Mariana Islands</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/mp.m3u</code></td></tr>
|
||||
<tr><td>🇳🇴 Norway</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/no.m3u</code></td></tr>
|
||||
<tr><td>🇴🇲 Oman</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/om.m3u</code></td></tr>
|
||||
<tr><td>🇵🇰 Pakistan</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/pk.m3u</code></td></tr>
|
||||
<tr><td>🇵🇼 Palau</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/pw.m3u</code></td></tr>
|
||||
<tr><td>🇵🇸 Palestine</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/ps.m3u</code></td></tr>
|
||||
<tr><td>🇵🇦 Panama</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/pa.m3u</code></td></tr>
|
||||
<tr><td>🇵🇬 Papua New Guinea</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/pg.m3u</code></td></tr>
|
||||
<tr><td>🇵🇾 Paraguay</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/py.m3u</code></td></tr>
|
||||
<tr><td>🇵🇪 Peru</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/pe.m3u</code></td></tr>
|
||||
<tr><td>🇵🇭 Philippines</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/ph.m3u</code></td></tr>
|
||||
<tr><td>🇵🇳 Pitcairn Islands</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/pn.m3u</code></td></tr>
|
||||
<tr><td>🇵🇱 Poland</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/pl.m3u</code></td></tr>
|
||||
<tr><td>🇵🇹 Portugal</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/pt.m3u</code></td></tr>
|
||||
<tr><td>🇵🇷 Puerto Rico</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/pr.m3u</code></td></tr>
|
||||
<tr><td>🇶🇦 Qatar</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/qa.m3u</code></td></tr>
|
||||
<tr><td>🇨🇬 Republic of the Congo</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/cg.m3u</code></td></tr>
|
||||
<tr><td>🇷🇴 Romania</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/ro.m3u</code></td></tr>
|
||||
<tr><td>🇷🇺 Russia</td><td align="right">2</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/ru.m3u</code></td></tr>
|
||||
<tr><td>🇷🇼 Rwanda</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/rw.m3u</code></td></tr>
|
||||
<tr><td>🇷🇪 Réunion</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/re.m3u</code></td></tr>
|
||||
<tr><td>🇧🇱 Saint Barthélemy</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/bl.m3u</code></td></tr>
|
||||
<tr><td>🇸🇭 Saint Helena</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/sh.m3u</code></td></tr>
|
||||
<tr><td>🇰🇳 Saint Kitts and Nevis</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/kn.m3u</code></td></tr>
|
||||
<tr><td>🇱🇨 Saint Lucia</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/lc.m3u</code></td></tr>
|
||||
<tr><td>🇲🇫 Saint Martin</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/mf.m3u</code></td></tr>
|
||||
<tr><td>🇵🇲 Saint Pierre and Miquelon</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/pm.m3u</code></td></tr>
|
||||
<tr><td>🇻🇨 Saint Vincent and the Grenadines</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/vc.m3u</code></td></tr>
|
||||
<tr><td>🇼🇸 Samoa</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/ws.m3u</code></td></tr>
|
||||
<tr><td>🇸🇲 San Marino</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/sm.m3u</code></td></tr>
|
||||
<tr><td>🇸🇦 Saudi Arabia</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/sa.m3u</code></td></tr>
|
||||
<tr><td>🇸🇳 Senegal</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/sn.m3u</code></td></tr>
|
||||
<tr><td>🇷🇸 Serbia</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/rs.m3u</code></td></tr>
|
||||
<tr><td>🇸🇨 Seychelles</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/sc.m3u</code></td></tr>
|
||||
<tr><td>🇸🇱 Sierra Leone</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/sl.m3u</code></td></tr>
|
||||
<tr><td>🇸🇬 Singapore</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/sg.m3u</code></td></tr>
|
||||
<tr><td>🇸🇽 Sint Maarten</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/sx.m3u</code></td></tr>
|
||||
<tr><td>🇸🇰 Slovakia</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/sk.m3u</code></td></tr>
|
||||
<tr><td>🇸🇮 Slovenia</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/si.m3u</code></td></tr>
|
||||
<tr><td>🇸🇧 Solomon Islands</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/sb.m3u</code></td></tr>
|
||||
<tr><td>🇸🇴 Somalia</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/so.m3u</code></td></tr>
|
||||
<tr><td>🇿🇦 South Africa</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/za.m3u</code></td></tr>
|
||||
<tr><td>🇬🇸 South Georgia and the South Sandwich Islands</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/gs.m3u</code></td></tr>
|
||||
<tr><td>🇰🇷 South Korea</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/kr.m3u</code></td></tr>
|
||||
<tr><td>🇸🇸 South Sudan</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/ss.m3u</code></td></tr>
|
||||
<tr><td>🇪🇸 Spain</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/es.m3u</code></td></tr>
|
||||
<tr><td>🇱🇰 Sri Lanka</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/lk.m3u</code></td></tr>
|
||||
<tr><td>🇸🇩 Sudan</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/sd.m3u</code></td></tr>
|
||||
<tr><td>🇸🇷 Suriname</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/sr.m3u</code></td></tr>
|
||||
<tr><td>🇸🇯 Svalbard and Jan Mayen</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/sj.m3u</code></td></tr>
|
||||
<tr><td>🇸🇿 Swaziland</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/sz.m3u</code></td></tr>
|
||||
<tr><td>🇸🇪 Sweden</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/se.m3u</code></td></tr>
|
||||
<tr><td>🇨🇭 Switzerland</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/ch.m3u</code></td></tr>
|
||||
<tr><td>🇸🇾 Syria</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/sy.m3u</code></td></tr>
|
||||
<tr><td>🇸🇹 São Tomé and Príncipe</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/st.m3u</code></td></tr>
|
||||
<tr><td>🇹🇼 Taiwan</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/tw.m3u</code></td></tr>
|
||||
<tr><td>🇹🇯 Tajikistan</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/tj.m3u</code></td></tr>
|
||||
<tr><td>🇹🇿 Tanzania</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/tz.m3u</code></td></tr>
|
||||
<tr><td>🇹🇭 Thailand</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/th.m3u</code></td></tr>
|
||||
<tr><td>🇹🇬 Togo</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/tg.m3u</code></td></tr>
|
||||
<tr><td>🇹🇰 Tokelau</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/tk.m3u</code></td></tr>
|
||||
<tr><td>🇹🇴 Tonga</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/to.m3u</code></td></tr>
|
||||
<tr><td>🇹🇹 Trinidad and Tobago</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/tt.m3u</code></td></tr>
|
||||
<tr><td>🇹🇳 Tunisia</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/tn.m3u</code></td></tr>
|
||||
<tr><td>🇹🇷 Turkey</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/tr.m3u</code></td></tr>
|
||||
<tr><td>🇹🇲 Turkmenistan</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/tm.m3u</code></td></tr>
|
||||
<tr><td>🇹🇨 Turks and Caicos Islands</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/tc.m3u</code></td></tr>
|
||||
<tr><td>🇹🇻 Tuvalu</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/tv.m3u</code></td></tr>
|
||||
<tr><td>🇺🇲 U.S. Minor Outlying Islands</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/um.m3u</code></td></tr>
|
||||
<tr><td>🇻🇮 U.S. Virgin Islands</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/vi.m3u</code></td></tr>
|
||||
<tr><td>🇺🇬 Uganda</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/ug.m3u</code></td></tr>
|
||||
<tr><td>🇺🇦 Ukraine</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/ua.m3u</code></td></tr>
|
||||
<tr><td>🇦🇪 United Arab Emirates</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/ae.m3u</code></td></tr>
|
||||
<tr><td>🇬🇧 United Kingdom</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/uk.m3u</code></td></tr>
|
||||
<tr><td>🇺🇸 United States</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/us.m3u</code></td></tr>
|
||||
<tr><td>🇺🇾 Uruguay</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/uy.m3u</code></td></tr>
|
||||
<tr><td>🇺🇿 Uzbekistan</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/uz.m3u</code></td></tr>
|
||||
<tr><td>🇻🇺 Vanuatu</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/vu.m3u</code></td></tr>
|
||||
<tr><td>🇻🇦 Vatican City</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/va.m3u</code></td></tr>
|
||||
<tr><td>🇻🇪 Venezuela</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/ve.m3u</code></td></tr>
|
||||
<tr><td>🇻🇳 Vietnam</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/vn.m3u</code></td></tr>
|
||||
<tr><td>🇼🇫 Wallis and Futuna</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/wf.m3u</code></td></tr>
|
||||
<tr><td>🇪🇭 Western Sahara</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/eh.m3u</code></td></tr>
|
||||
<tr><td>🇾🇪 Yemen</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/ye.m3u</code></td></tr>
|
||||
<tr><td>🇿🇲 Zambia</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/zm.m3u</code></td></tr>
|
||||
<tr><td>🇿🇼 Zimbabwe</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/zw.m3u</code></td></tr>
|
||||
<tr><td>🇦🇽 Åland</td><td align="right">1</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/ax.m3u</code></td></tr>
|
||||
<tr><td>Undefined</td><td align="right">2</td><td nowrap><code>https://iptv-org.github.io/iptv/countries/undefined.m3u</code></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</details>
|
||||
|
||||
### Playlists by language
|
||||
|
||||
<details>
|
||||
<summary>Expand</summary>
|
||||
<br>
|
||||
|
||||
<!-- prettier-ignore -->
|
||||
<table>
|
||||
<thead>
|
||||
<tr><th align="left">Language</th><th align="left">Channels</th><th align="left">Playlist</th></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><td align="left">Catalan</td><td align="right">1</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">French</td><td align="right">1</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/languages/fra.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">2</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/languages/undefined.m3u</code></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</details>
|
||||
|
||||
### Playlists by region
|
||||
|
||||
<details>
|
||||
<summary>Expand</summary>
|
||||
<br>
|
||||
|
||||
<!-- prettier-ignore -->
|
||||
<table>
|
||||
<thead>
|
||||
<tr><th align="left">Region</th><th align="left">Channels</th><th align="left">Playlist</th></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><td align="left">Africa</td><td align="right">0</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/regions/afr.m3u</code></td></tr>
|
||||
<tr><td align="left">Americas</td><td align="right">1</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/regions/amer.m3u</code></td></tr>
|
||||
<tr><td align="left">Arab world</td><td align="right">0</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/regions/arab.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">Asia-Pacific</td><td align="right">0</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/regions/apac.m3u</code></td></tr>
|
||||
<tr><td align="left">Caribbean</td><td align="right">0</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/regions/carib.m3u</code></td></tr>
|
||||
<tr><td align="left">Central Asia</td><td align="right">0</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/regions/cas.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">Hispanic America</td><td align="right">0</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/regions/hispam.m3u</code></td></tr>
|
||||
<tr><td align="left">Latin America</td><td align="right">0</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/regions/latam.m3u</code></td></tr>
|
||||
<tr><td align="left">Latin America and the Caribbean</td><td align="right">0</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/regions/lac.m3u</code></td></tr>
|
||||
<tr><td align="left">Maghreb</td><td align="right">0</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/regions/maghreb.m3u</code></td></tr>
|
||||
<tr><td align="left">Middle East</td><td align="right">0</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/regions/mideast.m3u</code></td></tr>
|
||||
<tr><td align="left">Middle East and North Africa</td><td align="right">0</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/regions/mena.m3u</code></td></tr>
|
||||
<tr><td align="left">Nordics</td><td align="right">0</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/regions/nord.m3u</code></td></tr>
|
||||
<tr><td align="left">North America</td><td align="right">1</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/regions/noram.m3u</code></td></tr>
|
||||
<tr><td align="left">Northern America</td><td align="right">1</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/regions/nam.m3u</code></td></tr>
|
||||
<tr><td align="left">Oceania</td><td align="right">0</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/regions/oce.m3u</code></td></tr>
|
||||
<tr><td align="left">South Asia</td><td align="right">0</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/regions/sas.m3u</code></td></tr>
|
||||
<tr><td align="left">Sub-Saharan Africa</td><td align="right">0</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/regions/ssa.m3u</code></td></tr>
|
||||
<tr><td align="left">West Africa</td><td align="right">0</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/regions/wafr.m3u</code></td></tr>
|
||||
<tr><td align="left">Worldwide</td><td align="right">4</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/regions/int.m3u</code></td></tr>
|
||||
<tr><td align="left">Undefined</td><td align="right">2</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/regions/undefined.m3u</code></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</details>
|
||||
|
||||
## EPG
|
||||
|
||||
Playlists already have a built-in list of EPG, so players that support the `x-tvg-url` tag should load it automatically. If not, you can find a list of available programs here:
|
||||
|
||||
https://github.com/iptv-org/epg
|
||||
|
||||
## Resources
|
||||
|
||||
You can find links to various IPTV related resources in this repository [iptv-org/awesome-iptv](https://github.com/iptv-org/awesome-iptv).
|
||||
|
||||
## API
|
||||
|
||||
The API documentation can be found in the [iptv-org/api](https://github.com/iptv-org/api) repository.
|
||||
|
||||
## Contribution
|
||||
|
||||
Please make sure to read the [Contributing Guide](CONTRIBUTING.md) before sending an issue or making a pull request.
|
||||
|
||||
## Legal
|
||||
|
||||
No video files are stored in this repository. The repository simply contains user-submitted links to publicly available video stream URLs, which to the best of our knowledge have been intentionally made publicly by the copyright holders. If any links in these playlists infringe on your rights as a copyright holder, they may be removed by sending a pull request or opening an issue. However, note that we have **no control** over the destination of the link, and just removing the link from the playlist will not remove its contents from the web. Note that linking does not directly infringe copyright because no copy is made on the site providing the link, and thus this is **not** a valid reason to send a DMCA notice to GitHub. To remove this content from the web, you should contact the web host that's actually hosting the content (**not** GitHub, nor the maintainers of this repository).
|
@ -1,5 +0,0 @@
|
||||
{"channel_name":"ЛДПР ТВ","channel_id":"LDPRTV.ru","filepath":"tests/__data__/output/channels/ru.m3u","resolution":{"height":1080,"width":null},"status":{"label":"","code":"online","level":1},"url":"http://46.46.143.222:1935/live/mp4:ldpr.stream/playlist.m3u8","http":{"referrer":"","user-agent":""},"is_broken":false,"updated":false,"cluster_id":1,"_id":"2ST8btby3mmsgPF0"}
|
||||
{"channel_name":"BBC News HD","channel_id":"BBCNews.uk","filepath":"tests/__data__/output/channels/uk.m3u","resolution":{"height":720,"width":null},"status":{"label":"Not 24/7","code":"not_247","level":3},"url":"http://1111296894.rsc.cdn77.org/LS-ATL-54548-6/index.m3u8","http":{"referrer":"","user-agent":""},"is_broken":false,"updated":false,"cluster_id":3,"_id":"3TbieV1ptnZVCIdn"}
|
||||
{"channel_name":"ATV","channel_id":"AndorraTV.ad","filepath":"tests/__data__/output/channels/ad.m3u","resolution":{"height":720,"width":null},"status":{"label":"Offline","code":"offline","level":5},"url":"https://iptv-all.lanesh4d0w.repl.co/andorra/atv","http":{"referrer":"","user-agent":""},"is_broken":true,"updated":false,"cluster_id":1,"_id":"I6cjG2xCBRFFP4sz"}
|
||||
{"channel_name":"Kayhan TV","channel_id":"KayhanTV.af","filepath":"channels/af.m3u","resolution":{"height":720,"width":null},"status":{"label":"Geo-blocked","code":"geo_blocked","level":2},"url":"http://208.93.117.113/live/Stream1/playlist.m3u8","http":{"referrer":"","user-agent":""},"is_broken":false,"updated":false,"cluster_id":1,"_id":"cFFpFVzSn6xFMUF3"}
|
||||
{"channel_name":"Sharq","channel_id":"Sharq.af","filepath":"channels/af.m3u","resolution":{"height":576,"width":null},"status":{"label":"Offline","code":"offline","level":5},"url":"http://51.210.199.50/hls/stream.m3u8","http":{"referrer":"","user-agent":""},"is_broken":true,"updated":false,"cluster_id":1,"_id":"u7iyA6cjtf1iWWAZ"}
|
@ -1,6 +0,0 @@
|
||||
{"channel_name":"ЛДПР ТВ","channel_id":"LDPRTV.ru","filepath":"tests/__data__/output/channels/ru.m3u","resolution":{"width":1920,"height":1080},"status":{"label":"","code":"online","level":1},"url":"http://46.46.143.222:1935/live/mp4:ldpr.stream/playlist.m3u8","http":{"referrer":"","user-agent":""},"is_broken":false,"updated":true,"cluster_id":1,"_id":"2ST8btby3mmsgPF0"}
|
||||
{"channel_name":"BBC News HD","channel_id":"BBCNews.uk","filepath":"tests/__data__/output/channels/uk.m3u","resolution":{"height":720,"width":null},"status":{"label":"Not 24/7","code":"not_247","level":3},"url":"http://1111296894.rsc.cdn77.org/LS-ATL-54548-6/index.m3u8","http":{"referrer":"","user-agent":""},"is_broken":false,"updated":false,"cluster_id":3,"_id":"3TbieV1ptnZVCIdn"}
|
||||
{"channel_name":"ATV","channel_id":"AndorraTV.ad","filepath":"tests/__data__/output/channels/ad.m3u","resolution":{"height":720,"width":null},"status":{"label":"Offline","code":"offline","level":5},"url":"https://iptv-all.lanesh4d0w.repl.co/andorra/atv","http":{"referrer":"","user-agent":""},"is_broken":true,"updated":false,"cluster_id":1,"_id":"I6cjG2xCBRFFP4sz"}
|
||||
{"channel_name":"BBC News HD","channel_id":"AndorraTV.ad","filepath":"tests/__data__/output/channels/uk.m3u","resolution":{"height":720,"width":null},"status":{"label":"Not 24/7","code":"not_247","level":3},"url":"http://1111296894.rsc.cdn77.org/LS-ATL-54548-6/index.m3u8","http":{"referrer":"","user-agent":""},"is_broken":false,"updated":false,"cluster_id":3,"_id":"WTbieV1ptnZVCIdn"}
|
||||
{"channel_name":"Kayhan TV","channel_id":"KayhanTV.af","filepath":"channels/af.m3u","resolution":{"height":720,"width":null},"status":{"label":"Geo-blocked","code":"geo_blocked","level":2},"url":"http://208.93.117.113/live/Stream1/playlist.m3u8","http":{"referrer":"","user-agent":""},"is_broken":false,"updated":false,"cluster_id":1,"_id":"cFFpFVzSn6xFMUF3"}
|
||||
{"channel_name":"Sharq","channel_id":"Sharq.af","filepath":"channels/af.m3u","resolution":{"height":576,"width":null},"status":{"label":"Offline","code":"offline","level":5},"url":"http://51.210.199.50/hls/stream.m3u8","http":{"referrer":"","user-agent":""},"is_broken":true,"updated":false,"cluster_id":1,"_id":"u7iyA6cjtf1iWWAZ"}
|
@ -1,3 +0,0 @@
|
||||
{"channel_name":"ATV","channel_id":"ATV.ad","filepath":"tests/__data__/input/channels/ad.m3u","resolution":{"height":720,"width":null},"status":{"label":"Offline","code":"offline","level":5},"url":"https://iptv-all.lanesh4d0w.repl.co/andorra/atv","http":{"referrer":"","user-agent":""},"is_broken":true,"updated":false,"cluster_id":1,"_id":"verufR2ehwdsfou3"}
|
||||
{"channel_name":"Fox Sports 2 Asia (Thai)","channel_id":"FoxSports2AsiaThai.us","filepath":"tests/__data__/input/channels/us_blocked.m3u","resolution":{"height":720,"width":null},"status":{"label":"","code":"online","level":1},"url":"https://example.com/playlist.m3u8","http":{"referrer":"","user-agent":""},"is_broken":false,"updated":true,"cluster_id":1,"_id":"sLG04kZhqlEcYc25"}
|
||||
{"channel_id":null,"channel_name":"1A Network","filepath":"tests/__data__/input/channels/unsorted.m3u","resolution":{"height":720,"width":null},"status":{"label":"","code":"online","level":1},"url":"https://simultv.s.llnwi.net/n4s4/2ANetwork/interlink.m3u8","http":{"referrer":"","user-agent":""},"is_broken":false,"updated":true,"cluster_id":1,"_id":"Jruf9KFXRsa5BjYj"}
|
@ -1,3 +1,29 @@
|
||||
{"name":"General","slug":"general","count":1}
|
||||
{"name":"News","slug":"news","count":1}
|
||||
{"name":"Other","slug":"other","count":0}
|
||||
{"filepath":"categories/auto.m3u","count":0}
|
||||
{"filepath":"categories/animation.m3u","count":0}
|
||||
{"filepath":"categories/business.m3u","count":0}
|
||||
{"filepath":"categories/classic.m3u","count":0}
|
||||
{"filepath":"categories/comedy.m3u","count":0}
|
||||
{"filepath":"categories/cooking.m3u","count":0}
|
||||
{"filepath":"categories/culture.m3u","count":0}
|
||||
{"filepath":"categories/documentary.m3u","count":0}
|
||||
{"filepath":"categories/education.m3u","count":0}
|
||||
{"filepath":"categories/entertainment.m3u","count":0}
|
||||
{"filepath":"categories/family.m3u","count":0}
|
||||
{"filepath":"categories/general.m3u","count":2}
|
||||
{"filepath":"categories/kids.m3u","count":0}
|
||||
{"filepath":"categories/legislative.m3u","count":0}
|
||||
{"filepath":"categories/lifestyle.m3u","count":0}
|
||||
{"filepath":"categories/movies.m3u","count":0}
|
||||
{"filepath":"categories/music.m3u","count":0}
|
||||
{"filepath":"categories/news.m3u","count":1}
|
||||
{"filepath":"categories/outdoor.m3u","count":0}
|
||||
{"filepath":"categories/relax.m3u","count":0}
|
||||
{"filepath":"categories/religious.m3u","count":0}
|
||||
{"filepath":"categories/series.m3u","count":0}
|
||||
{"filepath":"categories/science.m3u","count":0}
|
||||
{"filepath":"categories/shop.m3u","count":0}
|
||||
{"filepath":"categories/sports.m3u","count":0}
|
||||
{"filepath":"categories/travel.m3u","count":0}
|
||||
{"filepath":"categories/weather.m3u","count":1}
|
||||
{"filepath":"categories/xxx.m3u","count":1}
|
||||
{"filepath":"categories/undefined.m3u","count":3}
|
@ -1,4 +1,251 @@
|
||||
{"name":"Andorra","code":"AD","count":0}
|
||||
{"name":"Russia","code":"RU","count":1}
|
||||
{"name":"United Kingdom","code":"UK","count":1}
|
||||
{"name":"Undefined","code":"UNDEFINED","count":0}
|
||||
{"filepath":"countries/af.m3u","count":1}
|
||||
{"filepath":"countries/al.m3u","count":1}
|
||||
{"filepath":"countries/dz.m3u","count":1}
|
||||
{"filepath":"countries/as.m3u","count":1}
|
||||
{"filepath":"countries/ad.m3u","count":2}
|
||||
{"filepath":"countries/ao.m3u","count":1}
|
||||
{"filepath":"countries/ai.m3u","count":1}
|
||||
{"filepath":"countries/aq.m3u","count":1}
|
||||
{"filepath":"countries/ag.m3u","count":1}
|
||||
{"filepath":"countries/ar.m3u","count":1}
|
||||
{"filepath":"countries/am.m3u","count":1}
|
||||
{"filepath":"countries/aw.m3u","count":1}
|
||||
{"filepath":"countries/au.m3u","count":1}
|
||||
{"filepath":"countries/at.m3u","count":1}
|
||||
{"filepath":"countries/az.m3u","count":1}
|
||||
{"filepath":"countries/bs.m3u","count":1}
|
||||
{"filepath":"countries/bh.m3u","count":1}
|
||||
{"filepath":"countries/bd.m3u","count":1}
|
||||
{"filepath":"countries/bb.m3u","count":1}
|
||||
{"filepath":"countries/by.m3u","count":1}
|
||||
{"filepath":"countries/be.m3u","count":1}
|
||||
{"filepath":"countries/bz.m3u","count":1}
|
||||
{"filepath":"countries/bj.m3u","count":1}
|
||||
{"filepath":"countries/bm.m3u","count":1}
|
||||
{"filepath":"countries/bt.m3u","count":1}
|
||||
{"filepath":"countries/bo.m3u","count":1}
|
||||
{"filepath":"countries/bq.m3u","count":1}
|
||||
{"filepath":"countries/ba.m3u","count":1}
|
||||
{"filepath":"countries/bw.m3u","count":1}
|
||||
{"filepath":"countries/bv.m3u","count":1}
|
||||
{"filepath":"countries/br.m3u","count":1}
|
||||
{"filepath":"countries/io.m3u","count":1}
|
||||
{"filepath":"countries/vg.m3u","count":1}
|
||||
{"filepath":"countries/bn.m3u","count":1}
|
||||
{"filepath":"countries/bg.m3u","count":1}
|
||||
{"filepath":"countries/bf.m3u","count":1}
|
||||
{"filepath":"countries/bi.m3u","count":1}
|
||||
{"filepath":"countries/kh.m3u","count":1}
|
||||
{"filepath":"countries/cm.m3u","count":1}
|
||||
{"filepath":"countries/ca.m3u","count":2}
|
||||
{"filepath":"countries/cv.m3u","count":1}
|
||||
{"filepath":"countries/ky.m3u","count":1}
|
||||
{"filepath":"countries/cf.m3u","count":1}
|
||||
{"filepath":"countries/td.m3u","count":1}
|
||||
{"filepath":"countries/cl.m3u","count":1}
|
||||
{"filepath":"countries/cn.m3u","count":1}
|
||||
{"filepath":"countries/cx.m3u","count":1}
|
||||
{"filepath":"countries/cc.m3u","count":1}
|
||||
{"filepath":"countries/co.m3u","count":1}
|
||||
{"filepath":"countries/km.m3u","count":1}
|
||||
{"filepath":"countries/ck.m3u","count":1}
|
||||
{"filepath":"countries/cr.m3u","count":1}
|
||||
{"filepath":"countries/hr.m3u","count":1}
|
||||
{"filepath":"countries/cu.m3u","count":1}
|
||||
{"filepath":"countries/cw.m3u","count":1}
|
||||
{"filepath":"countries/cy.m3u","count":1}
|
||||
{"filepath":"countries/cz.m3u","count":1}
|
||||
{"filepath":"countries/cd.m3u","count":1}
|
||||
{"filepath":"countries/dk.m3u","count":1}
|
||||
{"filepath":"countries/dj.m3u","count":1}
|
||||
{"filepath":"countries/dm.m3u","count":1}
|
||||
{"filepath":"countries/do.m3u","count":1}
|
||||
{"filepath":"countries/tl.m3u","count":1}
|
||||
{"filepath":"countries/ec.m3u","count":1}
|
||||
{"filepath":"countries/eg.m3u","count":1}
|
||||
{"filepath":"countries/sv.m3u","count":1}
|
||||
{"filepath":"countries/gq.m3u","count":1}
|
||||
{"filepath":"countries/er.m3u","count":1}
|
||||
{"filepath":"countries/ee.m3u","count":1}
|
||||
{"filepath":"countries/et.m3u","count":1}
|
||||
{"filepath":"countries/fk.m3u","count":1}
|
||||
{"filepath":"countries/fo.m3u","count":1}
|
||||
{"filepath":"countries/fj.m3u","count":1}
|
||||
{"filepath":"countries/fi.m3u","count":1}
|
||||
{"filepath":"countries/fr.m3u","count":1}
|
||||
{"filepath":"countries/gf.m3u","count":1}
|
||||
{"filepath":"countries/pf.m3u","count":1}
|
||||
{"filepath":"countries/tf.m3u","count":1}
|
||||
{"filepath":"countries/ga.m3u","count":1}
|
||||
{"filepath":"countries/gm.m3u","count":1}
|
||||
{"filepath":"countries/ge.m3u","count":1}
|
||||
{"filepath":"countries/de.m3u","count":1}
|
||||
{"filepath":"countries/gh.m3u","count":1}
|
||||
{"filepath":"countries/gi.m3u","count":1}
|
||||
{"filepath":"countries/gr.m3u","count":1}
|
||||
{"filepath":"countries/gl.m3u","count":1}
|
||||
{"filepath":"countries/gd.m3u","count":1}
|
||||
{"filepath":"countries/gp.m3u","count":1}
|
||||
{"filepath":"countries/gu.m3u","count":1}
|
||||
{"filepath":"countries/gt.m3u","count":1}
|
||||
{"filepath":"countries/gg.m3u","count":1}
|
||||
{"filepath":"countries/gn.m3u","count":1}
|
||||
{"filepath":"countries/gw.m3u","count":1}
|
||||
{"filepath":"countries/gy.m3u","count":1}
|
||||
{"filepath":"countries/ht.m3u","count":1}
|
||||
{"filepath":"countries/hm.m3u","count":1}
|
||||
{"filepath":"countries/hn.m3u","count":1}
|
||||
{"filepath":"countries/hk.m3u","count":1}
|
||||
{"filepath":"countries/hu.m3u","count":1}
|
||||
{"filepath":"countries/is.m3u","count":1}
|
||||
{"filepath":"countries/in.m3u","count":1}
|
||||
{"filepath":"countries/id.m3u","count":1}
|
||||
{"filepath":"countries/ir.m3u","count":1}
|
||||
{"filepath":"countries/iq.m3u","count":1}
|
||||
{"filepath":"countries/ie.m3u","count":1}
|
||||
{"filepath":"countries/im.m3u","count":1}
|
||||
{"filepath":"countries/il.m3u","count":1}
|
||||
{"filepath":"countries/it.m3u","count":1}
|
||||
{"filepath":"countries/ci.m3u","count":1}
|
||||
{"filepath":"countries/jm.m3u","count":1}
|
||||
{"filepath":"countries/jp.m3u","count":1}
|
||||
{"filepath":"countries/je.m3u","count":1}
|
||||
{"filepath":"countries/jo.m3u","count":1}
|
||||
{"filepath":"countries/kz.m3u","count":1}
|
||||
{"filepath":"countries/ke.m3u","count":1}
|
||||
{"filepath":"countries/ki.m3u","count":1}
|
||||
{"filepath":"countries/xk.m3u","count":1}
|
||||
{"filepath":"countries/kw.m3u","count":1}
|
||||
{"filepath":"countries/kg.m3u","count":1}
|
||||
{"filepath":"countries/la.m3u","count":1}
|
||||
{"filepath":"countries/lv.m3u","count":1}
|
||||
{"filepath":"countries/lb.m3u","count":1}
|
||||
{"filepath":"countries/ls.m3u","count":1}
|
||||
{"filepath":"countries/lr.m3u","count":1}
|
||||
{"filepath":"countries/ly.m3u","count":1}
|
||||
{"filepath":"countries/li.m3u","count":1}
|
||||
{"filepath":"countries/lt.m3u","count":1}
|
||||
{"filepath":"countries/lu.m3u","count":1}
|
||||
{"filepath":"countries/mo.m3u","count":1}
|
||||
{"filepath":"countries/mg.m3u","count":1}
|
||||
{"filepath":"countries/mw.m3u","count":1}
|
||||
{"filepath":"countries/my.m3u","count":1}
|
||||
{"filepath":"countries/mv.m3u","count":1}
|
||||
{"filepath":"countries/ml.m3u","count":1}
|
||||
{"filepath":"countries/mt.m3u","count":1}
|
||||
{"filepath":"countries/mh.m3u","count":1}
|
||||
{"filepath":"countries/mq.m3u","count":1}
|
||||
{"filepath":"countries/mr.m3u","count":1}
|
||||
{"filepath":"countries/mu.m3u","count":1}
|
||||
{"filepath":"countries/yt.m3u","count":1}
|
||||
{"filepath":"countries/mx.m3u","count":1}
|
||||
{"filepath":"countries/fm.m3u","count":1}
|
||||
{"filepath":"countries/md.m3u","count":1}
|
||||
{"filepath":"countries/mc.m3u","count":1}
|
||||
{"filepath":"countries/mn.m3u","count":1}
|
||||
{"filepath":"countries/me.m3u","count":1}
|
||||
{"filepath":"countries/ms.m3u","count":1}
|
||||
{"filepath":"countries/ma.m3u","count":1}
|
||||
{"filepath":"countries/mz.m3u","count":1}
|
||||
{"filepath":"countries/mm.m3u","count":1}
|
||||
{"filepath":"countries/na.m3u","count":1}
|
||||
{"filepath":"countries/nr.m3u","count":1}
|
||||
{"filepath":"countries/np.m3u","count":1}
|
||||
{"filepath":"countries/nl.m3u","count":1}
|
||||
{"filepath":"countries/nc.m3u","count":1}
|
||||
{"filepath":"countries/nz.m3u","count":1}
|
||||
{"filepath":"countries/ni.m3u","count":1}
|
||||
{"filepath":"countries/ne.m3u","count":1}
|
||||
{"filepath":"countries/ng.m3u","count":1}
|
||||
{"filepath":"countries/nu.m3u","count":1}
|
||||
{"filepath":"countries/nf.m3u","count":1}
|
||||
{"filepath":"countries/kp.m3u","count":1}
|
||||
{"filepath":"countries/mk.m3u","count":1}
|
||||
{"filepath":"countries/mp.m3u","count":1}
|
||||
{"filepath":"countries/no.m3u","count":1}
|
||||
{"filepath":"countries/om.m3u","count":1}
|
||||
{"filepath":"countries/pk.m3u","count":1}
|
||||
{"filepath":"countries/pw.m3u","count":1}
|
||||
{"filepath":"countries/ps.m3u","count":1}
|
||||
{"filepath":"countries/pa.m3u","count":1}
|
||||
{"filepath":"countries/pg.m3u","count":1}
|
||||
{"filepath":"countries/py.m3u","count":1}
|
||||
{"filepath":"countries/pe.m3u","count":1}
|
||||
{"filepath":"countries/ph.m3u","count":1}
|
||||
{"filepath":"countries/pn.m3u","count":1}
|
||||
{"filepath":"countries/pl.m3u","count":1}
|
||||
{"filepath":"countries/pt.m3u","count":1}
|
||||
{"filepath":"countries/pr.m3u","count":1}
|
||||
{"filepath":"countries/qa.m3u","count":1}
|
||||
{"filepath":"countries/cg.m3u","count":1}
|
||||
{"filepath":"countries/ro.m3u","count":1}
|
||||
{"filepath":"countries/ru.m3u","count":2}
|
||||
{"filepath":"countries/rw.m3u","count":1}
|
||||
{"filepath":"countries/re.m3u","count":1}
|
||||
{"filepath":"countries/bl.m3u","count":1}
|
||||
{"filepath":"countries/sh.m3u","count":1}
|
||||
{"filepath":"countries/kn.m3u","count":1}
|
||||
{"filepath":"countries/lc.m3u","count":1}
|
||||
{"filepath":"countries/mf.m3u","count":1}
|
||||
{"filepath":"countries/pm.m3u","count":1}
|
||||
{"filepath":"countries/vc.m3u","count":1}
|
||||
{"filepath":"countries/ws.m3u","count":1}
|
||||
{"filepath":"countries/sm.m3u","count":1}
|
||||
{"filepath":"countries/sa.m3u","count":1}
|
||||
{"filepath":"countries/sn.m3u","count":1}
|
||||
{"filepath":"countries/rs.m3u","count":1}
|
||||
{"filepath":"countries/sc.m3u","count":1}
|
||||
{"filepath":"countries/sl.m3u","count":1}
|
||||
{"filepath":"countries/sg.m3u","count":1}
|
||||
{"filepath":"countries/sx.m3u","count":1}
|
||||
{"filepath":"countries/sk.m3u","count":1}
|
||||
{"filepath":"countries/si.m3u","count":1}
|
||||
{"filepath":"countries/sb.m3u","count":1}
|
||||
{"filepath":"countries/so.m3u","count":1}
|
||||
{"filepath":"countries/za.m3u","count":1}
|
||||
{"filepath":"countries/gs.m3u","count":1}
|
||||
{"filepath":"countries/kr.m3u","count":1}
|
||||
{"filepath":"countries/ss.m3u","count":1}
|
||||
{"filepath":"countries/es.m3u","count":1}
|
||||
{"filepath":"countries/lk.m3u","count":1}
|
||||
{"filepath":"countries/sd.m3u","count":1}
|
||||
{"filepath":"countries/sr.m3u","count":1}
|
||||
{"filepath":"countries/sj.m3u","count":1}
|
||||
{"filepath":"countries/sz.m3u","count":1}
|
||||
{"filepath":"countries/se.m3u","count":1}
|
||||
{"filepath":"countries/ch.m3u","count":1}
|
||||
{"filepath":"countries/sy.m3u","count":1}
|
||||
{"filepath":"countries/st.m3u","count":1}
|
||||
{"filepath":"countries/tw.m3u","count":1}
|
||||
{"filepath":"countries/tj.m3u","count":1}
|
||||
{"filepath":"countries/tz.m3u","count":1}
|
||||
{"filepath":"countries/th.m3u","count":1}
|
||||
{"filepath":"countries/tg.m3u","count":1}
|
||||
{"filepath":"countries/tk.m3u","count":1}
|
||||
{"filepath":"countries/to.m3u","count":1}
|
||||
{"filepath":"countries/tt.m3u","count":1}
|
||||
{"filepath":"countries/tn.m3u","count":1}
|
||||
{"filepath":"countries/tr.m3u","count":1}
|
||||
{"filepath":"countries/tm.m3u","count":1}
|
||||
{"filepath":"countries/tc.m3u","count":1}
|
||||
{"filepath":"countries/tv.m3u","count":1}
|
||||
{"filepath":"countries/um.m3u","count":1}
|
||||
{"filepath":"countries/vi.m3u","count":1}
|
||||
{"filepath":"countries/ug.m3u","count":1}
|
||||
{"filepath":"countries/ua.m3u","count":1}
|
||||
{"filepath":"countries/ae.m3u","count":1}
|
||||
{"filepath":"countries/uk.m3u","count":1}
|
||||
{"filepath":"countries/us.m3u","count":1}
|
||||
{"filepath":"countries/uy.m3u","count":1}
|
||||
{"filepath":"countries/uz.m3u","count":1}
|
||||
{"filepath":"countries/vu.m3u","count":1}
|
||||
{"filepath":"countries/va.m3u","count":1}
|
||||
{"filepath":"countries/ve.m3u","count":1}
|
||||
{"filepath":"countries/vn.m3u","count":1}
|
||||
{"filepath":"countries/wf.m3u","count":1}
|
||||
{"filepath":"countries/eh.m3u","count":1}
|
||||
{"filepath":"countries/ye.m3u","count":1}
|
||||
{"filepath":"countries/zm.m3u","count":1}
|
||||
{"filepath":"countries/zw.m3u","count":1}
|
||||
{"filepath":"countries/ax.m3u","count":1}
|
||||
{"filepath":"countries/undefined.m3u","count":2}
|
@ -1,4 +1,5 @@
|
||||
{"name":"Catalan","code":"cat","count":0}
|
||||
{"name":"English","code":"eng","count":1}
|
||||
{"name":"Russian","code":"rus","count":1}
|
||||
{"name":"Undefined","code":"undefined","count":0}
|
||||
{"filepath":"languages/cat.m3u","count":1}
|
||||
{"filepath":"languages/eng.m3u","count":1}
|
||||
{"filepath":"languages/fra.m3u","count":1}
|
||||
{"filepath":"languages/rus.m3u","count":1}
|
||||
{"filepath":"languages/undefined.m3u","count":2}
|
@ -1,6 +1,25 @@
|
||||
{"name":"Asia","code":"ASIA","count":1}
|
||||
{"name":"Commonwealth of Independent States","code":"CIS","count":1}
|
||||
{"name":"Europe","code":"EUR","count":2}
|
||||
{"name":"Europe, the Middle East and Africa","code":"EMEA","count":2}
|
||||
{"name":"Worldwide","code":"INT","count":1}
|
||||
{"name":"Undefined","code":"UNDEFINED","count":0}
|
||||
{"filepath":"regions/afr.m3u","count":0}
|
||||
{"filepath":"regions/amer.m3u","count":1}
|
||||
{"filepath":"regions/arab.m3u","count":0}
|
||||
{"filepath":"regions/asia.m3u","count":1}
|
||||
{"filepath":"regions/apac.m3u","count":0}
|
||||
{"filepath":"regions/carib.m3u","count":0}
|
||||
{"filepath":"regions/cas.m3u","count":0}
|
||||
{"filepath":"regions/cis.m3u","count":1}
|
||||
{"filepath":"regions/eur.m3u","count":2}
|
||||
{"filepath":"regions/emea.m3u","count":2}
|
||||
{"filepath":"regions/hispam.m3u","count":0}
|
||||
{"filepath":"regions/latam.m3u","count":0}
|
||||
{"filepath":"regions/lac.m3u","count":0}
|
||||
{"filepath":"regions/maghreb.m3u","count":0}
|
||||
{"filepath":"regions/mideast.m3u","count":0}
|
||||
{"filepath":"regions/mena.m3u","count":0}
|
||||
{"filepath":"regions/nord.m3u","count":0}
|
||||
{"filepath":"regions/noram.m3u","count":1}
|
||||
{"filepath":"regions/nam.m3u","count":1}
|
||||
{"filepath":"regions/oce.m3u","count":0}
|
||||
{"filepath":"regions/sas.m3u","count":0}
|
||||
{"filepath":"regions/ssa.m3u","count":0}
|
||||
{"filepath":"regions/wafr.m3u","count":0}
|
||||
{"filepath":"regions/int.m3u","count":4}
|
||||
{"filepath":"regions/undefined.m3u","count":2}
|
@ -1,180 +0,0 @@
|
||||
# IPTV
|
||||
|
||||
[![auto-update](https://github.com/iptv-org/iptv/actions/workflows/auto-update.yml/badge.svg)](https://github.com/iptv-org/iptv/actions/workflows/auto-update.yml)
|
||||
|
||||
Collection of publicly available IPTV channels from all over the world.
|
||||
|
||||
## Usage
|
||||
|
||||
To watch IPTV you just need to paste this link `https://iptv-org.github.io/iptv/index.m3u` to any player which supports M3U-playlists.
|
||||
|
||||
![VLC Network Panel](.readme/preview.png)
|
||||
|
||||
Also you can instead use one of these playlists:
|
||||
|
||||
- `https://iptv-org.github.io/iptv/index.category.m3u` (grouped by category)
|
||||
- `https://iptv-org.github.io/iptv/index.language.m3u` (grouped by language)
|
||||
- `https://iptv-org.github.io/iptv/index.country.m3u` (grouped by country)
|
||||
- `https://iptv-org.github.io/iptv/index.region.m3u` (grouped by region)
|
||||
- `https://iptv-org.github.io/iptv/index.nsfw.m3u` (includes adult channels)
|
||||
|
||||
Or select one of the playlists from the list below.
|
||||
|
||||
### Playlists by category
|
||||
|
||||
<details>
|
||||
<summary>Expand</summary>
|
||||
<br>
|
||||
|
||||
<!-- prettier-ignore -->
|
||||
<table>
|
||||
<thead>
|
||||
<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" 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>
|
||||
|
||||
</details>
|
||||
|
||||
### Playlists by language
|
||||
|
||||
<details>
|
||||
<summary>Expand</summary>
|
||||
<br>
|
||||
|
||||
<!-- prettier-ignore -->
|
||||
<table>
|
||||
<thead>
|
||||
<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" 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>
|
||||
|
||||
</details>
|
||||
|
||||
### Playlists by region
|
||||
|
||||
<details>
|
||||
<summary>Expand</summary>
|
||||
<br>
|
||||
|
||||
<!-- prettier-ignore -->
|
||||
<table>
|
||||
<thead>
|
||||
<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" 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">Worldwide</td><td align="right">1</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/regions/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/regions/undefined.m3u</code></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</details>
|
||||
|
||||
### Playlists by country
|
||||
|
||||
<details>
|
||||
<summary>Expand</summary>
|
||||
<br>
|
||||
|
||||
<!-- prettier-ignore -->
|
||||
<table>
|
||||
<thead>
|
||||
<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" 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">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>
|
||||
|
||||
</details>
|
||||
|
||||
## For Developers
|
||||
|
||||
In addition to the above methods, you can also get a list of all available channels in JSON format.
|
||||
|
||||
To do this, you just have to make a GET request to:
|
||||
|
||||
```
|
||||
https://iptv-org.github.io/iptv/channels.json
|
||||
```
|
||||
|
||||
If successful, you should get the following response:
|
||||
|
||||
<details>
|
||||
<summary>Expand</summary>
|
||||
<br>
|
||||
|
||||
```
|
||||
[
|
||||
...
|
||||
{
|
||||
"name": "CNN",
|
||||
"logo": "https://i.imgur.com/ilZJT5s.png",
|
||||
"url": "http://ott-cdn.ucom.am/s27/index.m3u8",
|
||||
"categories": [
|
||||
{
|
||||
"name": "News",
|
||||
"slug": "news"
|
||||
}
|
||||
],
|
||||
"countries": [
|
||||
{
|
||||
"code": "us",
|
||||
"name": "United States"
|
||||
},
|
||||
{
|
||||
"code": "ca",
|
||||
"name": "Canada"
|
||||
}
|
||||
],
|
||||
"languages": [
|
||||
{
|
||||
"code": "eng",
|
||||
"name": "English"
|
||||
}
|
||||
],
|
||||
"tvg": {
|
||||
"id": "cnn.us",
|
||||
"name": "CNN",
|
||||
"url": "http://epg.streamstv.me/epg/guide-usa.xml.gz"
|
||||
}
|
||||
},
|
||||
...
|
||||
]
|
||||
```
|
||||
</details>
|
||||
|
||||
## EPG
|
||||
|
||||
Playlists already have a built-in list of EPG, so players that support the `url-tvg` tag should load it automatically. If not, you can find a list of available programs here:
|
||||
|
||||
https://github.com/iptv-org/epg
|
||||
|
||||
## Resources
|
||||
|
||||
You can find links to various IPTV related resources in this repository [iptv-org/awesome-iptv](https://github.com/iptv-org/awesome-iptv).
|
||||
|
||||
## Contribution
|
||||
|
||||
Please make sure to read the [Contributing Guide](CONTRIBUTING.md) before sending an issue or making a pull request.
|
||||
|
||||
## Legal
|
||||
|
||||
No video files are stored in this repository. The repository simply contains user-submitted links to publicly available video stream URLs, which to the best of our knowledge have been intentionally made publicly by the copyright holders. If any links in these playlists infringe on your rights as a copyright holder, they may be removed by sending a pull request or opening an issue. However, note that we have **no control** over the destination of the link, and just removing the link from the playlist will not remove its contents from the web. Note that linking does not directly infringe copyright because no copy is made on the site providing the link, and thus this is **not** a valid reason to send a DMCA notice to GitHub. To remove this content from the web, you should contact the web host that's actually hosting the content (**not** GitHub, nor the maintainers of this repository).
|
@ -1,23 +1,26 @@
|
||||
const fs = require('fs')
|
||||
const fs = require('fs-extra')
|
||||
const path = require('path')
|
||||
const { execSync } = require('child_process')
|
||||
|
||||
beforeEach(() => {
|
||||
fs.rmdirSync(path.resolve('tests/__data__/output'), { recursive: true })
|
||||
fs.emptyDirSync('tests/__data__/output')
|
||||
|
||||
const stdout = execSync(
|
||||
'DATA_DIR=tests/__data__/input/data LOGS_DIR=tests/__data__/input/logs/generators node scripts/commands/update-readme.js --config=tests/__data__/input/_readme.json',
|
||||
{ encoding: 'utf8' }
|
||||
)
|
||||
})
|
||||
|
||||
it('can update readme.md', () => {
|
||||
const result = execSync(
|
||||
'LOGS_PATH=tests/__data__/input/logs node scripts/commands/update-readme.js --config=tests/__data__/input/readme.json',
|
||||
{ encoding: 'utf8' }
|
||||
expect(content('tests/__data__/output/readme.md')).toEqual(
|
||||
content('tests/__data__/expected/_readme.md')
|
||||
)
|
||||
|
||||
const readme = fs.readFileSync(path.resolve('tests/__data__/output/readme.md'), {
|
||||
encoding: 'utf8'
|
||||
})
|
||||
const expected = fs.readFileSync(path.resolve('tests/__data__/input/readme.md'), {
|
||||
encoding: 'utf8'
|
||||
})
|
||||
|
||||
expect(readme).toBe(expected)
|
||||
})
|
||||
|
||||
function content(filepath) {
|
||||
const data = fs.readFileSync(path.resolve(filepath), {
|
||||
encoding: 'utf8'
|
||||
})
|
||||
|
||||
return JSON.stringify(data)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user