Initial Commit

This commit is contained in:
2023-09-10 21:48:48 +02:00
commit 227cca7d31
791 changed files with 165200 additions and 0 deletions

View File

@@ -0,0 +1,189 @@
<?xml version="1.0" encoding="UTF-8"?>
<site site="horizon.tv">
<channels>
<channel lang="sk" xmltv_id="24.sk" site_id="10193">RTVS 24 HD</channel>
<channel lang="en" xmltv_id="360TuneBox.nl" site_id="10200">360 TuneBox HD</channel>
<channel lang="sk" xmltv_id="AMCCzechRepublic.cz" site_id="10024">AMC HD</channel>
<channel lang="sk" xmltv_id="AnimalPlanetCzechRepublic.cz" site_id="10049">Animal Planet HD</channel>
<channel lang="sk" xmltv_id="ATV.hu" site_id="10147">Magyar ATV</channel>
<channel lang="sk" xmltv_id="AutoMotorundSport.de" site_id="10077">Auto Motor Sport</channel>
<channel lang="en" xmltv_id="BabesTV.us" site_id="10187">BabesTV HD</channel>
<channel lang="sk" xmltv_id="BarrandovKrimi.cz" site_id="10033">Barrandov Krimi HD</channel>
<channel lang="sk" xmltv_id="Bober.ru" site_id="10178">Bober</channel>
<channel lang="en" xmltv_id="BrazzersTVEurope.us" site_id="10188">Brazzers TV HD</channel>
<channel lang="sk" xmltv_id="CartoonNetworkCzechRepublic.cz" site_id="10091">Cartoon Network HD</channel>
<channel lang="sk" xmltv_id="Cinemax2CzechRepublic.cz" site_id="10124">Cinemax 2 HD</channel>
<channel lang="sk" xmltv_id="CinemaxCzechRepublic.cz" site_id="10123">Cinemax HD</channel>
<channel lang="en" xmltv_id="ClubMTVEurope.uk" site_id="10094">Club MTV</channel>
<channel lang="en" xmltv_id="CNBCEurope.uk" site_id="10110">CNBC Europe HD</channel>
<channel lang="en" xmltv_id="CNNInternationalEurope.us" site_id="10108">CNN</channel>
<channel lang="sk" xmltv_id="CNNPrimaNews.cz" site_id="10026">CNN Prima News HD</channel>
<channel lang="sk" xmltv_id="CoolTV.hu" site_id="10149">Cool TV</channel>
<channel lang="sk" xmltv_id="CSHistory.cz" site_id="10047">CS History</channel>
<channel lang="sk" xmltv_id="CSMystery.cz" site_id="10048">CS Mystery</channel>
<channel lang="sk" xmltv_id="CT1.cz" site_id="10018">CT 1 HD</channel>
<channel lang="sk" xmltv_id="CT2.cz" site_id="10019">CT 2 HD</channel>
<channel lang="sk" xmltv_id="CT24.cz" site_id="10021">CT 24 HD</channel>
<channel lang="sk" xmltv_id="CTSport.cz" site_id="10082">CT sport HD</channel>
<channel lang="sk" xmltv_id="CurrentTimeTV.cz" site_id="10194">Current Time</channel>
<channel lang="sk" xmltv_id="DiscoveryChannelCzechRepublic.cz" site_id="10052">Discovery HD</channel>
<channel lang="sk" xmltv_id="DiscoveryScienceCzechRepublic.cz" site_id="10053">Discovery Science HD</channel>
<channel lang="sk" xmltv_id="DisneyChannelCzechRepublic.cz" site_id="10086">Disney Channel</channel>
<channel lang="en" xmltv_id="DocuBox.nl" site_id="10129">Docubox HD</channel>
<channel lang="sk" xmltv_id="DomKino.ru" site_id="10174">Dom Kino</channel>
<channel lang="sk" xmltv_id="DomKinoPremium.ru" site_id="10173">Dom Kino PREMIUM HD</channel>
<channel lang="sk" xmltv_id="DTXCzech.cz" site_id="10054">DTX HD</channel>
<channel lang="sk" xmltv_id="DuckTV.sk" site_id="10084">ducktv HD</channel>
<channel lang="sk" xmltv_id="DunaTV.hu" site_id="10146">Duna</channel>
<channel lang="sk" xmltv_id="DunaWorld.hu" site_id="10145">Duna World</channel>
<channel lang="sk" xmltv_id="Dvojka.sk" site_id="10002">Dvojka HD</channel>
<channel lang="en" xmltv_id="DWEnglish.de" site_id="10109">Deutsche Welle</channel>
<channel lang="en" xmltv_id="Eroxxx.nl" site_id="10131">EroXXX HD</channel>
<channel lang="sk" xmltv_id="EspresoTV.ua" site_id="10192">Espreso TV</channel>
<channel lang="en" xmltv_id="EuronewsEnglish.fr" site_id="10111">Euronews HD</channel>
<channel lang="fr" xmltv_id="EuronewsFrench.fr" site_id="10114">Euronews FR</channel>
<channel lang="sk" xmltv_id="EuronewsHungarian.fr" site_id="10152">Euronews HU</channel>
<channel lang="sk" xmltv_id="Eurosport1.fr" site_id="10072">Eurosport 1 HD</channel>
<channel lang="sk" xmltv_id="Eurosport2.fr" site_id="10073">Eurosport 2 HD</channel>
<channel lang="en" xmltv_id="ExtasyTV.cz" site_id="10136">Extasy HD</channel>
<channel lang="en" xmltv_id="ExtremeSportsChannelEurope.nl" site_id="10079">Extreme Sports</channel>
<channel lang="en" xmltv_id="FashionBox.nl" site_id="10202">FashionBox</channel>
<channel lang="en" xmltv_id="FashionTVEurope.fr" site_id="10105">Fashion TV HD</channel>
<channel lang="en" xmltv_id="FastFunBox.nl" site_id="10130">Fast &amp; FunBox HD</channel>
<channel lang="sk" xmltv_id="FEM3.hu" site_id="10161">Fem3</channel>
<channel lang="en" xmltv_id="FightBox.nl" site_id="10128">Fightbox HD</channel>
<channel lang="sk" xmltv_id="FilmBox.nl" site_id="10044">FilmBox HD</channel>
<channel lang="en" xmltv_id="FilmBoxArthouse.nl" site_id="10201">FilmBox Arthouse</channel>
<channel lang="sk" xmltv_id="FilmBoxExtraCzechRepublicSlovakia.cz" site_id="10125">FilmBox Extra HD</channel>
<channel lang="sk" xmltv_id="FilmBoxFamily.nl" site_id="10045">FilmBox Family</channel>
<channel lang="sk" xmltv_id="FilmBoxPremiumCzechRepublicSlovakia.cz" site_id="10126">FilmBox Premium HD</channel>
<channel lang="sk" xmltv_id="FilmBoxStarsCzechRepublicSlovakia.cz" site_id="10127">FilmBox Stars HD</channel>
<channel lang="sk" xmltv_id="FilmPlus.cz" site_id="10043">Film+ CZ HD</channel>
<channel lang="sk" xmltv_id="FilmPlusHungary.hu" site_id="10162">FILM+ HU</channel>
<channel lang="sk" xmltv_id="Folklorika.sk" site_id="10014">Folklorika HD</channel>
<channel lang="sk" xmltv_id="FoodNetworkHungary.hu" site_id="10056">Food Network HD</channel>
<channel lang="fr" xmltv_id="France24French.fr" site_id="10112">France 24</channel>
<channel lang="sk" xmltv_id="HBO2CzechRepublic.cz" site_id="10121">HBO 2 HD</channel>
<channel lang="sk" xmltv_id="HBO3CzechRepublic.cz" site_id="10122">HBO 3 HD</channel>
<channel lang="sk" xmltv_id="HBOCzechRepublic.cz" site_id="10120">HBO HD</channel>
<channel lang="sk" xmltv_id="HirTV.hu" site_id="10137">HirTV</channel>
<channel lang="sk" xmltv_id="HistoryCzechRepublic.cz" site_id="10057">History HD</channel>
<channel lang="sk" xmltv_id="HobbyTV.cz" site_id="10069">Hobby TV HD</channel>
<channel lang="sk" xmltv_id="Jednotka.sk" site_id="10001">Jednotka HD</channel>
<channel lang="sk" xmltv_id="JimJamHungary.hu" site_id="10087">JimJam</channel>
<channel lang="sk" xmltv_id="JOJ24.sk" site_id="10198">JOJ 24 HD</channel>
<channel lang="sk" xmltv_id="JOJCinema.sk" site_id="10007">JOJ Cinema HD</channel>
<channel lang="sk" xmltv_id="Jojko.sk" site_id="10011">Jojko HD</channel>
<channel lang="sk" xmltv_id="JOJPlus.sk" site_id="10006">JOJ Plus HD</channel>
<channel lang="sk" xmltv_id="JOJSport.sk" site_id="10185">JOJ Sport HD</channel>
<channel lang="sk" xmltv_id="JOJWAU.sk" site_id="10009">WAU HD</channel>
<channel lang="de" xmltv_id="kabeleins.de" site_id="10163">Kabel eins</channel>
<channel lang="sk" xmltv_id="Karusel.ru" site_id="10180">Carousel</channel>
<channel lang="sk" xmltv_id="KinoBarrandov.cz" site_id="10034">Kino Barrandov HD</channel>
<channel lang="sk" xmltv_id="LeoTV.cz" site_id="10134">Leo TV HD</channel>
<channel lang="sk" xmltv_id="M1.hu" site_id="10138">m1 HD</channel>
<channel lang="sk" xmltv_id="M2.hu" site_id="10139">m2</channel>
<channel lang="sk" xmltv_id="M4Sport.hu" site_id="10141">m4 Sport HD</channel>
<channel lang="sk" xmltv_id="M5.hu" site_id="10140">m5</channel>
<channel lang="sk" xmltv_id="Markiza.sk" site_id="10003">Markiza HD</channel>
<channel lang="sk" xmltv_id="MarkizaDajto.sk" site_id="10008">Dajto HD</channel>
<channel lang="sk" xmltv_id="MarkizaDoma.sk" site_id="10004">Doma HD</channel>
<channel lang="en" xmltv_id="Mezzo.fr" site_id="10104">Mezzo</channel>
<channel lang="sk" xmltv_id="MinimaxCEE.cz" site_id="10085">Minimax</channel>
<channel lang="sk" xmltv_id="MnamTV.cz" site_id="10036">Mnam TV HD</channel>
<channel lang="sk" xmltv_id="MnauTV.cz" site_id="10037">Mnau TV</channel>
<channel lang="en" xmltv_id="MTV00s.uk" site_id="10096">MTV 00s</channel>
<channel lang="en" xmltv_id="MTV80s.uk" site_id="10097">MTV 80s</channel>
<channel lang="en" xmltv_id="MTV90s.uk" site_id="10095">MTV 90s</channel>
<channel lang="en" xmltv_id="MTVLive.uk" site_id="10093">MTV Live HD</channel>
<channel lang="sk" xmltv_id="MuzikaPervogo.ru" site_id="10182">Muzika Pervogo</channel>
<channel lang="sk" xmltv_id="MuzsikaTV.hu" site_id="10156">Muzsika TV</channel>
<channel lang="sk" xmltv_id="NationalGeographicCzechRepublic.cz" site_id="10058">National Geographic HD</channel>
<channel lang="sk" xmltv_id="NationalGeographicWildCzechRepublic.cz" site_id="10059">Nat Geo Wild HD</channel>
<channel lang="sk" xmltv_id="NickJrCzechia.cz" site_id="10089">Nick Jr.</channel>
<channel lang="sk" xmltv_id="NickelodeonCzechia.cz" site_id="10088">Nickelodeon</channel>
<channel lang="sk" xmltv_id="NicktoonsCzechia.cz" site_id="10090">NickToons</channel>
<channel lang="de" xmltv_id="Nitro.de" site_id="10171">Nitro</channel>
<channel lang="sk" xmltv_id="NovaInternational.cz" site_id="10022">Nova International HD</channel>
<channel lang="sk" xmltv_id="NovaSport1.cz" site_id="10080">Nova Sport 1 HD</channel>
<channel lang="sk" xmltv_id="NovaSport2.cz" site_id="10081">Nova Sport 2 HD</channel>
<channel lang="sk" xmltv_id="O.ru" site_id="10181">O!</channel>
<channel lang="de" xmltv_id="ORF1.at" site_id="10115">ORF 1</channel>
<channel lang="de" xmltv_id="ORF2.at" site_id="10116">ORF 2</channel>
<channel lang="de" xmltv_id="ORFIII.at" site_id="10117">ORF III</channel>
<channel lang="sk" xmltv_id="ParkTV.sk" site_id="10070">Park TV</channel>
<channel lang="sk" xmltv_id="Pobeda.ru" site_id="10179">Pobeda</channel>
<channel lang="sk" xmltv_id="Poehali.ru" site_id="10176">Poekhali!</channel>
<channel lang="sk" xmltv_id="PrimaCool.cz" site_id="10029">Prima COOL HD</channel>
<channel lang="sk" xmltv_id="PrimaKrimi.cz" site_id="10027">Prima KRIMI HD</channel>
<channel lang="sk" xmltv_id="PrimaLove.cz" site_id="10030">Prima love HD</channel>
<channel lang="sk" xmltv_id="PrimaMax.cz" site_id="10028">Prima MAX HD</channel>
<channel lang="sk" xmltv_id="PrimaPlus.cz" site_id="10023">Prima PLUS HD</channel>
<channel lang="sk" xmltv_id="PrimaZoom.cz" site_id="10031">Prima ZOOM HD</channel>
<channel lang="de" xmltv_id="ProSieben.de" site_id="10165">ProSieben</channel>
<channel lang="en" xmltv_id="RealityKingsTV.us" site_id="10189">Reality Kings HD</channel>
<channel lang="sk" xmltv_id="Relax.cz" site_id="10106">RELAX</channel>
<channel lang="sk" xmltv_id="RetroMusicTV.cz" site_id="10098">Retro Music TV</channel>
<channel lang="sk" xmltv_id="RTLGold.hu" site_id="10153">RTL Gold</channel>
<channel lang="sk" xmltv_id="RTLKETTO.hu" site_id="10143">RTL KETTŐ</channel>
<channel lang="de" xmltv_id="RTLGermany.de" site_id="10166">RTL DE</channel>
<channel lang="sk" xmltv_id="RTLHAROM.hu" site_id="10154">RTL HÁROM</channel>
<channel lang="sk" xmltv_id="RTLHungary.hu" site_id="10142">RTL</channel>
<channel lang="de" xmltv_id="RTLZwei.de" site_id="10167">RTL Zwei</channel>
<channel lang="de" xmltv_id="SAT1.de" site_id="10169">SAT 1</channel>
<channel lang="sk" xmltv_id="Senzi.sk" site_id="10016">SENZI HD</channel>
<channel lang="en" xmltv_id="SkyNewsInternational.uk" site_id="10197">Sky News</channel>
<channel lang="sk" xmltv_id="SlagerMuzika.cz" site_id="10102">Slager muzika</channel>
<channel lang="sk" xmltv_id="SlagerOriginal.cz" site_id="10101">Slager original</channel>
<channel lang="sk" xmltv_id="SlagerPremium.cz" site_id="10103">Slager Premium HD</channel>
<channel lang="sk" xmltv_id="SlagerTV.hu" site_id="10157">Slager TV</channel>
<channel lang="sk" xmltv_id="SorozatPlus.hu" site_id="10155">Sorozat+</channel>
<channel lang="sk" xmltv_id="Spektrum.cz" site_id="10060">Spektrum HD</channel>
<channel lang="sk" xmltv_id="SpektrumHomeHungary.hu" site_id="10061">Spektrum home</channel>
<channel lang="sk" xmltv_id="Sport.sk" site_id="10186">RTVS Sport HD</channel>
<channel lang="sk" xmltv_id="Sport1.cz" site_id="10074">Sport 1 HD</channel>
<channel lang="sk" xmltv_id="Sport2.cz" site_id="10075">Sport 2 HD</channel>
<channel lang="sk" xmltv_id="Sport5.cz" site_id="10076">Sport 5</channel>
<channel lang="sk" xmltv_id="Story4.hu" site_id="10158">Story 4</channel>
<channel lang="de" xmltv_id="SuperRTL.de" site_id="10168">Super RTL</channel>
<channel lang="sk" xmltv_id="SuperTV2.hu" site_id="10159">Super TV2</channel>
<channel lang="sk" xmltv_id="TA3.sk" site_id="10012">TA3 HD</channel>
<channel lang="sk" xmltv_id="Telecafe.ru" site_id="10177">Telecafe</channel>
<channel lang="sk" xmltv_id="TelevizeSeznam.cz" site_id="10025">Seznam.cz TV HD</channel>
<channel lang="sk" xmltv_id="TheFishingHuntingChannel.hu" site_id="10068">Fishing and Hunting</channel>
<channel lang="sk" xmltv_id="TravelChannelHungary.hu" site_id="10064">Travel Channel HD</channel>
<channel lang="en" xmltv_id="TRTWorld.tr" site_id="10119">TRT World</channel>
<channel lang="sk" xmltv_id="TurboTV.sk" site_id="10195">TurboTV HD</channel>
<channel lang="sk" xmltv_id="TV2.hu" site_id="10148">TV2</channel>
<channel lang="sk" xmltv_id="TV2Sef.hu" site_id="10160">TV2Sef</channel>
<channel lang="sk" xmltv_id="TV4.hu" site_id="10150">TV4</channel>
<channel lang="sk" xmltv_id="TV8.sk" site_id="10015">TV8</channel>
<channel lang="sk" xmltv_id="TVBarrandov.cz" site_id="10032">Barrandov TV HD</channel>
<channel lang="sk" xmltv_id="TVJOJ.sk" site_id="10005">JOJ HD</channel>
<channel lang="sk" xmltv_id="TVLux.sk" site_id="10013">TV LUX HD</channel>
<channel lang="sk" xmltv_id="TVNoe.cz" site_id="10035">Noe TV HD</channel>
<channel lang="sk" xmltv_id="TVPaprika.cz" site_id="10063">TV Paprika</channel>
<channel lang="sk" xmltv_id="TVPaprikaHungary.hu" site_id="10151">TV Paprika HU</channel>
<channel lang="sk" xmltv_id="TVPPolonia.pl" site_id="10118">TVP Polonia</channel>
<channel lang="sk" xmltv_id="TVRaj.sk" site_id="10038">TV Raj HD</channel>
<channel lang="sk" xmltv_id="TVRomana.sk" site_id="10184">TV Romana</channel>
<channel lang="sk" xmltv_id="TVRuzinov.sk" site_id="10039">TV Ruzinov HD</channel>
<channel lang="en" xmltv_id="UATV.ua" site_id="10190">UATV</channel>
<channel lang="sk" xmltv_id="ViasatExploreCzechRepublic.cz" site_id="10065">Viasat Explore HD</channel>
<channel lang="sk" xmltv_id="ViasatHistoryCzechRepublic.cz" site_id="10066">Viasat History HD</channel>
<channel lang="sk" xmltv_id="ViasatNatureCzechRepublic.cz" site_id="10067">Viasat Nature HD</channel>
<channel lang="de" xmltv_id="VoxGermany.de" site_id="10170">VOX</channel>
<channel lang="sk" xmltv_id="Vremya.ru" site_id="10175">Vremja</channel>
<channel lang="de" xmltv_id="Welt.de" site_id="10164">WELT</channel>
<!-- <channel lang="sk" xmltv_id="" site_id="10020">CT D HD / CT art HD</channel> -->
<!-- <channel lang="sk" xmltv_id="" site_id="10046">CS Film CS Horror HD</channel> -->
<!-- <channel lang="sk" xmltv_id="" site_id="10050">CBS Reality</channel> -->
<!-- <channel lang="sk" xmltv_id="" site_id="10051">Crime and Investigation</channel> -->
<!-- <channel lang="sk" xmltv_id="" site_id="10055">ID HD</channel> -->
<!-- <channel lang="sk" xmltv_id="" site_id="10062">TLC HD</channel> -->
<!-- <channel lang="sk" xmltv_id="" site_id="10078">Golf Channel HD</channel> -->
<!-- <channel lang="sk" xmltv_id="" site_id="10092">MTV Europe</channel> -->
<!-- <channel lang="sk" xmltv_id="" site_id="10144">Filmbox HU</channel> -->
<!-- <channel lang="sk" xmltv_id="" site_id="10203">E! Entertainment</channel> -->
</channels>
</site>

View File

@@ -0,0 +1,145 @@
const axios = require('axios')
const dayjs = require('dayjs')
const API_ENDPOINT = `https://legacy-static.oesp.horizon.tv/oesp/v4/SK/slk/web`
module.exports = {
site: 'horizon.tv',
days: 3,
request: {
cache: {
ttl: 60 * 60 * 1000 // 1 hour
}
},
url: function ({ date }) {
return `${API_ENDPOINT}/programschedules/${date.format('YYYYMMDD')}/1`
},
async parser({ content, channel, date }) {
let programs = []
let items = parseItems(content, channel)
if (!items.length) return programs
const d = date.format('YYYYMMDD')
const promises = [
axios.get(`${API_ENDPOINT}/programschedules/${d}/2`),
axios.get(`${API_ENDPOINT}/programschedules/${d}/3`),
axios.get(`${API_ENDPOINT}/programschedules/${d}/4`)
]
await Promise.allSettled(promises)
.then(results => {
results.forEach(r => {
if (r.status === 'fulfilled') {
items = items.concat(parseItems(r.value.data, channel))
}
})
})
.catch(console.error)
for (let item of items) {
const detail = await loadProgramDetails(item)
programs.push({
title: item.t,
description: parseDescription(detail),
category: parseCategory(detail),
season: parseSeason(detail),
episode: parseEpisode(detail),
actors: parseActors(detail),
directors: parseDirectors(detail),
date: parseYear(detail),
start: parseStart(item),
stop: parseStop(item)
})
}
return programs
},
async channels() {
const data = await axios
.get(`${API_ENDPOINT}/channels`)
.then(r => r.data)
.catch(console.log)
return data.channels.map(item => {
return {
lang: 'sk',
site_id: item.id.replace('lgi-obolite-sk-prod-master:5-', ''),
name: item.title
}
})
}
}
async function loadProgramDetails(item) {
if (!item.i) return {}
const url = `${API_ENDPOINT}/listings/${item.i}`
const data = await axios
.get(url)
.then(r => r.data)
.catch(console.log)
return data || {}
}
function parseStart(item) {
return dayjs(item.s)
}
function parseStop(item) {
return dayjs(item.e)
}
function parseItems(content, channel) {
if (!content) return []
const data = (typeof content === 'string') ? JSON.parse(content) : content
if (!data || !Array.isArray(data.entries)) return []
const entity = data.entries.find(e => e.o === `lgi-obolite-sk-prod-master:${channel.site_id}`)
return entity ? entity.l : []
}
function parseDescription(detail) {
if (!detail) return []
if (!detail.program) return []
return detail.program.longDescription || null
}
function parseCategory(detail) {
if (!detail) return []
if (!detail.program) return []
if (!detail.program.categories) return []
let categories = []
detail.program.categories.forEach(category => {
categories.push(category.title)
})
return categories
}
function parseSeason(detail) {
if (!detail) return null
if (!detail.program) return null
if (!detail.program.seriesNumber) return null
if (String(detail.program.seriesNumber).length > 2) return null
return detail.program.seriesNumber
}
function parseEpisode(detail) {
if (!detail) return null
if (!detail.program) return null
if (!detail.program.seriesEpisodeNumber) return null
if (String(detail.program.seriesEpisodeNumber).length > 3) return null
return detail.program.seriesEpisodeNumber
}
function parseDirectors(detail) {
if (!detail) return []
if (!detail.program) return []
return detail.program.directors || []
}
function parseActors(detail) {
if (!detail) return []
if (!detail.program) return []
return detail.program.cast || []
}
function parseYear(detail) {
if (!detail) return null
if (!detail.program) return null
return detail.program.year || null
}

View File

@@ -0,0 +1,239 @@
// npm run channels:parse -- --config=./sites/horizon.tv/horizon.tv.config.js --output=./sites/horizon.tv/horizon.tv.channels.xml
// npx epg-grabber --config=sites/horizon.tv/horizon.tv.config.js --channels=sites/horizon.tv/horizon.tv.channels.xml --output=guide.xml --days=2
const { parser, url } = require('./horizon.tv.config.js')
const axios = require('axios')
const dayjs = require('dayjs')
const utc = require('dayjs/plugin/utc')
const customParseFormat = require('dayjs/plugin/customParseFormat')
dayjs.extend(customParseFormat)
dayjs.extend(utc)
jest.mock('axios')
const date = dayjs.utc('2023-02-07', 'YYYY-MM-DD').startOf('d')
const channel = {
site_id: '10024',
xmltv_id: 'AMCCzechRepublic.cz'
}
it('can generate valid url', () => {
expect(url({ date, channel })).toBe(
'https://legacy-static.oesp.horizon.tv/oesp/v4/SK/slk/web/programschedules/20230207/1'
)
})
it('can parse response', done => {
const content = `{"entryCount":184,"totalResults":184,"updated":1675790518889,"expires":1675791343825,"title":"EPG","periods":4,"periodStartTime":1675724400000,"periodEndTime":1675746000000,"entries":[{"o":"lgi-obolite-sk-prod-master:10024","l":[{"i":"crid:~~2F~~2Fport.cs~~2F122941980,imi:7ca159c917344e0dd3fbe1cd8db5ff8043d96a78","t":"Avengement","s":1675719300000,"e":1675724700000,"c":"lgi-obolite-sk-prod-master:genre-9","a":false,"r":true,"rm":true,"rs":0,"re":604800,"rst":"cloud","ra":false,"ad":[],"sl":[]}]}]}`
axios.get.mockImplementation(url => {
if (url === 'https://legacy-static.oesp.horizon.tv/oesp/v4/SK/slk/web/programschedules/20230207/2') {
return Promise.resolve({
data: JSON.parse(`{"entryCount":184,"totalResults":184,"updated":1675790518889,"expires":1675791376097,"title":"EPG","periods":4,"periodStartTime":1675746000000,"periodEndTime":1675767600000,"entries":[{"o":"lgi-obolite-sk-prod-master:10024","l":[{"i":"crid:~~2F~~2Fport.cs~~2F248281986,imi:e85129f9d1e211406a521df7a36f22237c22651b","t":"Zoom In","s":1675744500000,"e":1675746000000,"c":"lgi-obolite-sk-prod-master:genre-21","a":false,"r":true,"rm":true,"rs":0,"re":604800,"rst":"cloud","ra":false,"ad":[],"sl":[]}]}]}`)
})
} else if (url === 'https://legacy-static.oesp.horizon.tv/oesp/v4/SK/slk/web/programschedules/20230207/3') {
return Promise.resolve({
data: JSON.parse(`{"entryCount":184,"totalResults":184,"updated":1675789948804,"expires":1675791024984,"title":"EPG","periods":4,"periodStartTime":1675767600000,"periodEndTime":1675789200000,"entries":[{"o":"lgi-obolite-sk-prod-master:10024","l":[{"i":"crid:~~2F~~2Fport.cs~~2F1379541,imi:5f806a2a0bc13e9745e14907a27116c60ea2c6ad","t":"Studentka","s":1675761000000,"e":1675767600000,"c":"lgi-obolite-sk-prod-master:genre-14","a":false,"r":true,"rm":true,"rs":0,"re":604800,"rst":"cloud","ra":false,"ad":[],"sl":[]}]}]}`)
})
} else if (url === 'https://legacy-static.oesp.horizon.tv/oesp/v4/SK/slk/web/programschedules/20230207/4') {
return Promise.resolve({
data: JSON.parse(`{"entryCount":184,"totalResults":184,"updated":1675789948804,"expires":1675790973469,"title":"EPG","periods":4,"periodStartTime":1675789200000,"periodEndTime":1675810800000,"entries":[{"o":"lgi-obolite-sk-prod-master:10024","l":[{"i":"crid:~~2F~~2Fport.cs~~2F71927954,imi:f1b4b0285b72cf44cba74e1c62322a4c682385c7","t":"Zilionáři","s":1675785900000,"e":1675791900000,"c":"lgi-obolite-sk-prod-master:genre-9","a":false,"r":true,"rm":true,"rs":0,"re":604800,"rst":"cloud","ra":false,"ad":[],"sl":[]}]}]}`)
})
} else if (url === 'https://legacy-static.oesp.horizon.tv/oesp/v4/SK/slk/web/listings/crid:~~2F~~2Fport.cs~~2F122941980,imi:7ca159c917344e0dd3fbe1cd8db5ff8043d96a78') {
return Promise.resolve({
data: JSON.parse(`{"id":"crid:~~2F~~2Fport.cs~~2F122941980,imi:7ca159c917344e0dd3fbe1cd8db5ff8043d96a78","startTime":1675719300000,"endTime":1675724700000,"actualStartTime":1675719300000,"actualEndTime":1675724700000,"expirationDate":1676324100000,"stationId":"lgi-obolite-sk-prod-master:10024","imi":"imi:7ca159c917344e0dd3fbe1cd8db5ff8043d96a78","scCridImi":"crid:~~2F~~2Fport.cs~~2F122941980,imi:7ca159c917344e0dd3fbe1cd8db5ff8043d96a78","mediaGroupId":"crid:~~2F~~2Fport.cs~~2F122941980","program":{"id":"crid:~~2F~~2Fport.cs~~2F122941980","title":"Avengement","description":"Během propustky z vězení za účelem návštěvy umírající matky v nemocnici zločinec Cain Burgess (Scott Adkins) unikne svým dozorcům a mizí v ulicích Londýna. Jde o epickou cestu krve a bolesti za...","longDescription":"Během propustky z vězení za účelem návštěvy umírající matky v nemocnici zločinec Cain Burgess (Scott Adkins) unikne svým dozorcům a mizí v ulicích Londýna. Jde o epickou cestu krve a bolesti za dosažením vytoužené pomsty na těch, kteří z něj udělali chladnokrevného vraha.","medium":"Movie","categories":[{"id":"lgi-obolite-sk-prod-master:genre-9","title":"Drama","scheme":"urn:libertyglobal:metadata:cs:ContentCS:2014_1"},{"id":"lgi-obolite-sk-prod-master:genre-33","title":"Akcia","scheme":"urn:libertyglobal:metadata:cs:ContentCS:2014_1"}],"isAdult":false,"parentalRating":"18","cast":["Scott Adkins","Craig Fairbrass","Thomas Turgoose","Nick Moran","Kierston Wareing","Leo Gregory","Mark Strange","Luke LaFontaine","Beau Fowler","Dan Styles","Christopher Sciueref","Matt Routledge","Jane Thorne","Louis Mandylor","Terence Maynard","Greg Burridge","Michael Higgs","Damian Gallagher","Daniel Adegboyega","John Ioannou","Sofie Golding-Spittle","Joe Egan","Darren Swain","Lee Charles","Dominic Kinnaird","Ross O'Hennessy","Teresa Mahoney","Andrew Dunkelberger","Sam Hardy","Ivan Moy","Mark Sears","Phillip Ray Tommy"],"directors":["Jesse V. Johnson"],"images":[{"assetType":"HighResLandscape","assetTypes":["HighResLandscape"],"url":"http://62.179.125.152/SK/Images/hrl_3fa8387df870473fdacb1024635b52b2496b159c.jpg"},{"assetType":"HighResPortrait","assetTypes":["HighResPortrait"],"url":"http://62.179.125.152/SK/Images/hrp_19e3a660e637cd39e31046c284a66b3a95d698e4.jpg"},{"assetType":"boxCover","assetTypes":["boxCover"],"url":"http://62.179.125.152/SK/Images/bc_939160772e45a783fb3a19970696f5ebcb6e568b.jpg"},{"assetType":"boxart-small","assetTypes":["boxart-small"],"url":"http://62.179.125.152/SK/Images/bc_939160772e45a783fb3a19970696f5ebcb6e568b.jpg?w=75&h=108&mode=box"},{"assetType":"boxart-medium","assetTypes":["boxart-medium"],"url":"http://62.179.125.152/SK/Images/bc_939160772e45a783fb3a19970696f5ebcb6e568b.jpg?w=110&h=159&mode=box"},{"assetType":"boxart-xlarge","assetTypes":["boxart-xlarge"],"url":"http://62.179.125.152/SK/Images/bc_939160772e45a783fb3a19970696f5ebcb6e568b.jpg?w=210&h=303&mode=box"},{"assetType":"boxart-large","assetTypes":["boxart-large"],"url":"http://62.179.125.152/SK/Images/bc_939160772e45a783fb3a19970696f5ebcb6e568b.jpg?w=180&h=260&mode=box"}],"rootId":"crid:~~2F~~2Fport.cs~~2F122941980","parentalRatingDescription":[],"resolutions":[],"mediaGroupId":"crid:~~2F~~2Fport.cs~~2F122941980","shortDescription":"Během propustky z vězení za účelem návštěvy umírající matky v nemocnici zločinec Cain Burgess (Scott Adkins) unikne svým dozorcům a mizí v ulicích Londýna. Jde o epickou cestu krve a bolesti za...","mediaType":"FeatureFilm","year":"2019","videos":[],"videoStreams":[],"entitlements":["VIP","_OPEN_"],"currentProductIds":[],"currentTvodProductIds":[]},"rootId":"crid:~~2F~~2Fport.cs~~2F122941980","replayTvAvailable":true,"audioTracks":[],"ratings":[],"offersLatestExpirationDate":1676247300000,"replayTvStartOffset":0,"replayTvEndOffset":604800,"replayEnabledOnMobileClients":true,"replaySource":"cloud","isGoReplayableViaExternalApp":false}`)
})
} else if (url === 'https://legacy-static.oesp.horizon.tv/oesp/v4/SK/slk/web/listings/crid:~~2F~~2Fport.cs~~2F248281986,imi:e85129f9d1e211406a521df7a36f22237c22651b') {
return Promise.resolve({
data: JSON.parse(`{"id":"crid:~~2F~~2Fport.cs~~2F248281986,imi:e85129f9d1e211406a521df7a36f22237c22651b","startTime":1675744500000,"endTime":1675746000000,"actualStartTime":1675744500000,"actualEndTime":1675746000000,"expirationDate":1676349300000,"stationId":"lgi-obolite-sk-prod-master:10024","imi":"imi:e85129f9d1e211406a521df7a36f22237c22651b","scCridImi":"crid:~~2F~~2Fport.cs~~2F248281986,imi:e85129f9d1e211406a521df7a36f22237c22651b","mediaGroupId":"crid:~~2F~~2Fport.cs~~2F41764266","program":{"id":"crid:~~2F~~2Fport.cs~~2F248281986","title":"Zoom In","description":"Film/Kino","longDescription":"Film/Kino","medium":"TV","categories":[{"id":"lgi-obolite-sk-prod-master:genre-21","title":"Hudba a umenie","scheme":"urn:libertyglobal:metadata:cs:ContentCS:2014_1"},{"id":"lgi-obolite-sk-prod-master:genre-14","title":"Film","scheme":"urn:libertyglobal:metadata:cs:ContentCS:2014_1"}],"isAdult":false,"parentalRating":"9","cast":[],"directors":[],"images":[{"assetType":"HighResLandscape","assetTypes":["HighResLandscape"],"url":"http://62.179.125.152/SK/Images/hrl_cbed64b557e83227a2292604cbcae2d193877b1c.jpg"},{"assetType":"HighResPortrait","assetTypes":["HighResPortrait"],"url":"http://62.179.125.152/SK/Images/hrp_cfe405e669385365846b69196e1e94caa3e60de0.jpg"},{"assetType":"boxCover","assetTypes":["boxCover"],"url":"http://62.179.125.152/SK/Images/bc_cfe405e669385365846b69196e1e94caa3e60de0.jpg"},{"assetType":"boxart-small","assetTypes":["boxart-small"],"url":"http://62.179.125.152/SK/Images/bc_cfe405e669385365846b69196e1e94caa3e60de0.jpg?w=75&h=108&mode=box"},{"assetType":"boxart-medium","assetTypes":["boxart-medium"],"url":"http://62.179.125.152/SK/Images/bc_cfe405e669385365846b69196e1e94caa3e60de0.jpg?w=110&h=159&mode=box"},{"assetType":"boxart-xlarge","assetTypes":["boxart-xlarge"],"url":"http://62.179.125.152/SK/Images/bc_cfe405e669385365846b69196e1e94caa3e60de0.jpg?w=210&h=303&mode=box"},{"assetType":"boxart-large","assetTypes":["boxart-large"],"url":"http://62.179.125.152/SK/Images/bc_cfe405e669385365846b69196e1e94caa3e60de0.jpg?w=180&h=260&mode=box"}],"parentId":"crid:~~2F~~2Fport.cs~~2F41764266_series","rootId":"crid:~~2F~~2Fport.cs~~2F41764266","parentalRatingDescription":[],"resolutions":[],"mediaGroupId":"crid:~~2F~~2Fport.cs~~2F41764266","shortDescription":"Film/Kino","mediaType":"Episode","year":"2010","seriesEpisodeNumber":"1302070535","seriesNumber":"1302080520","videos":[],"videoStreams":[],"entitlements":["VIP","_OPEN_"],"currentProductIds":[],"currentTvodProductIds":[]},"parentId":"crid:~~2F~~2Fport.cs~~2F41764266_series","rootId":"crid:~~2F~~2Fport.cs~~2F41764266","replayTvAvailable":true,"audioTracks":[],"ratings":[],"offersLatestExpirationDate":1675746000000,"replayTvStartOffset":0,"replayTvEndOffset":604800,"replayEnabledOnMobileClients":true,"replaySource":"cloud","isGoReplayableViaExternalApp":false}`)
})
} else if (url === 'https://legacy-static.oesp.horizon.tv/oesp/v4/SK/slk/web/listings/crid:~~2F~~2Fport.cs~~2F1379541,imi:5f806a2a0bc13e9745e14907a27116c60ea2c6ad') {
return Promise.resolve({
data: JSON.parse(`{"id":"crid:~~2F~~2Fport.cs~~2F1379541,imi:5f806a2a0bc13e9745e14907a27116c60ea2c6ad","startTime":1675761000000,"endTime":1675767600000,"actualStartTime":1675761000000,"actualEndTime":1675767600000,"expirationDate":1676365800000,"stationId":"lgi-obolite-sk-prod-master:10024","imi":"imi:5f806a2a0bc13e9745e14907a27116c60ea2c6ad","scCridImi":"crid:~~2F~~2Fport.cs~~2F1379541,imi:5f806a2a0bc13e9745e14907a27116c60ea2c6ad","mediaGroupId":"crid:~~2F~~2Fport.cs~~2F1379541","program":{"id":"crid:~~2F~~2Fport.cs~~2F1379541","title":"Studentka","description":"Ambiciózní vysokoškolačka Valentina (Sophie Marceau) studuje literaturu na pařížské Sorbonně a právě se připravuje k závěrečným zkouškám. Žádný odpočinek, žádné volno, žádné večírky, téměř žádný...","longDescription":"Ambiciózní vysokoškolačka Valentina (Sophie Marceau) studuje literaturu na pařížské Sorbonně a právě se připravuje k závěrečným zkouškám. Žádný odpočinek, žádné volno, žádné večírky, téměř žádný spánek a především a hlavně ... žádná láska! Věří, že jedině tak obstojí před zkušební komisí. Jednoho dne se však odehraje něco, s čím nepočítala. Potká charismatického hudebníka Neda - a bláznivě se zamiluje. V tuto chvíli stojí před osudovým rozhodnutím: zahodí roky obrovského studijního nasazení, nebo odmítne lásku? Nebo se snad dá obojí skloubit dohromady?","medium":"Movie","categories":[{"id":"lgi-obolite-sk-prod-master:genre-14","title":"Film","scheme":"urn:libertyglobal:metadata:cs:ContentCS:2014_1"},{"id":"lgi-obolite-sk-prod-master:genre-4","title":"Komédia","scheme":"urn:libertyglobal:metadata:cs:ContentCS:2014_1"}],"isAdult":false,"parentalRating":"9","cast":["Sophie Marceauová","Vincent Lindon","Elisabeth Vitali","Elena Pompei","Jean-Claude Leguay","Brigitte Chamarande","Christian Pereira","Gérard Dacier","Roberto Attias","Beppe Chierici","Nathalie Mann","Anne Macina","Janine Souchon","Virginie Demians","Hugues Leforestier","Jacqueline Noëlle","Marc-André Brunet","Isabelle Caubère","André Chazel","Med Salah Cheurfi","Guillaume Corea","Eric Denize","Gilles Gaston-Dreyfuss","Benoît Gourley","Marc Innocenti","Najim Laouriga","Laurent Ledermann","Philippe Maygal","Dominique Pifarely","Ysé Tran"],"directors":["Francis De Gueltz","Dominique Talmon","Claude Pinoteau"],"images":[{"assetType":"HighResLandscape","assetTypes":["HighResLandscape"],"url":"http://62.179.125.152/SK/Images/hrl_a8abceaa59bbb0aae8031dcdd5deba03aba8a100.jpg"},{"assetType":"HighResPortrait","assetTypes":["HighResPortrait"],"url":"http://62.179.125.152/SK/Images/hrp_72b11621270454812ac8474698fc75670db4a49d.jpg"},{"assetType":"boxCover","assetTypes":["boxCover"],"url":"http://62.179.125.152/SK/Images/bc_72b11621270454812ac8474698fc75670db4a49d.jpg"},{"assetType":"boxart-small","assetTypes":["boxart-small"],"url":"http://62.179.125.152/SK/Images/bc_72b11621270454812ac8474698fc75670db4a49d.jpg?w=75&h=108&mode=box"},{"assetType":"boxart-medium","assetTypes":["boxart-medium"],"url":"http://62.179.125.152/SK/Images/bc_72b11621270454812ac8474698fc75670db4a49d.jpg?w=110&h=159&mode=box"},{"assetType":"boxart-xlarge","assetTypes":["boxart-xlarge"],"url":"http://62.179.125.152/SK/Images/bc_72b11621270454812ac8474698fc75670db4a49d.jpg?w=210&h=303&mode=box"},{"assetType":"boxart-large","assetTypes":["boxart-large"],"url":"http://62.179.125.152/SK/Images/bc_72b11621270454812ac8474698fc75670db4a49d.jpg?w=180&h=260&mode=box"}],"rootId":"crid:~~2F~~2Fport.cs~~2F1379541","parentalRatingDescription":[],"resolutions":[],"mediaGroupId":"crid:~~2F~~2Fport.cs~~2F1379541","shortDescription":"Ambiciózní vysokoškolačka Valentina (Sophie Marceau) studuje literaturu na pařížské Sorbonně a právě se připravuje k závěrečným zkouškám. Žádný odpočinek, žádné volno, žádné večírky, téměř žádný...","mediaType":"FeatureFilm","year":"1988","videos":[],"videoStreams":[],"entitlements":["VIP","_OPEN_"],"currentProductIds":[],"currentTvodProductIds":[]},"rootId":"crid:~~2F~~2Fport.cs~~2F1379541","replayTvAvailable":true,"audioTracks":[],"ratings":[],"offersLatestExpirationDate":1675767600000,"replayTvStartOffset":0,"replayTvEndOffset":604800,"replayEnabledOnMobileClients":true,"replaySource":"cloud","isGoReplayableViaExternalApp":false}`)
})
} else if (url === 'https://legacy-static.oesp.horizon.tv/oesp/v4/SK/slk/web/listings/crid:~~2F~~2Fport.cs~~2F71927954,imi:f1b4b0285b72cf44cba74e1c62322a4c682385c7') {
return Promise.resolve({
data: JSON.parse(`{"id":"crid:~~2F~~2Fport.cs~~2F71927954,imi:f1b4b0285b72cf44cba74e1c62322a4c682385c7","startTime":1675785900000,"endTime":1675791900000,"actualStartTime":1675785900000,"actualEndTime":1675791900000,"expirationDate":1676390700000,"stationId":"lgi-obolite-sk-prod-master:10024","imi":"imi:f1b4b0285b72cf44cba74e1c62322a4c682385c7","scCridImi":"crid:~~2F~~2Fport.cs~~2F71927954,imi:f1b4b0285b72cf44cba74e1c62322a4c682385c7","mediaGroupId":"crid:~~2F~~2Fport.cs~~2F71927954","program":{"id":"crid:~~2F~~2Fport.cs~~2F71927954","title":"Zilionáři","description":"David (Zach Galifianakis) je nekomplikovaný muž, který uvízl v monotónním životě. Den co den usedá za volant svého obrněného automobilu, aby odvážel obrovské sumy peněz jiných lidí. Jediným...","longDescription":"David (Zach Galifianakis) je nekomplikovaný muž, který uvízl v monotónním životě. Den co den usedá za volant svého obrněného automobilu, aby odvážel obrovské sumy peněz jiných lidí. Jediným vzrušujícím momentem v jeho životě je flirtování s kolegyní Kelly (Kristen Wiig), která ho však brzy zatáhne do těžko uvěřitelného dobrodružství. Skupinka nepříliš inteligentních loserů, pod vedením Steva (Owen Wilson), plánuje vyloupit banku a David jim v tom má samozřejmě pomoci. Navzdory absolutně amatérskému plánu se ale stane nemožné a oni mají najednou v kapse 17 miliónů dolarů. A protože tato partička je opravdu bláznivá, začne je hned ve velkém roztáčet. Peníze létají vzduchem za luxusní a kolikrát i zbytečné věci, ale nedochází jim, že pro policii tak zanechávají jasné stopy...","medium":"Movie","categories":[{"id":"lgi-obolite-sk-prod-master:genre-9","title":"Drama","scheme":"urn:libertyglobal:metadata:cs:ContentCS:2014_1"},{"id":"lgi-obolite-sk-prod-master:genre-33","title":"Akcia","scheme":"urn:libertyglobal:metadata:cs:ContentCS:2014_1"}],"isAdult":false,"parentalRating":"15","cast":["Zach Galifianakis","Kristen Wiigová","Owen Wilson","Kate McKinnon","Leslie Jones","Jason Sudeikis","Ross Kimball","Devin Ratray","Mary Elizabeth Ellisová","Jon Daly","Ken Marino","Daniel Zacapa","Tom Werme","Njema Williams","Nils Cruz","Michael Fraguada","Christian Gonzalez","Candace Blanchard","Karsten Friske","Dallas Edwards","Barry Ratcliffe","Shelton Grant","Laura Palka","Reegus Flenory","Wynn Reichert","Jill Jane Clements","Joseph S. Wilson","Jee An","Rhoda Griffisová","Nicole Dupre Sobchack"],"directors":["Scott August","Richard L. Fox","Michelle Malley-Campos","Sebastian Mazzola","Steven Ritzi","Pete Waterman","Jared Hess"],"images":[{"assetType":"HighResLandscape","assetTypes":["HighResLandscape"],"url":"http://62.179.125.152/SK/Images/hrl_fd098116bac1429318aaf5fdae498ce76e258782.jpg"},{"assetType":"HighResPortrait","assetTypes":["HighResPortrait"],"url":"http://62.179.125.152/SK/Images/hrp_6f857ae9375b3bcceb6353a5b35775f52cd85302.jpg"},{"assetType":"boxCover","assetTypes":["boxCover"],"url":"http://62.179.125.152/SK/Images/bc_3f5a24412c7f4f434094fa1147a304aa6a5ebda6.jpg"},{"assetType":"boxart-small","assetTypes":["boxart-small"],"url":"http://62.179.125.152/SK/Images/bc_3f5a24412c7f4f434094fa1147a304aa6a5ebda6.jpg?w=75&h=108&mode=box"},{"assetType":"boxart-medium","assetTypes":["boxart-medium"],"url":"http://62.179.125.152/SK/Images/bc_3f5a24412c7f4f434094fa1147a304aa6a5ebda6.jpg?w=110&h=159&mode=box"},{"assetType":"boxart-xlarge","assetTypes":["boxart-xlarge"],"url":"http://62.179.125.152/SK/Images/bc_3f5a24412c7f4f434094fa1147a304aa6a5ebda6.jpg?w=210&h=303&mode=box"},{"assetType":"boxart-large","assetTypes":["boxart-large"],"url":"http://62.179.125.152/SK/Images/bc_3f5a24412c7f4f434094fa1147a304aa6a5ebda6.jpg?w=180&h=260&mode=box"}],"rootId":"crid:~~2F~~2Fport.cs~~2F71927954","parentalRatingDescription":[],"resolutions":[],"mediaGroupId":"crid:~~2F~~2Fport.cs~~2F71927954","shortDescription":"David (Zach Galifianakis) je nekomplikovaný muž, který uvízl v monotónním životě. Den co den usedá za volant svého obrněného automobilu, aby odvážel obrovské sumy peněz jiných lidí. Jediným...","mediaType":"FeatureFilm","year":"2016","videos":[],"videoStreams":[],"entitlements":["VIP","_OPEN_"],"currentProductIds":[],"currentTvodProductIds":[]},"rootId":"crid:~~2F~~2Fport.cs~~2F71927954","replayTvAvailable":true,"audioTracks":[],"ratings":[],"offersLatestExpirationDate":1676187900000,"replayTvStartOffset":0,"replayTvEndOffset":604800,"replayEnabledOnMobileClients":true,"replaySource":"cloud","isGoReplayableViaExternalApp":false}`)
})
} else {
return Promise.resolve({ data: '' })
}
})
parser({ content, channel, date })
.then(result => {
result = result.map(p => {
p.start = p.start.toJSON()
p.stop = p.stop.toJSON()
return p
})
expect(result).toMatchObject([
{
start: '2023-02-06T21:35:00.000Z',
stop: '2023-02-06T23:05:00.000Z',
title: 'Avengement',
description: `Během propustky z vězení za účelem návštěvy umírající matky v nemocnici zločinec Cain Burgess (Scott Adkins) unikne svým dozorcům a mizí v ulicích Londýna. Jde o epickou cestu krve a bolesti za dosažením vytoužené pomsty na těch, kteří z něj udělali chladnokrevného vraha.`,
category: [
'Drama',
'Akcia'
],
directors: ['Jesse V. Johnson'],
actors: [
'Scott Adkins',
'Craig Fairbrass',
'Thomas Turgoose',
'Nick Moran',
'Kierston Wareing',
'Leo Gregory',
'Mark Strange',
'Luke LaFontaine',
'Beau Fowler',
'Dan Styles',
'Christopher Sciueref',
'Matt Routledge',
'Jane Thorne',
'Louis Mandylor',
'Terence Maynard',
'Greg Burridge',
'Michael Higgs',
'Damian Gallagher',
'Daniel Adegboyega',
'John Ioannou',
'Sofie Golding-Spittle',
'Joe Egan',
'Darren Swain',
'Lee Charles',
'Dominic Kinnaird',
`Ross O'Hennessy`,
'Teresa Mahoney',
'Andrew Dunkelberger',
'Sam Hardy',
'Ivan Moy',
'Mark Sears',
'Phillip Ray Tommy'
],
date: '2019'
},
{
start: '2023-02-07T04:35:00.000Z',
stop: '2023-02-07T05:00:00.000Z',
title: 'Zoom In',
description: 'Film/Kino',
category: ['Hudba a umenie', 'Film'],
date: '2010'
},
{
start: '2023-02-07T09:10:00.000Z',
stop: '2023-02-07T11:00:00.000Z',
title: 'Studentka',
description: 'Ambiciózní vysokoškolačka Valentina (Sophie Marceau) studuje literaturu na pařížské Sorbonně a právě se připravuje k závěrečným zkouškám. Žádný odpočinek, žádné volno, žádné večírky, téměř žádný spánek a především a hlavně ... žádná láska! Věří, že jedině tak obstojí před zkušební komisí. Jednoho dne se však odehraje něco, s čím nepočítala. Potká charismatického hudebníka Neda - a bláznivě se zamiluje. V tuto chvíli stojí před osudovým rozhodnutím: zahodí roky obrovského studijního nasazení, nebo odmítne lásku? Nebo se snad dá obojí skloubit dohromady?',
category: ['Film', 'Komédia'],
actors: [
"Sophie Marceauová",
"Vincent Lindon",
"Elisabeth Vitali",
"Elena Pompei",
"Jean-Claude Leguay",
"Brigitte Chamarande",
"Christian Pereira",
"Gérard Dacier",
"Roberto Attias",
"Beppe Chierici",
"Nathalie Mann",
"Anne Macina",
"Janine Souchon",
"Virginie Demians",
"Hugues Leforestier",
"Jacqueline Noëlle",
"Marc-André Brunet",
"Isabelle Caubère",
"André Chazel",
"Med Salah Cheurfi",
"Guillaume Corea",
"Eric Denize",
"Gilles Gaston-Dreyfuss",
"Benoît Gourley",
"Marc Innocenti",
"Najim Laouriga",
"Laurent Ledermann",
"Philippe Maygal",
"Dominique Pifarely",
"Ysé Tran"
],
directors: [
"Francis De Gueltz",
"Dominique Talmon",
"Claude Pinoteau"
],
date: '1988'
},
{
start: '2023-02-07T16:05:00.000Z',
stop: '2023-02-07T17:45:00.000Z',
title: 'Zilionáři',
description:
'David (Zach Galifianakis) je nekomplikovaný muž, který uvízl v monotónním životě. Den co den usedá za volant svého obrněného automobilu, aby odvážel obrovské sumy peněz jiných lidí. Jediným vzrušujícím momentem v jeho životě je flirtování s kolegyní Kelly (Kristen Wiig), která ho však brzy zatáhne do těžko uvěřitelného dobrodružství. Skupinka nepříliš inteligentních loserů, pod vedením Steva (Owen Wilson), plánuje vyloupit banku a David jim v tom má samozřejmě pomoci. Navzdory absolutně amatérskému plánu se ale stane nemožné a oni mají najednou v kapse 17 miliónů dolarů. A protože tato partička je opravdu bláznivá, začne je hned ve velkém roztáčet. Peníze létají vzduchem za luxusní a kolikrát i zbytečné věci, ale nedochází jim, že pro policii tak zanechávají jasné stopy...',
category: ['Drama', 'Akcia'],
actors: [
"Zach Galifianakis",
"Kristen Wiigová",
"Owen Wilson",
"Kate McKinnon",
"Leslie Jones",
"Jason Sudeikis",
"Ross Kimball",
"Devin Ratray",
"Mary Elizabeth Ellisová",
"Jon Daly",
"Ken Marino",
"Daniel Zacapa",
"Tom Werme",
"Njema Williams",
"Nils Cruz",
"Michael Fraguada",
"Christian Gonzalez",
"Candace Blanchard",
"Karsten Friske",
"Dallas Edwards",
"Barry Ratcliffe",
"Shelton Grant",
"Laura Palka",
"Reegus Flenory",
"Wynn Reichert",
"Jill Jane Clements",
"Joseph S. Wilson",
"Jee An",
"Rhoda Griffisová",
"Nicole Dupre Sobchack"
],
directors: [
"Scott August",
"Richard L. Fox",
"Michelle Malley-Campos",
"Sebastian Mazzola",
"Steven Ritzi",
"Pete Waterman",
"Jared Hess"
],
date: '2016'
}
])
done()
})
.catch(done)
})
it('can handle empty guide', done => {
parser({
content: `[{"type":"PATH_PARAM","code":"period","reason":"INVALID"}]`,
channel,
date
})
.then(result => {
expect(result).toMatchObject([])
done()
})
.catch(done)
})