Create ntv.co.jp.config.js

This commit is contained in:
freearhey
2026-08-01 19:20:41 +03:00
parent 8aee7b9d55
commit 715944d640
+67
View File
@@ -0,0 +1,67 @@
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: 'ntv.co.jp',
days: 7,
url: 'https://www.ntv.co.jp/program/json/program_list.json',
request: {
cache: {
ttl: 60 * 60 * 1000
}
},
parser({ buffer, date }) {
const items = parseItems(buffer, date)
return items.map(item => {
return {
title: item.program_title,
description: item.program_detail,
actors: Array.isArray(item.performers) ? item.performers.map(p => p.performer) : [],
start: dayjs.tz(
item.actual_datetime.broadcast_date + item.actual_datetime.start_time,
'YYYYMMDDHHmm',
'Asia/Tokyo'
),
stop: dayjs.tz(
item.actual_datetime.broadcast_date + item.actual_datetime.end_time,
'YYYYMMDDHHmm',
'Asia/Tokyo'
)
}
})
},
channels() {
return [
{
name: 'Nippon TV',
xmltv_id: 'JOAXDTV.jp',
site_id: '#',
lang: 'ja'
}
]
}
}
function parseItems(buffer, date) {
try {
const cleanJsonText = String(buffer)
.replace(/^\uFEFF/, '')
.trim()
const data = JSON.parse(cleanJsonText)
if (!data) return []
const requestedDate = date.format('YYYYMMDD')
const items = data.filter(item => item.actual_datetime.broadcast_date === requestedDate)
return items
} catch {
return []
}
}