258 lines
5.9 KiB
YAML
258 lines
5.9 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 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 }}
|