diff --git a/.gh-pages/api/.gitignore b/.gh-pages/api/.gitignore
new file mode 100644
index 00000000..27f62ec8
--- /dev/null
+++ b/.gh-pages/api/.gitignore
@@ -0,0 +1 @@
+programs.json
\ No newline at end of file
diff --git a/.github/workflows/auto-update.yml b/.github/workflows/auto-update.yml
index 855a3055..7750be6d 100644
--- a/.github/workflows/auto-update.yml
+++ b/.github/workflows/auto-update.yml
@@ -78,7 +78,7 @@ jobs:
with:
name: database
path: scripts/database
- - run: node scripts/commands/update-api.js
+ - run: NODE_OPTIONS="--max-old-space-size=4096" node scripts/commands/update-api.js
- run: NODE_OPTIONS="--max-old-space-size=4096" node scripts/commands/update-guides.js
- uses: actions/upload-artifact@v2
with:
@@ -86,8 +86,16 @@ jobs:
path: scripts/logs
- uses: actions/upload-artifact@v2
with:
- name: gh-pages
- path: .gh-pages
+ name: channels.json
+ path: .gh-pages/api/channels.json
+ - uses: actions/upload-artifact@v2
+ with:
+ name: programs.json
+ path: .gh-pages/api/programs.json
+ - uses: actions/upload-artifact@v2
+ with:
+ name: guides
+ path: .gh-pages/guides
- run: node scripts/commands/update-readme.js
- run: git add README.md
- run: git commit -m "[Bot] Update README.md"
diff --git a/.gitignore b/.gitignore
index 285927eb..ebf1164e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,4 @@
-node_modules/
-logs/
-guide.xml
-.artifacts
\ No newline at end of file
+/node_modules/
+/logs/
+/guide.xml
+/.artifacts/
\ No newline at end of file
diff --git a/.readme/template.md b/.readme/template.md
index 29d56772..c939a437 100644
--- a/.readme/template.md
+++ b/.readme/template.md
@@ -52,7 +52,7 @@ https://iptv-org.github.io/epg/api/channels.json
]
```
-### List of programs
+
## Contribution
diff --git a/README.md b/README.md
index fa874782..6767948f 100644
--- a/README.md
+++ b/README.md
@@ -28,7 +28,7 @@ To load a program guide, all you need to do is copy the link to one or more of t
| 🇧🇸 Bahamas | 186 | https://iptv-org.github.io/epg/guides/bs/rev.bs.epg.xml |
| 🇧🇾 Belarus | 19 | https://iptv-org.github.io/epg/guides/by/tv.mail.ru.epg.xml |
| 🇧🇪 Belgium | 7 | https://iptv-org.github.io/epg/guides/be/vtm.be.epg.xml |
- | 🇧🇯 Benin | 239 | https://iptv-org.github.io/epg/guides/bj/canalplus-afrique.com.epg.xml |
+ | 🇧🇯 Benin | 240 | https://iptv-org.github.io/epg/guides/bj/canalplus-afrique.com.epg.xml |
| 129 | https://iptv-org.github.io/epg/guides/bj/dstv.com.epg.xml |
| 🇧🇴 Bolivia | 79 | https://iptv-org.github.io/epg/guides/bo/comteco.com.bo.epg.xml |
| 36 | https://iptv-org.github.io/epg/guides/bo/gatotv.com.epg.xml |
@@ -36,45 +36,46 @@ To load a program guide, all you need to do is copy the link to one or more of t
| 4 | https://iptv-org.github.io/epg/guides/ba/tvarenasport.com.epg.xml |
| 🇧🇼 Botswana | 129 | https://iptv-org.github.io/epg/guides/bw/dstv.com.epg.xml |
| 🇧🇷 Brazil | 248 | https://iptv-org.github.io/epg/guides/br/mi.tv.epg.xml |
- | 🇧🇫 Burkina Faso | 239 | https://iptv-org.github.io/epg/guides/bf/canalplus-afrique.com.epg.xml |
+ | 🇧🇫 Burkina Faso | 240 | https://iptv-org.github.io/epg/guides/bf/canalplus-afrique.com.epg.xml |
| 127 | https://iptv-org.github.io/epg/guides/bf/dstv.com.epg.xml |
- | 🇧🇮 Burundi | 239 | https://iptv-org.github.io/epg/guides/bi/canalplus-afrique.com.epg.xml |
+ | 🇧🇮 Burundi | 240 | https://iptv-org.github.io/epg/guides/bi/canalplus-afrique.com.epg.xml |
| 127 | https://iptv-org.github.io/epg/guides/bi/dstv.com.epg.xml |
- | 🇨🇲 Cameroon | 239 | https://iptv-org.github.io/epg/guides/cm/canalplus-afrique.com.epg.xml |
+ | 🇨🇲 Cameroon | 240 | https://iptv-org.github.io/epg/guides/cm/canalplus-afrique.com.epg.xml |
| 127 | https://iptv-org.github.io/epg/guides/cm/dstv.com.epg.xml |
- | 🇨🇻 Cape Verde | 239 | https://iptv-org.github.io/epg/guides/cv/canalplus-afrique.com.epg.xml |
+ | 🇨🇦 Canada | 38 | https://iptv-org.github.io/epg/guides/ca/tvtv.us.epg.xml |
+ | 🇨🇻 Cape Verde | 240 | https://iptv-org.github.io/epg/guides/cv/canalplus-afrique.com.epg.xml |
| 124 | https://iptv-org.github.io/epg/guides/cv/dstv.com.epg.xml |
- | 🇨🇫 Central African Republic | 239 | https://iptv-org.github.io/epg/guides/cf/canalplus-afrique.com.epg.xml |
+ | 🇨🇫 Central African Republic | 240 | https://iptv-org.github.io/epg/guides/cf/canalplus-afrique.com.epg.xml |
| 124 | https://iptv-org.github.io/epg/guides/cf/dstv.com.epg.xml |
- | 🇹🇩 Chad | 239 | https://iptv-org.github.io/epg/guides/td/canalplus-afrique.com.epg.xml |
+ | 🇹🇩 Chad | 240 | https://iptv-org.github.io/epg/guides/td/canalplus-afrique.com.epg.xml |
| 122 | https://iptv-org.github.io/epg/guides/td/dstv.com.epg.xml |
| 🇨🇱 Chile | 79 | https://iptv-org.github.io/epg/guides/cl/mi.tv.epg.xml |
| 50 | https://iptv-org.github.io/epg/guides/cl/gatotv.com.epg.xml |
- | 🇨🇳 China | 106 | https://iptv-org.github.io/epg/guides/cn/tv.cctv.com.epg.xml |
+ | 🇨🇳 China | 107 | https://iptv-org.github.io/epg/guides/cn/tv.cctv.com.epg.xml |
| 🇨🇴 Colombia | 103 | https://iptv-org.github.io/epg/guides/co/siba.com.co.epg.xml |
| 54 | https://iptv-org.github.io/epg/guides/co/gatotv.com.epg.xml |
| 41 | https://iptv-org.github.io/epg/guides/co/mi.tv.epg.xml |
| 🇰🇲 Comoros | 117 | https://iptv-org.github.io/epg/guides/km/canalplus-reunion.com.epg.xml |
- | 🇨🇬 Congo - Brazzaville | 239 | https://iptv-org.github.io/epg/guides/cg/canalplus-afrique.com.epg.xml |
+ | 🇨🇬 Congo - Brazzaville | 240 | https://iptv-org.github.io/epg/guides/cg/canalplus-afrique.com.epg.xml |
| 124 | https://iptv-org.github.io/epg/guides/cg/dstv.com.epg.xml |
- | 🇨🇩 Congo - Kinshasa | 239 | https://iptv-org.github.io/epg/guides/cd/canalplus-afrique.com.epg.xml |
+ | 🇨🇩 Congo - Kinshasa | 240 | https://iptv-org.github.io/epg/guides/cd/canalplus-afrique.com.epg.xml |
| 125 | https://iptv-org.github.io/epg/guides/cd/dstv.com.epg.xml |
| 🇨🇷 Costa Rica | 48 | https://iptv-org.github.io/epg/guides/cr/gatotv.com.epg.xml |
- | 🇭🇷 Croatia | 164 | https://iptv-org.github.io/epg/guides/hr/maxtv.hrvatskitelekom.hr.epg.xml |
+ | 🇭🇷 Croatia | 165 | https://iptv-org.github.io/epg/guides/hr/maxtv.hrvatskitelekom.hr.epg.xml |
| 10 | https://iptv-org.github.io/epg/guides/hr/tvarenasport.hr.epg.xml |
| 🇨🇺 Cuba | 10 | https://iptv-org.github.io/epg/guides/cu/tvcubana.icrt.cu.epg.xml |
| 🇨🇾 Cyprus | 29 | https://iptv-org.github.io/epg/guides/cy/novacyprus.com.epg.xml |
- | 🇨🇿 Czechia | 505 | https://iptv-org.github.io/epg/guides/cz/m.tv.sms.cz.epg.xml |
- | 🇨🇮 Côte d’Ivoire | 239 | https://iptv-org.github.io/epg/guides/ci/canalplus-afrique.com.epg.xml |
+ | 🇨🇿 Czechia | 502 | https://iptv-org.github.io/epg/guides/cz/m.tv.sms.cz.epg.xml |
+ | 🇨🇮 Côte d’Ivoire | 240 | https://iptv-org.github.io/epg/guides/ci/canalplus-afrique.com.epg.xml |
| 127 | https://iptv-org.github.io/epg/guides/ci/dstv.com.epg.xml |
| 🇩🇰 Denmark | 58 | https://iptv-org.github.io/epg/guides/dk/allente.se.epg.xml |
- | 🇩🇯 Djibouti | 239 | https://iptv-org.github.io/epg/guides/dj/canalplus-afrique.com.epg.xml |
+ | 🇩🇯 Djibouti | 240 | https://iptv-org.github.io/epg/guides/dj/canalplus-afrique.com.epg.xml |
| 120 | https://iptv-org.github.io/epg/guides/dj/dstv.com.epg.xml |
| 🇩🇴 Dominican Republic | 59 | https://iptv-org.github.io/epg/guides/do/gatotv.com.epg.xml |
| 🇪🇨 Ecuador | 43 | https://iptv-org.github.io/epg/guides/ec/gatotv.com.epg.xml |
| 🇸🇻 El Salvador | 51 | https://iptv-org.github.io/epg/guides/sv/gatotv.com.epg.xml |
| 12 | https://iptv-org.github.io/epg/guides/sv/mi.tv.epg.xml |
- | 🇬🇶 Equatorial Guinea | 239 | https://iptv-org.github.io/epg/guides/gq/canalplus-afrique.com.epg.xml |
+ | 🇬🇶 Equatorial Guinea | 240 | https://iptv-org.github.io/epg/guides/gq/canalplus-afrique.com.epg.xml |
| 124 | https://iptv-org.github.io/epg/guides/gq/dstv.com.epg.xml |
| 🇪🇷 Eritrea | 122 | https://iptv-org.github.io/epg/guides/er/dstv.com.epg.xml |
| 🇸🇿 Eswatini | 126 | https://iptv-org.github.io/epg/guides/sz/dstv.com.epg.xml |
@@ -87,49 +88,50 @@ To load a program guide, all you need to do is copy the link to one or more of t
| 190 | https://iptv-org.github.io/epg/guides/fr/chaines-tv.orange.fr.epg.xml |
| 🇬🇫 French Guiana | 126 | https://iptv-org.github.io/epg/guides/gf/canalplus-caraibes.com.epg.xml |
| 🇵🇫 French Polynesia | 2 | https://iptv-org.github.io/epg/guides/pf/programme-tv.vini.pf.epg.xml |
- | 🇬🇦 Gabon | 239 | https://iptv-org.github.io/epg/guides/ga/canalplus-afrique.com.epg.xml |
+ | 🇬🇦 Gabon | 240 | https://iptv-org.github.io/epg/guides/ga/canalplus-afrique.com.epg.xml |
| 124 | https://iptv-org.github.io/epg/guides/ga/dstv.com.epg.xml |
- | 🇬🇲 Gambia | 239 | https://iptv-org.github.io/epg/guides/gm/canalplus-afrique.com.epg.xml |
+ | 🇬🇲 Gambia | 240 | https://iptv-org.github.io/epg/guides/gm/canalplus-afrique.com.epg.xml |
| 123 | https://iptv-org.github.io/epg/guides/gm/dstv.com.epg.xml |
| 🇬🇪 Georgia | 117 | https://iptv-org.github.io/epg/guides/ge/magticom.ge.epg.xml |
| 🇩🇪 Germany | 122 | https://iptv-org.github.io/epg/guides/de/hd-plus.de.epg.xml |
- | 🇬🇭 Ghana | 239 | https://iptv-org.github.io/epg/guides/gh/canalplus-afrique.com.epg.xml |
+ | 🇬🇭 Ghana | 240 | https://iptv-org.github.io/epg/guides/gh/canalplus-afrique.com.epg.xml |
| 138 | https://iptv-org.github.io/epg/guides/gh/dstv.com.epg.xml |
| 🇬🇷 Greece | 86 | https://iptv-org.github.io/epg/guides/gr/cosmote.gr.epg.xml |
| 🇬🇱 Greenland | 1 | https://iptv-org.github.io/epg/guides/gl/knr.gl.epg.xml |
| 🇬🇵 Guadeloupe | 126 | https://iptv-org.github.io/epg/guides/gp/canalplus-caraibes.com.epg.xml |
+ | 🇬🇺 Guam | 1 | https://iptv-org.github.io/epg/guides/gu/pbsguam.org.epg.xml |
| 🇬🇹 Guatemala | 52 | https://iptv-org.github.io/epg/guides/gt/gatotv.com.epg.xml |
| 18 | https://iptv-org.github.io/epg/guides/gt/mi.tv.epg.xml |
- | 🇬🇳 Guinea | 239 | https://iptv-org.github.io/epg/guides/gn/canalplus-afrique.com.epg.xml |
+ | 🇬🇳 Guinea | 240 | https://iptv-org.github.io/epg/guides/gn/canalplus-afrique.com.epg.xml |
| 124 | https://iptv-org.github.io/epg/guides/gn/dstv.com.epg.xml |
- | 🇬🇼 Guinea-Bissau | 239 | https://iptv-org.github.io/epg/guides/gw/canalplus-afrique.com.epg.xml |
+ | 🇬🇼 Guinea-Bissau | 240 | https://iptv-org.github.io/epg/guides/gw/canalplus-afrique.com.epg.xml |
| 124 | https://iptv-org.github.io/epg/guides/gw/dstv.com.epg.xml |
| 🇭🇹 Haiti | 110 | https://iptv-org.github.io/epg/guides/ht/canalplus-haiti.com.epg.xml |
| 🇭🇳 Honduras | 49 | https://iptv-org.github.io/epg/guides/hn/gatotv.com.epg.xml |
| 22 | https://iptv-org.github.io/epg/guides/hn/mi.tv.epg.xml |
| 🇭🇺 Hungary | 91 | https://iptv-org.github.io/epg/guides/hu/tvmusor.hu.epg.xml |
| 🇮🇸 Iceland | 2 | https://iptv-org.github.io/epg/guides/is/ruv.is.epg.xml |
- | 🇮🇳 India | 364 | https://iptv-org.github.io/epg/guides/in/dishtv.in.epg.xml |
+ | 🇮🇳 India | 361 | https://iptv-org.github.io/epg/guides/in/dishtv.in.epg.xml |
| 🇮🇩 Indonesia | 89 | https://iptv-org.github.io/epg/guides/id/mncvision.id.epg.xml |
| 26 | https://iptv-org.github.io/epg/guides/id/vidio.com.epg.xml |
- | 🇮🇷 Iran | 27 | https://iptv-org.github.io/epg/guides/ir/tva.tv.epg.xml |
+ | 🇮🇷 Iran | 29 | https://iptv-org.github.io/epg/guides/ir/tva.tv.epg.xml |
| 🇮🇪 Ireland | 3 | https://iptv-org.github.io/epg/guides/ie/ontvtonight.com.epg.xml |
| 🇮🇹 Italy | 133 | https://iptv-org.github.io/epg/guides/it/guidatv.sky.it.epg.xml |
| 13 | https://iptv-org.github.io/epg/guides/it/mediaset.it.epg.xml |
| 🇯🇵 Japan | 128 | https://iptv-org.github.io/epg/guides/jp/tvguide.myjcom.jp.epg.xml |
| 🇰🇿 Kazakhstan | 7 | https://iptv-org.github.io/epg/guides/kz/tv.yandex.ru.epg.xml |
| 🇰🇪 Kenya | 151 | https://iptv-org.github.io/epg/guides/ke/dstv.com.epg.xml |
- | 🇽🇰 Kosovo | 23 | https://iptv-org.github.io/epg/guides/xk/tvim.tv.epg.xml |
- | 🇱🇻 Latvia | 19 | https://iptv-org.github.io/epg/guides/lv/tv.lv.epg.xml |
+ | 🇽🇰 Kosovo | 24 | https://iptv-org.github.io/epg/guides/xk/tvim.tv.epg.xml |
+ | 🇱🇻 Latvia | 20 | https://iptv-org.github.io/epg/guides/lv/tv.lv.epg.xml |
| 🇱🇸 Lesotho | 144 | https://iptv-org.github.io/epg/guides/ls/dstv.com.epg.xml |
| 🇱🇷 Liberia | 124 | https://iptv-org.github.io/epg/guides/lr/dstv.com.epg.xml |
| 🇲🇬 Madagascar | 124 | https://iptv-org.github.io/epg/guides/mg/dstv.com.epg.xml |
| 🇲🇼 Malawi | 130 | https://iptv-org.github.io/epg/guides/mw/dstv.com.epg.xml |
| 🇲🇾 Malaysia | 121 | https://iptv-org.github.io/epg/guides/my/astro.com.my.epg.xml |
- | 🇲🇱 Mali | 239 | https://iptv-org.github.io/epg/guides/ml/canalplus-afrique.com.epg.xml |
+ | 🇲🇱 Mali | 240 | https://iptv-org.github.io/epg/guides/ml/canalplus-afrique.com.epg.xml |
| 124 | https://iptv-org.github.io/epg/guides/ml/dstv.com.epg.xml |
| 🇲🇶 Martinique | 126 | https://iptv-org.github.io/epg/guides/mq/canalplus-caraibes.com.epg.xml |
- | 🇲🇷 Mauritania | 239 | https://iptv-org.github.io/epg/guides/mr/canalplus-afrique.com.epg.xml |
+ | 🇲🇷 Mauritania | 240 | https://iptv-org.github.io/epg/guides/mr/canalplus-afrique.com.epg.xml |
| 124 | https://iptv-org.github.io/epg/guides/mr/dstv.com.epg.xml |
| 🇲🇺 Mauritius | 125 | https://iptv-org.github.io/epg/guides/mu/dstv.com.epg.xml |
| 🇾🇹 Mayotte | 117 | https://iptv-org.github.io/epg/guides/yt/canalplus-reunion.com.epg.xml |
@@ -140,30 +142,31 @@ To load a program guide, all you need to do is copy the link to one or more of t
| 🇳🇦 Namibia | 128 | https://iptv-org.github.io/epg/guides/na/dstv.com.epg.xml |
| 🇳🇱 Netherlands | 227 | https://iptv-org.github.io/epg/guides/nl/delta.nl.epg.xml |
| 🇳🇮 Nicaragua | 49 | https://iptv-org.github.io/epg/guides/ni/gatotv.com.epg.xml |
- | 🇳🇪 Niger | 239 | https://iptv-org.github.io/epg/guides/ne/canalplus-afrique.com.epg.xml |
+ | 🇳🇪 Niger | 240 | https://iptv-org.github.io/epg/guides/ne/canalplus-afrique.com.epg.xml |
| 127 | https://iptv-org.github.io/epg/guides/ne/dstv.com.epg.xml |
| 🇳🇬 Nigeria | 145 | https://iptv-org.github.io/epg/guides/ng/dstv.com.epg.xml |
| 🇲🇰 North Macedonia | 52 | https://iptv-org.github.io/epg/guides/mk/maxtvgo.mk.epg.xml |
| 4 | https://iptv-org.github.io/epg/guides/mk/tvarenasport.com.epg.xml |
- | 🇳🇴 Norway | 69 | https://iptv-org.github.io/epg/guides/no/allente.se.epg.xml |
+ | 🇳🇴 Norway | 69 | https://iptv-org.github.io/epg/guides/no/allente.se.epg.xml |
+ | 1 | https://iptv-org.github.io/epg/guides/no/frikanalen.no.epg.xml |
| 🇵🇦 Panama | 51 | https://iptv-org.github.io/epg/guides/pa/gatotv.com.epg.xml |
| 🇵🇾 Paraguay | 37 | https://iptv-org.github.io/epg/guides/py/gatotv.com.epg.xml |
| 🇵🇪 Peru | 47 | https://iptv-org.github.io/epg/guides/pe/gatotv.com.epg.xml |
| 21 | https://iptv-org.github.io/epg/guides/pe/mi.tv.epg.xml |
- | 🇵🇱 Poland | 329 | https://iptv-org.github.io/epg/guides/pl/programtv.onet.pl.epg.xml |
+ | 🇵🇱 Poland | 334 | https://iptv-org.github.io/epg/guides/pl/programtv.onet.pl.epg.xml |
| 🇵🇹 Portugal | 109 | https://iptv-org.github.io/epg/guides/pt/meo.pt.epg.xml |
| 🇶🇦 Qatar | 22 | https://iptv-org.github.io/epg/guides/qa/beinsports.com.epg.xml |
- | 🇷🇴 Romania | 223 | https://iptv-org.github.io/epg/guides/ro/programetv.ro.epg.xml |
- | 🇷🇺 Russia | 231 | https://iptv-org.github.io/epg/guides/ru/tv.yandex.ru.epg.xml |
- | 🇷🇼 Rwanda | 239 | https://iptv-org.github.io/epg/guides/rw/canalplus-afrique.com.epg.xml |
+ | 🇷🇴 Romania | 224 | https://iptv-org.github.io/epg/guides/ro/programetv.ro.epg.xml |
+ | 🇷🇺 Russia | 270 | https://iptv-org.github.io/epg/guides/ru/tv.yandex.ru.epg.xml |
+ | 🇷🇼 Rwanda | 240 | https://iptv-org.github.io/epg/guides/rw/canalplus-afrique.com.epg.xml |
| 131 | https://iptv-org.github.io/epg/guides/rw/dstv.com.epg.xml |
| 🇷🇪 Réunion | 117 | https://iptv-org.github.io/epg/guides/re/canalplus-reunion.com.epg.xml |
- | 🇸🇳 Senegal | 239 | https://iptv-org.github.io/epg/guides/sn/canalplus-afrique.com.epg.xml |
+ | 🇸🇳 Senegal | 240 | https://iptv-org.github.io/epg/guides/sn/canalplus-afrique.com.epg.xml |
| 124 | https://iptv-org.github.io/epg/guides/sn/dstv.com.epg.xml |
| 🇷🇸 Serbia | 350 | https://iptv-org.github.io/epg/guides/rs/mts.rs.epg.xml |
- | 12 | https://iptv-org.github.io/epg/guides/rs/tvarenasport.com.epg.xml |
+ | 11 | https://iptv-org.github.io/epg/guides/rs/tvarenasport.com.epg.xml |
| 🇸🇨 Seychelles | 123 | https://iptv-org.github.io/epg/guides/sc/dstv.com.epg.xml |
- | 🇸🇱 Sierra Leone | 239 | https://iptv-org.github.io/epg/guides/sl/canalplus-afrique.com.epg.xml |
+ | 🇸🇱 Sierra Leone | 240 | https://iptv-org.github.io/epg/guides/sl/canalplus-afrique.com.epg.xml |
| 124 | https://iptv-org.github.io/epg/guides/sl/dstv.com.epg.xml |
| 🇸🇮 Slovenia | 277 | https://iptv-org.github.io/epg/guides/si/tv2go.t-2.net.epg.xml |
| 🇸🇴 Somalia | 119 | https://iptv-org.github.io/epg/guides/so/dstv.com.epg.xml |
@@ -174,19 +177,21 @@ To load a program guide, all you need to do is copy the link to one or more of t
| 🇲🇫 St. Martin | 126 | https://iptv-org.github.io/epg/guides/mf/canalplus-caraibes.com.epg.xml |
| 🇸🇩 Sudan | 117 | https://iptv-org.github.io/epg/guides/sd/dstv.com.epg.xml |
| 🇸🇪 Sweden | 86 | https://iptv-org.github.io/epg/guides/se/allente.se.epg.xml |
+ | 🇨🇭 Switzerland | 573 | https://iptv-org.github.io/epg/guides/ch/tv.blue.ch.epg.xml |
| 🇸🇹 São Tomé & Príncipe | 127 | https://iptv-org.github.io/epg/guides/st/dstv.com.epg.xml |
| 🇹🇿 Tanzania | 29 | https://iptv-org.github.io/epg/guides/tz/dstv.com.epg.xml |
- | 🇹🇭 Thailand | 64 | https://iptv-org.github.io/epg/guides/th/tv.trueid.net.epg.xml |
- | 🇹🇬 Togo | 239 | https://iptv-org.github.io/epg/guides/tg/canalplus-afrique.com.epg.xml |
+ | 🇹🇭 Thailand | 65 | https://iptv-org.github.io/epg/guides/th/tv.trueid.net.epg.xml |
+ | 🇹🇬 Togo | 240 | https://iptv-org.github.io/epg/guides/tg/canalplus-afrique.com.epg.xml |
| 136 | https://iptv-org.github.io/epg/guides/tg/dstv.com.epg.xml |
- | 🇹🇷 Turkey | 141 | https://iptv-org.github.io/epg/guides/tr/tvplus.com.tr.epg.xml |
+ | 🇹🇷 Turkey | 142 | https://iptv-org.github.io/epg/guides/tr/tvplus.com.tr.epg.xml |
| 118 | https://iptv-org.github.io/epg/guides/tr/digiturk.com.tr.epg.xml |
- | 101 | https://iptv-org.github.io/epg/guides/tr/dsmart.com.tr.epg.xml |
+ | 102 | https://iptv-org.github.io/epg/guides/tr/dsmart.com.tr.epg.xml |
| 🇺🇬 Uganda | 150 | https://iptv-org.github.io/epg/guides/ug/dstv.com.epg.xml |
- | 🇺🇦 Ukraine | 113 | https://iptv-org.github.io/epg/guides/ua/tvgid.ua.epg.xml |
+ | 🇺🇦 Ukraine | 114 | https://iptv-org.github.io/epg/guides/ua/tvgid.ua.epg.xml |
| 🇬🇧 United Kingdom | 104 | https://iptv-org.github.io/epg/guides/uk/sky.com.epg.xml |
| 97 | https://iptv-org.github.io/epg/guides/uk/ontvtonight.com.epg.xml |
- | 🇺🇸 United States | 367 | https://iptv-org.github.io/epg/guides/us/directv.com.epg.xml |
+ | 🇺🇸 United States | 318 | https://iptv-org.github.io/epg/guides/us/directv.com.epg.xml |
+ | 132 | https://iptv-org.github.io/epg/guides/us/tvtv.us.epg.xml |
| 87 | https://iptv-org.github.io/epg/guides/us/tvguide.com.epg.xml |
| 15 | https://iptv-org.github.io/epg/guides/us/gatotv.com.epg.xml |
| 🇺🇾 Uruguay | 30 | https://iptv-org.github.io/epg/guides/uy/gatotv.com.epg.xml |
@@ -205,8 +210,60 @@ To load a program guide, all you need to do is copy the link to one or more of t
| State | Channels | EPG |
- | Puerto Rico | 7 | https://iptv-org.github.io/epg/guides/us-pr/gatotv.com.epg.xml |
+ | Alabama | 61 | https://iptv-org.github.io/epg/guides/us-al/tvtv.us.epg.xml |
+ | Alaska | 8 | https://iptv-org.github.io/epg/guides/us-ak/tvtv.us.epg.xml |
+ | Arizona | 81 | https://iptv-org.github.io/epg/guides/us-az/tvtv.us.epg.xml |
+ | Arkansas | 29 | https://iptv-org.github.io/epg/guides/us-ar/tvtv.us.epg.xml |
+ | California | 229 | https://iptv-org.github.io/epg/guides/us-ca/tvtv.us.epg.xml |
+ | Colorado | 68 | https://iptv-org.github.io/epg/guides/us-co/tvtv.us.epg.xml |
+ | Connecticut | 16 | https://iptv-org.github.io/epg/guides/us-ct/tvtv.us.epg.xml |
+ | Delaware | 3 | https://iptv-org.github.io/epg/guides/us-de/tvtv.us.epg.xml |
+ | District Of Columbia | 10 | https://iptv-org.github.io/epg/guides/us-dc/tvtv.us.epg.xml |
+ | Florida | 147 | https://iptv-org.github.io/epg/guides/us-fl/tvtv.us.epg.xml |
+ | Georgia | 59 | https://iptv-org.github.io/epg/guides/us-ga/tvtv.us.epg.xml |
+ | Hawaii | 10 | https://iptv-org.github.io/epg/guides/us-hi/tvtv.us.epg.xml |
+ | Idaho | 32 | https://iptv-org.github.io/epg/guides/us-id/tvtv.us.epg.xml |
+ | Illinois | 56 | https://iptv-org.github.io/epg/guides/us-il/tvtv.us.epg.xml |
+ | Indiana | 58 | https://iptv-org.github.io/epg/guides/us-in/tvtv.us.epg.xml |
+ | Iowa | 39 | https://iptv-org.github.io/epg/guides/us-ia/tvtv.us.epg.xml |
+ | Kansas | 53 | https://iptv-org.github.io/epg/guides/us-ks/tvtv.us.epg.xml |
+ | Kentucky | 41 | https://iptv-org.github.io/epg/guides/us-ky/tvtv.us.epg.xml |
+ | Louisiana | 42 | https://iptv-org.github.io/epg/guides/us-la/tvtv.us.epg.xml |
+ | Maine | 14 | https://iptv-org.github.io/epg/guides/us-me/tvtv.us.epg.xml |
+ | Maryland | 14 | https://iptv-org.github.io/epg/guides/us-md/tvtv.us.epg.xml |
+ | Massachusetts | 17 | https://iptv-org.github.io/epg/guides/us-ma/tvtv.us.epg.xml |
+ | Michigan | 67 | https://iptv-org.github.io/epg/guides/us-mi/tvtv.us.epg.xml |
+ | Minnesota | 38 | https://iptv-org.github.io/epg/guides/us-mn/tvtv.us.epg.xml |
+ | Mississippi | 38 | https://iptv-org.github.io/epg/guides/us-ms/tvtv.us.epg.xml |
+ | Missouri | 79 | https://iptv-org.github.io/epg/guides/us-mo/tvtv.us.epg.xml |
+ | Montana | 30 | https://iptv-org.github.io/epg/guides/us-mt/tvtv.us.epg.xml |
+ | Nebraska | 27 | https://iptv-org.github.io/epg/guides/us-ne/tvtv.us.epg.xml |
+ | Nevada | 48 | https://iptv-org.github.io/epg/guides/us-nv/tvtv.us.epg.xml |
+ | New Hampshire | 7 | https://iptv-org.github.io/epg/guides/us-nh/tvtv.us.epg.xml |
+ | New Jersey | 14 | https://iptv-org.github.io/epg/guides/us-nj/tvtv.us.epg.xml |
+ | New Mexico | 40 | https://iptv-org.github.io/epg/guides/us-nm/tvtv.us.epg.xml |
+ | New York | 93 | https://iptv-org.github.io/epg/guides/us-ny/tvtv.us.epg.xml |
+ | North Carolina | 74 | https://iptv-org.github.io/epg/guides/us-nc/tvtv.us.epg.xml |
+ | North Dakota | 19 | https://iptv-org.github.io/epg/guides/us-nd/tvtv.us.epg.xml |
+ | Ohio | 95 | https://iptv-org.github.io/epg/guides/us-oh/tvtv.us.epg.xml |
+ | Oklahoma | 54 | https://iptv-org.github.io/epg/guides/us-ok/tvtv.us.epg.xml |
+ | Oregon | 36 | https://iptv-org.github.io/epg/guides/us-or/tvtv.us.epg.xml |
+ | Pennsylvania | 74 | https://iptv-org.github.io/epg/guides/us-pa/tvtv.us.epg.xml |
+ | Puerto Rico | 7 | https://iptv-org.github.io/epg/guides/us-pr/gatotv.com.epg.xml |
| 1 | https://iptv-org.github.io/epg/guides/us-pr/directv.com.epg.xml |
+ | 1 | https://iptv-org.github.io/epg/guides/us-pr/tvtv.us.epg.xml |
+ | Rhode Island | 6 | https://iptv-org.github.io/epg/guides/us-ri/tvtv.us.epg.xml |
+ | South Carolina | 55 | https://iptv-org.github.io/epg/guides/us-sc/tvtv.us.epg.xml |
+ | South Dakota | 8 | https://iptv-org.github.io/epg/guides/us-sd/tvtv.us.epg.xml |
+ | Tennessee | 79 | https://iptv-org.github.io/epg/guides/us-tn/tvtv.us.epg.xml |
+ | Texas | 205 | https://iptv-org.github.io/epg/guides/us-tx/tvtv.us.epg.xml |
+ | Utah | 25 | https://iptv-org.github.io/epg/guides/us-ut/tvtv.us.epg.xml |
+ | Vermont | 1 | https://iptv-org.github.io/epg/guides/us-vt/tvtv.us.epg.xml |
+ | Virginia | 50 | https://iptv-org.github.io/epg/guides/us-va/tvtv.us.epg.xml |
+ | Washington | 40 | https://iptv-org.github.io/epg/guides/us-wa/tvtv.us.epg.xml |
+ | West Virginia | 20 | https://iptv-org.github.io/epg/guides/us-wv/tvtv.us.epg.xml |
+ | Wisconsin | 56 | https://iptv-org.github.io/epg/guides/us-wi/tvtv.us.epg.xml |
+ | Wyoming | 6 | https://iptv-org.github.io/epg/guides/us-wy/tvtv.us.epg.xml |
@@ -218,6 +275,8 @@ To load a program guide, all you need to do is copy the link to one or more of t
| Province | Channels | EPG |
+ | British Columbia | 3 | https://iptv-org.github.io/epg/guides/ca-bc/tvtv.us.epg.xml |
+ | Quebec | 1 | https://iptv-org.github.io/epg/guides/ca-qc/tvtv.us.epg.xml |
@@ -225,20 +284,14 @@ To load a program guide, all you need to do is copy the link to one or more of t
https://iptv-org.github.io/epg/index.html
-## For Developers
+## API
-You can also get a list of all available channels and their codes in JSON format by sending a GET request to:
+### List of channels
```
https://iptv-org.github.io/epg/api/channels.json
```
-If successful, you should get the following response:
-
-
-Expand
-
-
```
[
...
@@ -258,7 +311,33 @@ If successful, you should get the following response:
]
```
-
+### List of programs
+
+```
+https://iptv-org.github.io/epg/api/programs.json
+```
+
+```
+[
+ ...
+ {
+ "channel": "CNNUSA.us",
+ "site": "example.com",
+ "lang": "en",
+ "title": "Erin Burnett OutFront",
+ "desc": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
+ tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam.",
+ "categories": [
+ "Series",
+ "News"
+ ],
+ "image": "https://example.com/banner.jpg",
+ "start": 1641772800,
+ "stop": 1641776400
+ },
+ ...
+]
+```
## Contribution
diff --git a/package-lock.json b/package-lock.json
index 6918c5b2..6935da6e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -12,7 +12,7 @@
"commander": "^8.2.0",
"csv-parser": "^3.0.0",
"dayjs": "^1.10.4",
- "epg-grabber": "^0.16.0",
+ "epg-grabber": "^0.17.1",
"epg-parser": "^0.1.6",
"form-data": "^4.0.0",
"glob": "^7.2.0",
@@ -2007,9 +2007,9 @@
}
},
"node_modules/epg-grabber": {
- "version": "0.16.0",
- "resolved": "https://registry.npmjs.org/epg-grabber/-/epg-grabber-0.16.0.tgz",
- "integrity": "sha512-5X2v6H4QHlEMANuM4S5/vcx8Oo/YUi5fb2teUGSt7tVhkJL368ecnLr+ZOEkrkDilQ+kSNsFHnGo3SbjFHzmNA==",
+ "version": "0.17.1",
+ "resolved": "https://registry.npmjs.org/epg-grabber/-/epg-grabber-0.17.1.tgz",
+ "integrity": "sha512-Nxt7dBv6lFdPkAmkan5fvSxDFIesopuQbftqKxUORRASro7A4pNV1qwUekKYujQZa0D/XhpqCtmIFXIHiVS7hQ==",
"dependencies": {
"axios": "^0.21.1",
"axios-cookiejar-support": "^1.0.1",
@@ -2017,7 +2017,7 @@
"commander": "^7.1.0",
"dayjs": "^1.10.4",
"glob": "^7.1.6",
- "lodash.merge": "^4.6.2",
+ "lodash": "^4.17.21",
"tough-cookie": "^4.0.0",
"winston": "^3.3.3",
"xml-js": "^1.6.11"
@@ -3476,11 +3476,6 @@
"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/logform": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/logform/-/logform-2.3.0.tgz",
@@ -6431,9 +6426,9 @@
"integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A=="
},
"epg-grabber": {
- "version": "0.16.0",
- "resolved": "https://registry.npmjs.org/epg-grabber/-/epg-grabber-0.16.0.tgz",
- "integrity": "sha512-5X2v6H4QHlEMANuM4S5/vcx8Oo/YUi5fb2teUGSt7tVhkJL368ecnLr+ZOEkrkDilQ+kSNsFHnGo3SbjFHzmNA==",
+ "version": "0.17.1",
+ "resolved": "https://registry.npmjs.org/epg-grabber/-/epg-grabber-0.17.1.tgz",
+ "integrity": "sha512-Nxt7dBv6lFdPkAmkan5fvSxDFIesopuQbftqKxUORRASro7A4pNV1qwUekKYujQZa0D/XhpqCtmIFXIHiVS7hQ==",
"requires": {
"axios": "^0.21.1",
"axios-cookiejar-support": "^1.0.1",
@@ -6441,7 +6436,7 @@
"commander": "^7.1.0",
"dayjs": "^1.10.4",
"glob": "^7.1.6",
- "lodash.merge": "^4.6.2",
+ "lodash": "^4.17.21",
"tough-cookie": "^4.0.0",
"winston": "^3.3.3",
"xml-js": "^1.6.11"
@@ -7513,11 +7508,6 @@
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
},
- "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=="
- },
"logform": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/logform/-/logform-2.3.0.tgz",
diff --git a/package.json b/package.json
index eeecdd51..644bdf75 100644
--- a/package.json
+++ b/package.json
@@ -17,7 +17,7 @@
"commander": "^8.2.0",
"csv-parser": "^3.0.0",
"dayjs": "^1.10.4",
- "epg-grabber": "^0.16.0",
+ "epg-grabber": "^0.17.1",
"epg-parser": "^0.1.6",
"form-data": "^4.0.0",
"glob": "^7.2.0",
diff --git a/scripts/commands/save-results.js b/scripts/commands/save-results.js
index 5b3cb3ad..abd77675 100644
--- a/scripts/commands/save-results.js
+++ b/scripts/commands/save-results.js
@@ -16,11 +16,21 @@ async function main() {
await db.channels.update({ _id: result._id }, { $set: { logo: result.logo } })
const programs = result.programs.map(program => {
- program.site = result.site
- program.country = result.country
- program.gid = result.gid
-
- return program
+ return {
+ title: program.title,
+ description: program.description || null,
+ category: program.category || [],
+ season: program.season || null,
+ episode: program.episode || null,
+ icon: program.icon || null,
+ channel: program.channel,
+ lang: program.lang,
+ start: program.start,
+ stop: program.stop,
+ site: result.site,
+ country: result.country,
+ gid: result.gid
+ }
})
await db.programs.insert(programs)
diff --git a/scripts/commands/update-api.js b/scripts/commands/update-api.js
index e2d29cf6..d6c18b8f 100644
--- a/scripts/commands/update-api.js
+++ b/scripts/commands/update-api.js
@@ -47,6 +47,8 @@ async function loadPrograms() {
title: item.title,
desc: item.description || null,
categories: item.category || [],
+ season: item.season || null,
+ episode: item.episode || null,
image: item.icon || null,
start: item.start,
stop: item.stop
diff --git a/scripts/commands/update-guides.js b/scripts/commands/update-guides.js
index 343bba1f..070b5061 100644
--- a/scripts/commands/update-guides.js
+++ b/scripts/commands/update-guides.js
@@ -1,4 +1,5 @@
-const { db, logger, file, xml } = require('../core')
+const { db, logger, file } = require('../core')
+const grabber = require('epg-grabber')
const _ = require('lodash')
const DB_DIR = process.env.DB_DIR || 'scripts/database'
@@ -32,7 +33,7 @@ async function generateGuides() {
}
)
- const output = xml.create({ channels: groupChannels, programs: groupProgs })
+ const output = grabber.convertToXMLTV({ channels: groupChannels, programs: groupProgs })
logger.info(`Creating "${filepath}"...`)
await file.create(filepath, output)
@@ -67,9 +68,9 @@ async function loadPrograms() {
programs = programs.map(program => {
return {
- title: program.title ? [{ lang: program.lang, value: program.title }] : [],
- description: program.description ? [{ lang: program.lang, value: program.description }] : [],
- categories: program.category ? [{ lang: program.lang, value: program.category }] : [],
+ title: program.title,
+ description: program.description,
+ categories: program.category,
icon: program.icon,
channel: program.channel,
lang: program.lang,
@@ -77,6 +78,8 @@ async function loadPrograms() {
stop: program.stop,
site: program.site,
country: program.country,
+ season: program.season,
+ episode: program.episode,
gid: program.gid,
_id: program._id
}
diff --git a/scripts/core/index.js b/scripts/core/index.js
index c72476e8..d6ac705f 100644
--- a/scripts/core/index.js
+++ b/scripts/core/index.js
@@ -3,5 +3,4 @@ exports.logger = require('./logger')
exports.file = require('./file')
exports.parser = require('./parser')
exports.timer = require('./timer')
-exports.xml = require('./xml')
exports.markdown = require('./markdown')
diff --git a/scripts/core/xml.js b/scripts/core/xml.js
deleted file mode 100644
index a9fc6d2c..00000000
--- a/scripts/core/xml.js
+++ /dev/null
@@ -1,79 +0,0 @@
-const dayjs = require('dayjs')
-const utc = require('dayjs/plugin/utc')
-dayjs.extend(utc)
-
-const xml = {}
-
-xml.create = function ({ channels, programs }) {
- let output = `\n`
- for (let channel of channels) {
- output += ``
- output += `${escapeString(channel.name)}`
- if (channel.logo) output += ``
- if (channel.site) output += `https://${channel.site}`
- output += `\n`
- }
-
- for (let program of programs) {
- if (!program) continue
-
- const start = program.start ? dayjs.unix(program.start).utc().format('YYYYMMDDHHmmss ZZ') : ''
- const stop = program.stop ? dayjs.unix(program.stop).utc().format('YYYYMMDDHHmmss ZZ') : ''
-
- if (start && stop) {
- output += ``
-
- program.title.forEach(title => {
- output += `${escapeString(title.value)}`
- })
-
- program.description.forEach(description => {
- output += `${escapeString(description.value)}`
- })
-
- program.categories.forEach(category => {
- output += `${escapeString(category.value)}`
- })
-
- if (program.image) output += ``
-
- output += '\n'
- }
- }
-
- output += ''
-
- return output
-}
-
-module.exports = xml
-
-function escapeString(string, defaultValue = '') {
- if (!string) return defaultValue
-
- const regex = new RegExp(
- '((?:[\0-\x08\x0B\f\x0E-\x1F\uFFFD\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]))|([\\x7F-\\x84]|[\\x86-\\x9F]|[\\uFDD0-\\uFDEF]|(?:\\uD83F[\\uDFFE\\uDFFF])|(?:\\uD87F[\\uDF' +
- 'FE\\uDFFF])|(?:\\uD8BF[\\uDFFE\\uDFFF])|(?:\\uD8FF[\\uDFFE\\uDFFF])|(?:\\uD93F[\\uDFFE\\uD' +
- 'FFF])|(?:\\uD97F[\\uDFFE\\uDFFF])|(?:\\uD9BF[\\uDFFE\\uDFFF])|(?:\\uD9FF[\\uDFFE\\uDFFF])' +
- '|(?:\\uDA3F[\\uDFFE\\uDFFF])|(?:\\uDA7F[\\uDFFE\\uDFFF])|(?:\\uDABF[\\uDFFE\\uDFFF])|(?:\\' +
- 'uDAFF[\\uDFFE\\uDFFF])|(?:\\uDB3F[\\uDFFE\\uDFFF])|(?:\\uDB7F[\\uDFFE\\uDFFF])|(?:\\uDBBF' +
- '[\\uDFFE\\uDFFF])|(?:\\uDBFF[\\uDFFE\\uDFFF])(?:[\\0-\\t\\x0B\\f\\x0E-\\u2027\\u202A-\\uD7FF\\' +
- 'uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|' +
- '(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]))',
- 'g'
- )
-
- string = String(string || '').replace(regex, '')
-
- return string
- .replace(/&/g, '&')
- .replace(//g, '>')
- .replace(/"/g, '"')
- .replace(/'/g, ''')
- .replace(/\n|\r/g, ' ')
- .replace(/ +/g, ' ')
- .trim()
-}
diff --git a/sites/sky.com/sky.com_uk.channels.xml b/sites/sky.com/sky.com_uk.channels.xml
index 65ca2daa..c4f747ec 100644
--- a/sites/sky.com/sky.com_uk.channels.xml
+++ b/sites/sky.com/sky.com_uk.channels.xml
@@ -10,6 +10,7 @@
Ahlulbayt TV
Akaal Channel UK
Aljazeera English
+ Animal Planet
BBC Four
BBC News
BBC One
@@ -18,41 +19,58 @@
BBC Parliament
BBC Red Button 1
BBC Two
+ BT Sport 1
+ BT Sport 2
+ BT Sport 3
+ BT Sport Box Office
+ BT Sport Box Office 2
+ BT Sport / ESPN
Blaze UK
+ Boomerang
Box Hits
Brit Asia TV
CBBC
- CBeebies UK
CBS Drama UK
CBS Justice UK
CBS Reality UK
+ CBeebies UK
+ CITV
Challenge UK
Channel 4
Channel 5
Channel 5 +1
- CITV
+ Comedy Central Extra UK
+ Comedy Central
Create and Craft
Cruise 1st TV
- Dave ja vu
- Dave UK
DMAX UK
+ Dave UK
+ Dave ja vu
+ Discovery Channel UK
+ Discovery History UK
+ Discovery Science UK
+ Discovery Turbo UK
Drama UK
Drama UK +1
E4 UK
E4 UK +1
Eman Channel
+ Eurosport 2 UK
+ Eurosport 1 UK
Film 4 UK
Film 4 UK +1
Food Network UK
Forces TV
+ France 24 English
FreeSports
Gems TV
Gold HD
+ Great! Movies
+ Great! Movies Action
+ Great! Movies Classic
+ Great! TV
HGTV UK
Horror Channel UK
- Ideal Extra
- Ideal World
- Iran International
ITV 2
ITV 2 +1
ITV 3
@@ -61,26 +79,35 @@
ITV 4 +1
ITV Be
ITV London
+ Ideal Extra
+ Ideal World
+ Iran International
Jewellery Maker
Kanshi TV
+ LFC TV
London Live
+ MUTV
More 4 UK
- Now 80's
- Paramount Network UK
+ National Geographic UK
+ National Geographic Wild UK
+ NickToons UK
+ Now 70's
+ Now 80's
+ Now 90's
PBS America
+ Paramount Network UK
Pick UK
Pop
- Quest Red UK
- Quest Red UK +1
QVC Beauty
QVC Style UK
+ Quest Red UK
+ Quest Red UK +1
+ RT UK
Racing TV
Really UK
- RT UK
Sangat TV
Sky Arts UK
Sky Atlantic HD
- Sky Comedy HD
Sky Cinema Action HD
Sky Cinema Animation HD
Sky Cinema Comedy HD
@@ -89,19 +116,38 @@
Sky Cinema Feel Good HD
Sky Cinema Greats HD
Sky Cinema Hits HD
- Sky Cinema Premiere HD
Sky Cinema Premiere +1
+ Sky Cinema Premiere HD
+ Sky Cinema Sci-Fi Horror H
Sky Cinema Sci-Fi Horror HD
Sky Cinema Thriller HD
+ Sky Comedy HD
+ Sky Crime
+ Sky Documentaries
Sky Max HD
+ Sky Nature
+ Sky News
+ Sky Replay
Sky Showcase HD
+ Sky Sports Arena
+ Sky Sports Box Office
+ Sky Sports Cricket
+ Sky Sports F1
+ Sky Sports Football
+ Sky Sports Golf
+ Sky Sports Main Event
+ Sky Sports Mix
+ Sky Sports NFL
+ Sky Sports News UK
+ Sky Sports Premier League UK
Sky Witness HD
Smithsonian Channel UK
Spotlight TV
- Talking Pictures TV
+ Syfy UK
TBN UK
- Tiny Pop
TJC
+ Talking Pictures TV
+ Tiny Pop
Together TV
Yesterday
Yesterday +1
diff --git a/sites/tvtv.us/tvtv.us_us.channels.xml b/sites/tvtv.us/tvtv.us_us.channels.xml
index e19de179..bb111848 100644
--- a/sites/tvtv.us/tvtv.us_us.channels.xml
+++ b/sites/tvtv.us/tvtv.us_us.channels.xml
@@ -4,45 +4,45 @@
3ABN
5 Kanal
5 StarMax East
- 5 StarMax West
+ 5 StarMax West
ABC Central
ABC East
ABC Mountain
ABC Spark
ABC West
ABP News USA
- ACC Network
+ ACC Network
A&E East
AETN3
AETN
AETN-DT2
- A&E West
+ A&E West
AMC East
- AMC West
- AMP2
+ AMC West
+ AMP2
ANT1 Satellite
APT2
APT
APT-DT3
- ART America
+ ART America
ARY Musik
ARY QTV
- ARY Zauq
- AT&T SportsNet Pittsburgh
- AT&T SportsNet Rocky Mountain
- AT&T SportsNet Rocky Mountain Utah
- AT&T SportsNet Rocky Mountain West
+ ARY Zauq
+ AT&T SportsNet Pittsburgh
+ AT&T SportsNet Rocky Mountain
+ AT&T SportsNet Rocky Mountain Utah
+ AT&T SportsNet Rocky Mountain West
AT&T SportsNet Southwest Houston
- AWE
+ AWE
AWE
AXN Latinoamérica
- AXS TV
- Aaj Tak
+ AXS TV
+ Aaj Tak
Aapka Colors
Abu Dhabi TV
- AccuWeather
+ AccuWeather
ActionMax East
- ActionMax West
+ ActionMax West
Adult Channel
Adult Swim East
Adult Swim West
@@ -54,118 +54,118 @@
Altitude Sports
Amazing Facts TV
American Heroes Channel USA
- America's Auction Channel
+ America's Auction Channel
Animal Planet East
- Animal Planet West
- Antenna TV
+ Animal Planet West
+ Antenna TV
Arirang World
Arise News
Aspire TV
Audience Network
B4U Movies USA
- B4U Music USA
+ B4U Music USA
BBC America East
- BBC America West
+ BBC America West
BBC News Arabic
BBC World News Americas
BET East
- BET Gospel
- BET Her
- BET Jams
- BET Soul
- BET West
+ BET Gospel
+ BET Her
+ BET Jams
+ BET Soul
+ BET West
BYU TV
- BabyFirst TV
- Bally Sports Arizona
+ BabyFirst TV
+ Bally Sports Arizona
Bally Sports Arizona Extra
Bally Sports Arizona Northern New Mexico
Bally Sports Arizona+
- Bally Sports Detroit
+ Bally Sports Detroit
Bally Sports Detroit+
Bally Sports Florida 1
Bally Sports Florida 2
- Bally Sports Florida
- Bally Sports Great Lakes
- Bally Sports Indiana
+ Bally Sports Florida
+ Bally Sports Great Lakes
+ Bally Sports Indiana
Bally Sports Midwest
Bally Sports Midwest Kansas City
Bally Sports Midwest Kansas State
Bally Sports Midwest Nebraska
Bally Sports Midwest+ St Louis
Bally Sports Midwest St Louis
- Bally Sports New Orleans
- Bally Sports North
+ Bally Sports New Orleans
+ Bally Sports North
Bally Sports North+
- Bally Sports Ohio
+ Bally Sports Ohio
Bally Sports Ohio+
- Bally Sports Oklahoma
- Bally Sports San Diego
- Bally Sports SoCal
- Bally Sports South
+ Bally Sports Oklahoma
+ Bally Sports San Diego
+ Bally Sports SoCal
+ Bally Sports South
Bally Sports South Carolinas
Bally Sports South Nashville
- Bally Sports Southeast
+ Bally Sports Southeast
Bally Sports Southeast Georgia
Bally Sports Southeast Nashville
Bally Sports Southeast North Carolina
Bally Sports Southeast South Carolina
- Bally Sports Southeast Tennessee
+ Bally Sports Southeast Tennessee
Bally Sports Southeast Tennessee East
- Bally Sports Southwest
+ Bally Sports Southwest
Bally Sports Southwest Dallas
Bally Sports Southwest Houston
Bally Sports Southwest Oklahoma 2
Bally Sports Southwest San Antonio
- Bally Sports Sun
- Bally Sports West
- Bally Sports Wisconsin
+ Bally Sports Sun
+ Bally Sports West
+ Bally Sports Wisconsin
BeIn Sports USA
- BeIn Sports en Español
+ BeIn Sports en Español
BeIn Sports en Español
- Big Ten Network
+ Big Ten Network
Big Ten Network Alternate
Big Ten Network Overflow 1
- Big Ten Network Overflow 2
- Big Ten Network Overflow 3
- Big Ten Network Overflow 4
+ Big Ten Network Overflow 2
+ Big Ten Network Overflow 3
+ Big Ten Network Overflow 4
Blaze
- Bloomberg TV
+ Bloomberg TV
BlueHighways TV
Boomerang US
- Bounce
+ Bounce
WXXA-TV4
Bravo East
- Bravo West
- Brazzers TV
- Buzzr
- CBHT
- CBLT
- CBN
+ Bravo West
+ Brazzers TV
+ Buzzr
+ CBHT
+ CBLT
+ CBN
CBS East
CBS Mountain
CBS Sports Network USA
CBS West
CCTV 3
CCTV 4 America
- CFTO
+ CFTO
CGTN America
CMT East
- CMT Music
- CMT West
- CNBC
+ CMT Music
+ CMT West
+ CNBC
CNBC West
- CNBC World
- CNN
+ CNBC World
+ CNN
CNN International Asia
CNN International Europe
CNN International North America
CNN West
- CNN en Español
+ CNN en Español
C-SPAN 2
C-SPAN 3
C-SPAN
- CTI Zhong Tian Channel
- CTN
+ CTI Zhong Tian Channel
+ CTN
CW Central
CW East
CW+ Central
@@ -175,36 +175,36 @@
Canal Sur Andalucía
Canal Uno Internacional
Caracol Internacional
- CaribVision
+ CaribVision
Cars.TV
Cartoon Network East
- Cartoon Network West
+ Cartoon Network West
Cartoon Network en Espanol
- Catholic Faith Network
+ Catholic Faith Network
Centroamérica TV
Channel i
- Charge!
+ Charge!
Cheddar
Cine Mexicano
Cine Sony
Cinemax East
Cinemax Latinoamérica
- Cinemax West
- Classic Arts Showcase
- Cleo TV
- Colors Bangla
+ Cinemax West
+ Classic Arts Showcase
+ Cleo TV
+ Colors Bangla
Comedy Central East
- Comedy Central West
- Comedy.TV
- Comet
+ Comedy Central West
+ Comedy.TV
+ Comet
Contra Costa Television
- Cooking Channel
+ Cooking Channel
Corner Store TV
Court TV Mystery
Cox Sports TV
- Cozi TV
- CreaTV Classrooms
- Create
+ Cozi TV
+ CreaTV Classrooms
+ Create
Crime + Investigation Network USA
Crime + Investigation USA
Curiosity Channel
@@ -214,176 +214,176 @@
DD Urdu
DIY Network East
DIY Network West
- DW Deutsch+
+ DW Deutsch+
DW English
Daystar TV
- Decades
- Destination America
+ Decades
+ Destination America
Discovery Channel East
- Discovery Channel West
+ Discovery Channel West
Discovery Familia
Discovery Family
- Discovery Life Channel
+ Discovery Life Channel
Discovery Velocity
Discovery en Espanol
Disney Channel East
Disney Channel España
Disney Channel Latinoamérica
- Disney Channel West
+ Disney Channel West
Disney Junior East
- Disney Junior West
+ Disney Junior West
Disney XD East
- Disney XD West
- DocuBox
+ Disney XD West
+ DocuBox
Dorcel TV
- Dream 2
+ Dream 2
E! East
ESNE TV
ESPN 2 West
- ESPN 2
- ESPN
- ESPN Bases Loaded
- ESPN Buzzer Beater
+ ESPN 2
+ ESPN
+ ESPN Bases Loaded
+ ESPN Buzzer Beater
ESPN Classic USA
- ESPN College Extra 1
- ESPN College Extra 2
- ESPN College Extra 3
- ESPN College Extra 4
- ESPN College Extra 5
- ESPN College Extra 6
- ESPN College Extra 7
- ESPN College Extra 8
- ESPN Deportes
+ ESPN College Extra 1
+ ESPN College Extra 2
+ ESPN College Extra 3
+ ESPN College Extra 4
+ ESPN College Extra 5
+ ESPN College Extra 6
+ ESPN College Extra 7
+ ESPN College Extra 8
+ ESPN Deportes
ESPN Goal Line
ESPN News
- ESPNU
+ ESPNU
ESPNU West
ESPN West
ES.TV
ETTV America
ETTV China
- ETTV Drama
+ ETTV Drama
ETTV Financial
- ETTV Global
- ETTV News
+ ETTV Global
+ ETTV News
ETTV Super West
ETTV YOYO
EWTN España
EWTN US
E! West
Eleven Sports USA
- Enlace
+ Enlace
Epix2 East
Epix2 West
- Epix Drive-In
- Epix East
- Epix Hits
- Epix West
- Esperanza TV
- Estrella TV
+ Epix Drive-In
+ Epix East
+ Epix Hits
+ Epix West
+ Esperanza TV
+ Estrella TV
Euronews English
Euronews Français
- FETV
+ FETV
FX East
FX Movie Channel
- FX West
+ FX West
FXX East
- FXX West
+ FXX West
FYI East
- FYI West
+ FYI West
Family CHRGD
Flix East
- Flix West
+ Flix West
Folk TV
Food Network East
- Food Network West
- Fox Business
+ Food Network West
+ Fox Business
Fox College Sports Central
Fox College Sports East
Fox College Sports West
- Fox Deportes
+ Fox Deportes
Fox East
Fox Mountain
Fox Movies
- Fox Soccer Plus
+ Fox Soccer Plus
Fox Sports 1
Fox Sports 2
- Fox Sports Racing
+ Fox Sports Racing
Fox Sports Racing
Fox West
- France 24 English
+ France 24 English
France 24 Français
- Free Speech TV
+ Free Speech TV
Freeform East
- Freeform West
+ Freeform West
Fuse East
- Fuse West
- Fusion
+ Fuse West
+ Fusion
Future TV International
GEB America
- GMA Life TV
- GMA News
- GMA Pinoy TV
+ GMA Life TV
+ GMA News
+ GMA Pinoy TV
Galavisión Este
Galavisión Oeste
Game Show Network East
- Game Show Network West
- Gem Shopping Network
- GetTV
- Go4IT
+ Game Show Network West
+ Gem Shopping Network
+ GetTV
+ Go4IT
God TV US
- Gol TV
+ Gol TV
Gol TV Espanol
Golf Channel US
- Gospel Broadcasting Network
+ Gospel Broadcasting Network
Great American Country
- Grit
+ Grit
HBO2 East
- HBO2 West
+ HBO2 West
HBO Comedy East
- HBO Comedy West
+ HBO Comedy West
HBO East
HBO Family East
HBO Family Latinoamérica
- HBO Family West
+ HBO Family West
HBO Latinoamérica East
HBO Latinoamérica West
HBO+ Latinoamérica
HBO Signature East
- HBO Signature West
- HBO West
+ HBO Signature West
+ HBO West
HBO Zone East
- HBO Zone West
- HDNet Movies
+ HBO Zone West
+ HDNet Movies
HGTV East
HGTV West
- HITN
- HLN
- HSN2
- HSN
- HTV
+ HITN
+ HLN
+ HSN2
+ HSN
+ HTV
Hallmark Channel East
- Hallmark Channel West
- Hallmark Drama
+ Hallmark Channel West
+ Hallmark Drama
Hallmark Movies & Mysteries East
- Hallmark Movies & Mysteries West
- Heartland
+ Hallmark Movies & Mysteries West
+ Heartland
Heroes & Icons
Heroes & Icons East
- Hillsong Channel
+ Hillsong Channel
Historia
History East
- History West
+ History West
History en Español Central
History en Español East
History en Español Mountain
History en Español West
Hope Channel
Hot Choice
- Hum TV
+ Hum TV
IFC East
- IFC West
- INSP
+ IFC West
+ INSP
ION Television Central
ION Television East
ION Television Mountain
@@ -394,81 +394,81 @@
In Demand en Español
India Today
IndiePlex East
- IndiePlex West
+ IndiePlex West
Investigation Discovery East
- Investigation Discovery West
+ Investigation Discovery West
Jaya Movie
- Jaya Plus
+ Jaya Plus
Jaya TV
Jewelry TV
Jewish Life Television
Jiangsu TV International
Justice Central TV
KBS World
- Kanal D
+ Kanal D
Kids Street
Kids & Teens TV
La Chaîne Disney
- Laff
+ Laff
Lifetime East
Lifetime Movies East
Lifetime Movies West
Lifetime Real Women East
Lifetime Real Women West
- Lifetime West
- Link TV
+ Lifetime West
+ Link TV
Living Faith TV
Logo East
- Logo West
- Longhorn Network
- MASN2
- MASN
- MBC America
+ Logo West
+ Longhorn Network
+ MASN2
+ MASN
+ MBC America
MBC Drama
MCAETv
MCTV
MGM HD USA
- MLB Network
+ MLB Network
MLB Strike Zone
MNT East
MNT West
MPT
- MSG2
- MSG
+ MSG2
+ MSG
MSG+
MSG+ Syracuse
MSG Syracuse
- MSNBC
+ MSNBC
MTV2 East
- MTV2 West
+ MTV2 West
MTV Classic East
- MTV Classic West
+ MTV Classic West
MTV East
MTV Live HD
MTV Tr3s East
MTV Tr3s West
MTV U
MTV West
- Marquee Sports Network
- MavTV
+ Marquee Sports Network
+ MavTV
MeTV
- Mediaset Italia
+ Mediaset Italia
Mega Cosmos Amerika/Kanada
- Mega TV
- Melody Aflam
+ Mega TV
+ Melody Aflam
Melody Drama
Melody Hits
- Mezzo Live HD
+ Mezzo Live HD
Military History
MoreMax East
- MoreMax West
+ MoreMax West
Motor Trend
MovieMax East
- MovieMax West
+ MovieMax West
MoviePlex East
MoviePlex Mountain
- MoviePlex West
- Movies!
+ MoviePlex West
+ Movies!
Music Choice 70s
Music Choice 80s
Music Choice 90s
@@ -522,80 +522,80 @@
Music Choice Y2K
MyDestination.TV
NASA TV Public
- NASA TV UHD
+ NASA TV UHD
NASA TV UHD
- NBA League Pass 1
- NBA League Pass 2
- NBA League Pass 3
- NBA League Pass 4
- NBA League Pass 5
- NBA League Pass 6
- NBA League Pass 7
- NBA League Pass 8
- NBA League Pass 9
- NBA League Pass 10
- NBA TV
+ NBA League Pass 1
+ NBA League Pass 2
+ NBA League Pass 3
+ NBA League Pass 4
+ NBA League Pass 5
+ NBA League Pass 6
+ NBA League Pass 7
+ NBA League Pass 8
+ NBA League Pass 9
+ NBA League Pass 10
+ NBA TV
NBC East
NBC Mountain
- NBC Sports
+ NBC Sports
NBC Sports Baltimore
- NBC Sports Bay Area
+ NBC Sports Bay Area
NBC Sports Bay Area & California Plus 2
NBC Sports Bay Area & California Plus
- NBC Sports Boston
- NBC Sports California
- NBC Sports Chicago
- NBC Sports Chicago Plus 2
- NBC Sports Chicago Plus
- NBC Sports Philadelphia
+ NBC Sports Boston
+ NBC Sports California
+ NBC Sports Chicago
+ NBC Sports Chicago Plus 2
+ NBC Sports Chicago Plus
+ NBC Sports Philadelphia
NBC Sports Philadelphia+
- NBC Sports Washington
+ NBC Sports Washington
NBC Sports Washington+
NBC Universo East
NBC Universo West
NBC West
- NDTV 24x7
- NDTV Good Times
- NESN
+ NDTV 24x7
+ NDTV Good Times
+ NESN
NESN Plus
- NFL Network
- NFL Red Zone
+ NFL Network
+ NFL Red Zone
NHK World Japan
- NHL Network
+ NHL Network
NHL Network Alternate
- NRBTV
+ NRBTV
NTD TV
- NTV
- Nat Geo Mundo
+ NTV
+ Nat Geo Mundo
National Geographic East
National Geographic West
- National Geographic Wild
+ National Geographic Wild
New Greek TV
NewsNation East
- Newsmax TV
- Newsy
+ Newsmax TV
+ Newsy
Nick Jr East
- Nick Jr West
- NickMusic
+ Nick Jr West
+ NickMusic
Nickelodeon East
- Nickelodeon West
+ Nickelodeon West
Nicktoons East
- Nicktoons West
+ Nicktoons West
OSN Ya Hala
- Olympic Channel
- OnTV4U
- One America News Network
+ Olympic Channel
+ OnTV4U
+ One America News Network
One Caribbean Television
Oprah Winfrey Network East
Oprah Winfrey Network West
- Outdoor Channel
+ Outdoor Channel
OuterMax East
- OuterMax West
+ OuterMax West
Outside TV
- Ovation
+ Ovation
Oxygen East
- Oxygen West
- PBS
+ Oxygen West
+ PBS
NJTV
PBS East
PBS Georgia Public Television
@@ -603,13 +603,13 @@
PBS World
PCNTV
PTC Punjabi
- Pac-12 Arizona
- Pac-12 Bay Area
- Pac-12 Los Angeles
- Pac-12 Mountain
+ Pac-12 Arizona
+ Pac-12 Bay Area
+ Pac-12 Los Angeles
+ Pac-12 Mountain
Pac-12 Networks
- Pac-12 Oregon
- Pac-12 Washington
+ Pac-12 Oregon
+ Pac-12 Washington
Paramount Network East
Paramount Network West
Peace TV English
@@ -621,43 +621,43 @@
PixL TV
PixL TV en Espanol
Planète+
- Playboy TV Latin America
+ Playboy TV Latin America
Playboy TV USA
Pop East
- Pop West
+ Pop West
Positiv
ProSiebenSat.1 Welt
- Pursuit Channel
- QVC2
- QVC3
+ Pursuit Channel
+ QVC2
+ QVC3
QVC US
- Quest
+ Quest
RCN Nuestra Tele
RFD-TV
RT America
RTL Living Deutschland
RTP Internacional América
RTP Internacional Europa
- RTR Planeta
+ RTR Planeta
RTVi USA
Rai 1
Rai 1
Rai Italia Nord America
Rai Italia Nord America
- Rai News 24
+ Rai News 24
Rai World Premium
Recipe.TV
Record TV Américas
Rede Globo
- Reelz
+ Reelz
RetroPlex East
- RetroPlex West
+ RetroPlex West
Retro TV
- Revenue Frontier
- Rev'n
- Revolt
+ Revenue Frontier
+ Rev'n
+ Revolt
Ride TV
- Root Sports Northwest
+ Root Sports Northwest
Root Sports Northwest Seattle
Rotana Aflam
Rotana Cinema
@@ -666,158 +666,158 @@
Rotana Drama
Rotana Khalijia
Russkiy Illusion
- SBS
+ SBS
SBTN
SCETV
SDPB
- SEC Network
+ SEC Network
SEC Network Alternate 2
SEC Network Alternate
SET Asia
- SET International
+ SET International
SHOxBET East
SHOxBET West
SportsNet New York
Saint-Pierre et Miquelon la 1ère
Sale Network
Schlager TV
- Science
+ Science
Science West
- ScreenPix
- ScreenPix Action
- ScreenPix Voices
- ScreenPix Westerns
- Shepherd's Chapel
- ShopHQ
- Shop LC
- Shop TV
+ ScreenPix
+ ScreenPix Action
+ ScreenPix Voices
+ ScreenPix Westerns
+ Shepherd's Chapel
+ ShopHQ
+ Shop LC
+ Shop TV
Showtime 2 East
Showtime 2 West
Showtime East
Showtime Extreme East
- Showtime Extreme West
+ Showtime Extreme West
Showtime Family Zone East
Showtime Family Zone West
Showtime Next East
- Showtime Next West
+ Showtime Next West
Showtime Showcase East
- Showtime Showcase West
- Showtime West
+ Showtime Showcase West
+ Showtime West
Showtime Women East
- Showtime Women West
- Sky Link TV
- Sky News Arabia
- Smart LifeStyle TV
+ Showtime Women West
+ Sky Link TV
+ Sky News Arabia
+ Smart LifeStyle TV
Smile TV
Smithsonian Channel East
Smithsonian Channel West
- SonLife Broadcasting Network
- Sony Mix
+ SonLife Broadcasting Network
+ Sony Mix
Sony Movies
Sony SAB TV
Sony SAB TV USA
Sorpresa!
Spectrum News 1 Worcester
Spectrum OC16
- Spectrum SportsNet
- Spectrum SportsNet LA
+ Spectrum SportsNet
+ Spectrum SportsNet LA
SportsMax
SportsNet New York
- Sportsman Channel
- Stadium
- Star Bharat
+ Sportsman Channel
+ Stadium
+ Star Bharat
Start TV
Starz Cinema East
- Starz Cinema West
+ Starz Cinema West
Starz Comedy East
- Starz Comedy West
+ Starz Comedy West
Starz East
Starz Edge East
- Starz Edge West
+ Starz Edge West
Starz Encore Action East
- Starz Encore Action West
+ Starz Encore Action West
Starz Encore Black East
- Starz Encore Black West
+ Starz Encore Black West
Starz Encore Classic East
- Starz Encore Classic West
+ Starz Encore Classic West
Starz Encore East
Starz Encore Family East
- Starz Encore Family West
+ Starz Encore Family West
Starz Encore Suspense East
- Starz Encore Suspense West
- Starz Encore West
+ Starz Encore Suspense West
+ Starz Encore West
Starz Encore Westerns East
- Starz Encore Westerns West
+ Starz Encore Westerns West
Starz In Black East
- Starz In Black West
+ Starz In Black West
Starz Kids & Family East
Starz Kids & Family West
- Starz West
+ Starz West
StudioCanal
Sundance TV East
Sundance TV West
Swagat TV
Syfy East
- Syfy West
+ Syfy West
TBN East
TBN West
TBS East
TBS West
TCM US
- TCT
- Teach
+ TCT
+ Teach
TFC USA
TLC East
- TLC West
+ TLC West
TNT East
- TNT West
+ TNT West
TV5Monde États-Unis
- TVB1
+ TVB1
TVB2
- TVBe
+ TVBe
TVBS
- TVBV
+ TVBV
TVE Internacional América
- TVG2
- TVG
+ TVG2
+ TVG
TV Globo Internacional Américas
- TV Guide
+ TV Guide
TVI Internacional
- TV Japan
- TVK2
+ TV Japan
+ TVK2
TVK
TV Land East
- TV Land West
- TV One
+ TV Land West
+ TV One
TVP Info
- TVP Polonia
- TVW
+ TVP Polonia
+ TVW
TeenNick East
TeenNick West
Tele N
- TeleXitos
+ TeleXitos
Telecentro
Telemicro Canal 5
Telemundo Este
Telemundo Mountain
Telemundo Oeste
Televisión Dominicana
- Tennis Channel
- The Africa Channel
- The Country Network
- The Cowboy Channel
- The Family Channel
- The Israeli Network
+ Tennis Channel
+ The Africa Channel
+ The Country Network
+ The Cowboy Channel
+ The Family Channel
+ The Israeli Network
The Movie Channel East
- The Movie Channel West
+ The Movie Channel West
The Movie Channel Xtra East
The Movie Channel Xtra West
- The Weather Channel
- The Word Network
- This TV
+ The Weather Channel
+ The Word Network
+ This TV
ThrillerMax East
- ThrillerMax West
- Toku
+ ThrillerMax West
+ Toku
Travel Channel East
Travel Channel West
Travelxp 4K North America
@@ -825,59 +825,59 @@
Tri-Valley Community Television
Tru TV East
Tru TV West
- True Crime Network
- TyC Sports
+ True Crime Network
+ TyC Sports
UA: Перший
UCTV
- UPtv
+ UPtv
USA Network East
- USA Network West
+ USA Network West
USArmenia TV
- Ultra Familia
+ Ultra Familia
UniMás Central
UniMás Este
UniMás Mountain
UniMás Oeste
- Universal Kids
+ Universal Kids
Univisión Este
Univisión Mountain
Univisión Oeste
VH1 East
- VH1 West
+ VH1 West
Valu
Venevisión Plus
- Vice
- ViendoMovies
+ Vice
+ ViendoMovies
Vixen
- Vme
- Vme Kids
+ Vme
+ Vme Kids
WWE Network
We TV East
- We TV West
+ We TV West
WeatherNation
- Weather Now
- Willow
- Willow Cricket
+ Weather Now
+ Willow
+ Willow Cricket
World Fishing Network
World Harvest TV
XHDF-TDT
YES2 Overflow
- YES Network
- YouToo
+ YES Network
+ YouToo
YTA TV
- YurView Arizona
- YurView California
+ YurView Arizona
+ YurView California
Z Living USA
Zee 24 Taas
- Zee Bangla
+ Zee Bangla
Zee Bollywood
Zee Cinema USA
- Zee Marathi
+ Zee Marathi
Zee Punjabi
- Zee Salaam
+ Zee Salaam
Zee TV USA
- Zee Tamil
+ Zee Tamil
Zee Zest
- Zing USA
+ Zing USA
diff --git a/tests/__data__/expected/api/programs.json b/tests/__data__/expected/api/programs.json
index f1463b42..7d937c94 100644
--- a/tests/__data__/expected/api/programs.json
+++ b/tests/__data__/expected/api/programs.json
@@ -1 +1 @@
-[{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"CNN Newsroom Sunday","desc":"Свежая мировая информационная сводка от CNN. О политике, экономике, общественной жизни, культуре, спорте.","categories":[],"image":null,"start":1641772800,"stop":1641776400},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"Fareed Zakaria GPS","desc":"Интервью с главными игроками мировой политики.","categories":[],"image":null,"start":1641776400,"stop":1641780000},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"African Voices Changemakers. 114-я серия","desc":"114-я серия. Африка сегодня - люди, новости, события.","categories":[],"image":null,"start":1641780000,"stop":1641781800},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"Marketplace Africa. 549-я серия","desc":"549-я серия. Информационная передача об экономических событиях африканского региона. Анализируются проблемы, даются экономические прогнозы.","categories":[],"image":null,"start":1641781800,"stop":1641782700},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"Marketplace Africa. 548-я серия","desc":"548-я серия. Информационная передача об экономических событиях африканского региона. Анализируются проблемы, даются экономические прогнозы.","categories":[],"image":null,"start":1641782700,"stop":1641783600},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"TBD","desc":"Информационно-познавательный проект CNN.","categories":[],"image":null,"start":1641783600,"stop":1641785400},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"Inside Africa. 586-я серия","desc":"586-я серия. Своеобразное \"путешествие\" по Африке - почувствуйте все разнообразие культур различных стран и регионов континента.","categories":[],"image":null,"start":1641785400,"stop":1641787200},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"CNN Newsroom with Michael Holmes","desc":"Обзор самых важных и актуальных новостей и событий из жизни страны и мира.","categories":[],"image":null,"start":1641787200,"stop":1641789900},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"World Sport","desc":"Все о главных спортивных событиях мира. Обзоры самых важных спортивных событий, аналитика, мнения экспертов.","categories":[],"image":null,"start":1641789900,"stop":1641790800},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"CNN Newsroom with Michael Holmes","desc":"Обзор самых важных и актуальных новостей и событий из жизни страны и мира.","categories":[],"image":null,"start":1641790800,"stop":1641794400},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"CNN Newsroom with Robyn Curnow","desc":"Обзор самых важных и актуальных новостей и событий из жизни страны и мира.","categories":[],"image":null,"start":1641794400,"stop":1641797100},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"World Sport","desc":"Все о главных спортивных событиях мира. Обзоры самых важных спортивных событий, аналитика, мнения экспертов.","categories":[],"image":null,"start":1641797100,"stop":1641798000},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"CNN Newsroom with Rosemary Church","desc":"Свежая мировая информационная сводка от CNN. О политике, экономике, общественной жизни, культуре, спорте.","categories":[],"image":null,"start":1641798000,"stop":1641805200},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"Early Start","desc":"Новости дня с Кристиной Романс и Дейвом Бриггсом.","categories":[],"image":null,"start":1641805200,"stop":1641808800},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"New Day","desc":"Свежий обзор событий в стране и мире.","categories":[],"image":null,"start":1641808800,"stop":1641817800},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"World Sport","desc":"Все о главных спортивных событиях мира. Обзоры самых важных спортивных событий, аналитика, мнения экспертов.","categories":[],"image":null,"start":1641817800,"stop":1641819600},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"First Move with Julia Chatterley","desc":"Несколько больших историй, связанных с открытием рынков в США.","categories":[],"image":null,"start":1641819600,"stop":1641823200},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"Connect the World","desc":"Актуальная мировая информация с разных континентов.","categories":[],"image":null,"start":1641823200,"stop":1641825900},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"World Sport","desc":"Все о главных спортивных событиях мира. Обзоры самых важных спортивных событий, аналитика, мнения экспертов.","categories":[],"image":null,"start":1641825900,"stop":1641826800},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"Connect the World","desc":"Актуальная мировая информация с разных континентов.","categories":[],"image":null,"start":1641826800,"stop":1641830400},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"One World with Zain Asher","desc":"Освещаются важные новости с каждого континента, от политики и текущих дел до социальных вопросов и многого другого.","categories":[],"image":null,"start":1641830400,"stop":1641833100},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"Marketplace Africa. 549-я серия","desc":"549-я серия. Информационная передача об экономических событиях африканского региона. Анализируются проблемы, даются экономические прогнозы.","categories":[],"image":null,"start":1641833100,"stop":1641834000},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"Amanpour","desc":"Сводка новостей от знаменитой ведущей канала CNN.","categories":[],"image":null,"start":1641834000,"stop":1641837600},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"Hala Gorani Tonight","desc":"Используя свой 25-летний журналистский опыт, Хала Горани будет освещать ключевые события в картине дня посредством диалога с гостями и экспертами-аналитиками.","categories":[],"image":null,"start":1641837600,"stop":1641841200},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"Quest Means Business","desc":"Ричард Квест возглавляет группу экспертов и корреспондентов, чтобы предоставить актуальные факты, цифры и анализ из делового мира.","categories":[],"image":null,"start":1641841200,"stop":1641843900},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"Connecting Africa. 114-я серия","desc":"114-я серия. Проект, рассказывающий о людях и компаниях, которые совершают революцию в африканском бизнесе, и о тех, кто объединяет континент, выступая за свободную торговлю в Африке.","categories":[],"image":null,"start":1641843900,"stop":1641844800},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"The Lead with Jake Tapper","desc":"Оперативная сводка новостей страны и мира.","categories":[],"image":null,"start":1641844800,"stop":1641848400},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"The Global Brief with Bianca Nobilo","desc":"Global Brief с Бьянкой Нобило проницательно исследует меняющийся мир для меняющейся аудитории, обеспечивая непревзойденную глубину и качество для занятых зрителей в быстро меняющемся мире.","categories":[],"image":null,"start":1641848400,"stop":1641850200},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"World Sport","desc":"Все о главных спортивных событиях мира. Обзоры самых важных спортивных событий, аналитика, мнения экспертов.","categories":[],"image":null,"start":1641850200,"stop":1641852000},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"The Situation Room with Wolf Blitzer","desc":"Командный центр новостей, политики и неординарных репортажей со всего мира.","categories":[],"image":null,"start":1641852000,"stop":1641855600},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"Erin Burnett OutFront","desc":"Обсуждение самых важных мировых тем в эфире канала CNN.","categories":[],"image":null,"start":1641855600,"stop":1641859200},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"Anderson Cooper 360","desc":"Уникальный взгляд Андерсона Купера на главные события мира.","categories":[],"image":null,"start":1641859200,"stop":1641862800},{"channel":"MNetMovies2.za","site":"dstv.com","lang":"en","title":"Fatman","desc":null,"categories":[],"image":null,"start":1641761700,"stop":1641767700},{"channel":"MNetMovies2.za","site":"dstv.com","lang":"en","title":"Motherless Brooklyn","desc":null,"categories":[],"image":null,"start":1641767700,"stop":1641776100},{"channel":"MNetMovies2.za","site":"dstv.com","lang":"en","title":"The Water Diviner","desc":null,"categories":[],"image":null,"start":1641776100,"stop":1641782700},{"channel":"MNetMovies2.za","site":"dstv.com","lang":"en","title":"Outbreak","desc":null,"categories":[],"image":null,"start":1641782700,"stop":1641790200},{"channel":"MNetMovies2.za","site":"dstv.com","lang":"en","title":"Paranoia","desc":null,"categories":[],"image":null,"start":1641790200,"stop":1641796500},{"channel":"MNetMovies2.za","site":"dstv.com","lang":"en","title":"Beyond The Line","desc":null,"categories":[],"image":null,"start":1641796500,"stop":1641801300},{"channel":"MNetMovies2.za","site":"dstv.com","lang":"en","title":"Backdraft","desc":null,"categories":[],"image":null,"start":1641801300,"stop":1641809400},{"channel":"MNetMovies2.za","site":"dstv.com","lang":"en","title":"Mafia","desc":null,"categories":[],"image":null,"start":1641809400,"stop":1641814500},{"channel":"MNetMovies2.za","site":"dstv.com","lang":"en","title":"12 Strong","desc":null,"categories":[],"image":null,"start":1641814500,"stop":1641822300},{"channel":"MNetMovies2.za","site":"dstv.com","lang":"en","title":"Robin Hood","desc":null,"categories":[],"image":null,"start":1641822300,"stop":1641829200},{"channel":"MNetMovies2.za","site":"dstv.com","lang":"en","title":"The Scorpion King","desc":null,"categories":[],"image":null,"start":1641829200,"stop":1641834780},{"channel":"MNetMovies2.za","site":"dstv.com","lang":"en","title":"The Last Witch Hunter","desc":null,"categories":[],"image":null,"start":1641834780,"stop":1641841200},{"channel":"MNetMovies2.za","site":"dstv.com","lang":"en","title":"Force Of Nature","desc":null,"categories":[],"image":null,"start":1641841200,"stop":1641847200},{"channel":"MNetMovies2.za","site":"dstv.com","lang":"en","title":"Bad Boys For Life","desc":null,"categories":[],"image":null,"start":1641847200,"stop":1641850800}]
\ No newline at end of file
+[{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"CNN Newsroom Sunday","desc":"Свежая мировая информационная сводка от CNN. О политике, экономике, общественной жизни, культуре, спорте.","categories":[],"season":null,"episode":null,"image":null,"start":1641772800,"stop":1641776400},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"Fareed Zakaria GPS","desc":"Интервью с главными игроками мировой политики.","categories":[],"season":null,"episode":null,"image":null,"start":1641776400,"stop":1641780000},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"African Voices Changemakers. 114-я серия","desc":"114-я серия. Африка сегодня - люди, новости, события.","categories":[],"season":null,"episode":null,"image":null,"start":1641780000,"stop":1641781800},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"Marketplace Africa. 549-я серия","desc":"549-я серия. Информационная передача об экономических событиях африканского региона. Анализируются проблемы, даются экономические прогнозы.","categories":[],"season":null,"episode":null,"image":null,"start":1641781800,"stop":1641782700},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"Marketplace Africa. 548-я серия","desc":"548-я серия. Информационная передача об экономических событиях африканского региона. Анализируются проблемы, даются экономические прогнозы.","categories":[],"season":null,"episode":null,"image":null,"start":1641782700,"stop":1641783600},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"TBD","desc":"Информационно-познавательный проект CNN.","categories":[],"season":null,"episode":null,"image":null,"start":1641783600,"stop":1641785400},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"Inside Africa. 586-я серия","desc":"586-я серия. Своеобразное \"путешествие\" по Африке - почувствуйте все разнообразие культур различных стран и регионов континента.","categories":[],"season":null,"episode":null,"image":null,"start":1641785400,"stop":1641787200},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"CNN Newsroom with Michael Holmes","desc":"Обзор самых важных и актуальных новостей и событий из жизни страны и мира.","categories":[],"season":null,"episode":null,"image":null,"start":1641787200,"stop":1641789900},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"World Sport","desc":"Все о главных спортивных событиях мира. Обзоры самых важных спортивных событий, аналитика, мнения экспертов.","categories":[],"season":null,"episode":null,"image":null,"start":1641789900,"stop":1641790800},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"CNN Newsroom with Michael Holmes","desc":"Обзор самых важных и актуальных новостей и событий из жизни страны и мира.","categories":[],"season":null,"episode":null,"image":null,"start":1641790800,"stop":1641794400},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"CNN Newsroom with Robyn Curnow","desc":"Обзор самых важных и актуальных новостей и событий из жизни страны и мира.","categories":[],"season":null,"episode":null,"image":null,"start":1641794400,"stop":1641797100},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"World Sport","desc":"Все о главных спортивных событиях мира. Обзоры самых важных спортивных событий, аналитика, мнения экспертов.","categories":[],"season":null,"episode":null,"image":null,"start":1641797100,"stop":1641798000},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"CNN Newsroom with Rosemary Church","desc":"Свежая мировая информационная сводка от CNN. О политике, экономике, общественной жизни, культуре, спорте.","categories":[],"season":null,"episode":null,"image":null,"start":1641798000,"stop":1641805200},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"Early Start","desc":"Новости дня с Кристиной Романс и Дейвом Бриггсом.","categories":[],"season":null,"episode":null,"image":null,"start":1641805200,"stop":1641808800},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"New Day","desc":"Свежий обзор событий в стране и мире.","categories":[],"season":null,"episode":null,"image":null,"start":1641808800,"stop":1641817800},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"World Sport","desc":"Все о главных спортивных событиях мира. Обзоры самых важных спортивных событий, аналитика, мнения экспертов.","categories":[],"season":null,"episode":null,"image":null,"start":1641817800,"stop":1641819600},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"First Move with Julia Chatterley","desc":"Несколько больших историй, связанных с открытием рынков в США.","categories":[],"season":null,"episode":null,"image":null,"start":1641819600,"stop":1641823200},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"Connect the World","desc":"Актуальная мировая информация с разных континентов.","categories":[],"season":null,"episode":null,"image":null,"start":1641823200,"stop":1641825900},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"World Sport","desc":"Все о главных спортивных событиях мира. Обзоры самых важных спортивных событий, аналитика, мнения экспертов.","categories":[],"season":null,"episode":null,"image":null,"start":1641825900,"stop":1641826800},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"Connect the World","desc":"Актуальная мировая информация с разных континентов.","categories":[],"season":null,"episode":null,"image":null,"start":1641826800,"stop":1641830400},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"One World with Zain Asher","desc":"Освещаются важные новости с каждого континента, от политики и текущих дел до социальных вопросов и многого другого.","categories":[],"season":null,"episode":null,"image":null,"start":1641830400,"stop":1641833100},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"Marketplace Africa. 549-я серия","desc":"549-я серия. Информационная передача об экономических событиях африканского региона. Анализируются проблемы, даются экономические прогнозы.","categories":[],"season":null,"episode":null,"image":null,"start":1641833100,"stop":1641834000},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"Amanpour","desc":"Сводка новостей от знаменитой ведущей канала CNN.","categories":[],"season":null,"episode":null,"image":null,"start":1641834000,"stop":1641837600},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"Hala Gorani Tonight","desc":"Используя свой 25-летний журналистский опыт, Хала Горани будет освещать ключевые события в картине дня посредством диалога с гостями и экспертами-аналитиками.","categories":[],"season":null,"episode":null,"image":null,"start":1641837600,"stop":1641841200},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"Quest Means Business","desc":"Ричард Квест возглавляет группу экспертов и корреспондентов, чтобы предоставить актуальные факты, цифры и анализ из делового мира.","categories":[],"season":null,"episode":null,"image":null,"start":1641841200,"stop":1641843900},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"Connecting Africa. 114-я серия","desc":"114-я серия. Проект, рассказывающий о людях и компаниях, которые совершают революцию в африканском бизнесе, и о тех, кто объединяет континент, выступая за свободную торговлю в Африке.","categories":[],"season":null,"episode":null,"image":null,"start":1641843900,"stop":1641844800},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"The Lead with Jake Tapper","desc":"Оперативная сводка новостей страны и мира.","categories":[],"season":null,"episode":null,"image":null,"start":1641844800,"stop":1641848400},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"The Global Brief with Bianca Nobilo","desc":"Global Brief с Бьянкой Нобило проницательно исследует меняющийся мир для меняющейся аудитории, обеспечивая непревзойденную глубину и качество для занятых зрителей в быстро меняющемся мире.","categories":[],"season":null,"episode":null,"image":null,"start":1641848400,"stop":1641850200},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"World Sport","desc":"Все о главных спортивных событиях мира. Обзоры самых важных спортивных событий, аналитика, мнения экспертов.","categories":[],"season":null,"episode":null,"image":null,"start":1641850200,"stop":1641852000},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"The Situation Room with Wolf Blitzer","desc":"Командный центр новостей, политики и неординарных репортажей со всего мира.","categories":[],"season":null,"episode":null,"image":null,"start":1641852000,"stop":1641855600},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"Erin Burnett OutFront","desc":"Обсуждение самых важных мировых тем в эфире канала CNN.","categories":[],"season":null,"episode":null,"image":null,"start":1641855600,"stop":1641859200},{"channel":"CNNInternationalEurope.us","site":"magticom.ge","lang":"ru","title":"Anderson Cooper 360","desc":"Уникальный взгляд Андерсона Купера на главные события мира.","categories":[],"season":null,"episode":null,"image":null,"start":1641859200,"stop":1641862800},{"channel":"MNetMovies2.za","site":"dstv.com","lang":"en","title":"Fatman","desc":null,"categories":[],"season":9,"episode":257,"image":null,"start":1641761700,"stop":1641767700},{"channel":"MNetMovies2.za","site":"dstv.com","lang":"en","title":"Motherless Brooklyn","desc":null,"categories":[],"season":null,"episode":null,"image":null,"start":1641767700,"stop":1641776100},{"channel":"MNetMovies2.za","site":"dstv.com","lang":"en","title":"The Water Diviner","desc":null,"categories":[],"season":null,"episode":null,"image":null,"start":1641776100,"stop":1641782700},{"channel":"MNetMovies2.za","site":"dstv.com","lang":"en","title":"Outbreak","desc":null,"categories":[],"season":null,"episode":null,"image":null,"start":1641782700,"stop":1641790200},{"channel":"MNetMovies2.za","site":"dstv.com","lang":"en","title":"Paranoia","desc":null,"categories":[],"season":null,"episode":null,"image":null,"start":1641790200,"stop":1641796500},{"channel":"MNetMovies2.za","site":"dstv.com","lang":"en","title":"Beyond The Line","desc":null,"categories":[],"season":null,"episode":null,"image":null,"start":1641796500,"stop":1641801300},{"channel":"MNetMovies2.za","site":"dstv.com","lang":"en","title":"Backdraft","desc":null,"categories":[],"season":null,"episode":null,"image":null,"start":1641801300,"stop":1641809400},{"channel":"MNetMovies2.za","site":"dstv.com","lang":"en","title":"Mafia","desc":null,"categories":[],"season":null,"episode":null,"image":null,"start":1641809400,"stop":1641814500},{"channel":"MNetMovies2.za","site":"dstv.com","lang":"en","title":"12 Strong","desc":null,"categories":[],"season":null,"episode":null,"image":null,"start":1641814500,"stop":1641822300},{"channel":"MNetMovies2.za","site":"dstv.com","lang":"en","title":"Robin Hood","desc":null,"categories":[],"season":null,"episode":null,"image":null,"start":1641822300,"stop":1641829200},{"channel":"MNetMovies2.za","site":"dstv.com","lang":"en","title":"The Scorpion King","desc":null,"categories":[],"season":null,"episode":null,"image":null,"start":1641829200,"stop":1641834780},{"channel":"MNetMovies2.za","site":"dstv.com","lang":"en","title":"The Last Witch Hunter","desc":null,"categories":[],"season":null,"episode":null,"image":null,"start":1641834780,"stop":1641841200},{"channel":"MNetMovies2.za","site":"dstv.com","lang":"en","title":"Force Of Nature","desc":null,"categories":[],"season":null,"episode":null,"image":null,"start":1641841200,"stop":1641847200},{"channel":"MNetMovies2.za","site":"dstv.com","lang":"en","title":"Bad Boys For Life","desc":null,"categories":[],"season":null,"episode":null,"image":null,"start":1641847200,"stop":1641850800}]
\ No newline at end of file
diff --git a/tests/__data__/expected/guides/us/magticom.ge.epg.xml b/tests/__data__/expected/guides/us/magticom.ge.epg.xml
index 5f444459..e7395bfb 100644
--- a/tests/__data__/expected/guides/us/magticom.ge.epg.xml
+++ b/tests/__data__/expected/guides/us/magticom.ge.epg.xml
@@ -1,35 +1,35 @@
-
-CNN Inthttps://magticom.ge
-CNN Newsroom SundayСвежая мировая информационная сводка от CNN. О политике, экономике, общественной жизни, культуре, спорте.
-Fareed Zakaria GPSИнтервью с главными игроками мировой политики.
-African Voices Changemakers. 114-я серия114-я серия. Африка сегодня - люди, новости, события.
-Marketplace Africa. 549-я серия549-я серия. Информационная передача об экономических событиях африканского региона. Анализируются проблемы, даются экономические прогнозы.
-Marketplace Africa. 548-я серия548-я серия. Информационная передача об экономических событиях африканского региона. Анализируются проблемы, даются экономические прогнозы.
-TBDИнформационно-познавательный проект CNN.
-Inside Africa. 586-я серия586-я серия. Своеобразное "путешествие" по Африке - почувствуйте все разнообразие культур различных стран и регионов континента.
-CNN Newsroom with Michael HolmesОбзор самых важных и актуальных новостей и событий из жизни страны и мира.
-World SportВсе о главных спортивных событиях мира. Обзоры самых важных спортивных событий, аналитика, мнения экспертов.
-CNN Newsroom with Michael HolmesОбзор самых важных и актуальных новостей и событий из жизни страны и мира.
-CNN Newsroom with Robyn CurnowОбзор самых важных и актуальных новостей и событий из жизни страны и мира.
-World SportВсе о главных спортивных событиях мира. Обзоры самых важных спортивных событий, аналитика, мнения экспертов.
-CNN Newsroom with Rosemary ChurchСвежая мировая информационная сводка от CNN. О политике, экономике, общественной жизни, культуре, спорте.
-Early StartНовости дня с Кристиной Романс и Дейвом Бриггсом.
-New DayСвежий обзор событий в стране и мире.
-World SportВсе о главных спортивных событиях мира. Обзоры самых важных спортивных событий, аналитика, мнения экспертов.
-First Move with Julia ChatterleyНесколько больших историй, связанных с открытием рынков в США.
-Connect the WorldАктуальная мировая информация с разных континентов.
-World SportВсе о главных спортивных событиях мира. Обзоры самых важных спортивных событий, аналитика, мнения экспертов.
-Connect the WorldАктуальная мировая информация с разных континентов.
-One World with Zain AsherОсвещаются важные новости с каждого континента, от политики и текущих дел до социальных вопросов и многого другого.
-Marketplace Africa. 549-я серия549-я серия. Информационная передача об экономических событиях африканского региона. Анализируются проблемы, даются экономические прогнозы.
-AmanpourСводка новостей от знаменитой ведущей канала CNN.
-Hala Gorani TonightИспользуя свой 25-летний журналистский опыт, Хала Горани будет освещать ключевые события в картине дня посредством диалога с гостями и экспертами-аналитиками.
-Quest Means BusinessРичард Квест возглавляет группу экспертов и корреспондентов, чтобы предоставить актуальные факты, цифры и анализ из делового мира.
-Connecting Africa. 114-я серия114-я серия. Проект, рассказывающий о людях и компаниях, которые совершают революцию в африканском бизнесе, и о тех, кто объединяет континент, выступая за свободную торговлю в Африке.
-The Lead with Jake TapperОперативная сводка новостей страны и мира.
-The Global Brief with Bianca NobiloGlobal Brief с Бьянкой Нобило проницательно исследует меняющийся мир для меняющейся аудитории, обеспечивая непревзойденную глубину и качество для занятых зрителей в быстро меняющемся мире.
-World SportВсе о главных спортивных событиях мира. Обзоры самых важных спортивных событий, аналитика, мнения экспертов.
-The Situation Room with Wolf BlitzerКомандный центр новостей, политики и неординарных репортажей со всего мира.
-Erin Burnett OutFrontОбсуждение самых важных мировых тем в эфире канала CNN.
-Anderson Cooper 360Уникальный взгляд Андерсона Купера на главные события мира.
+
+CNN Inthttps://magticom.ge
+CNN Newsroom SundayСвежая мировая информационная сводка от CNN. О политике, экономике, общественной жизни, культуре, спорте.
+Fareed Zakaria GPSИнтервью с главными игроками мировой политики.
+African Voices Changemakers. 114-я серия114-я серия. Африка сегодня - люди, новости, события.
+Marketplace Africa. 549-я серия549-я серия. Информационная передача об экономических событиях африканского региона. Анализируются проблемы, даются экономические прогнозы.
+Marketplace Africa. 548-я серия548-я серия. Информационная передача об экономических событиях африканского региона. Анализируются проблемы, даются экономические прогнозы.
+TBDИнформационно-познавательный проект CNN.
+Inside Africa. 586-я серия586-я серия. Своеобразное "путешествие" по Африке - почувствуйте все разнообразие культур различных стран и регионов континента.
+CNN Newsroom with Michael HolmesОбзор самых важных и актуальных новостей и событий из жизни страны и мира.
+World SportВсе о главных спортивных событиях мира. Обзоры самых важных спортивных событий, аналитика, мнения экспертов.
+CNN Newsroom with Michael HolmesОбзор самых важных и актуальных новостей и событий из жизни страны и мира.
+CNN Newsroom with Robyn CurnowОбзор самых важных и актуальных новостей и событий из жизни страны и мира.
+World SportВсе о главных спортивных событиях мира. Обзоры самых важных спортивных событий, аналитика, мнения экспертов.
+CNN Newsroom with Rosemary ChurchСвежая мировая информационная сводка от CNN. О политике, экономике, общественной жизни, культуре, спорте.
+Early StartНовости дня с Кристиной Романс и Дейвом Бриггсом.
+New DayСвежий обзор событий в стране и мире.
+World SportВсе о главных спортивных событиях мира. Обзоры самых важных спортивных событий, аналитика, мнения экспертов.
+First Move with Julia ChatterleyНесколько больших историй, связанных с открытием рынков в США.
+Connect the WorldАктуальная мировая информация с разных континентов.
+World SportВсе о главных спортивных событиях мира. Обзоры самых важных спортивных событий, аналитика, мнения экспертов.
+Connect the WorldАктуальная мировая информация с разных континентов.
+One World with Zain AsherОсвещаются важные новости с каждого континента, от политики и текущих дел до социальных вопросов и многого другого.
+Marketplace Africa. 549-я серия549-я серия. Информационная передача об экономических событиях африканского региона. Анализируются проблемы, даются экономические прогнозы.
+AmanpourСводка новостей от знаменитой ведущей канала CNN.
+Hala Gorani TonightИспользуя свой 25-летний журналистский опыт, Хала Горани будет освещать ключевые события в картине дня посредством диалога с гостями и экспертами-аналитиками.
+Quest Means BusinessРичард Квест возглавляет группу экспертов и корреспондентов, чтобы предоставить актуальные факты, цифры и анализ из делового мира.
+Connecting Africa. 114-я серия114-я серия. Проект, рассказывающий о людях и компаниях, которые совершают революцию в африканском бизнесе, и о тех, кто объединяет континент, выступая за свободную торговлю в Африке.
+The Lead with Jake TapperОперативная сводка новостей страны и мира.
+The Global Brief with Bianca NobiloGlobal Brief с Бьянкой Нобило проницательно исследует меняющийся мир для меняющейся аудитории, обеспечивая непревзойденную глубину и качество для занятых зрителей в быстро меняющемся мире.
+World SportВсе о главных спортивных событиях мира. Обзоры самых важных спортивных событий, аналитика, мнения экспертов.
+The Situation Room with Wolf BlitzerКомандный центр новостей, политики и неординарных репортажей со всего мира.
+Erin Burnett OutFrontОбсуждение самых важных мировых тем в эфире канала CNN.
+Anderson Cooper 360Уникальный взгляд Андерсона Купера на главные события мира.
\ No newline at end of file
diff --git a/tests/__data__/expected/guides/za/dstv.com.epg.xml b/tests/__data__/expected/guides/za/dstv.com.epg.xml
index f44eb473..51ff6017 100644
--- a/tests/__data__/expected/guides/za/dstv.com.epg.xml
+++ b/tests/__data__/expected/guides/za/dstv.com.epg.xml
@@ -1,17 +1,17 @@
-
-M-Net Movies 2https://dstv.com
-Fatman
-Motherless Brooklyn
-The Water Diviner
-Outbreak
-Paranoia
-Beyond The Line
-Backdraft
-Mafia
-12 Strong
-Robin Hood
-The Scorpion King
-The Last Witch Hunter
-Force Of Nature
-Bad Boys For Life
+
+M-Net Movies 2https://dstv.com
+Fatman8.256.0/1S09E257
+Motherless Brooklyn
+The Water Diviner
+Outbreak
+Paranoia
+Beyond The Line
+Backdraft
+Mafia
+12 Strong
+Robin Hood
+The Scorpion King
+The Last Witch Hunter
+Force Of Nature
+Bad Boys For Life
\ No newline at end of file
diff --git a/tests/__data__/expected/logs/update-guides.log b/tests/__data__/expected/logs/update-guides.log
new file mode 100644
index 00000000..62c845cc
--- /dev/null
+++ b/tests/__data__/expected/logs/update-guides.log
@@ -0,0 +1,2 @@
+{"gid":"us","site":"magticom.ge","count":1,"status":1}
+{"gid":"za","site":"dstv.com","count":1,"status":1}
diff --git a/tests/__data__/expected/readme.md b/tests/__data__/expected/readme.md
index fc7c5398..9e1615ca 100644
--- a/tests/__data__/expected/readme.md
+++ b/tests/__data__/expected/readme.md
@@ -77,7 +77,7 @@ https://iptv-org.github.io/epg/api/channels.json
]
```
-### List of programs
+
## Contribution
diff --git a/tests/__data__/input/readme.json b/tests/__data__/input/_readme.json
similarity index 100%
rename from tests/__data__/input/readme.json
rename to tests/__data__/input/_readme.json
diff --git a/tests/__data__/input/database/programs.db b/tests/__data__/input/database/programs.db
index 3fe21d35..632e46b8 100644
--- a/tests/__data__/input/database/programs.db
+++ b/tests/__data__/input/database/programs.db
@@ -1,46 +1,46 @@
-{"title":"World Sport","description":"Все о главных спортивных событиях мира. Обзоры самых важных спортивных событий, аналитика, мнения экспертов.","category":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641825900,"stop":1641826800,"site":"magticom.ge","gid":"us","country":"US","_id":"12AJc0GeEJE9p4c3"}
-{"title":"Connecting Africa. 114-я серия","description":"114-я серия. Проект, рассказывающий о людях и компаниях, которые совершают революцию в африканском бизнесе, и о тех, кто объединяет континент, выступая за свободную торговлю в Африке.","category":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641843900,"stop":1641844800,"site":"magticom.ge","gid":"us","country":"US","_id":"1dxcT34nyxzOlxBL"}
-{"title":"Connect the World","description":"Актуальная мировая информация с разных континентов.","category":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641826800,"stop":1641830400,"site":"magticom.ge","gid":"us","country":"US","_id":"2uJe4w2lgvjNOXo0"}
-{"title":"The Lead with Jake Tapper","description":"Оперативная сводка новостей страны и мира.","category":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641844800,"stop":1641848400,"site":"magticom.ge","gid":"us","country":"US","_id":"6As6GzEVhb3OWM0M"}
-{"title":"World Sport","description":"Все о главных спортивных событиях мира. Обзоры самых важных спортивных событий, аналитика, мнения экспертов.","category":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641817800,"stop":1641819600,"site":"magticom.ge","gid":"us","country":"US","_id":"6DXKlITWehX1Jx4F"}
-{"title":"CNN Newsroom with Michael Holmes","description":"Обзор самых важных и актуальных новостей и событий из жизни страны и мира.","category":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641790800,"stop":1641794400,"site":"magticom.ge","gid":"us","country":"US","_id":"AadPdMZ3s72y8NMk"}
-{"title":"The Situation Room with Wolf Blitzer","description":"Командный центр новостей, политики и неординарных репортажей со всего мира.","category":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641852000,"stop":1641855600,"site":"magticom.ge","gid":"us","country":"US","_id":"Az3ABKy3HnE7sJZk"}
-{"title":"One World with Zain Asher","description":"Освещаются важные новости с каждого континента, от политики и текущих дел до социальных вопросов и многого другого.","category":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641830400,"stop":1641833100,"site":"magticom.ge","gid":"us","country":"US","_id":"DMurxgt5OD0E9OIE"}
-{"title":"TBD","description":"Информационно-познавательный проект CNN.","category":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641783600,"stop":1641785400,"site":"magticom.ge","gid":"us","country":"US","_id":"HQJqM2kIa77llWbC"}
-{"title":"Marketplace Africa. 548-я серия","description":"548-я серия. Информационная передача об экономических событиях африканского региона. Анализируются проблемы, даются экономические прогнозы.","category":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641782700,"stop":1641783600,"site":"magticom.ge","gid":"us","country":"US","_id":"Jn3khh5n9Brkxq4U"}
-{"title":"CNN Newsroom with Michael Holmes","description":"Обзор самых важных и актуальных новостей и событий из жизни страны и мира.","category":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641787200,"stop":1641789900,"site":"magticom.ge","gid":"us","country":"US","_id":"KcrIoQTXtUdw74sO"}
-{"title":"The Global Brief with Bianca Nobilo","description":"Global Brief с Бьянкой Нобило проницательно исследует меняющийся мир для меняющейся аудитории, обеспечивая непревзойденную глубину и качество для занятых зрителей в быстро меняющемся мире.","category":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641848400,"stop":1641850200,"site":"magticom.ge","gid":"us","country":"US","_id":"LGD7WmQogDRxZn01"}
-{"title":"CNN Newsroom with Rosemary Church","description":"Свежая мировая информационная сводка от CNN. О политике, экономике, общественной жизни, культуре, спорте.","category":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641798000,"stop":1641805200,"site":"magticom.ge","gid":"us","country":"US","_id":"LyCBivUTdZFW9X53"}
-{"title":"Marketplace Africa. 549-я серия","description":"549-я серия. Информационная передача об экономических событиях африканского региона. Анализируются проблемы, даются экономические прогнозы.","category":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641833100,"stop":1641834000,"site":"magticom.ge","gid":"us","country":"US","_id":"PbrZinuZKgBHqDVj"}
-{"title":"African Voices Changemakers. 114-я серия","description":"114-я серия. Африка сегодня - люди, новости, события.","category":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641780000,"stop":1641781800,"site":"magticom.ge","gid":"us","country":"US","_id":"SvrCK31v78V5y7EA"}
-{"title":"Anderson Cooper 360","description":"Уникальный взгляд Андерсона Купера на главные события мира.","category":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641859200,"stop":1641862800,"site":"magticom.ge","gid":"us","country":"US","_id":"TFGrOFJGkaOs9pU7"}
-{"title":"World Sport","description":"Все о главных спортивных событиях мира. Обзоры самых важных спортивных событий, аналитика, мнения экспертов.","category":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641850200,"stop":1641852000,"site":"magticom.ge","gid":"us","country":"US","_id":"UynlLeT41MsjFElg"}
-{"title":"New Day","description":"Свежий обзор событий в стране и мире.","category":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641808800,"stop":1641817800,"site":"magticom.ge","gid":"us","country":"US","_id":"UyvhQ4wRNq5d5XRd"}
-{"title":"Amanpour","description":"Сводка новостей от знаменитой ведущей канала CNN.","category":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641834000,"stop":1641837600,"site":"magticom.ge","gid":"us","country":"US","_id":"WbsOCkmPH5gjmo4M"}
-{"title":"Early Start","description":"Новости дня с Кристиной Романс и Дейвом Бриггсом.","category":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641805200,"stop":1641808800,"site":"magticom.ge","gid":"us","country":"US","_id":"YB96P2mMO4TA0pID"}
-{"title":"World Sport","description":"Все о главных спортивных событиях мира. Обзоры самых важных спортивных событий, аналитика, мнения экспертов.","category":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641789900,"stop":1641790800,"site":"magticom.ge","gid":"us","country":"US","_id":"aDdCAlgqLG2yxM1m"}
-{"title":"CNN Newsroom Sunday","description":"Свежая мировая информационная сводка от CNN. О политике, экономике, общественной жизни, культуре, спорте.","category":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641772800,"stop":1641776400,"site":"magticom.ge","gid":"us","country":"US","_id":"aYCk87dUOAkCJE9x"}
-{"title":"Fareed Zakaria GPS","description":"Интервью с главными игроками мировой политики.","category":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641776400,"stop":1641780000,"site":"magticom.ge","gid":"us","country":"US","_id":"c1nCoWVetBZ3mn5q"}
-{"title":"Inside Africa. 586-я серия","description":"586-я серия. Своеобразное \"путешествие\" по Африке - почувствуйте все разнообразие культур различных стран и регионов континента.","category":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641785400,"stop":1641787200,"site":"magticom.ge","gid":"us","country":"US","_id":"goaDr7BsGGm3LCfz"}
-{"title":"CNN Newsroom with Robyn Curnow","description":"Обзор самых важных и актуальных новостей и событий из жизни страны и мира.","category":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641794400,"stop":1641797100,"site":"magticom.ge","gid":"us","country":"US","_id":"nixd3gRF1S1K0ZOs"}
-{"title":"Marketplace Africa. 549-я серия","description":"549-я серия. Информационная передача об экономических событиях африканского региона. Анализируются проблемы, даются экономические прогнозы.","category":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641781800,"stop":1641782700,"site":"magticom.ge","gid":"us","country":"US","_id":"r1b8EvZc0tYs88ga"}
-{"title":"Erin Burnett OutFront","description":"Обсуждение самых важных мировых тем в эфире канала CNN.","category":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641855600,"stop":1641859200,"site":"magticom.ge","gid":"us","country":"US","_id":"sIQtUtowtATc7dLj"}
-{"title":"Connect the World","description":"Актуальная мировая информация с разных континентов.","category":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641823200,"stop":1641825900,"site":"magticom.ge","gid":"us","country":"US","_id":"tXBIZ2BZBIkhnoTZ"}
-{"title":"Quest Means Business","description":"Ричард Квест возглавляет группу экспертов и корреспондентов, чтобы предоставить актуальные факты, цифры и анализ из делового мира.","category":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641841200,"stop":1641843900,"site":"magticom.ge","gid":"us","country":"US","_id":"xlE5epkjzdfUQpXO"}
-{"title":"First Move with Julia Chatterley","description":"Несколько больших историй, связанных с открытием рынков в США.","category":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641819600,"stop":1641823200,"site":"magticom.ge","gid":"us","country":"US","_id":"yEVXucyUomVmktMF"}
-{"title":"Hala Gorani Tonight","description":"Используя свой 25-летний журналистский опыт, Хала Горани будет освещать ключевые события в картине дня посредством диалога с гостями и экспертами-аналитиками.","category":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641837600,"stop":1641841200,"site":"magticom.ge","gid":"us","country":"US","_id":"yPgmYrWwfxHW3WUA"}
-{"title":"World Sport","description":"Все о главных спортивных событиях мира. Обзоры самых важных спортивных событий, аналитика, мнения экспертов.","category":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641797100,"stop":1641798000,"site":"magticom.ge","gid":"us","country":"US","_id":"zX70wOz5drExRTJX"}
-{"title":"Robin Hood","description":null,"category":null,"icon":null,"channel":"MNetMovies2.za","lang":"en","start":1641822300,"stop":1641829200,"site":"dstv.com","gid":"za","country":"ZA","_id":"1AoKArQw6MxP6pVU"}
-{"title":"The Water Diviner","description":null,"category":null,"icon":null,"channel":"MNetMovies2.za","lang":"en","start":1641776100,"stop":1641782700,"site":"dstv.com","gid":"za","country":"ZA","_id":"6v7w0SB4IlnfEEu3"}
-{"title":"Bad Boys For Life","description":null,"category":null,"icon":null,"channel":"MNetMovies2.za","lang":"en","start":1641847200,"stop":1641850800,"site":"dstv.com","gid":"za","country":"ZA","_id":"83VRYvggmyfCzkOm"}
-{"title":"12 Strong","description":null,"category":null,"icon":null,"channel":"MNetMovies2.za","lang":"en","start":1641814500,"stop":1641822300,"site":"dstv.com","gid":"za","country":"ZA","_id":"DbjwscjIuVDY8TPx"}
-{"title":"Backdraft","description":null,"category":null,"icon":null,"channel":"MNetMovies2.za","lang":"en","start":1641801300,"stop":1641809400,"site":"dstv.com","gid":"za","country":"ZA","_id":"IwuwkjCKqWvio7ba"}
-{"title":"Force Of Nature","description":null,"category":null,"icon":null,"channel":"MNetMovies2.za","lang":"en","start":1641841200,"stop":1641847200,"site":"dstv.com","gid":"za","country":"ZA","_id":"LP56HczEup0ed3Xx"}
-{"title":"Mafia","description":null,"category":null,"icon":null,"channel":"MNetMovies2.za","lang":"en","start":1641809400,"stop":1641814500,"site":"dstv.com","gid":"za","country":"ZA","_id":"MM9DPxERAgGGak39"}
-{"title":"The Last Witch Hunter","description":null,"category":null,"icon":null,"channel":"MNetMovies2.za","lang":"en","start":1641834780,"stop":1641841200,"site":"dstv.com","gid":"za","country":"ZA","_id":"MciJOpN3YCodj6Na"}
-{"title":"Beyond The Line","description":null,"category":null,"icon":null,"channel":"MNetMovies2.za","lang":"en","start":1641796500,"stop":1641801300,"site":"dstv.com","gid":"za","country":"ZA","_id":"ZKA2s6QrM0xRrfGz"}
-{"title":"Paranoia","description":null,"category":null,"icon":null,"channel":"MNetMovies2.za","lang":"en","start":1641790200,"stop":1641796500,"site":"dstv.com","gid":"za","country":"ZA","_id":"ZpdIZeSRhPycDX9D"}
-{"title":"The Scorpion King","description":null,"category":null,"icon":null,"channel":"MNetMovies2.za","lang":"en","start":1641829200,"stop":1641834780,"site":"dstv.com","gid":"za","country":"ZA","_id":"doO4Lh1pAt6L6wHa"}
-{"title":"Fatman","description":null,"category":null,"icon":null,"channel":"MNetMovies2.za","lang":"en","start":1641761700,"stop":1641767700,"site":"dstv.com","gid":"za","country":"ZA","_id":"fHahGuzHnU7xVEJX"}
-{"title":"Outbreak","description":null,"category":null,"icon":null,"channel":"MNetMovies2.za","lang":"en","start":1641782700,"stop":1641790200,"site":"dstv.com","gid":"za","country":"ZA","_id":"mkvcMP4FMwL2a5ax"}
-{"title":"Motherless Brooklyn","description":null,"category":null,"icon":null,"channel":"MNetMovies2.za","lang":"en","start":1641767700,"stop":1641776100,"site":"dstv.com","gid":"za","country":"ZA","_id":"nxTIAJsBwyXztRun"}
+{"title":"World Sport","description":"Все о главных спортивных событиях мира. Обзоры самых важных спортивных событий, аналитика, мнения экспертов.","category":null,"season":null,"episode":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641825900,"stop":1641826800,"site":"magticom.ge","gid":"us","country":"US","_id":"12AJc0GeEJE9p4c3"}
+{"title":"Connecting Africa. 114-я серия","description":"114-я серия. Проект, рассказывающий о людях и компаниях, которые совершают революцию в африканском бизнесе, и о тех, кто объединяет континент, выступая за свободную торговлю в Африке.","category":null,"season":null,"episode":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641843900,"stop":1641844800,"site":"magticom.ge","gid":"us","country":"US","_id":"1dxcT34nyxzOlxBL"}
+{"title":"Connect the World","description":"Актуальная мировая информация с разных континентов.","category":null,"season":null,"episode":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641826800,"stop":1641830400,"site":"magticom.ge","gid":"us","country":"US","_id":"2uJe4w2lgvjNOXo0"}
+{"title":"The Lead with Jake Tapper","description":"Оперативная сводка новостей страны и мира.","category":null,"season":null,"episode":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641844800,"stop":1641848400,"site":"magticom.ge","gid":"us","country":"US","_id":"6As6GzEVhb3OWM0M"}
+{"title":"World Sport","description":"Все о главных спортивных событиях мира. Обзоры самых важных спортивных событий, аналитика, мнения экспертов.","category":null,"season":null,"episode":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641817800,"stop":1641819600,"site":"magticom.ge","gid":"us","country":"US","_id":"6DXKlITWehX1Jx4F"}
+{"title":"CNN Newsroom with Michael Holmes","description":"Обзор самых важных и актуальных новостей и событий из жизни страны и мира.","category":null,"season":null,"episode":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641790800,"stop":1641794400,"site":"magticom.ge","gid":"us","country":"US","_id":"AadPdMZ3s72y8NMk"}
+{"title":"The Situation Room with Wolf Blitzer","description":"Командный центр новостей, политики и неординарных репортажей со всего мира.","category":null,"season":null,"episode":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641852000,"stop":1641855600,"site":"magticom.ge","gid":"us","country":"US","_id":"Az3ABKy3HnE7sJZk"}
+{"title":"One World with Zain Asher","description":"Освещаются важные новости с каждого континента, от политики и текущих дел до социальных вопросов и многого другого.","category":null,"season":null,"episode":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641830400,"stop":1641833100,"site":"magticom.ge","gid":"us","country":"US","_id":"DMurxgt5OD0E9OIE"}
+{"title":"TBD","description":"Информационно-познавательный проект CNN.","category":null,"season":null,"episode":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641783600,"stop":1641785400,"site":"magticom.ge","gid":"us","country":"US","_id":"HQJqM2kIa77llWbC"}
+{"title":"Marketplace Africa. 548-я серия","description":"548-я серия. Информационная передача об экономических событиях африканского региона. Анализируются проблемы, даются экономические прогнозы.","category":null,"season":null,"episode":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641782700,"stop":1641783600,"site":"magticom.ge","gid":"us","country":"US","_id":"Jn3khh5n9Brkxq4U"}
+{"title":"CNN Newsroom with Michael Holmes","description":"Обзор самых важных и актуальных новостей и событий из жизни страны и мира.","category":null,"season":null,"episode":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641787200,"stop":1641789900,"site":"magticom.ge","gid":"us","country":"US","_id":"KcrIoQTXtUdw74sO"}
+{"title":"The Global Brief with Bianca Nobilo","description":"Global Brief с Бьянкой Нобило проницательно исследует меняющийся мир для меняющейся аудитории, обеспечивая непревзойденную глубину и качество для занятых зрителей в быстро меняющемся мире.","category":null,"season":null,"episode":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641848400,"stop":1641850200,"site":"magticom.ge","gid":"us","country":"US","_id":"LGD7WmQogDRxZn01"}
+{"title":"CNN Newsroom with Rosemary Church","description":"Свежая мировая информационная сводка от CNN. О политике, экономике, общественной жизни, культуре, спорте.","category":null,"season":null,"episode":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641798000,"stop":1641805200,"site":"magticom.ge","gid":"us","country":"US","_id":"LyCBivUTdZFW9X53"}
+{"title":"Marketplace Africa. 549-я серия","description":"549-я серия. Информационная передача об экономических событиях африканского региона. Анализируются проблемы, даются экономические прогнозы.","category":null,"season":null,"episode":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641833100,"stop":1641834000,"site":"magticom.ge","gid":"us","country":"US","_id":"PbrZinuZKgBHqDVj"}
+{"title":"African Voices Changemakers. 114-я серия","description":"114-я серия. Африка сегодня - люди, новости, события.","category":null,"season":null,"episode":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641780000,"stop":1641781800,"site":"magticom.ge","gid":"us","country":"US","_id":"SvrCK31v78V5y7EA"}
+{"title":"Anderson Cooper 360","description":"Уникальный взгляд Андерсона Купера на главные события мира.","category":null,"season":null,"episode":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641859200,"stop":1641862800,"site":"magticom.ge","gid":"us","country":"US","_id":"TFGrOFJGkaOs9pU7"}
+{"title":"World Sport","description":"Все о главных спортивных событиях мира. Обзоры самых важных спортивных событий, аналитика, мнения экспертов.","category":null,"season":null,"episode":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641850200,"stop":1641852000,"site":"magticom.ge","gid":"us","country":"US","_id":"UynlLeT41MsjFElg"}
+{"title":"New Day","description":"Свежий обзор событий в стране и мире.","category":null,"season":null,"episode":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641808800,"stop":1641817800,"site":"magticom.ge","gid":"us","country":"US","_id":"UyvhQ4wRNq5d5XRd"}
+{"title":"Amanpour","description":"Сводка новостей от знаменитой ведущей канала CNN.","category":null,"season":null,"episode":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641834000,"stop":1641837600,"site":"magticom.ge","gid":"us","country":"US","_id":"WbsOCkmPH5gjmo4M"}
+{"title":"Early Start","description":"Новости дня с Кристиной Романс и Дейвом Бриггсом.","category":null,"season":null,"episode":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641805200,"stop":1641808800,"site":"magticom.ge","gid":"us","country":"US","_id":"YB96P2mMO4TA0pID"}
+{"title":"World Sport","description":"Все о главных спортивных событиях мира. Обзоры самых важных спортивных событий, аналитика, мнения экспертов.","category":null,"season":null,"episode":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641789900,"stop":1641790800,"site":"magticom.ge","gid":"us","country":"US","_id":"aDdCAlgqLG2yxM1m"}
+{"title":"CNN Newsroom Sunday","description":"Свежая мировая информационная сводка от CNN. О политике, экономике, общественной жизни, культуре, спорте.","category":null,"season":null,"episode":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641772800,"stop":1641776400,"site":"magticom.ge","gid":"us","country":"US","_id":"aYCk87dUOAkCJE9x"}
+{"title":"Fareed Zakaria GPS","description":"Интервью с главными игроками мировой политики.","category":null,"season":null,"episode":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641776400,"stop":1641780000,"site":"magticom.ge","gid":"us","country":"US","_id":"c1nCoWVetBZ3mn5q"}
+{"title":"Inside Africa. 586-я серия","description":"586-я серия. Своеобразное \"путешествие\" по Африке - почувствуйте все разнообразие культур различных стран и регионов континента.","category":null,"season":null,"episode":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641785400,"stop":1641787200,"site":"magticom.ge","gid":"us","country":"US","_id":"goaDr7BsGGm3LCfz"}
+{"title":"CNN Newsroom with Robyn Curnow","description":"Обзор самых важных и актуальных новостей и событий из жизни страны и мира.","category":null,"season":null,"episode":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641794400,"stop":1641797100,"site":"magticom.ge","gid":"us","country":"US","_id":"nixd3gRF1S1K0ZOs"}
+{"title":"Marketplace Africa. 549-я серия","description":"549-я серия. Информационная передача об экономических событиях африканского региона. Анализируются проблемы, даются экономические прогнозы.","category":null,"season":null,"episode":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641781800,"stop":1641782700,"site":"magticom.ge","gid":"us","country":"US","_id":"r1b8EvZc0tYs88ga"}
+{"title":"Erin Burnett OutFront","description":"Обсуждение самых важных мировых тем в эфире канала CNN.","category":null,"season":null,"episode":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641855600,"stop":1641859200,"site":"magticom.ge","gid":"us","country":"US","_id":"sIQtUtowtATc7dLj"}
+{"title":"Connect the World","description":"Актуальная мировая информация с разных континентов.","category":null,"season":null,"episode":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641823200,"stop":1641825900,"site":"magticom.ge","gid":"us","country":"US","_id":"tXBIZ2BZBIkhnoTZ"}
+{"title":"Quest Means Business","description":"Ричард Квест возглавляет группу экспертов и корреспондентов, чтобы предоставить актуальные факты, цифры и анализ из делового мира.","category":null,"season":null,"episode":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641841200,"stop":1641843900,"site":"magticom.ge","gid":"us","country":"US","_id":"xlE5epkjzdfUQpXO"}
+{"title":"First Move with Julia Chatterley","description":"Несколько больших историй, связанных с открытием рынков в США.","category":null,"season":null,"episode":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641819600,"stop":1641823200,"site":"magticom.ge","gid":"us","country":"US","_id":"yEVXucyUomVmktMF"}
+{"title":"Hala Gorani Tonight","description":"Используя свой 25-летний журналистский опыт, Хала Горани будет освещать ключевые события в картине дня посредством диалога с гостями и экспертами-аналитиками.","category":null,"season":null,"episode":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641837600,"stop":1641841200,"site":"magticom.ge","gid":"us","country":"US","_id":"yPgmYrWwfxHW3WUA"}
+{"title":"World Sport","description":"Все о главных спортивных событиях мира. Обзоры самых важных спортивных событий, аналитика, мнения экспертов.","category":null,"season":null,"episode":null,"icon":null,"channel":"CNNInternationalEurope.us","lang":"ru","start":1641797100,"stop":1641798000,"site":"magticom.ge","gid":"us","country":"US","_id":"zX70wOz5drExRTJX"}
+{"title":"Robin Hood","description":null,"category":null,"season":null,"episode":null,"icon":null,"channel":"MNetMovies2.za","lang":"en","start":1641822300,"stop":1641829200,"site":"dstv.com","gid":"za","country":"ZA","_id":"1AoKArQw6MxP6pVU"}
+{"title":"The Water Diviner","description":null,"category":null,"season":null,"episode":null,"icon":null,"channel":"MNetMovies2.za","lang":"en","start":1641776100,"stop":1641782700,"site":"dstv.com","gid":"za","country":"ZA","_id":"6v7w0SB4IlnfEEu3"}
+{"title":"Bad Boys For Life","description":null,"category":null,"season":null,"episode":null,"icon":null,"channel":"MNetMovies2.za","lang":"en","start":1641847200,"stop":1641850800,"site":"dstv.com","gid":"za","country":"ZA","_id":"83VRYvggmyfCzkOm"}
+{"title":"12 Strong","description":null,"category":null,"season":null,"episode":null,"icon":null,"channel":"MNetMovies2.za","lang":"en","start":1641814500,"stop":1641822300,"site":"dstv.com","gid":"za","country":"ZA","_id":"DbjwscjIuVDY8TPx"}
+{"title":"Backdraft","description":null,"category":null,"season":null,"episode":null,"icon":null,"channel":"MNetMovies2.za","lang":"en","start":1641801300,"stop":1641809400,"site":"dstv.com","gid":"za","country":"ZA","_id":"IwuwkjCKqWvio7ba"}
+{"title":"Force Of Nature","description":null,"category":null,"season":null,"episode":null,"icon":null,"channel":"MNetMovies2.za","lang":"en","start":1641841200,"stop":1641847200,"site":"dstv.com","gid":"za","country":"ZA","_id":"LP56HczEup0ed3Xx"}
+{"title":"Mafia","description":null,"category":null,"season":null,"episode":null,"icon":null,"channel":"MNetMovies2.za","lang":"en","start":1641809400,"stop":1641814500,"site":"dstv.com","gid":"za","country":"ZA","_id":"MM9DPxERAgGGak39"}
+{"title":"The Last Witch Hunter","description":null,"category":null,"season":null,"episode":null,"icon":null,"channel":"MNetMovies2.za","lang":"en","start":1641834780,"stop":1641841200,"site":"dstv.com","gid":"za","country":"ZA","_id":"MciJOpN3YCodj6Na"}
+{"title":"Beyond The Line","description":null,"category":null,"season":null,"episode":null,"icon":null,"channel":"MNetMovies2.za","lang":"en","start":1641796500,"stop":1641801300,"site":"dstv.com","gid":"za","country":"ZA","_id":"ZKA2s6QrM0xRrfGz"}
+{"title":"Paranoia","description":null,"category":null,"season":null,"episode":null,"icon":null,"channel":"MNetMovies2.za","lang":"en","start":1641790200,"stop":1641796500,"site":"dstv.com","gid":"za","country":"ZA","_id":"ZpdIZeSRhPycDX9D"}
+{"title":"The Scorpion King","description":null,"category":null,"season":null,"episode":null,"icon":null,"channel":"MNetMovies2.za","lang":"en","start":1641829200,"stop":1641834780,"site":"dstv.com","gid":"za","country":"ZA","_id":"doO4Lh1pAt6L6wHa"}
+{"title":"Fatman","description":null,"category":null,"season":9,"episode":257,"icon":null,"channel":"MNetMovies2.za","lang":"en","start":1641761700,"stop":1641767700,"site":"dstv.com","gid":"za","country":"ZA","_id":"fHahGuzHnU7xVEJX"}
+{"title":"Outbreak","description":null,"category":null,"season":null,"episode":null,"icon":null,"channel":"MNetMovies2.za","lang":"en","start":1641782700,"stop":1641790200,"site":"dstv.com","gid":"za","country":"ZA","_id":"mkvcMP4FMwL2a5ax"}
+{"title":"Motherless Brooklyn","description":null,"category":null,"season":null,"episode":null,"icon":null,"channel":"MNetMovies2.za","lang":"en","start":1641767700,"stop":1641776100,"site":"dstv.com","gid":"za","country":"ZA","_id":"nxTIAJsBwyXztRun"}
diff --git a/tests/__data__/input/logs/load-cluster/cluster_1.log b/tests/__data__/input/logs/load-cluster/cluster_1.log
new file mode 100644
index 00000000..c182f4a2
--- /dev/null
+++ b/tests/__data__/input/logs/load-cluster/cluster_1.log
@@ -0,0 +1 @@
+{"_id":"0Wefq0oMR3feCcuY","site":"andorradifusio.ad","gid":"ad","country":"AD","logo":"https://example.com/logo.png","programs":[{"title":"InfoNeu ","description":null,"category":null,"icon":null,"channel":"AndorraTV.ad","lang":"ca","start":1641711600,"stop":1641715200},{"title":"Club Piolet","description":null,"category":null,"icon":null,"channel":"AndorraTV.ad","lang":"ca","season":null,"episode":null,"start":1641715200,"stop":1641718800},{"title":"InfoNeu ","description":null,"category":null,"icon":null,"channel":"AndorraTV.ad","lang":"ca","start":1641718800,"stop":1641729600},{"title":"Andorra Actualitat (RNA)","description":null,"category":null,"icon":null,"channel":"AndorraTV.ad","lang":"ca","season":null,"episode":null,"start":1641729600,"stop":1641730800},{"title":"El Trànsit","description":null,"category":null,"icon":null,"channel":"AndorraTV.ad","lang":"ca","season":null,"episode":null,"start":1641730800,"stop":1641732000},{"title":"El Trànsit","description":null,"category":null,"icon":null,"channel":"AndorraTV.ad","lang":"ca","season":null,"episode":null,"start":1641732000,"stop":1641732300},{"title":"Informatiu migdia","description":null,"category":null,"icon":null,"channel":"AndorraTV.ad","lang":"ca","season":null,"episode":null,"start":1641732300,"stop":1641733800},{"title":"El Trànsit","description":null,"category":null,"icon":null,"channel":"AndorraTV.ad","lang":"ca","season":null,"episode":null,"start":1641733800,"stop":1641736200},{"title":"La Terre vue du Sport","description":null,"category":null,"icon":null,"channel":"AndorraTV.ad","lang":"ca","season":null,"episode":null,"start":1641736200,"stop":1641736800},{"title":"Informatiu migdia","description":null,"category":null,"icon":null,"channel":"AndorraTV.ad","lang":"ca","season":null,"episode":null,"start":1641736800,"stop":1641738300},{"title":"Club Piolet","description":null,"category":null,"icon":null,"channel":"AndorraTV.ad","lang":"ca","season":null,"episode":null,"start":1641738300,"stop":1641741900},{"title":"Informatiu migdia","description":null,"category":null,"icon":null,"channel":"AndorraTV.ad","lang":"ca","season":null,"episode":null,"start":1641741900,"stop":1641743400},{"title":"El Trànsit","description":null,"category":null,"icon":null,"channel":"AndorraTV.ad","lang":"ca","season":null,"episode":null,"start":1641743400,"stop":1641750900},{"title":"La rotonda","description":null,"category":null,"icon":null,"channel":"AndorraTV.ad","lang":"ca","season":null,"episode":null,"start":1641750900,"stop":1641753600},{"title":"Club Piolet","description":null,"category":null,"icon":null,"channel":"AndorraTV.ad","lang":"ca","season":null,"episode":null,"start":1641753600,"stop":1641757200},{"title":"El Trànsit","description":null,"category":null,"icon":null,"channel":"AndorraTV.ad","lang":"ca","season":null,"episode":null,"start":1641757200,"stop":1641757500},{"title":"Informatiu vespre","description":null,"category":null,"icon":null,"channel":"AndorraTV.ad","lang":"ca","season":null,"episode":null,"start":1641757500,"stop":1641759000},{"title":"Recull setmanal","description":null,"category":null,"icon":null,"channel":"AndorraTV.ad","lang":"ca","season":null,"episode":null,"start":1641759000,"stop":1641761100},{"title":"Memòries d'arxiu: 10 anys d'ATV","description":null,"category":null,"icon":null,"channel":"AndorraTV.ad","lang":"ca","season":null,"episode":null,"start":1641761100,"stop":1641763800},{"title":"El cafè dels matins","description":null,"category":null,"icon":null,"channel":"AndorraTV.ad","lang":"ca","season":null,"episode":null,"start":1641763800,"stop":1641766800},{"title":"La Terre vue du Sport","description":null,"category":null,"icon":null,"channel":"AndorraTV.ad","lang":"ca","season":null,"episode":null,"start":1641766800,"stop":1641767400},{"title":"Informatiu vespre","description":null,"category":null,"icon":null,"channel":"AndorraTV.ad","lang":"ca","season":null,"episode":null,"start":1641767400,"stop":1641772800},{"title":"Àrea Andorra Difusió","description":null,"category":null,"icon":null,"channel":"AndorraTV.ad","lang":"ca","season":null,"episode":null,"start":1641772800,"stop":1641776400}]}
diff --git a/tests/__data__/input/logs/update-guides.log b/tests/__data__/input/logs/update-guides.log
new file mode 100644
index 00000000..1afbb852
--- /dev/null
+++ b/tests/__data__/input/logs/update-guides.log
@@ -0,0 +1,7 @@
+{"gid":"us","site":"magticom.ge","count":74,"status":1}
+{"gid":"za","site":"dstv.com","count":1,"status":1}
+{"gid":"us-pr","site":"tvtv.us","count":14,"status":1}
+{"gid":"us-pr","site":"gatotv.com","count":7,"status":1}
+{"gid":"us-pr","site":"directv.com","count":1,"status":1}
+{"gid":"ca-nl","site":"tvtv.us","count":1,"status":1}
+{"gid":"us","site":"tvtv.us","count":372,"status":1}
diff --git a/tests/commands/save-results.test.js b/tests/commands/save-results.test.js
index bf639022..41407dd7 100644
--- a/tests/commands/save-results.test.js
+++ b/tests/commands/save-results.test.js
@@ -27,9 +27,11 @@ it('can save results to database', () => {
'channel',
'country',
'description',
+ 'episode',
'gid',
'icon',
'lang',
+ 'season',
'site',
'start',
'stop',
diff --git a/tests/commands/update-readme.test.js b/tests/commands/update-readme.test.js
index f81c4392..fbd903ee 100644
--- a/tests/commands/update-readme.test.js
+++ b/tests/commands/update-readme.test.js
@@ -7,7 +7,7 @@ beforeEach(() => {
fs.mkdirSync('tests/__data__/output')
execSync(
- 'LOGS_DIR=tests/__data__/input/logs node scripts/commands/update-readme.js --config=tests/__data__/input/readme.json',
+ 'LOGS_DIR=tests/__data__/input/logs node scripts/commands/update-readme.js --config=tests/__data__/input/_readme.json',
{ encoding: 'utf8' }
)
})