const dayjs = require('dayjs')
const utc = require('dayjs/plugin/utc')
const timezone = require('dayjs/plugin/timezone')

dayjs.extend(utc)
dayjs.extend(timezone)

module.exports = {
  site: 'pluto.tv',
  days: 3,

  url: function ({ date, channel }) {
    const channelId = channel.site_id

    const localTimezone = dayjs.tz.guess()

    const startTime = dayjs(date).tz(localTimezone).startOf('day').toISOString()
    const endTime = dayjs(date).tz(localTimezone).add(this.days, 'day').endOf('day').toISOString()

    const generatedUrl = `https://api.pluto.tv/v2/channels/${channelId}?start=${startTime}&stop=${endTime}`
    return generatedUrl
  },

  parser: function ({ content }) {
    const data = JSON.parse(content)
    const programs = []

    if (data.timelines) {
      data.timelines.forEach(item => {
        programs.push({
          title: item.title,
          subTitle: item.episode?.name || '',
          description: item.episode?.description || '',
          episode: item.episode?.number || '',
          season: item.episode?.season || '',
          actors: item.episode?.clip?.actors || [],
          categories: [item.episode?.genre, item.episode?.subGenre].filter(Boolean),
          rating: item.episode?.rating || '',
          date: item.episode?.clip?.originalReleaseDate || '',
          icon: item.episode?.series?.tile?.path || '',
          start: item.start,
          stop: item.stop
        })
      })
    }

    return programs
  }
}
