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 }}