mirror of
https://github.com/iptv-org/epg.git
synced 2025-05-10 09:00:07 -04:00
Add files via upload
This commit is contained in:
parent
e0d059de5c
commit
e952ba2585
2 changed files with 147 additions and 0 deletions
75
sites/zap2it.com/zap2it.com.config.js
Normal file
75
sites/zap2it.com/zap2it.com.config.js
Normal file
|
@ -0,0 +1,75 @@
|
||||||
|
const dayjs = require('dayjs')
|
||||||
|
const timezone = require('dayjs/plugin/timezone')
|
||||||
|
const utc = require('dayjs/plugin/utc');
|
||||||
|
const isBetween = require('dayjs/plugin/isBetween')
|
||||||
|
|
||||||
|
dayjs.extend(timezone);
|
||||||
|
dayjs.extend(utc);
|
||||||
|
dayjs.extend(isBetween);
|
||||||
|
|
||||||
|
const localTimezone = dayjs.tz.guess()
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
site: 'zap2it.com',
|
||||||
|
days: 2,
|
||||||
|
url: 'https://tvlistings.zap2it.com/api/sslgrid',
|
||||||
|
request: {
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
'Accept': 'application/json',
|
||||||
|
},
|
||||||
|
data({ date, channel }) {
|
||||||
|
const [device, lineupId, headendId, countryCode, postalCode, prgsvcid] = channel.site_id.split('/')
|
||||||
|
|
||||||
|
if (!device || !lineupId || !headendId || !countryCode || !postalCode || !prgsvcid) {
|
||||||
|
throw new Error('El site_id no contiene todos los valores obligatorios.')
|
||||||
|
}
|
||||||
|
|
||||||
|
const timestamp = dayjs(date).unix().toString()
|
||||||
|
|
||||||
|
return {
|
||||||
|
lineupId,
|
||||||
|
IsSSLinkNavigation: 'true',
|
||||||
|
timespan: '336',
|
||||||
|
timestamp,
|
||||||
|
prgsvcid,
|
||||||
|
headendId,
|
||||||
|
countryCode,
|
||||||
|
postalCode,
|
||||||
|
device,
|
||||||
|
userId: '-',
|
||||||
|
aid: 'gapzap',
|
||||||
|
DSTUTCOffset: '-240',
|
||||||
|
STDUTCOffset: '-300',
|
||||||
|
DSTStart: '2025-03-09T02:00Z',
|
||||||
|
DSTEnd: '2025-11-02T02:00Z',
|
||||||
|
languagecode: 'en-us',
|
||||||
|
};
|
||||||
|
},
|
||||||
|
},
|
||||||
|
parser: function ({ content, date }) {
|
||||||
|
const data = JSON.parse(content);
|
||||||
|
const programs = [];
|
||||||
|
|
||||||
|
Object.keys(data).forEach(dateKey => {
|
||||||
|
data[dateKey].forEach(item => {
|
||||||
|
programs.push({
|
||||||
|
title: item.program.title,
|
||||||
|
subTitle: item.program.episodeTitle || '',
|
||||||
|
description: item.program.shortDesc || '',
|
||||||
|
genres: item.program.genres ? item.program.genres.map(genre => genre.name) : [],
|
||||||
|
start: dayjs.unix(item.startTime).utc().format('YYYY-MM-DD HH:mm:ss'),
|
||||||
|
stop: dayjs.unix(item.endTime).utc().format('YYYY-MM-DD HH:mm:ss'),
|
||||||
|
icon: item.thumbnail ? `https://zap2it.tmsimg.com/assets/${item.thumbnail}.jpg` : '',
|
||||||
|
rating: item.rating || '',
|
||||||
|
season: item.program.season || '',
|
||||||
|
episode: item.program.episode || '',
|
||||||
|
date: item.program.releaseYear || '',
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
return programs.filter(p => dayjs(p.start).isBetween(date.startOf('day').utc(), date.endOf('day').utc(), 'second', '[]'))
|
||||||
|
}
|
||||||
|
};
|
72
sites/zap2it.com/zap2it.com.test.js
Normal file
72
sites/zap2it.com/zap2it.com.test.js
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
const { parser, url } = require('./zap2it.com.config.js')
|
||||||
|
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-02-06', 'YYYY-MM-DD').startOf('d')
|
||||||
|
const channel = { site_id: 'X/USA-NY31695-DEFAULT/NY31695/USA/13302/49141', xmltv_id: 'Spectrum News 1' }
|
||||||
|
|
||||||
|
it('can generate valid url', () => {
|
||||||
|
expect(url).toBe('https://tvlistings.zap2it.com/api/sslgrid')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('can parse response', () => {
|
||||||
|
const content = JSON.stringify({
|
||||||
|
'2025-02-06': [
|
||||||
|
{
|
||||||
|
program: {
|
||||||
|
title: 'Your Afternoon on Spectrum News 1 - Central NY',
|
||||||
|
episodeTitle: '',
|
||||||
|
shortDesc: '',
|
||||||
|
genres: [],
|
||||||
|
season: '',
|
||||||
|
episode: '',
|
||||||
|
releaseYear: ''
|
||||||
|
},
|
||||||
|
startTime: 1738868400,
|
||||||
|
endTime: 1738872000,
|
||||||
|
thumbnail: ''
|
||||||
|
},
|
||||||
|
{
|
||||||
|
program: {
|
||||||
|
title: 'Your Afternoon on Spectrum News 1 - Central NY',
|
||||||
|
episodeTitle: '',
|
||||||
|
shortDesc: '',
|
||||||
|
genres: [],
|
||||||
|
season: '',
|
||||||
|
episode: '',
|
||||||
|
releaseYear: ''
|
||||||
|
},
|
||||||
|
startTime: 1738872000,
|
||||||
|
endTime: 1738875600,
|
||||||
|
thumbnail: ''
|
||||||
|
}
|
||||||
|
]
|
||||||
|
})
|
||||||
|
|
||||||
|
const results = parser({ content, date })
|
||||||
|
|
||||||
|
expect(results.length).toBe(2)
|
||||||
|
expect(results[0]).toMatchObject({
|
||||||
|
title: 'Your Afternoon on Spectrum News 1 - Central NY',
|
||||||
|
start: dayjs.unix(1738868400).utc().format('YYYY-MM-DD HH:mm:ss'),
|
||||||
|
stop: dayjs.unix(1738872000).utc().format('YYYY-MM-DD HH:mm:ss')
|
||||||
|
})
|
||||||
|
expect(results[1]).toMatchObject({
|
||||||
|
title: 'Your Afternoon on Spectrum News 1 - Central NY',
|
||||||
|
start: dayjs.unix(1738872000).utc().format('YYYY-MM-DD HH:mm:ss'),
|
||||||
|
stop: dayjs.unix(1738875600).utc().format('YYYY-MM-DD HH:mm:ss')
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
it('can handle empty guide', () => {
|
||||||
|
const result = parser({
|
||||||
|
date,
|
||||||
|
channel,
|
||||||
|
content: '{}'
|
||||||
|
})
|
||||||
|
|
||||||
|
expect(result).toEqual([])
|
||||||
|
})
|
Loading…
Add table
Add a link
Reference in a new issue