From 1d8423d61adc886daaab3852b23098bae3a76a2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Candela?= Date: Mon, 19 Jan 2026 20:28:54 +0100 Subject: [PATCH 01/10] Fixed movistarplus.es returning 400 errors --- .../movistarplus.es/movistarplus.es.config.js | 141 ++++++++++++------ 1 file changed, 94 insertions(+), 47 deletions(-) diff --git a/sites/movistarplus.es/movistarplus.es.config.js b/sites/movistarplus.es/movistarplus.es.config.js index c58b51901..00930b959 100644 --- a/sites/movistarplus.es/movistarplus.es.config.js +++ b/sites/movistarplus.es/movistarplus.es.config.js @@ -1,6 +1,11 @@ const axios = require('axios') const cheerio = require('cheerio') const dayjs = require('dayjs') +const utc = require('dayjs/plugin/utc') +const timezone = require('dayjs/plugin/timezone') + +dayjs.extend(utc) +dayjs.extend(timezone) module.exports = { site: 'movistarplus.es', @@ -8,35 +13,87 @@ module.exports = { url({ channel, date }) { return `https://www.movistarplus.es/programacion-tv/${channel.site_id}/${date.format('YYYY-MM-DD')}` }, - async parser({ content }) { + request: { + headers: { + 'User-Agent': + 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36', + Accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', + 'Accept-Language': 'es-ES,es;q=0.9,en;q=0.8', + Referer: 'https://www.movistarplus.es/programacion-tv' + }, + maxRedirects: 5 + }, + async parser({ content, date }) { let programs = [] - let items = parseItems(content) - if (!items.length) return programs - const $ = cheerio.load(content) - const programElements = $('div[id^="ele-"]').get() - for (let i = 0; i < items.length; i++) { - const el = items[i] - let description = null + const programDivs = $('div[id^="ele-"]').toArray() - if (programElements[i]) { - const programDiv = $(programElements[i]) - const programLink = programDiv.find('a').attr('href') - - if (programLink) { - const idMatch = programLink.match(/id=(\d+)/) - if (idMatch && idMatch[1]) { - description = await getProgramDescription(programLink).catch(() => null) + for (let i = 0; i < programDivs.length; i++) { + const el = $(programDivs[i]) + + const title = el.find('li.title').text().trim() + if (!title) continue + + const timeText = el.find('li.time').text().trim() + if (!timeText) continue + + const [hours, minutes] = timeText.split(':').map(h => parseInt(h, 10)) + + // Parse time in Spain timezone (Europe/Madrid) + let startDate = dayjs.tz( + `${date.format('YYYY-MM-DD')} ${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`, + 'YYYY-MM-DD HH:mm', + 'Europe/Madrid' + ) + + // If the time is in early morning (before 5 AM), it's the next day + if (hours < 5) { + startDate = startDate.add(1, 'day') + } + + // Calculate end time from next program's start time + let endDate + if (i < programDivs.length - 1) { + const nextEl = $(programDivs[i + 1]) + const nextTimeText = nextEl.find('li.time').text().trim() + if (nextTimeText) { + const [nextHours, nextMinutes] = nextTimeText.split(':').map(h => parseInt(h, 10)) + endDate = dayjs.tz( + `${date.format('YYYY-MM-DD')} ${nextHours.toString().padStart(2, '0')}:${nextMinutes.toString().padStart(2, '0')}`, + 'YYYY-MM-DD HH:mm', + 'Europe/Madrid' + ) + + // If the next time is in early morning (before 5 AM), it's the next day + if (nextHours < 5) { + endDate = endDate.add(1, 'day') + } + + // If end time is still before or same as start time, add another day + if (endDate.isBefore(startDate) || endDate.isSame(startDate)) { + endDate = endDate.add(1, 'day') } } } + // If no end time, use start of next day + if (!endDate) { + endDate = startDate.add(1, 'day').startOf('day') + } + + const programLink = el.find('a').attr('href') + let description = null + + if (programLink) { + description = await getProgramDescription(programLink).catch(() => null) + } + programs.push({ - title: el.item.name, - description: description, - start: dayjs(el.item.startDate), - stop: dayjs(el.item.endDate) + title, + description, + start: startDate, + stop: endDate }) } @@ -44,7 +101,13 @@ module.exports = { }, async channels() { const html = await axios - .get('https://www.movistarplus.es/programacion-tv') + .get('https://www.movistarplus.es/programacion-tv', { + headers: { + 'User-Agent': + 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36', + Accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' + } + }) .then(r => r.data) .catch(console.log) @@ -65,33 +128,17 @@ module.exports = { } } -function parseItems(content) { - try { - const $ = cheerio.load(content) - let scheme = $('script:contains("@type": "ItemList")').html() - scheme = JSON.parse(scheme) - if (!scheme || !Array.isArray(scheme.itemListElement)) return [] - - return scheme.itemListElement - } catch { - return [] - } -} - async function getProgramDescription(programUrl) { - try { - const response = await axios.get(programUrl, { - headers: { - 'Referer': 'https://www.movistarplus.es/programacion-tv/' - } - }) + const response = await axios.get(programUrl, { + headers: { + 'User-Agent': + 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36', + Referer: 'https://www.movistarplus.es/programacion-tv/' + } + }) - const $ = cheerio.load(response.data) - const description = $('.show-content .text p').first().text().trim() || null + const $ = cheerio.load(response.data) + const description = $('.show-content .text p').first().text().trim() || null - return description - } catch (error) { - console.error(`Error fetching description from ${programUrl}:`, error.message) - return null - } + return description } From 73ee487474df2b4d1d28e61ce807b46ed8782a84 Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Wed, 4 Feb 2026 02:03:16 +0300 Subject: [PATCH 02/10] Create vantagetv.ee.test.js --- sites/vantagetv.ee/vantagetv.ee.test.js | 41 +++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 sites/vantagetv.ee/vantagetv.ee.test.js diff --git a/sites/vantagetv.ee/vantagetv.ee.test.js b/sites/vantagetv.ee/vantagetv.ee.test.js new file mode 100644 index 000000000..5db1dd3a9 --- /dev/null +++ b/sites/vantagetv.ee/vantagetv.ee.test.js @@ -0,0 +1,41 @@ +const { parser, url } = require('./vantagetv.ee.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('2026-02-05', 'YYYY-MM-DD').startOf('d') +const channel = { site_id: 'vrock' } + +it('can generate valid url', () => { + expect(url).toBe('http://vantagetv.ee/epg.xml') +}) + +it('can parse response', () => { + const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.xml')) + + const results = parser({ content, channel, date }) + + expect(results.length).toBe(3) + expect(results[0]).toMatchObject({ + title: 'Breakfast with Vantage Rock', + description: 'Get ready for your day with Vantage Rock', + start: '2026-02-05T04:00:00.000Z', + stop: '2026-02-05T08:00:00.000Z' + }) + expect(results[2]).toMatchObject({ + title: 'Rock All Night', + description: 'It might be late, but that's no reason to stop!', + start: '2026-02-05T22:00:00.000Z', + stop: '2026-02-06T04:00:00.000Z' + }) +}) + +it('can handle empty guide', () => { + const results = parser({ content: '' }) + + expect(results).toMatchObject([]) +}) From 6bbfb619b4f0eb4738ce1f5a82d8ed882b7c577b Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Wed, 4 Feb 2026 02:03:27 +0300 Subject: [PATCH 03/10] Create content.xml --- sites/vantagetv.ee/__data__/content.xml | 1069 +++++++++++++++++++++++ 1 file changed, 1069 insertions(+) create mode 100644 sites/vantagetv.ee/__data__/content.xml diff --git a/sites/vantagetv.ee/__data__/content.xml b/sites/vantagetv.ee/__data__/content.xml new file mode 100644 index 000000000..b819412df --- /dev/null +++ b/sites/vantagetv.ee/__data__/content.xml @@ -0,0 +1,1069 @@ + + + + Vantage Music + + + Vantage Dance + + + Vantage Rock + + + Night Videos + + + Breakfast with Vantage Music + + + It's The 80's + + + The 90's + + + Ultimate 2000's + + + Video Mix + + + It's The 80's + + + The 90's + + + Ultimate 2000's + + + brand:new + + + Night Videos + + + Breakfast with Vantage Music + + + It's The 80's + + + The 90's + + + Ultimate 2000's + + + Video Mix + + + It's The 80's + + + The 90's + + + Ultimate 2000's + + + Urbanzone + + + Night Videos + + + Breakfast with Vantage Music + + + It's The 80's + + + The 90's + + + Ultimate 2000's + + + Video Mix + + + It's The 80's + + + The 90's + + + Ultimate 2000's + + + Old Skool Hip-Hop Show + + + Night Videos + + + Breakfast with Vantage Music + + + It's The 80's + + + The 90's + + + Ultimate 2000's + + + Video Mix + + + It's The 80's + + + The 90's + + + Ultimate 2000's + + + Rockzone + + + Night Videos + + + Breakfast with Vantage Music + + + It's The 80's + + + The 90's + + + Ultimate 2000's + + + Video Mix + + + It's The 80's + + + The 90's + + + Ultimate 2000's + + + Clubzone + + + Partyzone + + + Chillout Zone + + + Night Videos + + + Breakfast with Vantage Music + + + It's The 80's + + + The 90's + + + Ultimate 2000's + + + Video Mix + + + The European Top 20 + + + Video Mix + + + Urbanzone + + + Old Skool Hip-Hop Show + + + Rockzone + + + It's The 80's + + + The 90's + + + Ultimate 2000's + + + Clubzone Reloaded + + + Partyzone Reloaded + + + Night Videos + + + Breakfast with Vantage Music + + + It's The 80's + + + The 90's + + + Ultimate 2000's + + + Video Mix + + + The UK Dance Top 20 + + + Old Skool Hip-Hop Show + + + Rockzone + + + It's The 80's + + + The 90's + + + Ultimate 2000's + + + Clubzone Reloaded + + + Partyzone Reloaded + + + Chillout Zone + + + Night Videos + + + Breakfast with Vantage Music + + + It's The 80's + + + The 90's + + + Ultimate 2000's + + + Video Mix + + + It's The 80's + + + The 90's + + + Ultimate 2000's + + + brand:new + + + Night Videos + + + Breakfast with Vantage Music + Get ready for your day with Vantage Music + + + It's The 80's + The start of the music video era, with 80's classics not to be forgotten as well as some you probably have forgotten (for good reason!). + + + The 90's + Britpop, Jamming basslines, Catchy pop, forgotten boy bands with a bit of hip hop. It's the 90's baby. + + + Ultimate 2000's + A mix of the hits of 2000's along with some more lesser known artists. + + + Video Mix + Driving basslines, catchy pop, cool boy bands, and top-notch hip hop! You'll find all this and more at WILD 90S. Flashback vibes guaranteed! (Station info) + + + It's The 80's + The start of the music video era, with 80's classics not to be forgotten as well as some you probably have forgotten (for good reason!). + + + The 90's + Britpop, Jamming basslines, Catchy pop, forgotten boy bands with a bit of hip hop. It's the 90's baby. + + + Ultimate 2000's + A mix of the hits of 2000's along with some more lesser known artists. + + + Urbanzone + A playlist of songs to come out from the modern rap scene, along with some upcoming underground rap artists. + + + Night Videos + Whether you can't sleep, doing the night shift, or even if you just want to keep yourself awake, Vantage has non-stop commercial free music all night long. + + + Breakfast with Vantage Music + Get ready for your day with Vantage Music + + + It's The 80's + The start of the music video era, with 80's classics not to be forgotten as well as some you probably have forgotten (for good reason!). + + + The 90's + Britpop, Jamming basslines, Catchy pop, forgotten boy bands with a bit of hip hop. It's the 90's baby. + + + Ultimate 2000's + A mix of the hits of 2000's along with some more lesser known artists. + + + Video Mix + Driving basslines, catchy pop, cool boy bands, and top-notch hip hop! You'll find all this and more at WILD 90S. Flashback vibes guaranteed! (Station info) + + + It's The 80's + The start of the music video era, with 80's classics not to be forgotten as well as some you probably have forgotten (for good reason!). + + + The 90's + Britpop, Jamming basslines, Catchy pop, forgotten boy bands with a bit of hip hop. It's the 90's baby. + + + Ultimate 2000's + A mix of the hits of 2000's along with some more lesser known artists. + + + Old Skool Hip-Hop Show + + + Night Videos + Whether you can't sleep, doing the night shift, or even if you just want to keep yourself awake, Vantage has non-stop commercial free music all night long. + + + Breakfast with Vantage Music + + + It's The 80's + + + The 90's + + + Ultimate 2000's + + + Video Mix + + + It's The 80's + + + The 90's + + + Ultimate 2000's + + + Rockzone + + + Night Videos + + + Breakfast with Vantage Music + + + It's The 80's + + + The 90's + + + Ultimate 2000's + + + Video Mix + + + It's The 80's + + + The 90's + + + Ultimate 2000's + + + Clubzone + + + Partyzone + + + Night Videos + + + Breakfast with Vantage Music + + + It's The 80's + + + The 90's + + + Ultimate 2000's + + + Video Mix + + + The European Top 20 + + + Video Mix + + + Urbanzone + + + Old Skool Hip-Hop Show + + + Rockzone + + + It's The 80's + + + The 90's + + + Ultimate 2000's + + + Clubzone Reloaded + + + Partyzone Reloaded + + + Breakfast with Vantage Music + + + It's The 80's + + + The 90's + + + Ultimate 2000's + + + Video Mix + + + The UK Dance Top 20 + + + Old Skool Hip-Hop Show + + + Rockzone + + + It's The 80's + + + The 90's + + + Ultimate 2000's + + + Clubzone Reloaded + + + Partyzone Reloaded + + + Chillout Zone + + + Breakfast with Vantage Dance + + + Don't Stop The Dance + + + The UK Official Dance Chart + + + Don't Stop The Dance + + + The German Official Dance Chart + + + Don't Stop The Dance + + + Clubzone Reloaded + + + Partyzone Reloaded + + + Dance All Night + + + Breakfast with Vantage Dance + + + Don't Stop The Dance + + + The UK Official Dance Chart + + + Don't Stop The Dance + + + The German Official Dance Chart + + + Don't Stop The Dance + + + Clubzone Reloaded + + + Partyzone Reloaded + + + Dance All Night + + + Breakfast with Vantage Dance + + + Don't Stop The Dance + + + The UK Official Dance Chart + + + Don't Stop The Dance + + + The German Official Dance Chart + + + Don't Stop The Dance + + + Clubzone Reloaded + + + Partyzone Reloaded + + + Dance All Night + + + Breakfast with Vantage Dance + + + Don't Stop The Dance + + + The UK Official Dance Chart + + + Don't Stop The Dance + + + The German Official Dance Chart + + + Don't Stop The Dance + + + Clubzone Reloaded + + + Partyzone Reloaded + + + Dance All Night + + + Breakfast with Vantage Dance + + + Don't Stop The Dance + + + The UK Official Dance Chart + + + Don't Stop The Dance + + + The German Official Dance Chart + + + Don't Stop The Dance + + + Clubzone Reloaded + + + Partyzone Reloaded + + + Dance All Night + + + Breakfast with Vantage Dance + + + Don't Stop The Dance + + + The UK Official Dance Chart + + + Don't Stop The Dance + + + The German Official Dance Chart + + + Don't Stop The Dance + + + Clubzone Reloaded + + + Partyzone Reloaded + + + Dance All Night + + + Breakfast with Vantage Dance + + + Don't Stop The Dance + + + The UK Official Dance Chart + + + Don't Stop The Dance + + + The German Official Dance Chart + + + Don't Stop The Dance + + + Clubzone Reloaded + + + Partyzone Reloaded + + + Dance All Night + + + Breakfast with Vantage Dance + + + Don't Stop The Dance + + + The UK Official Dance Chart + + + Don't Stop The Dance + + + The German Official Dance Chart + + + Don't Stop The Dance + + + Clubzone Reloaded + + + Partyzone Reloaded + + + Dance All Night + + + Breakfast with Vantage Dance + + + Don't Stop The Dance + + + The UK Official Dance Chart + + + Don't Stop The Dance + + + The German Official Dance Chart + + + Don't Stop The Dance + + + Clubzone Reloaded + + + Partyzone Reloaded + + + Dance All Night + + + Breakfast with Vantage Dance + + + Don't Stop The Dance + + + The UK Official Dance Chart + + + Don't Stop The Dance + + + The German Official Dance Chart + + + Don't Stop The Dance + + + Clubzone Reloaded + + + Partyzone Reloaded + + + Dance All Night + + + Breakfast with Vantage Dance + + + Don't Stop The Dance + + + The UK Official Dance Chart + + + Don't Stop The Dance + + + The German Official Dance Chart + + + Don't Stop The Dance + + + Clubzone Reloaded + + + Partyzone Reloaded + + + Dance All Night + + + Breakfast with Vantage Dance + + + Don't Stop The Dance + + + The UK Official Dance Chart + + + Don't Stop The Dance + + + The German Official Dance Chart + + + Don't Stop The Dance + + + Clubzone Reloaded + + + Partyzone Reloaded + + + Dance All Night + + + Breakfast with Vantage Dance + + + Don't Stop The Dance + + + The UK Official Dance Chart + + + Don't Stop The Dance + + + The German Official Dance Chart + + + Don't Stop The Dance + + + Clubzone Reloaded + + + Partyzone Reloaded + + + Dance All Night + + + Breakfast with Vantage Dance + + + Don't Stop The Dance + + + The UK Official Dance Chart + + + Don't Stop The Dance + + + The German Official Dance Chart + + + Don't Stop The Dance + + + Clubzone Reloaded + + + Partyzone Reloaded + + + Dance All Night + + + Breakfast with Vantage Rock + Get ready for your day with Vantage Rock + + + Can't Stop The Rock + Commercial free rock music, all day long + + + Rock All Night + It might be late, but that's no reason to stop! + + + Breakfast with Vantage Rock + Get ready for your day with Vantage Rock + + + Can't Stop The Rock + Commercial free rock music, all day long + + + Rock All Night + It might be late, but that's no reason to stop! + + + Breakfast with Vantage Rock + Get ready for your day with Vantage Rock + + + Can't Stop The Rock + Commercial free rock music, all day long + + + Rock All Night + It might be late, but that's no reason to stop! + + + Breakfast with Vantage Rock + Get ready for your day with Vantage Rock + + + Can't Stop The Rock + Commercial free rock music, all day long + + + Rock All Night + It might be late, but that's no reason to stop! + + + Breakfast with Vantage Rock + Get ready for your day with Vantage Rock + + + Can't Stop The Rock + Commercial free rock music, all day long + + + Rock All Night + It might be late, but that's no reason to stop! + + + Breakfast with Vantage Rock + Get ready for your day with Vantage Rock + + + Can't Stop The Rock + Commercial free rock music, all day long + + + Rock All Night + It might be late, but that's no reason to stop! + + + Breakfast with Vantage Rock + Get ready for your day with Vantage Rock + + + Can't Stop The Rock + Commercial free rock music, all day long + + + Rock All Night + It might be late, but that's no reason to stop! + + + Breakfast with Vantage Rock + Get ready for your day with Vantage Rock + + + Can't Stop The Rock + Commercial free rock music, all day long + + + Rock All Night + It might be late, but that's no reason to stop! + + + Breakfast with Vantage Rock + Get ready for your day with Vantage Rock + + + Can't Stop The Rock + Commercial free rock music, all day long + + + Rock All Night + It might be late, but that's no reason to stop! + + + Breakfast with Vantage Rock + Get ready for your day with Vantage Rock + + + Can't Stop The Rock + Commercial free rock music, all day long + + + Rock All Night + It might be late, but that's no reason to stop! + + + Breakfast with Vantage Rock + Get ready for your day with Vantage Rock + + + Can't Stop The Rock + Commercial free rock music, all day long + + + Rock All Night + It might be late, but that's no reason to stop! + + + Breakfast with Vantage Rock + Get ready for your day with Vantage Rock + + + Can't Stop The Rock + Commercial free rock music, all day long + + + Rock All Night + It might be late, but that's no reason to stop! + + + Breakfast with Vantage Rock + Get ready for your day with Vantage Rock + + + Can't Stop The Rock + Commercial free rock music, all day long + + + Rock All Night + It might be late, but that's no reason to stop! + + + Breakfast with Vantage Rock + Get ready for your day with Vantage Rock + + + Can't Stop The Rock + Commercial free rock music, all day long + + + Rock All Night + It might be late, but that's no reason to stop! + + \ No newline at end of file From f08045a61ffc72ab44d1687194d087779cf53b55 Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Wed, 4 Feb 2026 02:03:34 +0300 Subject: [PATCH 04/10] Create vantagetv.ee.config.js --- sites/vantagetv.ee/vantagetv.ee.config.js | 27 +++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 sites/vantagetv.ee/vantagetv.ee.config.js diff --git a/sites/vantagetv.ee/vantagetv.ee.config.js b/sites/vantagetv.ee/vantagetv.ee.config.js new file mode 100644 index 000000000..9cd489f43 --- /dev/null +++ b/sites/vantagetv.ee/vantagetv.ee.config.js @@ -0,0 +1,27 @@ +const parser = require('epg-parser') + +module.exports = { + site: 'vantagetv.ee', + days: 2, + url: 'http://vantagetv.ee/epg.xml', + parser: function ({ content, channel, date }) { + let programs = [] + const items = parseItems(content, channel, date) + items.forEach(item => { + programs.push({ + title: item.title?.[0]?.value, + description: item.desc?.[0]?.value, + start: item.start, + stop: item.stop + }) + }) + + return programs + } +} + +function parseItems(content, channel, date) { + const { programs } = parser.parse(content) + + return programs.filter(p => p.channel === channel.site_id && date.isSame(p.start, 'day')) +} From 46976fa7ce601a979140fc8fc2b06092ad349f1d Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Wed, 4 Feb 2026 02:03:44 +0300 Subject: [PATCH 05/10] Create vantagetv.ee.channels.xml --- sites/vantagetv.ee/vantagetv.ee.channels.xml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 sites/vantagetv.ee/vantagetv.ee.channels.xml diff --git a/sites/vantagetv.ee/vantagetv.ee.channels.xml b/sites/vantagetv.ee/vantagetv.ee.channels.xml new file mode 100644 index 000000000..609cc8ca2 --- /dev/null +++ b/sites/vantagetv.ee/vantagetv.ee.channels.xml @@ -0,0 +1,6 @@ + + + Vantage Music + Vantage Dance + Vantage Rock + \ No newline at end of file From b4bcda49b1aeab8996a49661fd62efd93506cda6 Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Wed, 4 Feb 2026 02:04:00 +0300 Subject: [PATCH 06/10] Create readme.md --- sites/vantagetv.ee/readme.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 sites/vantagetv.ee/readme.md diff --git a/sites/vantagetv.ee/readme.md b/sites/vantagetv.ee/readme.md new file mode 100644 index 000000000..b7c4b118a --- /dev/null +++ b/sites/vantagetv.ee/readme.md @@ -0,0 +1,15 @@ +# vantagetv.ee + +https://vantagetv.ee/epg.xml + +### Download the guide + +```sh +npm run grab --- --site=vantagetv.ee +``` + +### Test + +```sh +npm test --- vantagetv.ee +``` From 78e7dbf5aa72fa8f383a83cca231d7475fce06b0 Mon Sep 17 00:00:00 2001 From: "iptv-bot[bot]" <84861620+iptv-bot[bot]@users.noreply.github.com> Date: Thu, 5 Feb 2026 01:21:28 +0000 Subject: [PATCH 07/10] [Bot] Update SITES.md Committed by [iptv-bot](https://github.com/apps/iptv-bot) via [update](https://github.com/iptv-org/epg/actions/runs/21695024064) workflow. --- SITES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SITES.md b/SITES.md index 8178ba28e..bc9ae86e8 100644 --- a/SITES.md +++ b/SITES.md @@ -146,7 +146,7 @@ ruv.is22🟢 s.mxtv.jp22🟢 sat.tv30308249🟢 - shahid.mbc.net206167🟢 + shahid.mbc.net207168🟢 siba.com.co9895🟢 singtel.com155113🟢 sjonvarp.is1313🟢 From 9f0ba5d4eae8c0a30b170669f5ffcd1c61ba858e Mon Sep 17 00:00:00 2001 From: "iptv-bot[bot]" <84861620+iptv-bot[bot]@users.noreply.github.com> Date: Fri, 6 Feb 2026 01:23:06 +0000 Subject: [PATCH 08/10] [Bot] Update SITES.md Committed by [iptv-bot](https://github.com/apps/iptv-bot) via [update](https://github.com/iptv-org/epg/actions/runs/21735124781) workflow. --- SITES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SITES.md b/SITES.md index bc9ae86e8..8d59965bb 100644 --- a/SITES.md +++ b/SITES.md @@ -22,7 +22,7 @@ beinsports.com13081🟢 berrymedia.co.kr55🟢 cableplus.com.uy17144🟢 - canalplus.com13118179🟢 + canalplus.com13118179🟢https://github.com/iptv-org/epg/issues/3002 cgates.lt4729🟢 chada.ma11🟢 chaines-tv.orange.fr373328🟢 From c1b3ef5a0e22979ffe06e4e688366eadc05b8537 Mon Sep 17 00:00:00 2001 From: "iptv-bot[bot]" <84861620+iptv-bot[bot]@users.noreply.github.com> Date: Sat, 7 Feb 2026 01:21:41 +0000 Subject: [PATCH 09/10] [Bot] Update SITES.md Committed by [iptv-bot](https://github.com/apps/iptv-bot) via [update](https://github.com/iptv-org/epg/actions/runs/21771612049) workflow. --- SITES.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/SITES.md b/SITES.md index 8d59965bb..b96f53b2e 100644 --- a/SITES.md +++ b/SITES.md @@ -26,7 +26,7 @@ cgates.lt4729🟢 chada.ma11🟢 chaines-tv.orange.fr373328🟢 - claro.com.br2730🟢 + claro.com.br2730🟢https://github.com/iptv-org/epg/issues/2988 clarotvmais.com.br1580🟢 clickthecity.com3230🟢 content.astro.com.my14993🟢 @@ -38,7 +38,7 @@ derana.lk11🟢 digea.gr880🟢 digiturk.com.tr11291🟢 - directv.com1043640🔴https://github.com/iptv-org/epg/issues/2284 + directv.com1043640🔴https://github.com/iptv-org/epg/issues/3001, https://github.com/iptv-org/epg/issues/2284 directv.com.ar3710🔴https://github.com/iptv-org/epg/issues/2339 directv.com.uy37459🟢 dishtv.in434326🟢 @@ -212,10 +212,11 @@ tvmusor.hu9966🟢 tvmustra.hu1890🟢 tvpassport.com192872496🟢 - tvplus.com.tr150144🟢 + tvplus.com.tr150144🟢https://github.com/iptv-org/epg/issues/2983 tvprofil.com9091408🟢 tvtv.us22992230🟢 v3.myafn.dodmedia.osd.mil88🟢 + vantagetv.ee31🟢 vidio.com5752🟢 virginmediatelevision.ie55🟢 virgintvgo.virginmedia.com238181🟢 @@ -237,7 +238,7 @@ yes.co.il1740🟢 zap.co.ao11463🟢 zap2it.com5950🟢 - ziggogo.tv156150🟢 + ziggogo.tv156150🟢https://github.com/iptv-org/epg/issues/2977, https://github.com/iptv-org/epg/issues/2976 znbc.co.zm44🟢 zuragt.mn3427🟢 From bd9e0ec53a8b8018ef98635be72db52f7cf5d7a1 Mon Sep 17 00:00:00 2001 From: "iptv-bot[bot]" <84861620+iptv-bot[bot]@users.noreply.github.com> Date: Tue, 10 Feb 2026 01:51:00 +0000 Subject: [PATCH 10/10] [Bot] Update SITES.md Committed by [iptv-bot](https://github.com/apps/iptv-bot) via [update](https://github.com/iptv-org/epg/actions/runs/21848439831) workflow. --- SITES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SITES.md b/SITES.md index b96f53b2e..c3a569249 100644 --- a/SITES.md +++ b/SITES.md @@ -230,7 +230,7 @@ wavve.com7776🟢 web.magentatv.de348226🟢https://github.com/iptv-org/epg/issues/2966 webtv.delta.nl247204🟢 - winplay.co22🟢 + winplay.co22🟢https://github.com/iptv-org/epg/issues/3003 worldfishingnetwork.com11🟢 www3.nhk.or.jp11🟢 xem.kplus.vn770🟢