diff --git a/.github/workflows/auto-update.yml b/.github/workflows/auto-update.yml index 7b5cb28b..a14948a0 100644 --- a/.github/workflows/auto-update.yml +++ b/.github/workflows/auto-update.yml @@ -4,6 +4,21 @@ on: schedule: - cron: '0 0 * * *' jobs: + hd-plus_de: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2.3.1 + - name: Install Dependencies + run: npm install + - name: Run EPG Grabber + run: npx epg-grabber --config=sites/hd-plus.de.config.js + - name: Deploy to GitHub Pages + uses: JamesIves/github-pages-deploy-action@4.1.1 + with: + branch: gh-pages + folder: .gh-pages + clean: false astro_com_my: runs-on: ubuntu-latest steps: diff --git a/README.md b/README.md index b67d223e..a5e1df9e 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,7 @@ To load a program guide, all you need to do is copy the link to one of the guide 🇨🇿 Czechiahttps://iptv-org.github.io/epg/guides/m.tv.sms.cz.guide.xml 🇸🇻 El Salvadorhttps://iptv-org.github.io/epg/guides/mi.tv.guide.xml 🇫🇷 Francehttps://iptv-org.github.io/epg/guides/programme-tv.net.guide.xml + 🇩🇪 Germanyhttps://iptv-org.github.io/epg/guides/hd-plus.de.guide.xml 🇬🇷 Greecehttps://iptv-org.github.io/epg/guides/cosmote.gr.guide.xml 🇬🇹 Guatemalahttps://iptv-org.github.io/epg/guides/mi.tv.guide.xml 🇭🇳 Hondurashttps://iptv-org.github.io/epg/guides/mi.tv.guide.xml diff --git a/sites/hd-plus.de.channels.xml b/sites/hd-plus.de.channels.xml new file mode 100755 index 00000000..52949c4b --- /dev/null +++ b/sites/hd-plus.de.channels.xml @@ -0,0 +1,143 @@ + + + + 1-2-3.tv + 13th Street Deutschland + 3sat + a.tv + allgäu.tv + Anixe HD Serie + ARD-alpha + ARTE Deutsch + AstroTV + ATV + ATV2 + AXN Deutschland + Bayerisches Fernsehen + Bibel TV + Bloomberg TV Europe + Boomerang Deutschland + Cartoon Network Deutschland + Channel 21 + Comedy Central Deutschland + Das Erste + Deluxe Music + Deutsches Musik Fernsehen + Die Neue Zeit TV + Discovery Channel Deutschland + Disney Channel Deutschland + Disney Junior Deutschland + DMAX Deutschland + Donau TV + E! Europe + Euronews Deutsch + Eurosport 1 Germany + EWTN auf Deutsch + Fox Deutschland + Franken Fernsehen + GoldStar TV + GoTV + Heimatkanal + History Deutschland + Hope Channel Deutsch + hr-fernsehen + HSE + HSE Extra + JML Direct TV + Junior + Juwelo + K-TV + Kabel Eins Classics + Kabel Eins Deutschland + KiKA + Kinowelt TV + L-TV + MDR Fernsehen + Motorvision TV + MTV Germany + MTV Hits Europe + MTV Live HD + MTV Music 24 + Mühlviertel TV + münchen.tv + n-tv + National Geographic Deutschland + National Geographic Wild Deutschland + NDR Fernsehen + Nitro Deutschland + NPO 1 + NPO 2 + One + ORF 1 + ORF 2 + ORF III + ORF Sport + + Parlamentsfernsehen des Deutschen Bundestages + pearl.tv + Phoenix + ProSieben Deutschland + ProSieben Maxx Deutschland + Puls 4 + QVC Deutschland + QVC Zwei + rbb Fernsehen + Regio TV + RFO + rheinmaintv + RiC + Romance TV Deutschland + RTL Crime Deutschland + RTL Deutschland + RTL Living Deutschland + RTL Passion Deutschland + RTL Zwei Deutschland + Sat.1 Deutschland + Sat.1 Emotions + Sat.1 Gold Deutschland + Servus TV Deutschland + Sixx Deutschland + Sky Atlantic + Sky Cinema + Sky Cinema +24 + Sky Cinema Action + Sky Cinema Comedy + Sky Cinema Hits + Sky Cinema Nostalgie + Sky Krimi + Sky Sport 1 + Sky Sport 2 + Sky Sport Austria 1 + Sky Sport Bundesliga 1 + Sky Sport Bundesliga 2 + Sky Sport Bundesliga 3 + Sky Sport Bundesliga 4 + Sky Sport News + sonnenklar.TV + Sport 1+ + Sport1 + Sportdigital + SR Fernsehen + SRF 1 + SRF zwei + Stingray Classica + Super RTL Deutschland + SWR Fernsehen + Syfy Deutschland + Tagesschau24 + Tele 5 + TLC Germany + TNT Film + TNT Serie + TV Oberfranken + TVA Ostbayern + Universal TV Deutschland + VH1 Classic + Vox Deutschland + WDR Fernsehen + Welt + Welt der Wunder TV + ZDF + ZDFinfo + ZDFneo + + \ No newline at end of file diff --git a/sites/hd-plus.de.config.js b/sites/hd-plus.de.config.js new file mode 100644 index 00000000..513678de --- /dev/null +++ b/sites/hd-plus.de.config.js @@ -0,0 +1,51 @@ +const jsdom = require('jsdom') +const { JSDOM } = jsdom +const dayjs = require('dayjs') +const utc = require('dayjs/plugin/utc') +const customParseFormat = require('dayjs/plugin/customParseFormat') + +dayjs.extend(utc) +dayjs.extend(customParseFormat) + +module.exports = { + lang: 'de', + site: 'hd-plus.de', + channels: 'hd-plus.de.channels.xml', + output: '.gh-pages/guides/hd-plus.de.guide.xml', + url({ date, channel }) { + const now = dayjs() + const day = now.diff(date, 'd') + + return `https://www.hd-plus.de/epg/channel/${channel.site_id}?d=${day}` + }, + logo({ content }) { + const dom = new JSDOM(content) + const img = dom.window.document.querySelector('header > img') + + return img ? img.src : null + }, + parser({ content }) { + const dom = new JSDOM(content) + const items = dom.window.document.querySelectorAll('table > tbody > tr') + let programs = [] + items.forEach(item => { + const title = (item.querySelector('td:nth-child(1) > a') || { textContent: '' }).textContent + const fullDate = (item.querySelector('td:nth-child(2)') || { textContent: '' }).textContent + if (title && fullDate) { + const time = fullDate.split(' ').pop() + const start = dayjs.utc(time, 'HH:mm') + + if (programs.length && !programs[programs.length - 1].stop) { + programs[programs.length - 1].stop = start + } + + programs.push({ + title, + start: start.toString() + }) + } + }) + + return programs + } +}