mirror of
https://github.com/iptv-org/epg.git
synced 2025-05-09 16:40:07 -04:00
Fix linter issues in sites/
This commit is contained in:
parent
d6d20b6413
commit
5df982bb7c
129 changed files with 3316 additions and 3226 deletions
|
@ -2,9 +2,7 @@ const dayjs = require('dayjs')
|
|||
const doFetch = require('@ntlab/sfetch')
|
||||
const debug = require('debug')('site:tv.yandex.ru')
|
||||
|
||||
doFetch
|
||||
.setDebugger(debug)
|
||||
.setMaxWorker(10)
|
||||
doFetch.setDebugger(debug).setMaxWorker(10)
|
||||
|
||||
// enable to fetch guide description but its take a longer time
|
||||
const detailedGuide = true
|
||||
|
@ -12,14 +10,16 @@ const detailedGuide = true
|
|||
// update this data by heading to https://tv.yandex.ru and change the values accordingly
|
||||
const cookies = {
|
||||
i: 'eIUfSP+/mzQWXcH+Cuz8o1vY+D2K8fhBd6Sj0xvbPZeO4l3cY+BvMp8fFIuM17l6UE1Z5+R2a18lP00ex9iYVJ+VT+c=',
|
||||
spravka: 'dD0xNzM0MjA0NjM4O2k9MTI1LjE2NC4xNDkuMjAwO0Q9QTVCQ0IyOTI5RDQxNkU5NkEyOTcwMTNDMzZGMDAzNjRDNTFFNDM4QkE2Q0IyOTJDRjhCOTZDRDIzODdBQzk2MzRFRDc5QTk2Qjc2OEI1MUY5MTM5M0QzNkY3OEQ2OUY3OTUwNkQ3RjBCOEJGOEJDMjAwMTQ0RDUwRkFCMDNEQzJFMDI2OEI5OTk5OUJBNEFERUYwOEQ1MjUwQTE0QTI3RDU1MEQwM0U0O3U9MTczNDIwNDYzODUyNDYyNzg1NDtoPTIxNTc0ZTc2MDQ1ZjcwMDBkYmY0NTVkM2Q2ZWMyM2Y1',
|
||||
spravka:
|
||||
'dD0xNzM0MjA0NjM4O2k9MTI1LjE2NC4xNDkuMjAwO0Q9QTVCQ0IyOTI5RDQxNkU5NkEyOTcwMTNDMzZGMDAzNjRDNTFFNDM4QkE2Q0IyOTJDRjhCOTZDRDIzODdBQzk2MzRFRDc5QTk2Qjc2OEI1MUY5MTM5M0QzNkY3OEQ2OUY3OTUwNkQ3RjBCOEJGOEJDMjAwMTQ0RDUwRkFCMDNEQzJFMDI2OEI5OTk5OUJBNEFERUYwOEQ1MjUwQTE0QTI3RDU1MEQwM0U0O3U9MTczNDIwNDYzODUyNDYyNzg1NDtoPTIxNTc0ZTc2MDQ1ZjcwMDBkYmY0NTVkM2Q2ZWMyM2Y1',
|
||||
yandexuid: '1197179041732383499',
|
||||
yashr: '4682342911732383504',
|
||||
yuidss: '1197179041732383499',
|
||||
user_display: 824,
|
||||
user_display: 824
|
||||
}
|
||||
const headers = {
|
||||
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 OPR/114.0.0.0',
|
||||
'User-Agent':
|
||||
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 OPR/114.0.0.0'
|
||||
}
|
||||
const caches = {}
|
||||
|
||||
|
@ -50,7 +50,9 @@ module.exports = {
|
|||
}
|
||||
caches[cacheid].forEach(schedule => {
|
||||
schedule.events
|
||||
.filter(event => event.channelFamilyId == channel.site_id && date.isSame(event.start, 'day'))
|
||||
.filter(
|
||||
event => event.channelFamilyId == channel.site_id && date.isSame(event.start, 'day')
|
||||
)
|
||||
.forEach(event => {
|
||||
if (events.indexOf(event.id) < 0) {
|
||||
events.push(event.id)
|
||||
|
@ -171,7 +173,10 @@ function parseContent(content, date, checkOnly = false) {
|
|||
content = content.toString()
|
||||
}
|
||||
// got captcha, its look like our cookies has expired
|
||||
if (content?.type === 'captcha' || (typeof content === 'string' && content.match(/SmartCaptcha/))) {
|
||||
if (
|
||||
content?.type === 'captcha' ||
|
||||
(typeof content === 'string' && content.match(/SmartCaptcha/))
|
||||
) {
|
||||
throw new Error('Got captcha, please goto https://tv.yandex.ru and update cookies!')
|
||||
}
|
||||
if (typeof content === 'object') {
|
||||
|
@ -210,35 +215,41 @@ function parseContent(content, date, checkOnly = false) {
|
|||
headers['X-User-Session-Id'] = sessionId
|
||||
}
|
||||
if (checkOnly && region && tvSk.key && sessionId) {
|
||||
valid = true;
|
||||
valid = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return checkOnly ? valid : [queues, schedules]
|
||||
return checkOnly ? valid : [queues, schedules]
|
||||
}
|
||||
|
||||
function parseCookies(headers) {
|
||||
if (Array.isArray(headers['set-cookie'])) {
|
||||
headers['set-cookie']
|
||||
.forEach(cookie => {
|
||||
const [key, value] = cookie.split('; ')[0].split('=')
|
||||
if (cookies[key] !== value) {
|
||||
cookies[key] = value
|
||||
debug(`Update cookie ${key}=${value}`)
|
||||
}
|
||||
})
|
||||
headers['set-cookie'].forEach(cookie => {
|
||||
const [key, value] = cookie.split('; ')[0].split('=')
|
||||
if (cookies[key] !== value) {
|
||||
cookies[key] = value
|
||||
debug(`Update cookie ${key}=${value}`)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
function getSchedules(schedules) {
|
||||
return schedules.filter(schedule => schedule.events.length);
|
||||
return schedules.filter(schedule => schedule.events.length)
|
||||
}
|
||||
|
||||
function getHeaders(data = {}) {
|
||||
return Object.assign({}, headers, {
|
||||
Cookie: Object.keys(cookies).map(cookie => `${cookie}=${cookies[cookie]}`).join('; ')
|
||||
}, data)
|
||||
return Object.assign(
|
||||
{},
|
||||
headers,
|
||||
{
|
||||
Cookie: Object.keys(cookies)
|
||||
.map(cookie => `${cookie}=${cookies[cookie]}`)
|
||||
.join('; ')
|
||||
},
|
||||
data
|
||||
)
|
||||
}
|
||||
|
||||
function getUrl(date, region = null, page = null, event = null) {
|
||||
|
@ -253,7 +264,9 @@ function getUrl(date, region = null, page = null, event = null) {
|
|||
url += `${url.endsWith('/') ? '' : '/'}event?eventId=${event.id}&programCoId=`
|
||||
}
|
||||
if (date) {
|
||||
url += `${url.indexOf('?') < 0 ? '?' : '&'}date=${date.format('YYYY-MM-DD')}${!page ? '&grid=all' : ''}&period=all-day`
|
||||
url += `${url.indexOf('?') < 0 ? '?' : '&'}date=${date.format('YYYY-MM-DD')}${
|
||||
!page ? '&grid=all' : ''
|
||||
}&period=all-day`
|
||||
}
|
||||
if (page && page.id !== undefined && page.offset !== undefined) {
|
||||
url += `${url.indexOf('?') < 0 ? '?' : '&'}offset=${page.offset}`
|
||||
|
@ -266,7 +279,7 @@ function getUrl(date, region = null, page = null, event = null) {
|
|||
|
||||
function getQueue(url, referer) {
|
||||
const data = {
|
||||
'Origin': 'https://tv.yandex.ru',
|
||||
Origin: 'https://tv.yandex.ru'
|
||||
}
|
||||
if (referer) {
|
||||
data['Referer'] = referer
|
||||
|
@ -279,4 +292,4 @@ function getQueue(url, referer) {
|
|||
url,
|
||||
params: { headers }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,7 +16,7 @@ const channel = {
|
|||
site_id: '16',
|
||||
xmltv_id: 'ChannelOne.ru'
|
||||
}
|
||||
axios.get.mockImplementation((url, opts) => {
|
||||
axios.get.mockImplementation(url => {
|
||||
if (url === 'https://tv.yandex.ru/?date=2023-11-26&grid=all&period=all-day') {
|
||||
return Promise.resolve({
|
||||
headers: {},
|
||||
|
@ -29,7 +29,10 @@ axios.get.mockImplementation((url, opts) => {
|
|||
data: JSON.parse(fs.readFileSync(path.resolve(__dirname, '__data__/schedule.json')))
|
||||
})
|
||||
}
|
||||
if (url === 'https://tv.yandex.ru/api/120809/main/chunk?page=0&date=2023-11-26&period=all-day&offset=0&limit=11') {
|
||||
if (
|
||||
url ===
|
||||
'https://tv.yandex.ru/api/120809/main/chunk?page=0&date=2023-11-26&period=all-day&offset=0&limit=11'
|
||||
) {
|
||||
return Promise.resolve({
|
||||
headers: {},
|
||||
data: JSON.parse(fs.readFileSync(path.resolve(__dirname, '__data__/schedule0.json')))
|
||||
|
@ -44,9 +47,7 @@ axios.get.mockImplementation((url, opts) => {
|
|||
})
|
||||
|
||||
it('can generate valid url', () => {
|
||||
expect(url({ date })).toBe(
|
||||
'https://tv.yandex.ru/?date=2023-11-26&grid=all&period=all-day'
|
||||
)
|
||||
expect(url({ date })).toBe('https://tv.yandex.ru/?date=2023-11-26&grid=all&period=all-day')
|
||||
})
|
||||
|
||||
it('can generate valid request headers', () => {
|
||||
|
@ -63,9 +64,7 @@ it('can generate valid request headers', () => {
|
|||
|
||||
it('can parse response', async () => {
|
||||
const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.html'))
|
||||
const result = (
|
||||
await parser({ content, date, channel })
|
||||
).map(p => {
|
||||
const result = (await parser({ content, date, channel })).map(p => {
|
||||
p.start = p.start.toJSON()
|
||||
p.stop = p.stop.toJSON()
|
||||
return p
|
||||
|
@ -77,7 +76,8 @@ it('can parse response', async () => {
|
|||
stop: '2023-11-26T02:10:00.000Z',
|
||||
title: 'ПОДКАСТ.ЛАБ. Мелодии моей жизни',
|
||||
category: 'досуг',
|
||||
description: 'Впереди вся ночь и есть о чем поговорить. Фильмы, музыка, любовь, звезды, еда, мода, анекдоты, спорт, деньги, настоящее, будущее - все это в творческом эксперименте.\nЛариса Гузеева читает любовные письма. Леонид Якубович рассказывает, кого не берут в пилоты. Арина Холина - какой секс способен довести до мужа или до развода. Валерий Сюткин на ходу сочиняет песню для Карины Кросс и Вали Карнавал. Дмитрий Дибров дарит новую жизнь любимой \"Антропологии\". Денис Казанский - все о футболе, хоккее и не только.\n\"ПОДКАСТЫ. ЛАБ\" - серия подкастов разной тематики, которые невозможно проспать. Интеллектуальные дискуссии после полуночи с самыми компетентными экспертами и актуальными спикерами.'
|
||||
description:
|
||||
'Впереди вся ночь и есть о чем поговорить. Фильмы, музыка, любовь, звезды, еда, мода, анекдоты, спорт, деньги, настоящее, будущее - все это в творческом эксперименте.\nЛариса Гузеева читает любовные письма. Леонид Якубович рассказывает, кого не берут в пилоты. Арина Холина - какой секс способен довести до мужа или до развода. Валерий Сюткин на ходу сочиняет песню для Карины Кросс и Вали Карнавал. Дмитрий Дибров дарит новую жизнь любимой "Антропологии". Денис Казанский - все о футболе, хоккее и не только.\n"ПОДКАСТЫ. ЛАБ" - серия подкастов разной тематики, которые невозможно проспать. Интеллектуальные дискуссии после полуночи с самыми компетентными экспертами и актуальными спикерами.'
|
||||
}
|
||||
])
|
||||
})
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue