Files
epg/sites/port.hu/port.hu.config.js

66 lines
1.6 KiB
JavaScript
Raw Permalink Normal View History

2025-11-09 10:19:08 +03:00
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 []
}
}