mirror of
https://github.com/iptv-org/epg.git
synced 2025-05-10 09:00:07 -04:00
commit
d9b3fe8d07
5 changed files with 272 additions and 0 deletions
1
sites/digea.gr/__data__/content.json
Normal file
1
sites/digea.gr/__data__/content.json
Normal file
File diff suppressed because one or more lines are too long
95
sites/digea.gr/digea.gr.channels.xml
Normal file
95
sites/digea.gr/digea.gr.channels.xml
Normal file
|
@ -0,0 +1,95 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<channels>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="3100">ALPHA</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="3200">SKAI</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="3300">ANT1</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="3400">OPEN BEYOND</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="3500">STAR</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="3600">MEGA</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="3700">ΜΑΚΕΔΟΝΙΑ ΤV</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4020">ΔΕΛΤΑ ΤΗΛΕΟΡΑΣΗ</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4030">ΔΙΚΤΥΟ TV</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4040">ENA CHANNEL</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4050">ΕΠΙΛΟΓΕΣ</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4060">ΘΡΑΚΗ ΝΕΤ</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4070">ΟΡΕΣΤΙΑΔΑ</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4080">ALFA</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4090">CENTER TV</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4100">NEXT TV</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4110">SMILE (Θράκης)</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4120">STAR ΒOΡΕΙΟΥ ΕΛΛΑΔΟΣ</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4170">ΛΥΔΙΑ</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4240">ΒΕΡΓΙΝΑ</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4260">DION ΤΗΛΕΟΡΑΣΗ Κεντρικής Μακεδονίας</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4270">EURO TV</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4280">EUROPE 1</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4290">GNOMI TV</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4300">TV100 ΘΕΣΣΑΛΟΝΙΚΗ</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4310">EGNATIA THLEORASI</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4320">PELLA TV</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4360">AE CHANNEL Thessaloniki</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4370">NICKELODEON+</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4380">4E</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4450">ΛΥΧΝΟΣ</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4460">ΜΕΣΟΓΕΙΟΣ ΤΗΛΕΟΡΑΣΗ</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4470">ΟΡΤ TELEVISION</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4490">ΑRT</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4510">BEST</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4520">IONIAN</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4530">LEPANTO ΤΗΛΕΟΡΑΣΗ</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4540">Patra tv</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4550">RTP ΚΕΝΤΡΟ</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4560">SUPER</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4670">ΘΕΣΣΑΛΙΑ ΤΗΛΕΟΡΑΣΗ</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4680">ASTRA TV</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4690">SMILE +</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4700">TRT</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4710">FORMedia TV</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4800">ENA TV KE</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4810">STAR K.E.</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4830">E ΤV</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4900">ΑΡΤ</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4910">ALERT</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4920">ATTICA</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4930">BLUE SKY</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4940">One Channel</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4950">EXTRA</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="4990">A.EPSILON</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="5000">ACTION 24</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="5010">HIGH TV</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="5020">KONTRA</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="5030">MAD</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="5040">NICKELODEON</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="5050">RISE TV</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="5060">SMILE</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="5130">ΑΛΗΘΕΙΑ TV</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="5140">ΠΑΤΡΙΔΑ TV</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="5150">AEOLOS</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="5300">OCIOC ΝΙΚΑΝΩΡ</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="5310">DIKTYO1</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="5320">FLASH TV</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="5330">WEST</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="5350">TOP CHANNEL</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="5420">ΑΧΕΛΩΟΣ</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="5430">ΒΗΜΑ ΤΗΛΕΟΡΑΣΗ</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="5440">ΗΠΕΙΡΟΣ TV1</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="5450">ART TV</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="5460">CORFU TV</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="5470">ΙTV</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="5480">START</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="5570">TeleKPHTH</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="5580">ΚΡΗΤΗTV</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="5590">KΡHTH1</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="5600">ΝΕΑ Τηλεόραση Κρήτης</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="5610">TV CRETA</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="5620">NOTOS TV</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="5630">SITIA TV</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="5720">ΑΙΓΑΙΟ</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="5730">ΣΑΤ</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="5740">IRIDA</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="5750">KOS TV</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="5760">TV KOSMOS</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="5770">ΘΑΡΡΙ</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="5850">SYROS TV1</channel>
|
||||||
|
<channel site="digea.gr" lang="el" xmltv_id="" site_id="5860">VOLCANO</channel>
|
||||||
|
</channels>
|
86
sites/digea.gr/digea.gr.config.js
Normal file
86
sites/digea.gr/digea.gr.config.js
Normal file
|
@ -0,0 +1,86 @@
|
||||||
|
const axios = require('axios')
|
||||||
|
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: 'digea.gr',
|
||||||
|
days: 2,
|
||||||
|
url: 'https://www.digea.gr/el/api/epg/get-events',
|
||||||
|
request: {
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'content-type': 'application/x-www-form-urlencoded; charset=UTF-8'
|
||||||
|
},
|
||||||
|
data({ date }) {
|
||||||
|
const data = new URLSearchParams()
|
||||||
|
data.append('action', 'get_events')
|
||||||
|
data.append('date', date.format('YYYY-M-D'))
|
||||||
|
|
||||||
|
return data
|
||||||
|
}
|
||||||
|
},
|
||||||
|
parser({ content, channel }) {
|
||||||
|
let programs = []
|
||||||
|
let items = parseItems(content, channel)
|
||||||
|
items.forEach(item => {
|
||||||
|
programs.push({
|
||||||
|
title: item.title,
|
||||||
|
description: item.long_synopsis,
|
||||||
|
start: parseStart(item),
|
||||||
|
stop: parseStop(item)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
return programs
|
||||||
|
},
|
||||||
|
async channels() {
|
||||||
|
const data = await axios
|
||||||
|
.post(
|
||||||
|
'https://www.digea.gr/el/api/epg/get-channels',
|
||||||
|
new URLSearchParams({
|
||||||
|
action: 'get_chanels',
|
||||||
|
lang: 'el'
|
||||||
|
}),
|
||||||
|
{
|
||||||
|
headers: {
|
||||||
|
'content-type': 'application/x-www-form-urlencoded; charset=UTF-8'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
.then(r => r.data)
|
||||||
|
.catch(console.error)
|
||||||
|
|
||||||
|
return data.map(channel => {
|
||||||
|
return {
|
||||||
|
lang: 'el',
|
||||||
|
site_id: channel.id,
|
||||||
|
name: channel.name
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function parseStart(item) {
|
||||||
|
return dayjs.tz(item.actual_time, 'YYYY-MM-DD HH:mm:ss', 'Europe/Athens')
|
||||||
|
}
|
||||||
|
|
||||||
|
function parseStop(item) {
|
||||||
|
return dayjs.tz(item.end_time, 'YYYY-MM-DD HH:mm:ss', 'Europe/Athens')
|
||||||
|
}
|
||||||
|
|
||||||
|
function parseItems(content, channel) {
|
||||||
|
try {
|
||||||
|
const data = JSON.parse(content)
|
||||||
|
if (!Array.isArray(data)) return []
|
||||||
|
|
||||||
|
return data.filter(p => p.channel_id === channel.site_id)
|
||||||
|
} catch {
|
||||||
|
return []
|
||||||
|
}
|
||||||
|
}
|
69
sites/digea.gr/digea.gr.test.js
Normal file
69
sites/digea.gr/digea.gr.test.js
Normal file
|
@ -0,0 +1,69 @@
|
||||||
|
const { parser, url, request } = require('./digea.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-17', 'YYYY-MM-DD').startOf('d')
|
||||||
|
const channel = {
|
||||||
|
site_id: '1100',
|
||||||
|
xmltv_id: 'AlphaTV.gr'
|
||||||
|
}
|
||||||
|
|
||||||
|
it('can generate valid url', () => {
|
||||||
|
expect(url).toBe('https://www.digea.gr/el/api/epg/get-events')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('can generate valid request method', () => {
|
||||||
|
expect(request.method).toBe('POST')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('can generate valid request headers', () => {
|
||||||
|
expect(request.headers).toMatchObject({
|
||||||
|
'content-type': 'application/x-www-form-urlencoded; charset=UTF-8'
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
it('can generate valid request data', () => {
|
||||||
|
const data = request.data({ date })
|
||||||
|
|
||||||
|
expect(data.get('action')).toBe('get_events')
|
||||||
|
expect(data.get('date')).toBe('2025-1-17')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('can parse response', () => {
|
||||||
|
const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.json'), 'utf8')
|
||||||
|
let results = parser({ content, channel })
|
||||||
|
results = results.map(p => {
|
||||||
|
p.start = p.start.toJSON()
|
||||||
|
p.stop = p.stop.toJSON()
|
||||||
|
return p
|
||||||
|
})
|
||||||
|
|
||||||
|
expect(results.length).toBe(19)
|
||||||
|
expect(results[0]).toMatchObject({
|
||||||
|
start: '2025-01-16T23:30:00.000Z',
|
||||||
|
stop: '2025-01-17T01:30:00.000Z',
|
||||||
|
title: '[K12] Το Ξεκαθάρισμα (A Score To Settle)',
|
||||||
|
description:
|
||||||
|
"Περιπέτεια αμερικανικής παραγωγής 2019 [Το πρόγραμμα περιέχει σκηνές σεξουαλικές, βίας, χρήσης ναρκωτικών κι άλλων εξαρτησιογόνων ουσιών και απρεπή εκφορά λόγου]. Ο Φρανκ απελευθερώνεται από τη φυλακή πολλά χρόνια μετά αφού κατηγορήθηκε για ένα έγκλημα που δεν διέπραξε. Τώρα, ελεύθερος, ξεκινά μια πορεία εκδίκησης εναντίον των ανθρώπων των οποίων οι πράξεις τον έστειλαν στη φυλακή. Ηθοποιοί: Νίκολας Κέιτζ, Μπέντζαμιν Μπρατ, Νόα Λε Γκρος, Καρολίνα Γουίντρα. Σενάριο: Σον Κου, Τζον Νιούμαν. Σκηνοθεσία: Σον Κου. Διάρκεια: 94'. "
|
||||||
|
})
|
||||||
|
expect(results[18]).toMatchObject({
|
||||||
|
start: '2025-01-17T21:30:00.000Z',
|
||||||
|
stop: '2025-01-17T23:30:00.000Z',
|
||||||
|
title: '[K8] Βασικά Καλησπέρα Σας',
|
||||||
|
description:
|
||||||
|
"Κωμωδία ελληνικής παραγωγής 1982. Δύο πειρατικοί ραδιοσταθμοί, εκ των οποίων ο ένας βάζει λαϊκά άσματα και ο άλλος ροκ μουσική, ανταγωνίζονται για την πρωτιά στην ακροαματικότητα. Ο ανταγωνισμός γίνεται βαθμηδόν όλο και πιο σκληρός, αλλά ξάφνου τα πράγματα αλλάζουν ρότα καθώς ο μεγαλοδύναμος έρως παρεμβαίνει και κάνει το θαύμα του. Παίζουν: Στάθης Ψάλτης, Πάνος Μιχαλόπουλος, Σταμάτης Γαρδέλης, Έφη Πίκουλα, Γιώργος Ρήγας, Γιάννης Μποσταντζόγλου, Σοφία Αλιμπέρτη, Καίτη Φίνου. Σκηνοθεσία - Σενάριο: Γιάννης Δαλιανίδης. Διάρκεια: 89'."
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
it('can handle empty guide', () => {
|
||||||
|
const results = parser({
|
||||||
|
content: '[]'
|
||||||
|
})
|
||||||
|
|
||||||
|
expect(results).toMatchObject([])
|
||||||
|
})
|
21
sites/digea.gr/readme.md
Normal file
21
sites/digea.gr/readme.md
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
# digea.gr
|
||||||
|
|
||||||
|
https://www.digea.gr/el/tileoptikoi-stathmoi/ilektronikos-odigos-programmatos
|
||||||
|
|
||||||
|
### Download the guide
|
||||||
|
|
||||||
|
```sh
|
||||||
|
npm run grab --- --site=digea.gr
|
||||||
|
```
|
||||||
|
|
||||||
|
### Update channel list
|
||||||
|
|
||||||
|
```sh
|
||||||
|
npm run channels:parse --- --config=./sites/digea.gr/digea.gr.config.js --output=./sites/digea.gr/digea.gr.channels.xml
|
||||||
|
```
|
||||||
|
|
||||||
|
### Test
|
||||||
|
|
||||||
|
```sh
|
||||||
|
npm test --- digea.gr
|
||||||
|
```
|
Loading…
Add table
Add a link
Reference in a new issue