diff --git a/.github/workflows/update.yml b/.github/workflows/update.yml index 6799ad2a..d90907d9 100644 --- a/.github/workflows/update.yml +++ b/.github/workflows/update.yml @@ -25,13 +25,24 @@ jobs: - uses: actions/setup-node@v3 if: ${{ !env.ACT }} with: - node-version: 18 + node-version: 22 cache: 'npm' - name: install dependencies run: npm install - name: check *.channels.xml run: | 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 run: npm run api:generate - run: git status diff --git a/.sites/_table.md b/.sites/_table.md new file mode 100644 index 00000000..9eac21dc --- /dev/null +++ b/.sites/_table.md @@ -0,0 +1,207 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SiteStatusNotes
9tv.co.il🟒
abc.net.au🟒
allente.dk🟒
allente.fi🟒
allente.no🟒
allente.se🟒
andorradifusio.ad🟒
anteltv.com.uy🟒
arianaafgtv.com🟒
arianatelevision.com🟒
arirang.com🟒
artonline.tv🟒
awilime.com🟒
bein.com🟒
beinsports.com🟒
berrymedia.co.kr🟒
cablego.com.pe🟒
cableplus.com.uy🟒
canalplus-haiti.comπŸ”΄https://github.com/iptv-org/epg/issues/2237
canalplus.com🟒
cgates.lt🟒
chada.ma🟒
chaines-tv.orange.fr🟑https://github.com/iptv-org/epg/issues/2395
clickthecity.com🟒
comteco.com.boπŸ”΄https://github.com/iptv-org/epg/issues/2239
content.astro.com.my🟒
cosmote.gr🟒
cubmu.com🟒
dens.tv🟒
digiturk.com.trπŸ”΄https://github.com/iptv-org/epg/issues/2304, https://github.com/iptv-org/epg/issues/2547
directv.comπŸ”΄https://github.com/iptv-org/epg/issues/2284
directv.com.arπŸ”΄https://github.com/iptv-org/epg/issues/2339
directv.com.uy🟒
dishtv.inπŸ”΄https://github.com/iptv-org/epg/issues/2445
dsmart.com.tr🟒
dstv.com🟒
elcinema.comπŸ”΄https://github.com/iptv-org/epg/issues/2541
ena.skylifetv.co.kr🟒
energeek.cl🟒
entertainment.ie🟒
firstmedia.com🟒
flixed.io🟒
foxsports.com.au🟒
foxtel.com.au🟒
frikanalen.no🟒
gatotv.com🟒
getafteritmedia.com🟒
guida.tv🟒
guidatv.sky.it🟒
hd-plus.deπŸ”΄https://github.com/iptv-org/epg/issues/2173
horizon.tv🟒
hoy.tv🟒
i.mjh.nz🟒
i24news.tv🟒
iltalehti.fi🟑https://github.com/iptv-org/epg/issues/2396
indihometv.com🟒
ionplustv.com🟒
ipko.tv🟒
kan.org.ilπŸ”΄https://github.com/iptv-org/epg/issues/2273
knr.gl🟒
kplus.vnπŸ”΄https://github.com/iptv-org/epg/issues/2240
kvf.fo🟒
m.tv.sms.czπŸ”΄https://github.com/iptv-org/epg/issues/2241
m.tving.com🟒
magticom.ge🟒
mako.co.il🟒
maxtv.hrvatskitelekom.hrπŸ”΄https://github.com/iptv-org/epg/issues/2509
maxtvgo.mk🟒
mediagenie.co.kr🟒
mediaklikk.hu🟒
mediasetinfinity.mediaset.it🟒
melita.com🟒
meo.pt🟑https://github.com/iptv-org/epg/issues/2446
meuguia.tv🟒
mewatch.sg🟒
mi.tv🟒
mncvision.id🟒
moji.id🟒
mon-programme-tv.be🟒
movistarplus.esπŸ”΄https://github.com/iptv-org/epg/issues/2498
mtel.ba🟒
mts.rs🟒
mujtvprogram.cz🟒
musor.tv🟒
mysky.com.ph🟒
mytelly.co.uk🟒
mytvsuper.com🟒
neo.io🟒
nhkworldpremium.com🟒
nhl.com🟒
nostv.pt🟒
novacyprus.com🟒
novasports.gr🟒
nowplayer.now.com🟒
nuevosiglo.com.uy🟒
nzxmltv.com🟒
ontvtonight.com🟒
osn.com🟒
pbsguam.org🟒
pickx.be🟒
player.ee.co.uk🟒
playtv.unifi.com.my🟒
plex.tv🟒
programacion-tv.elpais.com🟒
programacion.tcc.com.uy🟒
programetv.ro🟒
programme-tv.net🟒
programme-tv.vini.pf🟒
programme.tvb.com🟒
programtv.onet.pl🟒
raiplay.it🟒
reportv.com.ar🟒
rev.bsπŸ”΄https://github.com/iptv-org/epg/issues/2255
rotana.net🟒
rtb.gov.bnπŸ”΄https://github.com/iptv-org/epg/issues/2257
rthk.hk🟒
rtmklik.rtm.gov.my🟒
rtp.pt🟒
ruv.is🟒
s.mxtv.jp🟒
sat.tv🟒
shahid.mbc.net🟒
siba.com.co🟒
singtel.com🟒
sjonvarp.is🟒
sky.co.nz🟒
sky.com🟑https://github.com/iptv-org/epg/issues/2516, https://github.com/iptv-org/epg/issues/2501
sky.de🟒
skylife.co.kr🟒
skyperfectv.co.jp🟒
snrt.ma🟒
sporttv.pt🟒
starhubtvplus.com🟒
startimestv.com🟒
streamingtvguides.com🟒
superguidatv.it🟒
taiwanplus.com🟒
tapdmv.com🟒
telenet.tv🟒
teliatv.ee🟒
telkussa.fi🟒
telsu.fi🟒
tivu.tv🟒
toonamiaftermath.com🟒
turksatkablo.com.tr🟒
tv-programme.telecablesat.fr🟒
tv.blue.ch🟒
tv.cctv.com🟒
tv.dir.bg🟒
tv.lv🟒
tv.magenta.at🟒
tv.mail.ru🟒
tv.movistar.com.pe🟒
tv.nu🟒
tv.post.lu🟒
tv.trueid.net🟒
tv.yandex.ru🟒
tv.yettel.huπŸ”΄https://github.com/iptv-org/epg/issues/2263
tv24.co.uk🟒
tv24.se🟒
tv2go.t-2.net🟒
tva.tvπŸ”΄https://github.com/iptv-org/epg/issues/2264
tvarenasport.com🟒
tvarenasport.hr🟒
tvcesoir.fr🟒
tvcubana.icrt.cu🟒
tvgids.nl🟑https://github.com/iptv-org/epg/issues/2400
tvguide.comπŸ”΄https://github.com/iptv-org/epg/issues/2542
tvguide.myjcom.jp🟒
tvhebdo.com🟒
tvheute.at🟒
tvim.tv🟒
tvireland.ie🟒
tvmi.mt🟒
tvmusor.hu🟒
tvpassport.com🟑https://github.com/iptv-org/epg/issues/2272
tvplus.com.tr🟒
tvprofil.com🟑https://github.com/iptv-org/epg/issues/2399
tvtv.us🟑https://github.com/iptv-org/epg/issues/2176
v3.myafn.dodmedia.osd.mil🟒
vidio.com🟒
virginmediatelevision.ie🟒
virgintvgo.virginmedia.com🟒
visionplus.id🟒
vivacom.bgπŸ”΄https://github.com/iptv-org/epg/issues/2270
vtm.be🟒
walesi.com.fj🟒
watch.sportsnet.ca🟒
watchyour.tv🟒
wavve.com🟒
web.magentatv.de🟒
webtv.delta.nl🟒
winplay.co🟒
worldfishingnetwork.com🟒
www3.nhk.or.jp🟒
xumo.tv🟒
zap.co.ao🟒
ziggogo.tv🟒
znbc.co.zm🟒
zuragt.mn🟒
\ No newline at end of file diff --git a/.sites/config.json b/.sites/config.json new file mode 100644 index 00000000..d77113c1 --- /dev/null +++ b/.sites/config.json @@ -0,0 +1,4 @@ +{ + "build" : "SITES.md", + "files" : ["./.sites/template.md"] +} \ No newline at end of file diff --git a/.sites/template.md b/.sites/template.md new file mode 100644 index 00000000..aa2746bf --- /dev/null +++ b/.sites/template.md @@ -0,0 +1,4 @@ +# Sites + + +#include "./.sites/_table.md" diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e4210a1e..35ba2356 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -154,6 +154,7 @@ To run scripts use the `npm run ` command. - `channels:parse`: generates a list of channels based on the site configuration. - `channels:editor`: utility for quick channels markup. - `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. - `serve`: starts the [web server](https://github.com/vercel/serve). - `lint`: сhecks the scripts for syntax errors. diff --git a/README.md b/README.md index b796e47a..eb966322 100644 --- a/README.md +++ b/README.md @@ -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. diff --git a/package-lock.json b/package-lock.json index b4a5df7d..e3c34e6a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,8 @@ "@freearhey/core": "^0.3.1", "@freearhey/search-js": "^0.1.1", "@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/fs-extra": "^11.0.2", "@types/inquirer": "^9.0.3", @@ -1895,99 +1896,126 @@ } }, "node_modules/@octokit/auth-token": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.2.tgz", - "integrity": "sha512-pq7CwIMV1kmzkFTimdwjAINCXKTajZErLB4wMLYapR2nuB/Jpr66+05wOTZMSCBXP6n4DdDWT2W19Bm17vU69Q==", - "dependencies": { - "@octokit/types": "^8.0.0" - }, + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-5.1.1.tgz", + "integrity": "sha512-rh3G3wDO8J9wSjfI436JUKzHIxq8NaiL0tVeB2aXmG6p/9859aUOAjA9pmSPNGGZxfwmaJ9ozOJImuNVJdpvbA==", + "peer": true, "engines": { - "node": ">= 14" + "node": ">= 18" } }, "node_modules/@octokit/core": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.1.0.tgz", - "integrity": "sha512-Czz/59VefU+kKDy+ZfDwtOIYIkFjExOKf+HA92aiTZJ6EfWpFzYQWw0l54ji8bVmyhc+mGaLUbSUmXazG7z5OQ==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-6.1.2.tgz", + "integrity": "sha512-hEb7Ma4cGJGEUNOAVmyfdB/3WirWMg5hDuNFVejGEDFqupeOysLc2sG6HJxY2etBp5YQu5Wtxwi020jS9xlUwg==", + "peer": true, "dependencies": { - "@octokit/auth-token": "^3.0.0", - "@octokit/graphql": "^5.0.0", - "@octokit/request": "^6.0.0", - "@octokit/request-error": "^3.0.0", - "@octokit/types": "^8.0.0", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" + "@octokit/auth-token": "^5.0.0", + "@octokit/graphql": "^8.0.0", + "@octokit/request": "^9.0.0", + "@octokit/request-error": "^6.0.1", + "@octokit/types": "^13.0.0", + "before-after-hook": "^3.0.2", + "universal-user-agent": "^7.0.0" }, "engines": { - "node": ">= 14" + "node": ">= 18" } }, "node_modules/@octokit/endpoint": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.3.tgz", - "integrity": "sha512-57gRlb28bwTsdNXq+O3JTQ7ERmBTuik9+LelgcLIVfYwf235VHbN9QNo4kXExtp/h8T423cR5iJThKtFYxC7Lw==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.1.tgz", + "integrity": "sha512-JYjh5rMOwXMJyUpj028cu0Gbp7qe/ihxfJMLc8VZBMMqSwLgOxDI1911gV4Enl1QSavAQNJcwmwBF9M0VvLh6Q==", + "peer": true, "dependencies": { - "@octokit/types": "^8.0.0", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" + "@octokit/types": "^13.0.0", + "universal-user-agent": "^7.0.2" }, "engines": { - "node": ">= 14" + "node": ">= 18" } }, "node_modules/@octokit/graphql": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.4.tgz", - "integrity": "sha512-amO1M5QUQgYQo09aStR/XO7KAl13xpigcy/kI8/N1PnZYSS69fgte+xA4+c2DISKqUZfsh0wwjc2FaCt99L41A==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-8.1.1.tgz", + "integrity": "sha512-ukiRmuHTi6ebQx/HFRCXKbDlOh/7xEV6QUXaE7MJEKGNAncGI/STSbOkl12qVXZrfZdpXctx5O9X1AIaebiDBg==", + "peer": true, "dependencies": { - "@octokit/request": "^6.0.0", - "@octokit/types": "^8.0.0", - "universal-user-agent": "^6.0.0" + "@octokit/request": "^9.0.0", + "@octokit/types": "^13.0.0", + "universal-user-agent": "^7.0.0" }, "engines": { - "node": ">= 14" + "node": ">= 18" } }, "node_modules/@octokit/openapi-types": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-14.0.0.tgz", - "integrity": "sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw==" + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-22.2.0.tgz", + "integrity": "sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==" }, - "node_modules/@octokit/request": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.2.tgz", - "integrity": "sha512-6VDqgj0HMc2FUX2awIs+sM6OwLgwHvAi4KCK3mT2H2IKRt6oH9d0fej5LluF5mck1lRR/rFWN0YIDSYXYSylbw==", + "node_modules/@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==", "dependencies": { - "@octokit/endpoint": "^7.0.0", - "@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": "^13.6.2" }, "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": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.2.tgz", - "integrity": "sha512-WMNOFYrSaX8zXWoJg9u/pKgWPo94JXilMLb2VManNOby9EZxrQaBe/QSC4a1TzpAlpxofg2X/jMnCyZgL6y7eg==", + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.6.tgz", + "integrity": "sha512-pqnVKYo/at0NuOjinrgcQYpEbv4snvP3bKMRqHaD9kIsk9u1LCpb2smHZi8/qJfgeNqLo5hNW4Z7FezNdEo0xg==", + "peer": true, "dependencies": { - "@octokit/types": "^8.0.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" + "@octokit/types": "^13.6.2" }, "engines": { - "node": ">= 14" + "node": ">= 18" } }, "node_modules/@octokit/types": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-8.0.0.tgz", - "integrity": "sha512-65/TPpOJP1i3K4lBJMnWqPUJ6zuOtzhtagDvydAWbEXpbFYA0oMKKyLb95NFZZP0lSh/4b6K+DQlzvYQJQQePg==", + "version": "13.6.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.6.2.tgz", + "integrity": "sha512-WpbZfZUcZU77DrSW4wbsSgTPfKcp286q3ItaIgvSbBpZJlu6mnYXAkjZz6LVZPXkEvLIM8McanyZejKTYUHipA==", "dependencies": { - "@octokit/openapi-types": "^14.0.0" + "@octokit/openapi-types": "^22.2.0" } }, "node_modules/@pkgjs/parseargs": { @@ -2848,9 +2876,10 @@ ] }, "node_modules/before-after-hook": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", - "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==" + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-3.0.2.tgz", + "integrity": "sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==", + "peer": true }, "node_modules/bindings": { "version": "1.5.0", @@ -3873,11 +3902,6 @@ "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": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", @@ -4485,6 +4509,12 @@ "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": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -5275,14 +5305,6 @@ "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": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-port-reachable/-/is-port-reachable-4.0.0.tgz", @@ -6376,7 +6398,7 @@ "node_modules/markdown-include": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/markdown-include/-/markdown-include-0.4.3.tgz", - "integrity": "sha1-usZVVALG2pOg9SlSIl37mmzMcxs=", + "integrity": "sha512-kw1f+iJ8jAH9SYljv2RXmhRQFr2oMPPVdyoKaZIH+uA1rrQqDjLk6EQZW65oVz1Y+BkC3V//9lEvKKjRZNb1Jg==", "dependencies": { "q": "^1.2.0" }, @@ -6722,44 +6744,6 @@ "resolved": "https://registry.npmjs.org/node-ensure/-/node-ensure-0.0.0.tgz", "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": { "version": "10.3.1", "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.3.1.tgz", @@ -8757,9 +8741,10 @@ } }, "node_modules/universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==" + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.2.tgz", + "integrity": "sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==", + "peer": true }, "node_modules/universalify": { "version": "2.0.0", @@ -10359,81 +10344,96 @@ } }, "@octokit/auth-token": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.2.tgz", - "integrity": "sha512-pq7CwIMV1kmzkFTimdwjAINCXKTajZErLB4wMLYapR2nuB/Jpr66+05wOTZMSCBXP6n4DdDWT2W19Bm17vU69Q==", - "requires": { - "@octokit/types": "^8.0.0" - } + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-5.1.1.tgz", + "integrity": "sha512-rh3G3wDO8J9wSjfI436JUKzHIxq8NaiL0tVeB2aXmG6p/9859aUOAjA9pmSPNGGZxfwmaJ9ozOJImuNVJdpvbA==", + "peer": true }, "@octokit/core": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.1.0.tgz", - "integrity": "sha512-Czz/59VefU+kKDy+ZfDwtOIYIkFjExOKf+HA92aiTZJ6EfWpFzYQWw0l54ji8bVmyhc+mGaLUbSUmXazG7z5OQ==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-6.1.2.tgz", + "integrity": "sha512-hEb7Ma4cGJGEUNOAVmyfdB/3WirWMg5hDuNFVejGEDFqupeOysLc2sG6HJxY2etBp5YQu5Wtxwi020jS9xlUwg==", + "peer": true, "requires": { - "@octokit/auth-token": "^3.0.0", - "@octokit/graphql": "^5.0.0", - "@octokit/request": "^6.0.0", - "@octokit/request-error": "^3.0.0", - "@octokit/types": "^8.0.0", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" + "@octokit/auth-token": "^5.0.0", + "@octokit/graphql": "^8.0.0", + "@octokit/request": "^9.0.0", + "@octokit/request-error": "^6.0.1", + "@octokit/types": "^13.0.0", + "before-after-hook": "^3.0.2", + "universal-user-agent": "^7.0.0" } }, "@octokit/endpoint": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.3.tgz", - "integrity": "sha512-57gRlb28bwTsdNXq+O3JTQ7ERmBTuik9+LelgcLIVfYwf235VHbN9QNo4kXExtp/h8T423cR5iJThKtFYxC7Lw==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.1.tgz", + "integrity": "sha512-JYjh5rMOwXMJyUpj028cu0Gbp7qe/ihxfJMLc8VZBMMqSwLgOxDI1911gV4Enl1QSavAQNJcwmwBF9M0VvLh6Q==", + "peer": true, "requires": { - "@octokit/types": "^8.0.0", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" + "@octokit/types": "^13.0.0", + "universal-user-agent": "^7.0.2" } }, "@octokit/graphql": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.4.tgz", - "integrity": "sha512-amO1M5QUQgYQo09aStR/XO7KAl13xpigcy/kI8/N1PnZYSS69fgte+xA4+c2DISKqUZfsh0wwjc2FaCt99L41A==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-8.1.1.tgz", + "integrity": "sha512-ukiRmuHTi6ebQx/HFRCXKbDlOh/7xEV6QUXaE7MJEKGNAncGI/STSbOkl12qVXZrfZdpXctx5O9X1AIaebiDBg==", + "peer": true, "requires": { - "@octokit/request": "^6.0.0", - "@octokit/types": "^8.0.0", - "universal-user-agent": "^6.0.0" + "@octokit/request": "^9.0.0", + "@octokit/types": "^13.0.0", + "universal-user-agent": "^7.0.0" } }, "@octokit/openapi-types": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-14.0.0.tgz", - "integrity": "sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw==" + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-22.2.0.tgz", + "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": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.2.tgz", - "integrity": "sha512-6VDqgj0HMc2FUX2awIs+sM6OwLgwHvAi4KCK3mT2H2IKRt6oH9d0fej5LluF5mck1lRR/rFWN0YIDSYXYSylbw==", + "version": "9.1.4", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.1.4.tgz", + "integrity": "sha512-tMbOwGm6wDII6vygP3wUVqFTw3Aoo0FnVQyhihh8vVq12uO3P+vQZeo2CKMpWtPSogpACD0yyZAlVlQnjW71DA==", + "peer": true, "requires": { - "@octokit/endpoint": "^7.0.0", - "@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/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/request-error": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.2.tgz", - "integrity": "sha512-WMNOFYrSaX8zXWoJg9u/pKgWPo94JXilMLb2VManNOby9EZxrQaBe/QSC4a1TzpAlpxofg2X/jMnCyZgL6y7eg==", + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.6.tgz", + "integrity": "sha512-pqnVKYo/at0NuOjinrgcQYpEbv4snvP3bKMRqHaD9kIsk9u1LCpb2smHZi8/qJfgeNqLo5hNW4Z7FezNdEo0xg==", + "peer": true, "requires": { - "@octokit/types": "^8.0.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" + "@octokit/types": "^13.6.2" } }, "@octokit/types": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-8.0.0.tgz", - "integrity": "sha512-65/TPpOJP1i3K4lBJMnWqPUJ6zuOtzhtagDvydAWbEXpbFYA0oMKKyLb95NFZZP0lSh/4b6K+DQlzvYQJQQePg==", + "version": "13.6.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.6.2.tgz", + "integrity": "sha512-WpbZfZUcZU77DrSW4wbsSgTPfKcp286q3ItaIgvSbBpZJlu6mnYXAkjZz6LVZPXkEvLIM8McanyZejKTYUHipA==", "requires": { - "@octokit/openapi-types": "^14.0.0" + "@octokit/openapi-types": "^22.2.0" } }, "@pkgjs/parseargs": { @@ -11082,9 +11082,10 @@ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, "before-after-hook": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", - "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==" + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-3.0.2.tgz", + "integrity": "sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==", + "peer": true }, "bindings": { "version": "1.5.0", @@ -11808,11 +11809,6 @@ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "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": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", @@ -12242,6 +12238,12 @@ "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": { "version": "3.1.3", "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", "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": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-port-reachable/-/is-port-reachable-4.0.0.tgz", @@ -13634,7 +13631,7 @@ "markdown-include": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/markdown-include/-/markdown-include-0.4.3.tgz", - "integrity": "sha1-usZVVALG2pOg9SlSIl37mmzMcxs=", + "integrity": "sha512-kw1f+iJ8jAH9SYljv2RXmhRQFr2oMPPVdyoKaZIH+uA1rrQqDjLk6EQZW65oVz1Y+BkC3V//9lEvKKjRZNb1Jg==", "requires": { "q": "^1.2.0" } @@ -13908,35 +13905,6 @@ "resolved": "https://registry.npmjs.org/node-ensure/-/node-ensure-0.0.0.tgz", "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": { "version": "10.3.1", "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.3.1.tgz", @@ -15342,9 +15310,10 @@ } }, "universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==" + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.2.tgz", + "integrity": "sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==", + "peer": true }, "universalify": { "version": "2.0.0", diff --git a/package.json b/package.json index eaa968c2..36e3bc4d 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "channels:parse": "npx tsx scripts/commands/channels/parse.ts", "channels:editor": "npx tsx scripts/commands/channels/editor.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", "serve": "npx serve", "lint": "npx eslint \"{scripts,tests}/**/*.{ts,js}\"", @@ -31,7 +32,8 @@ "@freearhey/core": "^0.3.1", "@freearhey/search-js": "^0.1.1", "@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/fs-extra": "^11.0.2", "@types/inquirer": "^9.0.3", diff --git a/scripts/commands/sites/update.ts b/scripts/commands/sites/update.ts new file mode 100644 index 00000000..d1f7e8a4 --- /dev/null +++ b/scripts/commands/sites/update.ts @@ -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([ + `${site.domain}`, + 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) +} diff --git a/scripts/constants.ts b/scripts/constants.ts index 7498bf81..e15b8b45 100644 --- a/scripts/constants.ts +++ b/scripts/constants.ts @@ -2,3 +2,7 @@ export const SITES_DIR = process.env.SITES_DIR || './sites' export const GUIDES_DIR = process.env.GUIDES_DIR || './guides' export const DATA_DIR = process.env.DATA_DIR || './temp/data' 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' diff --git a/scripts/core/htmlTable.ts b/scripts/core/htmlTable.ts new file mode 100644 index 00000000..1caa85fa --- /dev/null +++ b/scripts/core/htmlTable.ts @@ -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 = '\n' + + output += ' \n ' + for (const column of this.columns) { + output += `` + } + output += '\n \n' + + output += ' \n' + for (const item of this.data) { + output += ' ' + 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 += `${item[prop]}` + i++ + } + output += '\n' + } + output += ' \n' + + output += '
${column.name}
' + + return output + } +} diff --git a/scripts/core/index.ts b/scripts/core/index.ts index fca249a5..14a0ffa0 100644 --- a/scripts/core/index.ts +++ b/scripts/core/index.ts @@ -10,3 +10,7 @@ export * from './guide' export * from './apiChannel' export * from './apiClient' export * from './queueCreator' +export * from './issueLoader' +export * from './issueParser' +export * from './htmlTable' +export * from './markdown' diff --git a/scripts/core/issueLoader.ts b/scripts/core/issueLoader.ts new file mode 100644 index 00000000..28697e58 --- /dev/null +++ b/scripts/core/issueLoader.ts @@ -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) + } +} diff --git a/scripts/core/issueParser.ts b/scripts/core/issueParser.ts new file mode 100644 index 00000000..2fe2ddd8 --- /dev/null +++ b/scripts/core/issueParser.ts @@ -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 }) + } +} diff --git a/scripts/core/markdown.ts b/scripts/core/markdown.ts new file mode 100644 index 00000000..b43b5608 --- /dev/null +++ b/scripts/core/markdown.ts @@ -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) + } +} diff --git a/scripts/models/index.ts b/scripts/models/index.ts new file mode 100644 index 00000000..1065611d --- /dev/null +++ b/scripts/models/index.ts @@ -0,0 +1,2 @@ +export * from './issue' +export * from './site' diff --git a/scripts/models/issue.ts b/scripts/models/issue.ts new file mode 100644 index 00000000..7eb241e5 --- /dev/null +++ b/scripts/models/issue.ts @@ -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}` + } +} diff --git a/scripts/models/site.ts b/scripts/models/site.ts new file mode 100644 index 00000000..1e7dcadd --- /dev/null +++ b/scripts/models/site.ts @@ -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()) + } +} diff --git a/tests/__data__/expected/_sites.md b/tests/__data__/expected/_sites.md new file mode 100644 index 00000000..ede49778 --- /dev/null +++ b/tests/__data__/expected/_sites.md @@ -0,0 +1,210 @@ +# Sites + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SiteStatusNotes
9tv.co.il🟒
abc.net.au🟒
allente.dk🟒
allente.fi🟒
allente.no🟒
allente.se🟒
andorradifusio.ad🟒
anteltv.com.uy🟒
arianaafgtv.com🟒
arianatelevision.com🟒
arirang.com🟒
artonline.tv🟒
awilime.com🟒
bein.com🟒
beinsports.com🟒
berrymedia.co.kr🟒
cablego.com.pe🟒
cableplus.com.uy🟒
canalplus-haiti.comπŸ”΄https://github.com/iptv-org/epg/issues/2237
canalplus.com🟒
cgates.lt🟒
chada.ma🟒
chaines-tv.orange.fr🟑https://github.com/iptv-org/epg/issues/2395
clickthecity.com🟒
comteco.com.boπŸ”΄https://github.com/iptv-org/epg/issues/2239
content.astro.com.my🟒
cosmote.gr🟒
cubmu.com🟒
dens.tv🟒
digiturk.com.trπŸ”΄https://github.com/iptv-org/epg/issues/2304, https://github.com/iptv-org/epg/issues/2547
directv.comπŸ”΄https://github.com/iptv-org/epg/issues/2284
directv.com.arπŸ”΄https://github.com/iptv-org/epg/issues/2339
directv.com.uy🟒
dishtv.inπŸ”΄https://github.com/iptv-org/epg/issues/2445
dsmart.com.tr🟒
dstv.com🟒
elcinema.comπŸ”΄https://github.com/iptv-org/epg/issues/2541
ena.skylifetv.co.kr🟒
energeek.cl🟒
entertainment.ie🟒
firstmedia.com🟒
flixed.io🟒
foxsports.com.au🟒
foxtel.com.au🟒
frikanalen.no🟒
gatotv.com🟒
getafteritmedia.com🟒
guida.tv🟒
guidatv.sky.it🟒
hd-plus.deπŸ”΄https://github.com/iptv-org/epg/issues/2173
horizon.tv🟒
hoy.tv🟒
i.mjh.nz🟒
i24news.tv🟒
iltalehti.fi🟑https://github.com/iptv-org/epg/issues/2396
indihometv.com🟒
ionplustv.com🟒
ipko.tv🟒
kan.org.ilπŸ”΄https://github.com/iptv-org/epg/issues/2273
knr.gl🟒
kplus.vnπŸ”΄https://github.com/iptv-org/epg/issues/2240
kvf.fo🟒
m.tv.sms.czπŸ”΄https://github.com/iptv-org/epg/issues/2241
m.tving.com🟒
magticom.ge🟒
mako.co.il🟒
maxtv.hrvatskitelekom.hrπŸ”΄https://github.com/iptv-org/epg/issues/2509
maxtvgo.mk🟒
mediagenie.co.kr🟒
mediaklikk.hu🟒
mediasetinfinity.mediaset.it🟒
melita.com🟒
meo.pt🟑https://github.com/iptv-org/epg/issues/2446
meuguia.tv🟒
mewatch.sg🟒
mi.tv🟒
mncvision.id🟒
moji.id🟒
mon-programme-tv.be🟒
movistarplus.esπŸ”΄https://github.com/iptv-org/epg/issues/2498
mtel.ba🟒
mts.rs🟒
mujtvprogram.cz🟒
musor.tv🟒
mysky.com.ph🟒
mytelly.co.uk🟒
mytvsuper.com🟒
neo.io🟒
nhkworldpremium.com🟒
nhl.com🟒
nostv.pt🟒
novacyprus.com🟒
novasports.gr🟒
nowplayer.now.com🟒
nuevosiglo.com.uy🟒
nzxmltv.com🟒
ontvtonight.com🟒
osn.com🟒
pbsguam.org🟒
pickx.be🟒
player.ee.co.uk🟒
playtv.unifi.com.my🟒
plex.tv🟒
programacion-tv.elpais.com🟒
programacion.tcc.com.uy🟒
programetv.ro🟒
programme-tv.net🟒
programme-tv.vini.pf🟒
programme.tvb.com🟒
programtv.onet.pl🟒
raiplay.it🟒
reportv.com.ar🟒
rev.bsπŸ”΄https://github.com/iptv-org/epg/issues/2255
rotana.net🟒
rtb.gov.bnπŸ”΄https://github.com/iptv-org/epg/issues/2257
rthk.hk🟒
rtmklik.rtm.gov.my🟒
rtp.pt🟒
ruv.is🟒
s.mxtv.jp🟒
sat.tv🟒
shahid.mbc.net🟒
siba.com.co🟒
singtel.com🟒
sjonvarp.is🟒
sky.co.nz🟒
sky.com🟑https://github.com/iptv-org/epg/issues/2516, https://github.com/iptv-org/epg/issues/2501
sky.de🟒
skylife.co.kr🟒
skyperfectv.co.jp🟒
snrt.ma🟒
sporttv.pt🟒
starhubtvplus.com🟒
startimestv.com🟒
streamingtvguides.com🟒
superguidatv.it🟒
taiwanplus.com🟒
tapdmv.com🟒
telenet.tv🟒
teliatv.ee🟒
telkussa.fi🟒
telsu.fi🟒
tivu.tv🟒
toonamiaftermath.com🟒
turksatkablo.com.tr🟒
tv-programme.telecablesat.fr🟒
tv.blue.ch🟒
tv.cctv.com🟒
tv.dir.bg🟒
tv.lv🟒
tv.magenta.at🟒
tv.mail.ru🟒
tv.movistar.com.pe🟒
tv.nu🟒
tv.post.lu🟒
tv.trueid.net🟒
tv.yandex.ru🟒
tv.yettel.huπŸ”΄https://github.com/iptv-org/epg/issues/2263
tv24.co.uk🟒
tv24.se🟒
tv2go.t-2.net🟒
tva.tvπŸ”΄https://github.com/iptv-org/epg/issues/2264
tvarenasport.com🟒
tvarenasport.hr🟒
tvcesoir.fr🟒
tvcubana.icrt.cu🟒
tvgids.nl🟑https://github.com/iptv-org/epg/issues/2400
tvguide.comπŸ”΄https://github.com/iptv-org/epg/issues/2542
tvguide.myjcom.jp🟒
tvhebdo.com🟒
tvheute.at🟒
tvim.tv🟒
tvireland.ie🟒
tvmi.mt🟒
tvmusor.hu🟒
tvpassport.com🟑https://github.com/iptv-org/epg/issues/2272
tvplus.com.tr🟒
tvprofil.com🟑https://github.com/iptv-org/epg/issues/2399
tvtv.us🟑https://github.com/iptv-org/epg/issues/2176
v3.myafn.dodmedia.osd.mil🟒
vidio.com🟒
virginmediatelevision.ie🟒
virgintvgo.virginmedia.com🟒
visionplus.id🟒
vivacom.bgπŸ”΄https://github.com/iptv-org/epg/issues/2270
vtm.be🟒
walesi.com.fj🟒
watch.sportsnet.ca🟒
watchyour.tv🟒
wavve.com🟒
web.magentatv.de🟒
webtv.delta.nl🟒
winplay.co🟒
worldfishingnetwork.com🟒
www3.nhk.or.jp🟒
xumo.tv🟒
zap.co.ao🟒
ziggogo.tv🟒
znbc.co.zm🟒
zuragt.mn🟒
diff --git a/tests/__data__/input/.sites/config.json b/tests/__data__/input/.sites/config.json new file mode 100644 index 00000000..2574a566 --- /dev/null +++ b/tests/__data__/input/.sites/config.json @@ -0,0 +1,4 @@ +{ + "build" : "tests/__data__/output/sites.md", + "files" : ["tests/__data__/output/.sites/template.md"] +} \ No newline at end of file diff --git a/tests/__data__/input/.sites/template.md b/tests/__data__/input/.sites/template.md new file mode 100644 index 00000000..b91bd031 --- /dev/null +++ b/tests/__data__/input/.sites/template.md @@ -0,0 +1,4 @@ +# Sites + + +#include "tests/__data__/output/.sites/_table.md" diff --git a/tests/__data__/input/issues/broken_guide_down.js b/tests/__data__/input/issues/broken_guide_down.js new file mode 100644 index 00000000..331bf671 --- /dev/null +++ b/tests/__data__/input/issues/broken_guide_down.js @@ -0,0 +1,1551 @@ +module.exports = [ + { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2547', + repository_url: 'https://api.github.com/repos/iptv-org/epg', + labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2547/labels{/name}', + comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2547/comments', + events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2547/events', + html_url: 'https://github.com/iptv-org/epg/issues/2547', + id: 2760418979, + node_id: 'I_kwDOFLVvtM6kiKaj', + number: 2547, + title: 'digiturk.com.tr', + 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: 7932710795, + node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', + url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', + name: 'status:down', + color: 'df3a4a', + default: false, + description: "The guide doesn't work" + } + ], + state: 'open', + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 1, + created_at: '2024-12-27T05:33:47Z', + updated_at: '2024-12-28T20:37:53Z', + closed_at: null, + author_association: 'COLLABORATOR', + active_lock_reason: null, + body: '### Site\n\ndigiturk.com.tr\n\n### Description\n\n```sh\r\nnpm run grab --- --site=digiturk.com.tr\r\n\r\n> grab\r\n> npx tsx scripts/commands/epg/grab.ts --site=digiturk.com.tr\r\n\r\nstarting...\r\nconfig:\r\n output: guide.xml\r\n maxConnections: 1\r\n gzip: false\r\n site: digiturk.com.tr\r\nloading channels...\r\n found 139 channel(s)\r\nrun #1:\r\n [1/278] digiturk.com.tr (en) - AlJazeeraEnglish.qa - Dec 27, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [2/278] digiturk.com.tr (en) - AlJazeeraEnglish.qa - Dec 28, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [3/278] digiturk.com.tr (tr) - Yaban.tr - Dec 28, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n```', + closed_by: null, + reactions: { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2547/reactions', + total_count: 1, + '+1': 1, + '-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/2547/timeline', + performed_via_github_app: null, + state_reason: null + }, + { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2542', + repository_url: 'https://api.github.com/repos/iptv-org/epg', + labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2542/labels{/name}', + comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2542/comments', + events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2542/events', + html_url: 'https://github.com/iptv-org/epg/issues/2542', + id: 2759639980, + node_id: 'I_kwDOFLVvtM6kfMOs', + number: 2542, + title: 'tvguide.com not working', + 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: 7932710795, + node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', + url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', + name: 'status:down', + color: 'df3a4a', + default: false, + description: "The guide doesn't work" + } + ], + state: 'open', + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 0, + created_at: '2024-12-26T11:11:24Z', + updated_at: '2024-12-27T05:28:55Z', + closed_at: null, + author_association: 'NONE', + active_lock_reason: null, + body: '### Site\n\ntvguide.com\n\n### Description\n\n```\r\nepg@rpi:~/epg$ npm run grab --- --site=tvguide.com\r\n\r\n> grab\r\n> npx tsx scripts/commands/epg/grab.ts --site=tvguide.com\r\n\r\nstarting...\r\nconfig:\r\n output: guide.xml\r\n maxConnections: 1\r\n gzip: false\r\n site: tvguide.com\r\nloading channels...\r\n found 39 channel(s)\r\nrun #1:\r\n [1/78] tvguide.com (en) - AEEast.us - Dec 26, 2024 (0 programs)\r\n ERR: Request failed with status code 403\r\n [2/78] tvguide.com (en) - AEEast.us - Dec 27, 2024 (0 programs)\r\n ERR: Request failed with status code 403\r\n [3/78] tvguide.com (en) - AMCEast.us - Dec 27, 2024 (0 programs)\r\n ERR: Request failed with status code 403\r\n [4/78] tvguide.com (en) - AMCEast.us - Dec 26, 2024 (0 programs)\r\n ERR: Request failed with status code 403\r\n [5/78] tvguide.com (en) - BravoEast.us - Dec 27, 2024 (0 programs)\r\n ERR: Request failed with status code 403\r\n [6/78] tvguide.com (en) - BravoEast.us - Dec 26, 2024 (0 programs)\r\n ERR: Request failed with status code 403\r\n [7/78] tvguide.com (en) - BBCAmericaEast.us - Dec 27, 2024 (0 programs)\r\n ERR: Request failed with status code 403\r\n [8/78] tvguide.com (en) - CNBC.us - Dec 27, 2024 (0 programs)\r\n ERR: Request failed with status code 403\r\n [9/78] tvguide.com (en) - CNBC.us - Dec 26, 2024 (0 programs)\r\n...\r\n...\r\n...\r\n```', + closed_by: null, + reactions: { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2542/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/2542/timeline', + performed_via_github_app: null, + state_reason: null + }, + { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2541', + repository_url: 'https://api.github.com/repos/iptv-org/epg', + labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2541/labels{/name}', + comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2541/comments', + events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2541/events', + html_url: 'https://github.com/iptv-org/epg/issues/2541', + id: 2758749907, + node_id: 'I_kwDOFLVvtM6kby7T', + number: 2541, + title: 'elcinema.com grab error 403', + user: { + login: 'xercessss', + id: 189765257, + node_id: 'U_kgDOC0-WiQ', + avatar_url: 'https://avatars.githubusercontent.com/u/189765257?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/xercessss', + html_url: 'https://github.com/xercessss', + followers_url: 'https://api.github.com/users/xercessss/followers', + following_url: 'https://api.github.com/users/xercessss/following{/other_user}', + gists_url: 'https://api.github.com/users/xercessss/gists{/gist_id}', + starred_url: 'https://api.github.com/users/xercessss/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/xercessss/subscriptions', + organizations_url: 'https://api.github.com/users/xercessss/orgs', + repos_url: 'https://api.github.com/users/xercessss/repos', + events_url: 'https://api.github.com/users/xercessss/events{/privacy}', + received_events_url: 'https://api.github.com/users/xercessss/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: 7932710795, + node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', + url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', + name: 'status:down', + color: 'df3a4a', + default: false, + description: "The guide doesn't work" + } + ], + state: 'open', + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 0, + created_at: '2024-12-25T11:34:16Z', + updated_at: '2024-12-27T05:28:07Z', + closed_at: null, + author_association: 'NONE', + active_lock_reason: null, + body: '### Site\n\nelcinema.com\n\n### Description\n\ngrabbing elcinema.com epg return error 403 for both ar and en language:\r\nERR: Request failed with status code 403\r\n', + closed_by: null, + reactions: { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2541/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/2541/timeline', + performed_via_github_app: null, + state_reason: null + }, + { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2509', + repository_url: 'https://api.github.com/repos/iptv-org/epg', + labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2509/labels{/name}', + comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2509/comments', + events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2509/events', + html_url: 'https://github.com/iptv-org/epg/issues/2509', + id: 2740938968, + node_id: 'I_kwDOFLVvtM6jX2jY', + number: 2509, + title: 'ssl problem maxtv.hrvatskitelekom.hr', + user: { + login: 'uploadkom', + id: 130712472, + node_id: 'U_kgDOB8qDmA', + avatar_url: 'https://avatars.githubusercontent.com/u/130712472?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/uploadkom', + html_url: 'https://github.com/uploadkom', + followers_url: 'https://api.github.com/users/uploadkom/followers', + following_url: 'https://api.github.com/users/uploadkom/following{/other_user}', + gists_url: 'https://api.github.com/users/uploadkom/gists{/gist_id}', + starred_url: 'https://api.github.com/users/uploadkom/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/uploadkom/subscriptions', + organizations_url: 'https://api.github.com/users/uploadkom/orgs', + repos_url: 'https://api.github.com/users/uploadkom/repos', + events_url: 'https://api.github.com/users/uploadkom/events{/privacy}', + received_events_url: 'https://api.github.com/users/uploadkom/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: 7932710795, + node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', + url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', + name: 'status:down', + color: 'df3a4a', + default: false, + description: "The guide doesn't work" + } + ], + state: 'open', + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 3, + created_at: '2024-12-15T22:21:22Z', + updated_at: '2024-12-27T05:26:26Z', + closed_at: null, + author_association: 'NONE', + active_lock_reason: null, + body: '### Site\n\nmaxtv.hrvatskitelekom.hr\n\n### Description\n\nssl problem', + closed_by: null, + reactions: { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2509/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/2509/timeline', + performed_via_github_app: null, + state_reason: null + }, + { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2498', + repository_url: 'https://api.github.com/repos/iptv-org/epg', + labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2498/labels{/name}', + comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2498/comments', + events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2498/events', + html_url: 'https://github.com/iptv-org/epg/issues/2498', + id: 2728188494, + node_id: 'I_kwDOFLVvtM6inNpO', + number: 2498, + title: 'movistarplus.es', + 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: 7932710795, + node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', + url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', + name: 'status:down', + color: 'df3a4a', + default: false, + description: "The guide doesn't work" + } + ], + state: 'open', + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 0, + created_at: '2024-12-09T20:26:07Z', + updated_at: '2024-12-27T05:23:48Z', + closed_at: null, + author_association: 'COLLABORATOR', + active_lock_reason: null, + body: '### Site\n\nmovistarplus.es\n\n### Description\n\n```sh\r\nnpm run grab -- --site=movistarplus.es\r\n\r\n> grab\r\n> npx tsx scripts/commands/epg/grab.ts --site=movistarplus.es\r\n\r\n(node:22362) ExperimentalWarning: `--experimental-loader` may be removed in the future; instead use `register()`:\r\n--import \'data:text/javascript,import { register } from "node:module"; import { pathToFileURL } from "node:url"; register("file%3A///Users/Arhey/Code/iptv-org/epg/node_modules/tsx/dist/loader.mjs", pathToFileURL("./"));\'\r\n(Use `node --trace-warnings ...` to show where the warning was created)\r\n(node:22362) UnsupportedWarning: `globalPreload` has been removed; use `initialize` instead.\r\n(Use `node --trace-warnings ...` to show where the warning was created)\r\nstarting...\r\nconfig:\r\n output: guide.xml\r\n maxConnections: 1\r\n gzip: false\r\n site: movistarplus.es\r\nloading channels...\r\n(node:22362) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.\r\n found 186 channel(s)\r\nrun #1:\r\n [1/372] movistarplus.es (es) - ANTV - Dec 9, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [2/372] movistarplus.es (es) - ANTV - Dec 10, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [3/372] movistarplus.es (es) - ARAGTV - Dec 10, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [4/372] movistarplus.es (es) - CANSUR - Dec 10, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [5/372] movistarplus.es (es) - DAZNL2 - Dec 10, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [6/372] movistarplus.es (es) - MLIGS - Dec 10, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [7/372] movistarplus.es (es) - AMC.es - Dec 10, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [8/372] movistarplus.es (es) - ComediaporMovistarPlusPlus.es - Dec 10, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [9/372] movistarplus.es (es) - LasEstrellasEuropa.mx - Dec 10, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [10/372] movistarplus.es (es) - LasEstrellasEuropa.mx - Dec 9, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [11/372] movistarplus.es (es) - ComediaporMovistarPlusPlus.es - Dec 9, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [12/372] movistarplus.es (es) - LaResistencia.es - Dec 10, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [13/372] movistarplus.es (es) - LaResistencia.es - Dec 9, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n```', + closed_by: null, + reactions: { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2498/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/2498/timeline', + performed_via_github_app: null, + state_reason: null + }, + { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2445', + repository_url: 'https://api.github.com/repos/iptv-org/epg', + labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2445/labels{/name}', + comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2445/comments', + events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2445/events', + html_url: 'https://github.com/iptv-org/epg/issues/2445', + id: 2567652015, + node_id: 'I_kwDOFLVvtM6ZC0Kv', + number: 2445, + title: 'EPG from dishtv.in stopped with error code 404', + user: { + login: 'dheer99', + id: 20639130, + node_id: 'MDQ6VXNlcjIwNjM5MTMw', + avatar_url: 'https://avatars.githubusercontent.com/u/20639130?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/dheer99', + html_url: 'https://github.com/dheer99', + followers_url: 'https://api.github.com/users/dheer99/followers', + following_url: 'https://api.github.com/users/dheer99/following{/other_user}', + gists_url: 'https://api.github.com/users/dheer99/gists{/gist_id}', + starred_url: 'https://api.github.com/users/dheer99/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/dheer99/subscriptions', + organizations_url: 'https://api.github.com/users/dheer99/orgs', + repos_url: 'https://api.github.com/users/dheer99/repos', + events_url: 'https://api.github.com/users/dheer99/events{/privacy}', + received_events_url: 'https://api.github.com/users/dheer99/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: 7932710795, + node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', + url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', + name: 'status:down', + color: 'df3a4a', + default: false, + description: "The guide doesn't work" + } + ], + state: 'open', + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 2, + created_at: '2024-10-05T04:30:52Z', + updated_at: '2024-12-27T05:20:11Z', + closed_at: null, + author_association: 'NONE', + active_lock_reason: null, + body: '### Site\n\ndishtv.in\n\n### Description\n\nEPG from dishtv.in stopped with error code 404\r\n\r\n [91/98] dishtv.in (en) - StarPlus.in - Oct 5, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [92/98] dishtv.in (en) - SET.in - Oct 6, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [93/98] dishtv.in (en) - ZeeCinema.in - Oct 6, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [94/98] dishtv.in (en) - SonySportsTen5.in - Oct 5, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [95/98] dishtv.in (en) - StarSports1.in - Oct 6, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [96/98] dishtv.in (en) - SET.in - Oct 5, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [97/98] dishtv.in (en) - SonySportsTen3.in - Oct 6, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n [98/98] dishtv.in (en) - Colors.in - Oct 6, 2024 (0 programs)\r\n ERR: Request failed with status code 404\r\n done in 00h 00m 03s\r\n', + closed_by: null, + reactions: { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2445/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/2445/timeline', + performed_via_github_app: null, + state_reason: null + }, + { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2339', + repository_url: 'https://api.github.com/repos/iptv-org/epg', + labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2339/labels{/name}', + comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2339/comments', + events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2339/events', + html_url: 'https://github.com/iptv-org/epg/issues/2339', + id: 2172864415, + node_id: 'I_kwDOFLVvtM6Bg0ef', + number: 2339, + title: + 'directv.com.ar and directv.com.uy not working ERR: Unexpected token \'<\', " grab\r\n> npx tsx scripts/commands/epg/grab.ts --site=kan.org.il --output=kan.org.il.xml\r\n\r\nstarting...\r\nconfig:\r\n output: kan.org.il.xml\r\n maxConnections: 1\r\n gzip: false\r\n site: kan.org.il\r\nloading channels...\r\n found 3 channel(s)\r\nrun #1:\r\n [1/6] kan.org.il (ar) - Makan33.il - Dec 2, 2023 (0 programs)\r\n ERR: Request failed with status code 404\r\n [2/6] kan.org.il (ar) - Makan33.il - Dec 3, 2023 (0 programs)\r\n ERR: Request failed with status code 404\r\n [3/6] kan.org.il (he) - KanEducational.il - Dec 3, 2023 (0 programs)\r\n ERR: Request failed with status code 404\r\n [4/6] kan.org.il (he) - KanEducational.il - Dec 2, 2023 (0 programs)\r\n ERR: Request failed with status code 404\r\n [5/6] kan.org.il (he) - Kan11.il - Dec 3, 2023 (0 programs)\r\n ERR: Request failed with status code 404\r\n [6/6] kan.org.il (he) - Kan11.il - Dec 2, 2023 (0 programs)\r\n ERR: Request failed with status code 404\r\n done in 00h 00m 01s\r\n```', + closed_by: null, + reactions: { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2273/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/2273/timeline', + performed_via_github_app: null, + state_reason: null + }, + { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2270', + repository_url: 'https://api.github.com/repos/iptv-org/epg', + labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2270/labels{/name}', + comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2270/comments', + events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2270/events', + html_url: 'https://github.com/iptv-org/epg/issues/2270', + id: 2022018570, + node_id: 'I_kwDOFLVvtM54hY4K', + number: 2270, + title: 'vivacom.bg is broken', + 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: 7932710795, + node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', + url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', + name: 'status:down', + color: 'df3a4a', + default: false, + description: "The guide doesn't work" + } + ], + state: 'open', + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 0, + created_at: '2023-12-02T12:16:22Z', + updated_at: '2024-12-27T05:00:36Z', + closed_at: null, + author_association: 'COLLABORATOR', + active_lock_reason: null, + body: '### Site\n\nvivacom.bg\n\n### Description\n\n```sh\r\nnpm run grab -- --site=vivacom.bg\r\n\r\n> grab\r\n> npx tsx scripts/commands/epg/grab.ts --site=vivacom.bg\r\n\r\nstarting...\r\nconfig:\r\n output: guide.xml\r\n maxConnections: 1\r\n gzip: false\r\n site: vivacom.bg\r\nloading channels...\r\n found 154 channel(s)\r\nrun #1:\r\n [1/308] vivacom.bg (bg) - 24Kitchen.bg - Dec 2, 2023 (0 programs)\r\n [2/308] vivacom.bg (bg) - 24Kitchen.bg - Dec 3, 2023 (0 programs)\r\n [3/308] vivacom.bg (bg) - 78TV.bg - Dec 3, 2023 (0 programs)\r\n [4/308] vivacom.bg (bg) - AlfaTV.bg - Dec 3, 2023 (0 programs)\r\n [5/308] vivacom.bg (bg) - AXNEurope.gr - Dec 3, 2023 (0 programs)\r\n [6/308] vivacom.bg (bg) - BNT3.bg - Dec 3, 2023 (0 programs)\r\n```', + closed_by: null, + reactions: { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2270/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/2270/timeline', + performed_via_github_app: null, + state_reason: null + }, + { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2264', + repository_url: 'https://api.github.com/repos/iptv-org/epg', + labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2264/labels{/name}', + comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2264/comments', + events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2264/events', + html_url: 'https://github.com/iptv-org/epg/issues/2264', + id: 2019407629, + node_id: 'I_kwDOFLVvtM54XbcN', + number: 2264, + title: 'tva.tv is broken', + 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: 7932710795, + node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', + url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', + name: 'status:down', + color: 'df3a4a', + default: false, + description: "The guide doesn't work" + } + ], + state: 'open', + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 0, + created_at: '2023-11-30T20:00:18Z', + updated_at: '2024-12-27T05:00:24Z', + closed_at: null, + author_association: 'COLLABORATOR', + active_lock_reason: null, + body: '### Site\n\ntva.tv\n\n### Description\n\n```sh\r\nnpm run grab -- --site=tva.tv\r\n\r\n> grab\r\n> npx tsx scripts/commands/epg/grab.ts --site=tva.tv\r\n\r\nstaring...\r\nconfig:\r\n output: guide.xml\r\n maxConnections: 1\r\n gzip: false\r\n site: tva.tv\r\nloading channels...\r\n found 28 channel(s)\r\nrun #1:\r\n [1/56] tva.tv (fa) - DocTV.ir - Nov 30, 2023 (0 programs)\r\n ERR: Connection timeout\r\n [2/56] tva.tv (fa) - DocTV.ir - Dec 1, 2023 (0 programs)\r\n ERR: Connection timeout\r\n```', + closed_by: null, + reactions: { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2264/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/2264/timeline', + performed_via_github_app: null, + state_reason: null + }, + { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2263', + repository_url: 'https://api.github.com/repos/iptv-org/epg', + labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2263/labels{/name}', + comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2263/comments', + events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2263/events', + html_url: 'https://github.com/iptv-org/epg/issues/2263', + id: 2019376043, + node_id: 'I_kwDOFLVvtM54XTur', + number: 2263, + title: 'tv.yettel.hu is broken', + 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: 7932710795, + node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', + url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', + name: 'status:down', + color: 'df3a4a', + default: false, + description: "The guide doesn't work" + } + ], + state: 'open', + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 0, + created_at: '2023-11-30T19:38:28Z', + updated_at: '2024-12-27T04:59:14Z', + closed_at: null, + author_association: 'COLLABORATOR', + active_lock_reason: null, + body: '### Site\n\ntv.yettel.hu\n\n### Description\n\n```sh\r\nnpm run grab -- --site=tv.yettel.hu\r\n\r\n> grab\r\n> npx tsx scripts/commands/epg/grab.ts --site=tv.yettel.hu\r\n\r\nstaring...\r\nconfig:\r\n output: guide.xml\r\n maxConnections: 1\r\n gzip: false\r\n site: tv.yettel.hu\r\nloading channels...\r\n found 74 channel(s)\r\nrun #1:\r\n [1/148] tv.yettel.hu (en) - BBCNewsEurope.uk - Nov 30, 2023 (0 programs)\r\n ERR: Client network socket disconnected before secure TLS connection was established\r\n [2/148] tv.yettel.hu (en) - BBCNewsEurope.uk - Dec 1, 2023 (0 programs)\r\n ERR: Client network socket disconnected before secure TLS connection was established\r\n```', + closed_by: null, + reactions: { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2263/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/2263/timeline', + performed_via_github_app: null, + state_reason: null + }, + { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2257', + repository_url: 'https://api.github.com/repos/iptv-org/epg', + labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2257/labels{/name}', + comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2257/comments', + events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2257/events', + html_url: 'https://github.com/iptv-org/epg/issues/2257', + id: 2011054011, + node_id: 'I_kwDOFLVvtM533j-7', + number: 2257, + title: 'rtb.gov.bn is broken', + 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: 7932710795, + node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', + url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', + name: 'status:down', + color: 'df3a4a', + default: false, + description: "The guide doesn't work" + } + ], + state: 'open', + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 0, + created_at: '2023-11-26T14:02:13Z', + updated_at: '2024-12-27T04:59:29Z', + closed_at: null, + author_association: 'COLLABORATOR', + active_lock_reason: null, + body: '### Site\n\nrtb.gov.bn\n\n### Description\n\n```sh\r\nnpm run grab -- --site=rtb.gov.bn\r\n\r\n> grab\r\n> npx tsx scripts/commands/epg/grab.ts --site=rtb.gov.bn\r\n\r\nstaring...\r\nconfig:\r\n output: guide.xml\r\n maxConnections: 1\r\n gzip: false\r\n site: rtb.gov.bn\r\nloading channels...\r\n found 3 channel(s)\r\nrun #1:\r\n [1/6] rtb.gov.bn (ms) - RTBAneka.bn - Nov 26, 2023 (0 programs)\r\n ERR: read ECONNRESET\r\n [2/6] rtb.gov.bn (ms) - RTBAneka.bn - Nov 27, 2023 (0 programs)\r\n ERR: read ECONNRESET\r\n [3/6] rtb.gov.bn (ms) - RTBPerdana.bn - Nov 27, 2023 (0 programs)\r\n ERR: read ECONNRESET\r\n```\r\n\r\nThere is no link to the guide on the website at the moment either: https://www.rtb.gov.bn/SitePages/Programme%20Guide.aspx', + closed_by: null, + reactions: { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2257/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/2257/timeline', + performed_via_github_app: null, + state_reason: null + }, + { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2255', + repository_url: 'https://api.github.com/repos/iptv-org/epg', + labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2255/labels{/name}', + comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2255/comments', + events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2255/events', + html_url: 'https://github.com/iptv-org/epg/issues/2255', + id: 2011043202, + node_id: 'I_kwDOFLVvtM533hWC', + number: 2255, + title: 'rev.bs is broken', + 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: 7932710795, + node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', + url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', + name: 'status:down', + color: 'df3a4a', + default: false, + description: "The guide doesn't work" + } + ], + state: 'open', + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 1, + created_at: '2023-11-26T13:31:22Z', + updated_at: '2024-12-27T22:02:28Z', + closed_at: null, + author_association: 'COLLABORATOR', + active_lock_reason: null, + body: '### Site\n\nrev.bs\n\n### Description\n\n```sh\r\nnpm run grab -- --site=rev.bs\r\n\r\n> grab\r\n> npx tsx scripts/commands/epg/grab.ts --site=rev.bs\r\n\r\nstaring...\r\nconfig:\r\n output: guide.xml\r\n maxConnections: 1\r\n gzip: false\r\n site: rev.bs\r\nloading channels...\r\n found 179 channel(s)\r\nrun #1:\r\n [1/358] rev.bs (en) - 3ABNEnglish.us - Nov 26, 2023 (0 programs)\r\n [2/358] rev.bs (en) - 3ABNEnglish.us - Nov 27, 2023 (0 programs)\r\n [3/358] rev.bs (en) - AEEast.us - Nov 27, 2023 (0 programs)\r\n [4/358] rev.bs (en) - AMCEast.us - Nov 27, 2023 (0 programs)\r\n```\r\n---\r\n\r\n```json\r\n{\r\n\t"status": "OK",\r\n\t"data": {\r\n\t\t"schedule": [],\r\n\t\t"dateTime": {\r\n\t\t\t"date": "2023-11-27",\r\n\t\t\t"page": 0\r\n\t\t},\r\n\t\t"runtimes": [\r\n\t\t\t{\r\n\t\t\t\t"Rev class loaded": 1700899490.604637\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t"TVGuide Class Loaded": 1700899490.638891\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t"Validated form": 1700899490.640116\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t"Pulled schedules": 1700899490.642099\r\n\t\t\t}\r\n\t\t]\r\n\t}\r\n}\r\n```\r\n\r\nhttps://www.rev.bs/wp-content/uploads/tv-guide/2023-11-27_0.json\r\n\r\n---\r\n\r\nimage\r\n\r\nhttps://www.rev.bs/tv-guide-404/', + closed_by: null, + reactions: { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2255/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/2255/timeline', + performed_via_github_app: null, + state_reason: null + }, + { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2241', + repository_url: 'https://api.github.com/repos/iptv-org/epg', + labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2241/labels{/name}', + comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2241/comments', + events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2241/events', + html_url: 'https://github.com/iptv-org/epg/issues/2241', + id: 2002096969, + node_id: 'I_kwDOFLVvtM53VZNJ', + number: 2241, + title: 'm.tv.sms.cz is broken', + 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: 7932710795, + node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', + url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', + name: 'status:down', + color: 'df3a4a', + default: false, + description: "The guide doesn't work" + } + ], + state: 'open', + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 4, + created_at: '2023-11-20T12:28:47Z', + updated_at: '2024-12-27T04:58:41Z', + closed_at: null, + author_association: 'COLLABORATOR', + active_lock_reason: null, + body: '### Site\n\nm.tv.sms.cz\n\n### Description\n\n```sh\r\nnpm run grab -- --site=m.tv.sms.cz\r\n\r\n> grab\r\n> npx tsx scripts/commands/epg/grab.ts --site=m.tv.sms.cz\r\n\r\nstaring...\r\nconfig:\r\n output: guide.xml\r\n maxConnections: 1\r\n gzip: false\r\n site: m.tv.sms.cz\r\nloading channels...\r\n found 525 channel(s)\r\nrun #1:\r\n [1/1050] m.tv.sms.cz (bs) - BNTV.ba - Nov 20, 2023 (0 programs)\r\n ERR: write EPROTO C04D101B01000000:error:0A000172:SSL routines:tls12_check_peer_sigalg:wrong signature type:ssl/t1_lib.c:1594:\r\n\r\n [2/1050] m.tv.sms.cz (bs) - BNTV.ba - Nov 21, 2023 (0 programs)\r\n ERR: write EPROTO C04D101B01000000:error:0A000172:SSL routines:tls12_check_peer_sigalg:wrong signature type:ssl/t1_lib.c:1594:\r\n\r\n [3/1050] m.tv.sms.cz (cs) - AMC.cz - Nov 21, 2023 (0 programs)\r\n ERR: write EPROTO C04D101B01000000:error:0A000172:SSL routines:tls12_check_peer_sigalg:wrong signature type:ssl/t1_lib.c:1594:\r\n```\r\n\r\nhttps://check-host.net/check-report/135d7e05kb9d', + closed_by: null, + reactions: { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2241/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/2241/timeline', + performed_via_github_app: null, + state_reason: null + }, + { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2240', + repository_url: 'https://api.github.com/repos/iptv-org/epg', + labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2240/labels{/name}', + comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2240/comments', + events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2240/events', + html_url: 'https://github.com/iptv-org/epg/issues/2240', + id: 2001847449, + node_id: 'I_kwDOFLVvtM53UcSZ', + number: 2240, + title: 'kplus.vn is broken', + 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: 7932710795, + node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', + url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', + name: 'status:down', + color: 'df3a4a', + default: false, + description: "The guide doesn't work" + } + ], + state: 'open', + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 0, + created_at: '2023-11-20T10:19:23Z', + updated_at: '2024-12-27T04:57:49Z', + closed_at: null, + author_association: 'COLLABORATOR', + active_lock_reason: null, + body: '### Site\n\nkplus.vn\n\n### Description\n\n```sh\r\nnpm run grab -- --site=kplus.vn\r\n\r\n> grab\r\n> npx tsx scripts/commands/epg/grab.ts --site=kplus.vn\r\n\r\nstaring...\r\nconfig:\r\n output: guide.xml\r\n maxConnections: 1\r\n gzip: false\r\n site: kplus.vn\r\nloading channels...\r\n found 26 channel(s)\r\nrun #1:\r\n [1/52] kplus.vn (vi) - AsianFoodNetwork.sg - Nov 20, 2023 (0 programs)\r\n [2/52] kplus.vn (vi) - AsianFoodNetwork.sg - Nov 21, 2023 (0 programs)\r\n [3/52] kplus.vn (vi) - AXN.vn - Nov 21, 2023 (0 programs)\r\n [4/52] kplus.vn (vi) - DiscoveryChannelSoutheastAsia.sg - Nov 21, 2023 (0 programs)\r\n```\r\n\r\nThe site also currently does not display the guide:\r\nimage\r\nhttps://www.kplus.vn/highlights/broadcast-schedule', + closed_by: null, + reactions: { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2240/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/2240/timeline', + performed_via_github_app: null, + state_reason: null + }, + { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2239', + repository_url: 'https://api.github.com/repos/iptv-org/epg', + labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2239/labels{/name}', + comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2239/comments', + events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2239/events', + html_url: 'https://github.com/iptv-org/epg/issues/2239', + id: 2000457187, + node_id: 'I_kwDOFLVvtM53PI3j', + number: 2239, + title: 'comteco.com.bo is broken', + 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: 7932710795, + node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', + url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', + name: 'status:down', + color: 'df3a4a', + default: false, + description: "The guide doesn't work" + } + ], + state: 'open', + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 3, + created_at: '2023-11-18T15:03:48Z', + updated_at: '2024-12-27T21:25:41Z', + closed_at: null, + author_association: 'COLLABORATOR', + active_lock_reason: null, + body: '### Site\n\ncomteco.com.bo\n\n### Description\n\n```sh\r\nnpm run grab -- --site=comteco.com.bo\r\n\r\n> grab\r\n> npx tsx scripts/commands/epg/grab.ts --site=comteco.com.bo\r\n\r\nstaring...\r\nconfig:\r\n output: guide.xml\r\n maxConnections: 1\r\n gzip: false\r\n site: comteco.com.bo\r\nloading channels...\r\n found 72 channel(s)\r\nrun #1:\r\n [1/144] comteco.com.bo (es) - AbyaYalaTV.bo - Nov 18, 2023 (0 programs)\r\n [2/144] comteco.com.bo (es) - AbyaYalaTV.bo - Nov 19, 2023 (0 programs)\r\n [3/144] comteco.com.bo (es) - AEPanregional.us - Nov 19, 2023 (0 programs)\r\n [4/144] comteco.com.bo (es) - AnimalPlanetLatinAmerica.us - Nov 19, 2023 (0 programs)\r\n [5/144] comteco.com.bo (es) - BoliviaTV72.bo - Nov 19, 2023 (0 programs)\r\n```\r\n\r\nhttps://comteco.com.bo/pages/canales-y-programacion-tv/paquete-oro/ABYA%20YALA\r\nimage', + closed_by: null, + reactions: { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2239/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/2239/timeline', + performed_via_github_app: null, + state_reason: null + }, + { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2237', + repository_url: 'https://api.github.com/repos/iptv-org/epg', + labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2237/labels{/name}', + comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2237/comments', + events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2237/events', + html_url: 'https://github.com/iptv-org/epg/issues/2237', + id: 2000349577, + node_id: 'I_kwDOFLVvtM53OumJ', + number: 2237, + title: 'canalplus-haiti.com is broken', + 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: 7932710795, + node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', + url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', + name: 'status:down', + color: 'df3a4a', + default: false, + description: "The guide doesn't work" + } + ], + state: 'open', + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 0, + created_at: '2023-11-18T09:46:29Z', + updated_at: '2024-12-27T04:57:02Z', + closed_at: null, + author_association: 'COLLABORATOR', + active_lock_reason: null, + body: '### Site\n\ncanalplus-haiti.com\n\n### Description\n\n```sh\r\nnpm run grab -- --site=canalplus-haiti.com\r\n\r\n> grab\r\n> npx tsx scripts/commands/epg/grab.ts --site=canalplus-haiti.com\r\n\r\nstaring...\r\nconfig:\r\n output: guide.xml\r\n maxConnections: 1\r\n gzip: false\r\n site: canalplus-haiti.com\r\nloading channels...\r\n found 111 channel(s)\r\nrun #1:\r\n [1/222] canalplus-haiti.com (fr) - 13emeRue.fr - Nov 18, 2023 (0 programs)\r\n ERR: Request failed with status code 403\r\n [2/222] canalplus-haiti.com (fr) - 13emeRue.fr - Nov 19, 2023 (0 programs)\r\n ERR: Request failed with status code 403\r\n [3/222] canalplus-haiti.com (fr) - ZoukTV.mq - Nov 19, 2023 (0 programs)\r\n ERR: Request failed with status code 403\r\n [4/222] canalplus-haiti.com (fr) - ZoukTV.mq - Nov 18, 2023 (0 programs)\r\n ERR: Request failed with status code 403\r\n```\r\n\r\nhttps://check-host.net/check-report/134fc56bk333', + closed_by: null, + reactions: { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2237/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/2237/timeline', + performed_via_github_app: null, + state_reason: null + }, + { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2173', + repository_url: 'https://api.github.com/repos/iptv-org/epg', + labels_url: 'https://api.github.com/repos/iptv-org/epg/issues/2173/labels{/name}', + comments_url: 'https://api.github.com/repos/iptv-org/epg/issues/2173/comments', + events_url: 'https://api.github.com/repos/iptv-org/epg/issues/2173/events', + html_url: 'https://github.com/iptv-org/epg/issues/2173', + id: 1903824500, + node_id: 'I_kwDOFLVvtM5xeg50', + number: 2173, + title: 'hd-plus.de - 0 programs on all channels', + user: { + login: 'x011', + id: 4313821, + node_id: 'MDQ6VXNlcjQzMTM4MjE=', + avatar_url: 'https://avatars.githubusercontent.com/u/4313821?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/x011', + html_url: 'https://github.com/x011', + followers_url: 'https://api.github.com/users/x011/followers', + following_url: 'https://api.github.com/users/x011/following{/other_user}', + gists_url: 'https://api.github.com/users/x011/gists{/gist_id}', + starred_url: 'https://api.github.com/users/x011/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/x011/subscriptions', + organizations_url: 'https://api.github.com/users/x011/orgs', + repos_url: 'https://api.github.com/users/x011/repos', + events_url: 'https://api.github.com/users/x011/events{/privacy}', + received_events_url: 'https://api.github.com/users/x011/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: 7932710795, + node_id: 'LA_kwDOFLVvtM8AAAAB2NOPiw', + url: 'https://api.github.com/repos/iptv-org/epg/labels/status:down', + name: 'status:down', + color: 'df3a4a', + default: false, + description: "The guide doesn't work" + } + ], + state: 'open', + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 1, + created_at: '2023-09-19T22:45:56Z', + updated_at: '2024-12-27T04:54:11Z', + closed_at: null, + author_association: 'NONE', + active_lock_reason: null, + body: '### Site\r\n\r\nhd-plus.de\r\n\r\n### Description\r\n\r\nAll channels on hd-plus.de have 0 programs:\r\n```\r\n[1/60] hd-plus.de - 123tv.de - Sep 19, 2023 (0 programs)\r\n[2/60] hd-plus.de - 123tv.de - Sep 20, 2023 (0 programs)\r\n[3/60] hd-plus.de - ZDF.de - Sep 20, 2023 (0 programs)\r\n[4/60] hd-plus.de - ZDF.de - Sep 19, 2023 (0 programs)\r\n...\r\n```', + closed_by: null, + reactions: { + url: 'https://api.github.com/repos/iptv-org/epg/issues/2173/reactions', + total_count: 6, + '+1': 6, + '-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/2173/timeline', + performed_via_github_app: null, + state_reason: null + } +] diff --git a/tests/__data__/input/issues/broken_guide_warning.js b/tests/__data__/input/issues/broken_guide_warning.js new file mode 100644 index 00000000..e7f3bcfa --- /dev/null +++ b/tests/__data__/input/issues/broken_guide_warning.js @@ -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 Viaplay 1 HD\r\n Viaplay 2 HD\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. (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. (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. (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. (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\nKANAL 24 HD\r\nTARIH TV HD\r\nSΓ–ZCÜ TV HD\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\nNR1\r\nNR1 TΓΌrk\r\nTRT EBA TV Δ°lkokul\r\nTRT EBA TV Ortaokul\r\nTRT EBA TV Lise\r\nΓ‡ifΓ§i TV\r\nKanal 16\r\nFlash Haber\r\nYeni Kocaeli TV\r\nATV Turkiye SD\r\nTRT EBA TV Δ°lkokul SD\r\nTRT EBA TV Ortaokul SD\r\nTRT EBA TV Lise SD\r\nTarih Tv\r\nSZC\r\nTRT 3 Spor\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">The Caine Mutiny Court-MartialA \r\nchannel="Showtime2East.us">Two British soldiers receive seemingly impossible orders \r\nchannel="Showtime2East.us">There Will Be BloodDaniel \r\n```\r\nor:\r\n\r\n```\r\nchannel="MGMPlusEast.us">A Fistful of DynamiteA thief \r\nchannel="MGMPlusEast.us">The son (Robert De Niro) of a landowner and the son \r\nchannel="MGMPlusEast.us">Indecent ProposalA 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 + } +] diff --git a/tests/commands/sites/update.test.ts b/tests/commands/sites/update.test.ts new file mode 100644 index 00000000..e38414d3 --- /dev/null +++ b/tests/commands/sites/update.test.ts @@ -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) +} diff --git a/yarn.lock b/yarn.lock index 62acd10d..67c180ea 100644 --- a/yarn.lock +++ b/yarn.lock @@ -765,76 +765,84 @@ dependencies: axios "^1.7.9" -"@octokit/auth-token@^3.0.0": - version "3.0.2" - resolved "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.2.tgz" - integrity sha512-pq7CwIMV1kmzkFTimdwjAINCXKTajZErLB4wMLYapR2nuB/Jpr66+05wOTZMSCBXP6n4DdDWT2W19Bm17vU69Q== - dependencies: - "@octokit/types" "^8.0.0" +"@octokit/auth-token@^5.0.0": + version "5.1.1" + resolved "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-5.1.1.tgz" + integrity sha512-rh3G3wDO8J9wSjfI436JUKzHIxq8NaiL0tVeB2aXmG6p/9859aUOAjA9pmSPNGGZxfwmaJ9ozOJImuNVJdpvbA== -"@octokit/core@^4.1.0": - version "4.1.0" - resolved "https://registry.npmjs.org/@octokit/core/-/core-4.1.0.tgz" - integrity sha512-Czz/59VefU+kKDy+ZfDwtOIYIkFjExOKf+HA92aiTZJ6EfWpFzYQWw0l54ji8bVmyhc+mGaLUbSUmXazG7z5OQ== +"@octokit/core@>=6": + version "6.1.2" + resolved "https://registry.npmjs.org/@octokit/core/-/core-6.1.2.tgz" + integrity sha512-hEb7Ma4cGJGEUNOAVmyfdB/3WirWMg5hDuNFVejGEDFqupeOysLc2sG6HJxY2etBp5YQu5Wtxwi020jS9xlUwg== dependencies: - "@octokit/auth-token" "^3.0.0" - "@octokit/graphql" "^5.0.0" - "@octokit/request" "^6.0.0" - "@octokit/request-error" "^3.0.0" - "@octokit/types" "^8.0.0" - before-after-hook "^2.2.0" - universal-user-agent "^6.0.0" + "@octokit/auth-token" "^5.0.0" + "@octokit/graphql" "^8.0.0" + "@octokit/request" "^9.0.0" + "@octokit/request-error" "^6.0.1" + "@octokit/types" "^13.0.0" + before-after-hook "^3.0.2" + universal-user-agent "^7.0.0" -"@octokit/endpoint@^7.0.0": - version "7.0.3" - resolved "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.3.tgz" - integrity sha512-57gRlb28bwTsdNXq+O3JTQ7ERmBTuik9+LelgcLIVfYwf235VHbN9QNo4kXExtp/h8T423cR5iJThKtFYxC7Lw== +"@octokit/endpoint@^10.0.0": + version "10.1.1" + resolved "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.1.tgz" + integrity sha512-JYjh5rMOwXMJyUpj028cu0Gbp7qe/ihxfJMLc8VZBMMqSwLgOxDI1911gV4Enl1QSavAQNJcwmwBF9M0VvLh6Q== dependencies: - "@octokit/types" "^8.0.0" - is-plain-object "^5.0.0" - universal-user-agent "^6.0.0" + "@octokit/types" "^13.0.0" + universal-user-agent "^7.0.2" -"@octokit/graphql@^5.0.0": - version "5.0.4" - resolved "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.4.tgz" - integrity sha512-amO1M5QUQgYQo09aStR/XO7KAl13xpigcy/kI8/N1PnZYSS69fgte+xA4+c2DISKqUZfsh0wwjc2FaCt99L41A== +"@octokit/graphql@^8.0.0": + version "8.1.1" + resolved "https://registry.npmjs.org/@octokit/graphql/-/graphql-8.1.1.tgz" + integrity sha512-ukiRmuHTi6ebQx/HFRCXKbDlOh/7xEV6QUXaE7MJEKGNAncGI/STSbOkl12qVXZrfZdpXctx5O9X1AIaebiDBg== dependencies: - "@octokit/request" "^6.0.0" - "@octokit/types" "^8.0.0" - universal-user-agent "^6.0.0" + "@octokit/request" "^9.0.0" + "@octokit/types" "^13.0.0" + universal-user-agent "^7.0.0" -"@octokit/openapi-types@^14.0.0": - version "14.0.0" - resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-14.0.0.tgz" - integrity sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw== +"@octokit/openapi-types@^22.2.0": + version "22.2.0" + resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-22.2.0.tgz" + integrity sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg== -"@octokit/request-error@^3.0.0": - version "3.0.2" - resolved "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.2.tgz" - integrity sha512-WMNOFYrSaX8zXWoJg9u/pKgWPo94JXilMLb2VManNOby9EZxrQaBe/QSC4a1TzpAlpxofg2X/jMnCyZgL6y7eg== +"@octokit/plugin-paginate-rest@^11.3.6": + 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== dependencies: - "@octokit/types" "^8.0.0" - deprecation "^2.0.0" - once "^1.4.0" + "@octokit/types" "^13.6.2" -"@octokit/request@^6.0.0": - version "6.2.2" - resolved "https://registry.npmjs.org/@octokit/request/-/request-6.2.2.tgz" - integrity sha512-6VDqgj0HMc2FUX2awIs+sM6OwLgwHvAi4KCK3mT2H2IKRt6oH9d0fej5LluF5mck1lRR/rFWN0YIDSYXYSylbw== +"@octokit/plugin-rest-endpoint-methods@^13.2.6": + 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/endpoint" "^7.0.0" - "@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" "^13.6.1" -"@octokit/types@^8.0.0": - version "8.0.0" - resolved "https://registry.npmjs.org/@octokit/types/-/types-8.0.0.tgz" - integrity sha512-65/TPpOJP1i3K4lBJMnWqPUJ6zuOtzhtagDvydAWbEXpbFYA0oMKKyLb95NFZZP0lSh/4b6K+DQlzvYQJQQePg== +"@octokit/request-error@^6.0.1": + version "6.1.6" + resolved "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.6.tgz" + integrity sha512-pqnVKYo/at0NuOjinrgcQYpEbv4snvP3bKMRqHaD9kIsk9u1LCpb2smHZi8/qJfgeNqLo5hNW4Z7FezNdEo0xg== 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": 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" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== -before-after-hook@^2.2.0: - version "2.2.3" - resolved "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz" - integrity sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ== +before-after-hook@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/before-after-hook/-/before-after-hook-3.0.2.tgz" + integrity sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A== bindings@~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" 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: version "2.0.3" 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" integrity sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ== -encoding@^0.1.0, encoding@^0.1.13: +encoding@^0.1.13: version "0.1.13" resolved "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz" integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== @@ -2420,6 +2423,11 @@ external-editor@^3.0.3: iconv-lite "^0.4.24" 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: version "3.1.3" 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" 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: version "4.0.0" 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: version "0.4.3" resolved "https://registry.npmjs.org/markdown-include/-/markdown-include-0.4.3.tgz" - integrity sha1-usZVVALG2pOg9SlSIl37mmzMcxs= + integrity sha512-kw1f+iJ8jAH9SYljv2RXmhRQFr2oMPPVdyoKaZIH+uA1rrQqDjLk6EQZW65oVz1Y+BkC3V//9lEvKKjRZNb1Jg== dependencies: 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" 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: version "10.3.1" resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-10.3.1.tgz" @@ -5004,11 +5000,6 @@ to-regex-range@^5.0.1: dependencies: 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: version "2.2.0" resolved "https://registry.npmjs.org/transliteration/-/transliteration-2.2.0.tgz" @@ -5122,10 +5113,10 @@ unique-slug@^4.0.0: dependencies: imurmurhash "^0.1.4" -universal-user-agent@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz" - integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w== +universal-user-agent@^7.0.0, universal-user-agent@^7.0.2: + version "7.0.2" + resolved "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.2.tgz" + integrity sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q== universalify@^2.0.0: version "2.0.0" @@ -5205,19 +5196,6 @@ wcwidth@^1.0.1: dependencies: 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: version "2.0.2" resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz"