Replace LF endings with CRLF

This commit is contained in:
freearhey
2025-07-31 22:29:01 +03:00
parent 17e3b4ddda
commit 29aa427923
379 changed files with 29332 additions and 29332 deletions

View File

@@ -1,71 +1,71 @@
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)
module.exports = {
site: 'zap2it.com',
days: 2,
url: 'https://tvlistings.gracenote.com/api/sslgrid',
request: {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36',
},
data({ date, channel }) {
const [device, lineupId, headendId, countryCode, postalCode, prgsvcid] = channel.site_id.split('/')
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).add(dayjs(p.start).utcOffset(), 'minute').isBetween(date.startOf('day').subtract(dayjs().utcOffset(), 'minute').utc(),
date.endOf('day').subtract(dayjs().utcOffset(), 'minute').utc(), 'second', '[]'))
}
}
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)
module.exports = {
site: 'zap2it.com',
days: 2,
url: 'https://tvlistings.gracenote.com/api/sslgrid',
request: {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36',
},
data({ date, channel }) {
const [device, lineupId, headendId, countryCode, postalCode, prgsvcid] = channel.site_id.split('/')
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).add(dayjs(p.start).utcOffset(), 'minute').isBetween(date.startOf('day').subtract(dayjs().utcOffset(), 'minute').utc(),
date.endOf('day').subtract(dayjs().utcOffset(), 'minute').utc(), 'second', '[]'))
}
}

View File

@@ -1,74 +1,74 @@
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)
// Se cambia la fecha para que, tras aplicar el offset (debido a TZ=Pacific/Nauru),
// el rango filtrado incluya los programas cuyo start en UTC es el 6 de febrero.
const date = dayjs('2025-02-07', '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.gracenote.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([])
})
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)
// Se cambia la fecha para que, tras aplicar el offset (debido a TZ=Pacific/Nauru),
// el rango filtrado incluya los programas cuyo start en UTC es el 6 de febrero.
const date = dayjs('2025-02-07', '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.gracenote.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([])
})