From b98a31c99ebb993ce0e543e95267026892f74091 Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Fri, 17 Jan 2025 01:38:56 +0300 Subject: [PATCH 1/7] Fix linter issues --- sites/rikstv.no/readme.md | 42 +++---- sites/rikstv.no/rikstv.no.channels.xml | 166 ++++++++++++------------- sites/rikstv.no/rikstv.no.config.js | 148 +++++++++++----------- sites/rikstv.no/rikstv.no.test.js | 138 ++++++++++---------- 4 files changed, 252 insertions(+), 242 deletions(-) diff --git a/sites/rikstv.no/readme.md b/sites/rikstv.no/readme.md index 31eb0b38..463a3282 100644 --- a/sites/rikstv.no/readme.md +++ b/sites/rikstv.no/readme.md @@ -1,21 +1,21 @@ -# rikstv.no - -https://play.rikstv.no/tv-guide - -### Download the guide - -```sh -npm run grab --- --site=rikstv.no -``` - -### Update channel list - -```sh -npm run channels:parse --- --config=./sites/rikstv.no/rikstv.no.config.js --output=./sites/rikstv.no/rikstv.no.channels.xml -``` - -### Test - -```sh -npm test --- rikstv.no -``` +# rikstv.no + +https://play.rikstv.no/tv-guide + +### Download the guide + +```sh +npm run grab --- --site=rikstv.no +``` + +### Update channel list + +```sh +npm run channels:parse --- --config=./sites/rikstv.no/rikstv.no.config.js --output=./sites/rikstv.no/rikstv.no.channels.xml +``` + +### Test + +```sh +npm test --- rikstv.no +``` diff --git a/sites/rikstv.no/rikstv.no.channels.xml b/sites/rikstv.no/rikstv.no.channels.xml index 96aebc97..8e9e46c9 100644 --- a/sites/rikstv.no/rikstv.no.channels.xml +++ b/sites/rikstv.no/rikstv.no.channels.xml @@ -1,83 +1,83 @@ - - - BBC News - Discovery - TLC - Disney Channel - Eurosport 1 - FEM - Frikanalen - REX - National Geographic - NRK Super/3 - NRK1 - NRK1 Tegnspråk - NRK2 - SVT1 - TV 2 Livsstil - TV 2 Direkte - TV 2 Nyheter - TV 2 Zebra - TV3 - TVNorge - TV3+ - Visjon Norge - VOX - Animal Planet - BBC Nordic - TV6 - History Channel - Eurosport Norge - Nick Jr. - Nickelodeon - TV 2 Danmark - DR2 - DR1 - SVT2 - TV4 - CNN - Discovery Science - Investigation Discovery - Norway Live - V Sport + - V Sport 1 - V Sport 2 - V Sport 3 - Hits - Stars - SF-kanalen - TV 2 Sport 1 - TV 2 Sport 2 - Sky News - CNBC - Deutsche Welle - France 24 - NRK1 Sørlandet - NRK1 Nordland - NRK1 Midtnytt - NRK1 Vestfold og Telemark - NRK1 Vestlandsrevyen - NRK1 Nordnytt - NRK1 Innlandet - MTV00s - TV Nord - Travel Channel - Food Network - Euronews - Auto Motor og Sport TV - Rikstoto Direkte - TV Øst - NRK1 Rogaland - NRK1 Møre og Romsdal - NRK1 Lydtekst - NRK2 Lydtekst - NRK3 Super Lydtekst - Heim TV - V sport golf - NRK1 Underteksting - NRK2 Underteksting - Naturkanal1 - V Film Action - V Film Premiere - V Series - + + + BBC News + Discovery + TLC + Disney Channel + Eurosport 1 + FEM + Frikanalen + REX + National Geographic + NRK Super/3 + NRK1 + NRK1 Tegnspråk + NRK2 + SVT1 + TV 2 Livsstil + TV 2 Direkte + TV 2 Nyheter + TV 2 Zebra + TV3 + TVNorge + TV3+ + Visjon Norge + VOX + Animal Planet + BBC Nordic + TV6 + History Channel + Eurosport Norge + Nick Jr. + Nickelodeon + TV 2 Danmark + DR2 + DR1 + SVT2 + TV4 + CNN + Discovery Science + Investigation Discovery + Norway Live + V Sport + + V Sport 1 + V Sport 2 + V Sport 3 + Hits + Stars + SF-kanalen + TV 2 Sport 1 + TV 2 Sport 2 + Sky News + CNBC + Deutsche Welle + France 24 + NRK1 Sørlandet + NRK1 Nordland + NRK1 Midtnytt + NRK1 Vestfold og Telemark + NRK1 Vestlandsrevyen + NRK1 Nordnytt + NRK1 Innlandet + MTV00s + TV Nord + Travel Channel + Food Network + Euronews + Auto Motor og Sport TV + Rikstoto Direkte + TV Øst + NRK1 Rogaland + NRK1 Møre og Romsdal + NRK1 Lydtekst + NRK2 Lydtekst + NRK3 Super Lydtekst + Heim TV + V sport golf + NRK1 Underteksting + NRK2 Underteksting + Naturkanal1 + V Film Action + V Film Premiere + V Series + diff --git a/sites/rikstv.no/rikstv.no.config.js b/sites/rikstv.no/rikstv.no.config.js index 29c64be7..b897473b 100644 --- a/sites/rikstv.no/rikstv.no.config.js +++ b/sites/rikstv.no/rikstv.no.config.js @@ -1,72 +1,76 @@ -const dayjs = require('dayjs') -const utc = require('dayjs/plugin/utc') -const axios = require('axios') - -dayjs.extend(utc) - -module.exports = { - site: 'rikstv.no', - days: 3, - request: { - cache: { - ttl: 60 * 60 * 1000 // 1 hour - } - }, - url({ channel, date }) { - return `https://play.rikstv.no/api/content-search/1/channel/${channel.site_id}/epg/${date.format('YYYY-MM-DD')}` - }, - parser: function ({ content }) { - let data - try { - data = JSON.parse(content) - } catch (error) { - console.error('Error parsing JSON:', error) - return [] - } - - const programs = [] - - if (data && Array.isArray(data)) { - data.forEach(item => { - if (!item) return - //const start = dayjs.utc(item.broadcastedTime) - //const stop = dayjs.utc(item.broadcastedTimeEnd) - - programs.push({ - title: item.seriesName, - sub_title: item.name, - description: item.description || item.synopsis, - season: item.season || null, - episode: item.episode || null, - category: item.genres, - actors: item.actors, - directors: item.director || item.directors, - icon: item.imagePackUri, - start: item.broadcastedTime, - stop: item.broadcastedTimeEnd - }) - }) - } - - return programs - }, - async channels() { - try { - const response = await axios.get('https://play.rikstv.no/api/content-search/1/channel?includePrograms=false') - if (!response.data || !Array.isArray(response.data)) { - console.error('Error: No channels data found') - return [] - } - return response.data.map(item => { - return { - lang: 'no', - site_id: item.channelId, - name: item.serviceName - } - }) - } catch (error) { - console.error('Error fetching channels:', error) - return [] - } - } -} +const dayjs = require('dayjs') +const utc = require('dayjs/plugin/utc') +const axios = require('axios') + +dayjs.extend(utc) + +module.exports = { + site: 'rikstv.no', + days: 3, + request: { + cache: { + ttl: 60 * 60 * 1000 // 1 hour + } + }, + url({ channel, date }) { + return `https://play.rikstv.no/api/content-search/1/channel/${ + channel.site_id + }/epg/${date.format('YYYY-MM-DD')}` + }, + parser: function ({ content }) { + let data + try { + data = JSON.parse(content) + } catch (error) { + console.error('Error parsing JSON:', error) + return [] + } + + const programs = [] + + if (data && Array.isArray(data)) { + data.forEach(item => { + if (!item) return + //const start = dayjs.utc(item.broadcastedTime) + //const stop = dayjs.utc(item.broadcastedTimeEnd) + + programs.push({ + title: item.seriesName, + sub_title: item.name, + description: item.description || item.synopsis, + season: item.season || null, + episode: item.episode || null, + category: item.genres, + actors: item.actors, + directors: item.director || item.directors, + icon: item.imagePackUri, + start: item.broadcastedTime, + stop: item.broadcastedTimeEnd + }) + }) + } + + return programs + }, + async channels() { + try { + const response = await axios.get( + 'https://play.rikstv.no/api/content-search/1/channel?includePrograms=false' + ) + if (!response.data || !Array.isArray(response.data)) { + console.error('Error: No channels data found') + return [] + } + return response.data.map(item => { + return { + lang: 'no', + site_id: item.channelId, + name: item.serviceName + } + }) + } catch (error) { + console.error('Error fetching channels:', error) + return [] + } + } +} diff --git a/sites/rikstv.no/rikstv.no.test.js b/sites/rikstv.no/rikstv.no.test.js index b37143e2..ce0f0959 100644 --- a/sites/rikstv.no/rikstv.no.test.js +++ b/sites/rikstv.no/rikstv.no.test.js @@ -1,66 +1,72 @@ -const { parser, url } = require('./rikstv.no.config.js') -const dayjs = require('dayjs') -const utc = require('dayjs/plugin/utc') -const customParseFormat = require('dayjs/plugin/customParseFormat') - -dayjs.extend(customParseFormat) -dayjs.extend(utc) - -const date = dayjs.utc('2025-01-14', 'YYYY-MM-DD').startOf('d') -const channel = { - site_id: '47', - xmltv_id: 'NRK1.no' -} - -describe('rikstv.no Module Tests', () => { - it('can generate valid url', () => { - expect(url({ date, channel })).toBe(`https://play.rikstv.no/api/content-search/1/channel/${channel.site_id}/epg/${date.format('YYYY-MM-DD')}`) - }) - - it('can parse response', () => { - const content = JSON.stringify([ - { - seriesName: 'Vakre og ville Oman', - name: 'Vakre og ville Oman', - description: 'Oman er eit arabisk skattkammer av unike habitat og variert dyreliv. Rev, kvalhai, reptil og skjelpadder er blant skapningane du finn her.', - season: 1, - episode: 1, - genres: ['Dokumentar', 'Fakta', 'Natur'], - actors: ['Gergana Muskalla'], - director: 'Stefania Muller', - imagePackUri: 'https://imageservice.rikstv.no/hash/EC206C374F42287C0BDF850A7D3CB4D3.jpg', - broadcastedTime: '2025-01-13T23:00:00Z', - broadcastedTimeEnd: '2025-01-13T23:55:00Z' - } - ]) - - const result = parser({ content }).map(p => { - p.start = dayjs(p.start).toISOString() - p.stop = dayjs(p.stop).toISOString() - return p - }) - - expect(result).toMatchObject([ - { - title: 'Vakre og ville Oman', - sub_title: 'Vakre og ville Oman', - description: 'Oman er eit arabisk skattkammer av unike habitat og variert dyreliv. Rev, kvalhai, reptil og skjelpadder er blant skapningane du finn her.', - season: 1, - episode: 1, - category: ['Dokumentar', 'Fakta', 'Natur'], - actors: ['Gergana Muskalla'], - directors: 'Stefania Muller', - icon: 'https://imageservice.rikstv.no/hash/EC206C374F42287C0BDF850A7D3CB4D3.jpg', - start: '2025-01-13T23:00:00.000Z', - stop: '2025-01-13T23:55:00.000Z' - } - ]) - }) - - it('can handle empty guide', () => { - const result = parser({ - content: '[]' - }) - expect(result).toMatchObject([]) - }) -}) +const { parser, url } = require('./rikstv.no.config.js') +const dayjs = require('dayjs') +const utc = require('dayjs/plugin/utc') +const customParseFormat = require('dayjs/plugin/customParseFormat') + +dayjs.extend(customParseFormat) +dayjs.extend(utc) + +const date = dayjs.utc('2025-01-14', 'YYYY-MM-DD').startOf('d') +const channel = { + site_id: '47', + xmltv_id: 'NRK1.no' +} + +describe('rikstv.no Module Tests', () => { + it('can generate valid url', () => { + expect(url({ date, channel })).toBe( + `https://play.rikstv.no/api/content-search/1/channel/${channel.site_id}/epg/${date.format( + 'YYYY-MM-DD' + )}` + ) + }) + + it('can parse response', () => { + const content = JSON.stringify([ + { + seriesName: 'Vakre og ville Oman', + name: 'Vakre og ville Oman', + description: + 'Oman er eit arabisk skattkammer av unike habitat og variert dyreliv. Rev, kvalhai, reptil og skjelpadder er blant skapningane du finn her.', + season: 1, + episode: 1, + genres: ['Dokumentar', 'Fakta', 'Natur'], + actors: ['Gergana Muskalla'], + director: 'Stefania Muller', + imagePackUri: 'https://imageservice.rikstv.no/hash/EC206C374F42287C0BDF850A7D3CB4D3.jpg', + broadcastedTime: '2025-01-13T23:00:00Z', + broadcastedTimeEnd: '2025-01-13T23:55:00Z' + } + ]) + + const result = parser({ content }).map(p => { + p.start = dayjs(p.start).toISOString() + p.stop = dayjs(p.stop).toISOString() + return p + }) + + expect(result).toMatchObject([ + { + title: 'Vakre og ville Oman', + sub_title: 'Vakre og ville Oman', + description: + 'Oman er eit arabisk skattkammer av unike habitat og variert dyreliv. Rev, kvalhai, reptil og skjelpadder er blant skapningane du finn her.', + season: 1, + episode: 1, + category: ['Dokumentar', 'Fakta', 'Natur'], + actors: ['Gergana Muskalla'], + directors: 'Stefania Muller', + icon: 'https://imageservice.rikstv.no/hash/EC206C374F42287C0BDF850A7D3CB4D3.jpg', + start: '2025-01-13T23:00:00.000Z', + stop: '2025-01-13T23:55:00.000Z' + } + ]) + }) + + it('can handle empty guide', () => { + const result = parser({ + content: '[]' + }) + expect(result).toMatchObject([]) + }) +}) From 1dd640ccf6a9ab6caec53da1c312de902ee4208c Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Fri, 17 Jan 2025 01:39:14 +0300 Subject: [PATCH 2/7] Create content.html --- sites/antennaeurope.gr/__data__/content.html | 1043 ++++++++++++++++++ 1 file changed, 1043 insertions(+) create mode 100644 sites/antennaeurope.gr/__data__/content.html diff --git a/sites/antennaeurope.gr/__data__/content.html b/sites/antennaeurope.gr/__data__/content.html new file mode 100644 index 00000000..cbef3ba8 --- /dev/null +++ b/sites/antennaeurope.gr/__data__/content.html @@ -0,0 +1,1043 @@ + +[endif]-->[endif]--> + + + + + + + + Πρόγραμμα + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ +
+
+ +
+
+
+
    + +
    +
    +
    + + + + +
    +
    +
    +
    + +
    Άρχισε να πληκτρολογείς οτιδήποτε
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +

    Τρίτη
    21/1

    +
    +
    +
    +
    +
    05:45 L
    +
    + ΚΑΛΗΜΕΡΑ ΕΛΛΑΔΑ + +
    +
    +
    +
    09:50 L
    +
    + ΤΟ ΠΡΩΙΝΟ + +
    +
    +
    +
    13:00 L
    +
    + ANT1 NEWS - 13:00 + +
    +
    +
    +
    13:40
    +
    + ΜΠΡΟΥΣΚΟ + +
    +
    +
    +
    15:00
    +
    + ΡΟΥΚ ΖΟΥΚ + +
    +
    +
    +
    16:00
    +
    + ΓΥΝΑΙΚΑ ΧΩΡΙΣ ΟΝΟΜΑ + +
    +
    +
    +
    16:45
    +
    + ΑΓΡΙΕΣ ΜΕΛΙΣΣΕΣ + +
    +
    +
    +
    17:45
    +
    + 5 X 5 +
    +
    +
    +
    18:45 L
    +
    + ANT1 NEWS + +
    +
    +
    +
    20:00
    +
    + ΟΙ BOOMERS + +
    +
    +
    +
    21:00
    +
    + ΕΛΛΗΝΙΚΗ ΣΕΙΡΑ + +
    +
    +
    +
    22:30
    +
    + ΕΛΛΗΝΙΚΗ ΣΕΙΡΑ + +
    +
    +
    +
    00:00
    +
    + THE 2NIGHT SHOW + +
    +
    +
    +
    01:45
    +
    + ΓΥΝΑΙΚΑ ΧΩΡΙΣ ΟΝΟΜΑ + +
    +
    +
    +
    02:30
    +
    + ΑΓΡΙΕΣ ΜΕΛΙΣΣΕΣ + +
    +
    +
    +
    03:30
    +
    + ΤΟ ΠΡΩΙΝΟ + +
    +
    +
    +
    +
    +
    +
    +
    + +

    Δες επίσης

    +
    +
    +
    +
    +
    +
    +

    Νέο Πρόγραμμα

    + +
    + + +
    + + + + + + + + + + + + + + From cffbd24b0a6a9b17b4fb2d45b4204500e96d20ef Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Fri, 17 Jan 2025 01:39:28 +0300 Subject: [PATCH 3/7] Create no_content.html --- .../antennaeurope.gr/__data__/no_content.html | 877 ++++++++++++++++++ 1 file changed, 877 insertions(+) create mode 100644 sites/antennaeurope.gr/__data__/no_content.html diff --git a/sites/antennaeurope.gr/__data__/no_content.html b/sites/antennaeurope.gr/__data__/no_content.html new file mode 100644 index 00000000..bfa3c89e --- /dev/null +++ b/sites/antennaeurope.gr/__data__/no_content.html @@ -0,0 +1,877 @@ + +[endif]-->[endif]--> + + + + + + + + Πρόγραμμα + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    +
    +
      + +
      +
      +
      + + + + +
      +
      +
      +
      + +
      Άρχισε να πληκτρολογείς οτιδήποτε
      +
      +
      +
      +
      +
      +
      + +
      + +

      Δες επίσης

      +
      +
      +
      +
      +
      +
      +

      Νέο Πρόγραμμα

      + +
      + + +
      + + + + + + + + + + + + + + From 103b201554a6e9aaddbe4aaa288acda649739ca9 Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Fri, 17 Jan 2025 01:39:41 +0300 Subject: [PATCH 4/7] Create antennaeurope.gr.test.js --- .../antennaeurope.gr/antennaeurope.gr.test.js | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 sites/antennaeurope.gr/antennaeurope.gr.test.js diff --git a/sites/antennaeurope.gr/antennaeurope.gr.test.js b/sites/antennaeurope.gr/antennaeurope.gr.test.js new file mode 100644 index 00000000..7deb858e --- /dev/null +++ b/sites/antennaeurope.gr/antennaeurope.gr.test.js @@ -0,0 +1,46 @@ +const { parser, url } = require('./antennaeurope.gr.config.js') +const fs = require('fs') +const path = require('path') +const dayjs = require('dayjs') +const utc = require('dayjs/plugin/utc') +const customParseFormat = require('dayjs/plugin/customParseFormat') +dayjs.extend(customParseFormat) +dayjs.extend(utc) + +const date = dayjs.utc('2025-01-21', 'YYYY-MM-DD').startOf('d') + +it('can generate valid url', () => { + expect(url({ date })).toBe('https://www.antennaeurope.gr/el/tvguide.html?date=2025-01-21') +}) + +it('can parse response', () => { + const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.html'), 'utf8') + let results = parser({ content, date }) + results = results.map(p => { + p.start = p.start.toJSON() + p.stop = p.stop.toJSON() + return p + }) + + expect(results.length).toBe(16) + + expect(results[0]).toMatchObject({ + start: '2025-01-21T03:45:00.000Z', + stop: '2025-01-21T07:50:00.000Z', + title: 'ΚΑΛΗΜΕΡΑ ΕΛΛΑΔΑ' + }) + + expect(results[15]).toMatchObject({ + start: '2025-01-22T01:30:00.000Z', + stop: '2025-01-22T02:00:00.000Z', + title: 'ΤΟ ΠΡΩΙΝΟ' + }) +}) + +it('can handle empty guide', () => { + const results = parser({ + date, + content: fs.readFileSync(path.resolve(__dirname, '__data__/no_content.html'), 'utf8') + }) + expect(results).toMatchObject([]) +}) From b8ba5dfe0d2ecdc2e4f7adce8253604b05c6dd32 Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Fri, 17 Jan 2025 01:39:55 +0300 Subject: [PATCH 5/7] Create antennaeurope.gr.config.js --- .../antennaeurope.gr.config.js | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 sites/antennaeurope.gr/antennaeurope.gr.config.js diff --git a/sites/antennaeurope.gr/antennaeurope.gr.config.js b/sites/antennaeurope.gr/antennaeurope.gr.config.js new file mode 100644 index 00000000..982685d9 --- /dev/null +++ b/sites/antennaeurope.gr/antennaeurope.gr.config.js @@ -0,0 +1,59 @@ +const cheerio = require('cheerio') +const dayjs = require('dayjs') +const utc = require('dayjs/plugin/utc') +const timezone = require('dayjs/plugin/timezone') +const customParseFormat = require('dayjs/plugin/customParseFormat') + +dayjs.extend(utc) +dayjs.extend(timezone) +dayjs.extend(customParseFormat) + +module.exports = { + site: 'antennaeurope.gr', + days: 2, + url({ date }) { + return `https://www.antennaeurope.gr/el/tvguide.html?date=${date.format('YYYY-MM-DD')}` + }, + parser({ content, date }) { + const programs = [] + const items = parseItems(content, date) + items.forEach(item => { + const $item = cheerio.load(item) + const prev = programs[programs.length - 1] + let start = parseStart($item, date) + if (prev) { + if (start.isBefore(prev.start)) { + start = start.add(1, 'd') + date = date.add(1, 'd') + } + prev.stop = start + } + const stop = start.add(30, 'm') + programs.push({ + title: parseTitle($item), + start, + stop + }) + }) + + return programs + } +} + +function parseTitle($item) { + return $item('.title').text().trim() +} + +function parseStart($item, date) { + const time = $item('dt.col-time').clone().children().remove().end().text().trim() + + return time + ? dayjs.tz(`${date.format('YYYY-MM-DD')} ${time}`, 'YYYY-MM-DD HH:mm', 'Europe/Athens') + : null +} + +function parseItems(content) { + const $ = cheerio.load(content) + + return $('dl.show').toArray() +} From 52965a6090fd36c9d4d857acdbfe8e2031daac3e Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Fri, 17 Jan 2025 01:40:13 +0300 Subject: [PATCH 6/7] Create antennaeurope.gr.channels.xml --- sites/antennaeurope.gr/antennaeurope.gr.channels.xml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 sites/antennaeurope.gr/antennaeurope.gr.channels.xml diff --git a/sites/antennaeurope.gr/antennaeurope.gr.channels.xml b/sites/antennaeurope.gr/antennaeurope.gr.channels.xml new file mode 100644 index 00000000..485704be --- /dev/null +++ b/sites/antennaeurope.gr/antennaeurope.gr.channels.xml @@ -0,0 +1,4 @@ + + + ANT1 Europe + From 9f4a3c80d2df9bc87ff705639ea264cc8b6ca26d Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Fri, 17 Jan 2025 01:40:27 +0300 Subject: [PATCH 7/7] Create readme.md --- sites/antennaeurope.gr/readme.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 sites/antennaeurope.gr/readme.md diff --git a/sites/antennaeurope.gr/readme.md b/sites/antennaeurope.gr/readme.md new file mode 100644 index 00000000..69d0b2d6 --- /dev/null +++ b/sites/antennaeurope.gr/readme.md @@ -0,0 +1,15 @@ +# antennaeurope.gr + +https://www.antennaeurope.gr/el/tvguide.html + +### Download the guide + +```sh +npm run grab --- --site=antennaeurope.gr +``` + +### Test + +```sh +npm test --- antennaeurope.gr +```