From 51827d1bffc31b507d9cd9b948f1982ecd327c59 Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Sat, 1 Feb 2025 00:56:43 +0300 Subject: [PATCH] Update tvtv.us.config.js --- sites/tvtv.us/tvtv.us.config.js | 52 +++++++++++++++++++++++++-------- 1 file changed, 40 insertions(+), 12 deletions(-) diff --git a/sites/tvtv.us/tvtv.us.config.js b/sites/tvtv.us/tvtv.us.config.js index 090c1171..8cda8034 100644 --- a/sites/tvtv.us/tvtv.us.config.js +++ b/sites/tvtv.us/tvtv.us.config.js @@ -1,5 +1,4 @@ const dayjs = require('dayjs') -const doFetch = require('@ntlab/sfetch') let cachedPrograms = {} @@ -11,12 +10,23 @@ module.exports = { .add(1, 'day') .toJSON()}/${channel.site_id}` }, - async parser({ content }) { + request: { + headers: { + Accept: '*/*', + Connection: 'keep-alive', + 'User-Agent': + 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36', + 'sec-ch-ua': '"Not.A/Brand";v="8", "Chromium";v="114", "Google Chrome";v="114"', + 'sec-ch-ua-mobile': '?0', + 'sec-ch-ua-platform': '"Windows"' + } + }, + async parser({ content, request }) { let programs = [] let queue = [] const items = parseItems(content) - items.forEach(item => { + for (const item of items) { const start = dayjs(item.startTime) const stop = start.add(item.duration, 'minute') @@ -31,16 +41,26 @@ module.exports = { if (item.programId && !cachedPrograms[item.programId]) { queue.push({ programId: item.programId, - url: `https://tvtv.us/api/v1/programs/${item.programId}` + url: `https://tvtv.us/api/v1/programs/${item.programId}`, + httpAgent: request.agent, + httpsAgent: request.agent, + headers: module.exports.request.headers }) } - }) + } - await doFetch(queue, (req, data) => { - if (!data || !data.title) return + const axios = require('axios') + for (const req of queue) { + await wait(5000) + + const data = await axios(req) + .then(r => r.data) + .catch(console.error) + + if (!data || !data.title) continue cachedPrograms[req.programId] = data - }) + } programs.forEach(program => { const data = cachedPrograms[program.id] @@ -81,10 +101,12 @@ function parseSeason(data) { } function parseRatings(data) { - return data.ratings.map(rating => ({ - value: rating.code, - system: rating.body - })) + return Array.isArray(data.ratings) + ? data.ratings.map(rating => ({ + value: rating.code, + system: rating.body + })) + : [] } function parseWriters(data) { @@ -118,3 +140,9 @@ function parseItems(content) { return [] } } + +function wait(ms) { + return new Promise(resolve => { + setTimeout(resolve, ms) + }) +}