From f624029d05ed43dd0243b007d923b1de78d2647e Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Fri, 24 Jan 2025 19:20:01 +0300 Subject: [PATCH 01/23] Update parse.ts --- scripts/commands/channels/parse.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/commands/channels/parse.ts b/scripts/commands/channels/parse.ts index 96c57a52..572b5ed6 100644 --- a/scripts/commands/channels/parse.ts +++ b/scripts/commands/channels/parse.ts @@ -26,7 +26,7 @@ async function main() { const logger = new Logger() const file = new File(options.config) const dir = file.dirname() - const config = (await import(pathToFileURL(options.config))).default + const config = (await import(pathToFileURL(options.config).toString())).default const outputFilepath = options.output || `${dir}/${config.site}.channels.xml` let channels = new Collection() From a7b80f88a470780760a5b20c3b38d051f5f94b30 Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Fri, 24 Jan 2025 19:59:57 +0300 Subject: [PATCH 02/23] Install socks-proxy-agent --- package-lock.json | 131 +++++++++++++++++++++++++++++++++++++++++----- package.json | 5 +- yarn.lock | 58 ++++++++++++++++---- 3 files changed, 169 insertions(+), 25 deletions(-) diff --git a/package-lock.json b/package-lock.json index 31a33148..a6b4180f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "@alex_neo/jest-expect-message": "^1.0.5", "@eslint/eslintrc": "^3.2.0", "@eslint/js": "^9.17.0", - "@freearhey/core": "^0.5.0", + "@freearhey/core": "^0.5.1", "@ntlab/sfetch": "^1.0.0", "@octokit/core": "^6.1.3", "@octokit/plugin-paginate-rest": "^11.3.6", @@ -38,7 +38,7 @@ "csv-parser": "^3.0.0", "cwait": "^1.1.2", "dayjs": "^1.11.10", - "epg-grabber": "^0.37.4", + "epg-grabber": "^0.37.5", "epg-parser": "^0.3.1", "eslint": "^9.17.0", "eslint-config-prettier": "^9.0.0", @@ -69,6 +69,7 @@ "serve": "^14.2.4", "signale": "^1.4.0", "skip-postinstall": "^1.0.0", + "socks-proxy-agent": "^8.0.5", "srcset": "^4.0.0", "table2array": "^0.0.2", "tabletojson": "^2.0.7", @@ -1203,9 +1204,9 @@ } }, "node_modules/@freearhey/core": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@freearhey/core/-/core-0.5.0.tgz", - "integrity": "sha512-FcA5Pv9RvFvLYAwNmD/2vlSR49Rx+kihJ+xbIUgIACHY6lBUptfbNznm00DQoUyWRJG/cfT3dkYCwIxSUsdP+w==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@freearhey/core/-/core-0.5.1.tgz", + "integrity": "sha512-UDKIOyrtcUXaiAeIvjNFTI6DlempiOQaRB83CqHNF1VPRHNBiNhGhERWyInHE2cjLp/cc0CA/IykOYS39kBK7Q==", "dependencies": { "@types/fs-extra": "^11.0.2", "@types/lodash": "^4.14.198", @@ -4192,9 +4193,9 @@ } }, "node_modules/epg-grabber": { - "version": "0.37.4", - "resolved": "https://registry.npmjs.org/epg-grabber/-/epg-grabber-0.37.4.tgz", - "integrity": "sha512-PS104bH9tHRa9kivSwx47AKMkfHwKy51XQTx+GO6sIXvIp2Z4LBpwMEXGcfPoAsdIGxgs2Wrl0dZ/QGL+7x6YQ==", + "version": "0.37.5", + "resolved": "https://registry.npmjs.org/epg-grabber/-/epg-grabber-0.37.5.tgz", + "integrity": "sha512-mkT22NU5docsw6qJByBC5oMKFYETyX/PU7Iq3MQ1MS4A+C2Ale6tm+QN7BRW/9Cd5/szfr/YdkzDUZaoyO5vvw==", "dependencies": { "axios": "^1.6.1", "axios-cache-interceptor": "^0.10.3", @@ -5247,6 +5248,23 @@ "node": ">=8" } }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/ip-address/node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" + }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -6141,6 +6159,11 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==" + }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -7641,6 +7664,41 @@ "node": ">=8" } }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", + "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "socks": "^2.8.3" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -9172,9 +9230,9 @@ } }, "@freearhey/core": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@freearhey/core/-/core-0.5.0.tgz", - "integrity": "sha512-FcA5Pv9RvFvLYAwNmD/2vlSR49Rx+kihJ+xbIUgIACHY6lBUptfbNznm00DQoUyWRJG/cfT3dkYCwIxSUsdP+w==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@freearhey/core/-/core-0.5.1.tgz", + "integrity": "sha512-UDKIOyrtcUXaiAeIvjNFTI6DlempiOQaRB83CqHNF1VPRHNBiNhGhERWyInHE2cjLp/cc0CA/IykOYS39kBK7Q==", "requires": { "@types/fs-extra": "^11.0.2", "@types/lodash": "^4.14.198", @@ -11280,9 +11338,9 @@ "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==" }, "epg-grabber": { - "version": "0.37.4", - "resolved": "https://registry.npmjs.org/epg-grabber/-/epg-grabber-0.37.4.tgz", - "integrity": "sha512-PS104bH9tHRa9kivSwx47AKMkfHwKy51XQTx+GO6sIXvIp2Z4LBpwMEXGcfPoAsdIGxgs2Wrl0dZ/QGL+7x6YQ==", + "version": "0.37.5", + "resolved": "https://registry.npmjs.org/epg-grabber/-/epg-grabber-0.37.5.tgz", + "integrity": "sha512-mkT22NU5docsw6qJByBC5oMKFYETyX/PU7Iq3MQ1MS4A+C2Ale6tm+QN7BRW/9Cd5/szfr/YdkzDUZaoyO5vvw==", "requires": { "axios": "^1.6.1", "axios-cache-interceptor": "^0.10.3", @@ -12006,6 +12064,22 @@ } } }, + "ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "requires": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "dependencies": { + "sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" + } + } + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -12650,6 +12724,11 @@ "esprima": "^4.0.0" } }, + "jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==" + }, "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -13776,6 +13855,30 @@ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" + }, + "socks": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", + "requires": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + } + }, + "socks-proxy-agent": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", + "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", + "requires": { + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "socks": "^2.8.3" + } + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", diff --git a/package.json b/package.json index 46dcb653..df39e736 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ "@alex_neo/jest-expect-message": "^1.0.5", "@eslint/eslintrc": "^3.2.0", "@eslint/js": "^9.17.0", - "@freearhey/core": "^0.5.0", + "@freearhey/core": "^0.5.1", "@ntlab/sfetch": "^1.0.0", "@octokit/core": "^6.1.3", "@octokit/plugin-paginate-rest": "^11.3.6", @@ -67,7 +67,7 @@ "csv-parser": "^3.0.0", "cwait": "^1.1.2", "dayjs": "^1.11.10", - "epg-grabber": "^0.37.4", + "epg-grabber": "^0.37.5", "epg-parser": "^0.3.1", "eslint": "^9.17.0", "eslint-config-prettier": "^9.0.0", @@ -98,6 +98,7 @@ "serve": "^14.2.4", "signale": "^1.4.0", "skip-postinstall": "^1.0.0", + "socks-proxy-agent": "^8.0.5", "srcset": "^4.0.0", "table2array": "^0.0.2", "tabletojson": "^2.0.7", diff --git a/yarn.lock b/yarn.lock index 1ba3d3bd..de4affe8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -396,10 +396,10 @@ dependencies: levn "^0.4.1" -"@freearhey/core@^0.5.0": - version "0.5.0" - resolved "https://registry.npmjs.org/@freearhey/core/-/core-0.5.0.tgz" - integrity sha512-FcA5Pv9RvFvLYAwNmD/2vlSR49Rx+kihJ+xbIUgIACHY6lBUptfbNznm00DQoUyWRJG/cfT3dkYCwIxSUsdP+w== +"@freearhey/core@^0.5.1": + version "0.5.1" + resolved "https://registry.npmjs.org/@freearhey/core/-/core-0.5.1.tgz" + integrity sha512-UDKIOyrtcUXaiAeIvjNFTI6DlempiOQaRB83CqHNF1VPRHNBiNhGhERWyInHE2cjLp/cc0CA/IykOYS39kBK7Q== dependencies: "@types/fs-extra" "^11.0.2" "@types/lodash" "^4.14.198" @@ -1271,7 +1271,7 @@ acorn-walk@^8.1.1: resolved "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz" integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== -agent-base@^7.1.3: +agent-base@^7.1.2, agent-base@^7.1.3: version "7.1.3" resolved "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz" integrity sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw== @@ -2158,10 +2158,10 @@ entities@^4.2.0, entities@^4.3.0, entities@^4.4.0: resolved "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz" integrity sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA== -epg-grabber@^0.37.4: - version "0.37.4" - resolved "https://registry.npmjs.org/epg-grabber/-/epg-grabber-0.37.4.tgz" - integrity sha512-PS104bH9tHRa9kivSwx47AKMkfHwKy51XQTx+GO6sIXvIp2Z4LBpwMEXGcfPoAsdIGxgs2Wrl0dZ/QGL+7x6YQ== +epg-grabber@^0.37.5: + version "0.37.5" + resolved "https://registry.npmjs.org/epg-grabber/-/epg-grabber-0.37.5.tgz" + integrity sha512-mkT22NU5docsw6qJByBC5oMKFYETyX/PU7Iq3MQ1MS4A+C2Ale6tm+QN7BRW/9Cd5/szfr/YdkzDUZaoyO5vvw== dependencies: axios "^1.6.1" axios-cache-interceptor "^0.10.3" @@ -2835,6 +2835,14 @@ inquirer@^8.2.6: through "^2.3.6" wrap-ansi "^6.0.1" +ip-address@^9.0.5: + version "9.0.5" + resolved "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz" + integrity sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g== + dependencies: + jsbn "1.1.0" + sprintf-js "^1.1.3" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" @@ -3373,6 +3381,11 @@ js-yaml@^4.1.0: dependencies: argparse "^2.0.1" +jsbn@1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz" + integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A== + jsesc@^2.5.1: version "2.5.2" resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" @@ -4393,6 +4406,28 @@ slash@^3.0.0: resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== +smart-buffer@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz" + integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== + +socks-proxy-agent@^8.0.5: + version "8.0.5" + resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz" + integrity sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw== + dependencies: + agent-base "^7.1.2" + debug "^4.3.4" + socks "^2.8.3" + +socks@^2.8.3: + version "2.8.3" + resolved "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz" + integrity sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw== + dependencies: + ip-address "^9.0.5" + smart-buffer "^4.2.0" + source-map-support@0.5.13: version "0.5.13" resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz" @@ -4406,6 +4441,11 @@ source-map@^0.6.0, source-map@^0.6.1: resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +sprintf-js@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz" + integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" From 3f22ac12f5d64c6d23017f903313f7d70232190d Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Fri, 24 Jan 2025 20:00:25 +0300 Subject: [PATCH 03/23] Update grab.test.ts --- tests/commands/epg/grab.test.ts | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/tests/commands/epg/grab.test.ts b/tests/commands/epg/grab.test.ts index 8d40f16f..648d5057 100644 --- a/tests/commands/epg/grab.test.ts +++ b/tests/commands/epg/grab.test.ts @@ -97,6 +97,30 @@ describe('epg:grab', () => { expect(stdout).toContain('ERR: Connection timeout') }) + + it('can grab epg via https proxy', () => { + const cmd = `${ENV_VAR} npm run grab --- --site=example.com --proxy=https://bob:123456@proxy.com:1234 --output="${path.resolve( + 'tests/__data__/output/guide.xml' + )}"` + const stdout = execSync(cmd, { encoding: 'utf8' }) + if (process.env.DEBUG === 'true') console.log(cmd, stdout) + + expect(content('tests/__data__/output/guide.xml')).toEqual( + content('tests/__data__/expected/guide2.xml') + ) + }) + + it('can grab epg via socks5 proxy', () => { + const cmd = `${ENV_VAR} npm run grab --- --site=example.com --proxy=socks5://bob:123456@proxy.com:1234 --output="${path.resolve( + 'tests/__data__/output/guide.xml' + )}"` + const stdout = execSync(cmd, { encoding: 'utf8' }) + if (process.env.DEBUG === 'true') console.log(cmd, stdout) + + expect(content('tests/__data__/output/guide.xml')).toEqual( + content('tests/__data__/expected/guide2.xml') + ) + }) }) function content(filepath: string) { From e02e46562a8e4ace1ee6d44c76fb7d00ba830f29 Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Fri, 24 Jan 2025 20:01:57 +0300 Subject: [PATCH 04/23] Create proxyParser.ts --- scripts/core/proxyParser.ts | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 scripts/core/proxyParser.ts diff --git a/scripts/core/proxyParser.ts b/scripts/core/proxyParser.ts new file mode 100644 index 00000000..244290d5 --- /dev/null +++ b/scripts/core/proxyParser.ts @@ -0,0 +1,27 @@ +import { URL } from 'node:url' + +type ProxyParserResult = { + protocol: string | null + auth: { + username: string | null + password: string | null + } + host: string + port: number | null +} + +export class ProxyParser { + parse(_url: string): ProxyParserResult { + const parsed = new URL(_url) + + return { + protocol: parsed.protocol.replace(':', '') || null, + auth: { + username: parsed.username || null, + password: parsed.password || null + }, + host: parsed.hostname, + port: parsed.port ? parseInt(parsed.port) : null + } + } +} From b8c50654f62c1b452d5af46f5a47b08c15dc8701 Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Fri, 24 Jan 2025 20:02:04 +0300 Subject: [PATCH 05/23] Update index.ts --- scripts/core/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/core/index.ts b/scripts/core/index.ts index 2c7309ed..db3e75a5 100644 --- a/scripts/core/index.ts +++ b/scripts/core/index.ts @@ -13,3 +13,4 @@ export * from './queueCreator' export * from './issueLoader' export * from './issueParser' export * from './htmlTable' +export * from './proxyParser' From d15b21bfd333d2fed5224504005fc22f454686b4 Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Fri, 24 Jan 2025 20:02:33 +0300 Subject: [PATCH 06/23] Update grabber.ts --- scripts/core/grabber.ts | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/scripts/core/grabber.ts b/scripts/core/grabber.ts index 4bed77a3..2248cbc5 100644 --- a/scripts/core/grabber.ts +++ b/scripts/core/grabber.ts @@ -1,8 +1,9 @@ import { EPGGrabber, GrabCallbackData, EPGGrabberMock, SiteConfig, Channel } from 'epg-grabber' import { Logger, Collection } from '@freearhey/core' -import { Queue } from './' +import { Queue, ProxyParser } from './' import { GrabOptions } from '../commands/epg/grab' import { TaskQueue, PromisyClass } from 'cwait' +import { SocksProxyAgent } from 'socks-proxy-agent' type GrabberProps = { logger: Logger @@ -14,6 +15,7 @@ export class Grabber { logger: Logger queue: Queue options: GrabOptions + grabber: EPGGrabber | EPGGrabberMock constructor({ logger, queue, options }: GrabberProps) { this.logger = logger @@ -23,6 +25,7 @@ export class Grabber { } async grab(): Promise<{ channels: Collection; programs: Collection }> { + const proxyParser = new ProxyParser() const taskQueue = new TaskQueue(Promise as PromisyClass, this.options.maxConnections) const total = this.queue.size() @@ -49,6 +52,24 @@ export class Grabber { config.delay = delay } + if (this.options.proxy !== undefined) { + const proxy = proxyParser.parse(this.options.proxy) + + if ( + proxy.protocol && + ['socks', 'socks5', 'socks5h', 'socks4', 'socks4a'].includes(String(proxy.protocol)) + ) { + const socksProxyAgent = new SocksProxyAgent(this.options.proxy) + + config.request = { + ...config.request, + ...{ httpAgent: socksProxyAgent, httpsAgent: socksProxyAgent } + } + } else { + config.request = { ...config.request, ...{ proxy } } + } + } + const _programs = await this.grabber.grab( channel, date, From 85176799987168a708c4ca75c71951adb8020ab1 Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Fri, 24 Jan 2025 20:03:00 +0300 Subject: [PATCH 07/23] Update grab.ts --- scripts/commands/epg/grab.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scripts/commands/epg/grab.ts b/scripts/commands/epg/grab.ts index a0d63037..c38b22b9 100644 --- a/scripts/commands/epg/grab.ts +++ b/scripts/commands/epg/grab.ts @@ -16,6 +16,7 @@ program .option('-l, --lang ', 'Filter channels by language (ISO 639-2 code)') .option('-t, --timeout ', 'Override the default timeout for each request') .option('-d, --delay ', 'Override the default delay between request') + .option('-x, --proxy ', 'Use the specified proxy') .option( '--days ', 'Override the number of days for which the program will be loaded (defaults to the value from the site config)', @@ -42,6 +43,7 @@ export type GrabOptions = { lang?: string days?: number cron?: string + proxy?: string } const options: GrabOptions = program.opts() From 7b9fcf3851ae16276b5f792b4f925322f2c34589 Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Fri, 24 Jan 2025 20:03:41 +0300 Subject: [PATCH 08/23] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index eb966322..e1840292 100644 --- a/README.md +++ b/README.md @@ -58,6 +58,7 @@ Options: -l, --lang Filter channels by language (ISO 639-2 code) -t, --timeout Override the default timeout for each request -d, --delay Override the default delay between request + -x, --proxy Use the specified proxy (example: "socks5://username:password@127.0.0.1:1234") --days Override the number of days for which the program will be loaded (defaults to the value from the site config) --maxConnections Limit on the number of concurrent requests (default: 1) From 5652ed22c6454cda769a41b3e6a0f28454b84ceb Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Fri, 24 Jan 2025 20:52:53 +0300 Subject: [PATCH 09/23] Update SITES.md --- tests/__data__/expected/SITES.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/tests/__data__/expected/SITES.md b/tests/__data__/expected/SITES.md index 5f8597e3..4b99e838 100644 --- a/tests/__data__/expected/SITES.md +++ b/tests/__data__/expected/SITES.md @@ -1,14 +1,12 @@ # Sites -\* Total number of channels / with a valid `xmltv-id` - - + - - - + + +
SiteChannels *StatusNotes
SiteChannels
(total / with xmltv-id)
StatusNotes
iltalehti.fi142 / 44馃煛https://github.com/iptv-org/epg/issues/2396
indihometv.com130 / 124馃煝
kan.org.il6 / 6馃敶https://github.com/iptv-org/epg/issues/2273
iltalehti.fi14244馃煛https://github.com/iptv-org/epg/issues/2396
indihometv.com130124馃煝
kan.org.il66馃敶https://github.com/iptv-org/epg/issues/2273
From e17ce1c403f7d588f3dee6bb28c18f46978920e7 Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Fri, 24 Jan 2025 20:53:02 +0300 Subject: [PATCH 10/23] Update _sites.md --- scripts/templates/_sites.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/scripts/templates/_sites.md b/scripts/templates/_sites.md index a4c4b906..46191a4e 100644 --- a/scripts/templates/_sites.md +++ b/scripts/templates/_sites.md @@ -1,5 +1,3 @@ # Sites -\* Total number of channels / with a valid `xmltv-id` - _TABLE_ From eef2bf2815b63a739601f26b60c6ac6246793136 Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Fri, 24 Jan 2025 20:53:09 +0300 Subject: [PATCH 11/23] Update htmlTable.ts --- scripts/core/htmlTable.ts | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/scripts/core/htmlTable.ts b/scripts/core/htmlTable.ts index 72d6bd8d..144ba01b 100644 --- a/scripts/core/htmlTable.ts +++ b/scripts/core/htmlTable.ts @@ -2,9 +2,15 @@ type Column = { name: string nowrap?: boolean align?: string + colspan?: number } -type DataItem = string[] +type DataItem = { + value: string + nowrap?: boolean + align?: string + colspan?: number +}[] export class HTMLTable { data: DataItem[] @@ -20,20 +26,23 @@ export class HTMLTable { output += ' \r\n ' for (const column of this.columns) { - output += `${column.name}` + const nowrap = column.nowrap ? ' nowrap' : '' + const align = column.align ? ` align="${column.align}"` : '' + const colspan = column.colspan ? ` colspan="${column.colspan}"` : '' + + output += `${column.name}` } output += '\r\n \r\n' output += ' \r\n' - for (const item of this.data) { + for (const row 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++ + for (const item of row) { + const nowrap = item.nowrap ? ' nowrap' : '' + const align = item.align ? ` align="${item.align}"` : '' + const colspan = item.colspan ? ` colspan="${item.colspan}"` : '' + + output += `${item.value}` } output += '\r\n' } From 71aca65d86a89272398e2fde3dab221b31009b6f Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Fri, 24 Jan 2025 20:53:17 +0300 Subject: [PATCH 12/23] Update update.ts --- scripts/commands/sites/update.ts | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/scripts/commands/sites/update.ts b/scripts/commands/sites/update.ts index 4b587df4..9ffc0b4b 100644 --- a/scripts/commands/sites/update.ts +++ b/scripts/commands/sites/update.ts @@ -40,19 +40,20 @@ async function main() { const data = new Collection() sites.forEach((site: Site) => { data.add([ - `${site.domain}`, - `${site.totalChannels} / ${site.markedChannels}`, - site.getStatus().emoji, - site.getIssues().all().join(', ') + { value: `${site.domain}` }, + { value: site.totalChannels, align: 'right' }, + { value: site.markedChannels, align: 'right' }, + { value: site.getStatus().emoji, align: 'center' }, + { value: site.getIssues().all().join(', ') } ]) }) logger.info('updating sites.md...') const table = new HTMLTable(data.all(), [ - { name: 'Site' }, - { name: 'Channels *', align: 'center' }, - { name: 'Status' }, - { name: 'Notes' } + { name: 'Site', align: 'left' }, + { name: 'Channels
(total / with xmltv-id)', colspan: 2, align: 'left' }, + { name: 'Status', align: 'left' }, + { name: 'Notes', align: 'left' } ]) const rootStorage = new Storage(ROOT_DIR) const sitesTemplate = await new Storage().load('scripts/templates/_sites.md') From 01b99fe98f4a161fc6d7f497e239fddcb56b8a09 Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Fri, 24 Jan 2025 20:53:27 +0300 Subject: [PATCH 13/23] Update SITES.md --- SITES.md | 444 +++++++++++++++++++++++++++---------------------------- 1 file changed, 221 insertions(+), 223 deletions(-) diff --git a/SITES.md b/SITES.md index 6324c2ee..f22dba8f 100644 --- a/SITES.md +++ b/SITES.md @@ -1,231 +1,229 @@ # Sites -\* Total number of channels / with a valid `xmltv-id` - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SiteChannels *StatusNotes
SiteChannels
(total / with xmltv-id)
StatusNotes
9tv.co.il1 / 1馃煝
abc.net.au540 / 55馃煝
allente.dk74 / 44馃煝
allente.fi71 / 25馃煝
allente.no84 / 53馃煝
allente.se92 / 92馃煝
andorradifusio.ad1 / 1馃煝
anteltv.com.uy53 / 47馃煝
antennaeurope.gr1 / 1馃煝
antennapacific.gr1 / 1馃煝
antennasatellite.gr1 / 1馃煝
arianaafgtv.com1 / 1馃煝
arianatelevision.com1 / 1馃煝
arirang.com3 / 3馃煝
artonline.tv5 / 5馃煝
awilime.com111 / 0馃煝
bein.com160 / 160馃煝
beinsports.com104 / 81馃煝
berrymedia.co.kr5 / 5馃煝
cablego.com.pe100 / 20馃煝
cableplus.com.uy171 / 47馃煝
canalplus.com11591 / 212馃煝
cgates.lt102 / 61馃煝
chada.ma1 / 1馃煝
chaines-tv.orange.fr296 / 147馃煝
clickthecity.com32 / 30馃煝
content.astro.com.my157 / 112馃煝
cosmotetv.gr108 / 0馃煝
cubmu.com174 / 122馃煝
cyta.com.cy116 / 0馃煝
dens.tv67 / 64馃煝
digea.gr92 / 0馃煝
digiturk.com.tr108 / 107馃煝
directv.com1043 / 698馃敶https://github.com/iptv-org/epg/issues/2284
directv.com.ar412 / 229馃敶https://github.com/iptv-org/epg/issues/2339
directv.com.uy143 / 142馃煝
dishtv.in394 / 287馃敶https://github.com/iptv-org/epg/issues/2445
dna.fi122 / 0馃煝
dsmart.com.tr104 / 90馃煝
dstv.com6983 / 181馃煝
elcinema.com224 / 193馃煝
ena.skylifetv.co.kr6 / 6馃煝
energeek.cl6 / 3馃煝
entertainment.ie109 / 95馃煝
epg.112114.xyz930 / 1馃煝
epg.iptvx.one2862 / 0馃煝
epg.telemach.ba259 / 0馃煝
epg.telemach.me216 / 0馃煝
firstmedia.com116 / 101馃煝
foxsports.com.au7 / 7馃煝
foxtel.com.au155 / 87馃煝
freeview.co.uk165 / 89馃煝
frikanalen.no1 / 1馃煝
galamtv.kz27 / 22馃煝
gatotv.com475 / 362馃煝
getafteritmedia.com5 / 5馃煝
gigatv.3bbtv.co.th79 / 38馃煝
guiadetv.com124 / 0馃煝
guida.tv88 / 88馃煝
guidatv.sky.it168 / 153馃煝
horizon.tv184 / 172馃煝
hoy.tv3 / 1馃煝
i.mjh.nz6458 / 1488馃煝
i24news.tv4 / 3馃煝
iltalehti.fi142 / 44馃煝
indihometv.com130 / 124馃煝
ionplustv.com1 / 1馃煝
ipko.tv194 / 152馃煝
jiotv.com1094 / 0馃煝
kan.org.il3 / 3馃敶https://github.com/iptv-org/epg/issues/2273
knr.gl1 / 1馃煝
kvf.fo1 / 1馃煝
m.tv.sms.cz1027 / 451馃煝
m.tving.com30 / 26馃煝
magticom.ge240 / 110馃煝
mako.co.il1 / 1馃煝
maxtvgo.mk110 / 48馃煝
mediagenie.co.kr5 / 4馃煝
mediaklikk.hu8 / 8馃煝
mediasetinfinity.mediaset.it13 / 13馃煝
melita.com127 / 111馃煝
meo.pt216 / 127馃煝
meuguia.tv102 / 97馃煝
mewatch.sg25 / 24馃煝
mi.tv2084 / 620馃煝
mncvision.id276 / 223馃煝
moji.id1 / 1馃煝
mojmaxtv.hrvatskitelekom.hr243 / 0馃煝
mon-programme-tv.be111 / 95馃煝
movistarplus.es178 / 0馃煝
mtel.ba417 / 220馃煝
mts.rs457 / 0馃煝
mujtvprogram.cz216 / 203馃煝
musor.tv181 / 146馃煝
mysky.com.ph115 / 43馃煝
mytelly.co.uk488 / 401馃煝
mytvsuper.com108 / 99馃煝
neo.io337 / 241馃煝
nhkworldpremium.com2 / 2馃煝
nhl.com1 / 1馃煝
nostv.pt168 / 141馃煝
novacyprus.com29 / 24馃煝
novasports.gr16 / 16馃煝
nowplayer.now.com288 / 229馃煝
nuevosiglo.com.uy173 / 47馃煝
nzxmltv.com532 / 118馃煝
ontvtonight.com5177 / 532馃煝
opto.sic.pt4 / 2馃煝
orangetv.orange.es168 / 165馃煝
osn.com118 / 98馃煝
pbsguam.org1 / 1馃煝
pickx.be378 / 332馃煝
player.ee.co.uk241 / 206馃煝
playtv.unifi.com.my66 / 61馃煝
plex.tv170 / 119馃煝
pluto.tv3302 / 0馃煝
programacion-tv.elpais.com195 / 105馃煝
programacion.tcc.com.uy149 / 56馃煝
programetv.ro331 / 225馃煝
programme-tv.net295 / 197馃煝
programme-tv.vini.pf58 / 2馃煝
programme.tvb.com8 / 6馃煝
programtv.onet.pl589 / 315馃煝
raiplay.it17 / 13馃煝
reportv.com.ar163 / 97馃煝
rikstv.no80 / 0馃煝
rotana.net32 / 28馃煝
rtb.gov.bn3 / 3馃敶https://github.com/iptv-org/epg/issues/2257
rthk.hk8 / 8馃煝
rtmklik.rtm.gov.my8 / 6馃煝
rtp.pt10 / 10馃煝
ruv.is2 / 2馃煝
s.mxtv.jp2 / 2馃煝
sat.tv31173 / 277馃煝
shahid.mbc.net306 / 120馃煝
siba.com.co98 / 96馃煝
singtel.com155 / 113馃煝
sjonvarp.is13 / 13馃煝
sky.co.nz111 / 93馃煝
sky.com532 / 433馃煝
sky.de75 / 75馃煝
skylife.co.kr251 / 0馃煝
skyperfectv.co.jp137 / 130馃煝
snrt.ma11 / 5馃煝
sporttv.pt9 / 8馃煝
starhubtvplus.com232 / 208馃煝
startimestv.com77 / 58馃煝
stod2.is12 / 8馃煝
streamingtvguides.com3066 / 1馃煝
superguidatv.it204 / 163馃煝
taiwanplus.com1 / 1馃煝
tapdmv.com39 / 7馃煝
telebilbao.es1 / 1馃煝
telenet.tv260 / 91馃煝
teliatv.ee342 / 233馃煝
telkussa.fi66 / 32馃煝
telsu.fi17 / 15馃煝
thesportplus.com3 / 0馃煝
tivie.id50 / 49馃煝
tivu.tv69 / 66馃煝
toonamiaftermath.com1 / 1馃煝
turksatkablo.com.tr175 / 167馃煝
tv-programme.telecablesat.fr268 / 250馃煝
tv-spored.siol.net312 / 0馃煝
tv.blue.ch1030 / 565馃煝
tv.cctv.com94 / 88馃煝
tv.dir.bg111 / 96馃煝
tv.lv137 / 49馃煝
tv.magenta.at307 / 228馃煝
tv.mail.ru664 / 644馃煝
tv.movistar.com.pe282 / 40馃煝
tv.nu199 / 181馃煝
tv.post.lu332 / 242馃煝
tv.sfr.fr503 / 0馃煝
tv.trueid.net266 / 74馃煝
tv.yandex.ru97 / 67馃煝
tv24.co.uk119 / 45馃煝
tv24.se326 / 157馃煝
tv2go.t-2.net335 / 254馃煝
tvarenasport.com14 / 12馃煝
tvarenasport.hr10 / 10馃煝
tvcesoir.fr135 / 133馃煝
tvcubana.icrt.cu10 / 10馃煝
tvgids.nl115 / 90馃煝
tvguide.com153 / 150馃煝
tvguide.myjcom.jp145 / 140馃煝
tvhebdo.com317 / 215馃煝
tvheute.at53 / 53馃煝
tvim.tv25 / 19馃煝
tvinsider.com374 / 0馃煝
tvireland.ie334 / 304馃煝
tvmi.mt3 / 3馃煝
tvmusor.hu99 / 68馃煝
tvmustra.hu188 / 0馃煝
tvpassport.com19287 / 0馃煝
tvplus.com.tr143 / 134馃煝
tvprofil.com5836 / 457馃煝
tvtv.us2299 / 2256馃煝
v3.myafn.dodmedia.osd.mil8 / 8馃煝
vidio.com47 / 46馃煝
virginmediatelevision.ie5 / 5馃煝
virgintvgo.virginmedia.com238 / 195馃煝
visionplus.id250 / 226馃煝
vivoplay.com.br389 / 0馃煝
vtm.be7 / 6馃煝
walesi.com.fj9 / 8馃煝
watch.sportsnet.ca8 / 8馃煝
watchyour.tv40 / 24馃煝
wavve.com77 / 76馃煝
web.magentatv.de348 / 247馃煝
webtv.delta.nl247 / 218馃煝
winplay.co2 / 2馃煝
worldfishingnetwork.com1 / 1馃煝
www3.nhk.or.jp1 / 1馃煝
xem.kplus.vn77 / 0馃煝
xumo.tv350 / 32馃煝
zap.co.ao114 / 64馃煝
ziggogo.tv152 / 130馃煝
znbc.co.zm4 / 4馃煝
zuragt.mn36 / 25馃煝
9tv.co.il11馃煝
abc.net.au54055馃煝
allente.dk7444馃煝
allente.fi7125馃煝
allente.no8453馃煝
allente.se9292馃煝
andorradifusio.ad11馃煝
anteltv.com.uy5347馃煝
antennaeurope.gr11馃煝
antennapacific.gr11馃煝
antennasatellite.gr11馃煝
arianaafgtv.com11馃煝
arianatelevision.com11馃煝
arirang.com33馃煝
artonline.tv55馃煝
awilime.com1110馃煝
bein.com160160馃煝
beinsports.com10481馃煝
berrymedia.co.kr55馃煝
cablego.com.pe10020馃煝
cableplus.com.uy17147馃煝
canalplus.com11591212馃煝
cgates.lt10261馃煝
chada.ma11馃煝
chaines-tv.orange.fr296147馃煝
clickthecity.com3230馃煝
content.astro.com.my157112馃煝
cosmotetv.gr1080馃煝
cubmu.com174122馃煝
cyta.com.cy1160馃煝
dens.tv6764馃煝
digea.gr920馃煝
digiturk.com.tr108107馃煝
directv.com1043698馃敶https://github.com/iptv-org/epg/issues/2284
directv.com.ar412229馃敶https://github.com/iptv-org/epg/issues/2339
directv.com.uy143142馃煝
dishtv.in394287馃敶https://github.com/iptv-org/epg/issues/2445
dna.fi1220馃煝
dsmart.com.tr10490馃煝
dstv.com6983181馃煝
elcinema.com224193馃煝
ena.skylifetv.co.kr66馃煝
energeek.cl63馃煝
entertainment.ie10995馃煝
epg.112114.xyz9301馃煝
epg.iptvx.one28620馃煝
epg.telemach.ba2590馃煝
epg.telemach.me2160馃煝
firstmedia.com116101馃煝
foxsports.com.au77馃煝
foxtel.com.au15587馃煝
freeview.co.uk16589馃煝
frikanalen.no11馃煝
galamtv.kz2722馃煝
gatotv.com475362馃煝
getafteritmedia.com55馃煝
gigatv.3bbtv.co.th7938馃煝
guiadetv.com1240馃煝
guida.tv8888馃煝
guidatv.sky.it168153馃煝
horizon.tv184172馃煝
hoy.tv31馃煝
i.mjh.nz64581488馃煝
i24news.tv43馃煝
iltalehti.fi14244馃煝
indihometv.com130124馃煝
ionplustv.com11馃煝
ipko.tv194152馃煝
jiotv.com10940馃煝
kan.org.il33馃敶https://github.com/iptv-org/epg/issues/2273
knr.gl11馃煝
kvf.fo11馃煝
m.tv.sms.cz1027451馃煝
m.tving.com3026馃煝
magticom.ge240110馃煝
mako.co.il11馃煝
maxtvgo.mk11048馃煝
mediagenie.co.kr54馃煝
mediaklikk.hu88馃煝
mediasetinfinity.mediaset.it1313馃煝
melita.com127111馃煝
meo.pt216127馃煝
meuguia.tv10297馃煝
mewatch.sg2524馃煝
mi.tv2084620馃煝
mncvision.id276223馃煝
moji.id11馃煝
mojmaxtv.hrvatskitelekom.hr2430馃煝
mon-programme-tv.be11195馃煝
movistarplus.es1780馃煝
mtel.ba417220馃煝
mts.rs4570馃煝
mujtvprogram.cz216203馃煝
musor.tv181146馃煝
mysky.com.ph11543馃煝
mytelly.co.uk488401馃煝
mytvsuper.com10899馃煝
neo.io337241馃煝
nhkworldpremium.com22馃煝
nhl.com11馃煝
nostv.pt168141馃煝
novacyprus.com2924馃煝
novasports.gr1616馃煝
nowplayer.now.com288229馃煝
nuevosiglo.com.uy17347馃煝
nzxmltv.com532118馃煝
ontvtonight.com5177532馃煝
opto.sic.pt42馃煝
orangetv.orange.es168165馃煝
osn.com11898馃煝
pbsguam.org11馃煝
pickx.be378332馃煝
player.ee.co.uk241206馃煝
playtv.unifi.com.my6661馃煝
plex.tv170119馃煝
pluto.tv33020馃煝
programacion-tv.elpais.com195105馃煝
programacion.tcc.com.uy14956馃煝
programetv.ro331225馃煝
programme-tv.net295197馃煝
programme-tv.vini.pf582馃煝
programme.tvb.com86馃煝
programtv.onet.pl589315馃煝
raiplay.it1713馃煝
reportv.com.ar16397馃煝
rikstv.no800馃煝
rotana.net3228馃煝
rtb.gov.bn33馃敶https://github.com/iptv-org/epg/issues/2257
rthk.hk88馃煝
rtmklik.rtm.gov.my86馃煝
rtp.pt1010馃煝
ruv.is22馃煝
s.mxtv.jp22馃煝
sat.tv31173277馃煝
shahid.mbc.net306120馃煝
siba.com.co9896馃煝
singtel.com155113馃煝
sjonvarp.is1313馃煝
sky.co.nz11193馃煝
sky.com532433馃煝
sky.de7575馃煝
skylife.co.kr2510馃煝
skyperfectv.co.jp137130馃煝
snrt.ma115馃煝
sporttv.pt98馃煝
starhubtvplus.com232208馃煝
startimestv.com7758馃煝
stod2.is128馃煝
streamingtvguides.com30661馃煝
superguidatv.it204163馃煝
taiwanplus.com11馃煝
tapdmv.com397馃煝
telebilbao.es11馃煝
telenet.tv26091馃煝
teliatv.ee342233馃煝
telkussa.fi6632馃煝
telsu.fi1715馃煝
thesportplus.com30馃煝
tivie.id5049馃煝
tivu.tv6966馃煝
toonamiaftermath.com11馃煝
turksatkablo.com.tr175167馃煝
tv-programme.telecablesat.fr268250馃煝
tv-spored.siol.net3120馃煝
tv.blue.ch1030565馃煝
tv.cctv.com9488馃煝
tv.dir.bg11196馃煝
tv.lv13749馃煝
tv.magenta.at307228馃煝
tv.mail.ru664644馃煝
tv.movistar.com.pe28240馃煝
tv.nu199181馃煝
tv.post.lu332242馃煝
tv.sfr.fr5030馃煝
tv.trueid.net26674馃煝
tv.yandex.ru9767馃煝
tv24.co.uk11945馃煝
tv24.se326157馃煝
tv2go.t-2.net335254馃煝
tvarenasport.com1412馃煝
tvarenasport.hr1010馃煝
tvcesoir.fr135133馃煝
tvcubana.icrt.cu1010馃煝
tvgids.nl11590馃煝
tvguide.com153150馃煛https://github.com/iptv-org/epg/issues/2644
tvguide.myjcom.jp145140馃煝
tvhebdo.com317215馃煝
tvheute.at5353馃煝
tvim.tv2519馃煝
tvinsider.com3740馃煝
tvireland.ie334304馃煝
tvmi.mt33馃煝
tvmusor.hu9968馃煝
tvmustra.hu1880馃煝
tvpassport.com192870馃煝
tvplus.com.tr143134馃煝
tvprofil.com5836457馃煝
tvtv.us22992256馃煝
v3.myafn.dodmedia.osd.mil88馃煝
vidio.com4746馃煝
virginmediatelevision.ie55馃煝
virgintvgo.virginmedia.com238195馃煝
visionplus.id250226馃煝
vivoplay.com.br3890馃煝
vtm.be76馃煝
walesi.com.fj98馃煝
watch.sportsnet.ca88馃煝
watchyour.tv4024馃煝
wavve.com7776馃煝
web.magentatv.de348247馃煝
webtv.delta.nl247218馃煝
winplay.co22馃煝
worldfishingnetwork.com11馃煝
www3.nhk.or.jp11馃煝
xem.kplus.vn770馃煝
xumo.tv35032馃煝
zap.co.ao11464馃煝
ziggogo.tv152130馃煝
znbc.co.zm44馃煝
zuragt.mn3625馃煝
From 5e80d754acefe2615da024e1f52224aa52c59b7e Mon Sep 17 00:00:00 2001 From: "iptv-bot[bot]" <84861620+iptv-bot[bot]@users.noreply.github.com> Date: Sat, 25 Jan 2025 00:51:20 +0000 Subject: [PATCH 14/23] [Bot] Update SITES.md Committed by [iptv-bot](https://github.com/apps/iptv-bot) via [update](https://github.com/iptv-org/epg/actions/runs/12960153966) workflow. --- SITES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SITES.md b/SITES.md index 6324c2ee..ad44e0d9 100644 --- a/SITES.md +++ b/SITES.md @@ -191,7 +191,7 @@ tvcesoir.fr135 / 133馃煝 tvcubana.icrt.cu10 / 10馃煝 tvgids.nl115 / 90馃煝 - tvguide.com153 / 150馃煝 + tvguide.com153 / 150馃煛https://github.com/iptv-org/epg/issues/2644 tvguide.myjcom.jp145 / 140馃煝 tvhebdo.com317 / 215馃煝 tvheute.at53 / 53馃煝 From 71ab07fbea1e4a0ce7f71052c1f05e3301d60310 Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Sat, 25 Jan 2025 22:21:03 +0300 Subject: [PATCH 15/23] Update tests/__data__ --- tests/__data__/expected/custom_guide.xml | 3 --- tests/__data__/expected/guide.xml | 3 --- tests/__data__/expected/guide.xml.gz | Bin 385 -> 369 bytes 3 files changed, 6 deletions(-) diff --git a/tests/__data__/expected/custom_guide.xml b/tests/__data__/expected/custom_guide.xml index 41efdac8..a57b3322 100644 --- a/tests/__data__/expected/custom_guide.xml +++ b/tests/__data__/expected/custom_guide.xml @@ -9,9 +9,6 @@ Programme1 (example2.com) Program1 (example.com) Programme1 (example.com) -Programme1 (example2.com) Program1 (example2.com) -Program1 (example2.com) Program1 (example2.com) -Program1 (example2.com) \ No newline at end of file diff --git a/tests/__data__/expected/guide.xml b/tests/__data__/expected/guide.xml index 3de58428..66da48ee 100644 --- a/tests/__data__/expected/guide.xml +++ b/tests/__data__/expected/guide.xml @@ -9,9 +9,6 @@ Programme1 (example2.com) Program1 (example.com) Programme1 (example.com) -Programme1 (example2.com) Program1 (example2.com) -Program1 (example2.com) Program1 (example2.com) -Program1 (example2.com) \ No newline at end of file diff --git a/tests/__data__/expected/guide.xml.gz b/tests/__data__/expected/guide.xml.gz index e634dcdf7b1f693a63ccb139fc729a853a952c6f..fb9654e9306fc35871da65ca5b7c84a1fd713b42 100644 GIT binary patch literal 369 zcmV-%0gnD3iwFP!000006UCEVOT#b}hVKRcLkI|ptVy%FsifJ3;+-I(*Am*;1@mQ+ z&iU`9?t?k7&UMqfoV?+@59d9hqp4P4B7Bh6TDTyxaP!MH!Ug_&rO;IdA0KXd=MW5Y8pfbx zfoG6lLSjrX%nuJ}F=ASC2}GH}tFLn$)gI=w6y8eq-qTF+eA)srMc?je?PNX*!TL*t z_=G7dc~lrhQPZGkI(|n=WPK^pB1M*^L}4`WuE^j_P((siwQKaytGd_M_%^b-f~cbd zNefo;GgfV-VP*6tUWDSMV3BbZYAV}Qs4z+y?NJ}~Q`A2q1MawfA~-&4f&Yc6X$yVY zAwTO(<(N_&_`qD4t!#XO(*$D-PBF$90w0WB=ndk9-gMgXss#}w2a+{kgKL=IeJRD@ zcp Date: Sat, 25 Jan 2025 22:21:08 +0300 Subject: [PATCH 16/23] Update configLoader.ts --- scripts/core/configLoader.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/core/configLoader.ts b/scripts/core/configLoader.ts index 36c93d20..1beb3703 100644 --- a/scripts/core/configLoader.ts +++ b/scripts/core/configLoader.ts @@ -7,7 +7,7 @@ export class ConfigLoader { const fileUrl = pathToFileURL(filepath).toString() const config = (await import(fileUrl)).default const defaultConfig = { - days: 2, + days: 1, delay: 0, output: 'guide.xml', request: { From 7682eb28f1fe0d9151ed7412fa04f453963ba380 Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Sat, 25 Jan 2025 22:24:26 +0300 Subject: [PATCH 17/23] Update example.com.test.js --- .../expected/sites/sites-init/example.com.test.js | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/tests/__data__/expected/sites/sites-init/example.com.test.js b/tests/__data__/expected/sites/sites-init/example.com.test.js index 37d2d7b3..f462b6ef 100644 --- a/tests/__data__/expected/sites/sites-init/example.com.test.js +++ b/tests/__data__/expected/sites/sites-init/example.com.test.js @@ -6,7 +6,7 @@ dayjs.extend(customParseFormat) dayjs.extend(utc) const date = dayjs.utc('2025-01-12', 'YYYY-MM-DD').startOf('d') -const channel = { site_id: 'bbc1', xmltv_id: 'BBCOne.uk' } +const channel = { site_id: 'bbc1' } it('can generate valid url', () => { expect(url({ channel, date })).toBe('https://example.com/api/bbc1/2025-01-12') @@ -32,11 +32,7 @@ it('can parse response', () => { }) it('can handle empty guide', () => { - const result = parser({ - date, - channel, - content: '' - }) + const results = parser({ content: '' }) - expect(result).toMatchObject([]) + expect(results).toMatchObject([]) }) From b9fe49f763d52a0307b8543355dd14cbfcffb3b1 Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Sat, 25 Jan 2025 22:24:34 +0300 Subject: [PATCH 18/23] Update _test.js --- scripts/templates/_test.js | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/scripts/templates/_test.js b/scripts/templates/_test.js index 2bb4cebb..6375d7e7 100644 --- a/scripts/templates/_test.js +++ b/scripts/templates/_test.js @@ -6,7 +6,7 @@ dayjs.extend(customParseFormat) dayjs.extend(utc) const date = dayjs.utc('2025-01-12', 'YYYY-MM-DD').startOf('d') -const channel = { site_id: 'bbc1', xmltv_id: 'BBCOne.uk' } +const channel = { site_id: 'bbc1' } it('can generate valid url', () => { expect(url({ channel, date })).toBe('https://example.com/api/bbc1/2025-01-12') @@ -32,11 +32,7 @@ it('can parse response', () => { }) it('can handle empty guide', () => { - const result = parser({ - date, - channel, - content: '' - }) + const results = parser({ content: '' }) - expect(result).toMatchObject([]) + expect(results).toMatchObject([]) }) From f4c7371a3414419f1533fb6c3897bb02797ccf25 Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Sat, 25 Jan 2025 23:33:35 +0300 Subject: [PATCH 19/23] Update programtv.onet.pl.channels.xml --- .../programtv.onet.pl.channels.xml | 213 +++++++++--------- 1 file changed, 107 insertions(+), 106 deletions(-) diff --git a/sites/programtv.onet.pl/programtv.onet.pl.channels.xml b/sites/programtv.onet.pl/programtv.onet.pl.channels.xml index e2800456..b0435a11 100644 --- a/sites/programtv.onet.pl/programtv.onet.pl.channels.xml +++ b/sites/programtv.onet.pl/programtv.onet.pl.channels.xml @@ -1,18 +1,31 @@ + CT 1 + CT 2 + Nova + 13th Street 3SAT ARD-alpha + ATV Beate-Uhse.TV + Bibel TV Das Erste Deutsches Musik Fernsehen Discovery Channel (niem.) + DMAX + Erox HD + Eroxxx HD Eurosport 1 (niem.) Heimatkanal HISTORY HD (niem.) + HR + Kabel Eins KI.KA + Motorvision MTV Germany muenchen.tv Nitro + n-tv ONE ORF 1 ORF 2 @@ -20,7 +33,9 @@ PRO 7 QVC RBB + Redlight HD RTL + Super RTL RTLZWEI SAT.1 sixx @@ -28,8 +43,17 @@ Sky Hits Sky Comedy Sky Cinema Special + Sky Cinema + 24 Sky Krimi + Sky Sport Austria + Spiegel Geschichte + Sport 1 + SRF 1 + SRF Zwei Syfy + Tele 5 (niem.) + Vivid Touch + VOX WELT ZDF ZDF Info @@ -41,20 +65,19 @@ Bloomberg (ang.) Blue Hustler Brazzers TV Europe + Club MTV CNBC CNN - Dorcel TV - Dorcel XXX DW English Club TV - Erox HD - Eroxxx HD Euronews - EWTN + EWTN Fashion TV Fast&FunBox HD France 24 - EN + Freedom FunBox UHD + Ginx eSports TV God TV Hustler HD Hustler TV @@ -70,30 +93,40 @@ Playboy TV Private TV HD Reality Kings TV - Redlight HD SBN Sky News + Stingray Classica + Stingray CMusic + Stingray DJAZZ + Stingray iConcerts Vivid RED HD - Vivid Touch + TVE Arte + Dorcel TV + Dorcel XXX France 2 - PL France 24 + M 6 + RTS Un + RTS Deux + TV 5 Monde Europe + RAI 1 + RAI 2 + RTL 102.5 + Belgia - TV1 NPO 1 NPO 2 NPO 3 + 13 Ulica HD 2x2 2x2 HD - 4FUN KIDS - 13.tv - 13 Ulica HD 360TuneBox HD + 4FUN KIDS Active Family HD Adventure HD Al Jazeera Ale kino+ HD - Alfa TVP Animal Planet (niem.) - Antena Arte HD AXN HD AXN Spin HD @@ -115,14 +148,13 @@ CANAL+ Sport HD Cartoon Network HD Cartoon Network/Warner TV + CBS Europa CBS Europa HD CI Polsat HD - Cinemax2 HD Cinemax HD + Cinemax2 HD Stingray Classica HD Clubbing TV - Polsat Comedy Central Extra - Polsat Comedy Central Extra HD Comedy Central HD Current Time Current Time HD @@ -146,10 +178,8 @@ DR 1 DR 2 ducktv HD - E! Entertainment HD E-SPORT E-SPORT HD - Echo 24 Eleven Sports 3 HD Eleven Sports 1 HD Eleven Sports 2 HD @@ -172,7 +202,6 @@ FightTime FILMAX FilmBox Arthouse HD - FilmBox Premium HD Fokus TV HD Food Network HD - EN FX Comedy HD @@ -183,9 +212,8 @@ Goldstar TV Golf Channel HD HISTORY2 HD - HBO2 HD - HBO3 HD HBO HD + HBO2 HD HGTV HD HISTORY HD GM24 @@ -198,12 +226,10 @@ CANAL+ KUCHNIA HD Kus Kus Kvartal TV - New TV MDR METRO HD AMC HD MiniMini+ HD - MIXTAPE Motowizja HD MTV Europe MTV Polska HD @@ -217,7 +243,6 @@ National Geographic HD Nautical Channel HD NDR - News24 NICK Nick Jr. HD Nicktoons HD @@ -231,7 +256,6 @@ Nuta.TV HD ONTV ONTV HD - Planete+ HD Polonia 1 Polsat 2 HD Polsat Caf茅 HD @@ -274,95 +298,64 @@ Stingray DJAZZ HD Stingray iConcerts HD STOPKLATKA HD - StudioMED TV Sundance TV HD Super Polsat HD XTREME TV Wydarzenia 24 HD SWR TBN Polska HD - TeenNick Tele 5 HD teleTOON+ HD Telewizja Pomerania TLC HD - Warner TV HD - Top Kids - Top Kids HD JUNIOR MUSIC - JUNIOR MUSIC HD TOYA Travel Channel HD TTV HD TV 4 HD TV 6 HD - TV ASTA - TV ASTA HD TV.Berlin TV Okazje HD TV Puls HD TV Regio TV Regionalna Lubin TV Republika HD - TVN 7 HD TVN24 BiS HD TVN 24 HD + TVN 7 HD TVN Fabu艂a HD TVN HD TVN Style HD TVN Turbo HD TVP 1 HD TVP 2 HD - TVP 3 Bia艂ystok - TVP 3 Bydgoszcz - TVP 3 Gda艅sk - TVP 3 Gorz贸w Wielkopolski - TVP 3 Katowice - TVP 3 Kielce - TVP 3 Krak贸w - TVP 3 艁贸d藕 - TVP 3 Lublin - TVP 3 Olsztyn - TVP 3 Opole - TVP 3 Pozna艅 - TVP 3 Rzesz贸w - TVP 3 Szczecin - TVP 3 Warszawa - TVP 3 Wroc艂aw - TVP Dokument TVP Info HD - TVP Kobieta TVP Kultura HD - TVP Nauka TVP Sport HD - TVP Wilno HOME TV HD - tvregionalna.pl TVS HD - TVT Twoja Telewizja Morska Twoja.TV Ukraina 1 Ukraina 2 - ULTRA TV 4K Water Planet HD WDR WP HD wPolsce.pl HD - WTK XSport ZDF HD ZOOM TV HD + 13.tv + 13 Ulica 4FUN DANCE 4FUN.TV - 13th Street - 13 Ulica Active Family Adventure Ale kino+ + Alfa TVP AMC Animal Planet HD - ATV + Antena AXN Black AXN AXN Spin @@ -373,7 +366,6 @@ BBC First BBC Lifestyle Belsat TV - Bibel TV Bollywood HD Cartoonito CANAL+ 1 @@ -385,21 +377,17 @@ CANAL+ KUCHNIA CANAL+ PREMIUM CANAL+ Seriale + CANAL+ Sport CANAL+ Sport 2 CANAL+ Sport 3 CANAL+ Sport 4 - CANAL+ Sport Cartoon Network BBC CBeebies - CBS Europa CBS Reality Cinemax2 Cinemax - Club MTV Comedy Central CI Polsat - CT 1 - CT 2 Da Vinci Disco Polo Music Discovery Channel @@ -409,12 +397,12 @@ Disney Channel Disney Junior Disney XD - DMAX DocuBox HD DTX ducktv - Belgia - TV1 + Echo 24 E! Entertainment + E! Entertainment HD Eleven Sports 1 Eleven Sports 2 Eleven Sports 3 @@ -433,42 +421,43 @@ FilmBox Arthouse FilmBox Extra HD FilmBox Family + FilmBox Premium HD Fokus TV Folx TV Food Network FX FX Comedy - Freedom Gametoon HD - Ginx eSports TV Golf Channel + HBO HBO2 HBO3 - HBO + HBO3 HD HGTV - HISTORY2 HISTORY + HISTORY2 HOME TV - HR ID - Kabel Eins + JUNIOR MUSIC HD + Kabaret TV Kino Polska Kino Polska Muzyka Kino TV - M 6 MCM Top METRO Mezzo Live HD MiniMini+ - Motorvision + MIXTAPE Motowizja - MTV 00s MTV Polska + MTV 00s Music Box MyZen.tv HD Nat Geo People National Geographic National Geographic Wild + News24 + New TV Nickelodeon Nick Jr. NickMusic @@ -476,22 +465,24 @@ Novela tv Nowa TV CANAL+ Sport 5 - n-tv Nuta.TV Paramount Network Planete+ + Planete+ HD Polo TV + Polsat Polsat 1 Polsat 2 - Polsat Polsat Caf茅 + Polsat Comedy Central Extra + Polsat Comedy Central Extra HD Polsat Doku Polsat Film Polsat Games Polsat JimJam Polsat Music - Polsat News 2 Polsat News + Polsat News 2 Polsat Play Polsat Rodzina Polsat Seriale @@ -510,83 +501,93 @@ Polsat Viasat Nature HD Power TV PULS 2 - RAI 1 - RAI 2 - Record TV Red Carpet TV TV Relax RFM TV rheinmaintv Romance TV - RTL 102.5 - Super RTL - RTS Un - RTS Deux SCI FI - Sky Cinema + 24 - Sky Sport Austria - Spiegel Geschichte - Sport 1 Sportklub - SRF 1 - SRF Zwei STARS.TV - Stingray Classica - Stingray CMusic - Stingray DJAZZ - Stingray iConcerts Stingray Juicebox HD Stingray Loud HD Stingray Retro STOPKLATKA + StudioMED TV Sundance TV Super Polsat Wydarzenia 24 TBN Polska - Tele 5 (niem.) + TeenNick Tele 5 teleTOON+ TLC - Warner TV + Top Kids + Top Kids HD Travel Channel - Travelxp 4K Travelxp HD + Travelxp 4K TTV TV 4 - TV 5 Monde Europe TV 6 - TVE - TVN 7 + TV ASTA + TV ASTA HD + TVN TVN 24 TVN24 BiS - TVN + TVN 7 TVN Fabu艂a - Nova TVN Style TVN Turbo TV Okazje TVP 1 TVP 2 + TVP 3 Bia艂ystok + TVP 3 Bydgoszcz + TVP 3 Gda艅sk + TVP 3 Gorz贸w Wielkopolski + TVP 3 Katowice + TVP 3 Kielce + TVP 3 Krak贸w + TVP 3 艁贸d藕 + TVP 3 Lublin + TVP 3 Olsztyn + TVP 3 Opole + TVP 3 Pozna艅 + TVP 3 Rzesz贸w + TVP 3 Szczecin TVP 3 + TVP 3 Warszawa + TVP 3 Wroc艂aw TVP ABC + TVP Dokument TVP HD TVP Historia TVP Info + TVP Kobieta TVP Kultura + TVP Nauka TVP Polonia TVP Rozrywka TVP Seriale TVP Sport TV Puls + TVP Wilno TVP World + tvregionalna.pl TV Republika TVS + TVT TV Trwam - VOX + ULTRA TV 4K VOX Music TV + Warner TV + Warner TV HD Water Planet EinsLive wPolsce.pl WP + WTK ZOOM TV + Record TV \ No newline at end of file From a57ac947f31e1f9caeb33e6f6acdfd1c6aa13479 Mon Sep 17 00:00:00 2001 From: fraudiay79 <60631277+fraudiay79@users.noreply.github.com> Date: Sat, 25 Jan 2025 21:09:50 -0500 Subject: [PATCH 20/23] Update readme.md --- sites/canalplus.com/readme.md | 1 + 1 file changed, 1 insertion(+) diff --git a/sites/canalplus.com/readme.md b/sites/canalplus.com/readme.md index 302ed326..3ee8706a 100644 --- a/sites/canalplus.com/readme.md +++ b/sites/canalplus.com/readme.md @@ -16,6 +16,7 @@ | Equatorial Guinea | `gp` | https://www.canalplus.com/gp/programme-tv/ | | France | `fr` | https://www.canalplus.com/programme-tv/ | | French Guiana | `gf` | https://www.canalplus.com/gf/programme-tv/ | +| French Polynesia | `pf` | https://www.canalplus.com/pf/programme-tv/ | | Gabon | `ga` | https://www.canalplus.com/ga/programme-tv/ | | Gambia | `gm` | https://www.canalplus.com/gm/programme-tv/ | | Ghana | `gh` | https://www.canalplus.com/gh/programme-tv/ | From a274b63c17901f9e1bf8fb107f8c506ec029d307 Mon Sep 17 00:00:00 2001 From: fraudiay79 <60631277+fraudiay79@users.noreply.github.com> Date: Sat, 25 Jan 2025 21:10:31 -0500 Subject: [PATCH 21/23] Create canalplus.com_pf.channels.xml --- .../canalplus.com_pf.channels.xml | 132 ++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 sites/canalplus.com/canalplus.com_pf.channels.xml diff --git a/sites/canalplus.com/canalplus.com_pf.channels.xml b/sites/canalplus.com/canalplus.com_pf.channels.xml new file mode 100644 index 00000000..a1c9a113 --- /dev/null +++ b/sites/canalplus.com/canalplus.com_pf.channels.xml @@ -0,0 +1,132 @@ + + + Arte + France 2 + France 3 + France 4 + France 5 + France Info + France 24 + TF1 + M6 + LCI + BBC WORLD + INFOSPORT + + TEVA + CANAL+ CINEMA(S) + W9 + TELETOON + + CHAINE JEUNESSE 2 + GULLI + CANAL+ + PARIS PREMIERE + CANAL+ SPORT 360 + CANAL+ SPORT + CANAL+ FOOT + BEIN SPORT 1 + BEIN SPORT 2 + BEIN SPORT 3 + PLANETE+ + OCS HD + C8 + CHAINE DECOUVERTE 1 + CHAINE DECOUVERTE 2 + COMEDIE+ + LCP + DORCEL TV + Polyn茅sie 1ere + TNTV + CANAL+ Kids + CANAL+ Docs + CINE+ Frisson + CINE+ Family + CINE+ Emotion + CINE+ FESTIVAL + CINE+ Classic + BFM Business + BFM TV + 6TER + Ushuaia + TiJi + PIWI+ + C Star hits en Fr + NRJ12 + MGG + RMC Story + Seasons + Histoire TV + Cheval TV + EMCI + ABC Australia + TF1 SERIES FILMS + TMC + TFX + VIXEN + GOLF+ + CNEWS + Novelas TV + PACIFIC+ + RMC DECOUVERTE + CSTAR + NHK + EUROSPORT 1 + EUROSPORT 2 + PLANETE+ AVENTURE + STAR TVE + Cha卯ne Info Anglophone + FOX NEWS + PUNCH TV + CANAL EVENEMENT + FRANCE TV PARIS 2024 + CNN + SPORT EN FRANCE + DAZN 1 + DAZN 2 + DAZN 3 + DAZN 4 + DAZN 5 + EVANGILE TV + DISCOVERY CHANNEL + CANAL+ BOX OFFICE + CANAL+ SERIES + TCM CINEMA + CHERIE 25 + CARTOON NETWORK + BOOMERANG + PLANETE+ CRIME + TEST DROM + WARNER TV + WARNER TV NEXT + EUROSPORT 3 + EUROSPORT 4 + EUROSPORT 5 + EUROSPORT 6 + EUROSPORT 7 + EUROSPORT 8 + EUROSPORT 9 + MULTISPORT 1 + MULTISPORT 2 + MULTISPORT 3 + MULTISPORT 4 + CARTOONITO + TLC + DISCOVERY INVESTIGATION + CANAL+LIVE 1 + CANAL+LIVE 2 + CANAL+LIVE 3 + CANAL+LIVE 4 + CANAL+LIVE 5 + CANAL+LIVE 6 + CANAL+LIVE 7 + CANAL+LIVE 8 + CANAL+LIVE 9 + CANAL+LIVE 10 + CANAL+LIVE 11 + CANAL+LIVE 12 + CANAL+LIVE 13 + CANAL+LIVE 14 + CANAL+LIVE 15 + CANAL+LIVE 16 + CANAL+LIVE 17 + CANAL+LIVE 18 + From 5cc9896314f677438ef089d82b7bd29bdc4d0392 Mon Sep 17 00:00:00 2001 From: fraudiay79 <60631277+fraudiay79@users.noreply.github.com> Date: Sat, 25 Jan 2025 21:11:14 -0500 Subject: [PATCH 22/23] Update canalplus.com.config.js --- sites/canalplus.com/canalplus.com.config.js | 1 + 1 file changed, 1 insertion(+) diff --git a/sites/canalplus.com/canalplus.com.config.js b/sites/canalplus.com/canalplus.com.config.js index 79b75b96..d6d2679b 100644 --- a/sites/canalplus.com/canalplus.com.config.js +++ b/sites/canalplus.com/canalplus.com.config.js @@ -86,6 +86,7 @@ module.exports = { mu: 'cpmus/mu', nc: 'cpncl/nc', ne: 'cpafr/ne', + pf: 'cppyf/pf', pl: 'cppol', re: 'cpreu/re', rw: 'cpafr/rw', From 765b43dcb26940340c0068d8731dcf0c4dcdd915 Mon Sep 17 00:00:00 2001 From: "iptv-bot[bot]" <84861620+iptv-bot[bot]@users.noreply.github.com> Date: Tue, 28 Jan 2025 00:54:48 +0000 Subject: [PATCH 23/23] [Bot] Update SITES.md Committed by [iptv-bot](https://github.com/apps/iptv-bot) via [update](https://github.com/iptv-org/epg/actions/runs/13001390708) workflow. --- SITES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SITES.md b/SITES.md index ad44e0d9..77da2441 100644 --- a/SITES.md +++ b/SITES.md @@ -28,7 +28,7 @@ berrymedia.co.kr5 / 5馃煝 cablego.com.pe100 / 20馃煝 cableplus.com.uy171 / 47馃煝 - canalplus.com11591 / 212馃煝 + canalplus.com11720 / 212馃煝 cgates.lt102 / 61馃煝 chada.ma1 / 1馃煝 chaines-tv.orange.fr296 / 147馃煝