From 58d98b14731adda0dde635ccd7a6e546b19d9ee2 Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Wed, 19 Jan 2022 01:57:08 +0300 Subject: [PATCH 01/17] Update update-readme.js --- tests/__data__/input/{readme.json => _readme.json} | 0 tests/commands/update-readme.test.js | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename tests/__data__/input/{readme.json => _readme.json} (100%) 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/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' } ) }) From 9da0081142e7d2dcf2a0404f7ad95be09afe5c64 Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Wed, 19 Jan 2022 01:57:37 +0300 Subject: [PATCH 02/17] Update .gitignore --- .gitignore | 8 ++++---- tests/__data__/expected/logs/update-guides.log | 2 ++ tests/__data__/input/logs/load-cluster/cluster_1.log | 1 + tests/__data__/input/logs/update-guides.log | 7 +++++++ 4 files changed, 14 insertions(+), 4 deletions(-) create mode 100644 tests/__data__/expected/logs/update-guides.log create mode 100644 tests/__data__/input/logs/load-cluster/cluster_1.log create mode 100644 tests/__data__/input/logs/update-guides.log 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/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__/input/logs/load-cluster/cluster_1.log b/tests/__data__/input/logs/load-cluster/cluster_1.log new file mode 100644 index 00000000..cf154bee --- /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","season":null,"episode":null,"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","season":null,"episode":null,"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} From 649808a490b66a353f8cc76be2e97a18e0f3a9cb Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Wed, 19 Jan 2022 01:57:43 +0300 Subject: [PATCH 03/17] Update save-results.test.js --- tests/commands/save-results.test.js | 2 ++ 1 file changed, 2 insertions(+) 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', From 76b15335b1988e605b0aa43e99c015ebd2b6b334 Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Wed, 19 Jan 2022 02:01:21 +0300 Subject: [PATCH 04/17] Update update-api.js --- scripts/commands/update-api.js | 2 ++ tests/__data__/expected/api/programs.json | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) 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/tests/__data__/expected/api/programs.json b/tests/__data__/expected/api/programs.json index f1463b42..f34fa7f4 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":null,"episode":null,"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 From 13c133b3297b68bd3a7e69dfef815165d0594018 Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Wed, 19 Jan 2022 02:28:46 +0300 Subject: [PATCH 05/17] Update update-guides.js --- scripts/commands/update-guides.js | 2 + scripts/core/xml.js | 23 +++++ tests/__data__/expected/api/programs.json | 2 +- .../expected/guides/za/dstv.com.epg.xml | 2 +- tests/__data__/input/database/programs.db | 92 +++++++++---------- 5 files changed, 73 insertions(+), 48 deletions(-) diff --git a/scripts/commands/update-guides.js b/scripts/commands/update-guides.js index 343bba1f..debebad7 100644 --- a/scripts/commands/update-guides.js +++ b/scripts/commands/update-guides.js @@ -77,6 +77,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/xml.js b/scripts/core/xml.js index a9fc6d2c..6e9eca22 100644 --- a/scripts/core/xml.js +++ b/scripts/core/xml.js @@ -1,3 +1,4 @@ +const _ = require('lodash') const dayjs = require('dayjs') const utc = require('dayjs/plugin/utc') dayjs.extend(utc) @@ -37,6 +38,17 @@ xml.create = function ({ channels, programs }) { output += `${escapeString(category.value)}` }) + if (program.season && program.episode) { + const episodeNum = { + xmltv_ns: createXMLTVNS(program.season, program.episode), + onscreen: createOnScreen(program.season, program.episode) + } + + for (const [system, value] of Object.entries(episodeNum)) { + output += `${value}` + } + } + if (program.image) output += `` output += '\n' @@ -77,3 +89,14 @@ function escapeString(string, defaultValue = '') { .replace(/ +/g, ' ') .trim() } + +function createXMLTVNS(s, e) { + return `${s - 1}.${e - 1}.0/1` +} + +function createOnScreen(s, e) { + s = _.padStart(s, 2, '0') + e = _.padStart(e, 2, '0') + + return `S${s}E${e}` +} diff --git a/tests/__data__/expected/api/programs.json b/tests/__data__/expected/api/programs.json index f34fa7f4..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":[],"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":null,"episode":null,"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 +[{"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/za/dstv.com.epg.xml b/tests/__data__/expected/guides/za/dstv.com.epg.xml index f44eb473..7193a402 100644 --- a/tests/__data__/expected/guides/za/dstv.com.epg.xml +++ b/tests/__data__/expected/guides/za/dstv.com.epg.xml @@ -1,6 +1,6 @@ M-Net Movies 2https://dstv.com -Fatman +Fatman8.256.0/1S09E257 Motherless Brooklyn The Water Diviner Outbreak 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"} From fd71f35c0e2ed33b34587769c5e6dc84118552c4 Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Wed, 19 Jan 2022 02:41:56 +0300 Subject: [PATCH 06/17] Update save-results.js --- scripts/commands/save-results.js | 20 ++++++++++++++----- .../input/logs/load-cluster/cluster_1.log | 2 +- 2 files changed, 16 insertions(+), 6 deletions(-) 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/tests/__data__/input/logs/load-cluster/cluster_1.log b/tests/__data__/input/logs/load-cluster/cluster_1.log index cf154bee..c182f4a2 100644 --- a/tests/__data__/input/logs/load-cluster/cluster_1.log +++ b/tests/__data__/input/logs/load-cluster/cluster_1.log @@ -1 +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","season":null,"episode":null,"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","season":null,"episode":null,"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}]} +{"_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}]} From a05f713b3ba6b7986a3dd95f854835f36ca01124 Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Wed, 19 Jan 2022 16:27:16 +0300 Subject: [PATCH 07/17] Upgrade epg-grabber package --- package-lock.json | 28 +++++++++------------------- package.json | 2 +- 2 files changed, 10 insertions(+), 20 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6918c5b2..b3308472 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.0", "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.0", + "resolved": "https://registry.npmjs.org/epg-grabber/-/epg-grabber-0.17.0.tgz", + "integrity": "sha512-jLDdHkENvCm9zgS0kGr1u+pH8cyReLREgNPImw44ZEZQg+OxZZMV3M1VVIewWE6uclUfVlbhvx1wBzp3hjHZ/w==", "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.0", + "resolved": "https://registry.npmjs.org/epg-grabber/-/epg-grabber-0.17.0.tgz", + "integrity": "sha512-jLDdHkENvCm9zgS0kGr1u+pH8cyReLREgNPImw44ZEZQg+OxZZMV3M1VVIewWE6uclUfVlbhvx1wBzp3hjHZ/w==", "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..440634de 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.0", "epg-parser": "^0.1.6", "form-data": "^4.0.0", "glob": "^7.2.0", From 0133cb28b02a1c780c2d11d4a6b232e5ccdcb99b Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Wed, 19 Jan 2022 16:28:49 +0300 Subject: [PATCH 08/17] Delete xml.js --- scripts/core/index.js | 1 - scripts/core/xml.js | 102 ------------------------------------------ 2 files changed, 103 deletions(-) delete mode 100644 scripts/core/xml.js 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 6e9eca22..00000000 --- a/scripts/core/xml.js +++ /dev/null @@ -1,102 +0,0 @@ -const _ = require('lodash') -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.season && program.episode) { - const episodeNum = { - xmltv_ns: createXMLTVNS(program.season, program.episode), - onscreen: createOnScreen(program.season, program.episode) - } - - for (const [system, value] of Object.entries(episodeNum)) { - output += `${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() -} - -function createXMLTVNS(s, e) { - return `${s - 1}.${e - 1}.0/1` -} - -function createOnScreen(s, e) { - s = _.padStart(s, 2, '0') - e = _.padStart(e, 2, '0') - - return `S${s}E${e}` -} From 5eeb23340f0cf536d292e3dd766cf4564d4cb0aa Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Wed, 19 Jan 2022 16:29:11 +0300 Subject: [PATCH 09/17] Replace new line character --- .../expected/guides/us/magticom.ge.epg.xml | 68 +++++++++---------- .../expected/guides/za/dstv.com.epg.xml | 32 ++++----- 2 files changed, 50 insertions(+), 50 deletions(-) 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 7193a402..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 -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 + +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 From fcd61e9d2978d6385f0c54cb3974d3a6f6885b95 Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Wed, 19 Jan 2022 16:29:17 +0300 Subject: [PATCH 10/17] Update update-guides.js --- scripts/commands/update-guides.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/scripts/commands/update-guides.js b/scripts/commands/update-guides.js index debebad7..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, From 74c14655bb342528fa0807a630a4d15ab9dd49b6 Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Wed, 19 Jan 2022 17:05:07 +0300 Subject: [PATCH 11/17] Upgrade epg-grabber package --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index b3308472..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.17.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.17.0", - "resolved": "https://registry.npmjs.org/epg-grabber/-/epg-grabber-0.17.0.tgz", - "integrity": "sha512-jLDdHkENvCm9zgS0kGr1u+pH8cyReLREgNPImw44ZEZQg+OxZZMV3M1VVIewWE6uclUfVlbhvx1wBzp3hjHZ/w==", + "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", @@ -6426,9 +6426,9 @@ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" }, "epg-grabber": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/epg-grabber/-/epg-grabber-0.17.0.tgz", - "integrity": "sha512-jLDdHkENvCm9zgS0kGr1u+pH8cyReLREgNPImw44ZEZQg+OxZZMV3M1VVIewWE6uclUfVlbhvx1wBzp3hjHZ/w==", + "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", diff --git a/package.json b/package.json index 440634de..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.17.0", + "epg-grabber": "^0.17.1", "epg-parser": "^0.1.6", "form-data": "^4.0.0", "glob": "^7.2.0", From effca2db5ba193841a308b6564f8f23897f77121 Mon Sep 17 00:00:00 2001 From: RevGear <95308545+RevGear@users.noreply.github.com> Date: Wed, 19 Jan 2022 18:03:58 +0000 Subject: [PATCH 12/17] Update sky.com_uk.channels.xml Correct site id for Now 80s (was using Now 90s), and added extra channels --- sites/sky.com/sky.com_uk.channels.xml | 78 +++++++++++++++++++++------ 1 file changed, 62 insertions(+), 16 deletions(-) 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 From 904f475212404ce0922653df19d84862e417cfd9 Mon Sep 17 00:00:00 2001 From: "iptv-bot[bot]" <84861620+iptv-bot[bot]@users.noreply.github.com> Date: Wed, 19 Jan 2022 21:18:27 +0300 Subject: [PATCH 13/17] [Bot] Update README.md (#415) Co-authored-by: iptv-bot[bot] <84861620+iptv-bot[bot]@users.noreply.github.com> --- README.md | 181 +++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 130 insertions(+), 51 deletions(-) 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 🇧🇸 Bahamas186https://iptv-org.github.io/epg/guides/bs/rev.bs.epg.xml 🇧🇾 Belarus19https://iptv-org.github.io/epg/guides/by/tv.mail.ru.epg.xml 🇧🇪 Belgium7https://iptv-org.github.io/epg/guides/be/vtm.be.epg.xml - 🇧🇯 Benin239https://iptv-org.github.io/epg/guides/bj/canalplus-afrique.com.epg.xml + 🇧🇯 Benin240https://iptv-org.github.io/epg/guides/bj/canalplus-afrique.com.epg.xml 129https://iptv-org.github.io/epg/guides/bj/dstv.com.epg.xml 🇧🇴 Bolivia79https://iptv-org.github.io/epg/guides/bo/comteco.com.bo.epg.xml 36https://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 4https://iptv-org.github.io/epg/guides/ba/tvarenasport.com.epg.xml 🇧🇼 Botswana129https://iptv-org.github.io/epg/guides/bw/dstv.com.epg.xml 🇧🇷 Brazil248https://iptv-org.github.io/epg/guides/br/mi.tv.epg.xml - 🇧🇫 Burkina Faso239https://iptv-org.github.io/epg/guides/bf/canalplus-afrique.com.epg.xml + 🇧🇫 Burkina Faso240https://iptv-org.github.io/epg/guides/bf/canalplus-afrique.com.epg.xml 127https://iptv-org.github.io/epg/guides/bf/dstv.com.epg.xml - 🇧🇮 Burundi239https://iptv-org.github.io/epg/guides/bi/canalplus-afrique.com.epg.xml + 🇧🇮 Burundi240https://iptv-org.github.io/epg/guides/bi/canalplus-afrique.com.epg.xml 127https://iptv-org.github.io/epg/guides/bi/dstv.com.epg.xml - 🇨🇲 Cameroon239https://iptv-org.github.io/epg/guides/cm/canalplus-afrique.com.epg.xml + 🇨🇲 Cameroon240https://iptv-org.github.io/epg/guides/cm/canalplus-afrique.com.epg.xml 127https://iptv-org.github.io/epg/guides/cm/dstv.com.epg.xml - 🇨🇻 Cape Verde239https://iptv-org.github.io/epg/guides/cv/canalplus-afrique.com.epg.xml + 🇨🇦 Canada38https://iptv-org.github.io/epg/guides/ca/tvtv.us.epg.xml + 🇨🇻 Cape Verde240https://iptv-org.github.io/epg/guides/cv/canalplus-afrique.com.epg.xml 124https://iptv-org.github.io/epg/guides/cv/dstv.com.epg.xml - 🇨🇫 Central African Republic239https://iptv-org.github.io/epg/guides/cf/canalplus-afrique.com.epg.xml + 🇨🇫 Central African Republic240https://iptv-org.github.io/epg/guides/cf/canalplus-afrique.com.epg.xml 124https://iptv-org.github.io/epg/guides/cf/dstv.com.epg.xml - 🇹🇩 Chad239https://iptv-org.github.io/epg/guides/td/canalplus-afrique.com.epg.xml + 🇹🇩 Chad240https://iptv-org.github.io/epg/guides/td/canalplus-afrique.com.epg.xml 122https://iptv-org.github.io/epg/guides/td/dstv.com.epg.xml 🇨🇱 Chile79https://iptv-org.github.io/epg/guides/cl/mi.tv.epg.xml 50https://iptv-org.github.io/epg/guides/cl/gatotv.com.epg.xml - 🇨🇳 China106https://iptv-org.github.io/epg/guides/cn/tv.cctv.com.epg.xml + 🇨🇳 China107https://iptv-org.github.io/epg/guides/cn/tv.cctv.com.epg.xml 🇨🇴 Colombia103https://iptv-org.github.io/epg/guides/co/siba.com.co.epg.xml 54https://iptv-org.github.io/epg/guides/co/gatotv.com.epg.xml 41https://iptv-org.github.io/epg/guides/co/mi.tv.epg.xml 🇰🇲 Comoros117https://iptv-org.github.io/epg/guides/km/canalplus-reunion.com.epg.xml - 🇨🇬 Congo - Brazzaville239https://iptv-org.github.io/epg/guides/cg/canalplus-afrique.com.epg.xml + 🇨🇬 Congo - Brazzaville240https://iptv-org.github.io/epg/guides/cg/canalplus-afrique.com.epg.xml 124https://iptv-org.github.io/epg/guides/cg/dstv.com.epg.xml - 🇨🇩 Congo - Kinshasa239https://iptv-org.github.io/epg/guides/cd/canalplus-afrique.com.epg.xml + 🇨🇩 Congo - Kinshasa240https://iptv-org.github.io/epg/guides/cd/canalplus-afrique.com.epg.xml 125https://iptv-org.github.io/epg/guides/cd/dstv.com.epg.xml 🇨🇷 Costa Rica48https://iptv-org.github.io/epg/guides/cr/gatotv.com.epg.xml - 🇭🇷 Croatia164https://iptv-org.github.io/epg/guides/hr/maxtv.hrvatskitelekom.hr.epg.xml + 🇭🇷 Croatia165https://iptv-org.github.io/epg/guides/hr/maxtv.hrvatskitelekom.hr.epg.xml 10https://iptv-org.github.io/epg/guides/hr/tvarenasport.hr.epg.xml 🇨🇺 Cuba10https://iptv-org.github.io/epg/guides/cu/tvcubana.icrt.cu.epg.xml 🇨🇾 Cyprus29https://iptv-org.github.io/epg/guides/cy/novacyprus.com.epg.xml - 🇨🇿 Czechia505https://iptv-org.github.io/epg/guides/cz/m.tv.sms.cz.epg.xml - 🇨🇮 Côte d’Ivoire239https://iptv-org.github.io/epg/guides/ci/canalplus-afrique.com.epg.xml + 🇨🇿 Czechia502https://iptv-org.github.io/epg/guides/cz/m.tv.sms.cz.epg.xml + 🇨🇮 Côte d’Ivoire240https://iptv-org.github.io/epg/guides/ci/canalplus-afrique.com.epg.xml 127https://iptv-org.github.io/epg/guides/ci/dstv.com.epg.xml 🇩🇰 Denmark58https://iptv-org.github.io/epg/guides/dk/allente.se.epg.xml - 🇩🇯 Djibouti239https://iptv-org.github.io/epg/guides/dj/canalplus-afrique.com.epg.xml + 🇩🇯 Djibouti240https://iptv-org.github.io/epg/guides/dj/canalplus-afrique.com.epg.xml 120https://iptv-org.github.io/epg/guides/dj/dstv.com.epg.xml 🇩🇴 Dominican Republic59https://iptv-org.github.io/epg/guides/do/gatotv.com.epg.xml 🇪🇨 Ecuador43https://iptv-org.github.io/epg/guides/ec/gatotv.com.epg.xml 🇸🇻 El Salvador51https://iptv-org.github.io/epg/guides/sv/gatotv.com.epg.xml 12https://iptv-org.github.io/epg/guides/sv/mi.tv.epg.xml - 🇬🇶 Equatorial Guinea239https://iptv-org.github.io/epg/guides/gq/canalplus-afrique.com.epg.xml + 🇬🇶 Equatorial Guinea240https://iptv-org.github.io/epg/guides/gq/canalplus-afrique.com.epg.xml 124https://iptv-org.github.io/epg/guides/gq/dstv.com.epg.xml 🇪🇷 Eritrea122https://iptv-org.github.io/epg/guides/er/dstv.com.epg.xml 🇸🇿 Eswatini126https://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 190https://iptv-org.github.io/epg/guides/fr/chaines-tv.orange.fr.epg.xml 🇬🇫 French Guiana126https://iptv-org.github.io/epg/guides/gf/canalplus-caraibes.com.epg.xml 🇵🇫 French Polynesia2https://iptv-org.github.io/epg/guides/pf/programme-tv.vini.pf.epg.xml - 🇬🇦 Gabon239https://iptv-org.github.io/epg/guides/ga/canalplus-afrique.com.epg.xml + 🇬🇦 Gabon240https://iptv-org.github.io/epg/guides/ga/canalplus-afrique.com.epg.xml 124https://iptv-org.github.io/epg/guides/ga/dstv.com.epg.xml - 🇬🇲 Gambia239https://iptv-org.github.io/epg/guides/gm/canalplus-afrique.com.epg.xml + 🇬🇲 Gambia240https://iptv-org.github.io/epg/guides/gm/canalplus-afrique.com.epg.xml 123https://iptv-org.github.io/epg/guides/gm/dstv.com.epg.xml 🇬🇪 Georgia117https://iptv-org.github.io/epg/guides/ge/magticom.ge.epg.xml 🇩🇪 Germany122https://iptv-org.github.io/epg/guides/de/hd-plus.de.epg.xml - 🇬🇭 Ghana239https://iptv-org.github.io/epg/guides/gh/canalplus-afrique.com.epg.xml + 🇬🇭 Ghana240https://iptv-org.github.io/epg/guides/gh/canalplus-afrique.com.epg.xml 138https://iptv-org.github.io/epg/guides/gh/dstv.com.epg.xml 🇬🇷 Greece86https://iptv-org.github.io/epg/guides/gr/cosmote.gr.epg.xml 🇬🇱 Greenland1https://iptv-org.github.io/epg/guides/gl/knr.gl.epg.xml 🇬🇵 Guadeloupe126https://iptv-org.github.io/epg/guides/gp/canalplus-caraibes.com.epg.xml + 🇬🇺 Guam1https://iptv-org.github.io/epg/guides/gu/pbsguam.org.epg.xml 🇬🇹 Guatemala52https://iptv-org.github.io/epg/guides/gt/gatotv.com.epg.xml 18https://iptv-org.github.io/epg/guides/gt/mi.tv.epg.xml - 🇬🇳 Guinea239https://iptv-org.github.io/epg/guides/gn/canalplus-afrique.com.epg.xml + 🇬🇳 Guinea240https://iptv-org.github.io/epg/guides/gn/canalplus-afrique.com.epg.xml 124https://iptv-org.github.io/epg/guides/gn/dstv.com.epg.xml - 🇬🇼 Guinea-Bissau239https://iptv-org.github.io/epg/guides/gw/canalplus-afrique.com.epg.xml + 🇬🇼 Guinea-Bissau240https://iptv-org.github.io/epg/guides/gw/canalplus-afrique.com.epg.xml 124https://iptv-org.github.io/epg/guides/gw/dstv.com.epg.xml 🇭🇹 Haiti110https://iptv-org.github.io/epg/guides/ht/canalplus-haiti.com.epg.xml 🇭🇳 Honduras49https://iptv-org.github.io/epg/guides/hn/gatotv.com.epg.xml 22https://iptv-org.github.io/epg/guides/hn/mi.tv.epg.xml 🇭🇺 Hungary91https://iptv-org.github.io/epg/guides/hu/tvmusor.hu.epg.xml 🇮🇸 Iceland2https://iptv-org.github.io/epg/guides/is/ruv.is.epg.xml - 🇮🇳 India364https://iptv-org.github.io/epg/guides/in/dishtv.in.epg.xml + 🇮🇳 India361https://iptv-org.github.io/epg/guides/in/dishtv.in.epg.xml 🇮🇩 Indonesia89https://iptv-org.github.io/epg/guides/id/mncvision.id.epg.xml 26https://iptv-org.github.io/epg/guides/id/vidio.com.epg.xml - 🇮🇷 Iran27https://iptv-org.github.io/epg/guides/ir/tva.tv.epg.xml + 🇮🇷 Iran29https://iptv-org.github.io/epg/guides/ir/tva.tv.epg.xml 🇮🇪 Ireland3https://iptv-org.github.io/epg/guides/ie/ontvtonight.com.epg.xml 🇮🇹 Italy133https://iptv-org.github.io/epg/guides/it/guidatv.sky.it.epg.xml 13https://iptv-org.github.io/epg/guides/it/mediaset.it.epg.xml 🇯🇵 Japan128https://iptv-org.github.io/epg/guides/jp/tvguide.myjcom.jp.epg.xml 🇰🇿 Kazakhstan7https://iptv-org.github.io/epg/guides/kz/tv.yandex.ru.epg.xml 🇰🇪 Kenya151https://iptv-org.github.io/epg/guides/ke/dstv.com.epg.xml - 🇽🇰 Kosovo23https://iptv-org.github.io/epg/guides/xk/tvim.tv.epg.xml - 🇱🇻 Latvia19https://iptv-org.github.io/epg/guides/lv/tv.lv.epg.xml + 🇽🇰 Kosovo24https://iptv-org.github.io/epg/guides/xk/tvim.tv.epg.xml + 🇱🇻 Latvia20https://iptv-org.github.io/epg/guides/lv/tv.lv.epg.xml 🇱🇸 Lesotho144https://iptv-org.github.io/epg/guides/ls/dstv.com.epg.xml 🇱🇷 Liberia124https://iptv-org.github.io/epg/guides/lr/dstv.com.epg.xml 🇲🇬 Madagascar124https://iptv-org.github.io/epg/guides/mg/dstv.com.epg.xml 🇲🇼 Malawi130https://iptv-org.github.io/epg/guides/mw/dstv.com.epg.xml 🇲🇾 Malaysia121https://iptv-org.github.io/epg/guides/my/astro.com.my.epg.xml - 🇲🇱 Mali239https://iptv-org.github.io/epg/guides/ml/canalplus-afrique.com.epg.xml + 🇲🇱 Mali240https://iptv-org.github.io/epg/guides/ml/canalplus-afrique.com.epg.xml 124https://iptv-org.github.io/epg/guides/ml/dstv.com.epg.xml 🇲🇶 Martinique126https://iptv-org.github.io/epg/guides/mq/canalplus-caraibes.com.epg.xml - 🇲🇷 Mauritania239https://iptv-org.github.io/epg/guides/mr/canalplus-afrique.com.epg.xml + 🇲🇷 Mauritania240https://iptv-org.github.io/epg/guides/mr/canalplus-afrique.com.epg.xml 124https://iptv-org.github.io/epg/guides/mr/dstv.com.epg.xml 🇲🇺 Mauritius125https://iptv-org.github.io/epg/guides/mu/dstv.com.epg.xml 🇾🇹 Mayotte117https://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 🇳🇦 Namibia128https://iptv-org.github.io/epg/guides/na/dstv.com.epg.xml 🇳🇱 Netherlands227https://iptv-org.github.io/epg/guides/nl/delta.nl.epg.xml 🇳🇮 Nicaragua49https://iptv-org.github.io/epg/guides/ni/gatotv.com.epg.xml - 🇳🇪 Niger239https://iptv-org.github.io/epg/guides/ne/canalplus-afrique.com.epg.xml + 🇳🇪 Niger240https://iptv-org.github.io/epg/guides/ne/canalplus-afrique.com.epg.xml 127https://iptv-org.github.io/epg/guides/ne/dstv.com.epg.xml 🇳🇬 Nigeria145https://iptv-org.github.io/epg/guides/ng/dstv.com.epg.xml 🇲🇰 North Macedonia52https://iptv-org.github.io/epg/guides/mk/maxtvgo.mk.epg.xml 4https://iptv-org.github.io/epg/guides/mk/tvarenasport.com.epg.xml - 🇳🇴 Norway69https://iptv-org.github.io/epg/guides/no/allente.se.epg.xml + 🇳🇴 Norway69https://iptv-org.github.io/epg/guides/no/allente.se.epg.xml + 1https://iptv-org.github.io/epg/guides/no/frikanalen.no.epg.xml 🇵🇦 Panama51https://iptv-org.github.io/epg/guides/pa/gatotv.com.epg.xml 🇵🇾 Paraguay37https://iptv-org.github.io/epg/guides/py/gatotv.com.epg.xml 🇵🇪 Peru47https://iptv-org.github.io/epg/guides/pe/gatotv.com.epg.xml 21https://iptv-org.github.io/epg/guides/pe/mi.tv.epg.xml - 🇵🇱 Poland329https://iptv-org.github.io/epg/guides/pl/programtv.onet.pl.epg.xml + 🇵🇱 Poland334https://iptv-org.github.io/epg/guides/pl/programtv.onet.pl.epg.xml 🇵🇹 Portugal109https://iptv-org.github.io/epg/guides/pt/meo.pt.epg.xml 🇶🇦 Qatar22https://iptv-org.github.io/epg/guides/qa/beinsports.com.epg.xml - 🇷🇴 Romania223https://iptv-org.github.io/epg/guides/ro/programetv.ro.epg.xml - 🇷🇺 Russia231https://iptv-org.github.io/epg/guides/ru/tv.yandex.ru.epg.xml - 🇷🇼 Rwanda239https://iptv-org.github.io/epg/guides/rw/canalplus-afrique.com.epg.xml + 🇷🇴 Romania224https://iptv-org.github.io/epg/guides/ro/programetv.ro.epg.xml + 🇷🇺 Russia270https://iptv-org.github.io/epg/guides/ru/tv.yandex.ru.epg.xml + 🇷🇼 Rwanda240https://iptv-org.github.io/epg/guides/rw/canalplus-afrique.com.epg.xml 131https://iptv-org.github.io/epg/guides/rw/dstv.com.epg.xml 🇷🇪 Réunion117https://iptv-org.github.io/epg/guides/re/canalplus-reunion.com.epg.xml - 🇸🇳 Senegal239https://iptv-org.github.io/epg/guides/sn/canalplus-afrique.com.epg.xml + 🇸🇳 Senegal240https://iptv-org.github.io/epg/guides/sn/canalplus-afrique.com.epg.xml 124https://iptv-org.github.io/epg/guides/sn/dstv.com.epg.xml 🇷🇸 Serbia350https://iptv-org.github.io/epg/guides/rs/mts.rs.epg.xml - 12https://iptv-org.github.io/epg/guides/rs/tvarenasport.com.epg.xml + 11https://iptv-org.github.io/epg/guides/rs/tvarenasport.com.epg.xml 🇸🇨 Seychelles123https://iptv-org.github.io/epg/guides/sc/dstv.com.epg.xml - 🇸🇱 Sierra Leone239https://iptv-org.github.io/epg/guides/sl/canalplus-afrique.com.epg.xml + 🇸🇱 Sierra Leone240https://iptv-org.github.io/epg/guides/sl/canalplus-afrique.com.epg.xml 124https://iptv-org.github.io/epg/guides/sl/dstv.com.epg.xml 🇸🇮 Slovenia277https://iptv-org.github.io/epg/guides/si/tv2go.t-2.net.epg.xml 🇸🇴 Somalia119https://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. Martin126https://iptv-org.github.io/epg/guides/mf/canalplus-caraibes.com.epg.xml 🇸🇩 Sudan117https://iptv-org.github.io/epg/guides/sd/dstv.com.epg.xml 🇸🇪 Sweden86https://iptv-org.github.io/epg/guides/se/allente.se.epg.xml + 🇨🇭 Switzerland573https://iptv-org.github.io/epg/guides/ch/tv.blue.ch.epg.xml 🇸🇹 São Tomé & Príncipe127https://iptv-org.github.io/epg/guides/st/dstv.com.epg.xml 🇹🇿 Tanzania29https://iptv-org.github.io/epg/guides/tz/dstv.com.epg.xml - 🇹🇭 Thailand64https://iptv-org.github.io/epg/guides/th/tv.trueid.net.epg.xml - 🇹🇬 Togo239https://iptv-org.github.io/epg/guides/tg/canalplus-afrique.com.epg.xml + 🇹🇭 Thailand65https://iptv-org.github.io/epg/guides/th/tv.trueid.net.epg.xml + 🇹🇬 Togo240https://iptv-org.github.io/epg/guides/tg/canalplus-afrique.com.epg.xml 136https://iptv-org.github.io/epg/guides/tg/dstv.com.epg.xml - 🇹🇷 Turkey141https://iptv-org.github.io/epg/guides/tr/tvplus.com.tr.epg.xml + 🇹🇷 Turkey142https://iptv-org.github.io/epg/guides/tr/tvplus.com.tr.epg.xml 118https://iptv-org.github.io/epg/guides/tr/digiturk.com.tr.epg.xml - 101https://iptv-org.github.io/epg/guides/tr/dsmart.com.tr.epg.xml + 102https://iptv-org.github.io/epg/guides/tr/dsmart.com.tr.epg.xml 🇺🇬 Uganda150https://iptv-org.github.io/epg/guides/ug/dstv.com.epg.xml - 🇺🇦 Ukraine113https://iptv-org.github.io/epg/guides/ua/tvgid.ua.epg.xml + 🇺🇦 Ukraine114https://iptv-org.github.io/epg/guides/ua/tvgid.ua.epg.xml 🇬🇧 United Kingdom104https://iptv-org.github.io/epg/guides/uk/sky.com.epg.xml 97https://iptv-org.github.io/epg/guides/uk/ontvtonight.com.epg.xml - 🇺🇸 United States367https://iptv-org.github.io/epg/guides/us/directv.com.epg.xml + 🇺🇸 United States318https://iptv-org.github.io/epg/guides/us/directv.com.epg.xml + 132https://iptv-org.github.io/epg/guides/us/tvtv.us.epg.xml 87https://iptv-org.github.io/epg/guides/us/tvguide.com.epg.xml 15https://iptv-org.github.io/epg/guides/us/gatotv.com.epg.xml 🇺🇾 Uruguay30https://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 StateChannelsEPG - Puerto Rico7https://iptv-org.github.io/epg/guides/us-pr/gatotv.com.epg.xml + Alabama61https://iptv-org.github.io/epg/guides/us-al/tvtv.us.epg.xml + Alaska8https://iptv-org.github.io/epg/guides/us-ak/tvtv.us.epg.xml + Arizona81https://iptv-org.github.io/epg/guides/us-az/tvtv.us.epg.xml + Arkansas29https://iptv-org.github.io/epg/guides/us-ar/tvtv.us.epg.xml + California229https://iptv-org.github.io/epg/guides/us-ca/tvtv.us.epg.xml + Colorado68https://iptv-org.github.io/epg/guides/us-co/tvtv.us.epg.xml + Connecticut16https://iptv-org.github.io/epg/guides/us-ct/tvtv.us.epg.xml + Delaware3https://iptv-org.github.io/epg/guides/us-de/tvtv.us.epg.xml + District Of Columbia10https://iptv-org.github.io/epg/guides/us-dc/tvtv.us.epg.xml + Florida147https://iptv-org.github.io/epg/guides/us-fl/tvtv.us.epg.xml + Georgia59https://iptv-org.github.io/epg/guides/us-ga/tvtv.us.epg.xml + Hawaii10https://iptv-org.github.io/epg/guides/us-hi/tvtv.us.epg.xml + Idaho32https://iptv-org.github.io/epg/guides/us-id/tvtv.us.epg.xml + Illinois56https://iptv-org.github.io/epg/guides/us-il/tvtv.us.epg.xml + Indiana58https://iptv-org.github.io/epg/guides/us-in/tvtv.us.epg.xml + Iowa39https://iptv-org.github.io/epg/guides/us-ia/tvtv.us.epg.xml + Kansas53https://iptv-org.github.io/epg/guides/us-ks/tvtv.us.epg.xml + Kentucky41https://iptv-org.github.io/epg/guides/us-ky/tvtv.us.epg.xml + Louisiana42https://iptv-org.github.io/epg/guides/us-la/tvtv.us.epg.xml + Maine14https://iptv-org.github.io/epg/guides/us-me/tvtv.us.epg.xml + Maryland14https://iptv-org.github.io/epg/guides/us-md/tvtv.us.epg.xml + Massachusetts17https://iptv-org.github.io/epg/guides/us-ma/tvtv.us.epg.xml + Michigan67https://iptv-org.github.io/epg/guides/us-mi/tvtv.us.epg.xml + Minnesota38https://iptv-org.github.io/epg/guides/us-mn/tvtv.us.epg.xml + Mississippi38https://iptv-org.github.io/epg/guides/us-ms/tvtv.us.epg.xml + Missouri79https://iptv-org.github.io/epg/guides/us-mo/tvtv.us.epg.xml + Montana30https://iptv-org.github.io/epg/guides/us-mt/tvtv.us.epg.xml + Nebraska27https://iptv-org.github.io/epg/guides/us-ne/tvtv.us.epg.xml + Nevada48https://iptv-org.github.io/epg/guides/us-nv/tvtv.us.epg.xml + New Hampshire7https://iptv-org.github.io/epg/guides/us-nh/tvtv.us.epg.xml + New Jersey14https://iptv-org.github.io/epg/guides/us-nj/tvtv.us.epg.xml + New Mexico40https://iptv-org.github.io/epg/guides/us-nm/tvtv.us.epg.xml + New York93https://iptv-org.github.io/epg/guides/us-ny/tvtv.us.epg.xml + North Carolina74https://iptv-org.github.io/epg/guides/us-nc/tvtv.us.epg.xml + North Dakota19https://iptv-org.github.io/epg/guides/us-nd/tvtv.us.epg.xml + Ohio95https://iptv-org.github.io/epg/guides/us-oh/tvtv.us.epg.xml + Oklahoma54https://iptv-org.github.io/epg/guides/us-ok/tvtv.us.epg.xml + Oregon36https://iptv-org.github.io/epg/guides/us-or/tvtv.us.epg.xml + Pennsylvania74https://iptv-org.github.io/epg/guides/us-pa/tvtv.us.epg.xml + Puerto Rico7https://iptv-org.github.io/epg/guides/us-pr/gatotv.com.epg.xml 1https://iptv-org.github.io/epg/guides/us-pr/directv.com.epg.xml + 1https://iptv-org.github.io/epg/guides/us-pr/tvtv.us.epg.xml + Rhode Island6https://iptv-org.github.io/epg/guides/us-ri/tvtv.us.epg.xml + South Carolina55https://iptv-org.github.io/epg/guides/us-sc/tvtv.us.epg.xml + South Dakota8https://iptv-org.github.io/epg/guides/us-sd/tvtv.us.epg.xml + Tennessee79https://iptv-org.github.io/epg/guides/us-tn/tvtv.us.epg.xml + Texas205https://iptv-org.github.io/epg/guides/us-tx/tvtv.us.epg.xml + Utah25https://iptv-org.github.io/epg/guides/us-ut/tvtv.us.epg.xml + Vermont1https://iptv-org.github.io/epg/guides/us-vt/tvtv.us.epg.xml + Virginia50https://iptv-org.github.io/epg/guides/us-va/tvtv.us.epg.xml + Washington40https://iptv-org.github.io/epg/guides/us-wa/tvtv.us.epg.xml + West Virginia20https://iptv-org.github.io/epg/guides/us-wv/tvtv.us.epg.xml + Wisconsin56https://iptv-org.github.io/epg/guides/us-wi/tvtv.us.epg.xml + Wyoming6https://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 ProvinceChannelsEPG + British Columbia3https://iptv-org.github.io/epg/guides/ca-bc/tvtv.us.epg.xml + Quebec1https://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 From 97295d0470fde93f4982db1ff0d70f84a448a13d Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Wed, 19 Jan 2022 21:42:54 +0300 Subject: [PATCH 14/17] Update template.md --- .readme/template.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 From c7ed7e6d6424b67b8251a1f0fe9a8feca40f1006 Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Wed, 19 Jan 2022 21:43:02 +0300 Subject: [PATCH 15/17] Update update-api.js --- scripts/commands/update-api.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/scripts/commands/update-api.js b/scripts/commands/update-api.js index e2d29cf6..f8631f87 100644 --- a/scripts/commands/update-api.js +++ b/scripts/commands/update-api.js @@ -6,7 +6,10 @@ const API_DIR = process.env.API_DIR || '.gh-pages/api' async function main() { await generateChannelsJson() - await generateProgramsJson() + + // Reason: File api/programs.json is 419.08 MB; this exceeds GitHub's file size limit of 100.00 MB + // await generateProgramsJson() + logger.info(`Done`) } From 22477fa5901fce00c04391843d8e560bf71842a8 Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Wed, 19 Jan 2022 21:43:05 +0300 Subject: [PATCH 16/17] Update readme.md --- tests/__data__/expected/readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 From 0555f8027570c0aed77b29fc91316ef6bb737124 Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Wed, 19 Jan 2022 21:48:19 +0300 Subject: [PATCH 17/17] Update update-api.test.js --- tests/commands/update-api.test.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/commands/update-api.test.js b/tests/commands/update-api.test.js index 22bcec7b..cc16fce7 100644 --- a/tests/commands/update-api.test.js +++ b/tests/commands/update-api.test.js @@ -32,12 +32,12 @@ it('can generate channels.json', () => { expect(output).toBe(expected) }) -it('can generate programs.json', () => { - const output = content('tests/__data__/output/api/programs.json') - const expected = content('tests/__data__/expected/api/programs.json') +// it('can generate programs.json', () => { +// const output = content('tests/__data__/output/api/programs.json') +// const expected = content('tests/__data__/expected/api/programs.json') - expect(output).toBe(expected) -}) +// expect(output).toBe(expected) +// }) function content(filepath) { const data = fs.readFileSync(path.resolve(filepath), {