mirror of
https://github.com/iptv-org/epg
synced 2025-12-15 09:56:42 -05:00
1
sites/port.hu/__data__/content.json
Normal file
1
sites/port.hu/__data__/content.json
Normal file
File diff suppressed because one or more lines are too long
1
sites/port.hu/__data__/no_content.json
Normal file
1
sites/port.hu/__data__/no_content.json
Normal file
@@ -0,0 +1 @@
|
||||
{"1794265200":{"date":"2025-11-09T08:04:07+01:00","date_from":null,"date_to":null,"channels":[],"eveningStartTime":{"hour":19,"min":50},"formattedDate":"2026-11-10T00:00:00+01:00"}}
|
||||
154
sites/port.hu/port.hu.channels.xml
Normal file
154
sites/port.hu/port.hu.channels.xml
Normal file
@@ -0,0 +1,154 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<channels>
|
||||
<channel site="port.hu" site_id="1" lang="hu" xmltv_id="">m1</channel>
|
||||
<channel site="port.hu" site_id="2" lang="hu" xmltv_id="">m2 / Petőfi TV</channel>
|
||||
<channel site="port.hu" site_id="3" lang="hu" xmltv_id="">TV2</channel>
|
||||
<channel site="port.hu" site_id="4" lang="hu" xmltv_id="">CNN (English)</channel>
|
||||
<channel site="port.hu" site_id="5" lang="hu" xmltv_id="">RTL</channel>
|
||||
<channel site="port.hu" site_id="6" lang="hu" xmltv_id="">DUNA Televízió</channel>
|
||||
<channel site="port.hu" site_id="8" lang="hu" xmltv_id="">HBO</channel>
|
||||
<channel site="port.hu" site_id="9" lang="hu" xmltv_id="">Spektrum</channel>
|
||||
<channel site="port.hu" site_id="10" lang="hu" xmltv_id="">Hír TV</channel>
|
||||
<channel site="port.hu" site_id="14" lang="hu" xmltv_id="">National Geographic</channel>
|
||||
<channel site="port.hu" site_id="15" lang="hu" xmltv_id="">ATV</channel>
|
||||
<channel site="port.hu" site_id="16" lang="hu" xmltv_id="">Minimax</channel>
|
||||
<channel site="port.hu" site_id="17" lang="hu" xmltv_id="">Soundtrack Channel</channel>
|
||||
<channel site="port.hu" site_id="19" lang="hu" xmltv_id="">Brazzers TV Europe</channel>
|
||||
<channel site="port.hu" site_id="20" lang="hu" xmltv_id="">Spektrum Home</channel>
|
||||
<channel site="port.hu" site_id="21" lang="hu" xmltv_id="">VIASAT3</channel>
|
||||
<channel site="port.hu" site_id="23" lang="hu" xmltv_id="">TV5MONDE</channel>
|
||||
<channel site="port.hu" site_id="32" lang="hu" xmltv_id="">Film+</channel>
|
||||
<channel site="port.hu" site_id="35" lang="hu" xmltv_id="">Disney Channel</channel>
|
||||
<channel site="port.hu" site_id="37" lang="hu" xmltv_id="">Eurosport 2</channel>
|
||||
<channel site="port.hu" site_id="38" lang="hu" xmltv_id="">TV4</channel>
|
||||
<channel site="port.hu" site_id="41" lang="hu" xmltv_id="">Nickelodeon</channel>
|
||||
<channel site="port.hu" site_id="42" lang="hu" xmltv_id="">AXN</channel>
|
||||
<channel site="port.hu" site_id="44" lang="hu" xmltv_id="">Sport2</channel>
|
||||
<channel site="port.hu" site_id="46" lang="hu" xmltv_id="">TV Paprika</channel>
|
||||
<channel site="port.hu" site_id="47" lang="hu" xmltv_id="">Cinemax</channel>
|
||||
<channel site="port.hu" site_id="59" lang="hu" xmltv_id="">HBO 2</channel>
|
||||
<channel site="port.hu" site_id="60" lang="hu" xmltv_id="">Cinemax 2</channel>
|
||||
<channel site="port.hu" site_id="64" lang="hu" xmltv_id="">MCM Top</channel>
|
||||
<channel site="port.hu" site_id="65" lang="hu" xmltv_id="">Viasat Explore</channel>
|
||||
<channel site="port.hu" site_id="66" lang="hu" xmltv_id="">Viasat History</channel>
|
||||
<channel site="port.hu" site_id="68" lang="hu" xmltv_id="">CNBC</channel>
|
||||
<channel site="port.hu" site_id="71" lang="hu" xmltv_id="">Euronews</channel>
|
||||
<channel site="port.hu" site_id="77" lang="hu" xmltv_id="">Cartoonito</channel>
|
||||
<channel site="port.hu" site_id="79" lang="hu" xmltv_id="">Cool</channel>
|
||||
<channel site="port.hu" site_id="80" lang="hu" xmltv_id="">Mezzo</channel>
|
||||
<channel site="port.hu" site_id="82" lang="hu" xmltv_id="">Animal Planet</channel>
|
||||
<channel site="port.hu" site_id="83" lang="hu" xmltv_id="">Discovery Channel</channel>
|
||||
<channel site="port.hu" site_id="84" lang="hu" xmltv_id="">Travel Channel</channel>
|
||||
<channel site="port.hu" site_id="89" lang="hu" xmltv_id="">Filmcafe</channel>
|
||||
<channel site="port.hu" site_id="90" lang="hu" xmltv_id="">Sport1</channel>
|
||||
<channel site="port.hu" site_id="91" lang="hu" xmltv_id="">Cartoon Network</channel>
|
||||
<channel site="port.hu" site_id="94" lang="hu" xmltv_id="">Eurosport 1</channel>
|
||||
<channel site="port.hu" site_id="95" lang="hu" xmltv_id="">Film Mánia</channel>
|
||||
<channel site="port.hu" site_id="98" lang="hu" xmltv_id="">Extreme Sports</channel>
|
||||
<channel site="port.hu" site_id="99" lang="hu" xmltv_id="">VH1</channel>
|
||||
<channel site="port.hu" site_id="103" lang="hu" xmltv_id="">Duna World</channel>
|
||||
<channel site="port.hu" site_id="115" lang="hu" xmltv_id="">PAX Tv</channel>
|
||||
<channel site="port.hu" site_id="126" lang="hu" xmltv_id="">BBC World</channel>
|
||||
<channel site="port.hu" site_id="132" lang="hu" xmltv_id="">VIASAT2</channel>
|
||||
<channel site="port.hu" site_id="134" lang="hu" xmltv_id="">D1 TV</channel>
|
||||
<channel site="port.hu" site_id="138" lang="hu" xmltv_id="">VIASAT FILM</channel>
|
||||
<channel site="port.hu" site_id="139" lang="hu" xmltv_id="">AMC</channel>
|
||||
<channel site="port.hu" site_id="141" lang="hu" xmltv_id="">National Geographic Wild</channel>
|
||||
<channel site="port.hu" site_id="143" lang="hu" xmltv_id="">HBO 3</channel>
|
||||
<channel site="port.hu" site_id="144" lang="hu" xmltv_id="">MTV</channel>
|
||||
<channel site="port.hu" site_id="146" lang="hu" xmltv_id="">New Tang Dynasty (English)</channel>
|
||||
<channel site="port.hu" site_id="147" lang="hu" xmltv_id="">Smile of a child (English)</channel>
|
||||
<channel site="port.hu" site_id="149" lang="hu" xmltv_id="">Channel One Russia (Russian)</channel>
|
||||
<channel site="port.hu" site_id="150" lang="hu" xmltv_id="">Al Jazeera (English)</channel>
|
||||
<channel site="port.hu" site_id="153" lang="hu" xmltv_id="">Baby TV (English)</channel>
|
||||
<channel site="port.hu" site_id="156" lang="hu" xmltv_id="">Duck TV</channel>
|
||||
<channel site="port.hu" site_id="158" lang="hu" xmltv_id="">Sky News (English)</channel>
|
||||
<channel site="port.hu" site_id="159" lang="hu" xmltv_id="">Nat Geo HD</channel>
|
||||
<channel site="port.hu" site_id="164" lang="hu" xmltv_id="">VIASAT6</channel>
|
||||
<channel site="port.hu" site_id="170" lang="hu" xmltv_id="">Babyfirst (English)</channel>
|
||||
<channel site="port.hu" site_id="173" lang="hu" xmltv_id="">Filmbox Extra HD</channel>
|
||||
<channel site="port.hu" site_id="176" lang="hu" xmltv_id="">Fishing & Hunting</channel>
|
||||
<channel site="port.hu" site_id="177" lang="hu" xmltv_id="">Filmbox Premium</channel>
|
||||
<channel site="port.hu" site_id="178" lang="hu" xmltv_id="">RTL HÁROM</channel>
|
||||
<channel site="port.hu" site_id="179" lang="hu" xmltv_id="">Sorozat+</channel>
|
||||
<channel site="port.hu" site_id="180" lang="hu" xmltv_id="">RTL GOLD</channel>
|
||||
<channel site="port.hu" site_id="182" lang="hu" xmltv_id="">HISTORY</channel>
|
||||
<channel site="port.hu" site_id="188" lang="hu" xmltv_id="">Gotthárd TV</channel>
|
||||
<channel site="port.hu" site_id="189" lang="hu" xmltv_id="">Miskolc TV</channel>
|
||||
<channel site="port.hu" site_id="190" lang="hu" xmltv_id="">Szeged Televízió</channel>
|
||||
<channel site="port.hu" site_id="194" lang="hu" xmltv_id="">Comedy Central</channel>
|
||||
<channel site="port.hu" site_id="196" lang="hu" xmltv_id="">Kecskeméti Televízió</channel>
|
||||
<channel site="port.hu" site_id="197" lang="hu" xmltv_id="">JimJam</channel>
|
||||
<channel site="port.hu" site_id="202" lang="hu" xmltv_id="">Da Vinci TV</channel>
|
||||
<channel site="port.hu" site_id="207" lang="hu" xmltv_id="">MCM Pop</channel>
|
||||
<channel site="port.hu" site_id="212" lang="hu" xmltv_id="">LifeTv</channel>
|
||||
<channel site="port.hu" site_id="213" lang="hu" xmltv_id="">OzoneTv</channel>
|
||||
<channel site="port.hu" site_id="215" lang="hu" xmltv_id="">Prime</channel>
|
||||
<channel site="port.hu" site_id="216" lang="hu" xmltv_id="">Sláger TV</channel>
|
||||
<channel site="port.hu" site_id="217" lang="hu" xmltv_id="">Muzsika TV</channel>
|
||||
<channel site="port.hu" site_id="218" lang="hu" xmltv_id="">Bloomberg (English)</channel>
|
||||
<channel site="port.hu" site_id="222" lang="hu" xmltv_id="">Erdély TV</channel>
|
||||
<channel site="port.hu" site_id="223" lang="hu" xmltv_id="">Viasat Nature</channel>
|
||||
<channel site="port.hu" site_id="224" lang="hu" xmltv_id="">Filmbox Plus</channel>
|
||||
<channel site="port.hu" site_id="226" lang="hu" xmltv_id="">Filmbox</channel>
|
||||
<channel site="port.hu" site_id="227" lang="hu" xmltv_id="">Filmbox Family</channel>
|
||||
<channel site="port.hu" site_id="228" lang="hu" xmltv_id="">STORY4</channel>
|
||||
<channel site="port.hu" site_id="229" lang="hu" xmltv_id="">Mozi+</channel>
|
||||
<channel site="port.hu" site_id="231" lang="hu" xmltv_id="">Animal Planet HD</channel>
|
||||
<channel site="port.hu" site_id="233" lang="hu" xmltv_id="">TLC</channel>
|
||||
<channel site="port.hu" site_id="236" lang="hu" xmltv_id="">Nick Jr.</channel>
|
||||
<channel site="port.hu" site_id="240" lang="hu" xmltv_id="">Musicmix</channel>
|
||||
<channel site="port.hu" site_id="241" lang="hu" xmltv_id="">RTL KETTŐ</channel>
|
||||
<channel site="port.hu" site_id="244" lang="hu" xmltv_id="">SuperTV2</channel>
|
||||
<channel site="port.hu" site_id="246" lang="hu" xmltv_id="">Neshama TV</channel>
|
||||
<channel site="port.hu" site_id="251" lang="hu" xmltv_id="">BBC Earth</channel>
|
||||
<channel site="port.hu" site_id="257" lang="hu" xmltv_id="">Paramount Network</channel>
|
||||
<channel site="port.hu" site_id="265" lang="hu" xmltv_id="">9.Tv</channel>
|
||||
<channel site="port.hu" site_id="266" lang="hu" xmltv_id="">Fehérvár TV</channel>
|
||||
<channel site="port.hu" site_id="275" lang="hu" xmltv_id="">EWTN</channel>
|
||||
<channel site="port.hu" site_id="278" lang="hu" xmltv_id="">Gyöngyösi TV</channel>
|
||||
<channel site="port.hu" site_id="279" lang="hu" xmltv_id="">Investigation Discovery</channel>
|
||||
<channel site="port.hu" site_id="282" lang="hu" xmltv_id="">Fit HD</channel>
|
||||
<channel site="port.hu" site_id="284" lang="hu" xmltv_id="">Galaxy4</channel>
|
||||
<channel site="port.hu" site_id="285" lang="hu" xmltv_id="">Food Network</channel>
|
||||
<channel site="port.hu" site_id="290" lang="hu" xmltv_id="">M4 Sport</channel>
|
||||
<channel site="port.hu" site_id="294" lang="hu" xmltv_id="">National Geographic Wild HD</channel>
|
||||
<channel site="port.hu" site_id="297" lang="hu" xmltv_id="">Balaton Televízió</channel>
|
||||
<channel site="port.hu" site_id="298" lang="hu" xmltv_id="">Discovery Turbo Xtra</channel>
|
||||
<channel site="port.hu" site_id="300" lang="hu" xmltv_id="">Keresztúri Televízió</channel>
|
||||
<channel site="port.hu" site_id="301" lang="hu" xmltv_id="">M5</channel>
|
||||
<channel site="port.hu" site_id="303" lang="hu" xmltv_id="">Zenebutik</channel>
|
||||
<channel site="port.hu" site_id="304" lang="hu" xmltv_id="">Izaura TV</channel>
|
||||
<channel site="port.hu" site_id="305" lang="hu" xmltv_id="">Spíler1 TV</channel>
|
||||
<channel site="port.hu" site_id="307" lang="hu" xmltv_id="">TV2 Klub</channel>
|
||||
<channel site="port.hu" site_id="309" lang="hu" xmltv_id="">TV2 Séf</channel>
|
||||
<channel site="port.hu" site_id="310" lang="hu" xmltv_id="">TV2 Kids</channel>
|
||||
<channel site="port.hu" site_id="311" lang="hu" xmltv_id="">TV2 Comedy</channel>
|
||||
<channel site="port.hu" site_id="313" lang="hu" xmltv_id="">Heti TV</channel>
|
||||
<channel site="port.hu" site_id="320" lang="hu" xmltv_id="">M4 Sport+</channel>
|
||||
<channel site="port.hu" site_id="325" lang="hu" xmltv_id="">Epic Drama</channel>
|
||||
<channel site="port.hu" site_id="359" lang="hu" xmltv_id="">Film4</channel>
|
||||
<channel site="port.hu" site_id="362" lang="hu" xmltv_id="">Spíler2 TV</channel>
|
||||
<channel site="port.hu" site_id="363" lang="hu" xmltv_id="">ATV Extra</channel>
|
||||
<channel site="port.hu" site_id="364" lang="hu" xmltv_id="">Jocky TV</channel>
|
||||
<channel site="port.hu" site_id="365" lang="hu" xmltv_id="">Moziverzum</channel>
|
||||
<channel site="port.hu" site_id="366" lang="hu" xmltv_id="">Nicktoons</channel>
|
||||
<channel site="port.hu" site_id="367" lang="hu" xmltv_id="">Auto Motor Sport TV</channel>
|
||||
<channel site="port.hu" site_id="368" lang="hu" xmltv_id="">Fashion TV</channel>
|
||||
<channel site="port.hu" site_id="370" lang="hu" xmltv_id="">Aréna 4</channel>
|
||||
<channel site="port.hu" site_id="371" lang="hu" xmltv_id="">Apostol TV</channel>
|
||||
<channel site="port.hu" site_id="373" lang="hu" xmltv_id="">RAI 1</channel>
|
||||
<channel site="port.hu" site_id="374" lang="hu" xmltv_id="">TeenNick</channel>
|
||||
<channel site="port.hu" site_id="375" lang="hu" xmltv_id="">Match4</channel>
|
||||
<channel site="port.hu" site_id="376" lang="hu" xmltv_id="">Max4</channel>
|
||||
<channel site="port.hu" site_id="377" lang="hu" xmltv_id="">Magyar Mozi TV</channel>
|
||||
<channel site="port.hu" site_id="378" lang="hu" xmltv_id="">Direct One</channel>
|
||||
<channel site="port.hu" site_id="379" lang="hu" xmltv_id="">Kölyök Klub</channel>
|
||||
<channel site="port.hu" site_id="380" lang="hu" xmltv_id="">Mozi Klub</channel>
|
||||
<channel site="port.hu" site_id="381" lang="hu" xmltv_id="">RTL Otthon</channel>
|
||||
<channel site="port.hu" site_id="382" lang="hu" xmltv_id="">Sorozat Klub</channel>
|
||||
<channel site="port.hu" site_id="397" lang="hu" xmltv_id="">HGTV</channel>
|
||||
<channel site="port.hu" site_id="398" lang="hu" xmltv_id="">SkyShowtime 1</channel>
|
||||
<channel site="port.hu" site_id="399" lang="hu" xmltv_id="">SkyShowtime 2</channel>
|
||||
<channel site="port.hu" site_id="777" lang="hu" xmltv_id="">Indaplay</channel>
|
||||
</channels>
|
||||
65
sites/port.hu/port.hu.config.js
Normal file
65
sites/port.hu/port.hu.config.js
Normal file
@@ -0,0 +1,65 @@
|
||||
const axios = require('axios')
|
||||
const dayjs = require('dayjs')
|
||||
|
||||
module.exports = {
|
||||
site: 'port.hu',
|
||||
url({ channel, date }) {
|
||||
return `https://port.hu/tvapi?channel_id[]=tvchannel-${
|
||||
channel.site_id
|
||||
}&i_datetime_from=${date.format('YYYY-MM-DD')}&i_datetime_to=${date.format('YYYY-MM-DD')}`
|
||||
},
|
||||
parser({ content, channel }) {
|
||||
const items = parseItems(content, channel)
|
||||
|
||||
let programs = []
|
||||
|
||||
items.forEach(item => {
|
||||
programs.push({
|
||||
title: item.title,
|
||||
subtitle: item.episode_title,
|
||||
description: item.description || item.short_description,
|
||||
category: item.restriction?.category,
|
||||
start: dayjs.unix(item.start_ts),
|
||||
stop: dayjs(item.end_datetime)
|
||||
})
|
||||
})
|
||||
|
||||
return programs
|
||||
},
|
||||
async channels() {
|
||||
const data = await axios
|
||||
.get('https://port.hu/tvapi/init-new')
|
||||
.then(r => r.data)
|
||||
.catch(console.error)
|
||||
|
||||
return data.channels.map(channel => {
|
||||
const [, site_id] = channel.id.split('-')
|
||||
|
||||
return {
|
||||
site_id,
|
||||
name: channel.name,
|
||||
lang: 'hu'
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
function parseItems(content, channel) {
|
||||
try {
|
||||
const data = JSON.parse(content)
|
||||
if (!data) return []
|
||||
|
||||
const firstElement = Object.values(data)[0]
|
||||
if (!firstElement || !Array.isArray(firstElement.channels)) return []
|
||||
|
||||
const channelData = firstElement.channels.find(
|
||||
_channel => _channel.id === `tvchannel-${channel.site_id}`
|
||||
)
|
||||
|
||||
if (!channelData || !Array.isArray(channelData.programs)) return []
|
||||
|
||||
return channelData.programs
|
||||
} catch {
|
||||
return []
|
||||
}
|
||||
}
|
||||
52
sites/port.hu/port.hu.test.js
Normal file
52
sites/port.hu/port.hu.test.js
Normal file
@@ -0,0 +1,52 @@
|
||||
const { parser, url } = require('./port.hu.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-11-10', 'YYYY-MM-DD').startOf('d')
|
||||
const channel = { site_id: '5' }
|
||||
|
||||
it('can generate valid url', () => {
|
||||
expect(url({ channel, date })).toBe(
|
||||
'https://port.hu/tvapi?channel_id[]=tvchannel-5&i_datetime_from=2025-11-10&i_datetime_to=2025-11-10'
|
||||
)
|
||||
})
|
||||
|
||||
it('can parse response', () => {
|
||||
const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.json'))
|
||||
|
||||
const results = parser({ content, channel }).map(p => {
|
||||
p.start = p.start.toJSON()
|
||||
p.stop = p.stop.toJSON()
|
||||
|
||||
return p
|
||||
})
|
||||
|
||||
expect(results.length).toBe(25)
|
||||
expect(results[0]).toMatchObject({
|
||||
title: 'Terhes társaság',
|
||||
description: 'amerikai vígjáték, 2010',
|
||||
category: 'film',
|
||||
start: '2025-11-09T21:40:00.000Z',
|
||||
stop: '2025-11-09T23:45:00.000Z'
|
||||
})
|
||||
expect(results[24]).toMatchObject({
|
||||
title: 'CSI: A helyszínelők',
|
||||
subtitle: 'Bukott bálványok',
|
||||
description: 'amerikai-kanadai krimisorozat, VII / 17. rész, 2007',
|
||||
category: 'filmsorozat',
|
||||
start: '2025-11-11T01:50:00.000Z',
|
||||
stop: '2025-11-11T03:00:00.000Z'
|
||||
})
|
||||
})
|
||||
|
||||
it('can handle empty guide', () => {
|
||||
const content = fs.readFileSync(path.resolve(__dirname, '__data__/no_content.json'))
|
||||
const results = parser({ content, channel })
|
||||
|
||||
expect(results).toMatchObject([])
|
||||
})
|
||||
23
sites/port.hu/readme.md
Normal file
23
sites/port.hu/readme.md
Normal file
@@ -0,0 +1,23 @@
|
||||
# port.hu
|
||||
|
||||
https://port.hu/tv
|
||||
|
||||
### Download the guide
|
||||
|
||||
```sh
|
||||
npm run grab --- --site=port.hu --delay=1000
|
||||
```
|
||||
|
||||
**IMPORTANT:** Keep in mind that with a large number of requests the server may start responding with the error [429 Too Many Requests](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429). In this case, try increasing the `--delay` (1000 = 1 second) or create a [custom channel list](https://github.com/iptv-org/epg?tab=readme-ov-file#use-custom-channel-list) with only the channels you need.
|
||||
|
||||
### Update channel list
|
||||
|
||||
```sh
|
||||
npm run channels:parse --- --config=./sites/port.hu/port.hu.config.js --output=./sites/port.hu/port.hu.channels.xml
|
||||
```
|
||||
|
||||
### Test
|
||||
|
||||
```sh
|
||||
npm test --- port.hu
|
||||
```
|
||||
Reference in New Issue
Block a user