mirror of
https://github.com/iptv-org/iptv.git
synced 2024-09-06 00:02:24 +02:00
Merge branch 'master' into LaneSh4d0w-patch-1
This commit is contained in:
commit
2637ca83c0
161
.github/workflows/auto-update.yml
vendored
161
.github/workflows/auto-update.yml
vendored
@ -20,90 +20,6 @@ jobs:
|
||||
format:
|
||||
runs-on: ubuntu-latest
|
||||
needs: create-branch
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
ref: bot/auto-update
|
||||
- name: Install Dependencies
|
||||
run: npm install
|
||||
- name: Format Playlists
|
||||
run: node scripts/format.js
|
||||
- name: Commit Changes
|
||||
uses: stefanzweifel/git-auto-commit-action@v4
|
||||
with:
|
||||
commit_message: '[Bot] Formate playlists'
|
||||
commit_user_name: iptv-bot
|
||||
commit_user_email: 84861620+iptv-bot[bot]@users.noreply.github.com
|
||||
commit_author: 'iptv-bot[bot] <84861620+iptv-bot[bot]@users.noreply.github.com>'
|
||||
branch: bot/auto-update
|
||||
file_pattern: channels/*
|
||||
sort:
|
||||
runs-on: ubuntu-latest
|
||||
needs: format
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
ref: bot/auto-update
|
||||
- name: Install Dependencies
|
||||
run: npm install
|
||||
- name: Sort Channels
|
||||
run: node scripts/sort.js
|
||||
- name: Commit Changes
|
||||
uses: stefanzweifel/git-auto-commit-action@v4
|
||||
with:
|
||||
commit_message: '[Bot] Sort channels'
|
||||
commit_user_name: iptv-bot
|
||||
commit_user_email: 84861620+iptv-bot[bot]@users.noreply.github.com
|
||||
commit_author: 'iptv-bot[bot] <84861620+iptv-bot[bot]@users.noreply.github.com>'
|
||||
branch: bot/auto-update
|
||||
file_pattern: channels/*
|
||||
remove-duplicates:
|
||||
runs-on: ubuntu-latest
|
||||
needs: sort
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
ref: bot/auto-update
|
||||
- name: Install Dependencies
|
||||
run: npm install
|
||||
- name: Remove Duplicates
|
||||
run: node scripts/remove-duplicates.js
|
||||
- name: Commit Changes
|
||||
uses: stefanzweifel/git-auto-commit-action@v4
|
||||
with:
|
||||
commit_message: '[Bot] Remove duplicates'
|
||||
commit_user_name: iptv-bot
|
||||
commit_user_email: 84861620+iptv-bot[bot]@users.noreply.github.com
|
||||
commit_author: 'iptv-bot[bot] <84861620+iptv-bot[bot]@users.noreply.github.com>'
|
||||
branch: bot/auto-update
|
||||
file_pattern: channels/*
|
||||
filter:
|
||||
runs-on: ubuntu-latest
|
||||
needs: remove-duplicates
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
ref: bot/auto-update
|
||||
- name: Install Dependencies
|
||||
run: npm install
|
||||
- name: Filter Playlists
|
||||
run: node scripts/filter.js
|
||||
- name: Commit Changes
|
||||
uses: stefanzweifel/git-auto-commit-action@v4
|
||||
with:
|
||||
commit_message: '[Bot] Filter channels'
|
||||
commit_user_name: iptv-bot
|
||||
commit_user_email: 84861620+iptv-bot[bot]@users.noreply.github.com
|
||||
commit_author: 'iptv-bot[bot] <84861620+iptv-bot[bot]@users.noreply.github.com>'
|
||||
branch: bot/auto-update
|
||||
file_pattern: channels/*
|
||||
detect-resolution:
|
||||
runs-on: ubuntu-latest
|
||||
needs: filter
|
||||
continue-on-error: true
|
||||
strategy:
|
||||
fail-fast: false
|
||||
@ -277,10 +193,12 @@ jobs:
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
ref: bot/auto-update
|
||||
- name: Setup FFmpeg
|
||||
uses: FedericoCarboni/setup-ffmpeg@v1
|
||||
- name: Install Dependencies
|
||||
run: npm install
|
||||
- name: Detect Resolution
|
||||
run: node scripts/detect-resolution.js --country=${{ matrix.country }}
|
||||
- name: Format Playlists
|
||||
run: node scripts/format.js --country=${{ matrix.country }} --status --resolution --debug
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
@ -288,7 +206,7 @@ jobs:
|
||||
path: channels/${{ matrix.country }}.m3u
|
||||
commit-changes:
|
||||
runs-on: ubuntu-latest
|
||||
needs: detect-resolution
|
||||
needs: format
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
@ -302,7 +220,70 @@ jobs:
|
||||
- name: Commit Changes
|
||||
uses: stefanzweifel/git-auto-commit-action@v4
|
||||
with:
|
||||
commit_message: '[Bot] Detect resolution'
|
||||
commit_message: '[Bot] Format playlists'
|
||||
commit_user_name: iptv-bot
|
||||
commit_user_email: 84861620+iptv-bot[bot]@users.noreply.github.com
|
||||
commit_author: 'iptv-bot[bot] <84861620+iptv-bot[bot]@users.noreply.github.com>'
|
||||
branch: bot/auto-update
|
||||
file_pattern: channels/*
|
||||
remove-duplicates:
|
||||
runs-on: ubuntu-latest
|
||||
needs: commit-changes
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
ref: bot/auto-update
|
||||
- name: Install Dependencies
|
||||
run: npm install
|
||||
- name: Remove Duplicates
|
||||
run: node scripts/remove-duplicates.js
|
||||
- name: Commit Changes
|
||||
uses: stefanzweifel/git-auto-commit-action@v4
|
||||
with:
|
||||
commit_message: '[Bot] Remove duplicates'
|
||||
commit_user_name: iptv-bot
|
||||
commit_user_email: 84861620+iptv-bot[bot]@users.noreply.github.com
|
||||
commit_author: 'iptv-bot[bot] <84861620+iptv-bot[bot]@users.noreply.github.com>'
|
||||
branch: bot/auto-update
|
||||
file_pattern: channels/*
|
||||
sort:
|
||||
runs-on: ubuntu-latest
|
||||
needs: remove-duplicates
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
ref: bot/auto-update
|
||||
- name: Install Dependencies
|
||||
run: npm install
|
||||
- name: Sort Channels
|
||||
run: node scripts/sort.js
|
||||
- name: Commit Changes
|
||||
uses: stefanzweifel/git-auto-commit-action@v4
|
||||
with:
|
||||
commit_message: '[Bot] Sort channels'
|
||||
commit_user_name: iptv-bot
|
||||
commit_user_email: 84861620+iptv-bot[bot]@users.noreply.github.com
|
||||
commit_author: 'iptv-bot[bot] <84861620+iptv-bot[bot]@users.noreply.github.com>'
|
||||
branch: bot/auto-update
|
||||
file_pattern: channels/*
|
||||
filter:
|
||||
runs-on: ubuntu-latest
|
||||
needs: sort
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
ref: bot/auto-update
|
||||
- name: Install Dependencies
|
||||
run: npm install
|
||||
- name: Filter Playlists
|
||||
run: node scripts/filter.js
|
||||
- name: Commit Changes
|
||||
uses: stefanzweifel/git-auto-commit-action@v4
|
||||
with:
|
||||
commit_message: '[Bot] Filter channels'
|
||||
commit_user_name: iptv-bot
|
||||
commit_user_email: 84861620+iptv-bot[bot]@users.noreply.github.com
|
||||
commit_author: 'iptv-bot[bot] <84861620+iptv-bot[bot]@users.noreply.github.com>'
|
||||
@ -310,7 +291,7 @@ jobs:
|
||||
file_pattern: channels/*
|
||||
generate:
|
||||
runs-on: ubuntu-latest
|
||||
needs: commit-changes
|
||||
needs: filter
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
@ -376,6 +357,7 @@ jobs:
|
||||
branch: bot/auto-update
|
||||
file_pattern: README.md
|
||||
pull-request:
|
||||
if: ${{ github.ref == 'refs/heads/master' }}
|
||||
needs: update-readme
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
@ -408,7 +390,6 @@ jobs:
|
||||
pull-request-number: ${{ steps.pr.outputs.pr_number }}
|
||||
merge-method: squash
|
||||
- name: Approve Pull Request
|
||||
if: github.ref == 'refs/heads/master'
|
||||
uses: juliangruber/approve-pull-request-action@v1
|
||||
with:
|
||||
github-token: ${{ secrets.PAT }}
|
||||
|
257
.github/workflows/clean.yml
vendored
257
.github/workflows/clean.yml
vendored
@ -1,257 +0,0 @@
|
||||
name: clean
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: '0 6 * * 0'
|
||||
jobs:
|
||||
create-branch:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
ref: ${{ github.ref }}
|
||||
- name: Create Branch
|
||||
uses: peterjgrainger/action-create-branch@v2.0.1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
branch: 'bot/remove-broken-links'
|
||||
check:
|
||||
runs-on: ubuntu-latest
|
||||
needs: create-branch
|
||||
continue-on-error: true
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
country:
|
||||
[
|
||||
ad,
|
||||
ae,
|
||||
af,
|
||||
ag,
|
||||
al,
|
||||
am,
|
||||
an,
|
||||
ao,
|
||||
ar,
|
||||
at,
|
||||
au,
|
||||
aw,
|
||||
az,
|
||||
ba,
|
||||
bb,
|
||||
bd,
|
||||
be,
|
||||
bf,
|
||||
bg,
|
||||
bh,
|
||||
bn,
|
||||
bo,
|
||||
br,
|
||||
bs,
|
||||
by,
|
||||
ca,
|
||||
cd,
|
||||
cg,
|
||||
ch,
|
||||
ci,
|
||||
cl,
|
||||
cm,
|
||||
cn,
|
||||
co,
|
||||
cr,
|
||||
cu,
|
||||
cw,
|
||||
cy,
|
||||
cz,
|
||||
de,
|
||||
dk,
|
||||
do,
|
||||
dz,
|
||||
ec,
|
||||
ee,
|
||||
eg,
|
||||
es,
|
||||
et,
|
||||
fi,
|
||||
fj,
|
||||
fo,
|
||||
fr,
|
||||
pf,
|
||||
ge,
|
||||
gh,
|
||||
gm,
|
||||
gn,
|
||||
gp,
|
||||
gq,
|
||||
gr,
|
||||
gt,
|
||||
hk,
|
||||
hn,
|
||||
hr,
|
||||
ht,
|
||||
hu,
|
||||
id,
|
||||
ie,
|
||||
il,
|
||||
in,
|
||||
iq,
|
||||
ir,
|
||||
is,
|
||||
it,
|
||||
jm,
|
||||
jo,
|
||||
jp,
|
||||
ke,
|
||||
kg,
|
||||
kh,
|
||||
kp,
|
||||
kr,
|
||||
kw,
|
||||
kz,
|
||||
la,
|
||||
lb,
|
||||
li,
|
||||
lk,
|
||||
lt,
|
||||
lu,
|
||||
lv,
|
||||
ly,
|
||||
ma,
|
||||
mc,
|
||||
md,
|
||||
me,
|
||||
mk,
|
||||
ml,
|
||||
mm,
|
||||
mn,
|
||||
mo,
|
||||
mt,
|
||||
mv,
|
||||
mx,
|
||||
my,
|
||||
mz,
|
||||
ne,
|
||||
ng,
|
||||
ni,
|
||||
nl,
|
||||
no,
|
||||
np,
|
||||
nz,
|
||||
om,
|
||||
pa,
|
||||
pe,
|
||||
ph,
|
||||
pk,
|
||||
pl,
|
||||
pr,
|
||||
ps,
|
||||
pt,
|
||||
py,
|
||||
qa,
|
||||
ro,
|
||||
rs,
|
||||
ru,
|
||||
rw,
|
||||
sa,
|
||||
sd,
|
||||
se,
|
||||
sg,
|
||||
si,
|
||||
sk,
|
||||
sl,
|
||||
sm,
|
||||
sn,
|
||||
so,
|
||||
sv,
|
||||
sy,
|
||||
th,
|
||||
tj,
|
||||
tm,
|
||||
tn,
|
||||
tr,
|
||||
tt,
|
||||
tw,
|
||||
tz,
|
||||
ua,
|
||||
ug,
|
||||
uk,
|
||||
us,
|
||||
uy,
|
||||
uz,
|
||||
va,
|
||||
ve,
|
||||
vi,
|
||||
vn,
|
||||
xk,
|
||||
ye,
|
||||
zm,
|
||||
unsorted
|
||||
]
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
ref: bot/remove-broken-links
|
||||
- name: Setup FFmpeg
|
||||
uses: FedericoCarboni/setup-ffmpeg@v1
|
||||
- name: Install Dependencies
|
||||
run: npm install
|
||||
- name: Remove Broken Links
|
||||
run: node scripts/clean.js --country=${{ matrix.country }} --debug
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: channels
|
||||
path: channels/${{ matrix.country }}.m3u
|
||||
commit-changes:
|
||||
runs-on: ubuntu-latest
|
||||
needs: check
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
ref: bot/remove-broken-links
|
||||
- name: Download Artifacts
|
||||
uses: actions/download-artifact@v2
|
||||
- name: Commit Changes
|
||||
uses: stefanzweifel/git-auto-commit-action@v4
|
||||
with:
|
||||
commit_message: '[Bot] Remove broken links'
|
||||
commit_user_name: iptv-bot
|
||||
commit_user_email: 84861620+iptv-bot[bot]@users.noreply.github.com
|
||||
commit_author: 'iptv-bot[bot] <84861620+iptv-bot[bot]@users.noreply.github.com>'
|
||||
branch: bot/remove-broken-links
|
||||
file_pattern: channels/*
|
||||
pull-request:
|
||||
if: ${{ github.ref == 'refs/heads/master' }}
|
||||
runs-on: ubuntu-latest
|
||||
needs: commit-changes
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
ref: bot/remove-broken-links
|
||||
- name: Generate Token
|
||||
uses: tibdex/github-app-token@v1
|
||||
id: generate-token
|
||||
with:
|
||||
app_id: ${{ secrets.APP_ID }}
|
||||
private_key: ${{ secrets.APP_PRIVATE_KEY }}
|
||||
- name: Create Pull Request
|
||||
uses: repo-sync/pull-request@v2
|
||||
with:
|
||||
source_branch: 'bot/remove-broken-links'
|
||||
destination_branch: 'master'
|
||||
pr_title: '[Bot] Remove broken links'
|
||||
pr_body: |
|
||||
This pull request is created by [clean][1] workflow.
|
||||
|
||||
The script checks all links except those with labels `[Geo-blocked]`, `[Offline]` or `[Not 24/7]` in the title.
|
||||
|
||||
**IMPORTANT:** Before merging all links should be checked manually to make sure that the response from the server has not changed. If the link works for you but occasionally return an HTTP code 403 (Forbidden) then it should be marked as `[Geo-blocked]`. If the link does not work but has no alternative, you can mark it as `[Offline]` to save it in the playlist along with a description. Working links should be marked as `[Not 24/7]` so that the script will skip them next time.
|
||||
|
||||
[1]: https://github.com/iptv-org/iptv/actions/runs/${{ github.run_id }}
|
||||
pr_draft: true
|
||||
github_token: ${{ steps.generate-token.outputs.token }}
|
@ -125,7 +125,7 @@ STREAM_URL
|
||||
| `LANGUAGE` | Channel language. The name of the language must conform to the standard [ISO 639-3](https://iso639-3.sil.org/code_tables/639/data?title=&field_iso639_cd_st_mmbrshp_639_1_tid=94671&name_3=&field_iso639_element_scope_tid=All&field_iso639_language_type_tid=51&items_per_page=500). If the channel is broadcast in several languages you can list them separated by a semicolon. (optional) |
|
||||
| `LOGO_URL` | The logo of the channel that will be displayed if the player supports it. Supports files in png, jpeg and gif format. (optional) |
|
||||
| `CATEGORY` | The category to which the channel belongs. The list of currently supported categories can be found [here](https://github.com/iptv-org/iptv#playlists-by-category). (optional) |
|
||||
| `FULL_NAME` | Full name of the channel. It is recommended to use the name listed on [lyngsat](https://www.lyngsat.com/search.html) or [wikipedia](https://www.wikipedia.org/) if possible. May contain any characters except plus sign, minus sign, round and square brackets. |
|
||||
| `FULL_NAME` | Full name of the channel. It is recommended to use the name listed on [lyngsat](https://www.lyngsat.com/search.html) or [wikipedia](https://www.wikipedia.org/) if possible. May contain any characters except round and square brackets. |
|
||||
| `STREAM_TIME_SHIFT` | Must be specified if the channel is broadcast with a shift in time relative to the main stream. Should only contain a number and a sign. (optional) |
|
||||
| `ALTERNATIVE_NAME` | Can be used to specify a short name or name in another language. May contain any characters except round and square brackets. (optional) |
|
||||
| `STREAM_RESOLUTION` | The maximum height of the frame with a "p" at the end. In case of VLC Player this information can be found in `Window > Media Information... > Codec Details`. (optional) |
|
||||
@ -153,7 +153,8 @@ http://example.com/stream.m3u8
|
||||
- `.github/`
|
||||
- `ISSUE_TEMPLATE/`: issue templates for this repository.
|
||||
- `workflows/`
|
||||
- `auto-update.yml`: contain actions that automatically updates all playlists every day.
|
||||
- `auto-update.yml`: GitHub Action that automatically updates all playlists every day.
|
||||
- `check.yml`: GitHub Action that automatically checks every pull request for syntax errors.
|
||||
- `CODE_OF_CONDUCT.md`: rules you shouldn't break if you don't want to get banned.
|
||||
- `.readme/`
|
||||
- `_categories.md`: automatically generated list of all categories and their corresponding playlists.
|
||||
@ -168,8 +169,6 @@ http://example.com/stream.m3u8
|
||||
- `unsorted.m3u`: playlist with channels not yet sorted.
|
||||
- `scripts/`
|
||||
- `helpers/`: helper scripts used in GitHub Actions.
|
||||
- `clean.js`: used in GitHub Action to check all links and remove broken ones.
|
||||
- `detect-resolution.js`: used in GitHub Action to detect resolution of the streams.
|
||||
- `filter.js`: used within GitHub Action to remove blacklisted channels from playlists.
|
||||
- `format.js`: used within GitHub Action to format channel descriptions.
|
||||
- `generate.js`: used within GitHub Action to generate all additional playlists.
|
||||
|
94
README.md
94
README.md
@ -40,19 +40,19 @@ Or select one of the playlists from the list below.
|
||||
<tr><td align="left">Classic</td><td align="right">78</td><td align="left"><code>https://iptv-org.github.io/iptv/categories/classic.m3u</code></td></tr>
|
||||
<tr><td align="left">Comedy</td><td align="right">89</td><td align="left"><code>https://iptv-org.github.io/iptv/categories/comedy.m3u</code></td></tr>
|
||||
<tr><td align="left">Cooking</td><td align="right">54</td><td align="left"><code>https://iptv-org.github.io/iptv/categories/cooking.m3u</code></td></tr>
|
||||
<tr><td align="left">Culture</td><td align="right">12</td><td align="left"><code>https://iptv-org.github.io/iptv/categories/culture.m3u</code></td></tr>
|
||||
<tr><td align="left">Documentary</td><td align="right">70</td><td align="left"><code>https://iptv-org.github.io/iptv/categories/documentary.m3u</code></td></tr>
|
||||
<tr><td align="left">Culture</td><td align="right">13</td><td align="left"><code>https://iptv-org.github.io/iptv/categories/culture.m3u</code></td></tr>
|
||||
<tr><td align="left">Documentary</td><td align="right">68</td><td align="left"><code>https://iptv-org.github.io/iptv/categories/documentary.m3u</code></td></tr>
|
||||
<tr><td align="left">Education</td><td align="right">22</td><td align="left"><code>https://iptv-org.github.io/iptv/categories/education.m3u</code></td></tr>
|
||||
<tr><td align="left">Entertainment</td><td align="right">212</td><td align="left"><code>https://iptv-org.github.io/iptv/categories/entertainment.m3u</code></td></tr>
|
||||
<tr><td align="left">Family</td><td align="right">54</td><td align="left"><code>https://iptv-org.github.io/iptv/categories/family.m3u</code></td></tr>
|
||||
<tr><td align="left">General</td><td align="right">339</td><td align="left"><code>https://iptv-org.github.io/iptv/categories/general.m3u</code></td></tr>
|
||||
<tr><td align="left">General</td><td align="right">338</td><td align="left"><code>https://iptv-org.github.io/iptv/categories/general.m3u</code></td></tr>
|
||||
<tr><td align="left">Kids</td><td align="right">213</td><td align="left"><code>https://iptv-org.github.io/iptv/categories/kids.m3u</code></td></tr>
|
||||
<tr><td align="left">Legislative</td><td align="right">61</td><td align="left"><code>https://iptv-org.github.io/iptv/categories/legislative.m3u</code></td></tr>
|
||||
<tr><td align="left">Lifestyle</td><td align="right">94</td><td align="left"><code>https://iptv-org.github.io/iptv/categories/lifestyle.m3u</code></td></tr>
|
||||
<tr><td align="left">Local</td><td align="right">543</td><td align="left"><code>https://iptv-org.github.io/iptv/categories/local.m3u</code></td></tr>
|
||||
<tr><td align="left">Movies</td><td align="right">277</td><td align="left"><code>https://iptv-org.github.io/iptv/categories/movies.m3u</code></td></tr>
|
||||
<tr><td align="left">Local</td><td align="right">549</td><td align="left"><code>https://iptv-org.github.io/iptv/categories/local.m3u</code></td></tr>
|
||||
<tr><td align="left">Movies</td><td align="right">278</td><td align="left"><code>https://iptv-org.github.io/iptv/categories/movies.m3u</code></td></tr>
|
||||
<tr><td align="left">Music</td><td align="right">410</td><td align="left"><code>https://iptv-org.github.io/iptv/categories/music.m3u</code></td></tr>
|
||||
<tr><td align="left">News</td><td align="right">491</td><td align="left"><code>https://iptv-org.github.io/iptv/categories/news.m3u</code></td></tr>
|
||||
<tr><td align="left">News</td><td align="right">492</td><td align="left"><code>https://iptv-org.github.io/iptv/categories/news.m3u</code></td></tr>
|
||||
<tr><td align="left">Outdoor</td><td align="right">52</td><td align="left"><code>https://iptv-org.github.io/iptv/categories/outdoor.m3u</code></td></tr>
|
||||
<tr><td align="left">Relax</td><td align="right">19</td><td align="left"><code>https://iptv-org.github.io/iptv/categories/relax.m3u</code></td></tr>
|
||||
<tr><td align="left">Religious</td><td align="right">287</td><td align="left"><code>https://iptv-org.github.io/iptv/categories/religious.m3u</code></td></tr>
|
||||
@ -63,7 +63,7 @@ Or select one of the playlists from the list below.
|
||||
<tr><td align="left">Travel</td><td align="right">28</td><td align="left"><code>https://iptv-org.github.io/iptv/categories/travel.m3u</code></td></tr>
|
||||
<tr><td align="left">Weather</td><td align="right">19</td><td align="left"><code>https://iptv-org.github.io/iptv/categories/weather.m3u</code></td></tr>
|
||||
<tr><td align="left">XXX</td><td align="right">59</td><td align="left"><code>https://iptv-org.github.io/iptv/categories/xxx.m3u</code></td></tr>
|
||||
<tr><td align="left">Other</td><td align="right">4923</td><td align="left"><code>https://iptv-org.github.io/iptv/categories/other.m3u</code></td></tr>
|
||||
<tr><td align="left">Other</td><td align="right">4877</td><td align="left"><code>https://iptv-org.github.io/iptv/categories/other.m3u</code></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
@ -93,17 +93,17 @@ Or select one of the playlists from the list below.
|
||||
<tr><td align="left">Bosnian</td><td align="right">11</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/bos.m3u</code></td></tr>
|
||||
<tr><td align="left">Bulgarian</td><td align="right">10</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/bul.m3u</code></td></tr>
|
||||
<tr><td align="left">Burmese</td><td align="right">1</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/mya.m3u</code></td></tr>
|
||||
<tr><td align="left">Catalan</td><td align="right">10</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/cat.m3u</code></td></tr>
|
||||
<tr><td align="left">Chinese</td><td align="right">670</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/zho.m3u</code></td></tr>
|
||||
<tr><td align="left">Catalan</td><td align="right">11</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/cat.m3u</code></td></tr>
|
||||
<tr><td align="left">Chinese</td><td align="right">659</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/zho.m3u</code></td></tr>
|
||||
<tr><td align="left">Croatian</td><td align="right">14</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/hrv.m3u</code></td></tr>
|
||||
<tr><td align="left">Czech</td><td align="right">21</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/ces.m3u</code></td></tr>
|
||||
<tr><td align="left">Danish</td><td align="right">4</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/dan.m3u</code></td></tr>
|
||||
<tr><td align="left">Dutch</td><td align="right">60</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/nld.m3u</code></td></tr>
|
||||
<tr><td align="left">English</td><td align="right">2439</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/eng.m3u</code></td></tr>
|
||||
<tr><td align="left">English</td><td align="right">2438</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/eng.m3u</code></td></tr>
|
||||
<tr><td align="left">Estonian</td><td align="right">3</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/est.m3u</code></td></tr>
|
||||
<tr><td align="left">Faroese</td><td align="right">1</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/fao.m3u</code></td></tr>
|
||||
<tr><td align="left">Finnish</td><td align="right">1</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/fin.m3u</code></td></tr>
|
||||
<tr><td align="left">French</td><td align="right">194</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/fra.m3u</code></td></tr>
|
||||
<tr><td align="left">French</td><td align="right">193</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/fra.m3u</code></td></tr>
|
||||
<tr><td align="left">Galician</td><td align="right">9</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/glg.m3u</code></td></tr>
|
||||
<tr><td align="left">Georgian</td><td align="right">8</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/kat.m3u</code></td></tr>
|
||||
<tr><td align="left">German</td><td align="right">206</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/deu.m3u</code></td></tr>
|
||||
@ -130,7 +130,7 @@ Or select one of the playlists from the list below.
|
||||
<tr><td align="left">Malay (macrolanguage)</td><td align="right">7</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/msa.m3u</code></td></tr>
|
||||
<tr><td align="left">Malayalam</td><td align="right">24</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/mal.m3u</code></td></tr>
|
||||
<tr><td align="left">Maltese</td><td align="right">3</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/mlt.m3u</code></td></tr>
|
||||
<tr><td align="left">Mandarin Chinese</td><td align="right">77</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/cmn.m3u</code></td></tr>
|
||||
<tr><td align="left">Mandarin Chinese</td><td align="right">78</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/cmn.m3u</code></td></tr>
|
||||
<tr><td align="left">Maori</td><td align="right">2</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/mri.m3u</code></td></tr>
|
||||
<tr><td align="left">Min Nan Chinese</td><td align="right">3</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/nan.m3u</code></td></tr>
|
||||
<tr><td align="left">Modern Greek (1453-)</td><td align="right">31</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/ell.m3u</code></td></tr>
|
||||
@ -144,13 +144,13 @@ Or select one of the playlists from the list below.
|
||||
<tr><td align="left">Polish</td><td align="right">33</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/pol.m3u</code></td></tr>
|
||||
<tr><td align="left">Portuguese</td><td align="right">108</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/por.m3u</code></td></tr>
|
||||
<tr><td align="left">Romanian</td><td align="right">64</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/ron.m3u</code></td></tr>
|
||||
<tr><td align="left">Russian</td><td align="right">300</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/rus.m3u</code></td></tr>
|
||||
<tr><td align="left">Russian</td><td align="right">302</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/rus.m3u</code></td></tr>
|
||||
<tr><td align="left">Serbian</td><td align="right">17</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/srp.m3u</code></td></tr>
|
||||
<tr><td align="left">Sinhala</td><td align="right">5</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/sin.m3u</code></td></tr>
|
||||
<tr><td align="left">Slovak</td><td align="right">26</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/slk.m3u</code></td></tr>
|
||||
<tr><td align="left">Slovenian</td><td align="right">6</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/slv.m3u</code></td></tr>
|
||||
<tr><td align="left">Somali</td><td align="right">6</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/som.m3u</code></td></tr>
|
||||
<tr><td align="left">Spanish</td><td align="right">626</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/spa.m3u</code></td></tr>
|
||||
<tr><td align="left">Spanish</td><td align="right">624</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/spa.m3u</code></td></tr>
|
||||
<tr><td align="left">Sundanese</td><td align="right">1</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/sun.m3u</code></td></tr>
|
||||
<tr><td align="left">Swedish</td><td align="right">11</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/swe.m3u</code></td></tr>
|
||||
<tr><td align="left">Tagalog</td><td align="right">6</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/tgl.m3u</code></td></tr>
|
||||
@ -165,7 +165,7 @@ Or select one of the playlists from the list below.
|
||||
<tr><td align="left">Vietnamese</td><td align="right">69</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/vie.m3u</code></td></tr>
|
||||
<tr><td align="left">Western Frisian</td><td align="right">1</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/fry.m3u</code></td></tr>
|
||||
<tr><td align="left">Yue Chinese</td><td align="right">10</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/yue.m3u</code></td></tr>
|
||||
<tr><td align="left">Undefined</td><td align="right">2688</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/undefined.m3u</code></td></tr>
|
||||
<tr><td align="left">Undefined</td><td align="right">2659</td><td align="left"><code>https://iptv-org.github.io/iptv/languages/undefined.m3u</code></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
@ -187,10 +187,10 @@ Or select one of the playlists from the list below.
|
||||
<tr><td align="left">🇦🇱 Albania</td><td align="right">24</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/al.m3u</code></td></tr>
|
||||
<tr><td align="left">🇩🇿 Algeria</td><td align="right">72</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/dz.m3u</code></td></tr>
|
||||
<tr><td align="left">🇦🇸 American Samoa</td><td align="right">3</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/as.m3u</code></td></tr>
|
||||
<tr><td align="left">🇦🇩 Andorra</td><td align="right">10</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/ad.m3u</code></td></tr>
|
||||
<tr><td align="left">🇦🇩 Andorra</td><td align="right">11</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/ad.m3u</code></td></tr>
|
||||
<tr><td align="left">🇦🇴 Angola</td><td align="right">3</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/ao.m3u</code></td></tr>
|
||||
<tr><td align="left">🇦🇬 Antigua & Barbuda</td><td align="right">1</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/ag.m3u</code></td></tr>
|
||||
<tr><td align="left">🇦🇷 Argentina</td><td align="right">77</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/ar.m3u</code></td></tr>
|
||||
<tr><td align="left">🇦🇷 Argentina</td><td align="right">72</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/ar.m3u</code></td></tr>
|
||||
<tr><td align="left">🇦🇲 Armenia</td><td align="right">35</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/am.m3u</code></td></tr>
|
||||
<tr><td align="left">🇦🇼 Aruba</td><td align="right">2</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/aw.m3u</code></td></tr>
|
||||
<tr><td align="left">🇦🇺 Australia</td><td align="right">99</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/au.m3u</code></td></tr>
|
||||
@ -204,10 +204,10 @@ Or select one of the playlists from the list below.
|
||||
<tr><td align="left">🇧🇪 Belgium</td><td align="right">29</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/be.m3u</code></td></tr>
|
||||
<tr><td align="left">🇧🇯 Benin</td><td align="right">1</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/bj.m3u</code></td></tr>
|
||||
<tr><td align="left">🇧🇹 Bhutan</td><td align="right">7</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/bt.m3u</code></td></tr>
|
||||
<tr><td align="left">🇧🇴 Bolivia</td><td align="right">33</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/bo.m3u</code></td></tr>
|
||||
<tr><td align="left">🇧🇴 Bolivia</td><td align="right">28</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/bo.m3u</code></td></tr>
|
||||
<tr><td align="left">🇧🇦 Bosnia</td><td align="right">16</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/ba.m3u</code></td></tr>
|
||||
<tr><td align="left">🇧🇼 Botswana</td><td align="right">1</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/bw.m3u</code></td></tr>
|
||||
<tr><td align="left">🇧🇷 Brazil</td><td align="right">162</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/br.m3u</code></td></tr>
|
||||
<tr><td align="left">🇧🇷 Brazil</td><td align="right">157</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/br.m3u</code></td></tr>
|
||||
<tr><td align="left">🇧🇳 Brunei</td><td align="right">5</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/bn.m3u</code></td></tr>
|
||||
<tr><td align="left">🇧🇬 Bulgaria</td><td align="right">33</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/bg.m3u</code></td></tr>
|
||||
<tr><td align="left">🇧🇫 Burkina Faso</td><td align="right">5</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/bf.m3u</code></td></tr>
|
||||
@ -218,16 +218,16 @@ Or select one of the playlists from the list below.
|
||||
<tr><td align="left">🇨🇻 Cape Verde</td><td align="right">1</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/cv.m3u</code></td></tr>
|
||||
<tr><td align="left">🇨🇫 Central African Republic</td><td align="right">1</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/cf.m3u</code></td></tr>
|
||||
<tr><td align="left">🇹🇩 Chad</td><td align="right">1</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/td.m3u</code></td></tr>
|
||||
<tr><td align="left">🇨🇱 Chile</td><td align="right">93</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/cl.m3u</code></td></tr>
|
||||
<tr><td align="left">🇨🇳 China</td><td align="right">790</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/cn.m3u</code></td></tr>
|
||||
<tr><td align="left">🇨🇴 Colombia</td><td align="right">54</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/co.m3u</code></td></tr>
|
||||
<tr><td align="left">🇨🇱 Chile</td><td align="right">88</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/cl.m3u</code></td></tr>
|
||||
<tr><td align="left">🇨🇳 China</td><td align="right">772</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/cn.m3u</code></td></tr>
|
||||
<tr><td align="left">🇨🇴 Colombia</td><td align="right">49</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/co.m3u</code></td></tr>
|
||||
<tr><td align="left">🇰🇲 Comoros</td><td align="right">43</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/km.m3u</code></td></tr>
|
||||
<tr><td align="left">🇨🇬 Congo - Brazzaville</td><td align="right">9</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/cg.m3u</code></td></tr>
|
||||
<tr><td align="left">🇨🇩 Congo - Kinshasa</td><td align="right">6</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/cd.m3u</code></td></tr>
|
||||
<tr><td align="left">🇨🇰 Cook Islands</td><td align="right">3</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/ck.m3u</code></td></tr>
|
||||
<tr><td align="left">🇨🇷 Costa Rica</td><td align="right">52</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/cr.m3u</code></td></tr>
|
||||
<tr><td align="left">🇨🇷 Costa Rica</td><td align="right">47</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/cr.m3u</code></td></tr>
|
||||
<tr><td align="left">🇭🇷 Croatia</td><td align="right">18</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/hr.m3u</code></td></tr>
|
||||
<tr><td align="left">🇨🇺 Cuba</td><td align="right">29</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/cu.m3u</code></td></tr>
|
||||
<tr><td align="left">🇨🇺 Cuba</td><td align="right">24</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/cu.m3u</code></td></tr>
|
||||
<tr><td align="left">🇨🇼 Curaçao</td><td align="right">5</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/cw.m3u</code></td></tr>
|
||||
<tr><td align="left">🇦🇳 Curaçao</td><td align="right">1</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/an.m3u</code></td></tr>
|
||||
<tr><td align="left">🇨🇾 Cyprus</td><td align="right">15</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/cy.m3u</code></td></tr>
|
||||
@ -235,10 +235,10 @@ Or select one of the playlists from the list below.
|
||||
<tr><td align="left">🇨🇮 Côte d’Ivoire</td><td align="right">2</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/ci.m3u</code></td></tr>
|
||||
<tr><td align="left">🇩🇰 Denmark</td><td align="right">16</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/dk.m3u</code></td></tr>
|
||||
<tr><td align="left">🇩🇯 Djibouti</td><td align="right">45</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/dj.m3u</code></td></tr>
|
||||
<tr><td align="left">🇩🇴 Dominican Republic</td><td align="right">88</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/do.m3u</code></td></tr>
|
||||
<tr><td align="left">🇪🇨 Ecuador</td><td align="right">27</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/ec.m3u</code></td></tr>
|
||||
<tr><td align="left">🇩🇴 Dominican Republic</td><td align="right">83</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/do.m3u</code></td></tr>
|
||||
<tr><td align="left">🇪🇨 Ecuador</td><td align="right">22</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/ec.m3u</code></td></tr>
|
||||
<tr><td align="left">🇪🇬 Egypt</td><td align="right">75</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/eg.m3u</code></td></tr>
|
||||
<tr><td align="left">🇸🇻 El Salvador</td><td align="right">37</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/sv.m3u</code></td></tr>
|
||||
<tr><td align="left">🇸🇻 El Salvador</td><td align="right">32</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/sv.m3u</code></td></tr>
|
||||
<tr><td align="left">🇬🇶 Equatorial Guinea</td><td align="right">4</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/gq.m3u</code></td></tr>
|
||||
<tr><td align="left">🇪🇷 Eritrea</td><td align="right">1</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/er.m3u</code></td></tr>
|
||||
<tr><td align="left">🇪🇪 Estonia</td><td align="right">14</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/ee.m3u</code></td></tr>
|
||||
@ -247,8 +247,8 @@ Or select one of the playlists from the list below.
|
||||
<tr><td align="left">🇫🇴 Faroe Islands</td><td align="right">1</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/fo.m3u</code></td></tr>
|
||||
<tr><td align="left">🇫🇯 Fiji</td><td align="right">4</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/fj.m3u</code></td></tr>
|
||||
<tr><td align="left">🇫🇮 Finland</td><td align="right">10</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/fi.m3u</code></td></tr>
|
||||
<tr><td align="left">🇫🇷 France</td><td align="right">219</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/fr.m3u</code></td></tr>
|
||||
<tr><td align="left">🇬🇫 French Guiana</td><td align="right">23</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/gf.m3u</code></td></tr>
|
||||
<tr><td align="left">🇫🇷 France</td><td align="right">218</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/fr.m3u</code></td></tr>
|
||||
<tr><td align="left">🇬🇫 French Guiana</td><td align="right">18</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/gf.m3u</code></td></tr>
|
||||
<tr><td align="left">🇵🇫 French Polynesia</td><td align="right">4</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/pf.m3u</code></td></tr>
|
||||
<tr><td align="left">🇹🇫 French Southern Territories</td><td align="right">1</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/tf.m3u</code></td></tr>
|
||||
<tr><td align="left">🇬🇦 Gabon</td><td align="right">1</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/ga.m3u</code></td></tr>
|
||||
@ -257,13 +257,13 @@ Or select one of the playlists from the list below.
|
||||
<tr><td align="left">🇩🇪 Germany</td><td align="right">258</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/de.m3u</code></td></tr>
|
||||
<tr><td align="left">🇬🇭 Ghana</td><td align="right">3</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/gh.m3u</code></td></tr>
|
||||
<tr><td align="left">🇬🇷 Greece</td><td align="right">122</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/gr.m3u</code></td></tr>
|
||||
<tr><td align="left">🇬🇵 Guadeloupe</td><td align="right">24</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/gp.m3u</code></td></tr>
|
||||
<tr><td align="left">🇬🇵 Guadeloupe</td><td align="right">19</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/gp.m3u</code></td></tr>
|
||||
<tr><td align="left">🇬🇺 Guam</td><td align="right">3</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/gu.m3u</code></td></tr>
|
||||
<tr><td align="left">🇬🇹 Guatemala</td><td align="right">28</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/gt.m3u</code></td></tr>
|
||||
<tr><td align="left">🇬🇹 Guatemala</td><td align="right">23</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/gt.m3u</code></td></tr>
|
||||
<tr><td align="left">🇬🇳 Guinea</td><td align="right">2</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/gn.m3u</code></td></tr>
|
||||
<tr><td align="left">🇬🇼 Guinea-Bissau</td><td align="right">1</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/gw.m3u</code></td></tr>
|
||||
<tr><td align="left">🇭🇹 Haiti</td><td align="right">26</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/ht.m3u</code></td></tr>
|
||||
<tr><td align="left">🇭🇳 Honduras</td><td align="right">36</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/hn.m3u</code></td></tr>
|
||||
<tr><td align="left">🇭🇹 Haiti</td><td align="right">21</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/ht.m3u</code></td></tr>
|
||||
<tr><td align="left">🇭🇳 Honduras</td><td align="right">31</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/hn.m3u</code></td></tr>
|
||||
<tr><td align="left">🇭🇰 Hong Kong</td><td align="right">21</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/hk.m3u</code></td></tr>
|
||||
<tr><td align="left">🇭🇺 Hungary</td><td align="right">36</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/hu.m3u</code></td></tr>
|
||||
<tr><td align="left">🇮🇸 Iceland</td><td align="right">9</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/is.m3u</code></td></tr>
|
||||
@ -298,14 +298,14 @@ Or select one of the playlists from the list below.
|
||||
<tr><td align="left">🇲🇼 Malawi</td><td align="right">1</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/mw.m3u</code></td></tr>
|
||||
<tr><td align="left">🇲🇾 Malaysia</td><td align="right">44</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/my.m3u</code></td></tr>
|
||||
<tr><td align="left">🇲🇻 Maldives</td><td align="right">8</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/mv.m3u</code></td></tr>
|
||||
<tr><td align="left">🇲🇱 Mali</td><td align="right">1</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/ml.m3u</code></td></tr>
|
||||
<tr><td align="left">🇲🇱 Mali</td><td align="right">2</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/ml.m3u</code></td></tr>
|
||||
<tr><td align="left">🇲🇹 Malta</td><td align="right">7</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/mt.m3u</code></td></tr>
|
||||
<tr><td align="left">🇲🇭 Marshall Islands</td><td align="right">3</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/mh.m3u</code></td></tr>
|
||||
<tr><td align="left">🇲🇶 Martinique</td><td align="right">23</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/mq.m3u</code></td></tr>
|
||||
<tr><td align="left">🇲🇶 Martinique</td><td align="right">18</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/mq.m3u</code></td></tr>
|
||||
<tr><td align="left">🇲🇷 Mauritania</td><td align="right">43</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/mr.m3u</code></td></tr>
|
||||
<tr><td align="left">🇲🇺 Mauritius</td><td align="right">2</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/mu.m3u</code></td></tr>
|
||||
<tr><td align="left">🇾🇹 Mayotte</td><td align="right">1</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/yt.m3u</code></td></tr>
|
||||
<tr><td align="left">🇲🇽 Mexico</td><td align="right">80</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/mx.m3u</code></td></tr>
|
||||
<tr><td align="left">🇲🇽 Mexico</td><td align="right">75</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/mx.m3u</code></td></tr>
|
||||
<tr><td align="left">🇫🇲 Micronesia</td><td align="right">3</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/fm.m3u</code></td></tr>
|
||||
<tr><td align="left">🇲🇩 Moldova</td><td align="right">21</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/md.m3u</code></td></tr>
|
||||
<tr><td align="left">🇲🇨 Monaco</td><td align="right">7</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/mc.m3u</code></td></tr>
|
||||
@ -320,7 +320,7 @@ Or select one of the playlists from the list below.
|
||||
<tr><td align="left">🇳🇱 Netherlands</td><td align="right">135</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/nl.m3u</code></td></tr>
|
||||
<tr><td align="left">🇳🇨 New Caledonia</td><td align="right">3</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/nc.m3u</code></td></tr>
|
||||
<tr><td align="left">🇳🇿 New Zealand</td><td align="right">22</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/nz.m3u</code></td></tr>
|
||||
<tr><td align="left">🇳🇮 Nicaragua</td><td align="right">34</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/ni.m3u</code></td></tr>
|
||||
<tr><td align="left">🇳🇮 Nicaragua</td><td align="right">29</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/ni.m3u</code></td></tr>
|
||||
<tr><td align="left">🇳🇪 Niger</td><td align="right">2</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/ne.m3u</code></td></tr>
|
||||
<tr><td align="left">🇳🇬 Nigeria</td><td align="right">7</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/ng.m3u</code></td></tr>
|
||||
<tr><td align="left">🇳🇺 Niue</td><td align="right">3</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/nu.m3u</code></td></tr>
|
||||
@ -333,18 +333,18 @@ Or select one of the playlists from the list below.
|
||||
<tr><td align="left">🇵🇰 Pakistan</td><td align="right">29</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/pk.m3u</code></td></tr>
|
||||
<tr><td align="left">🇵🇼 Palau</td><td align="right">3</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/pw.m3u</code></td></tr>
|
||||
<tr><td align="left">🇵🇸 Palestine</td><td align="right">68</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/ps.m3u</code></td></tr>
|
||||
<tr><td align="left">🇵🇦 Panama</td><td align="right">35</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/pa.m3u</code></td></tr>
|
||||
<tr><td align="left">🇵🇦 Panama</td><td align="right">30</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/pa.m3u</code></td></tr>
|
||||
<tr><td align="left">🇵🇬 Papua New Guinea</td><td align="right">3</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/pg.m3u</code></td></tr>
|
||||
<tr><td align="left">🇵🇾 Paraguay</td><td align="right">33</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/py.m3u</code></td></tr>
|
||||
<tr><td align="left">🇵🇪 Peru</td><td align="right">107</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/pe.m3u</code></td></tr>
|
||||
<tr><td align="left">🇵🇾 Paraguay</td><td align="right">28</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/py.m3u</code></td></tr>
|
||||
<tr><td align="left">🇵🇪 Peru</td><td align="right">106</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/pe.m3u</code></td></tr>
|
||||
<tr><td align="left">🇵🇭 Philippines</td><td align="right">20</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/ph.m3u</code></td></tr>
|
||||
<tr><td align="left">🇵🇳 Pitcairn Islands</td><td align="right">3</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/pn.m3u</code></td></tr>
|
||||
<tr><td align="left">🇵🇱 Poland</td><td align="right">45</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/pl.m3u</code></td></tr>
|
||||
<tr><td align="left">🇵🇹 Portugal</td><td align="right">41</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/pt.m3u</code></td></tr>
|
||||
<tr><td align="left">🇵🇷 Puerto Rico</td><td align="right">33</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/pr.m3u</code></td></tr>
|
||||
<tr><td align="left">🇵🇷 Puerto Rico</td><td align="right">28</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/pr.m3u</code></td></tr>
|
||||
<tr><td align="left">🇶🇦 Qatar</td><td align="right">56</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/qa.m3u</code></td></tr>
|
||||
<tr><td align="left">🇷🇴 Romania</td><td align="right">76</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/ro.m3u</code></td></tr>
|
||||
<tr><td align="left">🇷🇺 Russia</td><td align="right">396</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/ru.m3u</code></td></tr>
|
||||
<tr><td align="left">🇷🇺 Russia</td><td align="right">386</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/ru.m3u</code></td></tr>
|
||||
<tr><td align="left">🇷🇼 Rwanda</td><td align="right">5</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/rw.m3u</code></td></tr>
|
||||
<tr><td align="left">🇷🇪 Réunion</td><td align="right">1</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/re.m3u</code></td></tr>
|
||||
<tr><td align="left">🇼🇸 Samoa</td><td align="right">3</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/ws.m3u</code></td></tr>
|
||||
@ -362,11 +362,11 @@ Or select one of the playlists from the list below.
|
||||
<tr><td align="left">🇿🇦 South Africa</td><td align="right">1</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/za.m3u</code></td></tr>
|
||||
<tr><td align="left">🇰🇷 South Korea</td><td align="right">83</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/kr.m3u</code></td></tr>
|
||||
<tr><td align="left">🇸🇸 South Sudan</td><td align="right">1</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/ss.m3u</code></td></tr>
|
||||
<tr><td align="left">🇪🇸 Spain</td><td align="right">357</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/es.m3u</code></td></tr>
|
||||
<tr><td align="left">🇪🇸 Spain</td><td align="right">343</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/es.m3u</code></td></tr>
|
||||
<tr><td align="left">🇱🇰 Sri Lanka</td><td align="right">17</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/lk.m3u</code></td></tr>
|
||||
<tr><td align="left">🇧🇱 St. Barthélemy</td><td align="right">23</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/bl.m3u</code></td></tr>
|
||||
<tr><td align="left">🇧🇱 St. Barthélemy</td><td align="right">18</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/bl.m3u</code></td></tr>
|
||||
<tr><td align="left">🇸🇭 St. Helena</td><td align="right">1</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/sh.m3u</code></td></tr>
|
||||
<tr><td align="left">🇲🇫 St. Martin</td><td align="right">23</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/mf.m3u</code></td></tr>
|
||||
<tr><td align="left">🇲🇫 St. Martin</td><td align="right">18</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/mf.m3u</code></td></tr>
|
||||
<tr><td align="left">🇸🇩 Sudan</td><td align="right">47</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/sd.m3u</code></td></tr>
|
||||
<tr><td align="left">🇸🇪 Sweden</td><td align="right">23</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/se.m3u</code></td></tr>
|
||||
<tr><td align="left">🇨🇭 Switzerland</td><td align="right">124</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/ch.m3u</code></td></tr>
|
||||
@ -391,11 +391,11 @@ Or select one of the playlists from the list below.
|
||||
<tr><td align="left">🇦🇪 United Arab Emirates</td><td align="right">88</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/ae.m3u</code></td></tr>
|
||||
<tr><td align="left">🇬🇧 United Kingdom</td><td align="right">229</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/uk.m3u</code></td></tr>
|
||||
<tr><td align="left">🇺🇸 United States</td><td align="right">2266</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/us.m3u</code></td></tr>
|
||||
<tr><td align="left">🇺🇾 Uruguay</td><td align="right">27</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/uy.m3u</code></td></tr>
|
||||
<tr><td align="left">🇺🇾 Uruguay</td><td align="right">22</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/uy.m3u</code></td></tr>
|
||||
<tr><td align="left">🇺🇿 Uzbekistan</td><td align="right">3</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/uz.m3u</code></td></tr>
|
||||
<tr><td align="left">🇻🇺 Vanuatu</td><td align="right">3</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/vu.m3u</code></td></tr>
|
||||
<tr><td align="left">🇻🇦 Vatican City</td><td align="right">5</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/va.m3u</code></td></tr>
|
||||
<tr><td align="left">🇻🇪 Venezuela</td><td align="right">49</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/ve.m3u</code></td></tr>
|
||||
<tr><td align="left">🇻🇪 Venezuela</td><td align="right">44</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/ve.m3u</code></td></tr>
|
||||
<tr><td align="left">🇻🇳 Vietnam</td><td align="right">71</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/vn.m3u</code></td></tr>
|
||||
<tr><td align="left">🇼🇫 Wallis & Futuna</td><td align="right">3</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/wf.m3u</code></td></tr>
|
||||
<tr><td align="left">🇪🇭 Western Sahara</td><td align="right">3</td><td align="left" nowrap><code>https://iptv-org.github.io/iptv/countries/eh.m3u</code></td></tr>
|
||||
|
@ -87,9 +87,9 @@ http://server1.oklanet.cl:1935/maximavideo1/maximavideo1/playlist.m3u8
|
||||
https://unlimited1-cl.dps.live/radioztv/radioztv.smil/playlist.m3u8
|
||||
#EXTINF:-1 tvg-id="RadioZetaTV.cl" tvg-name="Radio Zeta TV" tvg-country="CL" tvg-language="Spanish" tvg-logo="http://ik.imagekit.io/ulangotv/image/upload/3788384_logo_radio_zeta.png" group-title="",Radio Zeta TV (480p) [Not 24/7]
|
||||
https://unlimited1-us.dps.live/radioztv/radioztv.smil/playlist.m3u8
|
||||
#EXTINF:-1 tvg-id="RetroPlus2HD.cl" tvg-name="Retro Plus 2 HD" tvg-country="CL" tvg-language="" tvg-logo="https://i.imgur.com/i0rZsgG.png" group-title="Music",Retro Plus 2 HD (720p)
|
||||
#EXTINF:-1 tvg-id="RetroPlus2HD.cl" tvg-name="Retro Plus 2 HD" tvg-country="CL;PE" tvg-language="" tvg-logo="https://i.imgur.com/i0rZsgG.png" group-title="Music",Retro Plus 2 HD (720p)
|
||||
https://59f1cbe63db89.streamlock.net:1443/retroplussenal2/retroplussenal2/playlist.m3u8
|
||||
#EXTINF:-1 tvg-id="RetroPlusHD.cl" tvg-name="Retro Plus HD" tvg-country="CL" tvg-language="" tvg-logo="https://i.imgur.com/i0rZsgG.png" group-title="Music",Retro Plus HD (720p)
|
||||
#EXTINF:-1 tvg-id="RetroPlusHD.cl" tvg-name="Retro Plus HD" tvg-country="CL;PE" tvg-language="" tvg-logo="https://i.imgur.com/i0rZsgG.png" group-title="Music",Retro Plus HD (720p)
|
||||
https://59f1cbe63db89.streamlock.net:1443/retroplustv/retroplustv/playlist.m3u8
|
||||
#EXTINF:-1 tvg-id="RewindHD.cl" tvg-name="Rewind HD" tvg-country="CL" tvg-language="" tvg-logo="https://i.imgur.com/Ni2jlBi.png" group-title="Music",Rewind HD (720p) [Not 24/7]
|
||||
https://tls.cdnz.cl/rewindtv/rewindtv/playlist.m3u8
|
||||
|
@ -1,6 +1,22 @@
|
||||
#EXTM3U
|
||||
#EXTINF:-1 tvg-id="BlueMeiJuPinDao.cn" tvg-name="Blue 美剧频道" tvg-country="CN" tvg-language="Chinese" tvg-logo="https://parco-zh.github.io/demo/BLUE.png" group-title="",Blue 美剧频道 [Geo-blocked]
|
||||
http://210.210.155.35:80/dr9445/h/h16/02.m3u8
|
||||
#EXTINF:-1 tvg-id="BTVWeiShi.cn" tvg-name="BTV卫视" tvg-country="CN" tvg-language="Chinese" tvg-logo="" group-title="",BTV卫视HD
|
||||
http://ivi.bupt.edu.cn/hls/btv1hd.m3u8
|
||||
#EXTINF:-1 tvg-id="BTVYingShi.cn" tvg-name="BTV影视" tvg-country="CN" tvg-language="Chinese" tvg-logo="" group-title="",BTV影视 [Not 24/7]
|
||||
http://ivi.bupt.edu.cn/hls/btv4.m3u8
|
||||
#EXTINF:-1 tvg-id="BTVWenYi.cn" tvg-name="BTV文艺" tvg-country="CN" tvg-language="Chinese" tvg-logo="" group-title="",BTV文艺 [Not 24/7]
|
||||
http://ivi.bupt.edu.cn/hls/btv2.m3u8
|
||||
#EXTINF:-1 tvg-id="BTVWenYi.cn" tvg-name="BTV文艺" tvg-country="CN" tvg-language="Chinese" tvg-logo="" group-title="",BTV文艺HD
|
||||
http://ivi.bupt.edu.cn/hls/btv2hd.m3u8
|
||||
#EXTINF:-1 tvg-id="BTVXinWen.cn" tvg-name="BTV新闻" tvg-country="CN" tvg-language="Chinese" tvg-logo="" group-title="",BTV新闻
|
||||
http://ivi.bupt.edu.cn/hls/btv9.m3u8
|
||||
#EXTINF:-1 tvg-id="BTVShengHuo.cn" tvg-name="BTV生活" tvg-country="CN" tvg-language="Chinese" tvg-logo="" group-title="",BTV生活 [Not 24/7]
|
||||
http://ivi.bupt.edu.cn/hls/btv7.m3u8
|
||||
#EXTINF:-1 tvg-id="BTVKeJiao.cn" tvg-name="BTV科教" tvg-country="CN" tvg-language="Chinese" tvg-logo="" group-title="",BTV科教 [Not 24/7]
|
||||
http://ivi.bupt.edu.cn/hls/btv3.m3u8
|
||||
#EXTINF:-1 tvg-id="BTVJiShi.cn" tvg-name="BTV纪实" tvg-country="CN" tvg-language="Chinese" tvg-logo="" group-title="",BTV纪实HD
|
||||
http://ivi.bupt.edu.cn/hls/btv11hd.m3u8
|
||||
#EXTINF:-1 tvg-id="CCTV3.cn" tvg-name="CCTV 3" tvg-country="CN" tvg-language="Chinese" tvg-logo="https://i.imgur.com/HqScjKW.jpg" group-title="",CCTV 3
|
||||
http://183.207.249.14/PLTV/3/224/3221225588/index.m3u8
|
||||
#EXTINF:-1 tvg-id="CCTV4.cn" tvg-name="CCTV 4" tvg-country="CN" tvg-language="Chinese" tvg-logo="https://i.imgur.com/l8PQ7fy.jpg" group-title="",CCTV 4
|
||||
@ -133,16 +149,16 @@ http://ivi.bupt.edu.cn/hls/cctv8hd.m3u8
|
||||
http://117.148.187.37/PLTV/88888888/224/3221226156/index.m3u8
|
||||
#EXTINF:-1 tvg-id="CCTV9.cn" tvg-name="CCTV9" tvg-country="CN" tvg-language="Chinese;Mandarin Chinese" tvg-logo="https://upload.wikimedia.org/wikipedia/zh/1/11/CCTV-9_Logo.png" group-title="Documentary",CCTV中国中央电视台-9 纪录
|
||||
http://121.31.30.90:8085/ysten-business/live/cctv-9/yst.m3u8
|
||||
#EXTINF:-1 tvg-id="CGTNArabic.cn" tvg-name="CGTN Arabic" tvg-country="CN" tvg-language="Arabic" tvg-logo="https://ui.cgtn.com/static/resource/images/icon_new/live/live_AR.png" group-title="News",CGTN Arabic (720p)
|
||||
https://news.cgtn.com/resource/live/arabic/cgtn-a.m3u8
|
||||
#EXTINF:-1 tvg-id="CGTNDocumentary.cn" tvg-name="CGTN Documentary" tvg-country="CN" tvg-language="English" tvg-logo="https://upload.wikimedia.org/wikipedia/commons/d/d6/CGTN_Documentary_logo.png" group-title="Documentary",CGTN Documentary (English) (720p)
|
||||
https://news.cgtn.com/resource/live/document/cgtn-doc.m3u8
|
||||
#EXTINF:-1 tvg-id="CGTNEnglish.cn" tvg-name="CGTN English" tvg-country="CN" tvg-language="English" tvg-logo="https://upload.wikimedia.org/wikipedia/commons/thumb/8/81/CGTN.svg/800px-CGTN.svg.png" group-title="News",CGTN English (720p)
|
||||
https://dai.google.com/linear/hls/event/r4sa-f6GSN2XIvzKv5jVng/master.m3u8
|
||||
#EXTINF:-1 tvg-id="CGTNEnglish.cn" tvg-name="CGTN English" tvg-country="CN" tvg-language="English" tvg-logo="https://upload.wikimedia.org/wikipedia/commons/thumb/8/81/CGTN.svg/800px-CGTN.svg.png" group-title="News",CGTN English (720p)
|
||||
https://news.cgtn.com/resource/live/english/cgtn-news.m3u8
|
||||
#EXTINF:-1 tvg-id="CGTNEspanol.cn" tvg-name="CGTN Español" tvg-country="CN" tvg-language="Spanish" tvg-logo="https://upload.wikimedia.org/wikipedia/commons/thumb/8/81/CGTN.svg/800px-CGTN.svg.png" group-title="News",CGTN Español (720p)
|
||||
https://news.cgtn.com/resource/live/espanol/cgtn-e.m3u8
|
||||
#EXTINF:-1 tvg-id="CGTNArabic.cn" tvg-name="CGTN Arabic" tvg-country="CN" tvg-language="Arabic" tvg-logo="https://ui.cgtn.com/static/resource/images/icon_new/live/live_AR.png" group-title="News",CGTN Arabic (720p)
|
||||
https://news.cgtn.com/resource/live/arabic/cgtn-a.m3u8
|
||||
#EXTINF:-1 tvg-id="CGTNDocumentary.cn" tvg-name="CGTN Documentary" tvg-country="CN" tvg-language="English" tvg-logo="https://upload.wikimedia.org/wikipedia/commons/d/d6/CGTN_Documentary_logo.png" group-title="Documentary",CGTN Documentary (English)
|
||||
https://news.cgtn.com/resource/live/document/cgtn-doc.m3u8
|
||||
#EXTINF:-1 tvg-id="CGTNFrancais.cn" tvg-name="CGTN Français" tvg-country="CN" tvg-language="French" tvg-logo="" group-title="",CGTN Français (720p)
|
||||
https://news.cgtn.com/resource/live/french/cgtn-f.m3u8
|
||||
#EXTINF:-1 tvg-id="ChannelV.cn" tvg-name="Channel V" tvg-country="APAC" tvg-language="Chinese" tvg-logo="https://upload.wikimedia.org/wikipedia/commons/thumb/4/4b/Channel_V_Logo.svg/1200px-Channel_V_Logo.svg.png" group-title="Music",Channel V
|
||||
@ -235,6 +251,8 @@ http://l.cztvcloud.com/channels/lantian/SXshangyu1/720p.m3u8
|
||||
http://l.cztvcloud.com/channels/lantian/SXshangyu3/720p.m3u8
|
||||
#EXTINF:-1 tvg-id="DongXiangDianShiTai.cn" tvg-name="东乡电视台" tvg-country="CN" tvg-language="Chinese" tvg-logo="https://upload.wikimedia.org/wikipedia/zh/2/28/%E7%94%98%E8%82%83%E5%8D%AB%E8%A7%86.png" group-title="",东乡电视台
|
||||
http://117.156.28.119/270000001111/1110000131/index.m3u8
|
||||
#EXTINF:-1 tvg-id="DongNanTV.cn" tvg-name="东南卫视" tvg-country="CN" tvg-language="Chinese" tvg-logo="" group-title="",东南卫视
|
||||
http://117.169.120.140:8080/live/dongnanstv/.m3u8
|
||||
#EXTINF:-1 tvg-id="DongnanTV.cn" tvg-name="东南卫视" tvg-country="CN" tvg-language="Chinese" tvg-logo="" group-title="",东南卫视
|
||||
http://121.31.30.90:8085/ysten-business/live/dongnanstv/1.m3u8
|
||||
#EXTINF:-1 tvg-id="DongnanTV.cn" tvg-name="东南卫视" tvg-country="CN" tvg-language="Chinese" tvg-logo="" group-title="",东南卫视
|
||||
@ -243,8 +261,6 @@ http://121.31.30.90:8085/ysten-business/live/dongnanstv/yst.m3u8
|
||||
http://ivi.bupt.edu.cn/hls/dntv.m3u8
|
||||
#EXTINF:-1 tvg-id="DongnanTV.cn" tvg-name="东南卫视" tvg-country="CN" tvg-language="Chinese" tvg-logo="" group-title="",东南卫视
|
||||
http://m-tvlmedia.public.bcs.ysten.com/ysten-business/live/dongnanstv/1.m3u8
|
||||
#EXTINF:-1 tvg-id="DongNanTV.cn" tvg-name="东南卫视" tvg-country="CN" tvg-language="Chinese" tvg-logo="" group-title="",东南卫视
|
||||
http://117.169.120.140:8080/live/dongnanstv/.m3u8
|
||||
#EXTINF:-1 tvg-id="DongFangWeiShi.cn" tvg-name="东方卫视" tvg-country="CN" tvg-language="Chinese" tvg-logo="https://parco-zh.github.io/demo/dongfang.jpg" group-title="",东方卫视
|
||||
http://121.31.30.90:8085/ysten-business/live/dongfangstv/1.m3u8
|
||||
#EXTINF:-1 tvg-id="DongFangWeiShi.cn" tvg-name="东方卫视" tvg-country="CN" tvg-language="Chinese" tvg-logo="https://parco-zh.github.io/demo/dongfang.jpg" group-title="",东方卫视
|
||||
@ -349,7 +365,7 @@ http://121.31.30.90:8085/ysten-business/live/youmankaton/1.m3u8
|
||||
http://121.31.30.90:8085/ysten-business/live/youmankaton/yst.m3u8
|
||||
#EXTINF:-1 tvg-id="YouManKaTon.cn" tvg-name="优漫卡通" tvg-country="CN" tvg-language="Chinese" tvg-logo="" group-title="Kids",优漫卡通
|
||||
http://m-tvlmedia.public.bcs.ysten.com/ysten-business/live/youmankaton/1.m3u8
|
||||
#EXTINF:-1 tvg-id="YouShiPinDao.cn" tvg-name="优视频道" tvg-country="CN" tvg-language="Chinese" tvg-logo="" group-title="",优视频道
|
||||
#EXTINF:-1 tvg-id="YouShiPinDao.cn" tvg-name="优视频道" tvg-country="CN" tvg-language="Chinese" tvg-logo="" group-title="",优视频道 (720p)
|
||||
http://1-fss24-s0.streamhoster.com/lv_uchannel/broadcast1/playlist.m3u8
|
||||
#EXTINF:-1 tvg-id="YuYaoXinWenZongHe.cn" tvg-name="余姚新闻综合" tvg-country="CN" tvg-language="Chinese" tvg-logo="" group-title="",余姚新闻综合
|
||||
http://l.cztvcloud.com/channels/lantian/SXyuyao1/720p.m3u8
|
||||
@ -376,11 +392,11 @@ http://v.btzx.com.cn:1935/live/news.stream/playlist.m3u8
|
||||
#EXTINF:-1 tvg-id="NeiMengGuWeiShi.cn" tvg-name="内蒙古卫视" tvg-country="CN" tvg-language="Chinese" tvg-logo="http://epg.51zmt.top:8000/tb1/ws/neimeng.png" group-title="",内蒙古卫视
|
||||
http://117.169.120.140:8080/live/neimenggustv/.m3u8
|
||||
#EXTINF:-1 tvg-id="NeiMengGuWeiShi.cn" tvg-name="内蒙古卫视" tvg-country="CN" tvg-language="Chinese" tvg-logo="http://epg.51zmt.top:8000/tb1/ws/neimeng.png" group-title="",内蒙古卫视
|
||||
http://live.m2oplus.nmtv.cn/1/playlist.m3u8
|
||||
#EXTINF:-1 tvg-id="NeiMengGuWeiShi.cn" tvg-name="内蒙古卫视" tvg-country="CN" tvg-language="Chinese" tvg-logo="http://epg.51zmt.top:8000/tb1/ws/neimeng.png" group-title="",内蒙古卫视
|
||||
http://m-tvlmedia.public.bcs.ysten.com/ysten-business/live/neimenggustv/1.m3u8
|
||||
#EXTINF:-1 tvg-id="NeiMengGuWeiShi.cn" tvg-name="内蒙古卫视" tvg-country="CN" tvg-language="Chinese" tvg-logo="http://epg.51zmt.top:8000/tb1/ws/neimeng.png" group-title="",内蒙古卫视
|
||||
http://m-tvlmedia.public.bcs.ysten.com/ysten-business/live/neimenggustv/yst.m3u8
|
||||
#EXTINF:-1 tvg-id="NeiMengGuWeiShi.cn" tvg-name="内蒙古卫视" tvg-country="CN" tvg-language="Chinese" tvg-logo="http://epg.51zmt.top:8000/tb1/ws/neimeng.png" group-title="",内蒙古卫视
|
||||
http://live.m2oplus.nmtv.cn/1/playlist.m3u8
|
||||
#EXTINF:-1 tvg-id="MianNingDianShiTai.cn" tvg-name="冕宁电视台" tvg-country="CN" tvg-language="Chinese" tvg-logo="http://www.sichuanmianning.com/images/mianlin_tv/img/logo.png" group-title="",冕宁电视台
|
||||
http://live.sichuanmianning.com/live/xwpd.m3u8
|
||||
#EXTINF:-1 tvg-id="JunShiPingLun.cn" tvg-name="军事评论" tvg-country="CN" tvg-language="Chinese" tvg-logo="https://parco-zh.github.io/demo/new13.png" group-title="",军事评论
|
||||
@ -435,22 +451,6 @@ http://121.31.30.90:8085/ysten-business/live/hdbeijingstv/1.m3u8
|
||||
http://121.31.30.90:8085/ysten-business/live/hdbeijingstv/yst.m3u8
|
||||
#EXTINF:-1 tvg-id="BeiJingWeiShi.cn" tvg-name="北京卫视" tvg-country="CN" tvg-language="Chinese" tvg-logo="https://parco-zh.github.io/demo/bjbtv.jpg" group-title="",北京卫视HD
|
||||
http://223.82.250.72/live/hdbeijingstv/1.m3u8
|
||||
#EXTINF:-1 tvg-id="BTVWeiShi.cn" tvg-name="BTV卫视" tvg-country="CN" tvg-language="Chinese" tvg-logo="" group-title="",BTV卫视HD
|
||||
http://ivi.bupt.edu.cn/hls/btv1hd.m3u8
|
||||
#EXTINF:-1 tvg-id="BTVYingShi.cn" tvg-name="BTV影视" tvg-country="CN" tvg-language="Chinese" tvg-logo="" group-title="",BTV影视 [Not 24/7]
|
||||
http://ivi.bupt.edu.cn/hls/btv4.m3u8
|
||||
#EXTINF:-1 tvg-id="BTVWenYi.cn" tvg-name="BTV文艺" tvg-country="CN" tvg-language="Chinese" tvg-logo="" group-title="",BTV文艺 [Not 24/7]
|
||||
http://ivi.bupt.edu.cn/hls/btv2.m3u8
|
||||
#EXTINF:-1 tvg-id="BTVWenYi.cn" tvg-name="BTV文艺" tvg-country="CN" tvg-language="Chinese" tvg-logo="" group-title="",BTV文艺HD
|
||||
http://ivi.bupt.edu.cn/hls/btv2hd.m3u8
|
||||
#EXTINF:-1 tvg-id="BTVXinWen.cn" tvg-name="BTV新闻" tvg-country="CN" tvg-language="Chinese" tvg-logo="" group-title="",BTV新闻
|
||||
http://ivi.bupt.edu.cn/hls/btv9.m3u8
|
||||
#EXTINF:-1 tvg-id="BTVShengHuo.cn" tvg-name="BTV生活" tvg-country="CN" tvg-language="Chinese" tvg-logo="" group-title="",BTV生活 [Not 24/7]
|
||||
http://ivi.bupt.edu.cn/hls/btv7.m3u8
|
||||
#EXTINF:-1 tvg-id="BTVKeJiao.cn" tvg-name="BTV科教" tvg-country="CN" tvg-language="Chinese" tvg-logo="" group-title="",BTV科教 [Not 24/7]
|
||||
http://ivi.bupt.edu.cn/hls/btv3.m3u8
|
||||
#EXTINF:-1 tvg-id="BTVJiShi.cn" tvg-name="BTV纪实" tvg-country="CN" tvg-language="Chinese" tvg-logo="" group-title="",BTV纪实HD
|
||||
http://ivi.bupt.edu.cn/hls/btv11hd.m3u8
|
||||
#EXTINF:-1 tvg-id="BTVCaiJing.cn" tvg-name="BTV财经" tvg-country="CN" tvg-language="Chinese" tvg-logo="" group-title="",北京财经 [Not 24/7]
|
||||
http://ivi.bupt.edu.cn/hls/btv5.m3u8
|
||||
#EXTINF:-1 tvg-id="BTVQingNian.cn" tvg-name="BTV青年" tvg-country="CN" tvg-language="Chinese" tvg-logo="" group-title="",北京青年 [Not 24/7]
|
||||
@ -595,7 +595,7 @@ http://scgctvshow.sctv.com/hdlive/sctv5/index.m3u8
|
||||
http://scgctvshow.sctv.com/hdlive/sctv2/index.m3u8
|
||||
#EXTINF:-1 tvg-id="SCTV4.cn" tvg-name="SCTV4" tvg-country="CN" tvg-language="" tvg-logo="http://epg.51zmt.top:8000/tb1/sheng/sctv4.png" group-title="",四川新闻 (720p)
|
||||
http://scgctvshow.sctv.com/hdlive/sctv4/index.m3u8
|
||||
#EXTINF:-1 tvg-id="SCTV6.cn" tvg-name="SCTV6" tvg-country="CN" tvg-language="" tvg-logo="http://epg.51zmt.top:8000/tb1/sheng/sctv6.png" group-title="",四川星空购物
|
||||
#EXTINF:-1 tvg-id="SCTV6.cn" tvg-name="SCTV6" tvg-country="CN" tvg-language="" tvg-logo="http://epg.51zmt.top:8000/tb1/sheng/sctv6.png" group-title="",四川星空购物 (720p)
|
||||
http://scgctvshow.sctv.com/hdlive/sctv6/index.m3u8
|
||||
#EXTINF:-1 tvg-id="SCTV3.cn" tvg-name="SCTV3" tvg-country="CN" tvg-language="" tvg-logo="http://epg.51zmt.top:8000/tb1/sheng/sctv3.png" group-title="",四川经济 (720p)
|
||||
http://scgctvshow.sctv.com/hdlive/sctv3/index.m3u8
|
||||
@ -630,13 +630,13 @@ http://121.31.30.90:8085/ysten-business/live/tianjinstv/yst.m3u8
|
||||
#EXTINF:-1 tvg-id="TianJinWeiShi.cn" tvg-name="天津卫视" tvg-country="CN" tvg-language="Chinese" tvg-logo="" group-title="",天津卫视
|
||||
http://ivi.bupt.edu.cn/hls/tjtv.m3u8
|
||||
#EXTINF:-1 tvg-id="TianJinWeiShi.cn" tvg-name="天津卫视" tvg-country="CN" tvg-language="Chinese" tvg-logo="" group-title="",天津卫视HD
|
||||
http://m-tvlmedia.public.bcs.ysten.com/ysten-business/live/hdtianjinstv/1.m3u8
|
||||
http://117.169.120.140:8080/live/hdtianjinstv/.m3u8
|
||||
#EXTINF:-1 tvg-id="TianJinWeiShi.cn" tvg-name="天津卫视" tvg-country="CN" tvg-language="Chinese" tvg-logo="" group-title="",天津卫视HD
|
||||
http://121.31.30.90:8085/ysten-business/live/hdtianjinstv/1.m3u8
|
||||
#EXTINF:-1 tvg-id="TianJinWeiShi.cn" tvg-name="天津卫视" tvg-country="CN" tvg-language="Chinese" tvg-logo="" group-title="",天津卫视HD
|
||||
http://121.31.30.90:8085/ysten-business/live/hdtianjinstv/yst.m3u8
|
||||
#EXTINF:-1 tvg-id="TianJinWeiShi.cn" tvg-name="天津卫视" tvg-country="CN" tvg-language="Chinese" tvg-logo="" group-title="",天津卫视HD
|
||||
http://117.169.120.140:8080/live/hdtianjinstv/.m3u8
|
||||
http://m-tvlmedia.public.bcs.ysten.com/ysten-business/live/hdtianjinstv/1.m3u8
|
||||
#EXTINF:-1 tvg-id="TianJinWeiShiGaoQing.cn" tvg-name="天津卫视高清" tvg-country="CN" tvg-language="Chinese" tvg-logo="https://parco-zh.github.io/demo/TJWS.png" group-title="",天津卫视高清
|
||||
http://ivi.bupt.edu.cn/hls/tjhd.m3u8
|
||||
#EXTINF:-1 tvg-id="YangShiTiYuPinDaoCCTV5FHD100.cn" tvg-name="央视体育频道-CCTV5FHD100" tvg-country="CN" tvg-language="" tvg-logo="" group-title="",央视体育频道-CCTV5FHD100
|
||||
@ -682,15 +682,15 @@ http://121.31.30.90:8085/ysten-business/live/anhuistv/1.m3u8
|
||||
#EXTINF:-1 tvg-id="AnHuiWeiShi.cn" tvg-name="安徽卫视" tvg-country="CN" tvg-language="Chinese" tvg-logo="http://s.wasu.cn/data/images/201512/24/567b9d7479d83.png" group-title="",安徽卫视
|
||||
http://121.31.30.90:8085/ysten-business/live/anhuistv/yst.m3u8
|
||||
#EXTINF:-1 tvg-id="AnHuiWeiShi.cn" tvg-name="安徽卫视" tvg-country="CN" tvg-language="Chinese" tvg-logo="http://s.wasu.cn/data/images/201512/24/567b9d7479d83.png" group-title="",安徽卫视
|
||||
http://125.210.152.10:8060/live/AHWSHD_H265.m3u8
|
||||
#EXTINF:-1 tvg-id="AnHuiWeiShi.cn" tvg-name="安徽卫视" tvg-country="CN" tvg-language="Chinese" tvg-logo="http://s.wasu.cn/data/images/201512/24/567b9d7479d83.png" group-title="",安徽卫视
|
||||
http://219.153.252.50/PLTV/88888888/224/3221225534/playlist.m3u8
|
||||
#EXTINF:-1 tvg-id="AnHuiWeiShi.cn" tvg-name="安徽卫视" tvg-country="CN" tvg-language="Chinese" tvg-logo="http://s.wasu.cn/data/images/201512/24/567b9d7479d83.png" group-title="",安徽卫视
|
||||
http://223.110.245.143/ott.js.chinamobile.com/PLTV/3/224/3221225800/index.m3u8
|
||||
#EXTINF:-1 tvg-id="AnHuiWeiShi.cn" tvg-name="安徽卫视" tvg-country="CN" tvg-language="Chinese" tvg-logo="http://s.wasu.cn/data/images/201512/24/567b9d7479d83.png" group-title="",安徽卫视
|
||||
http://ivi.bupt.edu.cn/hls/ahhd.m3u8
|
||||
#EXTINF:-1 tvg-id="AnHuiWeiShi.cn" tvg-name="安徽卫视" tvg-country="CN" tvg-language="Chinese" tvg-logo="http://s.wasu.cn/data/images/201512/24/567b9d7479d83.png" group-title="",安徽卫视
|
||||
http://ivi.bupt.edu.cn/hls/ahtv.m3u8
|
||||
#EXTINF:-1 tvg-id="AnHuiWeiShi.cn" tvg-name="安徽卫视" tvg-country="CN" tvg-language="Chinese" tvg-logo="http://s.wasu.cn/data/images/201512/24/567b9d7479d83.png" group-title="",安徽卫视
|
||||
http://125.210.152.10:8060/live/AHWSHD_H265.m3u8
|
||||
#EXTINF:-1 tvg-id="AnHuiWeiShi.cn" tvg-name="安徽卫视" tvg-country="CN" tvg-language="Chinese" tvg-logo="http://s.wasu.cn/data/images/201512/24/567b9d7479d83.png" group-title="",安徽卫视
|
||||
http://219.153.252.50/PLTV/88888888/224/3221225534/playlist.m3u8
|
||||
#EXTINF:-1 tvg-id="AnHuiXiaoShuoPingShuGuangBo.cn" tvg-name="安徽小说评书广播" tvg-country="CN" tvg-language="Chinese" tvg-logo="" group-title="",安徽小说评书广播
|
||||
http://stream1.ahrtv.cn/xspsgb/sd/live.m3u8
|
||||
#EXTINF:-1 tvg-id="AnHuiYingShi.cn" tvg-name="安徽影视" tvg-country="CN" tvg-language="" tvg-logo="http://www.tvyan.com/uploads/dianshi/anhys.jpg" group-title="",安徽影视
|
||||
@ -814,11 +814,11 @@ http://149.129.100.78/guangdong.php?id=47
|
||||
#EXTINF:-1 tvg-id="GuangDongWeiShi.cn" tvg-name="广东卫视" tvg-country="CN" tvg-language="Chinese" tvg-logo="https://parco-zh.github.io/demo/guangdong.jpg" group-title="",广东卫视
|
||||
http://121.31.30.90:8085/ysten-business/live/guangdongstv/1.m3u8
|
||||
#EXTINF:-1 tvg-id="GuangDongWeiShi.cn" tvg-name="广东卫视" tvg-country="CN" tvg-language="Chinese" tvg-logo="https://parco-zh.github.io/demo/guangdong.jpg" group-title="",广东卫视HD
|
||||
http://m-tvlmedia.public.bcs.ysten.com/ysten-business/live/hdguangdongstv/1.m3u8
|
||||
#EXTINF:-1 tvg-id="GuangDongWeiShi.cn" tvg-name="广东卫视" tvg-country="CN" tvg-language="Chinese" tvg-logo="https://parco-zh.github.io/demo/guangdong.jpg" group-title="",广东卫视HD
|
||||
http://121.31.30.90:8085/ysten-business/live/hdguangdongstv/1.m3u8
|
||||
#EXTINF:-1 tvg-id="GuangDongWeiShi.cn" tvg-name="广东卫视" tvg-country="CN" tvg-language="Chinese" tvg-logo="https://parco-zh.github.io/demo/guangdong.jpg" group-title="",广东卫视HD
|
||||
http://ivi.bupt.edu.cn/hls/gdhd.m3u8
|
||||
#EXTINF:-1 tvg-id="GuangDongWeiShi.cn" tvg-name="广东卫视" tvg-country="CN" tvg-language="Chinese" tvg-logo="https://parco-zh.github.io/demo/guangdong.jpg" group-title="",广东卫视HD
|
||||
http://m-tvlmedia.public.bcs.ysten.com/ysten-business/live/hdguangdongstv/1.m3u8
|
||||
#EXTINF:-1 tvg-id="GuangDongGuoJi.cn" tvg-name="广东国际" tvg-country="CN" tvg-language="" tvg-logo="" group-title="",广东国际
|
||||
http://149.129.100.78/guangdong.php?id=46
|
||||
#EXTINF:-1 tvg-id="GuangDongShaoEr.cn" tvg-name="广东少儿" tvg-country="CN" tvg-language="" tvg-logo="" group-title="",广东少儿
|
||||
|
@ -81,7 +81,7 @@ https://streamtv.mediasector.es/hls/activatv/.m3u8
|
||||
https://streaming01.gestec-video.com/hls/artequatreAlacanti.m3u8
|
||||
#EXTINF:-1 tvg-id="AlcarriaTV.es" tvg-name="Alcarria TV" tvg-country="ES" tvg-language="Spanish" tvg-logo="https://i.imgur.com/pzJAYan.png" group-title="",Alcarria TV
|
||||
http://217.182.77.27/live/alcarriatv-livestream.m3u8
|
||||
#EXTINF:-1 tvg-id="AlcarriaTV.es" tvg-name="Alcarria TV" tvg-country="ES" tvg-language="Spanish" tvg-logo="https://i.imgur.com/pzJAYan.png" group-title="",Alcarria TV
|
||||
#EXTINF:-1 tvg-id="AlcarriaTV.es" tvg-name="Alcarria TV" tvg-country="ES" tvg-language="Spanish" tvg-logo="https://i.imgur.com/pzJAYan.png" group-title="",Alcarria TV (576p)
|
||||
http://cls.alcarria.tv/alcarriatv/livestream/playlist.m3u8
|
||||
#EXTINF:-1 tvg-id="AlcarriaTV.es" tvg-name="Alcarria TV" tvg-country="ES" tvg-language="Spanish" tvg-logo="https://i.imgur.com/pzJAYan.png" group-title="",Alcarria TV
|
||||
https://cls.alcarria.tv/live/alcarriatv-livestream.m3u8
|
||||
@ -105,7 +105,7 @@ https://cloudvideo.servers10.com:8081/8004/index.m3u8
|
||||
https://cdn01.yowi.tv/4131RI73I9/master.m3u8
|
||||
#EXTINF:-1 tvg-id="Canal10Emporda.es" tvg-name="Canal 10 Empordà" tvg-country="ES" tvg-language="" tvg-logo="" group-title="",Canal 10 Empordà
|
||||
http://ventdelnord.tv:8080/escala/directe.m3u8
|
||||
#EXTINF:-1 tvg-id="Canal2000LaSolana.es" tvg-name="Canal 2000 La Solana" tvg-country="ES" tvg-language="" tvg-logo="" group-title="",Canal 2000 La Solana
|
||||
#EXTINF:-1 tvg-id="Canal2000LaSolana.es" tvg-name="Canal 2000 La Solana" tvg-country="ES" tvg-language="" tvg-logo="" group-title="",Canal 2000 La Solana (720p)
|
||||
http://canal2000.berkano-systems.net/streaming/streams/canal2000.m3u8
|
||||
#EXTINF:-1 tvg-id="Canal25TV.es" tvg-name="Canal 25 TV" tvg-country="ES" tvg-language="Spanish" tvg-logo="https://i.imgur.com/2BBGZ1H.png" group-title="Local",Canal 25 TV (Barbastro) [Not 24/7]
|
||||
https://common01.todostreaming.es/live/tvbarbastro-livestream.m3u8
|
||||
|
@ -31,12 +31,8 @@ http://cdnh4.iblups.com/hls/OVJNKV4pSr.m3u8
|
||||
https://live.obslivestream.com:1936/crtv/ngrp:crtv_all/playlist.m3u8
|
||||
#EXTINF:-1 tvg-id="Cultura24tv.pe" tvg-name="Cultura 24" tvg-country="PE" tvg-language="Spanish" tvg-logo="https://i.imgur.com/2mSwwpH.png" group-title="Culture",Cultura 24 (720p)
|
||||
https://vs8.live.opencaster.com/cultura24/smil:cultura24/playlist.m3u8
|
||||
#EXTINF:-1 tvg-id="DiarioHechiceraTumbes.pe" tvg-name="Diario Hechicera (Tumbes)" tvg-country="PE" tvg-language="Spanish" tvg-logo="https://graph.facebook.com/diariohechicera/picture?width=320&height=320" group-title="Local",Diario Hechicera (Tumbes) [Not 24/7]
|
||||
#EXTINF:-1 tvg-id="DiarioHechiceraTumbes.pe" tvg-name="Diario Hechicera (Tumbes)" tvg-country="PE" tvg-language="Spanish" tvg-logo="https://graph.facebook.com/diariohechicera/picture?width=320&height=320" group-title="Local",Diario Hechicera (Tumbes) (720p) [Not 24/7]
|
||||
https://panel.streamingtv-mediacp.online:1936/8108/8108/playlist.m3u8
|
||||
#EXTINF:-1 tvg-id="GoldValleyTV.pe" tvg-name="Gold Valley TV (Cafsma)" tvg-country="PE" tvg-language="Spanish" tvg-logo="https://graph.facebook.com/Goldvalleytvcasma/picture?width=320&height=320" group-title="Local",Gold Valley TV (Casma) [Not 24/7]
|
||||
https://stmv.panel.grupolimalive.com/gold/gold/chunklist_w210808895.m3u8
|
||||
#EXTINF:-1 tvg-id="Studio97TV.pe" tvg-name="Studio97 TV (Moquegua)" tvg-country="PE" tvg-language="Spanish" tvg-logo="https://graph.facebook.com/radiostudio97/picture?width=320&height=320" group-title="Music",Studio97 TV (Moquegua) [Not 24/7]
|
||||
https://stmv.panel.grupolimalive.com/gold/gold/chunklist_w210808895.m3u8
|
||||
#EXTINF:-1 tvg-id="ExitosaTV.pe" tvg-name="Exitosa TV" tvg-country="PE" tvg-language="Spanish" tvg-logo="https://graph.facebook.com/Exitosanoticias/picture?width=320&height=320" group-title="News",Exitosa TV
|
||||
https://cu.onliv3.com/livevd1/user2.m3u8
|
||||
#EXTINF:-1 tvg-id="Expresion.pe" tvg-name="Expresión (Tacna)" tvg-country="PE" tvg-language="Spanish" tvg-logo="https://graph.facebook.com/telesurexpresion/picture?width=320&height=320" group-title="Local",Expresión (Tacna) [Not 24/7]
|
||||
@ -47,10 +43,8 @@ https://tvsource.gacetaucayalina.com/hls/prueba.m3u8
|
||||
https://envivo.galacticatv.com:3913/stream/play.m3u8
|
||||
#EXTINF:-1 tvg-id="GeniosTVMoyobamba.pe" tvg-name="Genios TV (Moyobamba)" tvg-country="PE" tvg-language="Spanish" tvg-logo="https://graph.facebook.com/geniostvmoyobamba/picture?width=320&height=320" group-title="Local",Genios TV (Moyobamba) (720p) [Not 24/7]
|
||||
https://live.obslivestream.com:1936/geniostv/ngrp:geniostv_all/playlist.m3u8?DVR
|
||||
#EXTINF:-1 tvg-id="PeruvianRadioTV.pe" tvg-name="Peruvian Radio TV" tvg-country="PE" tvg-language="Spanish" tvg-logo="https://peruvianradiotv.pe/wp-content/uploads/2021/03/Logo-Peruvian-6.png" group-title="Local",PeruvianRadio TV (720p) [Not 24/7]
|
||||
https://stmv.panel.grupolimalive.com/peruviantv/peruviantv/playlist.m3u8
|
||||
#EXTINF:-1 tvg-id="SurTVIlo.pe" tvg-name="SurTV (Ilo)" tvg-country="PE" tvg-language="Spanish" tvg-logo="https://graph.facebook.com/surtvilo/picture?width=320&height=320" group-title="Local",SurTV (Ilo) (720p) [Not 24/7]
|
||||
https://stmv.panel.grupolimalive.com/surtv/surtv/playlist.m3u8
|
||||
#EXTINF:-1 tvg-id="GoldValleyTV.pe" tvg-name="Gold Valley TV (Cafsma)" tvg-country="PE" tvg-language="Spanish" tvg-logo="https://graph.facebook.com/Goldvalleytvcasma/picture?width=320&height=320" group-title="Local",Gold Valley TV (Casma) [Not 24/7]
|
||||
https://stmv.panel.grupolimalive.com/gold/gold/chunklist_w210808895.m3u8
|
||||
#EXTINF:-1 tvg-id="HatunTV.pe" tvg-name="Hatun TV" tvg-country="PE" tvg-language="Spanish" tvg-logo="https://yt3.ggpht.com/ytc/AAUvwnhI0HKESXrVQ8-ktPCeRap6-cP_4upPtEpAlwPa=s88-c-k-c0x00ffffff-no-rj" group-title="Music",Hatun TV (720p)
|
||||
https://tv.siete.us/bestcablehatuntv/bestcablehatuntv/index.m3u8
|
||||
#EXTINF:-1 tvg-id="JNETV.pe" tvg-name="JNE TV" tvg-country="PE" tvg-language="Spanish" tvg-logo="https://graph.facebook.com/JNE.Peru/picture?width=320&height=320" group-title="Legislative",JNE TV [Not 24/7]
|
||||
@ -65,7 +59,7 @@ https://mdstrm.com/live-stream-playlist/5ce7109c7398b977dc0744cd.m3u8
|
||||
https://tv.oyotunstream.com/master/master/playlist.m3u8
|
||||
#EXTINF:-1 tvg-id="MegaTV.pe" tvg-name="Mega TV" tvg-country="PE" tvg-language="Spanish" tvg-logo="https://graph.facebook.com/MTVAQP/picture?width=320&height=320" group-title="Local",Mega TV (360p) [Not 24/7]
|
||||
https://cp.sradiotv.com:1936/Stream/Stream/playlist.m3u8
|
||||
#EXTINF:-1 tvg-id="Millenium49TVPucallpa.pe" tvg-name="Millenium 49 TV (Pucallpa)" tvg-country="PE" tvg-language="Spanish" tvg-logo="https://i.imgur.com/zYpMHhQ.png" group-title="Local",Millenium 49 TV (Pucallpa) [Not 24/7]
|
||||
#EXTINF:-1 tvg-id="Millenium49TVPucallpa.pe" tvg-name="Millenium 49 TV (Pucallpa)" tvg-country="PE" tvg-language="Spanish" tvg-logo="https://i.imgur.com/zYpMHhQ.png" group-title="Local",Millenium 49 TV (Pucallpa) (720p) [Not 24/7]
|
||||
https://stmv.panel.grupolimalive.com/milleniuntv/milleniuntv/playlist.m3u8
|
||||
#EXTINF:-1 tvg-id="ModaHuancayo.pe" tvg-name="Moda Huancayo" tvg-country="PE" tvg-language="Spanish" tvg-logo="https://graph.facebook.com/ModaHuancayoTv/picture?width=320&height=320" group-title="Local",Moda Huancayo TV [Not 24/7]
|
||||
https://tvdatta.com:3383/live/huancayotvlive.m3u8
|
||||
@ -95,10 +89,12 @@ https://linkastream.co/headless?url=https://www.dailymotion.com/PanamericanaPTV
|
||||
https://d2fxrfbiedz1tm.cloudfront.net/livepaxtv/smil:PC.smil/playlist.m3u8
|
||||
#EXTINF:-1 tvg-id="PBO.pe" tvg-name="PBO Digital" tvg-country="PE" tvg-language="Spanish" tvg-logo="https://graph.facebook.com/PBOPeru/picture?width=320&height=320" group-title="News",PBO Digital [Not 24/7]
|
||||
https://linkastream.co/headless?url=https://www.youtube.com/channel/UCgR0st4ZLABi-LQcWNu3wnQ/live
|
||||
#EXTINF:-1 tvg-id="PlanetaTVMoyobamba.pe" tvg-name="Planeta TV (Moyobamba)" tvg-country="PE" tvg-language="Spanish" tvg-logo="https://graph.facebook.com/PlanetaTeleInformativo/picture?width=320&height=320" group-title="Local",Planeta TV (Moyobamba) (720p) [Not 24/7]
|
||||
https://live.obslivestream.com:1936/planetatv/ngrp:planetatv_all/playlist.m3u8?DVR
|
||||
#EXTINF:-1 tvg-id="PeruvianRadioTV.pe" tvg-name="Peruvian Radio TV" tvg-country="PE" tvg-language="Spanish" tvg-logo="https://peruvianradiotv.pe/wp-content/uploads/2021/03/Logo-Peruvian-6.png" group-title="Local",PeruvianRadio TV (720p) [Not 24/7]
|
||||
https://stmv.panel.grupolimalive.com/peruviantv/peruviantv/playlist.m3u8
|
||||
#EXTINF:-1 tvg-id="PlanetaTVBagua.pe" tvg-name="Planeta TV (Bagua)" tvg-country="PE" tvg-language="Spanish" tvg-logo="https://graph.facebook.com/planeatvperu/picture?width=320&height=320" group-title="Local",Planeta TV (Bagua) (720p) [Not 24/7]
|
||||
https://stmv.panel.grupolimalive.com/planeatv/planeatv/playlist.m3u8
|
||||
#EXTINF:-1 tvg-id="PlanetaTVMoyobamba.pe" tvg-name="Planeta TV (Moyobamba)" tvg-country="PE" tvg-language="Spanish" tvg-logo="https://graph.facebook.com/PlanetaTeleInformativo/picture?width=320&height=320" group-title="Local",Planeta TV (Moyobamba) (720p) [Not 24/7]
|
||||
https://live.obslivestream.com:1936/planetatv/ngrp:planetatv_all/playlist.m3u8?DVR
|
||||
#EXTINF:-1 tvg-id="Primavera15RadiotelevisionMoquegua.pe" tvg-name="Primavera 15 Radiotelevisión (Moquegua)" tvg-country="PE" tvg-language="Spanish" tvg-logo="https://graph.facebook.com/radioprimaveramoquegua/picture?width=320&height=320" group-title="Local",Primavera 15 Radiotelevisión (Moquegua) (720p)
|
||||
https://rtmp02.portalexpress.es/primaveratv/primaveratv/playlist.m3u8
|
||||
#EXTINF:-1 tvg-id="QTTelevision.pe" tvg-name="QT Televisión" tvg-country="PE" tvg-language="Spanish" tvg-logo="https://graph.facebook.com/QTTelevision/picture?width=320&height=320" group-title="Local",QT Televisión (Cuzco) [Not 24/7]
|
||||
@ -127,6 +123,8 @@ https://query-streamlink.lanesh4d0w.repl.co/iptv-query?streaming-ip=https://www.
|
||||
https://servers.amelbasoluciones.co:19360/5medialive/5medialive.m3u8
|
||||
#EXTINF:-1 tvg-id="SuperCanalYurimaguas.pe" tvg-name="Super Canal (Yurimaguas)" tvg-country="PE" tvg-language="Spanish" tvg-logo="https://graph.facebook.com/supercanalyuri/picture?width=320&height=320" group-title="Local",Super Canal (Yurimaguas) [Not 24/7]
|
||||
https://7.innovatestream.pe:19360/supercanal/supercanal.m3u8
|
||||
#EXTINF:-1 tvg-id="SurTVIlo.pe" tvg-name="SurTV (Ilo)" tvg-country="PE" tvg-language="Spanish" tvg-logo="https://graph.facebook.com/surtvilo/picture?width=320&height=320" group-title="Local",SurTV (Ilo) (720p) [Not 24/7]
|
||||
https://stmv.panel.grupolimalive.com/surtv/surtv/playlist.m3u8
|
||||
#EXTINF:-1 tvg-id="TelesurCamana.pe" tvg-name="Telesur (Camana)" tvg-country="PE" tvg-language="Spanish" tvg-logo="https://graph.facebook.com/telesurexpresion/picture?width=320&height=320" group-title="Local",Telesur (Camana) [Not 24/7]
|
||||
https://qlobbidev.s.llnwi.net/telesur3/hls/camana.m3u8
|
||||
#EXTINF:-1 tvg-id="TelesurIlo.pe" tvg-name="Telesur (Ilo)" tvg-country="PE" tvg-language="Spanish" tvg-logo="https://graph.facebook.com/telesurexpresion/picture?width=320&height=320" group-title="Local",Telesur (Ilo)
|
||||
|
@ -331,8 +331,6 @@ https://edge2.uk.kab.tv/live/tvrus-rus-medium/playlist.m3u8
|
||||
https://strm.yandex.ru/kal/kavkaz24_supres/kavkaz24_supres0.m3u8
|
||||
#EXTINF:-1 tvg-id="KarapuzTV.ru" tvg-name="Карапуз ТВ" tvg-country="RU" tvg-language="Russian" tvg-logo="" group-title="Kids",Карапуз ТВ
|
||||
https://karapuztv.fenixplustv.xyz/content/33418/index.m3u8
|
||||
#EXTINF:-1 tvg-id="TVKvarc.ru" tvg-name="ТВ Кварц" tvg-country="RU" tvg-language="" tvg-logo="" group-title="Local",ТВ Кварц (576p)
|
||||
https://video.quartztelecom.ru:18080/hls/2386168/71fe656b993c510f39a5/playlist.m3u8
|
||||
#EXTINF:-1 tvg-id="KinozalVHS90s.ru" tvg-name="Кинозал (VHS 90s)" tvg-country="RU" tvg-language="" tvg-logo="" group-title="",Кинозал (VHS 90s)
|
||||
https://v2.catcast.tv/content/37925/index.m3u8
|
||||
#EXTINF:-1 tvg-id="Kinokomediya.ru" tvg-name="Кинокомедия" tvg-country="RU" tvg-language="Russian" tvg-logo="" group-title="Comedy",Кинокомедия
|
||||
@ -653,11 +651,11 @@ https://gtrkchita.ru:8081/hls/r1-chita_360p.m3u8
|
||||
http://cdnmg.secure.live.rtr-vesti.ru/hls/russia_hd/playlist.m3u8
|
||||
#EXTINF:-1 tvg-id="Rossiya1HD.ru" tvg-name="Россия 1 HD" tvg-country="RU" tvg-language="Russian" tvg-logo="" group-title="General",Россия 1 HD
|
||||
https://a3569458063-s26881.cdn.ngenix.net/hls/russia_hd/playlist_4.m3u8
|
||||
#EXTINF:-1 tvg-id="Rossiya24.ru" tvg-name="Россия 24" tvg-country="RU" tvg-language="Russian" tvg-logo="https://i.imgur.com/wu7O85f.png" group-title="News",Россия 24 (576p)
|
||||
http://radio-live-mg.rtr-vesti.ru/hls/russia_24/playlist.m3u8
|
||||
#EXTINF:-1 tvg-id="Rossiya24.ru" tvg-name="Россия 24" tvg-country="RU" tvg-language="Russian" tvg-logo="https://i.imgur.com/wu7O85f.png" group-title="News",Россия 24 (480p)
|
||||
#EXTVLCOPT:http-user-agent=Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148
|
||||
http://ott-cdn.ucom.am/s21/index.m3u8
|
||||
#EXTINF:-1 tvg-id="Rossiya24.ru" tvg-name="Россия 24" tvg-country="RU" tvg-language="Russian" tvg-logo="https://i.imgur.com/wu7O85f.png" group-title="News",Россия 24 (576p)
|
||||
http://radio-live-mg.rtr-vesti.ru/hls/russia_24/playlist.m3u8
|
||||
#EXTINF:-1 tvg-id="Rossiya24.ru" tvg-name="Россия 24" tvg-country="RU" tvg-language="Russian" tvg-logo="https://i.imgur.com/wu7O85f.png" group-title="News",Россия 24 (576p) [Not 24/7]
|
||||
http://uiptv.do.am/1ufc/000000006/playlist.m3u8
|
||||
#EXTINF:-1 tvg-id="Rossiya24NNovgorod.ru" tvg-name="Россия 24 (Н.Новгород)" tvg-country="RU" tvg-language="Russian" tvg-logo="" group-title="News",Россия 24 (Н.Новгород) (576p)
|
||||
@ -752,6 +750,8 @@ http://stream.efir24.tv:1935/live/efir24tv/playlist.m3u8
|
||||
http://62.32.67.187:1935/WEB_TBN/TBN.stream/playlist.m3u8
|
||||
#EXTINF:-1 tvg-id="TVEvropa.ru" tvg-name="ТВ Европа" tvg-country="RU" tvg-language="" tvg-logo="" group-title="",ТВ Европа
|
||||
https://cdn1.mobiletv.bg/T10/tvevropa/tvevropa_794613_850k.m3u8
|
||||
#EXTINF:-1 tvg-id="TVKvarc.ru" tvg-name="ТВ Кварц" tvg-country="RU" tvg-language="" tvg-logo="" group-title="Local",ТВ Кварц (576p)
|
||||
https://video.quartztelecom.ru:18080/hls/2386168/71fe656b993c510f39a5/playlist.m3u8
|
||||
#EXTINF:-1 tvg-id="TVCentr.ru" tvg-name="ТВ Центр" tvg-country="RU" tvg-language="Russian" tvg-logo="https://i.imgur.com/fIkd01t.png" group-title="",ТВ Центр (480p)
|
||||
#EXTVLCOPT:http-user-agent=Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148
|
||||
http://ott-cdn.ucom.am/s54/index.m3u8
|
||||
|
@ -1,7 +1,7 @@
|
||||
#EXTM3U
|
||||
#EXTINF:-1 tvg-id="AzamSports1.tz" tvg-name="Azam Sports 1" tvg-country="TZ" tvg-language="" tvg-logo="https://azamtv.co.tz/tan/thumb/c/124/70/channels/channel_image1444752374.jpg" group-title="Sports",Azam Sports 1
|
||||
https://1446000130.rsc.cdn77.org/1446000130/index.m3u8
|
||||
#EXTINF:-1 tvg-id="AzamSports2.tz" tvg-name="Azam Sports 2" tvg-country="TZ" tvg-language="" tvg-logo="https://azamtv.co.tz/tan/thumb/c/124/70/channels/channel_image1508329528.png" group-title="Sports",Azam Sports 2
|
||||
#EXTINF:-1 tvg-id="AzamSports2.tz" tvg-name="Azam Sports 2" tvg-country="TZ" tvg-language="" tvg-logo="https://azamtv.co.tz/tan/thumb/c/124/70/channels/channel_image1508329528.png" group-title="Sports",Azam Sports 2 (540p)
|
||||
https://1326605225.rsc.cdn77.org/1326605225/index.m3u8
|
||||
#EXTINF:-1 tvg-id="ChannelTen.tz" tvg-name="Channel Ten" tvg-country="TZ" tvg-language="" tvg-logo="https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcSlgi36jeSD2_aTBenoZYVRo53N_WjRVK9EcA&usqp=CAU" group-title="",Channel Ten
|
||||
http://hls-pull-switchinternational.speedws.com/live/test1/playlist.m3u8
|
||||
|
@ -5716,7 +5716,7 @@ https://bcovlive-a.akamaihd.net/e64d564b9275484f85981d8c146fb915/us-east-1/59940
|
||||
http://45.179.140.242:8000/play/a0h5
|
||||
#EXTINF:-1 tvg-id="STARLife.us" tvg-name="STAR Life (Spain)" tvg-country="ES" tvg-language="Spanish;English" tvg-logo="https://i.imgur.com/e4izZbC.png" group-title="",STAR Life (Spain)
|
||||
http://45.179.140.242:8000/play/a0h4
|
||||
#EXTINF:-1 tvg-id="STARMOVIEMIHDSTIRR.us" tvg-name="STAR MOVIEMI HD (STIRR)" tvg-country="US" tvg-language="English" tvg-logo="https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcT2kTZnEQilym8ptRCEoFwFHsTvp0m_y-VOdvWZSFErs4Nyke_m&usqp=CAU" group-title="",STAR MOVIEMI HD (STIRR)
|
||||
#EXTINF:-1 tvg-id="STARMOVIEMIHDSTIRR.us" tvg-name="STAR MOVIEMI HD (STIRR)" tvg-country="US" tvg-language="English" tvg-logo="https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcT2kTZnEQilym8ptRCEoFwFHsTvp0m_y-VOdvWZSFErs4Nyke_m&usqp=CAU" group-title="",STAR MOVIEMI HD (STIRR) (720p)
|
||||
https://sonar.sinclair.wurl.com/manifest/playlist.m3u8
|
||||
#EXTINF:-1 tvg-id="KVBCLP2.us" tvg-name="StartTV West (13.2 KVBC-LP2)" tvg-country="US" tvg-language="English" tvg-logo="https://media-usba.mybtv.net/logos/starttv.png" group-title="Entertainment",StartTV West (13.2 KVBC-LP2) (432p)
|
||||
https://streams.the6tv.duckdns.org:2443/locals/Fresno/kvbc-13.2.m3u8
|
||||
@ -5808,7 +5808,7 @@ https://tastemade-freetv16min-plex.amagi.tv/hls/amagi_hls_data_tastemade-tastema
|
||||
https://tastemade-xumo.amagi.tv/hls/amagi_hls_data_tastemade-tastemadefreetv16xumo/CDN/master.m3u8
|
||||
#EXTINF:-1 tvg-id="Tastemade.us" tvg-name="Tastemade" tvg-country="US" tvg-language="English" tvg-logo="https://i.imgur.com/8s6aRwv.png" group-title="Cooking",Tastemade (720p)
|
||||
https://tastemade.samsung.wurl.com/manifest/playlist.m3u8
|
||||
#EXTINF:-1 tvg-id="Tastemade.us" tvg-name="Tastemade" tvg-country="US" tvg-language="English" tvg-logo="https://i.imgur.com/8s6aRwv.png" group-title="Cooking",Tastemade
|
||||
#EXTINF:-1 tvg-id="Tastemade.us" tvg-name="Tastemade" tvg-country="US" tvg-language="English" tvg-logo="https://i.imgur.com/8s6aRwv.png" group-title="Cooking",Tastemade (1080p)
|
||||
https://tastemadefr16min-redbox.amagi.tv/hls/amagi_hls_data_tastemade-tastemadefreetv16-redbox/CDN/playlist.m3u8
|
||||
#EXTINF:-1 tvg-id="Tastemade.us" tvg-name="Tastemade" tvg-country="US" tvg-language="English" tvg-logo="https://i.imgur.com/8s6aRwv.png" group-title="Cooking",Tastemade (1080p)
|
||||
https://tastemadessai.akamaized.net/amagi_hls_data_tastemade-tastemade/CDN/playlist.m3u8
|
||||
|
20
package-lock.json
generated
20
package-lock.json
generated
@ -7,14 +7,12 @@
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@freearhey/iso-639-3": "^1.0.0",
|
||||
"axios": "^0.21.1",
|
||||
"chalk": "^4.1.1",
|
||||
"commander": "^7.0.0",
|
||||
"escape-string-regexp": "^2.0.0",
|
||||
"iptv-checker": "^0.20.2",
|
||||
"iptv-playlist-parser": "^0.5.4",
|
||||
"m3u-linter": "^0.1.3",
|
||||
"markdown-include": "^0.4.3",
|
||||
"normalize-url": "^6.1.0",
|
||||
"pre-push": "^0.1.1",
|
||||
"progress": "^2.0.3",
|
||||
"transliteration": "^2.2.0"
|
||||
@ -2963,6 +2961,17 @@
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/normalize-url": {
|
||||
"version": "6.1.0",
|
||||
"resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz",
|
||||
"integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==",
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/npm-run-path": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
|
||||
@ -6045,6 +6054,11 @@
|
||||
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
|
||||
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
|
||||
},
|
||||
"normalize-url": {
|
||||
"version": "6.1.0",
|
||||
"resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz",
|
||||
"integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A=="
|
||||
},
|
||||
"npm-run-path": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
|
||||
|
@ -11,14 +11,12 @@
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@freearhey/iso-639-3": "^1.0.0",
|
||||
"axios": "^0.21.1",
|
||||
"chalk": "^4.1.1",
|
||||
"commander": "^7.0.0",
|
||||
"escape-string-regexp": "^2.0.0",
|
||||
"iptv-checker": "^0.20.2",
|
||||
"iptv-playlist-parser": "^0.5.4",
|
||||
"m3u-linter": "^0.1.3",
|
||||
"markdown-include": "^0.4.3",
|
||||
"normalize-url": "^6.1.0",
|
||||
"pre-push": "^0.1.1",
|
||||
"progress": "^2.0.3",
|
||||
"transliteration": "^2.2.0"
|
||||
|
@ -1,74 +0,0 @@
|
||||
const IPTVChecker = require('iptv-checker')
|
||||
const { program } = require('commander')
|
||||
const ProgressBar = require('progress')
|
||||
const parser = require('./helpers/parser')
|
||||
const utils = require('./helpers/utils')
|
||||
const log = require('./helpers/log')
|
||||
|
||||
program
|
||||
.usage('[OPTIONS]...')
|
||||
.option('-d, --debug', 'Enable debug mode')
|
||||
.option('-c, --country <country>', 'Comma-separated list of country codes', '')
|
||||
.option('-e, --exclude <exclude>', 'Comma-separated list of country codes to be excluded', '')
|
||||
.option('--timeout <timeout>', 'Set timeout for each request', 5000)
|
||||
.parse(process.argv)
|
||||
|
||||
let bar
|
||||
const config = program.opts()
|
||||
const ignoreStatus = ['Geo-blocked', 'Not 24/7', 'Offline']
|
||||
const checker = new IPTVChecker({
|
||||
timeout: config.timeout
|
||||
})
|
||||
|
||||
async function main() {
|
||||
log.start()
|
||||
|
||||
if (config.debug) log.print(`Debug mode enabled\n`)
|
||||
|
||||
let playlists = parser.parseIndex()
|
||||
playlists = utils.filterPlaylists(playlists, config.country, config.exclude)
|
||||
for (const playlist of playlists) {
|
||||
await parser
|
||||
.parsePlaylist(playlist.url)
|
||||
.then(checkPlaylist)
|
||||
.then(p => p.save())
|
||||
}
|
||||
|
||||
log.finish()
|
||||
}
|
||||
|
||||
async function checkPlaylist(playlist) {
|
||||
if (!config.debug) {
|
||||
bar = new ProgressBar(`Checking '${playlist.url}': [:bar] :current/:total (:percent) `, {
|
||||
total: playlist.channels.length
|
||||
})
|
||||
}
|
||||
const channels = []
|
||||
const total = playlist.channels.length
|
||||
for (const [index, channel] of playlist.channels.entries()) {
|
||||
const skipChannel =
|
||||
channel.status &&
|
||||
ignoreStatus.map(i => i.toLowerCase()).includes(channel.status.toLowerCase())
|
||||
if (skipChannel) {
|
||||
channels.push(channel)
|
||||
} else {
|
||||
const result = await checker.checkStream(channel.data)
|
||||
if (result.status.ok || result.status.reason.includes('timed out')) {
|
||||
channels.push(channel)
|
||||
} else {
|
||||
if (config.debug) log.print(`ERR: ${channel.url} (${result.status.reason})\n`)
|
||||
}
|
||||
}
|
||||
if (!config.debug) bar.tick()
|
||||
}
|
||||
|
||||
if (playlist.channels.length !== channels.length) {
|
||||
log.print(`File '${playlist.url}' has been updated\n`)
|
||||
playlist.channels = channels
|
||||
playlist.updated = true
|
||||
}
|
||||
|
||||
return playlist
|
||||
}
|
||||
|
||||
main()
|
@ -1,114 +0,0 @@
|
||||
const { program } = require('commander')
|
||||
const ProgressBar = require('progress')
|
||||
const axios = require('axios')
|
||||
const https = require('https')
|
||||
const parser = require('./helpers/parser')
|
||||
const utils = require('./helpers/utils')
|
||||
const log = require('./helpers/log')
|
||||
|
||||
program
|
||||
.usage('[OPTIONS]...')
|
||||
.option('-c, --country <country>', 'Comma-separated list of country codes', '')
|
||||
.option('-e, --exclude <exclude>', 'Comma-separated list of country codes to be excluded', '')
|
||||
.option('--delay <delay>', 'Delay between parser requests', 1000)
|
||||
.option('--timeout <timeout>', 'Set timeout for each request', 5000)
|
||||
.parse(process.argv)
|
||||
|
||||
const config = program.opts()
|
||||
const ignoreStatus = ['Offline']
|
||||
const instance = axios.create({
|
||||
timeout: config.timeout,
|
||||
maxContentLength: 200000,
|
||||
httpsAgent: new https.Agent({
|
||||
rejectUnauthorized: false
|
||||
})
|
||||
})
|
||||
|
||||
async function main() {
|
||||
log.start()
|
||||
|
||||
log.print(`Parsing 'index.m3u'...\n`)
|
||||
let playlists = parser.parseIndex()
|
||||
playlists = utils
|
||||
.filterPlaylists(playlists, config.country, config.exclude)
|
||||
.filter(i => i.url !== 'channels/unsorted.m3u')
|
||||
|
||||
for (const playlist of playlists) {
|
||||
await parser
|
||||
.parsePlaylist(playlist.url)
|
||||
.then(detectResolution)
|
||||
.then(p => p.save())
|
||||
}
|
||||
|
||||
log.finish()
|
||||
}
|
||||
|
||||
async function detectResolution(playlist) {
|
||||
const channels = []
|
||||
const bar = new ProgressBar(`Processing '${playlist.url}': [:bar] :current/:total (:percent) `, {
|
||||
total: playlist.channels.length
|
||||
})
|
||||
let updated = false
|
||||
for (const channel of playlist.channels) {
|
||||
bar.tick()
|
||||
const skipChannel =
|
||||
channel.status &&
|
||||
ignoreStatus.map(i => i.toLowerCase()).includes(channel.status.toLowerCase())
|
||||
if (!channel.resolution.height && !skipChannel) {
|
||||
const CancelToken = axios.CancelToken
|
||||
const source = CancelToken.source()
|
||||
const timeout = setTimeout(() => {
|
||||
source.cancel()
|
||||
}, config.timeout)
|
||||
|
||||
const response = await instance
|
||||
.get(channel.url, { cancelToken: source.token })
|
||||
.then(res => {
|
||||
clearTimeout(timeout)
|
||||
|
||||
return res
|
||||
})
|
||||
.then(utils.sleep(config.delay))
|
||||
.catch(err => {
|
||||
clearTimeout(timeout)
|
||||
})
|
||||
|
||||
if (response && response.status === 200) {
|
||||
if (/^#EXTM3U/.test(response.data)) {
|
||||
const resolution = parseResolution(response.data)
|
||||
if (resolution) {
|
||||
channel.resolution = resolution
|
||||
updated = true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
channels.push(channel)
|
||||
}
|
||||
|
||||
if (updated) {
|
||||
log.print(`File '${playlist.url}' has been updated\n`)
|
||||
playlist.channels = channels
|
||||
playlist.updated = true
|
||||
}
|
||||
|
||||
return playlist
|
||||
}
|
||||
|
||||
function parseResolution(string) {
|
||||
const regex = /RESOLUTION=(\d+)x(\d+)/gm
|
||||
const match = string.matchAll(regex)
|
||||
const arr = Array.from(match).map(m => ({
|
||||
width: parseInt(m[1]),
|
||||
height: parseInt(m[2])
|
||||
}))
|
||||
|
||||
return arr.length
|
||||
? arr.reduce(function (prev, current) {
|
||||
return prev.height > current.height ? prev : current
|
||||
})
|
||||
: undefined
|
||||
}
|
||||
|
||||
main()
|
@ -1,21 +1,46 @@
|
||||
const IPTVChecker = require('iptv-checker')
|
||||
const normalize = require('normalize-url')
|
||||
const { program } = require('commander')
|
||||
const ProgressBar = require('progress')
|
||||
const parser = require('./helpers/parser')
|
||||
const utils = require('./helpers/utils')
|
||||
const file = require('./helpers/file')
|
||||
const log = require('./helpers/log')
|
||||
|
||||
program
|
||||
.usage('[OPTIONS]...')
|
||||
.option('-d, --debug', 'Enable debug mode')
|
||||
.option('-s, --status', 'Update stream status')
|
||||
.option('-r, --resolution', 'Detect stream resolution')
|
||||
.option('-c, --country <country>', 'Comma-separated list of country codes', '')
|
||||
.option('-e, --exclude <exclude>', 'Comma-separated list of country codes to be excluded', '')
|
||||
.option('--timeout <timeout>', 'Set timeout for each request', 5000)
|
||||
.parse(process.argv)
|
||||
|
||||
let bar
|
||||
const ignoreStatus = ['Geo-blocked', 'Not 24/7']
|
||||
const config = program.opts()
|
||||
const checker = new IPTVChecker({
|
||||
timeout: config.timeout
|
||||
})
|
||||
|
||||
async function main() {
|
||||
log.start()
|
||||
|
||||
log.print(`Parsing 'index.m3u'...`)
|
||||
if (config.debug) log.print(`Debug mode enabled\n`)
|
||||
if (config.status) log.print(`Status check enabled\n`)
|
||||
if (config.resolution) log.print(`Resolution detection enabled\n`)
|
||||
|
||||
let playlists = parser.parseIndex().filter(i => i.url !== 'channels/unsorted.m3u')
|
||||
playlists = utils.filterPlaylists(playlists, config.country, config.exclude)
|
||||
if (!playlists.length) log.print(`No playlist is selected\n`)
|
||||
for (const playlist of playlists) {
|
||||
log.print(`\nProcessing '${playlist.url}'...`)
|
||||
await parser
|
||||
.parsePlaylist(playlist.url)
|
||||
.then(formatPlaylist)
|
||||
.then(updatePlaylist)
|
||||
.then(playlist => {
|
||||
if (file.read(playlist.url) !== playlist.toString()) {
|
||||
log.print('updated')
|
||||
log.print(`File '${playlist.url}' has been updated\n`)
|
||||
playlist.updated = true
|
||||
}
|
||||
|
||||
@ -23,33 +48,115 @@ async function main() {
|
||||
})
|
||||
}
|
||||
|
||||
log.print('\n')
|
||||
log.finish()
|
||||
}
|
||||
|
||||
async function formatPlaylist(playlist) {
|
||||
async function updatePlaylist(playlist) {
|
||||
if (!config.debug) {
|
||||
bar = new ProgressBar(`Processing '${playlist.url}': [:bar] :current/:total (:percent) `, {
|
||||
total: playlist.channels.length
|
||||
})
|
||||
} else {
|
||||
log.print(`Processing '${playlist.url}'...\n`)
|
||||
}
|
||||
|
||||
for (const channel of playlist.channels) {
|
||||
const code = file.getBasename(playlist.url)
|
||||
// add missing tvg-name
|
||||
if (!channel.tvg.name && code !== 'unsorted' && channel.name) {
|
||||
channel.tvg.name = channel.name.replace(/\"/gi, '')
|
||||
addMissingData(channel)
|
||||
updateGroupTitle(channel)
|
||||
normalizeUrl(channel)
|
||||
|
||||
const checkOnline = config.status || config.resolution
|
||||
const skipChannel =
|
||||
channel.status &&
|
||||
ignoreStatus.map(i => i.toLowerCase()).includes(channel.status.toLowerCase())
|
||||
if (checkOnline && !skipChannel) {
|
||||
await checker
|
||||
.checkStream(channel.data)
|
||||
.then(result => {
|
||||
const status = parseStatus(result.status)
|
||||
|
||||
if (config.status) {
|
||||
updateStatus(channel, status)
|
||||
}
|
||||
|
||||
if (config.resolution && status === 'online') {
|
||||
updateResolution(channel, result.status.metadata)
|
||||
}
|
||||
|
||||
if (config.debug && status === 'offline') {
|
||||
log.print(` ERR: ${channel.url} (${result.status.reason})\n`)
|
||||
}
|
||||
})
|
||||
.catch(err => {
|
||||
if (config.debug) log.print(` ERR: ${channel.url} (${err.message})\n`)
|
||||
})
|
||||
}
|
||||
// add missing tvg-id
|
||||
if (!channel.tvg.id && code !== 'unsorted' && channel.tvg.name) {
|
||||
const id = utils.name2id(channel.tvg.name)
|
||||
channel.tvg.id = id ? `${id}.${code}` : ''
|
||||
}
|
||||
// add missing country
|
||||
if (!channel.countries.length) {
|
||||
const name = utils.code2name(code)
|
||||
channel.countries = name ? [{ code, name }] : []
|
||||
channel.tvg.country = channel.countries.map(c => c.code.toUpperCase()).join(';')
|
||||
}
|
||||
// update group-title
|
||||
channel.group.title = channel.category
|
||||
if (!config.debug) bar.tick()
|
||||
}
|
||||
|
||||
return playlist
|
||||
}
|
||||
|
||||
function parseStatus(status) {
|
||||
if (status.ok) {
|
||||
return 'online'
|
||||
} else if (status.reason.includes('timed out')) {
|
||||
return 'timeout'
|
||||
} else if (status.reason.includes('403')) {
|
||||
return 'error_403'
|
||||
} else if (status.reason.includes('not one of 40{0,1,3,4}')) {
|
||||
return 'error_40x' // 402, 451
|
||||
} else {
|
||||
return 'offline'
|
||||
}
|
||||
}
|
||||
|
||||
function updateStatus(channel, status) {
|
||||
switch (status) {
|
||||
case 'online':
|
||||
channel.status = null
|
||||
break
|
||||
case 'offline':
|
||||
channel.status = 'Offline'
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
function addMissingData(channel) {
|
||||
// tvg-name
|
||||
if (!channel.tvg.name && channel.name) {
|
||||
channel.tvg.name = channel.name.replace(/\"/gi, '')
|
||||
}
|
||||
// tvg-id
|
||||
if (!channel.tvg.id && channel.tvg.name) {
|
||||
const id = utils.name2id(channel.tvg.name)
|
||||
channel.tvg.id = id ? `${id}.${code}` : ''
|
||||
}
|
||||
// country
|
||||
if (!channel.countries.length) {
|
||||
const name = utils.code2name(code)
|
||||
channel.countries = name ? [{ code, name }] : []
|
||||
channel.tvg.country = channel.countries.map(c => c.code.toUpperCase()).join(';')
|
||||
}
|
||||
}
|
||||
|
||||
function updateGroupTitle(channel) {
|
||||
channel.group.title = channel.category
|
||||
}
|
||||
|
||||
function normalizeUrl(channel) {
|
||||
const normalized = normalize(channel.url, { stripWWW: false })
|
||||
channel.updateUrl(normalized)
|
||||
}
|
||||
|
||||
function updateResolution(channel, metadata) {
|
||||
const streams = metadata ? metadata.streams.filter(stream => stream.codec_type === 'video') : []
|
||||
if (!channel.resolution.height && streams.length) {
|
||||
channel.resolution = streams.reduce((acc, curr) => {
|
||||
if (curr.height > acc.height) return { width: curr.width, height: curr.height }
|
||||
return acc
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
main()
|
||||
|
@ -22,6 +22,11 @@ module.exports = class Channel {
|
||||
this.languages = this.parseLanguages(data.tvg.language)
|
||||
}
|
||||
|
||||
updateUrl(url) {
|
||||
this.url = url
|
||||
this.data.url = url
|
||||
}
|
||||
|
||||
parseName(title) {
|
||||
return title
|
||||
.trim()
|
||||
|
@ -1,4 +1,3 @@
|
||||
const escapeStringRegexp = require('escape-string-regexp')
|
||||
const transliteration = require('transliteration')
|
||||
const iso6393 = require('@freearhey/iso-639-3')
|
||||
const categories = require('./categories')
|
||||
@ -71,16 +70,6 @@ utils.sortBy = function (arr, fields) {
|
||||
})
|
||||
}
|
||||
|
||||
utils.escapeStringRegexp = function (scring) {
|
||||
return escapeStringRegexp(string)
|
||||
}
|
||||
|
||||
utils.sleep = function (ms) {
|
||||
return function (x) {
|
||||
return new Promise(resolve => setTimeout(() => resolve(x), ms))
|
||||
}
|
||||
}
|
||||
|
||||
utils.removeProtocol = function (string) {
|
||||
return string.replace(/(^\w+:|^)\/\//, '')
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user