extend extracted information for web.magentatv.de

Now populates:
 - season
 - episode
 - director
 - producers
 - adapters
 - country
 - date
 - urls
This commit is contained in:
Lukas Wagner
2024-11-05 18:38:18 +01:00
parent 7610f7b9f5
commit 3a8ea65cd4
3 changed files with 139 additions and 5 deletions

View File

@@ -3,6 +3,7 @@ const dayjs = require('dayjs')
const utc = require('dayjs/plugin/utc')
const customParseFormat = require('dayjs/plugin/customParseFormat')
const fetch = require('node-fetch')
const { upperCase } = require('lodash')
let X_CSRFTOKEN
let COOKIE
@@ -29,7 +30,7 @@ module.exports = {
offset: 0,
properties: [
{
include: 'endtime,genres,id,name,starttime,channelid,pictures,introduce',
include: 'endtime,genres,id,name,starttime,channelid,pictures,introduce,subName,seasonNum,subNum,cast,country,producedate,externalIds',
name: 'playbill'
}
],
@@ -50,7 +51,16 @@ module.exports = {
image: parseImage(item),
category: parseCategory(item),
start: parseStart(item),
stop: parseStop(item)
stop: parseStop(item),
sub_title: item.subName,
season: item.seasonNum,
episode: item.subNum,
directors: parseDirectors(item),
producers: parseProducers(item),
adapters: parseAdapters(item),
country: upperCase(item.country),
date: item.producedate,
urls: parseUrls(item)
})
})
return programs
@@ -102,6 +112,38 @@ function parseCategory(item) {
: []
}
function parseDirectors(item) {
if (!item.cast || !item.cast.director) return [];
return item.cast.director
.replace('und', ',')
.split(',')
.map(i => i.trim());
}
function parseProducers(item) {
if (!item.cast || !item.cast.producer) return [];
return item.cast.producer
.replace('und', ',')
.split(',')
.map(i => i.trim())
}
function parseAdapters(item) {
if (!item.cast || !item.cast.adaptor) return [];
return item.cast.adaptor
.replace('und', ',')
.split(',')
.map(i => i.trim())
}
function parseUrls(item) {
// currently only a imdb id is returned by the api, thus we can construct the url here
if (!item.externalIds) return [];
return JSON.parse(item.externalIds)
.filter(externalId => externalId.type === 'imdb' && externalId.id)
.map(externalId => ({ system: 'imdb', value: `https://www.imdb.com/title/${externalId.id}` }))
}
function parseImage(item) {
if (!Array.isArray(item.pictures) || !item.pictures.length) return null