diff --git a/.github/workflows/auto-update.yml b/.github/workflows/auto-update.yml
index 28b78573..cfbae66e 100644
--- a/.github/workflows/auto-update.yml
+++ b/.github/workflows/auto-update.yml
@@ -35,7 +35,8 @@ jobs:
tvtv.us,
tv.lv,
vidio.com,
- tvguide.com
+ tvguide.com,
+ tvprofil.com
]
steps:
- name: Checkout
diff --git a/README.md b/README.md
index cbd77a52..464faf45 100644
--- a/README.md
+++ b/README.md
@@ -14,15 +14,19 @@ To load a program guide, all you need to do is copy the link to one of the guide
+ 🇦🇱 Albania | https://iptv-org.github.io/epg/guides/tvprofil.com.guide.xml |
🇦🇩 Andorra | https://iptv-org.github.io/epg/guides/andorradifusio.ad.guide.xml |
🇦🇷 Argentina | https://iptv-org.github.io/epg/guides/mi.tv.guide.xml |
🇦🇺 Australia | https://iptv-org.github.io/epg/guides/ontvtonight.com.guide.xml |
🇧🇾 Belarus | https://iptv-org.github.io/epg/guides/tv.yandex.ru.guide.xml |
🇧🇴 Bolivia | https://iptv-org.github.io/epg/guides/comteco.com.bo.guide.xml |
+ 🇧🇦 Bosnia | https://iptv-org.github.io/epg/guides/tvprofil.com.guide.xml |
🇧🇷 Brasil | https://iptv-org.github.io/epg/guides/mi.tv.guide.xml |
+ 🇧🇬 Bulgaria | https://iptv-org.github.io/epg/guides/tvprofil.com.guide.xml |
🇨🇦 Canada | https://iptv-org.github.io/epg/guides/tvtv.ca.guide.xml |
🇨🇱 Chile | https://iptv-org.github.io/epg/guides/mi.tv.guide.xml |
🇨🇴 Colombia | https://iptv-org.github.io/epg/guides/mi.tv.guide.xml |
+ 🇭🇷 Croatia | https://iptv-org.github.io/epg/guides/tvprofil.com.guide.xml |
🇨🇿 Czechia | https://iptv-org.github.io/epg/guides/m.tv.sms.cz.guide.xml |
🇸🇻 El Salvador | https://iptv-org.github.io/epg/guides/mi.tv.guide.xml |
🇫🇮 Finland | https://iptv-org.github.io/epg/guides/telkussa.fi.guide.xml |
@@ -31,6 +35,7 @@ To load a program guide, all you need to do is copy the link to one of the guide
🇬🇷 Greece | https://iptv-org.github.io/epg/guides/cosmote.gr.guide.xml |
🇬🇹 Guatemala | https://iptv-org.github.io/epg/guides/mi.tv.guide.xml |
🇭🇳 Honduras | https://iptv-org.github.io/epg/guides/mi.tv.guide.xml |
+ 🇭🇺 Hungary | https://iptv-org.github.io/epg/guides/tvprofil.com.guide.xml |
🇮🇩 Indonesia | https://iptv-org.github.io/epg/guides/vidio.com.guide.xml |
🇮🇹 Italy | https://iptv-org.github.io/epg/guides/guidatv.sky.it.guide.xml |
🇮🇪 Ireland | https://iptv-org.github.io/epg/guides/ontvtonight.com.guide.xml |
@@ -38,12 +43,16 @@ To load a program guide, all you need to do is copy the link to one of the guide
🇱🇻 Latvia | https://iptv-org.github.io/epg/guides/tv.lv.guide.xml |
🇲🇾 Malaysia | https://iptv-org.github.io/epg/guides/astro.com.my.guide.xml |
🇲🇽 Mexico | https://iptv-org.github.io/epg/guides/mi.tv.guide.xml |
+ 🇲🇪 Montenegro | https://iptv-org.github.io/epg/guides/tvprofil.com.guide.xml |
+ 🇲🇰 North Macedonia | https://iptv-org.github.io/epg/guides/tvprofil.com.guide.xml |
🇵🇾 Paraguay | https://iptv-org.github.io/epg/guides/mi.tv.guide.xml |
🇵🇪 Peru | https://iptv-org.github.io/epg/guides/mi.tv.guide.xml |
🇵🇱 Poland | https://iptv-org.github.io/epg/guides/programtv.onet.pl.guide.xml |
🇵🇹 Portugal | https://iptv-org.github.io/epg/guides/meo.pt.guide.xml |
🇷🇴 Romania | https://iptv-org.github.io/epg/guides/programetv.ro.guide.xml |
🇷🇺 Russia | https://iptv-org.github.io/epg/guides/tv.yandex.ru.guide.xml |
+ 🇷🇸 Serbia | https://iptv-org.github.io/epg/guides/tvprofil.com.guide.xml |
+ 🇸🇮 Slovenia | https://iptv-org.github.io/epg/guides/tvprofil.com.guide.xml |
🇪🇸 Spain | https://iptv-org.github.io/epg/guides/programacion-tv.elpais.com.guide.xml |
🇸🇪 Sweden | https://iptv-org.github.io/epg/guides/telkussa.fi.guide.xml |
🇹🇷 Turkey | https://iptv-org.github.io/epg/guides/digiturk.com.tr.guide.xml |
diff --git a/package-lock.json b/package-lock.json
index b2ea6772..554f1be0 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,7 +1,1301 @@
{
"name": "epg",
+ "lockfileVersion": 2,
"requires": true,
- "lockfileVersion": 1,
+ "packages": {
+ "": {
+ "license": "MIT",
+ "dependencies": {
+ "cheerio": "^1.0.0-rc.10",
+ "dayjs": "^1.10.4",
+ "epg-grabber": "^0.6.6",
+ "epg-parser": "^0.1.3",
+ "glob": "^7.1.6",
+ "html-to-text": "^7.0.0",
+ "iconv-lite": "^0.4.24",
+ "jsdom": "^16.5.0",
+ "parse-duration": "^1.0.0",
+ "xml-js": "^1.6.11"
+ }
+ },
+ "node_modules/abab": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz",
+ "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q=="
+ },
+ "node_modules/acorn": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.1.0.tgz",
+ "integrity": "sha512-LWCF/Wn0nfHOmJ9rzQApGnxnvgfROzGilS8936rqN/lfcYkY9MYZzdMqN+2NJ4SlTc+m5HiSa+kNfDtI64dwUA==",
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-globals": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz",
+ "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==",
+ "dependencies": {
+ "acorn": "^7.1.1",
+ "acorn-walk": "^7.1.1"
+ }
+ },
+ "node_modules/acorn-globals/node_modules/acorn": {
+ "version": "7.4.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
+ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-walk": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
+ "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "node_modules/asn1": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
+ "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
+ "dependencies": {
+ "safer-buffer": "~2.1.0"
+ }
+ },
+ "node_modules/assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
+ },
+ "node_modules/aws-sign2": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
+ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/aws4": {
+ "version": "1.11.0",
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz",
+ "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA=="
+ },
+ "node_modules/axios": {
+ "version": "0.21.1",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz",
+ "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==",
+ "dependencies": {
+ "follow-redirects": "^1.10.0"
+ }
+ },
+ "node_modules/axios-cookiejar-support": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/axios-cookiejar-support/-/axios-cookiejar-support-1.0.1.tgz",
+ "integrity": "sha512-IZJxnAJ99XxiLqNeMOqrPbfR7fRyIfaoSLdPUf4AMQEGkH8URs0ghJK/xtqBsD+KsSr3pKl4DEQjCn834pHMig==",
+ "dependencies": {
+ "is-redirect": "^1.0.0",
+ "pify": "^5.0.0"
+ },
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
+ },
+ "node_modules/bcrypt-pbkdf": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
+ "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
+ "dependencies": {
+ "tweetnacl": "^0.14.3"
+ }
+ },
+ "node_modules/boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24="
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/browser-process-hrtime": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz",
+ "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow=="
+ },
+ "node_modules/caseless": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
+ },
+ "node_modules/cheerio": {
+ "version": "1.0.0-rc.10",
+ "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz",
+ "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==",
+ "dependencies": {
+ "cheerio-select": "^1.5.0",
+ "dom-serializer": "^1.3.2",
+ "domhandler": "^4.2.0",
+ "htmlparser2": "^6.1.0",
+ "parse5": "^6.0.1",
+ "parse5-htmlparser2-tree-adapter": "^6.0.1",
+ "tslib": "^2.2.0"
+ },
+ "engines": {
+ "node": ">= 6"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/cheerio?sponsor=1"
+ }
+ },
+ "node_modules/cheerio-select": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.5.0.tgz",
+ "integrity": "sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg==",
+ "dependencies": {
+ "css-select": "^4.1.3",
+ "css-what": "^5.0.1",
+ "domelementtype": "^2.2.0",
+ "domhandler": "^4.2.0",
+ "domutils": "^2.7.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/commander": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-7.1.0.tgz",
+ "integrity": "sha512-pRxBna3MJe6HKnBGsDyMv8ETbptw3axEdYHoqNh7gu5oDcew8fs0xnivZGm06Ogk8zGAJ9VX+OPEr2GXEQK4dg==",
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
+ },
+ "node_modules/core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
+ },
+ "node_modules/css-select": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz",
+ "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==",
+ "dependencies": {
+ "boolbase": "^1.0.0",
+ "css-what": "^5.0.0",
+ "domhandler": "^4.2.0",
+ "domutils": "^2.6.0",
+ "nth-check": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/css-what": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz",
+ "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==",
+ "engines": {
+ "node": ">= 6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/cssom": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz",
+ "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw=="
+ },
+ "node_modules/cssstyle": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz",
+ "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==",
+ "dependencies": {
+ "cssom": "~0.3.6"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cssstyle/node_modules/cssom": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz",
+ "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg=="
+ },
+ "node_modules/dashdash": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
+ "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+ "dependencies": {
+ "assert-plus": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/data-urls": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz",
+ "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==",
+ "dependencies": {
+ "abab": "^2.0.3",
+ "whatwg-mimetype": "^2.3.0",
+ "whatwg-url": "^8.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/dayjs": {
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.10.4.tgz",
+ "integrity": "sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw=="
+ },
+ "node_modules/decimal.js": {
+ "version": "10.2.1",
+ "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.1.tgz",
+ "integrity": "sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw=="
+ },
+ "node_modules/deep-is": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
+ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ="
+ },
+ "node_modules/deepmerge": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
+ "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/dom-serializer": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz",
+ "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==",
+ "dependencies": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.2.0",
+ "entities": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+ }
+ },
+ "node_modules/domelementtype": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz",
+ "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ]
+ },
+ "node_modules/domexception": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz",
+ "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==",
+ "dependencies": {
+ "webidl-conversions": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/domexception/node_modules/webidl-conversions": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz",
+ "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/domhandler": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz",
+ "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==",
+ "dependencies": {
+ "domelementtype": "^2.2.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
+ }
+ },
+ "node_modules/domutils": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.7.0.tgz",
+ "integrity": "sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg==",
+ "dependencies": {
+ "dom-serializer": "^1.0.1",
+ "domelementtype": "^2.2.0",
+ "domhandler": "^4.2.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domutils?sponsor=1"
+ }
+ },
+ "node_modules/ecc-jsbn": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
+ "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
+ "dependencies": {
+ "jsbn": "~0.1.0",
+ "safer-buffer": "^2.1.0"
+ }
+ },
+ "node_modules/entities": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz",
+ "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w=="
+ },
+ "node_modules/epg-grabber": {
+ "version": "0.6.6",
+ "resolved": "https://registry.npmjs.org/epg-grabber/-/epg-grabber-0.6.6.tgz",
+ "integrity": "sha512-EWTEIczzDPWywtDSLePtmBHpSphNHq2DJbe3OhQM8smaKBprAFtlZzpV+OrQY8aWk2UZsYAMNegtvrrD02IsNw==",
+ "dependencies": {
+ "axios": "^0.21.1",
+ "axios-cookiejar-support": "^1.0.1",
+ "commander": "^7.1.0",
+ "dayjs": "^1.10.4",
+ "glob": "^7.1.6",
+ "lodash.merge": "^4.6.2",
+ "tough-cookie": "^4.0.0",
+ "xml-js": "^1.6.11"
+ },
+ "bin": {
+ "epg-grabber": "src/index.js"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/epg-parser": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/epg-parser/-/epg-parser-0.1.3.tgz",
+ "integrity": "sha512-+PUYT8UAA598nD4AKleojSeb1QqpFJ6rdcMCrjc0tddkQ3Q7qRYfBMbl1mXj/YWRpoLCjE5RT9u8MsMI15H2xA==",
+ "dependencies": {
+ "xml-js": "^1.6.11"
+ }
+ },
+ "node_modules/escodegen": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz",
+ "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==",
+ "dependencies": {
+ "esprima": "^4.0.1",
+ "estraverse": "^5.2.0",
+ "esutils": "^2.0.2",
+ "optionator": "^0.8.1"
+ },
+ "bin": {
+ "escodegen": "bin/escodegen.js",
+ "esgenerate": "bin/esgenerate.js"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "optionalDependencies": {
+ "source-map": "~0.6.1"
+ }
+ },
+ "node_modules/esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
+ "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
+ },
+ "node_modules/extsprintf": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
+ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
+ "engines": [
+ "node >=0.6.0"
+ ]
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc="
+ },
+ "node_modules/follow-redirects": {
+ "version": "1.13.3",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.3.tgz",
+ "integrity": "sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA==",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/forever-agent": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
+ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/form-data": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
+ "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.6",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 0.12"
+ }
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
+ },
+ "node_modules/getpass": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
+ "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+ "dependencies": {
+ "assert-plus": "^1.0.0"
+ }
+ },
+ "node_modules/glob": {
+ "version": "7.1.6",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
+ "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/har-schema": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
+ "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/har-validator": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
+ "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
+ "dependencies": {
+ "ajv": "^6.12.3",
+ "har-schema": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/he": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
+ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
+ "bin": {
+ "he": "bin/he"
+ }
+ },
+ "node_modules/html-encoding-sniffer": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz",
+ "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==",
+ "dependencies": {
+ "whatwg-encoding": "^1.0.5"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/html-to-text": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/html-to-text/-/html-to-text-7.0.0.tgz",
+ "integrity": "sha512-UR/WMSHRN8m+L7qQUhbSoxylwBovNPS+xURn/pHeJvbnemhyMiuPYBTBGqB6s8ajAARN5jzKfF0d3CY86VANpA==",
+ "dependencies": {
+ "deepmerge": "^4.2.2",
+ "he": "^1.2.0",
+ "htmlparser2": "^6.0.0",
+ "minimist": "^1.2.5"
+ },
+ "bin": {
+ "html-to-text": "bin/cli.js"
+ },
+ "engines": {
+ "node": ">=10.23.2"
+ }
+ },
+ "node_modules/htmlparser2": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz",
+ "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==",
+ "funding": [
+ "https://github.com/fb55/htmlparser2?sponsor=1",
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "dependencies": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.0.0",
+ "domutils": "^2.5.2",
+ "entities": "^2.0.0"
+ }
+ },
+ "node_modules/http-signature": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
+ "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
+ "dependencies": {
+ "assert-plus": "^1.0.0",
+ "jsprim": "^1.2.2",
+ "sshpk": "^1.7.0"
+ },
+ "engines": {
+ "node": ">=0.8",
+ "npm": ">=1.3.7"
+ }
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+ },
+ "node_modules/is-potential-custom-element-name": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz",
+ "integrity": "sha1-DFLlS8yjkbssSUsh6GJtczbG45c="
+ },
+ "node_modules/is-redirect": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz",
+ "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
+ },
+ "node_modules/isstream": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
+ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
+ },
+ "node_modules/jsbn": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
+ },
+ "node_modules/jsdom": {
+ "version": "16.5.0",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.5.0.tgz",
+ "integrity": "sha512-QxZH0nmDTnTTVI0YDm4RUlaUPl5dcyn62G5TMDNfMmTW+J1u1v9gCR8WR+WZ6UghAa7nKJjDOFaI00eMMWvJFQ==",
+ "dependencies": {
+ "abab": "^2.0.5",
+ "acorn": "^8.0.5",
+ "acorn-globals": "^6.0.0",
+ "cssom": "^0.4.4",
+ "cssstyle": "^2.3.0",
+ "data-urls": "^2.0.0",
+ "decimal.js": "^10.2.1",
+ "domexception": "^2.0.1",
+ "escodegen": "^2.0.0",
+ "html-encoding-sniffer": "^2.0.1",
+ "is-potential-custom-element-name": "^1.0.0",
+ "nwsapi": "^2.2.0",
+ "parse5": "6.0.1",
+ "request": "^2.88.2",
+ "request-promise-native": "^1.0.9",
+ "saxes": "^5.0.1",
+ "symbol-tree": "^3.2.4",
+ "tough-cookie": "^4.0.0",
+ "w3c-hr-time": "^1.0.2",
+ "w3c-xmlserializer": "^2.0.0",
+ "webidl-conversions": "^6.1.0",
+ "whatwg-encoding": "^1.0.5",
+ "whatwg-mimetype": "^2.3.0",
+ "whatwg-url": "^8.0.0",
+ "ws": "^7.4.4",
+ "xml-name-validator": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/json-schema": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
+ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
+ },
+ "node_modules/json-stringify-safe": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
+ },
+ "node_modules/jsprim": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
+ "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+ "engines": [
+ "node >=0.6.0"
+ ],
+ "dependencies": {
+ "assert-plus": "1.0.0",
+ "extsprintf": "1.3.0",
+ "json-schema": "0.2.3",
+ "verror": "1.10.0"
+ }
+ },
+ "node_modules/levn": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+ "dependencies": {
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+ },
+ "node_modules/lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="
+ },
+ "node_modules/lodash.sortby": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
+ "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg="
+ },
+ "node_modules/mime-db": {
+ "version": "1.46.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz",
+ "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.29",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz",
+ "integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==",
+ "dependencies": {
+ "mime-db": "1.46.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/minimist": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
+ "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
+ },
+ "node_modules/nth-check": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz",
+ "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==",
+ "dependencies": {
+ "boolbase": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/nth-check?sponsor=1"
+ }
+ },
+ "node_modules/nwsapi": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz",
+ "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ=="
+ },
+ "node_modules/oauth-sign": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
+ "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/optionator": {
+ "version": "0.8.3",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
+ "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
+ "dependencies": {
+ "deep-is": "~0.1.3",
+ "fast-levenshtein": "~2.0.6",
+ "levn": "~0.3.0",
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2",
+ "word-wrap": "~1.2.3"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/parse-duration": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/parse-duration/-/parse-duration-1.0.0.tgz",
+ "integrity": "sha512-X4kUkCTHU1N/kEbwK9FpUJ0UZQa90VzeczfS704frR30gljxDG0pSziws06XlK+CGRSo/1wtG1mFIdBFQTMQNw=="
+ },
+ "node_modules/parse5": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
+ "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw=="
+ },
+ "node_modules/parse5-htmlparser2-tree-adapter": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz",
+ "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==",
+ "dependencies": {
+ "parse5": "^6.0.1"
+ }
+ },
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/performance-now": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
+ },
+ "node_modules/pify": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz",
+ "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/prelude-ls": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/psl": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
+ "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ=="
+ },
+ "node_modules/punycode": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/qs": {
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
+ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/request": {
+ "version": "2.88.2",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
+ "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
+ "dependencies": {
+ "aws-sign2": "~0.7.0",
+ "aws4": "^1.8.0",
+ "caseless": "~0.12.0",
+ "combined-stream": "~1.0.6",
+ "extend": "~3.0.2",
+ "forever-agent": "~0.6.1",
+ "form-data": "~2.3.2",
+ "har-validator": "~5.1.3",
+ "http-signature": "~1.2.0",
+ "is-typedarray": "~1.0.0",
+ "isstream": "~0.1.2",
+ "json-stringify-safe": "~5.0.1",
+ "mime-types": "~2.1.19",
+ "oauth-sign": "~0.9.0",
+ "performance-now": "^2.1.0",
+ "qs": "~6.5.2",
+ "safe-buffer": "^5.1.2",
+ "tough-cookie": "~2.5.0",
+ "tunnel-agent": "^0.6.0",
+ "uuid": "^3.3.2"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/request-promise-core": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz",
+ "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==",
+ "dependencies": {
+ "lodash": "^4.17.19"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/request-promise-native": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz",
+ "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==",
+ "dependencies": {
+ "request-promise-core": "1.1.4",
+ "stealthy-require": "^1.1.1",
+ "tough-cookie": "^2.3.3"
+ },
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/request-promise-native/node_modules/tough-cookie": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
+ "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
+ "dependencies": {
+ "psl": "^1.1.28",
+ "punycode": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/request/node_modules/tough-cookie": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
+ "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
+ "dependencies": {
+ "psl": "^1.1.28",
+ "punycode": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ },
+ "node_modules/sax": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
+ },
+ "node_modules/saxes": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz",
+ "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==",
+ "dependencies": {
+ "xmlchars": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "optional": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/sshpk": {
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
+ "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
+ "dependencies": {
+ "asn1": "~0.2.3",
+ "assert-plus": "^1.0.0",
+ "bcrypt-pbkdf": "^1.0.0",
+ "dashdash": "^1.12.0",
+ "ecc-jsbn": "~0.1.1",
+ "getpass": "^0.1.1",
+ "jsbn": "~0.1.0",
+ "safer-buffer": "^2.0.2",
+ "tweetnacl": "~0.14.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/stealthy-require": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz",
+ "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/symbol-tree": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
+ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw=="
+ },
+ "node_modules/tough-cookie": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz",
+ "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==",
+ "dependencies": {
+ "psl": "^1.1.33",
+ "punycode": "^2.1.1",
+ "universalify": "^0.1.2"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/tr46": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.0.2.tgz",
+ "integrity": "sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg==",
+ "dependencies": {
+ "punycode": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/tslib": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
+ "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
+ },
+ "node_modules/tunnel-agent": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+ "dependencies": {
+ "safe-buffer": "^5.0.1"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/tweetnacl": {
+ "version": "0.14.5",
+ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
+ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
+ },
+ "node_modules/type-check": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
+ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+ "dependencies": {
+ "prelude-ls": "~1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/uuid": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
+ "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
+ "bin": {
+ "uuid": "bin/uuid"
+ }
+ },
+ "node_modules/verror": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
+ "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
+ "engines": [
+ "node >=0.6.0"
+ ],
+ "dependencies": {
+ "assert-plus": "^1.0.0",
+ "core-util-is": "1.0.2",
+ "extsprintf": "^1.2.0"
+ }
+ },
+ "node_modules/w3c-hr-time": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz",
+ "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==",
+ "dependencies": {
+ "browser-process-hrtime": "^1.0.0"
+ }
+ },
+ "node_modules/w3c-xmlserializer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz",
+ "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==",
+ "dependencies": {
+ "xml-name-validator": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/webidl-conversions": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz",
+ "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==",
+ "engines": {
+ "node": ">=10.4"
+ }
+ },
+ "node_modules/whatwg-encoding": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz",
+ "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==",
+ "dependencies": {
+ "iconv-lite": "0.4.24"
+ }
+ },
+ "node_modules/whatwg-mimetype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz",
+ "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g=="
+ },
+ "node_modules/whatwg-url": {
+ "version": "8.4.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.4.0.tgz",
+ "integrity": "sha512-vwTUFf6V4zhcPkWp/4CQPr1TW9Ml6SF4lVyaIMBdJw5i6qUUJ1QWM4Z6YYVkfka0OUIzVo/0aNtGVGk256IKWw==",
+ "dependencies": {
+ "lodash.sortby": "^4.7.0",
+ "tr46": "^2.0.2",
+ "webidl-conversions": "^6.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/word-wrap": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
+ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
+ },
+ "node_modules/ws": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.4.tgz",
+ "integrity": "sha512-Qm8k8ojNQIMx7S+Zp8u/uHOx7Qazv3Yv4q68MiWWWOJhiwG5W3x7iqmRtJo8xxrciZUY4vRxUTJCKuRnF28ZZw==",
+ "engines": {
+ "node": ">=8.3.0"
+ }
+ },
+ "node_modules/xml-js": {
+ "version": "1.6.11",
+ "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz",
+ "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==",
+ "dependencies": {
+ "sax": "^1.2.4"
+ },
+ "bin": {
+ "xml-js": "bin/cli.js"
+ }
+ },
+ "node_modules/xml-name-validator": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
+ "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw=="
+ },
+ "node_modules/xmlchars": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
+ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw=="
+ }
+ },
"dependencies": {
"abab": {
"version": "2.0.5",
@@ -103,6 +1397,11 @@
"tweetnacl": "^0.14.3"
}
},
+ "boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24="
+ },
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -122,6 +1421,32 @@
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
},
+ "cheerio": {
+ "version": "1.0.0-rc.10",
+ "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz",
+ "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==",
+ "requires": {
+ "cheerio-select": "^1.5.0",
+ "dom-serializer": "^1.3.2",
+ "domhandler": "^4.2.0",
+ "htmlparser2": "^6.1.0",
+ "parse5": "^6.0.1",
+ "parse5-htmlparser2-tree-adapter": "^6.0.1",
+ "tslib": "^2.2.0"
+ }
+ },
+ "cheerio-select": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.5.0.tgz",
+ "integrity": "sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg==",
+ "requires": {
+ "css-select": "^4.1.3",
+ "css-what": "^5.0.1",
+ "domelementtype": "^2.2.0",
+ "domhandler": "^4.2.0",
+ "domutils": "^2.7.0"
+ }
+ },
"combined-stream": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
@@ -145,6 +1470,23 @@
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
},
+ "css-select": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz",
+ "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==",
+ "requires": {
+ "boolbase": "^1.0.0",
+ "css-what": "^5.0.0",
+ "domhandler": "^4.2.0",
+ "domutils": "^2.6.0",
+ "nth-check": "^2.0.0"
+ }
+ },
+ "css-what": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz",
+ "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg=="
+ },
"cssom": {
"version": "0.4.4",
"resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz",
@@ -209,19 +1551,19 @@
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
},
"dom-serializer": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.2.0.tgz",
- "integrity": "sha512-n6kZFH/KlCrqs/1GHMOd5i2fd/beQHuehKdWvNNffbGHTr/almdhuVvTVFb3V7fglz+nC50fFusu3lY33h12pA==",
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz",
+ "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==",
"requires": {
"domelementtype": "^2.0.1",
- "domhandler": "^4.0.0",
+ "domhandler": "^4.2.0",
"entities": "^2.0.0"
}
},
"domelementtype": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz",
- "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w=="
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz",
+ "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A=="
},
"domexception": {
"version": "2.0.1",
@@ -239,21 +1581,21 @@
}
},
"domhandler": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.0.0.tgz",
- "integrity": "sha512-KPTbnGQ1JeEMQyO1iYXoagsI6so/C96HZiFyByU3T6iAzpXn8EGEvct6unm1ZGoed8ByO2oirxgwxBmqKF9haA==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz",
+ "integrity": "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==",
"requires": {
- "domelementtype": "^2.1.0"
+ "domelementtype": "^2.2.0"
}
},
"domutils": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.5.0.tgz",
- "integrity": "sha512-Ho16rzNMOFk2fPwChGh3D2D9OEHAfG19HgmRR2l+WLSsIstNsAYBzePH412bL0y5T44ejABIVfTHQ8nqi/tBCg==",
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.7.0.tgz",
+ "integrity": "sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg==",
"requires": {
"dom-serializer": "^1.0.1",
- "domelementtype": "^2.0.1",
- "domhandler": "^4.0.0"
+ "domelementtype": "^2.2.0",
+ "domhandler": "^4.2.0"
}
},
"ecc-jsbn": {
@@ -430,13 +1772,13 @@
}
},
"htmlparser2": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.0.1.tgz",
- "integrity": "sha512-GDKPd+vk4jvSuvCbyuzx/unmXkk090Azec7LovXP8as1Hn8q9p3hbjmDGbUqqhknw0ajwit6LiiWqfiTUPMK7w==",
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz",
+ "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==",
"requires": {
"domelementtype": "^2.0.1",
"domhandler": "^4.0.0",
- "domutils": "^2.4.4",
+ "domutils": "^2.5.2",
"entities": "^2.0.0"
}
},
@@ -606,6 +1948,14 @@
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
},
+ "nth-check": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz",
+ "integrity": "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==",
+ "requires": {
+ "boolbase": "^1.0.0"
+ }
+ },
"nwsapi": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz",
@@ -647,6 +1997,14 @@
"resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
"integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw=="
},
+ "parse5-htmlparser2-tree-adapter": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz",
+ "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==",
+ "requires": {
+ "parse5": "^6.0.1"
+ }
+ },
"path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
@@ -822,6 +2180,11 @@
"punycode": "^2.1.1"
}
},
+ "tslib": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
+ "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
+ },
"tunnel-agent": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
diff --git a/package.json b/package.json
index e0797961..b9ca30c0 100644
--- a/package.json
+++ b/package.json
@@ -7,6 +7,7 @@
"author": "Arhey",
"license": "MIT",
"dependencies": {
+ "cheerio": "^1.0.0-rc.10",
"dayjs": "^1.10.4",
"epg-grabber": "^0.6.6",
"epg-parser": "^0.1.3",
diff --git a/sites/tvprofil.com.channels.xml b/sites/tvprofil.com.channels.xml
new file mode 100755
index 00000000..3aecaecc
--- /dev/null
+++ b/sites/tvprofil.com.channels.xml
@@ -0,0 +1,1430 @@
+
+
+
+ 13
+ 13 Ulica
+ 13th Street Deutschland
+ 20 Mediaset
+ 24 Kitchen Bulgaria
+ 24 Kitchen Srbija
+ 24 Kitchen Türkiye
+ 24 TV
+ 3 Plus
+ 3+
+ 360 Tune Box
+ 3sat
+ 4+
+ 4Fun Dance
+ 4Fun Kids
+ 4Fun.TV
+ 4Music
+ 4seven
+ 5 Select
+ 5+
+ 5Star
+ 5USA
+ 6+
+ 6ter
+ A Haber
+ A News
+ A Para
+ A Spor
+ A2
+ AB3
+ Action+
+ Active Family
+ Adventure
+ Agro TV
+ Agro TV
+ Al Jazeera Balkans
+ Al Jazeera English
+ Alfa TV
+ Alfa TV
+ Alibi UK
+ Alpha TV
+ Alsat
+ AMC Balkan
+ AMC Central Europe
+ AMC Magyarország
+ AMC Polska
+ Animal Planet Germany
+ Animal Planet Polska
+ Animal Planet Polska
+ Animal Planet UK
+ Animal Planet Россия
+ Anixe HD
+ Ant1 Europe
+ Antena 3
+ Antena HD
+ Apostol TV
+ ARD Alpha
+ Arena Esport
+ Arena Fight
+ Arena Sport 1
+ Arena Sport 1 BiH
+ Arena Sport 1 Hrvatska
+ Arena Sport 10 Hrvatska
+ Arena Sport 2
+ Arena Sport 2 Hrvatska
+ Arena Sport 3
+ Arena Sport 3 Hrvatska
+ Arena Sport 4 Hrvatska
+ Arena Sport 4 Hrvatska
+ Arena Sport 5 Hrvatska
+ Arena Sport 5 Hrvatska
+ Arena Sport 6 Hrvatska
+ Arena Sport 7 Hrvatska
+ Arena Sport 8 Hrvatska
+ Arena Sport 9 Hrvatska
+ Arena4
+ ARTE Deutsch
+ ARTE Français
+ At The Races
+ ATV
+ ATV
+ ATV
+ ATV Avrupa
+ ATV Türkiye
+ ATV2
+ Aurora TV
+ Auto Motor und Sport
+ AXN Adria
+ AXN Black
+ AXN Black Polska
+ AXN Bulgaria
+ AXN Central Europe
+ AXN España
+ AXN Polska
+ AXN Spin Adria
+ AXN Spin Polska
+ AXN White
+ AXN White España
+ AXN White Polska
+ B1
+ B1B Box
+ B92
+ BabyTV Español
+ BabyTV Europe
+ Balkan Trip
+ Balkanika TV
+ Bang Bang
+ Barely Legal TV
+ Bayern 3
+ BBC Alba
+ BBC Brit Polska
+ BBC Earth Polska
+ BBC Earth Romania
+ BBC Earth Türkiye
+ BBC First Polska
+ BBC Four
+ BBC Lifestyle Polska
+ BBC News
+ BBC One
+ BBC One Northern Ireland
+ BBC One Scotland
+ BBC Parliament
+ BBC Two
+ BBC World News
+ BBN Türk
+ BDC TV
+ Behar TV
+ beIN Sports 1
+ beIN Sports 1 France
+ beIN Sports 11
+ beIN Sports 2
+ beIN Sports 2 France
+ beIN Sports 2 France
+ beIN Sports 3
+ beIN Sports 4
+ beIN Sports 5
+ beIN Sports 6
+ beIN Sports 7
+ beIN Sports NBA
+ Beyaz TV
+ BG Music Channel
+ BG-DNES
+ BHT1
+ Bir TV
+ Bit TV
+ Bloomberg HT
+ Bloomberg TV Bulgaria
+ Bloomberg TV Europe
+ Blue Hustler Europe
+ BN 2
+ BN Music
+ BN TV
+ Boing España
+ Boing France
+ Bollywood TV Romania
+ Bon Gusto
+ Boomerang Central & Eastern Europe
+ Boomerang Deutschland
+ Boomerang Italia
+ Boomerang Türkiye
+ Box TV
+ Brainz TV
+ Brazzers TV Europe
+ Brio
+ British Eurosport 1
+ British Eurosport 2
+ BT Sport 1
+ BT Sport 2
+ BT Sport 3
+ BT Sport ESPN
+ bTV
+ bTV Action
+ bTV Cinema
+ bTV Comedy
+ bTV Comedy
+ bTV Lady
+ Bulgaria on Air
+ C8
+ Caccia
+ Calle 13
+ Canal 24 horas
+ Canal Cocina
+ Canal Hollywood España
+ Canal J
+ Canal Panda España
+ CANAL+ Cinema
+ CANAL+ Dokument
+ CANAL+ Family
+ CANAL+ Family
+ CANAL+ Family
+ CANAL+ France
+ CANAL+ Premium
+ CANAL+ Seriale
+ CANAL+ Series
+ CANAL+ Sport
+ CANAL+ Sport 2 Polska
+ CANAL+ Sport Polska
+ Canale 5
+ Capital Xtra
+ Cartoon Network Central & Eastern Europe
+ Cartoon Network Italia
+ Cartoon Network Polska
+ Cartoon Network Türkiye
+ Cartoon Network UK
+ Cartoonito Italia
+ Cartoonito UK
+ CBBC
+ CBeebies Polska
+ CBeebies UK
+ CBS Drama UK
+ CBS Europa
+ CBS Justice UK
+ CBS Reality Europe
+ CBS Reality Polska
+ CBS Reality UK
+ CCTV 4 Europe
+ Cero
+ CGTN
+ CGTN Documentary
+ Challenge UK
+ Channel 4 UK
+ Channel 4 UK +1
+ Channel 5
+ Channel S
+ Chérie 25
+ Cielo
+ CINE+ Premier
+ Cine34
+ Cinema TV
+ Cinema+
+ Cinemania
+ Cinemax 2 Central Europe
+ Cinemax Central Europe
+ CineStar TV 1 Hrvatska
+ CineStar TV 1 Srbija
+ CineStar TV 2 Hrvatska
+ CineStar TV Action Hrvatska
+ CineStar TV Action Srbija
+ CineStar TV Comedy
+ CineStar TV Fantasy
+ CineStar TV Premiere 1
+ CineStar TV Premiere 2
+ CITV
+ City TV
+ Clan TVE
+ Class TV Moda
+ Club MTV
+ Club RTL
+ Clubland TV
+ CMC TV
+ CNN International Europe
+ CNN Türk
+ Comedy Central Deutschland
+ Comedy Central España
+ Comedy Central España
+ Comedy Central Extra UK
+ Comedy Central Family Hungary
+ Comedy Central Hungary
+ Comedy Central Hungary
+ Comedy Central Italia
+ Comedy Central Polska
+ Comedy Central UK
+ Cool TV
+ Cosmopolitan TV España
+ Create and Craft TV
+ Crime & Investigation Italia
+ Crime & Investigation Polsat
+ Crime & Investigation UK
+ Crime & Investigation UK
+ Crimen & Investigación
+ CStar
+ Cuatro
+ D1 TV
+ Da Vinci
+ Da Vinci Polska
+ Das Erste
+ Dave UK
+ Daystar
+ DeA Junior
+ DeA Kids
+ Decasa
+ Deluxe Music
+ Dexy TV
+ Dečija TV
+ Diadora TV
+ Diema
+ Diema Family
+ Diema Family
+ Diema Sport
+ Diema Sport 2
+ Digi Animal World
+ Digi Life Hungary
+ Digi Sport 1 Hungary
+ Digi Sport 1 Hungary
+ Digi Sport 3 Hungary
+ Digi World Hungary
+ Disco Polo Music
+ Discovery Channel Deutschland
+ Discovery Channel en Español
+ Discovery Channel Europe
+ Discovery Channel Hungary
+ Discovery Channel Italia
+ Discovery Channel Polska
+ Discovery Channel Türkiye
+ Discovery Channel UK
+ Discovery Science
+ Discovery Science Italia
+ Discovery Science UK
+ Discovery Turbo UK
+ Disney Channel Bulgaria
+ Disney Channel Deutschland
+ Disney Channel España
+ Disney Channel Hungary & Czechia
+ Disney Channel Romania
+ Disney Channel Türkiye
+ Disney Junior Deutschland
+ Disney Junior España
+ Disney Junior Romania & Bulgaria
+ Disney XD Polska
+ Divinity
+ Diyanet TV
+ Diyanet TV
+ DiziSmart Max
+ DM Sat
+ DMAX Deutschland
+ DMAX España
+ DMAX Italia
+ DMAX Türkiye
+ DMAX UK
+ DMC
+ DocuBox HD
+ Doku TV
+ Doma TV
+ Dorcel TV
+ Dorcel XXX
+ Dox TV
+ Dr. Fit Channel
+ Drama UK
+ Dream Türk
+ DSTV
+ DTX East Europe
+ Dubrovačka TV
+ Duck TV HD
+ Duna TV
+ Duna World
+ Dusk!
+ DW English
+ E! Deutschland
+ E! Europe
+ E4 UK
+ Eden
+ Eir Sport 1
+ EKids
+ Eleven Sports 1 Polska
+ Eleven Sports 2 Polska
+ Eleven Sports 3 Polska
+ Eleven Sports 4 Polska
+ Elta 1 HD
+ Energy
+ English Club TV
+ Epic Drama
+ Epic Drama Polska
+ Erox HD
+ Eroxxx HD
+ Eska Rock TV
+ Eska TV
+ Eska TV Extra
+ ETV HD
+ Euro D
+ Eurochannel
+ Euronews Albania
+ Eurosport 1
+ Eurosport 1
+ Eurosport 1 España
+ Eurosport 1 France
+ Eurosport 1 Germany
+ Eurosport 1 Italia
+ Eurosport 1 Polska
+ Eurosport 2
+ Eurosport 2
+ Eurosport 2 España
+ Eurosport 2 France
+ Eurosport 2 Italia
+ Eurosport 2 Polska
+ Evrokom
+ EWTN Europe
+ Exodus TV
+ Explorer Histori
+ Explorer Natyra
+ Explorer Shkencë
+ Extreme Sports Channel
+ Extreme Sports Channel Polska
+ F+
+ Face TV
+ FashionBox HD
+ FashionTV Europe
+ Fast&Fun Box HD
+ FB TV
+ FDF
+ Federalna TV
+ Fehérvár TV
+ FEM3
+ Fen Folk
+ Fen TV
+ Fight Channel
+ Fight Klub
+ Fight Network
+ FightBox HD
+ Film 4 UK
+ Film Aksion
+ Film Café Hungary
+ Film Drame
+ Film Dy HD
+ Film Hits
+ Film Klub
+ Film Klub Extra
+ Film Komedi
+ Film Mánia
+ Film Një HD
+ Film Now Hungary
+ Film Thriller
+ Film+ Hungary
+ Film4
+ FilmBox Action
+ FilmBox Arthouse Worldwide
+ FilmBox Extra HD Polska
+ FilmBox Premium Polska
+ FilmBox Stars Adria
+ FilmBox Stars Hungary
+ FilmBox Türkiye
+ Fix & Foxi
+ Focus
+ Fokus TV
+ Folklor TV
+ Food Network EMEA
+ Food Network Polska
+ Food Network UK
+ Forces TV
+ Fox Bulgaria
+ Fox Comedy Polska
+ Fox Crime Adria
+ Fox Crime Srbija
+ Fox Crime Türkiye
+ Fox Deutschland
+ Fox España
+ Fox Italia
+ Fox Life Bulgaria
+ Fox Life España
+ Fox Life Regional
+ Fox Life Srbija
+ Fox Movies Srbija
+ Fox News
+ Fox Polska
+ Fox Srbija
+ Fox Türkiye
+ France 2
+ France 24 Arabic
+ France 24 English
+ France 24 Français
+ France 3
+ France 4
+ France 5
+ Franceinfo
+ FreeSports
+ Frisbee
+ Fuel TV
+ FX Türkiye
+ Galaxy4
+ Galicia TV Europa
+ Gambero Rosso
+ GameHub
+ Gametoon
+ Gea TV
+ Gems TV
+ Giallo TV
+ Ginx eSports TV International
+ Gold UK
+ Gold UK
+ Golf Channel Polska
+ Golica TV
+ Grand TV
+ GTV
+ Gulli
+ Gyöngyösi TV
+ H!T Music Channel Hungary
+ Ha Ha
+ Haber Global
+ Habertürk TV
+ Happy
+ Hayat
+ Hayat Folk
+ Hayat Music
+ Hayat Plus
+ Hayatovci
+ HBO Adria
+ HBO Hungary
+ HBO Polska
+ HBO2 Central Europe
+ HBO2 Polska
+ HBO3 Central Europe
+ HBO3 Polska
+ Heimatkanal
+ HGTV Polska
+ HGTV UK
+ HGTV UK
+ Hispan TV
+ History 2 Polska
+ History 2 Polska
+ History Deutschland
+ History en Español
+ History Europe
+ History Italia
+ History Polska
+ HNTV
+ Hobby TV
+ Horror Channel UK
+ HR Fernsehen
+ HRT 1
+ HRT 2
+ HRT 3
+ HRT 4
+ HRT International
+ HSE24
+ HSE24 Extra
+ HSE24 Trend
+ Hustler TV Europe
+ Hír TV
+ Iberalia TV
+ Ideal World
+ IDJ TV
+ Imperia TV
+ In TV
+ Inspiration TV
+ Inter TV
+ Investigation Discovery Europe
+ Investigation Discovery Polska
+ Investigation Discovery UK
+ Iris
+ Italia 1
+ Italia 2
+ ITV 2 +1
+ ITV Be
+ ITV Channel TV
+ ITV2
+ ITV3
+ ITV4
+ iTVN Europe
+ iTVN Extra
+ Izaura TV
+ Izvorna TV
+ Jabuka TV
+ JimJam Europe
+ JimJam Polsat
+ JML Direct TV
+ Jocky TV
+ Jolly HD
+ Jugoton TV
+ K2
+ K::CN 1
+ K::CN 2 Music
+ K::CN Svet+ 3
+ Kabel Eins Austria
+ Kabel Eins Classics
+ Kabel Eins Doku Austria
+ Kanal 1
+ Kanal 5
+ Kanal 6
+ Kanal 7
+ Kanal 9
+ Kanal A
+ Kanal D
+ Kanal Ri
+ Ketchup TV
+ KiKA
+ Kino
+ Kino Nova
+ Kino Polska
+ Kino Polska Muzyka
+ Kino TV
+ Kino TV
+ Kinowelt TV
+ Kiss TV
+ Kitchen TV
+ Klan Kosova
+ Klan Macedonia
+ Klan Plus
+ Klape i Tambure
+ Klasik TV
+ Kohavision
+ Kral Pop TV
+ Kreator TV
+ KTV Ormož
+ Kuchnia+
+ Kurir TV
+ La 1
+ La 1 Catalunya
+ La 2
+ La Sexta
+ La5
+ La7
+ La7d
+ Laeffe
+ Laudato TV
+ Lazio Style Channel
+ LCI
+ Libertas TV
+ Life TV
+ Lifetime Polska
+ Living HD
+ Lol
+ London Live
+ Lov i ribolov
+ M1
+ M1 Film
+ M1 Gold
+ M2
+ M3
+ M4
+ M5
+ M6
+ Magic TV
+ Magic TV
+ Max Sport 1
+ Max Sport 2
+ Max Sport 3
+ Max Sport 4
+ MCM France
+ MDR
+ Mediaset Extra
+ Mediaset Italia
+ Metro
+ Mezzo
+ Mezzo Live HD
+ Milan TV
+ Mini TV
+ minikaGO
+ Minimax Romania
+ MiniMini+
+ More4 UK
+ Motor Trend
+ Motorvision TV
+ Motowizja
+ Movie Generation TV
+ Movie Star
+ Movies 24
+ MovieSmart Classic
+ MovieSmart Premium
+ MovieSmart Premium 2
+ MovieSmart Türk
+ Movistar Acción
+ Movistar Cine Español
+ Movistar Comedia
+ Movistar Deportes
+ Movistar Deportes 2
+ Movistar Drama
+ Movistar Estrenos
+ Movistar F1
+ Movistar Golf
+ Movistar Series
+ Movistar Series Xtra
+ Mozi+
+ Moziverzum
+ Mreža TV
+ Mreža TV
+ MRT 1
+ MRT 2
+ MRT 3
+ MRT 4
+ MTV 80s
+ MTV 90s
+ MTV Base UK
+ MTV Classic UK
+ MTV Europe
+ MTV Germany
+ MTV Hits Europe
+ MTV Hits UK
+ MTV Hungary
+ MTV Igman
+ MTV Italia
+ MTV Live HD
+ MTV Music Italia
+ MTV Music Polska
+ MTV Music UK
+ MTV Polska
+ MTV UK
+ Muse
+ MUTV
+ Muzsika TV
+ myZen TV
+ n-tv Austria
+ N1 Bosna i Hercegovina
+ N1 Hrvatska
+ N1 Srbija
+ N24 Doku
+ Nat Geo People
+ National Geographic Bulgaria
+ National Geographic Channel HD Europe
+ National Geographic Deutschland
+ National Geographic España
+ National Geographic Hungary & Czechia
+ National Geographic Italia
+ National Geographic Polska
+ National Geographic Türkiye
+ National Geographic UK
+ National Geographic Wild Bulgaria
+ National Geographic Wild Deutschland
+ National Geographic Wild España
+ National Geographic Wild Hungary
+ National Geographic Wild Italia
+ National Geographic Wild Polska
+ National Geographic Wild Türkiye
+ National Geographic Wild UK
+ Nautical Channel
+ Naša TV
+ NBA TV
+ NDR Fernsehen
+ Neon TV
+ Neox
+ Net TV
+ News 24
+ Nick Jr Central & Eastern Europe
+ Nick Jr Deutschland
+ Nick Jr España
+ Nick Jr Hungary
+ Nick Jr Italia
+ Nick Jr Too UK
+ Nick Jr UK
+ Nickelodeon Deutschland
+ Nickelodeon en Español
+ Nickelodeon Europe
+ Nickelodeon Italia
+ Nickelodeon Magyarország
+ Nickelodeon Polska
+ Nickelodeon UK
+ Nicktoons Adria
+ Nicktoons Deutschland
+ Nicktoons Polska
+ NickToons UK
+ Nitro Deutschland
+ Nostalgia
+ Nova
+ Nova 24 TV
+ Nova BH
+ Nova Cinema
+ Nova M
+ Nova News
+ Nova S
+ Nova Sport
+ Nova Sport
+ Nova TV
+ Nova TV
+ Nova World
+ Nove
+ Novela TV
+ Novosadska TV
+ Now 70s
+ Now 80s
+ Now 90s
+ Nowa TV
+ NRJ 12
+ nSport+
+ NTV
+ NTV 101
+ NTV Amna
+ NTV IC
+ NTV Jasmin
+ Number 1 Türk
+ Nuta TV
+ O Kanal
+ OBN
+ Odisea
+ One
+ Ora News
+ ORF 1
+ ORF 2
+ ORF III
+ ORF Sport +
+ Osječka TV
+ OSM TV
+ Oto
+ OTV Valentino
+ Paramount Channel España
+ Paramount Channel Polska
+ Paramount Network Hungary
+ Paramount Network Italia
+ Paris Première
+ Passion XXX
+ Pax TV
+ PBS America
+ Pesca
+ PeTV
+ Phoenix
+ Pick UK
+ Pickbox TV
+ Pikaboo
+ Pikaboo 2
+ Pink Action
+ Pink BH
+ Pink Classic
+ Pink Comedy
+ Pink Crime & Mystery
+ Pink Erotic 1
+ Pink Erotic 2
+ Pink Erotic 3
+ Pink Erotic 4
+ Pink Erotic 5
+ Pink Erotic 6
+ Pink Erotic 7
+ Pink Erotic 8
+ Pink Extra
+ Pink Family
+ Pink Fashion
+ Pink Film
+ Pink Folk 1
+ Pink Folk 2
+ Pink Hits
+ Pink Horror
+ Pink Kids
+ Pink Koncert
+ Pink Kuvar
+ Pink M
+ Pink Movies
+ Pink Music
+ Pink n Roll
+ Pink Parada
+ Pink Pedia
+ Pink Plus
+ Pink Premium
+ Pink Reality
+ Pink Romance
+ Pink Sci-Fi & Fantasy
+ Pink Serije
+ Pink Show
+ Pink Soap
+ Pink Srbija
+ Pink Style
+ Pink Super Kids
+ Pink Thriller
+ Pink Timeout
+ Pink Western
+ Pink World
+ Pink World Cinema
+ Pink Zabava
+ Planet 2
+ Planet Earth
+ Planet TV
+ Planeta Folk
+ Planeta TV
+ Planete+ Polska
+ Plava televizija
+ Plava Vinkovačka
+ Playboy TV Europe
+ Plovdivska Pravoslavna TV
+ Poljoprivredna TV
+ Polo TV
+ Polonia 1
+ Polsat
+ Polsat 2
+ Polsat Café
+ Polsat Comedy Central Extra
+ Polsat Doku
+ Polsat Film
+ Polsat Games
+ Polsat Music
+ Polsat News
+ Polsat News 2
+ Polsat Play
+ Polsat Rodzina
+ Polsat Rodzina
+ Polsat Seriale
+ Polsat Sport
+ Polsat Sport Extra
+ Polsat Sport Fight
+ Polsat Sport News
+ Polsat Viasat Explore
+ Polsat Viasat History
+ Polsat Viasat Nature
+ Pop
+ Pop Max
+ Pop TV
+ Power TV
+ Power TV
+ Power Türk TV
+ Premium Action
+ Premium Cinema 1
+ Premium Crime
+ Premium Stories
+ Prime
+ Private TV
+ ProSieben Deutschland
+ ProSieben Fun
+ ProSieben Maxx Deutschland
+ Prva Files
+ Prva Kick
+ Prva Life
+ Prva Max
+ Prva Plus
+ Prva Srpska TV
+ Prva TV Crna Gora
+ Prva World
+ Puls 2
+ Puls Acht
+ Pulse 4
+ Quest UK
+ QVC Beauty
+ QVC Deutschland
+ QVC Style
+ QVC Style Deutschland
+ QVC Zwei
+ Radio Bremen Fernsehen
+ Radio Italia TV
+ Radiofreccia
+ Rai 1
+ Rai 2
+ Rai 3
+ Rai 3 Bis
+ Rai 4
+ Rai 5
+ Rai Gulp
+ Rai Movie
+ Rai News 24
+ Rai Premium
+ Rai Scuola
+ Rai Sport
+ Rai Storia
+ Rai Yoyo
+ Ras TV
+ rbb Fernsehen
+ Real Madrid TV
+ Real Time Italia
+ Really UK
+ Red Carpet TV
+ Red TV
+ Report TV
+ Rete 4
+ Revelation TV
+ Ring TV
+ RMC Story
+ RNF
+ Romance TV Deutschland
+ Romance TV Polska
+ RSI La 1
+ RSI La 2
+ RT
+ RT Documentary
+ RTK 1
+ RTL Adria Hrvatska
+ RTL Crime Deutschland
+ RTL Crime Hrvatska
+ RTL Croatia World
+ RTL Deutschland
+ RTL Deutschland
+ RTL Gold
+ RTL II
+ RTL Klub
+ RTL Kockica
+ RTL Living Deutschland
+ RTL Living Hrvatska
+ RTL Passion Deutschland
+ RTL Passion Hrvatska
+ RTL Plus
+ RTL Zwei Austria
+ RTL Zwei Deutschland
+ RTL+
+ RTSH 1
+ RTSH 2
+ RTSH 24
+ RTSH 3
+ RTSH Film
+ RTSH Gjirokastra
+ RTSH Plus
+ RTSH Sat
+ RTSH Shkolle
+ RTSH Shqip
+ RTSH Sport
+ RTV 1
+ RTV 2
+ RTV Budva
+ RTV Goražde
+ RTV HB
+ RTV HIT
+ RTV Pančevo
+ RTV Slobomir
+ RTV Slon
+ RTV Sreće
+ RTV USK
+ RTV Vikom
+ RTV Visoko
+ RTV Vogošća
+ RTV Zenica
+ RTV21
+ RTV7
+ RTVTK
+ S Sport
+ S Sport 2
+ S1
+ S4C
+ Samobor TV
+ Sat TV
+ Sat.1 Deutschland
+ Sat.1 Emotions
+ Sat.1 Gold Deutschland
+ SBTV
+ SchauTV
+ Scifi Srbija
+ Sevdah TV
+ Sexation TV
+ Show TV
+ Show Türk
+ Sinema 1001
+ Sinema 1002
+ Sinema 2
+ Sinema Aile
+ Sinema Aile 2
+ Sinema Aksiyon
+ Sinema Aksiyon 2
+ Sinema Komedi
+ Sinema Komedi 2
+ Sinema TV
+ Sinema Yerli
+ Sinema Yerli 2
+ SIP TV
+ Sitel TV
+ Sixx Austria
+ Sixx Deutschland
+ Sky Arte
+ Sky Arts UK
+ Sky Atlantic
+ Sky Atlantic
+ Sky Cinema Action
+ Sky Cinema Action
+ Sky Cinema Action
+ Sky Cinema Collection
+ Sky Cinema Comedy
+ Sky Cinema Comedy
+ Sky Cinema Drama
+ Sky Cinema Drama
+ Sky Cinema Due
+ Sky Cinema Family
+ Sky Cinema Family
+ Sky Cinema Family
+ Sky Cinema Greats
+ Sky Cinema Hits
+ Sky Cinema Premiere
+ Sky Cinema Romance
+ Sky Cinema Sci Fi & Horror
+ Sky Cinema Select
+ Sky Cinema Suspense
+ Sky Cinema Thriller
+ Sky Cinema Uno
+ Sky Documentaries UK
+ Sky History
+ Sky History 2
+ Sky Krimi
+ Sky News International
+ Sky One
+ Sky Sport 1
+ Sky Sport 2
+ Sky Sport 2
+ Sky Sport 24
+ Sky Sport 3
+ Sky Sport 9
+ Sky Sport Bundesliga 1
+ Sky Sport F1
+ Sky Sport MotoGP
+ Sky Sport NBA
+ Sky Sport Uno
+ Sky Sports Arena
+ Sky Sports Cricket
+ Sky Sports F1
+ Sky Sports Footbal
+ Sky Sports Golf
+ Sky Sports Main Event
+ Sky Sports Mix
+ Sky Sports News
+ Sky Sports Premier League UK
+ Sky Uno
+ Slavonska TV
+ Sláger TV
+ Smart TV
+ Smithsonian Channel UK
+ SonLife Broadcasting Network
+ Sony AXN
+ Sony Channel Deutschland
+ Sony Channel UK
+ Sony Max Hungary
+ Sony Movie Channel Hungary
+ Sony Movies +1
+ Sony Movies Action
+ Sony Movies Classic
+ Sony Movies UK
+ Sorozat+
+ Spektrum
+ Spektrum Home
+ Spiegel TV Wissen
+ Spor Smart
+ Spor Smart 2
+ Sport 1
+ Sport 1 Hungary
+ Sport 2 Hungary
+ Sport Klub 1 BiH
+ Sport Klub 1 Crna Gora
+ Sport Klub 1 Hrvatska
+ Sport Klub 1 Slovenija
+ Sport Klub 1 Srbija
+ Sport Klub 2 Slovenija
+ Sport Klub 2 Srbija
+ Sport Klub 3
+ Sport Klub 4
+ Sport Klub Esports
+ Sport Klub Golf
+ Sport Klub HD
+ Sport Klub Polska
+ Sport TV 1
+ Sport TV 2
+ Sport+ HD
+ Sport1+
+ Sportitalia
+ Spotlight TV
+ SPTV
+ Spíler1 TV
+ Spíler2 TV
+ SR Fernsehen
+ Sremska TV
+ SRF 1
+ SRF Info
+ SRF zwei
+ Star TV
+ Stars TV
+ Stinet
+ Stingray Classica
+ Stingray Djazz
+ Stingray iConcerts
+ Story4
+ Studio B
+ STV East
+ STV Folk
+ Sundance TV Espana
+ Sundance TV Europe
+ Super Polsat
+ Super RTL Deutschland
+ Super TV2
+ Super!
+ Superstar 2
+ Superstar TV
+ SuperTennis
+ Swiss 1
+ SWR Fernsehen
+ Syfy Deutschland
+ Syfy España
+ Syfy UK
+ Tagesschau24
+ Talking Pictures TV
+ TAY TV
+ TCM Espana
+ TCM Movies
+ Tele 1
+ Tele 5
+ Tele 5
+ TeleBärn
+ Telecinco
+ Teleclub Action
+ Teleclub Cinema
+ Teleclub City
+ Teleclub Emotion
+ Teleclub Retro
+ Teleclub Sport 1
+ Teledeporte
+ teleTOON+ Polska
+ Teletutto
+ Televizija 5
+ Televizija AS
+ TeleZüri
+ Telma
+ Teve 2
+ teve2
+ TF1
+ TF1 Séries Films
+ TFX
+ TGCOM24
+ TGRT Haber
+ The Box UK
+ The Fishing & Hunting Channel
+ The Voice TV
+ Tiankov Folk
+ Timeless Drama Channel
+ Tiny Pop
+ Tip TV
+ TJC
+ TLC Balkan
+ TLC Polska
+ TLC Türkiye
+ TLC UK
+ TMC Suisse
+ TNT Comedy
+ TNT España
+ TNT Kids TV
+ TNT Polska
+ TNT Serie
+ Together TV
+ Toggo Plus
+ Toon Kids
+ Top Channel
+ Top Crime
+ Top Kids
+ Top News
+ Top TV
+ Toros TV
+ Trace Urban
+ Travel Channel Europe
+ Travel Channel Polska
+ Travel TV
+ Travelxp HD Europe
+ Trend TV
+ Tribuna Channel
+ Tring Action
+ Tring Classic
+ Tring Comedy
+ Tring Family
+ Tring Fantasy
+ Tring History
+ Tring International
+ Tring Kids
+ Tring Life
+ Tring Planet
+ Tring Shqip
+ Tring Smile
+ Tring Sport 1
+ Tring Sport 2
+ Tring Sport 3
+ Tring Sport News HD
+ Tring Super
+ Tring Tring
+ Tring World
+ Tropik TV
+ TRT 1
+ TRT 2
+ TRT Arabi
+ TRT Avaz
+ TRT Belgesel
+ TRT Haber
+ TRT Kurdî
+ TRT Müzik
+ TRT Spor
+ TRT Spor 2
+ TRT Turk
+ TRT World
+ TRT Çocuk
+ TTV
+ TV 2000
+ TV 4
+ TV Arena
+ TV Belle Amie
+ TV Dalmacija
+ TV Duga+
+ TV Edo
+ TV Evropa
+ TV Galaksija 32
+ TV Galeja
+ TV Hram
+ TV Idea
+ TV Istra
+ TV Jadran
+ TV K23
+ TV K3
+ TV Kanal 25
+ TV Klan
+ TV Koper-Capodistria
+ TV Maribor
+ TV Net
+ TV Nova
+ TV Novi Pazar
+ TV Paprika
+ TV Puls
+ TV Republika
+ TV Rodina
+ TV Shenja
+ TV Slovenija 1
+ TV Slovenija 2
+ TV Slovenija 3
+ TV Sonce
+ TV Trwam
+ TV Vijesti
+ TV Zapad
+ TV Šibenik
+ TV+
+ TV1
+ TV100
+ TV1000 Balkan
+ TV1000 World Kino
+ TV1000 Русское кино
+ TV2
+ TV2 Comedy
+ TV2 Kids
+ TV2 Séf
+ TV24
+ TV25
+ TV3
+ TV4
+ TV5Monde Europe
+ TV6
+ TV7
+ TV8
+ TV8
+ TV8.5
+ TVCG Sat
+ TVCG1
+ TVCG2
+ TVN
+ TVN 7
+ TVN Fabuła
+ TVN Style
+ TVN Turbo
+ TVN24
+ TVN24 BiS
+ TVP 1
+ TVP 2
+ TVP 3 Warszawa
+ TVP ABC
+ TVP HD
+ TVP Historia
+ TVP Info
+ TVP Kultura
+ TVP Polonia
+ TVP Regionalna
+ TVP Rozrywka
+ TVP Seriale
+ TVP Sport
+ TVP3 Białystok
+ TVP3 Bydgoszcz
+ TVP3 Gdańsk
+ TVP3 Katowice
+ TVP3 Kielce
+ TVP3 Kraków
+ TVP3 Lublin
+ TVP3 Olsztyn
+ TVP3 Opole
+ TVP3 Poznań
+ TVP3 Rzeszów
+ TVP3 Szczecin
+ TVP3 Warszawa
+ TVP3 Wrocław
+ TVP3 Łódź
+ TVR
+ TVS
+ TVSA
+ TWR United Kingdom
+ UTV
+ UTV News
+ Uçankuş TV
+ Valentino Etno
+ Valentino Music
+ Varaždinska TV
+ Vavoom
+ Vaš kanal
+ Veseljak TV
+ VH1 Italia
+ Viajar
+ Viasat 3
+ Viasat 6
+ Viasat Explore East
+ Viasat History
+ Viasat Nature East
+ Vivacom Arena
+ Vizion Plus
+ Vosges Télévision
+ Vox Deutschland
+ Vox Music TV
+ VTK
+ VTV
+ W UK
+ W24
+ W9 Suisse
+ WDR Fernsehen Koln
+ Welt
+ Wness TV
+ Woman
+ World Fashion Channel Russia
+ WP TV
+ wPolsce.pl
+ XXL
+ Yaban
+ Yesterday
+ Z1
+ ZDF
+ ZDFinfo
+ ZDFneo
+ Zdrava televizija
+ Zenebutik
+ Zoom TV
+ Çufo
+ Ülke TV
+ Šport TV 1
+ Šport TV 2
+ Šport TV 3
+ БК ТВ
+ БНТ 1
+ БНТ 2
+ БНТ 3
+ БНТ 4
+ БСТВ
+ БХТВ
+ България 24
+ Казбука ТВ
+ Канал 8 ТВ
+ МТМ ТВ
+ Первый канал
+ Россия 24
+ РТР-Планета
+ РТРС
+ РТРС плус
+ РТС 1
+ РТС 2
+ РТС 3
+ РТС Драма
+ РТС Живот
+ РТС Коло
+ РТС Музика
+ РТС Полетарац
+ РТС Свет
+ РТС Трезор
+ ТВ СКАТ
+ ТВ СТЗ
+ Тера
+ Україна 24
+
+
\ No newline at end of file
diff --git a/sites/tvprofil.com.config.js b/sites/tvprofil.com.config.js
new file mode 100644
index 00000000..3a231197
--- /dev/null
+++ b/sites/tvprofil.com.config.js
@@ -0,0 +1,106 @@
+const cheerio = require('cheerio')
+const dayjs = require('dayjs')
+
+module.exports = {
+ lang: 'hr',
+ site: 'tvprofil.com',
+ channels: 'tvprofil.com.channels.xml',
+ output: '.gh-pages/guides/tvprofil.com.guide.xml',
+ request: {
+ headers: {
+ 'x-requested-with': 'XMLHttpRequest'
+ }
+ },
+ url: function ({ channel, date }) {
+ const parts = channel.site_id.split('#')
+ const query = buildQuery(parts[1], date)
+
+ return `https://tvprofil.com/${parts[0]}/program/?${query}`
+ },
+ logo: function ({ content }) {
+ const result = parseContent(content)
+
+ return `https://cdn-0.tvprofil.com/cdn/100x40/10/img/kanali-logo/${result.data.channel.logo}`
+ },
+ parser: function ({ content, channel, date }) {
+ let programs = []
+ const result = parseContent(content)
+ const items = parseItems(result.data.program)
+ items.forEach(item => {
+ const $item = cheerio.load(item)
+ const title = parseTitle($item)
+ const category = parseCategory($item)
+ const start = parseStart($item)
+ const duration = parseDuration($item)
+ const stop = start.add(duration, 's')
+ const icon = parseIcon($item)
+
+ programs.push({ title, category, start, stop, icon })
+ })
+
+ return programs
+ }
+}
+
+function parseIcon($item) {
+ return $item(':root').data('image')
+}
+
+function parseDuration($item) {
+ return $item(':root').data('len')
+}
+
+function parseStart($item) {
+ const timestamp = $item(':root').data('ts')
+
+ return dayjs.unix(timestamp)
+}
+
+function parseCategory($item) {
+ return $item('.col:nth-child(2) > small').text() || null
+}
+
+function parseTitle($item) {
+ let title = $item('.col:nth-child(2) > a').text()
+ title += $item('.col:nth-child(2)').clone().children().remove().end().text()
+
+ return title.replace('®', '').trim().replace(/,$/, '')
+}
+
+function parseItems(program) {
+ const $ = cheerio.load(program)
+
+ return $('.row').toArray()
+}
+
+function parseContent(content) {
+ let data = (content.match(/cb\((.*)\)/) || [null, null])[1]
+
+ return JSON.parse(data)
+}
+
+function buildQuery(site_id, date) {
+ const query = {
+ datum: date.format('YYYY-MM-DD'),
+ kanal: site_id,
+ callback: `cb`
+ }
+
+ const a = query.datum + query.kanal
+ const ua = query.kanal + query.datum
+
+ let i = a.length,
+ b = 2,
+ c = 2
+
+ for (var j = 0; j < ua.length; j++) c += ua.charCodeAt(j)
+ while (i--) {
+ b += (a.charCodeAt(i) + c * 2) * i
+ }
+
+ const key = 'b' + b.toString().charCodeAt(2)
+
+ query[key] = b
+
+ return new URLSearchParams(query).toString()
+}