Fixes linter errors

This commit is contained in:
freearhey 2023-10-15 14:08:23 +03:00
parent 57e508fc3b
commit 63c86a2b30
393 changed files with 28447 additions and 28443 deletions

View file

@ -1,81 +1,81 @@
const axios = require('axios')
const dayjs = require('dayjs')
const _ = require('lodash')
module.exports = {
site: 'tvmusor.hu',
days: 2,
url: 'http://www.tvmusor.hu/a/get-events/',
request: {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
},
data({ channel, date }) {
const params = new URLSearchParams()
params.append(
'data',
JSON.stringify({
blocks: [`${channel.site_id}|${date.format('YYYY-MM-DD')}`]
})
)
return params
}
},
parser({ content, channel, date }) {
let programs = []
const items = parseItems(content, channel, date)
items.forEach(item => {
const prev = programs[programs.length - 1]
let start = dayjs(item.e)
let stop = dayjs(item.f)
if (prev) {
start = prev.stop
}
programs.push({
title: item.j,
category: item.h,
description: item.c,
icon: parseIcon(item),
start,
stop
})
})
return programs
},
async channels() {
const data = await axios
.get('http://www.tvmusor.hu/most/')
.then(r => r.data)
.catch(console.log)
const [, channelData] = data.match(/const CHANNEL_DATA = (.*);/)
const json = channelData.replace('},}', '}}').replace(/(\d+):/g, '"$1":')
const channels = JSON.parse(json)
return Object.values(channels).map(item => {
return {
lang: 'hu',
site_id: item.id,
name: item.name
}
})
}
}
function parseIcon(item) {
return item.z ? `http://www.tvmusor.hu/images/events/408/${item.z}` : null
}
function parseItems(content, channel, date) {
const data = JSON.parse(content)
if (!data || !data.data || !data.data.loadedBlocks) return []
const blocks = data.data.loadedBlocks
const blockId = `${channel.site_id}_${date.format('YYYY-MM-DD')}`
if (!Array.isArray(blocks[blockId])) return []
return _.uniqBy(_.uniqBy(blocks[blockId], 'e'), 'b')
}
const axios = require('axios')
const dayjs = require('dayjs')
const _ = require('lodash')
module.exports = {
site: 'tvmusor.hu',
days: 2,
url: 'http://www.tvmusor.hu/a/get-events/',
request: {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
},
data({ channel, date }) {
const params = new URLSearchParams()
params.append(
'data',
JSON.stringify({
blocks: [`${channel.site_id}|${date.format('YYYY-MM-DD')}`]
})
)
return params
}
},
parser({ content, channel, date }) {
let programs = []
const items = parseItems(content, channel, date)
items.forEach(item => {
const prev = programs[programs.length - 1]
let start = dayjs(item.e)
let stop = dayjs(item.f)
if (prev) {
start = prev.stop
}
programs.push({
title: item.j,
category: item.h,
description: item.c,
icon: parseIcon(item),
start,
stop
})
})
return programs
},
async channels() {
const data = await axios
.get('http://www.tvmusor.hu/most/')
.then(r => r.data)
.catch(console.log)
const [, channelData] = data.match(/const CHANNEL_DATA = (.*);/)
const json = channelData.replace('},}', '}}').replace(/(\d+):/g, '"$1":')
const channels = JSON.parse(json)
return Object.values(channels).map(item => {
return {
lang: 'hu',
site_id: item.id,
name: item.name
}
})
}
}
function parseIcon(item) {
return item.z ? `http://www.tvmusor.hu/images/events/408/${item.z}` : null
}
function parseItems(content, channel, date) {
const data = JSON.parse(content)
if (!data || !data.data || !data.data.loadedBlocks) return []
const blocks = data.data.loadedBlocks
const blockId = `${channel.site_id}_${date.format('YYYY-MM-DD')}`
if (!Array.isArray(blocks[blockId])) return []
return _.uniqBy(_.uniqBy(blocks[blockId], 'e'), 'b')
}

View file

@ -1,71 +1,71 @@
// npm run channels:parse -- --config=./sites/tvmusor.hu/tvmusor.hu.config.js --output=./sites/tvmusor.hu/tvmusor.hu.channels.xml
// npm run grab -- --site=tvmusor.hu
const { parser, url, request } = require('./tvmusor.hu.config.js')
const fs = require('fs')
const path = require('path')
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('2022-11-19', 'YYYY-MM-DD').startOf('d')
const channel = {
site_id: '290',
xmltv_id: 'M4Sport.hu'
}
it('can generate valid url', () => {
expect(url).toBe('http://www.tvmusor.hu/a/get-events/')
})
it('can generate valid request method', () => {
expect(request.method).toBe('POST')
})
it('can generate valid request headers', () => {
expect(request.headers).toMatchObject({
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
})
})
it('can generate valid request data', () => {
const result = request.data({ channel, date })
expect(result.get('data')).toBe('{"blocks":["290|2022-11-19"]}')
})
it('can parse response', () => {
const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.json'))
let results = parser({ content, channel, date })
results = results.map(p => {
p.start = p.start.toJSON()
p.stop = p.stop.toJSON()
return p
})
expect(results[0]).toMatchObject({
start: '2022-11-18T23:30:00.000Z',
stop: '2022-11-19T00:55:00.000Z',
title: 'Rövidpályás Úszó Országos Bajnokság',
category: 'sportműsor',
description: 'Forma-1 magazin. Hírek, információk, érdekességek a Forma-1 világából.',
icon: 'http://www.tvmusor.hu/images/events/408/f1e45193930943d9ee29769e0afa902aff0e4a90-better-call-saul.jpg'
})
expect(results[1]).toMatchObject({
start: '2022-11-19T00:55:00.000Z',
stop: '2022-11-19T01:10:00.000Z',
title: 'Sportlövészet',
category: 'sportműsor'
})
})
it('can handle empty guide', () => {
const result = parser({
date,
channel,
content: '{"status":"error","reason":"invalid blocks"}'
})
expect(result).toMatchObject([])
})
// npm run channels:parse -- --config=./sites/tvmusor.hu/tvmusor.hu.config.js --output=./sites/tvmusor.hu/tvmusor.hu.channels.xml
// npm run grab -- --site=tvmusor.hu
const { parser, url, request } = require('./tvmusor.hu.config.js')
const fs = require('fs')
const path = require('path')
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('2022-11-19', 'YYYY-MM-DD').startOf('d')
const channel = {
site_id: '290',
xmltv_id: 'M4Sport.hu'
}
it('can generate valid url', () => {
expect(url).toBe('http://www.tvmusor.hu/a/get-events/')
})
it('can generate valid request method', () => {
expect(request.method).toBe('POST')
})
it('can generate valid request headers', () => {
expect(request.headers).toMatchObject({
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
})
})
it('can generate valid request data', () => {
const result = request.data({ channel, date })
expect(result.get('data')).toBe('{"blocks":["290|2022-11-19"]}')
})
it('can parse response', () => {
const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.json'))
let results = parser({ content, channel, date })
results = results.map(p => {
p.start = p.start.toJSON()
p.stop = p.stop.toJSON()
return p
})
expect(results[0]).toMatchObject({
start: '2022-11-18T23:30:00.000Z',
stop: '2022-11-19T00:55:00.000Z',
title: 'Rövidpályás Úszó Országos Bajnokság',
category: 'sportműsor',
description: 'Forma-1 magazin. Hírek, információk, érdekességek a Forma-1 világából.',
icon: 'http://www.tvmusor.hu/images/events/408/f1e45193930943d9ee29769e0afa902aff0e4a90-better-call-saul.jpg'
})
expect(results[1]).toMatchObject({
start: '2022-11-19T00:55:00.000Z',
stop: '2022-11-19T01:10:00.000Z',
title: 'Sportlövészet',
category: 'sportműsor'
})
})
it('can handle empty guide', () => {
const result = parser({
date,
channel,
content: '{"status":"error","reason":"invalid blocks"}'
})
expect(result).toMatchObject([])
})