mirror of
https://github.com/iptv-org/iptv
synced 2026-03-22 11:51:23 -04:00
258 lines
5.7 KiB
YAML
258 lines
5.7 KiB
YAML
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 each link and removes those that do not contain working streams or return any error, except for HTTP error 403 (Forbidden). Also, the script ignores all links 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. Working links should be marked as `[Not 24/7]` so that next time the script will not delete them.
|
|
|
|
[1]: https://github.com/iptv-org/iptv/actions/runs/${{ github.run_id }}
|
|
pr_draft: true
|
|
github_token: ${{ steps.generate-token.outputs.token }}
|