UNPKG

@range3/holo

Version:

Hololive Tools for CLI

66 lines (54 loc) 1.4 kB
const got = require('got') const { DateTime } = require('luxon') const SchedulePage = require('./schedule-page') class ProgramSchedule { static get GROUP_ALL () { return '/' } static get GROUP_HOLOLIVE () { return '/lives/hololive' } static get GROUP_HOLOSTARS () { return '/lives/holostars' } static get GROUP_INNK () { return '/lives/innk' } static get GROUP_HOLOID () { return '/lives/indonesia' } static get GROUP_HOLOEN () { return '/lives/english' } constructor (options = {}) { this.zone = options.zone || process.env.TZ || 'Asia/Tokyo' this.group = options.group || ProgramSchedule.GROUP_ALL this.programs = [] this.baseUrl = 'https://schedule.hololive.tv' } async fetch () { const res = await got(`${this.baseUrl}${this.group}`, { headers: { cookie: `timezone=${this.zone}`, }, }) const schedulePage = SchedulePage.scrape(res.body) this.programs = schedulePage.programs.map(program => { return { dateTime: DateTime.fromObject({ zone: this.zone, ...program.dateTime, }), isOnAir: program.isOnAir, link: program.link, name: program.name, thumbnail: program.thumbnail, avatars: program.avatars, } }) } toArray () { return this.programs } } module.exports = ProgramSchedule