Update ontvtonight.com

This commit is contained in:
freearhey
2023-11-26 11:27:13 +03:00
parent eaf72e0ae8
commit 2dafd22506
7 changed files with 5312 additions and 208 deletions

View File

@@ -8,20 +8,13 @@ dayjs.extend(utc)
dayjs.extend(timezone)
dayjs.extend(customParseFormat)
const tz = {
au: 'Australia/Sydney',
ie: 'Europe/Dublin',
uk: 'Europe/London',
us: 'America/New_York'
}
module.exports = {
site: 'ontvtonight.com',
days: 2,
url: function ({ date, channel }) {
const [region, id] = channel.site_id.split('#')
let url = 'https://www.ontvtonight.com'
if (region) url += `/${region}`
if (region && region !== 'us') url += `/${region}`
url += `/guide/listings/channel/${id}.html?dt=${date.format('YYYY-MM-DD')}`
return url
@@ -50,16 +43,124 @@ module.exports = {
})
return programs
},
async channels({ country }) {
const axios = require('axios')
const _ = require('lodash')
const providers = {
au: ['o', 'a'],
ca: [
'Y464014423',
'-464014503',
'-464014594',
'-464014738',
'X3153330286',
'X464014503',
'X464013696',
'X464014594',
'X464014738',
'X464014470',
'X464013514',
'X1210684931',
'T3153330286',
'T464014503',
'T1810267316',
'T1210684931'
],
us: [
'Y341768590',
'Y1693286984',
'Y8833268284',
'-341767428',
'-341769166',
'-341769884',
'-3679985536',
'-341766967',
'X4100694897',
'X341767428',
'X341768182',
'X341767434',
'X341768272',
'X341769884',
'X3679985536',
'X3679984937',
'X341764975',
'X3679985052',
'X341766967',
'K4805071612',
'K5039655414'
]
}
const regions = {
au: [
1, 2, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 17, 18, 29, 28, 27, 26, 25, 23, 22,
21, 20, 19, 24, 30, 31, 32, 33, 34, 35, 36, 39, 38, 37, 40, 41, 42, 43, 44, 45, 46, 47, 48,
49, 50, 51, 52, 53
],
ca: [null],
us: [null]
}
const zipcodes = {
au: [null],
ca: ['M5G1P5', 'H3B1X8', 'V6Z2H7', 'T2P3E6', 'T5J2Z2', 'K1P1B1'],
us: [10199, 90052, 60607, 77201, 85026, 19104, 78284, 92199, 75260]
}
const channels = []
for (let provider of providers[country]) {
for (let zipcode of zipcodes[country]) {
for (let region of regions[country]) {
let url = 'https://www.ontvtonight.com'
if (country === 'us') url += '/guide/schedule'
else url += `/${country}/guide/schedule`
const data = await axios
.post(url, null, {
params: {
provider,
region,
zipcode,
TVperiod: 'Night',
date: dayjs().format('YYYY-MM-DD'),
st: 0,
is_mobile: 1
}
})
.then(r => r.data)
.catch(console.log)
const $ = cheerio.load(data)
$('.channelname').each((i, el) => {
let name = $(el).find('center > a:eq(1)').text()
name = name.replace(/\-\-/gi, '-')
const url = $(el).find('center > a:eq(1)').attr('href')
const [, number, slug] = url.match(/\/(\d+)\/(.*)\.html$/)
channels.push({
lang: 'en',
name,
site_id: `${country}#${number}/${slug}`
})
})
}
}
}
return _.uniqBy(channels, 'site_id')
}
}
function parseStart($item, date, channel) {
const timezones = {
au: 'Australia/Sydney',
ca: 'America/Toronto',
us: 'America/New_York'
}
const [region] = channel.site_id.split('#')
const timezone = region ? tz[region] : tz['uk']
const timeString = $item('td:nth-child(1) > h5').text().trim()
const dateString = `${date.format('YYYY-MM-DD')} ${timeString}`
return dayjs.tz(dateString, 'YYYY-MM-DD H:mm a', timezone)
return dayjs.tz(dateString, 'YYYY-MM-DD H:mm a', timezones[region])
}
function parseTitle($item) {