[fix] fixing skyperfectv.co.jp

This commit is contained in:
Animenosekai committed 2024-10-13 21:38:15 +02:00
1 parent 276414bc63
commit aa77d8abe6
3 files changed
+14 -13

No files matched your search

+3 -3
View File
@@ -17,9 +17,9 @@ module.exports = {
const id = `SV${channel.site_id}EPG${date.format('YYYYMMDD')}`
return `https://s.mxtv.jp/bangumi_file/json01/${id}.json`
},
parser: function ({ content, channel, date }) {
parser: function ({ content }) {
let programs = []
const items = parseItems(content, channel, date)
const items = parseItems(content)
items.forEach(item => {
programs.push({
title: item.Event_name,
@@ -32,7 +32,7 @@ module.exports = {
})
return programs
},
async channels() {
channels() {
return [
{
lang: 'ja',
@@ -11,7 +11,7 @@ dayjs.extend(timezone)
dayjs.extend(customParseFormat)
dayjs.extend(duration)
module.exports = {
const exported = {
site: 'skyperfectv.co.jp',
days: 1,
lang: 'ja',
@@ -25,7 +25,7 @@ module.exports = {
},
// Specific function that permits to gather NSFW channels (needs confirmation)
async fetchSchedule({ date, channel }) {
const url = this.url({ date, channel })
const url = exported.url({ date, channel })
const response = await axios.get(url, {
headers: {
'Cookie': 'adult_auth=true'
@@ -33,9 +33,8 @@ module.exports = {
})
return response.data
},
async parser({ date, channel }) {
const sched = await this.fetchSchedule({ date, channel })
const $ = cheerio.load(sched)
parser({ content, date }) {
const $ = cheerio.load(content)
const programs = []
const sections = [
@@ -110,4 +109,6 @@ module.exports = {
return await fetchAllChannels()
}
}
}
module.exports = exported
@@ -21,14 +21,14 @@ it('can generate valid url', () => {
expect(result).toBe('https://www.skyperfectv.co.jp/program/schedule/basic/channel:BS193/date:240801')
})
it('can parse response', () => {
const result = parser({ date, channel, content }).map(p => {
it('can parse response', async () => {
const result = (await parser({ date, channel, content })).map(p => {
p.start = p.start.toJSON()
p.stop = p.stop.toJSON()
return p
})
expect(result).toMatchObject([
expect(result.filter(p => p.title == 'ヴァルキリードライヴマーメイド #06')).toMatchObject([
{
start: '2024-07-31T19:00:00.000Z', // UTC time
stop: '2024-07-31T19:30:00.000Z', // UTC
@@ -43,7 +43,7 @@ const empty = `
<!DOCTYPE html><html><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width"><meta name="format-detection" content="telephone=no"><title>番組表(アニメシアターX(AT-X))|スカパー!</title><!-- Google Tag Manager 2021/03--><script>(function (w, d, s, l, i) { w[l] = w[l] || []; w[l].push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' }); var f = d.getElementsByTagName(s)[0], j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f); })(window, document, 'script', 'dataLayer', 'GTM-K73Z39');</script><!-- End Google Tag Manager 2021/03 --><meta property="og:title" content="番組表(アニメシアターX(AT-X))|スカパー!"><meta property="og:type" content="article"><meta property="og:description" content="「アニメシアターX(AT-X)」を見るならスカパー!で。直近30日間の放送予定を番組表形式でご確認いただけます。"><meta property="og:url" content="https://www.skyperfectv.co.jp/program/schedule/basic/channel:CS333/date:240801"><meta property="og:image" content="https://www.skyperfectv.co.jp/global/assets/images/fb_logo.jpg"><meta property="og:site_name" content="【公式】スカパー!スポーツ、音楽、アニメ、 映画をTVでもスマホでも視聴可"><meta property="og:locale" content="ja_JP"><meta property="fb:app_id" content="357325544353129"><meta name="description" content="「アニメシアターX(AT-X)」を見るならスカパー!で。直近30日間の放送予定を番組表形式でご確認いただけます。"><meta name="Keywords" content="番組,スカパー,テレビ,放送,予定表"><!-- ICON --><link rel="shortcut icon" href="/global/assets/images/fav/favicon.ico" type="image/vnd.microsoft.icon"><link rel="apple-touch-icon" href="/global/assets/images/fav/apple-touch-icon.png"><link href="/global/assets/css/global.css" rel="stylesheet"><link href="/assets/css/style.css" rel="stylesheet"><link href="/program/schedule/css/style.css?m=10" rel="stylesheet"><link rel="canonical" href="https://www.skyperfectv.co.jp/program/schedule/basic/channel:CS333/"></head><body class="fw"><!-- Google Tag Manager (noscript) 2021/3 --><noscript><iframesrc="https: //www.googletagmanager.com/ns.html?id=GTM-K73Z39" height="0" width="0"style="display:none;visibility:hidden"></iframe></noscript><input type="hidden" id="basic_plan_flg"value="0" /><!-- End Google Tag Manager (noscript) 2021/3 --><!-- .l-header include --><div id="header"></div><!-- /.l-header include --><div class="l-container" id="j-container"><!-- .l-side include --><div id="side"></div><!-- /.l-side include --><div class="l-container__main" id="j-container-main"><main><div id="mainContents"><div id="js-loading" class="p-loading"><div class="p-loading__inner"><img class="p-loading__img"src="/global/assets/images/icon/icon_loading.svg" alt=""><p class="p-loading__txt">現在マイリストを更新中です。</p></div></div><div id="js-regist-loading" class="p-loading"><div class="p-loading__inner"><img class="p-loading__img"src="/global/assets/images/icon/icon_loading.svg" alt=""><p class="p-loading__txt">現在マイリストに登録中です。</p></div></div><div id="js-delete-loading" class="p-loading"><div class="p-loading__inner"><img class="p-loading__img"src="/global/assets/images/icon/icon_loading.svg" alt=""><p class="p-loading__txt">現在マイリストから削除中です。</p></div></div><!-- コンテンツをいれてください --><!-- 選択されたサービス--><input type="hidden" id="selectedService"value="basic"><!-- 選択されたチャンネル--><input type="hidden" id="selectedChannel"value="CS333"><!-- 選択された日付--><input type="hidden" id="selectedDate"value="240801"><!-- チャンネルアイコン--><input type="hidden" id="channelIcon" value=""><div id="js-schedule-wrapper" class="p-schedule-wrapper"><div id="js-hdr-normal" class="p-hdr p-hdr--normal"><div class="p-hdr__wrap"><div class="p-hdr__inner"><h1 class="p-hdr__ttl">番組放送予定表</h1><div class="p-hdr__box js-p-hdr-box"><div class="p-status"><div class="p-status__box"><div class="p-status__id"></div><div class="p-status__name"><spanclass="p-status__name__ttl"></span><spanclass="p-status__name__ico"style="display:none"><img src="/global/assets/images/icon/icon_plan_basic.svg"alt="基本プラン"></span></div></div></div><div class="p-switch p-hdr__switch"><button type="button"class="p-switch__btn js-switch-btn"><spanclass="p-switch__label">チャンネル選択</span><iclass="p-switch__icon"><svg><use href="#menu"></use></svg></i></button></div></div><div class="p-hdr__cal p-calendar js-cal"><buttonclass="p-calendar__btnjs-cal-toggle"><svg id="編集モード" xmlns="http://www.w3.org/2000/svg"viewBox="0 0 236 262"><defs><style>.cls-1 {fill: #fff;}.clLine truncated
`
it('can handle empty guide', () => {
it('can handle empty guide', async () => {
const result = parser({
date,
channel,