Merge pull request #2558 from iptv-org/freearhey-patch-3

Patch 2024.12.2
This commit is contained in:
PopeyeTheSai10r 2024-12-31 08:32:25 -08:00 committed by GitHub
commit 5ffe285c1e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
25 changed files with 3554 additions and 317 deletions

View file

@ -25,13 +25,24 @@ jobs:
- uses: actions/setup-node@v3 - uses: actions/setup-node@v3
if: ${{ !env.ACT }} if: ${{ !env.ACT }}
with: with:
node-version: 18 node-version: 22
cache: 'npm' cache: 'npm'
- name: install dependencies - name: install dependencies
run: npm install run: npm install
- name: check *.channels.xml - name: check *.channels.xml
run: | run: |
npm run channels:lint npm run channels:lint
- name: update sites.md
run: npm run sites:update
- run: git status
- name: commit changes to sites.md
run: |
git add SITES.md
git status
git commit --allow-empty -m "[Bot] Update SITES.md" -m "Committed by [iptv-bot](https://github.com/apps/iptv-bot) via [update](https://github.com/iptv-org/epg/actions/runs/${{ github.run_id }}) workflow." --no-verify
- name: push all changes to the repository
if: ${{ !env.ACT && github.ref == 'refs/heads/master' }}
run: git push
- name: generate .api/guides.json - name: generate .api/guides.json
run: npm run api:generate run: npm run api:generate
- run: git status - run: git status

207
.sites/_table.md Normal file
View file

@ -0,0 +1,207 @@
<table>
<thead>
<tr><th align="left">Site</th><th align="left">Status</th><th align="left">Notes</th></tr>
</thead>
<tbody>
<tr><td><a href="sites/9tv.co.il">9tv.co.il</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/abc.net.au">abc.net.au</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/allente.dk">allente.dk</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/allente.fi">allente.fi</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/allente.no">allente.no</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/allente.se">allente.se</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/andorradifusio.ad">andorradifusio.ad</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/anteltv.com.uy">anteltv.com.uy</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/arianaafgtv.com">arianaafgtv.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/arianatelevision.com">arianatelevision.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/arirang.com">arirang.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/artonline.tv">artonline.tv</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/awilime.com">awilime.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/bein.com">bein.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/beinsports.com">beinsports.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/berrymedia.co.kr">berrymedia.co.kr</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/cablego.com.pe">cablego.com.pe</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/cableplus.com.uy">cableplus.com.uy</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/canalplus-haiti.com">canalplus-haiti.com</a></td><td>🔴</td><td>https://github.com/iptv-org/epg/issues/2237</td></tr>
<tr><td><a href="sites/canalplus.com">canalplus.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/cgates.lt">cgates.lt</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/chada.ma">chada.ma</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/chaines-tv.orange.fr">chaines-tv.orange.fr</a></td><td>🟡</td><td>https://github.com/iptv-org/epg/issues/2395</td></tr>
<tr><td><a href="sites/clickthecity.com">clickthecity.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/comteco.com.bo">comteco.com.bo</a></td><td>🔴</td><td>https://github.com/iptv-org/epg/issues/2239</td></tr>
<tr><td><a href="sites/content.astro.com.my">content.astro.com.my</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/cosmote.gr">cosmote.gr</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/cubmu.com">cubmu.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/dens.tv">dens.tv</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/digiturk.com.tr">digiturk.com.tr</a></td><td>🔴</td><td>https://github.com/iptv-org/epg/issues/2304, https://github.com/iptv-org/epg/issues/2547</td></tr>
<tr><td><a href="sites/directv.com">directv.com</a></td><td>🔴</td><td>https://github.com/iptv-org/epg/issues/2284</td></tr>
<tr><td><a href="sites/directv.com.ar">directv.com.ar</a></td><td>🔴</td><td>https://github.com/iptv-org/epg/issues/2339</td></tr>
<tr><td><a href="sites/directv.com.uy">directv.com.uy</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/dishtv.in">dishtv.in</a></td><td>🔴</td><td>https://github.com/iptv-org/epg/issues/2445</td></tr>
<tr><td><a href="sites/dsmart.com.tr">dsmart.com.tr</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/dstv.com">dstv.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/elcinema.com">elcinema.com</a></td><td>🔴</td><td>https://github.com/iptv-org/epg/issues/2541</td></tr>
<tr><td><a href="sites/ena.skylifetv.co.kr">ena.skylifetv.co.kr</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/energeek.cl">energeek.cl</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/entertainment.ie">entertainment.ie</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/firstmedia.com">firstmedia.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/flixed.io">flixed.io</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/foxsports.com.au">foxsports.com.au</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/foxtel.com.au">foxtel.com.au</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/frikanalen.no">frikanalen.no</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/gatotv.com">gatotv.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/getafteritmedia.com">getafteritmedia.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/guida.tv">guida.tv</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/guidatv.sky.it">guidatv.sky.it</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/hd-plus.de">hd-plus.de</a></td><td>🔴</td><td>https://github.com/iptv-org/epg/issues/2173</td></tr>
<tr><td><a href="sites/horizon.tv">horizon.tv</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/hoy.tv">hoy.tv</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/i.mjh.nz">i.mjh.nz</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/i24news.tv">i24news.tv</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/iltalehti.fi">iltalehti.fi</a></td><td>🟡</td><td>https://github.com/iptv-org/epg/issues/2396</td></tr>
<tr><td><a href="sites/indihometv.com">indihometv.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/ionplustv.com">ionplustv.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/ipko.tv">ipko.tv</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/kan.org.il">kan.org.il</a></td><td>🔴</td><td>https://github.com/iptv-org/epg/issues/2273</td></tr>
<tr><td><a href="sites/knr.gl">knr.gl</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/kplus.vn">kplus.vn</a></td><td>🔴</td><td>https://github.com/iptv-org/epg/issues/2240</td></tr>
<tr><td><a href="sites/kvf.fo">kvf.fo</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/m.tv.sms.cz">m.tv.sms.cz</a></td><td>🔴</td><td>https://github.com/iptv-org/epg/issues/2241</td></tr>
<tr><td><a href="sites/m.tving.com">m.tving.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/magticom.ge">magticom.ge</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/mako.co.il">mako.co.il</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/maxtv.hrvatskitelekom.hr">maxtv.hrvatskitelekom.hr</a></td><td>🔴</td><td>https://github.com/iptv-org/epg/issues/2509</td></tr>
<tr><td><a href="sites/maxtvgo.mk">maxtvgo.mk</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/mediagenie.co.kr">mediagenie.co.kr</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/mediaklikk.hu">mediaklikk.hu</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/mediasetinfinity.mediaset.it">mediasetinfinity.mediaset.it</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/melita.com">melita.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/meo.pt">meo.pt</a></td><td>🟡</td><td>https://github.com/iptv-org/epg/issues/2446</td></tr>
<tr><td><a href="sites/meuguia.tv">meuguia.tv</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/mewatch.sg">mewatch.sg</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/mi.tv">mi.tv</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/mncvision.id">mncvision.id</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/moji.id">moji.id</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/mon-programme-tv.be">mon-programme-tv.be</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/movistarplus.es">movistarplus.es</a></td><td>🔴</td><td>https://github.com/iptv-org/epg/issues/2498</td></tr>
<tr><td><a href="sites/mtel.ba">mtel.ba</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/mts.rs">mts.rs</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/mujtvprogram.cz">mujtvprogram.cz</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/musor.tv">musor.tv</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/mysky.com.ph">mysky.com.ph</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/mytelly.co.uk">mytelly.co.uk</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/mytvsuper.com">mytvsuper.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/neo.io">neo.io</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/nhkworldpremium.com">nhkworldpremium.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/nhl.com">nhl.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/nostv.pt">nostv.pt</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/novacyprus.com">novacyprus.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/novasports.gr">novasports.gr</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/nowplayer.now.com">nowplayer.now.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/nuevosiglo.com.uy">nuevosiglo.com.uy</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/nzxmltv.com">nzxmltv.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/ontvtonight.com">ontvtonight.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/osn.com">osn.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/pbsguam.org">pbsguam.org</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/pickx.be">pickx.be</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/player.ee.co.uk">player.ee.co.uk</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/playtv.unifi.com.my">playtv.unifi.com.my</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/plex.tv">plex.tv</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/programacion-tv.elpais.com">programacion-tv.elpais.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/programacion.tcc.com.uy">programacion.tcc.com.uy</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/programetv.ro">programetv.ro</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/programme-tv.net">programme-tv.net</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/programme-tv.vini.pf">programme-tv.vini.pf</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/programme.tvb.com">programme.tvb.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/programtv.onet.pl">programtv.onet.pl</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/raiplay.it">raiplay.it</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/reportv.com.ar">reportv.com.ar</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/rev.bs">rev.bs</a></td><td>🔴</td><td>https://github.com/iptv-org/epg/issues/2255</td></tr>
<tr><td><a href="sites/rotana.net">rotana.net</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/rtb.gov.bn">rtb.gov.bn</a></td><td>🔴</td><td>https://github.com/iptv-org/epg/issues/2257</td></tr>
<tr><td><a href="sites/rthk.hk">rthk.hk</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/rtmklik.rtm.gov.my">rtmklik.rtm.gov.my</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/rtp.pt">rtp.pt</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/ruv.is">ruv.is</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/s.mxtv.jp">s.mxtv.jp</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/sat.tv">sat.tv</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/shahid.mbc.net">shahid.mbc.net</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/siba.com.co">siba.com.co</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/singtel.com">singtel.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/sjonvarp.is">sjonvarp.is</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/sky.co.nz">sky.co.nz</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/sky.com">sky.com</a></td><td>🟡</td><td>https://github.com/iptv-org/epg/issues/2516, https://github.com/iptv-org/epg/issues/2501</td></tr>
<tr><td><a href="sites/sky.de">sky.de</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/skylife.co.kr">skylife.co.kr</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/skyperfectv.co.jp">skyperfectv.co.jp</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/snrt.ma">snrt.ma</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/sporttv.pt">sporttv.pt</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/starhubtvplus.com">starhubtvplus.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/startimestv.com">startimestv.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/streamingtvguides.com">streamingtvguides.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/superguidatv.it">superguidatv.it</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/taiwanplus.com">taiwanplus.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tapdmv.com">tapdmv.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/telenet.tv">telenet.tv</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/teliatv.ee">teliatv.ee</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/telkussa.fi">telkussa.fi</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/telsu.fi">telsu.fi</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tivu.tv">tivu.tv</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/toonamiaftermath.com">toonamiaftermath.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/turksatkablo.com.tr">turksatkablo.com.tr</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tv-programme.telecablesat.fr">tv-programme.telecablesat.fr</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tv.blue.ch">tv.blue.ch</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tv.cctv.com">tv.cctv.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tv.dir.bg">tv.dir.bg</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tv.lv">tv.lv</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tv.magenta.at">tv.magenta.at</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tv.mail.ru">tv.mail.ru</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tv.movistar.com.pe">tv.movistar.com.pe</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tv.nu">tv.nu</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tv.post.lu">tv.post.lu</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tv.trueid.net">tv.trueid.net</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tv.yandex.ru">tv.yandex.ru</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tv.yettel.hu">tv.yettel.hu</a></td><td>🔴</td><td>https://github.com/iptv-org/epg/issues/2263</td></tr>
<tr><td><a href="sites/tv24.co.uk">tv24.co.uk</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tv24.se">tv24.se</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tv2go.t-2.net">tv2go.t-2.net</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tva.tv">tva.tv</a></td><td>🔴</td><td>https://github.com/iptv-org/epg/issues/2264</td></tr>
<tr><td><a href="sites/tvarenasport.com">tvarenasport.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tvarenasport.hr">tvarenasport.hr</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tvcesoir.fr">tvcesoir.fr</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tvcubana.icrt.cu">tvcubana.icrt.cu</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tvgids.nl">tvgids.nl</a></td><td>🟡</td><td>https://github.com/iptv-org/epg/issues/2400</td></tr>
<tr><td><a href="sites/tvguide.com">tvguide.com</a></td><td>🔴</td><td>https://github.com/iptv-org/epg/issues/2542</td></tr>
<tr><td><a href="sites/tvguide.myjcom.jp">tvguide.myjcom.jp</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tvhebdo.com">tvhebdo.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tvheute.at">tvheute.at</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tvim.tv">tvim.tv</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tvireland.ie">tvireland.ie</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tvmi.mt">tvmi.mt</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tvmusor.hu">tvmusor.hu</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tvpassport.com">tvpassport.com</a></td><td>🟡</td><td>https://github.com/iptv-org/epg/issues/2272</td></tr>
<tr><td><a href="sites/tvplus.com.tr">tvplus.com.tr</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tvprofil.com">tvprofil.com</a></td><td>🟡</td><td>https://github.com/iptv-org/epg/issues/2399</td></tr>
<tr><td><a href="sites/tvtv.us">tvtv.us</a></td><td>🟡</td><td>https://github.com/iptv-org/epg/issues/2176</td></tr>
<tr><td><a href="sites/v3.myafn.dodmedia.osd.mil">v3.myafn.dodmedia.osd.mil</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/vidio.com">vidio.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/virginmediatelevision.ie">virginmediatelevision.ie</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/virgintvgo.virginmedia.com">virgintvgo.virginmedia.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/visionplus.id">visionplus.id</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/vivacom.bg">vivacom.bg</a></td><td>🔴</td><td>https://github.com/iptv-org/epg/issues/2270</td></tr>
<tr><td><a href="sites/vtm.be">vtm.be</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/walesi.com.fj">walesi.com.fj</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/watch.sportsnet.ca">watch.sportsnet.ca</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/watchyour.tv">watchyour.tv</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/wavve.com">wavve.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/web.magentatv.de">web.magentatv.de</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/webtv.delta.nl">webtv.delta.nl</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/winplay.co">winplay.co</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/worldfishingnetwork.com">worldfishingnetwork.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/www3.nhk.or.jp">www3.nhk.or.jp</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/xumo.tv">xumo.tv</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/zap.co.ao">zap.co.ao</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/ziggogo.tv">ziggogo.tv</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/znbc.co.zm">znbc.co.zm</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/zuragt.mn">zuragt.mn</a></td><td>🟢</td><td></td></tr>
</tbody>
</table>

4
.sites/config.json Normal file
View file

@ -0,0 +1,4 @@
{
"build" : "SITES.md",
"files" : ["./.sites/template.md"]
}

4
.sites/template.md Normal file
View file

@ -0,0 +1,4 @@
# Sites
<!-- prettier-ignore -->
#include "./.sites/_table.md"

View file

@ -154,6 +154,7 @@ To run scripts use the `npm run <script-name>` command.
- `channels:parse`: generates a list of channels based on the site configuration. - `channels:parse`: generates a list of channels based on the site configuration.
- `channels:editor`: utility for quick channels markup. - `channels:editor`: utility for quick channels markup.
- `channels:validate`: checks the description of channels for errors. - `channels:validate`: checks the description of channels for errors.
- `sites:update`: updates the list of sites and their status in [SITES.md](SITES.md).
- `grab`: downloads a program from a specified source. - `grab`: downloads a program from a specified source.
- `serve`: starts the [web server](https://github.com/vercel/serve). - `serve`: starts the [web server](https://github.com/vercel/serve).
- `lint`: сhecks the scripts for syntax errors. - `lint`: сhecks the scripts for syntax errors.

View file

@ -1,4 +1,4 @@
# EPG # EPG [![update](https://github.com/iptv-org/epg/actions/workflows/update.yml/badge.svg)](https://github.com/iptv-org/epg/actions/workflows/update.yml)
Tools for downloading the EPG (Electronic Program Guide) for thousands of TV channels from hundreds of sources. Tools for downloading the EPG (Electronic Program Guide) for thousands of TV channels from hundreds of sources.

393
package-lock.json generated
View file

@ -12,7 +12,8 @@
"@freearhey/core": "^0.3.1", "@freearhey/core": "^0.3.1",
"@freearhey/search-js": "^0.1.1", "@freearhey/search-js": "^0.1.1",
"@ntlab/sfetch": "^1.0.0", "@ntlab/sfetch": "^1.0.0",
"@octokit/core": "^4.1.0", "@octokit/plugin-paginate-rest": "^11.3.6",
"@octokit/plugin-rest-endpoint-methods": "^13.2.6",
"@types/cli-progress": "^3.11.3", "@types/cli-progress": "^3.11.3",
"@types/fs-extra": "^11.0.2", "@types/fs-extra": "^11.0.2",
"@types/inquirer": "^9.0.3", "@types/inquirer": "^9.0.3",
@ -1895,99 +1896,126 @@
} }
}, },
"node_modules/@octokit/auth-token": { "node_modules/@octokit/auth-token": {
"version": "3.0.2", "version": "5.1.1",
"resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.2.tgz", "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-5.1.1.tgz",
"integrity": "sha512-pq7CwIMV1kmzkFTimdwjAINCXKTajZErLB4wMLYapR2nuB/Jpr66+05wOTZMSCBXP6n4DdDWT2W19Bm17vU69Q==", "integrity": "sha512-rh3G3wDO8J9wSjfI436JUKzHIxq8NaiL0tVeB2aXmG6p/9859aUOAjA9pmSPNGGZxfwmaJ9ozOJImuNVJdpvbA==",
"dependencies": { "peer": true,
"@octokit/types": "^8.0.0"
},
"engines": { "engines": {
"node": ">= 14" "node": ">= 18"
} }
}, },
"node_modules/@octokit/core": { "node_modules/@octokit/core": {
"version": "4.1.0", "version": "6.1.2",
"resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.1.0.tgz", "resolved": "https://registry.npmjs.org/@octokit/core/-/core-6.1.2.tgz",
"integrity": "sha512-Czz/59VefU+kKDy+ZfDwtOIYIkFjExOKf+HA92aiTZJ6EfWpFzYQWw0l54ji8bVmyhc+mGaLUbSUmXazG7z5OQ==", "integrity": "sha512-hEb7Ma4cGJGEUNOAVmyfdB/3WirWMg5hDuNFVejGEDFqupeOysLc2sG6HJxY2etBp5YQu5Wtxwi020jS9xlUwg==",
"peer": true,
"dependencies": { "dependencies": {
"@octokit/auth-token": "^3.0.0", "@octokit/auth-token": "^5.0.0",
"@octokit/graphql": "^5.0.0", "@octokit/graphql": "^8.0.0",
"@octokit/request": "^6.0.0", "@octokit/request": "^9.0.0",
"@octokit/request-error": "^3.0.0", "@octokit/request-error": "^6.0.1",
"@octokit/types": "^8.0.0", "@octokit/types": "^13.0.0",
"before-after-hook": "^2.2.0", "before-after-hook": "^3.0.2",
"universal-user-agent": "^6.0.0" "universal-user-agent": "^7.0.0"
}, },
"engines": { "engines": {
"node": ">= 14" "node": ">= 18"
} }
}, },
"node_modules/@octokit/endpoint": { "node_modules/@octokit/endpoint": {
"version": "7.0.3", "version": "10.1.1",
"resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.3.tgz", "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.1.tgz",
"integrity": "sha512-57gRlb28bwTsdNXq+O3JTQ7ERmBTuik9+LelgcLIVfYwf235VHbN9QNo4kXExtp/h8T423cR5iJThKtFYxC7Lw==", "integrity": "sha512-JYjh5rMOwXMJyUpj028cu0Gbp7qe/ihxfJMLc8VZBMMqSwLgOxDI1911gV4Enl1QSavAQNJcwmwBF9M0VvLh6Q==",
"peer": true,
"dependencies": { "dependencies": {
"@octokit/types": "^8.0.0", "@octokit/types": "^13.0.0",
"is-plain-object": "^5.0.0", "universal-user-agent": "^7.0.2"
"universal-user-agent": "^6.0.0"
}, },
"engines": { "engines": {
"node": ">= 14" "node": ">= 18"
} }
}, },
"node_modules/@octokit/graphql": { "node_modules/@octokit/graphql": {
"version": "5.0.4", "version": "8.1.1",
"resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.4.tgz", "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-8.1.1.tgz",
"integrity": "sha512-amO1M5QUQgYQo09aStR/XO7KAl13xpigcy/kI8/N1PnZYSS69fgte+xA4+c2DISKqUZfsh0wwjc2FaCt99L41A==", "integrity": "sha512-ukiRmuHTi6ebQx/HFRCXKbDlOh/7xEV6QUXaE7MJEKGNAncGI/STSbOkl12qVXZrfZdpXctx5O9X1AIaebiDBg==",
"peer": true,
"dependencies": { "dependencies": {
"@octokit/request": "^6.0.0", "@octokit/request": "^9.0.0",
"@octokit/types": "^8.0.0", "@octokit/types": "^13.0.0",
"universal-user-agent": "^6.0.0" "universal-user-agent": "^7.0.0"
}, },
"engines": { "engines": {
"node": ">= 14" "node": ">= 18"
} }
}, },
"node_modules/@octokit/openapi-types": { "node_modules/@octokit/openapi-types": {
"version": "14.0.0", "version": "22.2.0",
"resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-14.0.0.tgz", "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-22.2.0.tgz",
"integrity": "sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw==" "integrity": "sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg=="
}, },
"node_modules/@octokit/request": { "node_modules/@octokit/plugin-paginate-rest": {
"version": "6.2.2", "version": "11.3.6",
"resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.2.tgz", "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.3.6.tgz",
"integrity": "sha512-6VDqgj0HMc2FUX2awIs+sM6OwLgwHvAi4KCK3mT2H2IKRt6oH9d0fej5LluF5mck1lRR/rFWN0YIDSYXYSylbw==", "integrity": "sha512-zcvqqf/+TicbTCa/Z+3w4eBJcAxCFymtc0UAIsR3dEVoNilWld4oXdscQ3laXamTszUZdusw97K8+DrbFiOwjw==",
"dependencies": { "dependencies": {
"@octokit/endpoint": "^7.0.0", "@octokit/types": "^13.6.2"
"@octokit/request-error": "^3.0.0",
"@octokit/types": "^8.0.0",
"is-plain-object": "^5.0.0",
"node-fetch": "^2.6.7",
"universal-user-agent": "^6.0.0"
}, },
"engines": { "engines": {
"node": ">= 14" "node": ">= 18"
},
"peerDependencies": {
"@octokit/core": ">=6"
}
},
"node_modules/@octokit/plugin-rest-endpoint-methods": {
"version": "13.2.6",
"resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-13.2.6.tgz",
"integrity": "sha512-wMsdyHMjSfKjGINkdGKki06VEkgdEldIGstIEyGX0wbYHGByOwN/KiM+hAAlUwAtPkP3gvXtVQA9L3ITdV2tVw==",
"dependencies": {
"@octokit/types": "^13.6.1"
},
"engines": {
"node": ">= 18"
},
"peerDependencies": {
"@octokit/core": ">=6"
}
},
"node_modules/@octokit/request": {
"version": "9.1.4",
"resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.1.4.tgz",
"integrity": "sha512-tMbOwGm6wDII6vygP3wUVqFTw3Aoo0FnVQyhihh8vVq12uO3P+vQZeo2CKMpWtPSogpACD0yyZAlVlQnjW71DA==",
"peer": true,
"dependencies": {
"@octokit/endpoint": "^10.0.0",
"@octokit/request-error": "^6.0.1",
"@octokit/types": "^13.6.2",
"fast-content-type-parse": "^2.0.0",
"universal-user-agent": "^7.0.2"
},
"engines": {
"node": ">= 18"
} }
}, },
"node_modules/@octokit/request-error": { "node_modules/@octokit/request-error": {
"version": "3.0.2", "version": "6.1.6",
"resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.2.tgz", "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.6.tgz",
"integrity": "sha512-WMNOFYrSaX8zXWoJg9u/pKgWPo94JXilMLb2VManNOby9EZxrQaBe/QSC4a1TzpAlpxofg2X/jMnCyZgL6y7eg==", "integrity": "sha512-pqnVKYo/at0NuOjinrgcQYpEbv4snvP3bKMRqHaD9kIsk9u1LCpb2smHZi8/qJfgeNqLo5hNW4Z7FezNdEo0xg==",
"peer": true,
"dependencies": { "dependencies": {
"@octokit/types": "^8.0.0", "@octokit/types": "^13.6.2"
"deprecation": "^2.0.0",
"once": "^1.4.0"
}, },
"engines": { "engines": {
"node": ">= 14" "node": ">= 18"
} }
}, },
"node_modules/@octokit/types": { "node_modules/@octokit/types": {
"version": "8.0.0", "version": "13.6.2",
"resolved": "https://registry.npmjs.org/@octokit/types/-/types-8.0.0.tgz", "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.6.2.tgz",
"integrity": "sha512-65/TPpOJP1i3K4lBJMnWqPUJ6zuOtzhtagDvydAWbEXpbFYA0oMKKyLb95NFZZP0lSh/4b6K+DQlzvYQJQQePg==", "integrity": "sha512-WpbZfZUcZU77DrSW4wbsSgTPfKcp286q3ItaIgvSbBpZJlu6mnYXAkjZz6LVZPXkEvLIM8McanyZejKTYUHipA==",
"dependencies": { "dependencies": {
"@octokit/openapi-types": "^14.0.0" "@octokit/openapi-types": "^22.2.0"
} }
}, },
"node_modules/@pkgjs/parseargs": { "node_modules/@pkgjs/parseargs": {
@ -2848,9 +2876,10 @@
] ]
}, },
"node_modules/before-after-hook": { "node_modules/before-after-hook": {
"version": "2.2.3", "version": "3.0.2",
"resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-3.0.2.tgz",
"integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==" "integrity": "sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==",
"peer": true
}, },
"node_modules/bindings": { "node_modules/bindings": {
"version": "1.5.0", "version": "1.5.0",
@ -3873,11 +3902,6 @@
"node": ">=0.4.0" "node": ">=0.4.0"
} }
}, },
"node_modules/deprecation": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz",
"integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ=="
},
"node_modules/detect-libc": { "node_modules/detect-libc": {
"version": "2.0.3", "version": "2.0.3",
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz",
@ -4485,6 +4509,12 @@
"node": ">=4" "node": ">=4"
} }
}, },
"node_modules/fast-content-type-parse": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-2.0.0.tgz",
"integrity": "sha512-fCqg/6Sps8tqk8p+kqyKqYfOF0VjPNYrqpLiqNl0RBKmD80B080AJWVV6EkSkscjToNExcXg1+Mfzftrx6+iSA==",
"peer": true
},
"node_modules/fast-deep-equal": { "node_modules/fast-deep-equal": {
"version": "3.1.3", "version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@ -5275,14 +5305,6 @@
"node": ">=0.12.0" "node": ">=0.12.0"
} }
}, },
"node_modules/is-plain-object": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
"integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/is-port-reachable": { "node_modules/is-port-reachable": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/is-port-reachable/-/is-port-reachable-4.0.0.tgz", "resolved": "https://registry.npmjs.org/is-port-reachable/-/is-port-reachable-4.0.0.tgz",
@ -6376,7 +6398,7 @@
"node_modules/markdown-include": { "node_modules/markdown-include": {
"version": "0.4.3", "version": "0.4.3",
"resolved": "https://registry.npmjs.org/markdown-include/-/markdown-include-0.4.3.tgz", "resolved": "https://registry.npmjs.org/markdown-include/-/markdown-include-0.4.3.tgz",
"integrity": "sha1-usZVVALG2pOg9SlSIl37mmzMcxs=", "integrity": "sha512-kw1f+iJ8jAH9SYljv2RXmhRQFr2oMPPVdyoKaZIH+uA1rrQqDjLk6EQZW65oVz1Y+BkC3V//9lEvKKjRZNb1Jg==",
"dependencies": { "dependencies": {
"q": "^1.2.0" "q": "^1.2.0"
}, },
@ -6722,44 +6744,6 @@
"resolved": "https://registry.npmjs.org/node-ensure/-/node-ensure-0.0.0.tgz", "resolved": "https://registry.npmjs.org/node-ensure/-/node-ensure-0.0.0.tgz",
"integrity": "sha1-7K52QVDemYYexcgQ/V0Jaxg5Mqc=" "integrity": "sha1-7K52QVDemYYexcgQ/V0Jaxg5Mqc="
}, },
"node_modules/node-fetch": {
"version": "2.6.7",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
"integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
"dependencies": {
"whatwg-url": "^5.0.0"
},
"engines": {
"node": "4.x || >=6.0.0"
},
"peerDependencies": {
"encoding": "^0.1.0"
},
"peerDependenciesMeta": {
"encoding": {
"optional": true
}
}
},
"node_modules/node-fetch/node_modules/tr46": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
},
"node_modules/node-fetch/node_modules/webidl-conversions": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
"integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
},
"node_modules/node-fetch/node_modules/whatwg-url": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
"integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
"dependencies": {
"tr46": "~0.0.3",
"webidl-conversions": "^3.0.0"
}
},
"node_modules/node-gyp": { "node_modules/node-gyp": {
"version": "10.3.1", "version": "10.3.1",
"resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.3.1.tgz", "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.3.1.tgz",
@ -8757,9 +8741,10 @@
} }
}, },
"node_modules/universal-user-agent": { "node_modules/universal-user-agent": {
"version": "6.0.0", "version": "7.0.2",
"resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.2.tgz",
"integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==" "integrity": "sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==",
"peer": true
}, },
"node_modules/universalify": { "node_modules/universalify": {
"version": "2.0.0", "version": "2.0.0",
@ -10359,81 +10344,96 @@
} }
}, },
"@octokit/auth-token": { "@octokit/auth-token": {
"version": "3.0.2", "version": "5.1.1",
"resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.2.tgz", "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-5.1.1.tgz",
"integrity": "sha512-pq7CwIMV1kmzkFTimdwjAINCXKTajZErLB4wMLYapR2nuB/Jpr66+05wOTZMSCBXP6n4DdDWT2W19Bm17vU69Q==", "integrity": "sha512-rh3G3wDO8J9wSjfI436JUKzHIxq8NaiL0tVeB2aXmG6p/9859aUOAjA9pmSPNGGZxfwmaJ9ozOJImuNVJdpvbA==",
"requires": { "peer": true
"@octokit/types": "^8.0.0"
}
}, },
"@octokit/core": { "@octokit/core": {
"version": "4.1.0", "version": "6.1.2",
"resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.1.0.tgz", "resolved": "https://registry.npmjs.org/@octokit/core/-/core-6.1.2.tgz",
"integrity": "sha512-Czz/59VefU+kKDy+ZfDwtOIYIkFjExOKf+HA92aiTZJ6EfWpFzYQWw0l54ji8bVmyhc+mGaLUbSUmXazG7z5OQ==", "integrity": "sha512-hEb7Ma4cGJGEUNOAVmyfdB/3WirWMg5hDuNFVejGEDFqupeOysLc2sG6HJxY2etBp5YQu5Wtxwi020jS9xlUwg==",
"peer": true,
"requires": { "requires": {
"@octokit/auth-token": "^3.0.0", "@octokit/auth-token": "^5.0.0",
"@octokit/graphql": "^5.0.0", "@octokit/graphql": "^8.0.0",
"@octokit/request": "^6.0.0", "@octokit/request": "^9.0.0",
"@octokit/request-error": "^3.0.0", "@octokit/request-error": "^6.0.1",
"@octokit/types": "^8.0.0", "@octokit/types": "^13.0.0",
"before-after-hook": "^2.2.0", "before-after-hook": "^3.0.2",
"universal-user-agent": "^6.0.0" "universal-user-agent": "^7.0.0"
} }
}, },
"@octokit/endpoint": { "@octokit/endpoint": {
"version": "7.0.3", "version": "10.1.1",
"resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.3.tgz", "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.1.tgz",
"integrity": "sha512-57gRlb28bwTsdNXq+O3JTQ7ERmBTuik9+LelgcLIVfYwf235VHbN9QNo4kXExtp/h8T423cR5iJThKtFYxC7Lw==", "integrity": "sha512-JYjh5rMOwXMJyUpj028cu0Gbp7qe/ihxfJMLc8VZBMMqSwLgOxDI1911gV4Enl1QSavAQNJcwmwBF9M0VvLh6Q==",
"peer": true,
"requires": { "requires": {
"@octokit/types": "^8.0.0", "@octokit/types": "^13.0.0",
"is-plain-object": "^5.0.0", "universal-user-agent": "^7.0.2"
"universal-user-agent": "^6.0.0"
} }
}, },
"@octokit/graphql": { "@octokit/graphql": {
"version": "5.0.4", "version": "8.1.1",
"resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.4.tgz", "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-8.1.1.tgz",
"integrity": "sha512-amO1M5QUQgYQo09aStR/XO7KAl13xpigcy/kI8/N1PnZYSS69fgte+xA4+c2DISKqUZfsh0wwjc2FaCt99L41A==", "integrity": "sha512-ukiRmuHTi6ebQx/HFRCXKbDlOh/7xEV6QUXaE7MJEKGNAncGI/STSbOkl12qVXZrfZdpXctx5O9X1AIaebiDBg==",
"peer": true,
"requires": { "requires": {
"@octokit/request": "^6.0.0", "@octokit/request": "^9.0.0",
"@octokit/types": "^8.0.0", "@octokit/types": "^13.0.0",
"universal-user-agent": "^6.0.0" "universal-user-agent": "^7.0.0"
} }
}, },
"@octokit/openapi-types": { "@octokit/openapi-types": {
"version": "14.0.0", "version": "22.2.0",
"resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-14.0.0.tgz", "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-22.2.0.tgz",
"integrity": "sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw==" "integrity": "sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg=="
},
"@octokit/plugin-paginate-rest": {
"version": "11.3.6",
"resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.3.6.tgz",
"integrity": "sha512-zcvqqf/+TicbTCa/Z+3w4eBJcAxCFymtc0UAIsR3dEVoNilWld4oXdscQ3laXamTszUZdusw97K8+DrbFiOwjw==",
"requires": {
"@octokit/types": "^13.6.2"
}
},
"@octokit/plugin-rest-endpoint-methods": {
"version": "13.2.6",
"resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-13.2.6.tgz",
"integrity": "sha512-wMsdyHMjSfKjGINkdGKki06VEkgdEldIGstIEyGX0wbYHGByOwN/KiM+hAAlUwAtPkP3gvXtVQA9L3ITdV2tVw==",
"requires": {
"@octokit/types": "^13.6.1"
}
}, },
"@octokit/request": { "@octokit/request": {
"version": "6.2.2", "version": "9.1.4",
"resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.2.tgz", "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.1.4.tgz",
"integrity": "sha512-6VDqgj0HMc2FUX2awIs+sM6OwLgwHvAi4KCK3mT2H2IKRt6oH9d0fej5LluF5mck1lRR/rFWN0YIDSYXYSylbw==", "integrity": "sha512-tMbOwGm6wDII6vygP3wUVqFTw3Aoo0FnVQyhihh8vVq12uO3P+vQZeo2CKMpWtPSogpACD0yyZAlVlQnjW71DA==",
"peer": true,
"requires": { "requires": {
"@octokit/endpoint": "^7.0.0", "@octokit/endpoint": "^10.0.0",
"@octokit/request-error": "^3.0.0", "@octokit/request-error": "^6.0.1",
"@octokit/types": "^8.0.0", "@octokit/types": "^13.6.2",
"is-plain-object": "^5.0.0", "fast-content-type-parse": "^2.0.0",
"node-fetch": "^2.6.7", "universal-user-agent": "^7.0.2"
"universal-user-agent": "^6.0.0"
} }
}, },
"@octokit/request-error": { "@octokit/request-error": {
"version": "3.0.2", "version": "6.1.6",
"resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.2.tgz", "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.6.tgz",
"integrity": "sha512-WMNOFYrSaX8zXWoJg9u/pKgWPo94JXilMLb2VManNOby9EZxrQaBe/QSC4a1TzpAlpxofg2X/jMnCyZgL6y7eg==", "integrity": "sha512-pqnVKYo/at0NuOjinrgcQYpEbv4snvP3bKMRqHaD9kIsk9u1LCpb2smHZi8/qJfgeNqLo5hNW4Z7FezNdEo0xg==",
"peer": true,
"requires": { "requires": {
"@octokit/types": "^8.0.0", "@octokit/types": "^13.6.2"
"deprecation": "^2.0.0",
"once": "^1.4.0"
} }
}, },
"@octokit/types": { "@octokit/types": {
"version": "8.0.0", "version": "13.6.2",
"resolved": "https://registry.npmjs.org/@octokit/types/-/types-8.0.0.tgz", "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.6.2.tgz",
"integrity": "sha512-65/TPpOJP1i3K4lBJMnWqPUJ6zuOtzhtagDvydAWbEXpbFYA0oMKKyLb95NFZZP0lSh/4b6K+DQlzvYQJQQePg==", "integrity": "sha512-WpbZfZUcZU77DrSW4wbsSgTPfKcp286q3ItaIgvSbBpZJlu6mnYXAkjZz6LVZPXkEvLIM8McanyZejKTYUHipA==",
"requires": { "requires": {
"@octokit/openapi-types": "^14.0.0" "@octokit/openapi-types": "^22.2.0"
} }
}, },
"@pkgjs/parseargs": { "@pkgjs/parseargs": {
@ -11082,9 +11082,10 @@
"integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
}, },
"before-after-hook": { "before-after-hook": {
"version": "2.2.3", "version": "3.0.2",
"resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-3.0.2.tgz",
"integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==" "integrity": "sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==",
"peer": true
}, },
"bindings": { "bindings": {
"version": "1.5.0", "version": "1.5.0",
@ -11808,11 +11809,6 @@
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
}, },
"deprecation": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz",
"integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ=="
},
"detect-libc": { "detect-libc": {
"version": "2.0.3", "version": "2.0.3",
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz",
@ -12242,6 +12238,12 @@
"tmp": "^0.0.33" "tmp": "^0.0.33"
} }
}, },
"fast-content-type-parse": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-2.0.0.tgz",
"integrity": "sha512-fCqg/6Sps8tqk8p+kqyKqYfOF0VjPNYrqpLiqNl0RBKmD80B080AJWVV6EkSkscjToNExcXg1+Mfzftrx6+iSA==",
"peer": true
},
"fast-deep-equal": { "fast-deep-equal": {
"version": "3.1.3", "version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@ -12793,11 +12795,6 @@
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
}, },
"is-plain-object": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
"integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q=="
},
"is-port-reachable": { "is-port-reachable": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/is-port-reachable/-/is-port-reachable-4.0.0.tgz", "resolved": "https://registry.npmjs.org/is-port-reachable/-/is-port-reachable-4.0.0.tgz",
@ -13634,7 +13631,7 @@
"markdown-include": { "markdown-include": {
"version": "0.4.3", "version": "0.4.3",
"resolved": "https://registry.npmjs.org/markdown-include/-/markdown-include-0.4.3.tgz", "resolved": "https://registry.npmjs.org/markdown-include/-/markdown-include-0.4.3.tgz",
"integrity": "sha1-usZVVALG2pOg9SlSIl37mmzMcxs=", "integrity": "sha512-kw1f+iJ8jAH9SYljv2RXmhRQFr2oMPPVdyoKaZIH+uA1rrQqDjLk6EQZW65oVz1Y+BkC3V//9lEvKKjRZNb1Jg==",
"requires": { "requires": {
"q": "^1.2.0" "q": "^1.2.0"
} }
@ -13908,35 +13905,6 @@
"resolved": "https://registry.npmjs.org/node-ensure/-/node-ensure-0.0.0.tgz", "resolved": "https://registry.npmjs.org/node-ensure/-/node-ensure-0.0.0.tgz",
"integrity": "sha1-7K52QVDemYYexcgQ/V0Jaxg5Mqc=" "integrity": "sha1-7K52QVDemYYexcgQ/V0Jaxg5Mqc="
}, },
"node-fetch": {
"version": "2.6.7",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
"integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
"requires": {
"whatwg-url": "^5.0.0"
},
"dependencies": {
"tr46": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
},
"webidl-conversions": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
"integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
},
"whatwg-url": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
"integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
"requires": {
"tr46": "~0.0.3",
"webidl-conversions": "^3.0.0"
}
}
}
},
"node-gyp": { "node-gyp": {
"version": "10.3.1", "version": "10.3.1",
"resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.3.1.tgz", "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.3.1.tgz",
@ -15342,9 +15310,10 @@
} }
}, },
"universal-user-agent": { "universal-user-agent": {
"version": "6.0.0", "version": "7.0.2",
"resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.2.tgz",
"integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==" "integrity": "sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==",
"peer": true
}, },
"universalify": { "universalify": {
"version": "2.0.0", "version": "2.0.0",

View file

@ -8,6 +8,7 @@
"channels:parse": "npx tsx scripts/commands/channels/parse.ts", "channels:parse": "npx tsx scripts/commands/channels/parse.ts",
"channels:editor": "npx tsx scripts/commands/channels/editor.ts", "channels:editor": "npx tsx scripts/commands/channels/editor.ts",
"channels:validate": "npx tsx scripts/commands/channels/validate.ts", "channels:validate": "npx tsx scripts/commands/channels/validate.ts",
"sites:update": "npx tsx scripts/commands/sites/update.ts",
"grab": "npx tsx scripts/commands/epg/grab.ts", "grab": "npx tsx scripts/commands/epg/grab.ts",
"serve": "npx serve", "serve": "npx serve",
"lint": "npx eslint \"{scripts,tests}/**/*.{ts,js}\"", "lint": "npx eslint \"{scripts,tests}/**/*.{ts,js}\"",
@ -31,7 +32,8 @@
"@freearhey/core": "^0.3.1", "@freearhey/core": "^0.3.1",
"@freearhey/search-js": "^0.1.1", "@freearhey/search-js": "^0.1.1",
"@ntlab/sfetch": "^1.0.0", "@ntlab/sfetch": "^1.0.0",
"@octokit/core": "^4.1.0", "@octokit/plugin-paginate-rest": "^11.3.6",
"@octokit/plugin-rest-endpoint-methods": "^13.2.6",
"@types/cli-progress": "^3.11.3", "@types/cli-progress": "^3.11.3",
"@types/fs-extra": "^11.0.2", "@types/fs-extra": "^11.0.2",
"@types/inquirer": "^9.0.3", "@types/inquirer": "^9.0.3",

View file

@ -0,0 +1,58 @@
import { Logger, Storage, Collection, Dictionary } from '@freearhey/core'
import { IssueLoader, HTMLTable, Markdown } from '../../core'
import { Issue, Site } from '../../models'
import { SITES_DIR, DOT_SITES_DIR } from '../../constants'
import path from 'path'
async function main() {
const logger = new Logger({ disabled: true })
const loader = new IssueLoader()
const storage = new Storage(SITES_DIR)
const sites = new Collection()
logger.info('loading list of sites')
const folders = await storage.list('*/')
logger.info('loading issues...')
const issues = await loadIssues(loader)
logger.info('putting the data together...')
folders.forEach((domain: string) => {
const filteredIssues = issues.filter((issue: Issue) => domain === issue.data.get('site'))
const site = new Site({
domain,
issues: filteredIssues
})
sites.add(site)
})
logger.info('creating sites table...')
let data = new Collection()
sites.forEach((site: Site) => {
data.add([
`<a href="sites/${site.domain}">${site.domain}</a>`,
site.getStatus().emoji,
site.getIssues().all().join(', ')
])
})
const table = new HTMLTable(data.all(), [{ name: 'Site' }, { name: 'Status' }, { name: 'Notes' }])
const readmeStorage = new Storage(DOT_SITES_DIR)
await readmeStorage.save('_table.md', table.toString())
logger.info('updating sites.md...')
const configPath = path.join(DOT_SITES_DIR, 'config.json')
const sitesMarkdown = new Markdown(configPath)
sitesMarkdown.compile()
}
main()
async function loadIssues(loader: IssueLoader) {
const issuesWithStatusWarning = await loader.load({ labels: ['broken guide', 'status:warning'] })
const issuesWithStatusDown = await loader.load({ labels: ['broken guide', 'status:down'] })
return issuesWithStatusWarning.concat(issuesWithStatusDown)
}

View file

@ -2,3 +2,7 @@ export const SITES_DIR = process.env.SITES_DIR || './sites'
export const GUIDES_DIR = process.env.GUIDES_DIR || './guides' export const GUIDES_DIR = process.env.GUIDES_DIR || './guides'
export const DATA_DIR = process.env.DATA_DIR || './temp/data' export const DATA_DIR = process.env.DATA_DIR || './temp/data'
export const API_DIR = process.env.API_DIR || '.api' export const API_DIR = process.env.API_DIR || '.api'
export const DOT_SITES_DIR = process.env.DOT_SITES_DIR || './.sites'
export const TESTING = process.env.NODE_ENV === 'test' ? true : false
export const OWNER = 'iptv-org'
export const REPO = 'epg'

46
scripts/core/htmlTable.ts Normal file
View file

@ -0,0 +1,46 @@
type Column = {
name: string
nowrap?: boolean
align?: string
}
type DataItem = string[]
export class HTMLTable {
data: DataItem[]
columns: Column[]
constructor(data: DataItem[], columns: Column[]) {
this.data = data
this.columns = columns
}
toString() {
let output = '<table>\n'
output += ' <thead>\n <tr>'
for (const column of this.columns) {
output += `<th align="left">${column.name}</th>`
}
output += '</tr>\n </thead>\n'
output += ' <tbody>\n'
for (const item of this.data) {
output += ' <tr>'
let i = 0
for (const prop in item) {
const column = this.columns[i]
const nowrap = column.nowrap ? ' nowrap' : ''
const align = column.align ? ` align="${column.align}"` : ''
output += `<td${align}${nowrap}>${item[prop]}</td>`
i++
}
output += '</tr>\n'
}
output += ' </tbody>\n'
output += '</table>'
return output
}
}

View file

@ -10,3 +10,7 @@ export * from './guide'
export * from './apiChannel' export * from './apiChannel'
export * from './apiClient' export * from './apiClient'
export * from './queueCreator' export * from './queueCreator'
export * from './issueLoader'
export * from './issueParser'
export * from './htmlTable'
export * from './markdown'

View file

@ -0,0 +1,40 @@
import { Collection } from '@freearhey/core'
import { restEndpointMethods } from '@octokit/plugin-rest-endpoint-methods'
import { paginateRest } from '@octokit/plugin-paginate-rest'
import { Octokit } from '@octokit/core'
import { IssueParser } from './'
import { TESTING, OWNER, REPO } from '../constants'
const CustomOctokit = Octokit.plugin(paginateRest, restEndpointMethods)
const octokit = new CustomOctokit()
export class IssueLoader {
async load({ labels }: { labels: string[] | string }) {
labels = Array.isArray(labels) ? labels.join(',') : labels
let issues: object[] = []
if (TESTING) {
switch (labels) {
case 'broken guide,status:warning':
issues = require('../../tests/__data__/input/issues/broken_guide_warning.js')
break
case 'broken guide,status:down':
issues = require('../../tests/__data__/input/issues/broken_guide_down.js')
break
}
} else {
issues = await octokit.paginate(octokit.rest.issues.listForRepo, {
owner: OWNER,
repo: REPO,
per_page: 100,
labels,
headers: {
'X-GitHub-Api-Version': '2022-11-28'
}
})
}
const parser = new IssueParser()
return new Collection(issues).map(parser.parse)
}
}

View file

@ -0,0 +1,34 @@
import { Dictionary } from '@freearhey/core'
import { Issue } from '../models'
const FIELDS = new Dictionary({
Site: 'site'
})
export class IssueParser {
parse(issue: { number: number; body: string; labels: { name: string }[] }): Issue {
const fields = issue.body.split('###')
const data = new Dictionary()
fields.forEach((field: string) => {
let parsed = field.split(/\r?\n/).filter(Boolean)
let _label = parsed.shift()
_label = _label ? _label.trim() : ''
let _value = parsed.join('\r\n')
_value = _value ? _value.trim() : ''
if (!_label || !_value) return data
const id: string = FIELDS.get(_label)
const value: string = _value === '_No response_' || _value === 'None' ? '' : _value
if (!id) return
data.set(id, value)
})
const labels = issue.labels.map(label => label.name)
return new Issue({ number: issue.number, labels, data })
}
}

13
scripts/core/markdown.ts Normal file
View file

@ -0,0 +1,13 @@
import markdownInclude from 'markdown-include'
export class Markdown {
filepath: string
constructor(filepath: string) {
this.filepath = filepath
}
compile() {
markdownInclude.compileFiles(this.filepath)
}
}

2
scripts/models/index.ts Normal file
View file

@ -0,0 +1,2 @@
export * from './issue'
export * from './site'

24
scripts/models/issue.ts Normal file
View file

@ -0,0 +1,24 @@
import { Dictionary } from '@freearhey/core'
import { OWNER, REPO } from '../constants'
type IssueProps = {
number: number
labels: string[]
data: Dictionary
}
export class Issue {
number: number
labels: string[]
data: Dictionary
constructor({ number, labels, data }: IssueProps) {
this.number = number
this.labels = labels
this.data = data
}
getURL() {
return `https://github.com/${OWNER}/${REPO}/issues/${this.number}`
}
}

57
scripts/models/site.ts Normal file
View file

@ -0,0 +1,57 @@
import { Collection } from '@freearhey/core'
import { Issue } from './'
enum StatusCode {
DOWN = 'down',
WARNING = 'warning',
OK = 'ok'
}
type Status = {
code: StatusCode
emoji: string
}
type SiteProps = {
domain: string
issues: Collection
}
export class Site {
domain: string
issues: Collection
constructor({ domain, issues }: SiteProps) {
this.domain = domain
this.issues = issues
}
getStatus(): Status {
const issuesWithStatusDown = this.issues.filter((issue: Issue) =>
issue.labels.find(label => label === 'status:down')
)
if (issuesWithStatusDown.notEmpty())
return {
code: StatusCode.DOWN,
emoji: '🔴'
}
const issuesWithStatusWarning = this.issues.filter((issue: Issue) =>
issue.labels.find(label => label === 'status:warning')
)
if (issuesWithStatusWarning.notEmpty())
return {
code: StatusCode.WARNING,
emoji: '🟡'
}
return {
code: StatusCode.OK,
emoji: '🟢'
}
}
getIssues(): Collection {
return this.issues.map((issue: Issue) => issue.getURL())
}
}

View file

@ -0,0 +1,210 @@
# Sites
<!-- prettier-ignore -->
<table>
<thead>
<tr><th align="left">Site</th><th align="left">Status</th><th align="left">Notes</th></tr>
</thead>
<tbody>
<tr><td><a href="sites/9tv.co.il">9tv.co.il</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/abc.net.au">abc.net.au</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/allente.dk">allente.dk</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/allente.fi">allente.fi</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/allente.no">allente.no</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/allente.se">allente.se</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/andorradifusio.ad">andorradifusio.ad</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/anteltv.com.uy">anteltv.com.uy</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/arianaafgtv.com">arianaafgtv.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/arianatelevision.com">arianatelevision.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/arirang.com">arirang.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/artonline.tv">artonline.tv</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/awilime.com">awilime.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/bein.com">bein.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/beinsports.com">beinsports.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/berrymedia.co.kr">berrymedia.co.kr</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/cablego.com.pe">cablego.com.pe</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/cableplus.com.uy">cableplus.com.uy</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/canalplus-haiti.com">canalplus-haiti.com</a></td><td>🔴</td><td>https://github.com/iptv-org/epg/issues/2237</td></tr>
<tr><td><a href="sites/canalplus.com">canalplus.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/cgates.lt">cgates.lt</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/chada.ma">chada.ma</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/chaines-tv.orange.fr">chaines-tv.orange.fr</a></td><td>🟡</td><td>https://github.com/iptv-org/epg/issues/2395</td></tr>
<tr><td><a href="sites/clickthecity.com">clickthecity.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/comteco.com.bo">comteco.com.bo</a></td><td>🔴</td><td>https://github.com/iptv-org/epg/issues/2239</td></tr>
<tr><td><a href="sites/content.astro.com.my">content.astro.com.my</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/cosmote.gr">cosmote.gr</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/cubmu.com">cubmu.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/dens.tv">dens.tv</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/digiturk.com.tr">digiturk.com.tr</a></td><td>🔴</td><td>https://github.com/iptv-org/epg/issues/2304, https://github.com/iptv-org/epg/issues/2547</td></tr>
<tr><td><a href="sites/directv.com">directv.com</a></td><td>🔴</td><td>https://github.com/iptv-org/epg/issues/2284</td></tr>
<tr><td><a href="sites/directv.com.ar">directv.com.ar</a></td><td>🔴</td><td>https://github.com/iptv-org/epg/issues/2339</td></tr>
<tr><td><a href="sites/directv.com.uy">directv.com.uy</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/dishtv.in">dishtv.in</a></td><td>🔴</td><td>https://github.com/iptv-org/epg/issues/2445</td></tr>
<tr><td><a href="sites/dsmart.com.tr">dsmart.com.tr</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/dstv.com">dstv.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/elcinema.com">elcinema.com</a></td><td>🔴</td><td>https://github.com/iptv-org/epg/issues/2541</td></tr>
<tr><td><a href="sites/ena.skylifetv.co.kr">ena.skylifetv.co.kr</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/energeek.cl">energeek.cl</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/entertainment.ie">entertainment.ie</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/firstmedia.com">firstmedia.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/flixed.io">flixed.io</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/foxsports.com.au">foxsports.com.au</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/foxtel.com.au">foxtel.com.au</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/frikanalen.no">frikanalen.no</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/gatotv.com">gatotv.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/getafteritmedia.com">getafteritmedia.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/guida.tv">guida.tv</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/guidatv.sky.it">guidatv.sky.it</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/hd-plus.de">hd-plus.de</a></td><td>🔴</td><td>https://github.com/iptv-org/epg/issues/2173</td></tr>
<tr><td><a href="sites/horizon.tv">horizon.tv</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/hoy.tv">hoy.tv</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/i.mjh.nz">i.mjh.nz</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/i24news.tv">i24news.tv</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/iltalehti.fi">iltalehti.fi</a></td><td>🟡</td><td>https://github.com/iptv-org/epg/issues/2396</td></tr>
<tr><td><a href="sites/indihometv.com">indihometv.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/ionplustv.com">ionplustv.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/ipko.tv">ipko.tv</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/kan.org.il">kan.org.il</a></td><td>🔴</td><td>https://github.com/iptv-org/epg/issues/2273</td></tr>
<tr><td><a href="sites/knr.gl">knr.gl</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/kplus.vn">kplus.vn</a></td><td>🔴</td><td>https://github.com/iptv-org/epg/issues/2240</td></tr>
<tr><td><a href="sites/kvf.fo">kvf.fo</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/m.tv.sms.cz">m.tv.sms.cz</a></td><td>🔴</td><td>https://github.com/iptv-org/epg/issues/2241</td></tr>
<tr><td><a href="sites/m.tving.com">m.tving.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/magticom.ge">magticom.ge</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/mako.co.il">mako.co.il</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/maxtv.hrvatskitelekom.hr">maxtv.hrvatskitelekom.hr</a></td><td>🔴</td><td>https://github.com/iptv-org/epg/issues/2509</td></tr>
<tr><td><a href="sites/maxtvgo.mk">maxtvgo.mk</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/mediagenie.co.kr">mediagenie.co.kr</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/mediaklikk.hu">mediaklikk.hu</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/mediasetinfinity.mediaset.it">mediasetinfinity.mediaset.it</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/melita.com">melita.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/meo.pt">meo.pt</a></td><td>🟡</td><td>https://github.com/iptv-org/epg/issues/2446</td></tr>
<tr><td><a href="sites/meuguia.tv">meuguia.tv</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/mewatch.sg">mewatch.sg</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/mi.tv">mi.tv</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/mncvision.id">mncvision.id</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/moji.id">moji.id</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/mon-programme-tv.be">mon-programme-tv.be</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/movistarplus.es">movistarplus.es</a></td><td>🔴</td><td>https://github.com/iptv-org/epg/issues/2498</td></tr>
<tr><td><a href="sites/mtel.ba">mtel.ba</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/mts.rs">mts.rs</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/mujtvprogram.cz">mujtvprogram.cz</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/musor.tv">musor.tv</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/mysky.com.ph">mysky.com.ph</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/mytelly.co.uk">mytelly.co.uk</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/mytvsuper.com">mytvsuper.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/neo.io">neo.io</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/nhkworldpremium.com">nhkworldpremium.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/nhl.com">nhl.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/nostv.pt">nostv.pt</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/novacyprus.com">novacyprus.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/novasports.gr">novasports.gr</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/nowplayer.now.com">nowplayer.now.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/nuevosiglo.com.uy">nuevosiglo.com.uy</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/nzxmltv.com">nzxmltv.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/ontvtonight.com">ontvtonight.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/osn.com">osn.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/pbsguam.org">pbsguam.org</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/pickx.be">pickx.be</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/player.ee.co.uk">player.ee.co.uk</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/playtv.unifi.com.my">playtv.unifi.com.my</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/plex.tv">plex.tv</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/programacion-tv.elpais.com">programacion-tv.elpais.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/programacion.tcc.com.uy">programacion.tcc.com.uy</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/programetv.ro">programetv.ro</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/programme-tv.net">programme-tv.net</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/programme-tv.vini.pf">programme-tv.vini.pf</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/programme.tvb.com">programme.tvb.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/programtv.onet.pl">programtv.onet.pl</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/raiplay.it">raiplay.it</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/reportv.com.ar">reportv.com.ar</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/rev.bs">rev.bs</a></td><td>🔴</td><td>https://github.com/iptv-org/epg/issues/2255</td></tr>
<tr><td><a href="sites/rotana.net">rotana.net</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/rtb.gov.bn">rtb.gov.bn</a></td><td>🔴</td><td>https://github.com/iptv-org/epg/issues/2257</td></tr>
<tr><td><a href="sites/rthk.hk">rthk.hk</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/rtmklik.rtm.gov.my">rtmklik.rtm.gov.my</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/rtp.pt">rtp.pt</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/ruv.is">ruv.is</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/s.mxtv.jp">s.mxtv.jp</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/sat.tv">sat.tv</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/shahid.mbc.net">shahid.mbc.net</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/siba.com.co">siba.com.co</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/singtel.com">singtel.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/sjonvarp.is">sjonvarp.is</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/sky.co.nz">sky.co.nz</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/sky.com">sky.com</a></td><td>🟡</td><td>https://github.com/iptv-org/epg/issues/2516, https://github.com/iptv-org/epg/issues/2501</td></tr>
<tr><td><a href="sites/sky.de">sky.de</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/skylife.co.kr">skylife.co.kr</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/skyperfectv.co.jp">skyperfectv.co.jp</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/snrt.ma">snrt.ma</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/sporttv.pt">sporttv.pt</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/starhubtvplus.com">starhubtvplus.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/startimestv.com">startimestv.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/streamingtvguides.com">streamingtvguides.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/superguidatv.it">superguidatv.it</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/taiwanplus.com">taiwanplus.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tapdmv.com">tapdmv.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/telenet.tv">telenet.tv</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/teliatv.ee">teliatv.ee</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/telkussa.fi">telkussa.fi</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/telsu.fi">telsu.fi</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tivu.tv">tivu.tv</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/toonamiaftermath.com">toonamiaftermath.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/turksatkablo.com.tr">turksatkablo.com.tr</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tv-programme.telecablesat.fr">tv-programme.telecablesat.fr</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tv.blue.ch">tv.blue.ch</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tv.cctv.com">tv.cctv.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tv.dir.bg">tv.dir.bg</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tv.lv">tv.lv</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tv.magenta.at">tv.magenta.at</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tv.mail.ru">tv.mail.ru</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tv.movistar.com.pe">tv.movistar.com.pe</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tv.nu">tv.nu</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tv.post.lu">tv.post.lu</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tv.trueid.net">tv.trueid.net</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tv.yandex.ru">tv.yandex.ru</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tv.yettel.hu">tv.yettel.hu</a></td><td>🔴</td><td>https://github.com/iptv-org/epg/issues/2263</td></tr>
<tr><td><a href="sites/tv24.co.uk">tv24.co.uk</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tv24.se">tv24.se</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tv2go.t-2.net">tv2go.t-2.net</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tva.tv">tva.tv</a></td><td>🔴</td><td>https://github.com/iptv-org/epg/issues/2264</td></tr>
<tr><td><a href="sites/tvarenasport.com">tvarenasport.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tvarenasport.hr">tvarenasport.hr</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tvcesoir.fr">tvcesoir.fr</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tvcubana.icrt.cu">tvcubana.icrt.cu</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tvgids.nl">tvgids.nl</a></td><td>🟡</td><td>https://github.com/iptv-org/epg/issues/2400</td></tr>
<tr><td><a href="sites/tvguide.com">tvguide.com</a></td><td>🔴</td><td>https://github.com/iptv-org/epg/issues/2542</td></tr>
<tr><td><a href="sites/tvguide.myjcom.jp">tvguide.myjcom.jp</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tvhebdo.com">tvhebdo.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tvheute.at">tvheute.at</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tvim.tv">tvim.tv</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tvireland.ie">tvireland.ie</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tvmi.mt">tvmi.mt</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tvmusor.hu">tvmusor.hu</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tvpassport.com">tvpassport.com</a></td><td>🟡</td><td>https://github.com/iptv-org/epg/issues/2272</td></tr>
<tr><td><a href="sites/tvplus.com.tr">tvplus.com.tr</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/tvprofil.com">tvprofil.com</a></td><td>🟡</td><td>https://github.com/iptv-org/epg/issues/2399</td></tr>
<tr><td><a href="sites/tvtv.us">tvtv.us</a></td><td>🟡</td><td>https://github.com/iptv-org/epg/issues/2176</td></tr>
<tr><td><a href="sites/v3.myafn.dodmedia.osd.mil">v3.myafn.dodmedia.osd.mil</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/vidio.com">vidio.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/virginmediatelevision.ie">virginmediatelevision.ie</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/virgintvgo.virginmedia.com">virgintvgo.virginmedia.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/visionplus.id">visionplus.id</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/vivacom.bg">vivacom.bg</a></td><td>🔴</td><td>https://github.com/iptv-org/epg/issues/2270</td></tr>
<tr><td><a href="sites/vtm.be">vtm.be</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/walesi.com.fj">walesi.com.fj</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/watch.sportsnet.ca">watch.sportsnet.ca</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/watchyour.tv">watchyour.tv</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/wavve.com">wavve.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/web.magentatv.de">web.magentatv.de</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/webtv.delta.nl">webtv.delta.nl</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/winplay.co">winplay.co</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/worldfishingnetwork.com">worldfishingnetwork.com</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/www3.nhk.or.jp">www3.nhk.or.jp</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/xumo.tv">xumo.tv</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/zap.co.ao">zap.co.ao</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/ziggogo.tv">ziggogo.tv</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/znbc.co.zm">znbc.co.zm</a></td><td>🟢</td><td></td></tr>
<tr><td><a href="sites/zuragt.mn">zuragt.mn</a></td><td>🟢</td><td></td></tr>
</tbody>
</table>

View file

@ -0,0 +1,4 @@
{
"build" : "tests/__data__/output/sites.md",
"files" : ["tests/__data__/output/.sites/template.md"]
}

View file

@ -0,0 +1,4 @@
# Sites
<!-- prettier-ignore -->
#include "tests/__data__/output/.sites/_table.md"

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,974 @@
module.exports = [
{
url: 'https://api.github.com/repos/iptv-org/epg/issues/2543',
repository_url: 'https://api.github.com/repos/iptv-org/epg',
labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2543/labels{/name}',
comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2543/comments',
events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2543/events',
html_url: 'https://github.com/iptv-org/epg/issues/2543',
id: 2759693796,
node_id: 'I_kwDOFLVvtM6kfZXk',
number: 2543,
title: 'flixed.io is downloding old programming',
user: {
login: 'SiWafer',
id: 10903014,
node_id: 'MDQ6VXNlcjEwOTAzMDE0',
avatar_url: 'https://avatars.githubusercontent.com/u/10903014?v=4',
gravatar_id: '',
url: 'https://api.github.com/users/SiWafer',
html_url: 'https://github.com/SiWafer',
followers_url: 'https://api.github.com/users/SiWafer/followers',
following_url: 'https://api.github.com/users/SiWafer/following{/other_user}',
gists_url: 'https://api.github.com/users/SiWafer/gists{/gist_id}',
starred_url: 'https://api.github.com/users/SiWafer/starred{/owner}{/repo}',
subscriptions_url: 'https://api.github.com/users/SiWafer/subscriptions',
organizations_url: 'https://api.github.com/users/SiWafer/orgs',
repos_url: 'https://api.github.com/users/SiWafer/repos',
events_url: 'https://api.github.com/users/SiWafer/events{/privacy}',
received_events_url: 'https://api.github.com/users/SiWafer/received_events',
type: 'User',
user_view_type: 'public',
site_admin: false
},
labels: [
{
id: 4542348869,
node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ',
url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide',
name: 'broken guide',
color: 'eaeaea',
default: false,
description: "There's a problem with the guide"
},
{
id: 7932710318,
node_id: 'LA_kwDOFLVvtM8AAAAB2NONrg',
url: 'https://api.github.com/repos/iptv-org/epg/labels/status:warning',
name: 'status:warning',
color: 'fbca06',
default: false,
description: 'The guide downloads, but contains errors'
}
],
state: 'open',
locked: false,
assignee: null,
assignees: [],
milestone: null,
comments: 0,
created_at: '2024-12-26T12:09:43Z',
updated_at: '2024-12-27T05:29:58Z',
closed_at: null,
author_association: 'NONE',
active_lock_reason: null,
body: '### Describe your issue\r\n\r\nJust ran and updated, and seems the output is loading old programming and it also is not complete\r\n\r\nExample is Bravo channel\r\n\r\n```\r\nepg@rpi:~/epg$ npm run grab --- --site=flixed.io --maxConnections=10 -o "flixed.xml"\r\n\r\n> grab\r\n> npx tsx scripts/commands/epg/grab.ts --site=flixed.io --maxConnections=10 -o flixed.xml\r\n\r\nstarting...\r\nconfig:\r\n output: flixed.xml\r\n maxConnections: 10\r\n gzip: false\r\n site: flixed.io\r\nloading channels...\r\n found 94 channel(s)\r\nrun #1:\r\n [1/94] flixed.io (en) - BravoEast.us - Dec 26, 2024 (2 programs)\r\n [2/94] flixed.io (en) - ComedyCentralEast.us - Dec 26, 2024 (5 programs)\r\n [3/94] flixed.io (en) - ACCNetwork.us - Dec 26, 2024 (26 programs)\r\n [4/94] flixed.io (en) - CNN.us - Dec 26, 2024 (25 programs)\r\n [5/94] flixed.io (en) - BloombergTV.us - Dec 26, 2024 (21 programs)\r\n [6/94] flixed.io (en) - AEEast.us - Dec 26, 2024 (6 programs)\r\n [7/94] flixed.io (en) - CNBC.us - Dec 26, 2024 (3 programs)\r\n [8/94] flixed.io (en) - CinemaxEast.us - Dec 26, 2024 (14 programs)\r\n [9/94] flixed.io (en) - AMCEast.us - Dec 26, 2024 (19 programs)\r\n [10/94] flixed.io (en) - BigTenNetwork.us - Dec 26, 2024 (3 programs)\r\n [11/94] flixed.io (en) - FoxWest.us - Dec 26, 2024 (8 programs)\r\n [12/94] flixed.io (en) - FreeformEast.us - Dec 26, 2024 (2 programs)\r\n [13/94] flixed.io (en) - FoxSports2.us - Dec 26, 2024 (2 programs)\r\n [14/94] flixed.io (en) - FoodNetworkEast.us - Dec 26, 2024 (3 programs)\r\n...\r\n...\r\n...\r\n\r\n```\r\nSnip from xml file out\r\n![image](https://github.com/user-attachments/assets/5ed6d7eb-df59-4951-9b2c-5214e24d24ac)\r\n\r\nThe date is September 26, 2024, 01:00:00 for Bravo\r\n\r\n',
closed_by: null,
reactions: {
url: 'https://api.github.com/repos/iptv-org/epg/issues/2543/reactions',
total_count: 0,
'+1': 0,
'-1': 0,
laugh: 0,
hooray: 0,
confused: 0,
heart: 0,
rocket: 0,
eyes: 0
},
timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2543/timeline',
performed_via_github_app: null,
state_reason: null
},
{
url: 'https://api.github.com/repos/iptv-org/epg/issues/2516',
repository_url: 'https://api.github.com/repos/iptv-org/epg',
labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2516/labels{/name}',
comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2516/comments',
events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2516/events',
html_url: 'https://github.com/iptv-org/epg/issues/2516',
id: 2745387354,
node_id: 'I_kwDOFLVvtM6jo0la',
number: 2516,
title: 'Duplicate programmes with sky.com grab',
user: {
login: 'misar1',
id: 69795879,
node_id: 'MDQ6VXNlcjY5Nzk1ODc5',
avatar_url: 'https://avatars.githubusercontent.com/u/69795879?v=4',
gravatar_id: '',
url: 'https://api.github.com/users/misar1',
html_url: 'https://github.com/misar1',
followers_url: 'https://api.github.com/users/misar1/followers',
following_url: 'https://api.github.com/users/misar1/following{/other_user}',
gists_url: 'https://api.github.com/users/misar1/gists{/gist_id}',
starred_url: 'https://api.github.com/users/misar1/starred{/owner}{/repo}',
subscriptions_url: 'https://api.github.com/users/misar1/subscriptions',
organizations_url: 'https://api.github.com/users/misar1/orgs',
repos_url: 'https://api.github.com/users/misar1/repos',
events_url: 'https://api.github.com/users/misar1/events{/privacy}',
received_events_url: 'https://api.github.com/users/misar1/received_events',
type: 'User',
user_view_type: 'public',
site_admin: false
},
labels: [
{
id: 4542348869,
node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ',
url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide',
name: 'broken guide',
color: 'eaeaea',
default: false,
description: "There's a problem with the guide"
},
{
id: 7932710318,
node_id: 'LA_kwDOFLVvtM8AAAAB2NONrg',
url: 'https://api.github.com/repos/iptv-org/epg/labels/status:warning',
name: 'status:warning',
color: 'fbca06',
default: false,
description: 'The guide downloads, but contains errors'
}
],
state: 'open',
locked: false,
assignee: null,
assignees: [],
milestone: null,
comments: 1,
created_at: '2024-12-17T16:19:36Z',
updated_at: '2024-12-27T05:27:44Z',
closed_at: null,
author_association: 'NONE',
active_lock_reason: null,
body: '### Site\n\nsky.com\n\n### Description\n\n\r\nI changed to the recently updated sky.com script a couple of days ago (using a completely new install as in the readme) and have found an anomaly. This does not occur with an identical grab using my previous installation. The grabs are for about 60 UK FTA channels which I can list if it would be helpful.\r\n\r\nA number of programmes have two identical blocks in the XML, including their start and finish times. This occurs only from around approximately 22:00 each day and up to about midnight GMT. During this period most channels are affected and it is consistent between successive grabs. In case of a timing issue I tested delays of 100, 1000, 3000 and 5000 msec but the XML was unchanged.',
closed_by: null,
reactions: {
url: 'https://api.github.com/repos/iptv-org/epg/issues/2516/reactions',
total_count: 0,
'+1': 0,
'-1': 0,
laugh: 0,
hooray: 0,
confused: 0,
heart: 0,
rocket: 0,
eyes: 0
},
timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2516/timeline',
performed_via_github_app: null,
state_reason: null
},
{
url: 'https://api.github.com/repos/iptv-org/epg/issues/2501',
repository_url: 'https://api.github.com/repos/iptv-org/epg',
labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2501/labels{/name}',
comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2501/comments',
events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2501/events',
html_url: 'https://github.com/iptv-org/epg/issues/2501',
id: 2738899005,
node_id: 'I_kwDOFLVvtM6jQEg9',
number: 2501,
title: 'Sky.com',
user: {
login: 'Chris230291',
id: 5328818,
node_id: 'MDQ6VXNlcjUzMjg4MTg=',
avatar_url: 'https://avatars.githubusercontent.com/u/5328818?v=4',
gravatar_id: '',
url: 'https://api.github.com/users/Chris230291',
html_url: 'https://github.com/Chris230291',
followers_url: 'https://api.github.com/users/Chris230291/followers',
following_url: 'https://api.github.com/users/Chris230291/following{/other_user}',
gists_url: 'https://api.github.com/users/Chris230291/gists{/gist_id}',
starred_url: 'https://api.github.com/users/Chris230291/starred{/owner}{/repo}',
subscriptions_url: 'https://api.github.com/users/Chris230291/subscriptions',
organizations_url: 'https://api.github.com/users/Chris230291/orgs',
repos_url: 'https://api.github.com/users/Chris230291/repos',
events_url: 'https://api.github.com/users/Chris230291/events{/privacy}',
received_events_url: 'https://api.github.com/users/Chris230291/received_events',
type: 'User',
user_view_type: 'public',
site_admin: false
},
labels: [
{
id: 4542348869,
node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ',
url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide',
name: 'broken guide',
color: 'eaeaea',
default: false,
description: "There's a problem with the guide"
},
{
id: 7932710318,
node_id: 'LA_kwDOFLVvtM8AAAAB2NONrg',
url: 'https://api.github.com/repos/iptv-org/epg/labels/status:warning',
name: 'status:warning',
color: 'fbca06',
default: false,
description: 'The guide downloads, but contains errors'
}
],
state: 'open',
locked: false,
assignee: null,
assignees: [],
milestone: null,
comments: 2,
created_at: '2024-12-13T17:45:02Z',
updated_at: '2024-12-27T05:25:49Z',
closed_at: null,
author_association: 'NONE',
active_lock_reason: null,
body: '### Site\n\nsky.com\n\n### Description\n\n```\r\n <channel site="sky.com" lang="en" xmltv_id="ViaplaySports1.uk" site_id="1289">Viaplay 1 HD</channel>\r\n <channel site="sky.com" lang="en" xmltv_id="ViaplaySports2.uk" site_id="1290">Viaplay 2 HD</channel>\r\n```\r\n\r\nThese should be "Premier Sports 1 HD" and "Premier Sports 2 HD".\r\nAlso, the UK and ROI have different schedules for these 2 channels.',
closed_by: null,
reactions: {
url: 'https://api.github.com/repos/iptv-org/epg/issues/2501/reactions',
total_count: 0,
'+1': 0,
'-1': 0,
laugh: 0,
hooray: 0,
confused: 0,
heart: 0,
rocket: 0,
eyes: 0
},
timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2501/timeline',
performed_via_github_app: null,
state_reason: null
},
{
url: 'https://api.github.com/repos/iptv-org/epg/issues/2446',
repository_url: 'https://api.github.com/repos/iptv-org/epg',
labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2446/labels{/name}',
comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2446/comments',
events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2446/events',
html_url: 'https://github.com/iptv-org/epg/issues/2446',
id: 2568624116,
node_id: 'I_kwDOFLVvtM6ZGhf0',
number: 2446,
title: 'Eleven channels returning 0 programs on meo.pt',
user: {
login: 'jonatasgz',
id: 78122211,
node_id: 'MDQ6VXNlcjc4MTIyMjEx',
avatar_url: 'https://avatars.githubusercontent.com/u/78122211?v=4',
gravatar_id: '',
url: 'https://api.github.com/users/jonatasgz',
html_url: 'https://github.com/jonatasgz',
followers_url: 'https://api.github.com/users/jonatasgz/followers',
following_url: 'https://api.github.com/users/jonatasgz/following{/other_user}',
gists_url: 'https://api.github.com/users/jonatasgz/gists{/gist_id}',
starred_url: 'https://api.github.com/users/jonatasgz/starred{/owner}{/repo}',
subscriptions_url: 'https://api.github.com/users/jonatasgz/subscriptions',
organizations_url: 'https://api.github.com/users/jonatasgz/orgs',
repos_url: 'https://api.github.com/users/jonatasgz/repos',
events_url: 'https://api.github.com/users/jonatasgz/events{/privacy}',
received_events_url: 'https://api.github.com/users/jonatasgz/received_events',
type: 'User',
user_view_type: 'public',
site_admin: false
},
labels: [
{
id: 4542348869,
node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ',
url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide',
name: 'broken guide',
color: 'eaeaea',
default: false,
description: "There's a problem with the guide"
},
{
id: 7932710318,
node_id: 'LA_kwDOFLVvtM8AAAAB2NONrg',
url: 'https://api.github.com/repos/iptv-org/epg/labels/status:warning',
name: 'status:warning',
color: 'fbca06',
default: false,
description: 'The guide downloads, but contains errors'
}
],
state: 'open',
locked: false,
assignee: null,
assignees: [],
milestone: null,
comments: 2,
created_at: '2024-10-06T12:00:48Z',
updated_at: '2024-12-27T05:23:16Z',
closed_at: null,
author_association: 'NONE',
active_lock_reason: null,
body: '### Site\n\nmeo.pt\n\n### Description\n\nEleven (DAZN) channels return 0 programs.',
closed_by: null,
reactions: {
url: 'https://api.github.com/repos/iptv-org/epg/issues/2446/reactions',
total_count: 0,
'+1': 0,
'-1': 0,
laugh: 0,
hooray: 0,
confused: 0,
heart: 0,
rocket: 0,
eyes: 0
},
timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2446/timeline',
performed_via_github_app: null,
state_reason: null
},
{
url: 'https://api.github.com/repos/iptv-org/epg/issues/2400',
repository_url: 'https://api.github.com/repos/iptv-org/epg',
labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2400/labels{/name}',
comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2400/comments',
events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2400/events',
html_url: 'https://github.com/iptv-org/epg/issues/2400',
id: 2370209498,
node_id: 'I_kwDOFLVvtM6NRoba',
number: 2400,
title: 'tvgids.nl',
user: {
login: 'freearhey',
id: 7253922,
node_id: 'MDQ6VXNlcjcyNTM5MjI=',
avatar_url: 'https://avatars.githubusercontent.com/u/7253922?v=4',
gravatar_id: '',
url: 'https://api.github.com/users/freearhey',
html_url: 'https://github.com/freearhey',
followers_url: 'https://api.github.com/users/freearhey/followers',
following_url: 'https://api.github.com/users/freearhey/following{/other_user}',
gists_url: 'https://api.github.com/users/freearhey/gists{/gist_id}',
starred_url: 'https://api.github.com/users/freearhey/starred{/owner}{/repo}',
subscriptions_url: 'https://api.github.com/users/freearhey/subscriptions',
organizations_url: 'https://api.github.com/users/freearhey/orgs',
repos_url: 'https://api.github.com/users/freearhey/repos',
events_url: 'https://api.github.com/users/freearhey/events{/privacy}',
received_events_url: 'https://api.github.com/users/freearhey/received_events',
type: 'User',
user_view_type: 'public',
site_admin: false
},
labels: [
{
id: 4542348869,
node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ',
url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide',
name: 'broken guide',
color: 'eaeaea',
default: false,
description: "There's a problem with the guide"
},
{
id: 7932710318,
node_id: 'LA_kwDOFLVvtM8AAAAB2NONrg',
url: 'https://api.github.com/repos/iptv-org/epg/labels/status:warning',
name: 'status:warning',
color: 'fbca06',
default: false,
description: 'The guide downloads, but contains errors'
}
],
state: 'open',
locked: false,
assignee: null,
assignees: [],
milestone: null,
comments: 0,
created_at: '2024-06-24T13:05:05Z',
updated_at: '2024-12-27T05:19:25Z',
closed_at: null,
author_association: 'COLLABORATOR',
active_lock_reason: null,
body: "### Site\n\ntvgids.nl\n\n### Description\n\nTest failed:\r\n\r\n```sh\r\nnpm test -- tvgids.nl \r\n\r\n> test\r\n> run-script-os tvgids.nl\r\n\r\n\r\n> test:default\r\n> TZ=Pacific/Nauru npx jest --runInBand tvgids.nl\r\n\r\n FAIL sites/tvgids.nl/tvgids.nl.test.js\r\n ✓ can generate valid url (29 ms)\r\n ✕ can generate valid url for today (4 ms)\r\n ✓ can parse response (307 ms)\r\n ✓ can handle empty guide (3 ms)\r\n\r\n ● can generate valid url for today\r\n\r\n expect(received).toBe(expected) // Object.is equality\r\n\r\n Expected: \"https://www.tvgids.nl/gids/npo1\"\r\n Received: \"https://www.tvgids.nl/gids/25-06-2024/npo1\"\r\n\r\n 21 | const today = dayjs().startOf('d')\r\n 22 |\r\n > 23 | expect(url({ date: today, channel })).toBe('https://www.tvgids.nl/gids/npo1')\r\n | ^\r\n 24 | })\r\n 25 |\r\n 26 | it('can parse response', () => {\r\n\r\n at Object.<anonymous> (sites/tvgids.nl/tvgids.nl.test.js:23:41)\r\n\r\nTest Suites: 1 failed, 1 total\r\nTests: 1 failed, 3 passed, 4 total\r\nSnapshots: 0 total\r\nTime: 3.52 s\r\nRan all test suites matching /tvgids.nl/i.\r\n```",
closed_by: null,
reactions: {
url: 'https://api.github.com/repos/iptv-org/epg/issues/2400/reactions',
total_count: 0,
'+1': 0,
'-1': 0,
laugh: 0,
hooray: 0,
confused: 0,
heart: 0,
rocket: 0,
eyes: 0
},
timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2400/timeline',
performed_via_github_app: null,
state_reason: null
},
{
url: 'https://api.github.com/repos/iptv-org/epg/issues/2399',
repository_url: 'https://api.github.com/repos/iptv-org/epg',
labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2399/labels{/name}',
comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2399/comments',
events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2399/events',
html_url: 'https://github.com/iptv-org/epg/issues/2399',
id: 2370207356,
node_id: 'I_kwDOFLVvtM6NRn58',
number: 2399,
title: 'tvprofil.com',
user: {
login: 'freearhey',
id: 7253922,
node_id: 'MDQ6VXNlcjcyNTM5MjI=',
avatar_url: 'https://avatars.githubusercontent.com/u/7253922?v=4',
gravatar_id: '',
url: 'https://api.github.com/users/freearhey',
html_url: 'https://github.com/freearhey',
followers_url: 'https://api.github.com/users/freearhey/followers',
following_url: 'https://api.github.com/users/freearhey/following{/other_user}',
gists_url: 'https://api.github.com/users/freearhey/gists{/gist_id}',
starred_url: 'https://api.github.com/users/freearhey/starred{/owner}{/repo}',
subscriptions_url: 'https://api.github.com/users/freearhey/subscriptions',
organizations_url: 'https://api.github.com/users/freearhey/orgs',
repos_url: 'https://api.github.com/users/freearhey/repos',
events_url: 'https://api.github.com/users/freearhey/events{/privacy}',
received_events_url: 'https://api.github.com/users/freearhey/received_events',
type: 'User',
user_view_type: 'public',
site_admin: false
},
labels: [
{
id: 4542348869,
node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ',
url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide',
name: 'broken guide',
color: 'eaeaea',
default: false,
description: "There's a problem with the guide"
},
{
id: 7932710318,
node_id: 'LA_kwDOFLVvtM8AAAAB2NONrg',
url: 'https://api.github.com/repos/iptv-org/epg/labels/status:warning',
name: 'status:warning',
color: 'fbca06',
default: false,
description: 'The guide downloads, but contains errors'
}
],
state: 'open',
locked: false,
assignee: null,
assignees: [],
milestone: null,
comments: 1,
created_at: '2024-06-24T13:04:08Z',
updated_at: '2024-12-27T05:18:50Z',
closed_at: null,
author_association: 'COLLABORATOR',
active_lock_reason: null,
body: '### Site\n\ntvprofil.com\n\n### Description\n\nTest failed:\r\n\r\n```sh\r\nnpm test -- tvprofil.com\r\n\r\n> test\r\n> run-script-os tvprofil.com\r\n\r\n\r\n> test:default\r\n> TZ=Pacific/Nauru npx jest --runInBand tvprofil.com\r\n\r\n FAIL sites/tvprofil.com/tvprofil.com.test.js\r\n ✕ can generate valid url (14 ms)\r\n ✓ can generate valid request headers (1 ms)\r\n ✓ can parse response (76 ms)\r\n ✓ can handle empty guide (2 ms)\r\n\r\n ● can generate valid url\r\n\r\n expect(received).toBe(expected) // Object.is equality\r\n\r\n Expected: "https://tvprofil.com/bg/tv-programa/program/?datum=2023-01-12&kanal=24kitchen-bg&callback=cb&b51=818933"\r\n Received: "https://tvprofil.com/bg/tv-programa/program/?datum=2023-01-12&kanal=24kitchen-bg&callback=cb&b49=819461"\r\n\r\n 15 |\r\n 16 | it(\'can generate valid url\', () => {\r\n > 17 | expect(url({ channel, date })).toBe(\r\n | ^\r\n 18 | \'https://tvprofil.com/bg/tv-programa/program/?datum=2023-01-12&kanal=24kitchen-bg&callback=cb&b51=818933\'\r\n 19 | )\r\n 20 | })\r\n\r\n at Object.<anonymous> (sites/tvprofil.com/tvprofil.com.test.js:17:34)\r\n\r\nTest Suites: 1 failed, 1 total\r\nTests: 1 failed, 3 passed, 4 total\r\nSnapshots: 0 total\r\nTime: 3.307 s\r\nRan all test suites matching /tvprofil.com/i.\r\n```',
closed_by: null,
reactions: {
url: 'https://api.github.com/repos/iptv-org/epg/issues/2399/reactions',
total_count: 0,
'+1': 0,
'-1': 0,
laugh: 0,
hooray: 0,
confused: 0,
heart: 0,
rocket: 0,
eyes: 0
},
timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2399/timeline',
performed_via_github_app: null,
state_reason: null
},
{
url: 'https://api.github.com/repos/iptv-org/epg/issues/2396',
repository_url: 'https://api.github.com/repos/iptv-org/epg',
labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2396/labels{/name}',
comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2396/comments',
events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2396/events',
html_url: 'https://github.com/iptv-org/epg/issues/2396',
id: 2370189473,
node_id: 'I_kwDOFLVvtM6NRjih',
number: 2396,
title: 'iltalehti.fi',
user: {
login: 'freearhey',
id: 7253922,
node_id: 'MDQ6VXNlcjcyNTM5MjI=',
avatar_url: 'https://avatars.githubusercontent.com/u/7253922?v=4',
gravatar_id: '',
url: 'https://api.github.com/users/freearhey',
html_url: 'https://github.com/freearhey',
followers_url: 'https://api.github.com/users/freearhey/followers',
following_url: 'https://api.github.com/users/freearhey/following{/other_user}',
gists_url: 'https://api.github.com/users/freearhey/gists{/gist_id}',
starred_url: 'https://api.github.com/users/freearhey/starred{/owner}{/repo}',
subscriptions_url: 'https://api.github.com/users/freearhey/subscriptions',
organizations_url: 'https://api.github.com/users/freearhey/orgs',
repos_url: 'https://api.github.com/users/freearhey/repos',
events_url: 'https://api.github.com/users/freearhey/events{/privacy}',
received_events_url: 'https://api.github.com/users/freearhey/received_events',
type: 'User',
user_view_type: 'public',
site_admin: false
},
labels: [
{
id: 4542348869,
node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ',
url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide',
name: 'broken guide',
color: 'eaeaea',
default: false,
description: "There's a problem with the guide"
},
{
id: 7932710318,
node_id: 'LA_kwDOFLVvtM8AAAAB2NONrg',
url: 'https://api.github.com/repos/iptv-org/epg/labels/status:warning',
name: 'status:warning',
color: 'fbca06',
default: false,
description: 'The guide downloads, but contains errors'
}
],
state: 'open',
locked: false,
assignee: null,
assignees: [],
milestone: null,
comments: 0,
created_at: '2024-06-24T12:56:45Z',
updated_at: '2024-12-27T05:18:16Z',
closed_at: null,
author_association: 'COLLABORATOR',
active_lock_reason: null,
body: '### Site\n\niltalehti.fi\n\n### Description\n\nTest failed:\r\n\r\n```sh\r\nnpm test -- iltalehti.fi \r\n\r\n> test\r\n> run-script-os iltalehti.fi\r\n\r\n\r\n> test:default\r\n> TZ=Pacific/Nauru npx jest --runInBand iltalehti.fi\r\n\r\n FAIL sites/iltalehti.fi/iltalehti.fi.test.js\r\n ✕ can generate valid url (10 ms)\r\n ✓ can parse response (28 ms)\r\n ✓ can handle empty guide (1 ms)\r\n\r\n ● can generate valid url\r\n\r\n expect(received).toBe(expected) // Object.is equality\r\n\r\n Expected: "https://telkku.com/api/channel-groups/default_builtin_channelgroup1/offering?startTime=00%3A00%3A00.000&duration=PT24H&inclusionPolicy=IncludeOngoingAlso&limit=1000&tvDate=2022-10-29&view=PublicationDetails"\r\n Received: "https://telkku.com/api/channel-groups/default_builtin_channelgroupdefault_builtin_channelgroup1/offering?startTime=00%3A00%3A00.000&duration=PT24H&inclusionPolicy=IncludeOngoingAlso&limit=1000&tvDate=2022-10-29&view=PublicationDetails"\r\n\r\n 15 |\r\n 16 | it(\'can generate valid url\', () => {\r\n > 17 | expect(url({ channel, date })).toBe(\r\n | ^\r\n 18 | \'https://telkku.com/api/channel-groups/default_builtin_channelgroup1/offering?startTime=00%3A00%3A00.000&duration=PT24H&inclusionPolicy=IncludeOngoingAlso&limit=1000&tvDate=2022-10-29&view=PublicationDetails\'\r\n 19 | )\r\n 20 | })\r\n\r\n at Object.<anonymous> (sites/iltalehti.fi/iltalehti.fi.test.js:17:34)\r\n\r\nTest Suites: 1 failed, 1 total\r\nTests: 1 failed, 2 passed, 3 total\r\nSnapshots: 0 total\r\nTime: 3.193 s\r\nRan all test suites matching /iltalehti.fi/i.\r\n```',
closed_by: null,
reactions: {
url: 'https://api.github.com/repos/iptv-org/epg/issues/2396/reactions',
total_count: 0,
'+1': 0,
'-1': 0,
laugh: 0,
hooray: 0,
confused: 0,
heart: 0,
rocket: 0,
eyes: 0
},
timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2396/timeline',
performed_via_github_app: null,
state_reason: null
},
{
url: 'https://api.github.com/repos/iptv-org/epg/issues/2395',
repository_url: 'https://api.github.com/repos/iptv-org/epg',
labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2395/labels{/name}',
comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2395/comments',
events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2395/events',
html_url: 'https://github.com/iptv-org/epg/issues/2395',
id: 2370186157,
node_id: 'I_kwDOFLVvtM6NRiut',
number: 2395,
title: 'chaines-tv.orange.fr',
user: {
login: 'freearhey',
id: 7253922,
node_id: 'MDQ6VXNlcjcyNTM5MjI=',
avatar_url: 'https://avatars.githubusercontent.com/u/7253922?v=4',
gravatar_id: '',
url: 'https://api.github.com/users/freearhey',
html_url: 'https://github.com/freearhey',
followers_url: 'https://api.github.com/users/freearhey/followers',
following_url: 'https://api.github.com/users/freearhey/following{/other_user}',
gists_url: 'https://api.github.com/users/freearhey/gists{/gist_id}',
starred_url: 'https://api.github.com/users/freearhey/starred{/owner}{/repo}',
subscriptions_url: 'https://api.github.com/users/freearhey/subscriptions',
organizations_url: 'https://api.github.com/users/freearhey/orgs',
repos_url: 'https://api.github.com/users/freearhey/repos',
events_url: 'https://api.github.com/users/freearhey/events{/privacy}',
received_events_url: 'https://api.github.com/users/freearhey/received_events',
type: 'User',
user_view_type: 'public',
site_admin: false
},
labels: [
{
id: 4542348869,
node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ',
url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide',
name: 'broken guide',
color: 'eaeaea',
default: false,
description: "There's a problem with the guide"
},
{
id: 7932710318,
node_id: 'LA_kwDOFLVvtM8AAAAB2NONrg',
url: 'https://api.github.com/repos/iptv-org/epg/labels/status:warning',
name: 'status:warning',
color: 'fbca06',
default: false,
description: 'The guide downloads, but contains errors'
}
],
state: 'open',
locked: false,
assignee: null,
assignees: [],
milestone: null,
comments: 2,
created_at: '2024-06-24T12:55:21Z',
updated_at: '2024-12-27T05:17:25Z',
closed_at: null,
author_association: 'COLLABORATOR',
active_lock_reason: null,
body: '### Site\r\n\r\nchaines-tv.orange.fr\r\n\r\n### Description\r\n\r\nTest failed:\r\n\r\n```sh\r\nnpm test -- chaines-tv.orange.fr\r\n\r\n> test\r\n> run-script-os chaines-tv.orange.fr\r\n\r\n\r\n> test:default\r\n> TZ=Pacific/Nauru npx jest --runInBand chaines-tv.orange.fr\r\n\r\n FAIL sites/chaines-tv.orange.fr/chaines-tv.orange.fr.test.js\r\n ✓ can generate valid url (5 ms)\r\n ✕ can parse response (12 ms)\r\n ✓ can handle empty guide (1 ms)\r\n\r\n ● can parse response\r\n\r\n expect(received).toMatchObject(expected)\r\n\r\n - Expected - 1\r\n + Received + 1\r\n\r\n @@ -3,8 +3,8 @@\r\n "category": "Série Suspense",\r\n "description": "Un tueur en série prend un plaisir pervers à prévenir les autorités de Tallahassee avant chaque nouveau meurtre. Rossi apprend le décès d\'un de ses vieux amis.",\r\n "icon": "https://proxymedia.woopic.com/340/p/169_EMI_9697669.jpg",\r\n "start": "2021-11-07T23:35:00.000Z",\r\n "stop": "2021-11-08T00:20:00.000Z",\r\n - "title": "Tête de liste",\r\n + "title": "Esprits criminels",\r\n },\r\n ]\r\n\r\n 23 | it(\'can parse response\', () => {\r\n 24 | const result = parser({ date, channel, content })\r\n > 25 | expect(result).toMatchObject([\r\n | ^\r\n 26 | {\r\n 27 | start: \'2021-11-07T23:35:00.000Z\',\r\n 28 | stop: \'2021-11-08T00:20:00.000Z\',\r\n\r\n at Object.<anonymous> (sites/chaines-tv.orange.fr/chaines-tv.orange.fr.test.js:25:18)\r\n\r\nTest Suites: 1 failed, 1 total\r\nTests: 1 failed, 2 passed, 3 total\r\nSnapshots: 0 total\r\nTime: 4.003 s\r\nRan all test suites matching /chaines-tv.orange.fr/i.\r\n```',
closed_by: null,
reactions: {
url: 'https://api.github.com/repos/iptv-org/epg/issues/2395/reactions',
total_count: 0,
'+1': 0,
'-1': 0,
laugh: 0,
hooray: 0,
confused: 0,
heart: 0,
rocket: 0,
eyes: 0
},
timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2395/timeline',
performed_via_github_app: null,
state_reason: null
},
{
url: 'https://api.github.com/repos/iptv-org/epg/issues/2304',
repository_url: 'https://api.github.com/repos/iptv-org/epg',
labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2304/labels{/name}',
comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2304/comments',
events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2304/events',
html_url: 'https://github.com/iptv-org/epg/issues/2304',
id: 2064638324,
node_id: 'I_kwDOFLVvtM57D-F0',
number: 2304,
title: 'digiturk.com.tr Missing Channel Identifications',
user: {
login: 'UzunMuhalefet',
id: 80906858,
node_id: 'MDQ6VXNlcjgwOTA2ODU4',
avatar_url: 'https://avatars.githubusercontent.com/u/80906858?v=4',
gravatar_id: '',
url: 'https://api.github.com/users/UzunMuhalefet',
html_url: 'https://github.com/UzunMuhalefet',
followers_url: 'https://api.github.com/users/UzunMuhalefet/followers',
following_url: 'https://api.github.com/users/UzunMuhalefet/following{/other_user}',
gists_url: 'https://api.github.com/users/UzunMuhalefet/gists{/gist_id}',
starred_url: 'https://api.github.com/users/UzunMuhalefet/starred{/owner}{/repo}',
subscriptions_url: 'https://api.github.com/users/UzunMuhalefet/subscriptions',
organizations_url: 'https://api.github.com/users/UzunMuhalefet/orgs',
repos_url: 'https://api.github.com/users/UzunMuhalefet/repos',
events_url: 'https://api.github.com/users/UzunMuhalefet/events{/privacy}',
received_events_url: 'https://api.github.com/users/UzunMuhalefet/received_events',
type: 'User',
user_view_type: 'public',
site_admin: false
},
labels: [
{
id: 4542348869,
node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ',
url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide',
name: 'broken guide',
color: 'eaeaea',
default: false,
description: "There's a problem with the guide"
},
{
id: 7932710318,
node_id: 'LA_kwDOFLVvtM8AAAAB2NONrg',
url: 'https://api.github.com/repos/iptv-org/epg/labels/status:warning',
name: 'status:warning',
color: 'fbca06',
default: false,
description: 'The guide downloads, but contains errors'
}
],
state: 'open',
locked: false,
assignee: null,
assignees: [],
milestone: null,
comments: 0,
created_at: '2024-01-03T20:57:58Z',
updated_at: '2024-12-27T05:32:37Z',
closed_at: null,
author_association: 'NONE',
active_lock_reason: null,
body: '### Site\r\n\r\ndigiturk.com.tr\r\n\r\n### Describe your issue\r\n\r\nThe following channels can be corrected as follows. (I added the TVG-IDs if they exist in https://iptv-org.github.io/)\r\n\r\n```\r\n<channel site="digiturk.com.tr" lang="tr" xmltv_id="24TV.tr" site_id="40">KANAL 24 HD</channel>\r\n<channel site="digiturk.com.tr" lang="tr" xmltv_id="TarihTV.tr" site_id="184">TARIH TV HD</channel>\r\n<channel site="digiturk.com.tr" lang="tr" xmltv_id="SozcuTV.tr" site_id="60">SÖZCÜ TV HD</channel>\r\n```\r\n\r\nLet me clarify the cases:\r\n- SZC changed its name to Sözcü TV\r\n- 24 TV often called as Kanal (Channel) 24\r\n- Tarih TV is straightforward.\r\n',
closed_by: null,
reactions: {
url: 'https://api.github.com/repos/iptv-org/epg/issues/2304/reactions',
total_count: 0,
'+1': 0,
'-1': 0,
laugh: 0,
hooray: 0,
confused: 0,
heart: 0,
rocket: 0,
eyes: 0
},
timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2304/timeline',
performed_via_github_app: null,
state_reason: null
},
{
url: 'https://api.github.com/repos/iptv-org/epg/issues/2303',
repository_url: 'https://api.github.com/repos/iptv-org/epg',
labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2303/labels{/name}',
comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2303/comments',
events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2303/events',
html_url: 'https://github.com/iptv-org/epg/issues/2303',
id: 2064633657,
node_id: 'I_kwDOFLVvtM57D885',
number: 2303,
title: 'dsmart.com.tr Channel Identifications',
user: {
login: 'UzunMuhalefet',
id: 80906858,
node_id: 'MDQ6VXNlcjgwOTA2ODU4',
avatar_url: 'https://avatars.githubusercontent.com/u/80906858?v=4',
gravatar_id: '',
url: 'https://api.github.com/users/UzunMuhalefet',
html_url: 'https://github.com/UzunMuhalefet',
followers_url: 'https://api.github.com/users/UzunMuhalefet/followers',
following_url: 'https://api.github.com/users/UzunMuhalefet/following{/other_user}',
gists_url: 'https://api.github.com/users/UzunMuhalefet/gists{/gist_id}',
starred_url: 'https://api.github.com/users/UzunMuhalefet/starred{/owner}{/repo}',
subscriptions_url: 'https://api.github.com/users/UzunMuhalefet/subscriptions',
organizations_url: 'https://api.github.com/users/UzunMuhalefet/orgs',
repos_url: 'https://api.github.com/users/UzunMuhalefet/repos',
events_url: 'https://api.github.com/users/UzunMuhalefet/events{/privacy}',
received_events_url: 'https://api.github.com/users/UzunMuhalefet/received_events',
type: 'User',
user_view_type: 'public',
site_admin: false
},
labels: [
{
id: 4542348869,
node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ',
url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide',
name: 'broken guide',
color: 'eaeaea',
default: false,
description: "There's a problem with the guide"
},
{
id: 7932710318,
node_id: 'LA_kwDOFLVvtM8AAAAB2NONrg',
url: 'https://api.github.com/repos/iptv-org/epg/labels/status:warning',
name: 'status:warning',
color: 'fbca06',
default: false,
description: 'The guide downloads, but contains errors'
}
],
state: 'open',
locked: false,
assignee: null,
assignees: [],
milestone: null,
comments: 1,
created_at: '2024-01-03T20:53:34Z',
updated_at: '2024-12-27T05:44:16Z',
closed_at: null,
author_association: 'NONE',
active_lock_reason: null,
body: '### Describe your issue\r\n\r\nThe following channels can be corrected as follows. (I added the TVG-IDs if they exist in https://iptv-org.github.io/)\r\n\r\n```\r\n<channel site="dsmart.com.tr" lang="tr" xmltv_id="Number1TV.tr" site_id="102#58d29bb0eefad3db9c60623c">NR1</channel>\r\n<channel site="dsmart.com.tr" lang="tr" xmltv_id="Number1Turk.tr" site_id="104#58d29bb0eefad3db9c606245">NR1 Türk</channel>\r\n<channel site="dsmart.com.tr" lang="tr" xmltv_id="EBATVIlkokul.tr" site_id="123#5e75c6f5cfef0b15938bc9b9">TRT EBA TV İlkokul</channel>\r\n<channel site="dsmart.com.tr" lang="tr" xmltv_id="EBATVOrtaokul.tr" site_id="124#5e75c923cfef0b15938bc9cc">TRT EBA TV Ortaokul</channel>\r\n<channel site="dsmart.com.tr" lang="tr" xmltv_id="EBATVLise.tr" site_id="125#5e75c9d1cfef0b15938bc9d1">TRT EBA TV Lise</channel>\r\n<channel site="dsmart.com.tr" lang="tr" xmltv_id="CiftciTV.tr" site_id="139#59dcaaaccfef0b4d80a47d7e">Çifçi TV</channel>\r\n<channel site="dsmart.com.tr" lang="tr" xmltv_id="On6.tr" site_id="150#59dcbc42cfef0b4d80a49628">Kanal 16</channel>\r\n<channel site="dsmart.com.tr" lang="tr" xmltv_id="FlashTV.tr" site_id="163#6163ee3dcfef0b1593d572b0">Flash Haber</channel>\r\n<channel site="dsmart.com.tr" lang="tr" xmltv_id="KocaeliTV.tr" site_id="168#59dcbe7dcfef0b4d80a4964c">Yeni Kocaeli TV</channel>\r\n<channel site="dsmart.com.tr" lang="tr" xmltv_id="ATV.tr" site_id="198#58d29bb0eefad3db9c606247">ATV Turkiye SD</channel>\r\n<channel site="dsmart.com.tr" lang="tr" xmltv_id="EBATVIlkokul" site_id="207#5e7865eacfef0b15938c1bb0">TRT EBA TV İlkokul SD</channel>\r\n<channel site="dsmart.com.tr" lang="tr" xmltv_id="EBATVOrtaokul" site_id="208#5e78662ecfef0b15938c1c03">TRT EBA TV Ortaokul SD</channel>\r\n<channel site="dsmart.com.tr" lang="tr" xmltv_id="EBATVLise" site_id="209#5e7866dfcfef0b15938c1c1b">TRT EBA TV Lise SD</channel>\r\n<channel site="dsmart.com.tr" lang="tr" xmltv_id="TarihTV.tr" site_id="63#64edfc67cfef0b02d2c038c5">Tarih Tv</channel>\r\n<channel site="dsmart.com.tr" lang="tr" xmltv_id="SozcuTV.tr" site_id="87#63ecd91acfef0b02d2687aed">SZC</channel>\r\n<channel site="dsmart.com.tr" lang="tr" xmltv_id="TRT3.tr" site_id="93#58d29bb0eefad3db9c606231">TRT 3 Spor</channel>\r\n``` \r\n\r\nLet me clarify the cases: \r\n\r\n- NR1 stands for Number One\r\n- Cifci TV - Çiftçi TV - misspelling\r\n- The number 16 is spelled as onaltı (on -> 10, altı->6, on6 -> 16) in Turkish so on6 - Kanal 16\r\n- Flash TV changed its name to Flash Haber TV\r\n- SZC changed its name to Sözcü TV\r\n- TRT 3 is a strange channel that usually streams the same content as TRT Spor but when there is a Turkish parliament event it switches to that event. So, the channel is both called TRT 3 and TRT 3 Spor.\r\n',
closed_by: null,
reactions: {
url: 'https://api.github.com/repos/iptv-org/epg/issues/2303/reactions',
total_count: 0,
'+1': 0,
'-1': 0,
laugh: 0,
hooray: 0,
confused: 0,
heart: 0,
rocket: 0,
eyes: 0
},
timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2303/timeline',
performed_via_github_app: null,
state_reason: null
},
{
url: 'https://api.github.com/repos/iptv-org/epg/issues/2272',
repository_url: 'https://api.github.com/repos/iptv-org/epg',
labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2272/labels{/name}',
comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2272/comments',
events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2272/events',
html_url: 'https://github.com/iptv-org/epg/issues/2272',
id: 2022135766,
node_id: 'I_kwDOFLVvtM54h1fW',
number: 2272,
title: 'Film titles with numbers only in the title (as in "1900" or "1917") don\'t show up',
user: {
login: 'GlamoramaAttack',
id: 116585465,
node_id: 'U_kgDOBvLz-Q',
avatar_url: 'https://avatars.githubusercontent.com/u/116585465?v=4',
gravatar_id: '',
url: 'https://api.github.com/users/GlamoramaAttack',
html_url: 'https://github.com/GlamoramaAttack',
followers_url: 'https://api.github.com/users/GlamoramaAttack/followers',
following_url: 'https://api.github.com/users/GlamoramaAttack/following{/other_user}',
gists_url: 'https://api.github.com/users/GlamoramaAttack/gists{/gist_id}',
starred_url: 'https://api.github.com/users/GlamoramaAttack/starred{/owner}{/repo}',
subscriptions_url: 'https://api.github.com/users/GlamoramaAttack/subscriptions',
organizations_url: 'https://api.github.com/users/GlamoramaAttack/orgs',
repos_url: 'https://api.github.com/users/GlamoramaAttack/repos',
events_url: 'https://api.github.com/users/GlamoramaAttack/events{/privacy}',
received_events_url: 'https://api.github.com/users/GlamoramaAttack/received_events',
type: 'User',
user_view_type: 'public',
site_admin: false
},
labels: [
{
id: 4542348869,
node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ',
url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide',
name: 'broken guide',
color: 'eaeaea',
default: false,
description: "There's a problem with the guide"
},
{
id: 7932710318,
node_id: 'LA_kwDOFLVvtM8AAAAB2NONrg',
url: 'https://api.github.com/repos/iptv-org/epg/labels/status:warning',
name: 'status:warning',
color: 'fbca06',
default: false,
description: 'The guide downloads, but contains errors'
}
],
state: 'open',
locked: false,
assignee: null,
assignees: [],
milestone: null,
comments: 2,
created_at: '2023-12-02T17:29:50Z',
updated_at: '2024-12-27T05:02:05Z',
closed_at: null,
author_association: 'NONE',
active_lock_reason: null,
body: '### Site\r\n\r\ntvpassport.com\r\n\r\n### Describe your issue\r\n\r\nFilm titles with numbers only in the title -as in "1900" or "1917"- don\'t show up at all.\r\n\r\nSorry, I don\'t understand anything about how to write a script or fix it but I see there is notable difference in the **guide.xml** file - the examples are excerpts from tvpassport.com. This isn\'t a new bug I think, it\'s just that I thought for a long time it\'s a Kodi problem before looking into the guide.xml file...\r\n\r\n```\r\nchannel="Showtime2East.us"><title lang="en">The Caine Mutiny Court-Martial</title><desc lang="en">A \r\nchannel="Showtime2East.us"><desc lang="en">Two British soldiers receive seemingly impossible orders \r\nchannel="Showtime2East.us"><title lang="en">There Will Be Blood</title><desc lang="en">Daniel \r\n```\r\nor:\r\n\r\n```\r\nchannel="MGMPlusEast.us"><title lang="en">A Fistful of Dynamite</title><desc lang="en">A thief \r\nchannel="MGMPlusEast.us"><desc lang="en">The son (Robert De Niro) of a landowner and the son \r\nchannel="MGMPlusEast.us"><title lang="en">Indecent Proposal</title><desc lang="en">A Las Vegas \r\n```\r\n\r\nFor some reason "title lang" gets replaced by "desc lang" and the film title is nowhere displayed.\r\n\r\nOn Kodi it looks like this for the films and you can also see it\'s not a problem if the film title includes more than numbers (see "88 Minutes" or "Resistance: 1942"). But titles as "1900", "1917" or "1408" (Horror with John Cusack) appear blank.\r\n\r\n![NoTitleWithNumbers](https://github.com/iptv-org/epg/assets/116585465/155f98f8-8529-4c42-af3c-def1edcf5651)\r\n\r\nI\'m not sure whether the problem also exists with other sources than tvpassport.com because I use only two other (German language) EPG sources that have currently no film titles with numbers only. But I assume it\'s a bug if it\'s not reduced to tvpassport.',
closed_by: null,
reactions: {
url: 'https://api.github.com/repos/iptv-org/epg/issues/2272/reactions',
total_count: 0,
'+1': 0,
'-1': 0,
laugh: 0,
hooray: 0,
confused: 0,
heart: 0,
rocket: 0,
eyes: 0
},
timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2272/timeline',
performed_via_github_app: null,
state_reason: null
},
{
url: 'https://api.github.com/repos/iptv-org/epg/issues/2176',
repository_url: 'https://api.github.com/repos/iptv-org/epg',
labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2176/labels{/name}',
comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2176/comments',
events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2176/events',
html_url: 'https://github.com/iptv-org/epg/issues/2176',
id: 1915947653,
node_id: 'I_kwDOFLVvtM5yMwqF',
number: 2176,
title: 'tvtv',
user: {
login: 'jvdillon',
id: 1137078,
node_id: 'MDQ6VXNlcjExMzcwNzg=',
avatar_url: 'https://avatars.githubusercontent.com/u/1137078?v=4',
gravatar_id: '',
url: 'https://api.github.com/users/jvdillon',
html_url: 'https://github.com/jvdillon',
followers_url: 'https://api.github.com/users/jvdillon/followers',
following_url: 'https://api.github.com/users/jvdillon/following{/other_user}',
gists_url: 'https://api.github.com/users/jvdillon/gists{/gist_id}',
starred_url: 'https://api.github.com/users/jvdillon/starred{/owner}{/repo}',
subscriptions_url: 'https://api.github.com/users/jvdillon/subscriptions',
organizations_url: 'https://api.github.com/users/jvdillon/orgs',
repos_url: 'https://api.github.com/users/jvdillon/repos',
events_url: 'https://api.github.com/users/jvdillon/events{/privacy}',
received_events_url: 'https://api.github.com/users/jvdillon/received_events',
type: 'User',
user_view_type: 'public',
site_admin: false
},
labels: [
{
id: 4542348869,
node_id: 'LA_kwDOFLVvtM8AAAABDr6-RQ',
url: 'https://api.github.com/repos/iptv-org/epg/labels/broken%20guide',
name: 'broken guide',
color: 'eaeaea',
default: false,
description: "There's a problem with the guide"
},
{
id: 7932710318,
node_id: 'LA_kwDOFLVvtM8AAAAB2NONrg',
url: 'https://api.github.com/repos/iptv-org/epg/labels/status:warning',
name: 'status:warning',
color: 'fbca06',
default: false,
description: 'The guide downloads, but contains errors'
}
],
state: 'open',
locked: false,
assignee: null,
assignees: [],
milestone: null,
comments: 6,
created_at: '2023-09-27T16:34:00Z',
updated_at: '2024-12-27T04:55:00Z',
closed_at: null,
author_association: 'NONE',
active_lock_reason: null,
body: '### Site\r\n\r\ntvtv.us\r\n\r\n### Description\r\n\r\nStarts getting error 429 after several 100 scrapes. I tried setting the delay to 1000ms, 1500ms, and 2000ms but keep seeing the issue.\r\n\r\nIt almost appears to happen after a sequence of 0 program scrapes. I wonder if the delay is not happening when nothing is downloaded which causes tvtv.us to throttle which triggers 0 programs downloaded. (Ie a feedback loop)',
closed_by: null,
reactions: {
url: 'https://api.github.com/repos/iptv-org/epg/issues/2176/reactions',
total_count: 0,
'+1': 0,
'-1': 0,
laugh: 0,
hooray: 0,
confused: 0,
heart: 0,
rocket: 0,
eyes: 0
},
timeline_url: 'https://api.github.com/repos/iptv-org/epg/issues/2176/timeline',
performed_via_github_app: null,
state_reason: null
}
]

View file

@ -0,0 +1,36 @@
import { execSync } from 'child_process'
import fs from 'fs-extra'
import path from 'path'
beforeEach(() => {
fs.emptyDirSync('tests/__data__/output')
fs.mkdirSync('tests/__data__/output/.sites')
fs.copyFileSync(
'tests/__data__/input/.sites/config.json',
'tests/__data__/output/.sites/config.json'
)
fs.copyFileSync(
'tests/__data__/input/.sites/template.md',
'tests/__data__/output/.sites/template.md'
)
})
it('can update SITES.md', () => {
const stdout = execSync('DOT_SITES_DIR=tests/__data__/output/.sites npm run sites:update', {
encoding: 'utf8'
})
expect(content('tests/__data__/output/sites.md')).toEqual(
content('tests/__data__/expected/_sites.md')
)
expect(true).toBe(true)
})
function content(filepath: string) {
const data = fs.readFileSync(path.resolve(filepath), {
encoding: 'utf8'
})
return JSON.stringify(data)
}

182
yarn.lock
View file

@ -765,76 +765,84 @@
dependencies: dependencies:
axios "^1.7.9" axios "^1.7.9"
"@octokit/auth-token@^3.0.0": "@octokit/auth-token@^5.0.0":
version "3.0.2" version "5.1.1"
resolved "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.2.tgz" resolved "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-5.1.1.tgz"
integrity sha512-pq7CwIMV1kmzkFTimdwjAINCXKTajZErLB4wMLYapR2nuB/Jpr66+05wOTZMSCBXP6n4DdDWT2W19Bm17vU69Q== integrity sha512-rh3G3wDO8J9wSjfI436JUKzHIxq8NaiL0tVeB2aXmG6p/9859aUOAjA9pmSPNGGZxfwmaJ9ozOJImuNVJdpvbA==
dependencies:
"@octokit/types" "^8.0.0"
"@octokit/core@^4.1.0": "@octokit/core@>=6":
version "4.1.0" version "6.1.2"
resolved "https://registry.npmjs.org/@octokit/core/-/core-4.1.0.tgz" resolved "https://registry.npmjs.org/@octokit/core/-/core-6.1.2.tgz"
integrity sha512-Czz/59VefU+kKDy+ZfDwtOIYIkFjExOKf+HA92aiTZJ6EfWpFzYQWw0l54ji8bVmyhc+mGaLUbSUmXazG7z5OQ== integrity sha512-hEb7Ma4cGJGEUNOAVmyfdB/3WirWMg5hDuNFVejGEDFqupeOysLc2sG6HJxY2etBp5YQu5Wtxwi020jS9xlUwg==
dependencies: dependencies:
"@octokit/auth-token" "^3.0.0" "@octokit/auth-token" "^5.0.0"
"@octokit/graphql" "^5.0.0" "@octokit/graphql" "^8.0.0"
"@octokit/request" "^6.0.0" "@octokit/request" "^9.0.0"
"@octokit/request-error" "^3.0.0" "@octokit/request-error" "^6.0.1"
"@octokit/types" "^8.0.0" "@octokit/types" "^13.0.0"
before-after-hook "^2.2.0" before-after-hook "^3.0.2"
universal-user-agent "^6.0.0" universal-user-agent "^7.0.0"
"@octokit/endpoint@^7.0.0": "@octokit/endpoint@^10.0.0":
version "7.0.3" version "10.1.1"
resolved "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.3.tgz" resolved "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.1.tgz"
integrity sha512-57gRlb28bwTsdNXq+O3JTQ7ERmBTuik9+LelgcLIVfYwf235VHbN9QNo4kXExtp/h8T423cR5iJThKtFYxC7Lw== integrity sha512-JYjh5rMOwXMJyUpj028cu0Gbp7qe/ihxfJMLc8VZBMMqSwLgOxDI1911gV4Enl1QSavAQNJcwmwBF9M0VvLh6Q==
dependencies: dependencies:
"@octokit/types" "^8.0.0" "@octokit/types" "^13.0.0"
is-plain-object "^5.0.0" universal-user-agent "^7.0.2"
universal-user-agent "^6.0.0"
"@octokit/graphql@^5.0.0": "@octokit/graphql@^8.0.0":
version "5.0.4" version "8.1.1"
resolved "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.4.tgz" resolved "https://registry.npmjs.org/@octokit/graphql/-/graphql-8.1.1.tgz"
integrity sha512-amO1M5QUQgYQo09aStR/XO7KAl13xpigcy/kI8/N1PnZYSS69fgte+xA4+c2DISKqUZfsh0wwjc2FaCt99L41A== integrity sha512-ukiRmuHTi6ebQx/HFRCXKbDlOh/7xEV6QUXaE7MJEKGNAncGI/STSbOkl12qVXZrfZdpXctx5O9X1AIaebiDBg==
dependencies: dependencies:
"@octokit/request" "^6.0.0" "@octokit/request" "^9.0.0"
"@octokit/types" "^8.0.0" "@octokit/types" "^13.0.0"
universal-user-agent "^6.0.0" universal-user-agent "^7.0.0"
"@octokit/openapi-types@^14.0.0": "@octokit/openapi-types@^22.2.0":
version "14.0.0" version "22.2.0"
resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-14.0.0.tgz" resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-22.2.0.tgz"
integrity sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw== integrity sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==
"@octokit/request-error@^3.0.0": "@octokit/plugin-paginate-rest@^11.3.6":
version "3.0.2" version "11.3.6"
resolved "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.2.tgz" resolved "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.3.6.tgz"
integrity sha512-WMNOFYrSaX8zXWoJg9u/pKgWPo94JXilMLb2VManNOby9EZxrQaBe/QSC4a1TzpAlpxofg2X/jMnCyZgL6y7eg== integrity sha512-zcvqqf/+TicbTCa/Z+3w4eBJcAxCFymtc0UAIsR3dEVoNilWld4oXdscQ3laXamTszUZdusw97K8+DrbFiOwjw==
dependencies: dependencies:
"@octokit/types" "^8.0.0" "@octokit/types" "^13.6.2"
deprecation "^2.0.0"
once "^1.4.0"
"@octokit/request@^6.0.0": "@octokit/plugin-rest-endpoint-methods@^13.2.6":
version "6.2.2" version "13.2.6"
resolved "https://registry.npmjs.org/@octokit/request/-/request-6.2.2.tgz" resolved "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-13.2.6.tgz"
integrity sha512-6VDqgj0HMc2FUX2awIs+sM6OwLgwHvAi4KCK3mT2H2IKRt6oH9d0fej5LluF5mck1lRR/rFWN0YIDSYXYSylbw== integrity sha512-wMsdyHMjSfKjGINkdGKki06VEkgdEldIGstIEyGX0wbYHGByOwN/KiM+hAAlUwAtPkP3gvXtVQA9L3ITdV2tVw==
dependencies: dependencies:
"@octokit/endpoint" "^7.0.0" "@octokit/types" "^13.6.1"
"@octokit/request-error" "^3.0.0"
"@octokit/types" "^8.0.0"
is-plain-object "^5.0.0"
node-fetch "^2.6.7"
universal-user-agent "^6.0.0"
"@octokit/types@^8.0.0": "@octokit/request-error@^6.0.1":
version "8.0.0" version "6.1.6"
resolved "https://registry.npmjs.org/@octokit/types/-/types-8.0.0.tgz" resolved "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.6.tgz"
integrity sha512-65/TPpOJP1i3K4lBJMnWqPUJ6zuOtzhtagDvydAWbEXpbFYA0oMKKyLb95NFZZP0lSh/4b6K+DQlzvYQJQQePg== integrity sha512-pqnVKYo/at0NuOjinrgcQYpEbv4snvP3bKMRqHaD9kIsk9u1LCpb2smHZi8/qJfgeNqLo5hNW4Z7FezNdEo0xg==
dependencies: dependencies:
"@octokit/openapi-types" "^14.0.0" "@octokit/types" "^13.6.2"
"@octokit/request@^9.0.0":
version "9.1.4"
resolved "https://registry.npmjs.org/@octokit/request/-/request-9.1.4.tgz"
integrity sha512-tMbOwGm6wDII6vygP3wUVqFTw3Aoo0FnVQyhihh8vVq12uO3P+vQZeo2CKMpWtPSogpACD0yyZAlVlQnjW71DA==
dependencies:
"@octokit/endpoint" "^10.0.0"
"@octokit/request-error" "^6.0.1"
"@octokit/types" "^13.6.2"
fast-content-type-parse "^2.0.0"
universal-user-agent "^7.0.2"
"@octokit/types@^13.0.0", "@octokit/types@^13.6.1", "@octokit/types@^13.6.2":
version "13.6.2"
resolved "https://registry.npmjs.org/@octokit/types/-/types-13.6.2.tgz"
integrity sha512-WpbZfZUcZU77DrSW4wbsSgTPfKcp286q3ItaIgvSbBpZJlu6mnYXAkjZz6LVZPXkEvLIM8McanyZejKTYUHipA==
dependencies:
"@octokit/openapi-types" "^22.2.0"
"@pkgjs/parseargs@^0.11.0": "@pkgjs/parseargs@^0.11.0":
version "0.11.0" version "0.11.0"
@ -1440,10 +1448,10 @@ base64-js@^1.3.1:
resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz"
integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
before-after-hook@^2.2.0: before-after-hook@^3.0.2:
version "2.2.3" version "3.0.2"
resolved "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz" resolved "https://registry.npmjs.org/before-after-hook/-/before-after-hook-3.0.2.tgz"
integrity sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ== integrity sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==
bindings@~1.5.0: bindings@~1.5.0:
version "1.5.0" version "1.5.0"
@ -2060,11 +2068,6 @@ delayed-stream@~1.0.0:
resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz"
integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
deprecation@^2.0.0:
version "2.3.1"
resolved "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz"
integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==
detect-libc@^2.0.0: detect-libc@^2.0.0:
version "2.0.3" version "2.0.3"
resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz" resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz"
@ -2145,7 +2148,7 @@ enabled@2.0.x:
resolved "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz" resolved "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz"
integrity sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ== integrity sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==
encoding@^0.1.0, encoding@^0.1.13: encoding@^0.1.13:
version "0.1.13" version "0.1.13"
resolved "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz" resolved "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz"
integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==
@ -2420,6 +2423,11 @@ external-editor@^3.0.3:
iconv-lite "^0.4.24" iconv-lite "^0.4.24"
tmp "^0.0.33" tmp "^0.0.33"
fast-content-type-parse@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-2.0.0.tgz"
integrity sha512-fCqg/6Sps8tqk8p+kqyKqYfOF0VjPNYrqpLiqNl0RBKmD80B080AJWVV6EkSkscjToNExcXg1+Mfzftrx6+iSA==
fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
version "3.1.3" version "3.1.3"
resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz"
@ -2999,11 +3007,6 @@ is-number@^7.0.0:
resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz"
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
is-plain-object@^5.0.0:
version "5.0.0"
resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz"
integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==
is-port-reachable@4.0.0: is-port-reachable@4.0.0:
version "4.0.0" version "4.0.0"
resolved "https://registry.npmjs.org/is-port-reachable/-/is-port-reachable-4.0.0.tgz" resolved "https://registry.npmjs.org/is-port-reachable/-/is-port-reachable-4.0.0.tgz"
@ -3748,7 +3751,7 @@ makeerror@1.0.12:
markdown-include@^0.4.3: markdown-include@^0.4.3:
version "0.4.3" version "0.4.3"
resolved "https://registry.npmjs.org/markdown-include/-/markdown-include-0.4.3.tgz" resolved "https://registry.npmjs.org/markdown-include/-/markdown-include-0.4.3.tgz"
integrity sha1-usZVVALG2pOg9SlSIl37mmzMcxs= integrity sha512-kw1f+iJ8jAH9SYljv2RXmhRQFr2oMPPVdyoKaZIH+uA1rrQqDjLk6EQZW65oVz1Y+BkC3V//9lEvKKjRZNb1Jg==
dependencies: dependencies:
q "^1.2.0" q "^1.2.0"
@ -3988,13 +3991,6 @@ node-ensure@^0.0.0:
resolved "https://registry.npmjs.org/node-ensure/-/node-ensure-0.0.0.tgz" resolved "https://registry.npmjs.org/node-ensure/-/node-ensure-0.0.0.tgz"
integrity sha1-7K52QVDemYYexcgQ/V0Jaxg5Mqc= integrity sha1-7K52QVDemYYexcgQ/V0Jaxg5Mqc=
node-fetch@^2.6.7:
version "2.6.7"
resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz"
integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==
dependencies:
whatwg-url "^5.0.0"
node-gyp@^10.2.0: node-gyp@^10.2.0:
version "10.3.1" version "10.3.1"
resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-10.3.1.tgz" resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-10.3.1.tgz"
@ -5004,11 +5000,6 @@ to-regex-range@^5.0.1:
dependencies: dependencies:
tldts "^6.1.32" tldts "^6.1.32"
tr46@~0.0.3:
version "0.0.3"
resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz"
integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==
transliteration@^2.2.0: transliteration@^2.2.0:
version "2.2.0" version "2.2.0"
resolved "https://registry.npmjs.org/transliteration/-/transliteration-2.2.0.tgz" resolved "https://registry.npmjs.org/transliteration/-/transliteration-2.2.0.tgz"
@ -5122,10 +5113,10 @@ unique-slug@^4.0.0:
dependencies: dependencies:
imurmurhash "^0.1.4" imurmurhash "^0.1.4"
universal-user-agent@^6.0.0: universal-user-agent@^7.0.0, universal-user-agent@^7.0.2:
version "6.0.0" version "7.0.2"
resolved "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz" resolved "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.2.tgz"
integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w== integrity sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==
universalify@^2.0.0: universalify@^2.0.0:
version "2.0.0" version "2.0.0"
@ -5205,19 +5196,6 @@ wcwidth@^1.0.1:
dependencies: dependencies:
defaults "^1.0.3" defaults "^1.0.3"
webidl-conversions@^3.0.0:
version "3.0.1"
resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz"
integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==
whatwg-url@^5.0.0:
version "5.0.0"
resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz"
integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==
dependencies:
tr46 "~0.0.3"
webidl-conversions "^3.0.0"
which@^2.0.1: which@^2.0.1:
version "2.0.2" version "2.0.2"
resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz"