From 84525ca40c8d1817fff534224963c27b9a9ffb9d Mon Sep 17 00:00:00 2001 From: Animenosekai <40539549+Animenosekai@users.noreply.github.com> Date: Sat, 27 Jul 2024 17:47:02 +0200 Subject: [PATCH 01/14] [add] adding the IDs for MTV, Mystery Channel, Space Shower, MONDO, Nikkei CNBC, Pachinko Pachislo and GSTV [add] adding TSS from JCOM --- .../tvguide.myjcom.jp.channels.xml | 15 ++++++++------- yarn.lock | 6 +++--- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/sites/tvguide.myjcom.jp/tvguide.myjcom.jp.channels.xml b/sites/tvguide.myjcom.jp/tvguide.myjcom.jp.channels.xml index 5ffd05b1..ba94bcd4 100644 --- a/sites/tvguide.myjcom.jp/tvguide.myjcom.jp.channels.xml +++ b/sites/tvguide.myjcom.jp/tvguide.myjcom.jp.channels.xml @@ -121,13 +121,13 @@ オンデマンドチャンネル290 オンデマンドチャンネル440 ショップチャンネル プラス - MTV HD - ミステリーチャンネル - 音楽・ライブ! スペースシャワーTV HD - MONDOTV HD - 日経CNBC - パチンコ★パチスロTV! - ジュエリー☆GSTV + MTV HD + ミステリーチャンネル + 音楽・ライブ! スペースシャワーTV HD + MONDOTV HD + 日経CNBC + パチンコ★パチスロTV! + ジュエリー☆GSTV JSPORTS1 (4K) JSPORTS2 (4K) JSPORTS3 (4K) @@ -149,4 +149,5 @@ KBS京都 読売テレビ サンテレビ + TSS diff --git a/yarn.lock b/yarn.lock index e8cd5a6c..d0e57d59 100644 --- a/yarn.lock +++ b/yarn.lock @@ -331,10 +331,10 @@ enabled "2.0.x" kuler "^2.0.0" -"@esbuild/darwin-x64@0.18.20": +"@esbuild/darwin-arm64@0.18.20": version "0.18.20" - resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz" - integrity sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ== + resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz" + integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA== "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" From acc18d1f07dca71f3ff5970c512067215a84cad8 Mon Sep 17 00:00:00 2001 From: Animenosekai <40539549+Animenosekai@users.noreply.github.com> Date: Wed, 31 Jul 2024 14:24:51 +0200 Subject: [PATCH 02/14] [add] adding s.mxtv.jp --- sites/s.mxtv.jp/README.md | 28 +++++++++ sites/s.mxtv.jp/s.mxtv.jp.channels.xml | 5 ++ sites/s.mxtv.jp/s.mxtv.jp.config.js | 81 ++++++++++++++++++++++++++ sites/s.mxtv.jp/s.mxtv.jp.test.js | 47 +++++++++++++++ 4 files changed, 161 insertions(+) create mode 100644 sites/s.mxtv.jp/README.md create mode 100644 sites/s.mxtv.jp/s.mxtv.jp.channels.xml create mode 100644 sites/s.mxtv.jp/s.mxtv.jp.config.js create mode 100644 sites/s.mxtv.jp/s.mxtv.jp.test.js diff --git a/sites/s.mxtv.jp/README.md b/sites/s.mxtv.jp/README.md new file mode 100644 index 00000000..ffe7c67b --- /dev/null +++ b/sites/s.mxtv.jp/README.md @@ -0,0 +1,28 @@ +# s.mxtv.jp + + + +## Index + +- [Index](#index) +- [Download the guide](#download-the-guide) +- [Update channel list](#update-channel-list) +- [Test](#test) + +## Download the guide + +```sh +npm run grab -- --site=s.mxtv.jp +``` + +## Update channel list + +```sh +npm run channels:parse -- --config=./sites/s.mxtv.jp/s.mxtv.jp.config.js --output=./sites/s.mxtv.jp/s.mxtv.jp.channels.xml +``` + +## Test + +```sh +npm test -- s.mxtv.jp +``` diff --git a/sites/s.mxtv.jp/s.mxtv.jp.channels.xml b/sites/s.mxtv.jp/s.mxtv.jp.channels.xml new file mode 100644 index 00000000..36a0de80 --- /dev/null +++ b/sites/s.mxtv.jp/s.mxtv.jp.channels.xml @@ -0,0 +1,5 @@ + + + Tokyo MX1 + Tokyo MX2 + diff --git a/sites/s.mxtv.jp/s.mxtv.jp.config.js b/sites/s.mxtv.jp/s.mxtv.jp.config.js new file mode 100644 index 00000000..1992ec45 --- /dev/null +++ b/sites/s.mxtv.jp/s.mxtv.jp.config.js @@ -0,0 +1,81 @@ +const axios = require('axios') +const dayjs = require('dayjs') +const duration = require("dayjs/plugin/duration") +const utc = require('dayjs/plugin/utc') +const timezone = require('dayjs/plugin/timezone') +const customParseFormat = require('dayjs/plugin/customParseFormat') + +dayjs.extend(utc) +dayjs.extend(timezone) +dayjs.extend(customParseFormat) +dayjs.extend(duration) + +module.exports = { + site: 's.mxtv.jp', + days: 1, + url: function ({ date, channel }) { + 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 }) { + let programs = [] + const items = parseItems(content, channel, date) + items.forEach(item => { + programs.push({ + title: item.Event_name, + description: item.Event_text, + category: parseCategory(item), + image: parseImage(item), + start: parseStart(item), + stop: parseStop(item) + }) + }) + return programs + }, + async channels() { + return [ + { + lang: 'ja', + site_id: '1', + name: 'Tokyo MX1', + xmltv_id: 'TokyoMX1.jp' + }, + { + lang: 'ja', + site_id: '2', + name: 'Tokyo MX2', + xmltv_id: 'TokyoMX2.jp' + } + ] + } +} + +function parseImage(item) { + // Should return a string if we can output an image URL + // Might be done with `https://s.mxtv.jp/bangumi/link/weblinkU.csv?1722421896752` ? + return null +} + +function parseCategory(item) { + // Should return a string if we can determine the category + // Might be done with `https://s.mxtv.jp/index_set/csv/ranking_bangumi_allU.csv` ? + return null +} + +function parseStart(item) { + return dayjs.tz(item.Start_time.toString(), 'YYYY年MM月DD日HH時mm分ss秒', 'Asia/Tokyo') +} + +function parseStop(item) { + // Add the duration to the start time + const durationDate = dayjs(item.Duration, 'HH:mm:ss'); + return parseStart(item).add(dayjs.duration({ + hours: durationDate.hour(), + minutes: durationDate.minute(), + seconds: durationDate.second() + })) +} + +function parseItems(content) { + return JSON.parse(content) || [] +} diff --git a/sites/s.mxtv.jp/s.mxtv.jp.test.js b/sites/s.mxtv.jp/s.mxtv.jp.test.js new file mode 100644 index 00000000..f2219d31 --- /dev/null +++ b/sites/s.mxtv.jp/s.mxtv.jp.test.js @@ -0,0 +1,47 @@ +const { parser, url } = require('./s.mxtv.jp.config.js') +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('2024-08-01', 'YYYY-MM-DD').startOf('d') +const channel = { + site_id: '2', + name: 'Tokyo MX2', + xmltv_id: 'TokyoMX2.jp' +} +const content = `[{ "Event_id": "0x6a57", "Start_time": "2024年07月27日05時00分00秒", "Duration": "01:00:00", "Event_name": "ヒーリングタイム&ヘッドラインニュース", "Event_text": "ねこの足跡", "Component": "480i 16:9 パンベクトルなし", "Sound": "ステレオ", "Event_detail": ""}]` + +it('can generate valid url', () => { + const result = url({ date, channel }) + expect(result).toBe('https://s.mxtv.jp/bangumi_file/json01/SV2EPG20240801.json') +}) + +it('can parse response', () => { + const result = parser({ date, channel, content }).map(p => { + p.start = p.start.toJSON() + p.stop = p.stop.toJSON() + return p + }) + + expect(result).toMatchObject([ + { + start: '2024-07-26T20:00:00.000Z', // UTC time + stop: '2024-07-26T21:00:00.000Z', // UTC + title: 'ヒーリングタイム&ヘッドラインニュース', + description: 'ねこの足跡', + image: null, + category: null + } + ]) +}) + +it('can handle empty guide', () => { + const result = parser({ + date, + channel, + content: '[]' + }) + expect(result).toMatchObject([]) +}) From d5b79b61fd8d96fc9c3a9f6db1b725eefef565dd Mon Sep 17 00:00:00 2001 From: Animenosekai <40539549+Animenosekai@users.noreply.github.com> Date: Wed, 31 Jul 2024 18:27:36 +0200 Subject: [PATCH 03/14] [add] adding SkyPerfect --- sites/s.mxtv.jp/s.mxtv.jp.config.js | 2 +- .../tvguide.myjcom.jp.config.js | 1 + sites/www.skyperfectv.co.jp/README.md | 28 ++++ .../www.skyperfectv.co.jp.channels.xml | 140 ++++++++++++++++++ .../www.skyperfectv.co.jp.config.js | 102 +++++++++++++ .../www.skyperfectv.co.jp.test.js | 53 +++++++ 6 files changed, 325 insertions(+), 1 deletion(-) create mode 100644 sites/www.skyperfectv.co.jp/README.md create mode 100644 sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.channels.xml create mode 100644 sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.config.js create mode 100644 sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.test.js diff --git a/sites/s.mxtv.jp/s.mxtv.jp.config.js b/sites/s.mxtv.jp/s.mxtv.jp.config.js index 1992ec45..3cc08ef2 100644 --- a/sites/s.mxtv.jp/s.mxtv.jp.config.js +++ b/sites/s.mxtv.jp/s.mxtv.jp.config.js @@ -1,4 +1,3 @@ -const axios = require('axios') const dayjs = require('dayjs') const duration = require("dayjs/plugin/duration") const utc = require('dayjs/plugin/utc') @@ -13,6 +12,7 @@ dayjs.extend(duration) module.exports = { site: 's.mxtv.jp', days: 1, + lang: 'ja', url: function ({ date, channel }) { const id = `SV${channel.site_id}EPG${date.format('YYYYMMDD')}` return `https://s.mxtv.jp/bangumi_file/json01/${id}.json` diff --git a/sites/tvguide.myjcom.jp/tvguide.myjcom.jp.config.js b/sites/tvguide.myjcom.jp/tvguide.myjcom.jp.config.js index 9140f5e8..9651de74 100644 --- a/sites/tvguide.myjcom.jp/tvguide.myjcom.jp.config.js +++ b/sites/tvguide.myjcom.jp/tvguide.myjcom.jp.config.js @@ -11,6 +11,7 @@ dayjs.extend(customParseFormat) module.exports = { site: 'tvguide.myjcom.jp', days: 2, + lang: 'ja', url: function ({ date, channel }) { const id = `${channel.site_id}_${date.format('YYYYMMDD')}` diff --git a/sites/www.skyperfectv.co.jp/README.md b/sites/www.skyperfectv.co.jp/README.md new file mode 100644 index 00000000..cb0706f6 --- /dev/null +++ b/sites/www.skyperfectv.co.jp/README.md @@ -0,0 +1,28 @@ +# www.skyperfectv.co.jp + + + +## Index + +- [Index](#index) +- [Download the guide](#download-the-guide) +- [Update channel list](#update-channel-list) +- [Test](#test) + +## Download the guide + +```sh +npm run grab -- --site=www.skyperfectv.co.jp +``` + +## Update channel list + +```sh +npm run channels:parse -- --config=./sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.config.js --output=./sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.channels.xml +``` + +## Test + +```sh +npm test -- www.skyperfectv.co.jp +``` diff --git a/sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.channels.xml b/sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.channels.xml new file mode 100644 index 00000000..c84f80a5 --- /dev/null +++ b/sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.channels.xml @@ -0,0 +1,140 @@ + + + WOWOWシネマ + スターチャンネル + WOWOWプラス 映画・ドラマ・スポーツ・音楽 + 日本映画専門チャンネル + 東映チャンネル + 衛星劇場 + 映画・チャンネルNECO + ザ・シネマ + ムービープラス + J SPORTS 1 + J SPORTS 2 + J SPORTS 3 + J SPORTS 4 + スカイA + GAORA SPORTS + 日テレジータス + ゴルフネットワーク + スポーツライブ+ + WOWOWプライム + WOWOWライブ + ディズニー・チャンネル + TBSチャンネル1 最新ドラマ・音楽・映画 + TBSチャンネル2 名作ドラマ・スポーツ・アニメ + テレ朝チャンネル1 + テレ朝チャンネル2 + 日テレプラス ドラマ・アニメ・音楽ライブ + エンタメ~テレ☆シネドラバラエティ + チャンネル銀河 歴史ドラマ・サスペンス・日本のうた + フジテレビONE スポーツ・バラエティ + フジテレビTWO ドラマ・アニメ + フジテレビNEXT ライブ・プレミアム + スカチャン1 + 100%ヒッツ!スペースシャワーTV プラス + 音楽・ライブ! スペースシャワーTV + MTV + ミュージック・エア + MUSIC ON! TV(エムオン!) + 歌謡ポップスチャンネル + スーパー!ドラマTV #海外ドラマ☆エンタメ + アクションチャンネル + Dlife + 女性チャンネル♪LaLa TV + ミステリーチャンネル + KBS World 韓流専門チャンネル + Mnet + TAKARAZUKA SKY STAGE + 時代劇専門チャンネル + ファミリー劇場 + ホームドラマチャンネル 韓流・時代劇・国内ドラマ + MONDO TV + アニマックス + キッズステーション テレビアニメ・劇場版・OVA + カートゥーン ネットワーク 海外アニメ国内アニメ + アニメシアターX(AT-X) + ディスカバリーチャンネル + アニマルプラネット + ヒストリーチャンネル 日本・世界の歴史&エンタメ + ナショナル ジオグラフィック + 日テレNEWS24 + TBS NEWS + BBCニュース + CNNj + BS釣りビジョン + ディズニージュニア + 囲碁・将棋チャンネル + グリーンチャンネル + ショップチャンネル + QVC(キューヴィーシー) + WOWOW 4K + V☆パラダイス + エキサイティング・グランプリ + スポーツライブ+ 2 + FIGHTING TV サムライ + 刺激ストロングチャンネル + ダンスチャンネル by エンタメ~テレ + スカチャン5 + スカチャン6 + スカチャン7 + スカチャン8 + スカチャン9 + スカチャン10 + スカチャン11 + スカチャン12 + スカチャン13 + スカチャン14 + ミュージック・ジャパンTV + ミュージック・グラフィティTV + アジアドラマチックTV(アジドラ) + KNTV + 大人のイキヌキ!ヌーヴェルパラダイス + アイドル専門チャンネルPigoo + SORA―お天気チャンネル― + CNN U.S. + 中国テレビ★大富チャンネル + 日経CNBC + ベターライフチャンネル + パチンコ★パチスロTV! + パチ・スロ サイトセブンTV + 釣りビジョンHD + 寄席チャンネル + 旅チャンネル + 鉄道チャンネル + 南関東地方競馬チャンネル + JLC680 + JLC681 + JLC682 + JLC683 + JLC684 + グリーンチャンネル2 + SPEEDチャンネル(競輪ライブ) 690 + SPEEDチャンネル(競輪ライブ) 691 + SPEEDチャンネル(競輪ライブ) 692 + SPEEDチャンネル(競輪ライブ) 693 + SPEEDチャンネル(競輪ライブ) 694 + スピードプラスワン695 + 地方競馬ナイン 701 + 地方競馬ナイン 702 + 地方競馬ナイン 703 + フェニックステレビ(鳳凰衛視) + ジュエリー☆GSTV + セレクトショッピング + kmpチャンネル + プレイボーイ チャンネル + レインボーチャンネル + ミッドナイト・ブルー + パラダイステレビ + チェリーボム + VENUS + バニラスカイチャンネル + エンタ!959 + Zaptv + ダイナマイトTV + AV王 + レッドチェリー + Splash + フラミンゴ + スカパー!プロモ599 + \ No newline at end of file diff --git a/sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.config.js b/sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.config.js new file mode 100644 index 00000000..0bc9d0be --- /dev/null +++ b/sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.config.js @@ -0,0 +1,102 @@ +const axios = require('axios') +const dayjs = require('dayjs') +const cheerio = require('cheerio') +const duration = require('dayjs/plugin/duration') +const utc = require('dayjs/plugin/utc') +const timezone = require('dayjs/plugin/timezone') +const customParseFormat = require('dayjs/plugin/customParseFormat') + +dayjs.extend(utc) +dayjs.extend(timezone) +dayjs.extend(customParseFormat) +dayjs.extend(duration) + +module.exports = { + site: 'www.skyperfectv.co.jp', + days: 7, + lang: 'ja', + url: function ({ date, channel }) { + let [type, ...code] = channel.site_id.split('_') + code = code.join('_') + return `https://www.skyperfectv.co.jp/program/schedule/${type}/channel:${code}/date:${date.format('YYMMDD')}` + }, + parser: function ({ content, date }) { + const $ = cheerio.load(content) + const programs = [] + + const sections = [ + { id: 'js-am', addition: 0 }, + { id: 'js-pm', addition: 0 }, + { id: 'js-md', addition: 1 } + ] + + sections.forEach(({ id, addition }) => { + $(`#${id} > td`).each((index, element) => { + // `td` is a column for a day + // the next `td` will be the next day + const today = date.add(index + addition, 'd').tz('Asia/Tokyo') + + const parseTime = (timeString) => { + // timeString is in the format "HH:mm" + // replace `today` with the time from timeString + const [hour, minute] = timeString.split(':').map(Number) + return today.hour(hour).minute(minute) + } + + const $element = $(element) // Wrap element with Cheerio + $element.find('.p-program__item').each((itemIndex, itemElement) => { + const $itemElement = $(itemElement) // Wrap itemElement with Cheerio + const [start, stop] = $itemElement.find('.p-program__range').first().text().split('〜').map(parseTime) + const title = $itemElement.find('.p-program__name').first().text() + const image = $itemElement.find('.js-program_thumbnail').first().attr('data-lazysrc') + console.log({ + title, + start, + stop, + image + }) + programs.push({ + title, + start, + stop, + image + }) + }) + }) + }) + + return programs + }, + + async channels() { + const pageParser = (content, type) => { + // type: "basic" | "premium" + // Returns an array of channel objects + + const $ = cheerio.load(content) + const channels = [] + + $('.p-channel').each((index, element) => { + const site_id = `${type}_${$(element).find('.p-channel__id').text()}` + const name = $(element).find('.p-channel__name').text() + channels.push({ site_id, name, lang: 'ja' }) + }) + + return channels + } + + const getChannels = async (type) => { + const response = await axios.get(`https://www.skyperfectv.co.jp/program/schedule/${type}/`) + return pageParser(response.data, type) + } + + const fetchAllChannels = async () => { + const basicChannels = await getChannels('basic') + const premiumChannels = await getChannels('premium') + const results = [...basicChannels, ...premiumChannels] + return results + } + + return await fetchAllChannels() + } +} diff --git a/sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.test.js b/sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.test.js new file mode 100644 index 00000000..cabf72ee --- /dev/null +++ b/sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.test.js @@ -0,0 +1,53 @@ +const { parser, url } = require('./www.skyperfectv.co.jp.config.js') +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('2024-08-01', 'YYYY-MM-DD').startOf('d') +const channel = { + site_id: 'basic_BS193', + name: 'WOWOWシネマ', + xmltv_id: 'WOWOWCinema.jp' +} + +const content = ` +番組表(アニメシアターX(AT-X))|スカパー!

現在マイリストを更新中です。

現在マイリストに登録中です。

現在マイリストから削除中です。

番組放送予定表

基本プラン
選択した日付から1週間の番組表を表示します
番組放送予定表
基本プラン
選択した日付から1週間の番組表を表示します

前週

次週

午前(4時~)

午後(12時~)

深夜(24時~)

  • 04:00〜04:30

    ヴァルキリードライヴマーメイド #06

    番組サムネイル
            newAppBannerImgnewAppBannerImg

            番組情報は予告なく変更となる場合がありますのでご了承ください

            ・このサイトでは、当日から1週間分はEPGと同等の番組情報が表示され、その先1ヶ月後まではガイド誌(有料)と同等の番組情報が表示されます。番組や放送予定は予告なく変更される場合がありますのでご了承ください。
            ・このサイトは、ウェブブラウザーMicrosoftEdge最新版、GoogleChrome最新版、Firefox最新版、Safari最新版での動作を確認しております。上記以外のウェブブラウザーで閲覧されますと、表示の乱れや予期せぬ動作を起こす場合がございますので、予めご了承ください。

            ##ERROR_MSG##

            ##ERROR_MSG##

            ##ERROR_MSG##

            マイリストから削除してもよいですか?

            ログインをしてお気に入り番組を登録しよう!
            Myスカパー!にログインをすると、マイリストにお気に入り番組リストを作成することができます!
            ログイン新規会員登録
            マイリストに番組を登録できません
            ##ERROR_MSG##
            +` + +it('can generate valid url', () => { + const result = url({ date, channel }) + 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 => { + p.start = p.start.toJSON() + p.stop = p.stop.toJSON() + return p + }) + + expect(result).toMatchObject([ + { + start: '2024-07-31T19:00:00.000Z', // UTC time + stop: '2024-07-31T19:30:00.000Z', // UTC + title: 'ヴァルキリードライヴマーメイド #06', + image: 'https://pm-img-ap.skyperfectv.co.jp/uploads/thumbnail/image/11301805/S_BC929697780313_be7975d4e26a4cad9b89fc6c94807e38_20240613144158569.jpg' + } + ]) +}) + + +const empty = ` +番組表(アニメシアターX(AT-X))|スカパー!

            現在マイリストを更新中です。

            現在マイリストに登録中です。

            現在マイリストから削除中です。

            番組放送予定表

            基本プラン
            選択した日付から1週間の番組表を表示します
            番組放送予定表
            基本プラン
            選択した日付から1週間の番組表を表示します

            前週

            次週

            午前(4時~)

            午後(12時~)

            深夜(24時~)

                        newAppBannerImgnewAppBannerImg

                        番組情報は予告なく変更となる場合がありますのでご了承ください

                        ・このサイトでは、当日から1週間分はEPGと同等の番組情報が表示され、その先1ヶ月後まではガイド誌(有料)と同等の番組情報が表示されます。番組や放送予定は予告なく変更される場合がありますのでご了承ください。
                        ・このサイトは、ウェブブラウザーMicrosoftEdge最新版、GoogleChrome最新版、Firefox最新版、Safari最新版での動作を確認しております。上記以外のウェブブラウザーで閲覧されますと、表示の乱れや予期せぬ動作を起こす場合がございますので、予めご了承ください。

                        ##ERROR_MSG##

                        ##ERROR_MSG##

                        ##ERROR_MSG##

                        マイリストから削除してもよいですか?

                        ログインをしてお気に入り番組を登録しよう!
                        Myスカパー!にログインをすると、マイリストにお気に入り番組リストを作成することができます!
                        ログイン新規会員登録
                        マイリストに番組を登録できません
                        ##ERROR_MSG##
                        +` + +it('can handle empty guide', () => { + const result = parser({ + date, + channel, + content: empty + }) + expect(result).toMatchObject([]) +}) From c6bdfea482f26e4596eeb3bec7dec0df77ed1725 Mon Sep 17 00:00:00 2001 From: Animenosekai <40539549+Animenosekai@users.noreply.github.com> Date: Wed, 31 Jul 2024 20:09:09 +0200 Subject: [PATCH 04/14] [fix] fixing premium channels from www.skyperfectv.co.jp --- .../www.skyperfectv.co.jp.channels.xml | 136 +++++++++--------- .../www.skyperfectv.co.jp.config.js | 7 +- 2 files changed, 73 insertions(+), 70 deletions(-) diff --git a/sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.channels.xml b/sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.channels.xml index c84f80a5..945cc877 100644 --- a/sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.channels.xml +++ b/sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.channels.xml @@ -69,72 +69,72 @@ ショップチャンネル QVC(キューヴィーシー) WOWOW 4K - V☆パラダイス - エキサイティング・グランプリ - スポーツライブ+ 2 - FIGHTING TV サムライ - 刺激ストロングチャンネル - ダンスチャンネル by エンタメ~テレ - スカチャン5 - スカチャン6 - スカチャン7 - スカチャン8 - スカチャン9 - スカチャン10 - スカチャン11 - スカチャン12 - スカチャン13 - スカチャン14 - ミュージック・ジャパンTV - ミュージック・グラフィティTV - アジアドラマチックTV(アジドラ) - KNTV - 大人のイキヌキ!ヌーヴェルパラダイス - アイドル専門チャンネルPigoo - SORA―お天気チャンネル― - CNN U.S. - 中国テレビ★大富チャンネル - 日経CNBC - ベターライフチャンネル - パチンコ★パチスロTV! - パチ・スロ サイトセブンTV - 釣りビジョンHD - 寄席チャンネル - 旅チャンネル - 鉄道チャンネル - 南関東地方競馬チャンネル - JLC680 - JLC681 - JLC682 - JLC683 - JLC684 - グリーンチャンネル2 - SPEEDチャンネル(競輪ライブ) 690 - SPEEDチャンネル(競輪ライブ) 691 - SPEEDチャンネル(競輪ライブ) 692 - SPEEDチャンネル(競輪ライブ) 693 - SPEEDチャンネル(競輪ライブ) 694 - スピードプラスワン695 - 地方競馬ナイン 701 - 地方競馬ナイン 702 - 地方競馬ナイン 703 - フェニックステレビ(鳳凰衛視) - ジュエリー☆GSTV - セレクトショッピング - kmpチャンネル - プレイボーイ チャンネル - レインボーチャンネル - ミッドナイト・ブルー - パラダイステレビ - チェリーボム - VENUS - バニラスカイチャンネル - エンタ!959 - Zaptv - ダイナマイトTV - AV王 - レッドチェリー - Splash - フラミンゴ - スカパー!プロモ599 + V☆パラダイス + エキサイティング・グランプリ + スポーツライブ+ 2 + FIGHTING TV サムライ + 刺激ストロングチャンネル + ダンスチャンネル by エンタメ~テレ + スカチャン5 + スカチャン6 + スカチャン7 + スカチャン8 + スカチャン9 + スカチャン10 + スカチャン11 + スカチャン12 + スカチャン13 + スカチャン14 + ミュージック・ジャパンTV + ミュージック・グラフィティTV + アジアドラマチックTV(アジドラ) + KNTV + 大人のイキヌキ!ヌーヴェルパラダイス + アイドル専門チャンネルPigoo + SORA―お天気チャンネル― + CNN U.S. + 中国テレビ★大富チャンネル + 日経CNBC + ベターライフチャンネル + パチンコ★パチスロTV! + パチ・スロ サイトセブンTV + 釣りビジョンHD + 寄席チャンネル + 旅チャンネル + 鉄道チャンネル + 南関東地方競馬チャンネル + JLC680 + JLC681 + JLC682 + JLC683 + JLC684 + グリーンチャンネル2 + SPEEDチャンネル(競輪ライブ) 690 + SPEEDチャンネル(競輪ライブ) 691 + SPEEDチャンネル(競輪ライブ) 692 + SPEEDチャンネル(競輪ライブ) 693 + SPEEDチャンネル(競輪ライブ) 694 + スピードプラスワン695 + 地方競馬ナイン 701 + 地方競馬ナイン 702 + 地方競馬ナイン 703 + フェニックステレビ(鳳凰衛視) + ジュエリー☆GSTV + セレクトショッピング + kmpチャンネル + プレイボーイ チャンネル + レインボーチャンネル + ミッドナイト・ブルー + パラダイステレビ + チェリーボム + VENUS + バニラスカイチャンネル + エンタ!959 + Zaptv + ダイナマイトTV + AV王 + レッドチェリー + Splash + フラミンゴ + スカパー!プロモ599 \ No newline at end of file diff --git a/sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.config.js b/sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.config.js index 0bc9d0be..b42499ad 100644 --- a/sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.config.js +++ b/sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.config.js @@ -13,13 +13,17 @@ dayjs.extend(duration) module.exports = { site: 'www.skyperfectv.co.jp', - days: 7, + days: 1, lang: 'ja', url: function ({ date, channel }) { let [type, ...code] = channel.site_id.split('_') code = code.join('_') + console.log(`https://www.skyperfectv.co.jp/program/schedule/${type}/channel:${code}/date:${date.format('YYMMDD')}`) return `https://www.skyperfectv.co.jp/program/schedule/${type}/channel:${code}/date:${date.format('YYMMDD')}` }, + logo: function ({channel}) { + return `https://www.skyperfectv.co.jp/library/common/img/channel/icon/basic/m_${channel.site_id.toLowerCase()}.gif` + }, parser: function ({ content, date }) { const $ = cheerio.load(content) const programs = [] @@ -67,7 +71,6 @@ module.exports = { return programs }, - async channels() { const pageParser = (content, type) => { // type: "basic" | "premium" From b9e4d9483aac54bf7e8d68af8d01b821c2d57789 Mon Sep 17 00:00:00 2001 From: Animenosekai <40539549+Animenosekai@users.noreply.github.com> Date: Thu, 1 Aug 2024 00:33:38 +0200 Subject: [PATCH 05/14] [add] adding missing IDs to JCOM and Sky Perfect! --- .../tvguide.myjcom.jp.channels.xml | 14 +++--- .../www.skyperfectv.co.jp.channels.xml | 44 +++++++++---------- 2 files changed, 29 insertions(+), 29 deletions(-) diff --git a/sites/tvguide.myjcom.jp/tvguide.myjcom.jp.channels.xml b/sites/tvguide.myjcom.jp/tvguide.myjcom.jp.channels.xml index ba94bcd4..ccad9317 100644 --- a/sites/tvguide.myjcom.jp/tvguide.myjcom.jp.channels.xml +++ b/sites/tvguide.myjcom.jp/tvguide.myjcom.jp.channels.xml @@ -75,7 +75,7 @@ ミュージック・エア ナショナル ジオグラフィック NHKBS1 - NHK BS4K + NHK BS4K NHKBSプレミアム NHK東京 教育 NHK東京 総合 @@ -128,12 +128,12 @@ 日経CNBC パチンコ★パチスロTV! ジュエリー☆GSTV - JSPORTS1 (4K) - JSPORTS2 (4K) - JSPORTS3 (4K) - JSPORTS4 (4K) - ショップチャンネル 4K - 4K QVC + JSPORTS1 (4K) + JSPORTS2 (4K) + JSPORTS3 (4K) + JSPORTS4 (4K) + ショップチャンネル 4K + 4K QVC NHK BSP4K NHK BS MTV HD diff --git a/sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.channels.xml b/sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.channels.xml index 945cc877..c6840cae 100644 --- a/sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.channels.xml +++ b/sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.channels.xml @@ -62,7 +62,7 @@ TBS NEWS BBCニュース CNNj - BS釣りビジョン + BS釣りビジョン ディズニージュニア 囲碁・将棋チャンネル グリーンチャンネル @@ -71,7 +71,7 @@ WOWOW 4K V☆パラダイス エキサイティング・グランプリ - スポーツライブ+ 2 + スポーツライブ+ 2 FIGHTING TV サムライ 刺激ストロングチャンネル ダンスチャンネル by エンタメ~テレ @@ -86,13 +86,13 @@ スカチャン13 スカチャン14 ミュージック・ジャパンTV - ミュージック・グラフィティTV + ミュージック・グラフィティTV アジアドラマチックTV(アジドラ) KNTV - 大人のイキヌキ!ヌーヴェルパラダイス + 大人のイキヌキ!ヌーヴェルパラダイス アイドル専門チャンネルPigoo SORA―お天気チャンネル― - CNN U.S. + CNN U.S. 中国テレビ★大富チャンネル 日経CNBC ベターライフチャンネル @@ -103,24 +103,24 @@ 旅チャンネル 鉄道チャンネル 南関東地方競馬チャンネル - JLC680 - JLC681 - JLC682 - JLC683 - JLC684 + JLC680 + JLC681 + JLC682 + JLC683 + JLC684 グリーンチャンネル2 - SPEEDチャンネル(競輪ライブ) 690 - SPEEDチャンネル(競輪ライブ) 691 - SPEEDチャンネル(競輪ライブ) 692 - SPEEDチャンネル(競輪ライブ) 693 - SPEEDチャンネル(競輪ライブ) 694 - スピードプラスワン695 - 地方競馬ナイン 701 - 地方競馬ナイン 702 - 地方競馬ナイン 703 - フェニックステレビ(鳳凰衛視) + SPEEDチャンネル(競輪ライブ) 690 + SPEEDチャンネル(競輪ライブ) 691 + SPEEDチャンネル(競輪ライブ) 692 + SPEEDチャンネル(競輪ライブ) 693 + SPEEDチャンネル(競輪ライブ) 694 + スピードプラスワン695 + 地方競馬ナイン 701 + 地方競馬ナイン 702 + 地方競馬ナイン 703 + フェニックステレビ(鳳凰衛視) ジュエリー☆GSTV - セレクトショッピング + セレクトショッピング kmpチャンネル プレイボーイ チャンネル レインボーチャンネル @@ -136,5 +136,5 @@ レッドチェリー Splash フラミンゴ - スカパー!プロモ599 + スカパー!プロモ599 \ No newline at end of file From 4bc62d18490ef021c7cee2b625eee911a871b3b8 Mon Sep 17 00:00:00 2001 From: Animenosekai <40539549+Animenosekai@users.noreply.github.com> Date: Thu, 1 Aug 2024 01:50:54 +0200 Subject: [PATCH 06/14] [update] adding new XMLTV-IDs to some JCOM channels --- sites/tvguide.myjcom.jp/tvguide.myjcom.jp.channels.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sites/tvguide.myjcom.jp/tvguide.myjcom.jp.channels.xml b/sites/tvguide.myjcom.jp/tvguide.myjcom.jp.channels.xml index ccad9317..357667f8 100644 --- a/sites/tvguide.myjcom.jp/tvguide.myjcom.jp.channels.xml +++ b/sites/tvguide.myjcom.jp/tvguide.myjcom.jp.channels.xml @@ -120,7 +120,7 @@ ご案内チャンネル オンデマンドチャンネル290 オンデマンドチャンネル440 - ショップチャンネル プラス + ショップチャンネル プラス MTV HD ミステリーチャンネル 音楽・ライブ! スペースシャワーTV HD @@ -149,5 +149,5 @@ KBS京都 読売テレビ サンテレビ - TSS + TSS From 8069622f59bc8e24250b0dee7700f94190c8c70f Mon Sep 17 00:00:00 2001 From: Animenosekai <40539549+Animenosekai@users.noreply.github.com> Date: Thu, 1 Aug 2024 01:51:41 +0200 Subject: [PATCH 07/14] [update] adding missing IDs to SkyPerfect! --- sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.channels.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.channels.xml b/sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.channels.xml index c6840cae..532602bd 100644 --- a/sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.channels.xml +++ b/sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.channels.xml @@ -40,7 +40,7 @@ 歌謡ポップスチャンネル スーパー!ドラマTV #海外ドラマ☆エンタメ アクションチャンネル - Dlife + Dlife 女性チャンネル♪LaLa TV ミステリーチャンネル KBS World 韓流専門チャンネル From c4783349b2edbc9c1e122f6ac8246712a302c4ff Mon Sep 17 00:00:00 2001 From: Animenosekai <40539549+Animenosekai@users.noreply.github.com> Date: Thu, 1 Aug 2024 22:27:28 +0200 Subject: [PATCH 08/14] [update] use the new IDs --- sites/tvguide.myjcom.jp/tvguide.myjcom.jp.channels.xml | 2 +- .../www.skyperfectv.co.jp.channels.xml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/sites/tvguide.myjcom.jp/tvguide.myjcom.jp.channels.xml b/sites/tvguide.myjcom.jp/tvguide.myjcom.jp.channels.xml index 357667f8..fc12c10b 100644 --- a/sites/tvguide.myjcom.jp/tvguide.myjcom.jp.channels.xml +++ b/sites/tvguide.myjcom.jp/tvguide.myjcom.jp.channels.xml @@ -149,5 +149,5 @@ KBS京都 読売テレビ サンテレビ - TSS + TSS diff --git a/sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.channels.xml b/sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.channels.xml index 532602bd..6a914f22 100644 --- a/sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.channels.xml +++ b/sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.channels.xml @@ -86,7 +86,7 @@ スカチャン13 スカチャン14 ミュージック・ジャパンTV - ミュージック・グラフィティTV + ミュージック・グラフィティTV アジアドラマチックTV(アジドラ) KNTV 大人のイキヌキ!ヌーヴェルパラダイス @@ -114,11 +114,11 @@ SPEEDチャンネル(競輪ライブ) 692 SPEEDチャンネル(競輪ライブ) 693 SPEEDチャンネル(競輪ライブ) 694 - スピードプラスワン695 + スピードプラスワン695 地方競馬ナイン 701 地方競馬ナイン 702 地方競馬ナイン 703 - フェニックステレビ(鳳凰衛視) + フェニックステレビ(鳳凰衛視) ジュエリー☆GSTV セレクトショッピング kmpチャンネル From 98fd78075f733cf9e53de8af0463f29e5558118b Mon Sep 17 00:00:00 2001 From: Animenosekai <40539549+Animenosekai@users.noreply.github.com> Date: Sun, 25 Aug 2024 16:25:59 +0200 Subject: [PATCH 09/14] [update] revert `yarn.lock` changes --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index d0e57d59..e8cd5a6c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -331,10 +331,10 @@ enabled "2.0.x" kuler "^2.0.0" -"@esbuild/darwin-arm64@0.18.20": +"@esbuild/darwin-x64@0.18.20": version "0.18.20" - resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz" - integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA== + resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz" + integrity sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ== "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" From 74e40a8e6dc0ca0c5cf1a7bd75bdf269606b6ab5 Mon Sep 17 00:00:00 2001 From: Animenosekai <40539549+Animenosekai@users.noreply.github.com> Date: Sun, 25 Aug 2024 16:35:05 +0200 Subject: [PATCH 10/14] [update] `www.skyperfectv.co.jp` -> `skyperfectv.co.jp` --- sites/skyperfectv.co.jp/README.md | 28 ++++ .../skyperfectv.co.jp.channels.xml | 140 ++++++++++++++++++ .../skyperfectv.co.jp.config.js} | 10 +- .../skyperfectv.co.jp.test.js | 53 +++++++ sites/www.skyperfectv.co.jp/README.md | 28 ---- .../www.skyperfectv.co.jp.channels.xml | 140 ------------------ .../www.skyperfectv.co.jp.test.js | 53 ------- 7 files changed, 226 insertions(+), 226 deletions(-) create mode 100644 sites/skyperfectv.co.jp/README.md create mode 100644 sites/skyperfectv.co.jp/skyperfectv.co.jp.channels.xml rename sites/{www.skyperfectv.co.jp/www.skyperfectv.co.jp.config.js => skyperfectv.co.jp/skyperfectv.co.jp.config.js} (85%) create mode 100644 sites/skyperfectv.co.jp/skyperfectv.co.jp.test.js delete mode 100644 sites/www.skyperfectv.co.jp/README.md delete mode 100644 sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.channels.xml delete mode 100644 sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.test.js diff --git a/sites/skyperfectv.co.jp/README.md b/sites/skyperfectv.co.jp/README.md new file mode 100644 index 00000000..227bcb2e --- /dev/null +++ b/sites/skyperfectv.co.jp/README.md @@ -0,0 +1,28 @@ +# skyperfectv.co.jp + + + +## Index + +- [Index](#index) +- [Download the guide](#download-the-guide) +- [Update channel list](#update-channel-list) +- [Test](#test) + +## Download the guide + +```sh +npm run grab -- --site=skyperfectv.co.jp +``` + +## Update channel list + +```sh +npm run channels:parse -- --config=./sites/skyperfectv.co.jp/skyperfectv.co.jp.config.js --output=./sites/skyperfectv.co.jp/skyperfectv.co.jp.channels.xml +``` + +## Test + +```sh +npm test -- skyperfectv.co.jp +``` diff --git a/sites/skyperfectv.co.jp/skyperfectv.co.jp.channels.xml b/sites/skyperfectv.co.jp/skyperfectv.co.jp.channels.xml new file mode 100644 index 00000000..2e7f622d --- /dev/null +++ b/sites/skyperfectv.co.jp/skyperfectv.co.jp.channels.xml @@ -0,0 +1,140 @@ + + + WOWOWシネマ + スターチャンネル + WOWOWプラス 映画・ドラマ・スポーツ・音楽 + 日本映画専門チャンネル + 東映チャンネル + 衛星劇場 + 映画・チャンネルNECO + ザ・シネマ + ムービープラス + J SPORTS 1 + J SPORTS 2 + J SPORTS 3 + J SPORTS 4 + スカイA + GAORA SPORTS + 日テレジータス + ゴルフネットワーク + スポーツライブ+ + WOWOWプライム + WOWOWライブ + ディズニー・チャンネル + TBSチャンネル1 最新ドラマ・音楽・映画 + TBSチャンネル2 名作ドラマ・スポーツ・アニメ + テレ朝チャンネル1 + テレ朝チャンネル2 + 日テレプラス ドラマ・アニメ・音楽ライブ + エンタメ~テレ☆シネドラバラエティ + チャンネル銀河 歴史ドラマ・サスペンス・日本のうた + フジテレビONE スポーツ・バラエティ + フジテレビTWO ドラマ・アニメ + フジテレビNEXT ライブ・プレミアム + スカチャン1 + 100%ヒッツ!スペースシャワーTV プラス + 音楽・ライブ! スペースシャワーTV + MTV + ミュージック・エア + MUSIC ON! TV(エムオン!) + 歌謡ポップスチャンネル + スーパー!ドラマTV #海外ドラマ☆エンタメ + アクションチャンネル + Dlife + 女性チャンネル♪LaLa TV + ミステリーチャンネル + KBS World 韓流専門チャンネル + Mnet + TAKARAZUKA SKY STAGE + 時代劇専門チャンネル + ファミリー劇場 + ホームドラマチャンネル 韓流・時代劇・国内ドラマ + MONDO TV + アニマックス + キッズステーション テレビアニメ・劇場版・OVA + カートゥーン ネットワーク 海外アニメ国内アニメ + アニメシアターX(AT-X) + ディスカバリーチャンネル + アニマルプラネット + ヒストリーチャンネル 日本・世界の歴史&エンタメ + ナショナル ジオグラフィック + 日テレNEWS24 + TBS NEWS + BBCニュース + CNNj + BS釣りビジョン + ディズニージュニア + 囲碁・将棋チャンネル + グリーンチャンネル + ショップチャンネル + QVC(キューヴィーシー) + WOWOW 4K + V☆パラダイス + エキサイティング・グランプリ + スポーツライブ+ 2 + FIGHTING TV サムライ + 刺激ストロングチャンネル + ダンスチャンネル by エンタメ~テレ + スカチャン5 + スカチャン6 + スカチャン7 + スカチャン8 + スカチャン9 + スカチャン10 + スカチャン11 + スカチャン12 + スカチャン13 + スカチャン14 + ミュージック・ジャパンTV + ミュージック・グラフィティTV + アジアドラマチックTV(アジドラ) + KNTV + 大人のイキヌキ!ヌーヴェルパラダイス + アイドル専門チャンネルPigoo + SORA―お天気チャンネル― + CNN U.S. + 中国テレビ★大富チャンネル + 日経CNBC + ベターライフチャンネル + パチンコ★パチスロTV! + パチ・スロ サイトセブンTV + 釣りビジョンHD + 寄席チャンネル + 旅チャンネル + 鉄道チャンネル + 南関東地方競馬チャンネル + JLC680 + JLC681 + JLC682 + JLC683 + JLC684 + グリーンチャンネル2 + SPEEDチャンネル(競輪ライブ) 690 + SPEEDチャンネル(競輪ライブ) 691 + SPEEDチャンネル(競輪ライブ) 692 + SPEEDチャンネル(競輪ライブ) 693 + SPEEDチャンネル(競輪ライブ) 694 + スピードプラスワン695 + 地方競馬ナイン 701 + 地方競馬ナイン 702 + 地方競馬ナイン 703 + フェニックステレビ(鳳凰衛視) + ジュエリー☆GSTV + セレクトショッピング + kmpチャンネル + プレイボーイ チャンネル + レインボーチャンネル + ミッドナイト・ブルー + パラダイステレビ + チェリーボム + VENUS + バニラスカイチャンネル + エンタ!959 + Zaptv + ダイナマイトTV + AV王 + レッドチェリー + Splash + フラミンゴ + スカパー!プロモ599 + \ No newline at end of file diff --git a/sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.config.js b/sites/skyperfectv.co.jp/skyperfectv.co.jp.config.js similarity index 85% rename from sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.config.js rename to sites/skyperfectv.co.jp/skyperfectv.co.jp.config.js index b42499ad..6a556d81 100644 --- a/sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.config.js +++ b/sites/skyperfectv.co.jp/skyperfectv.co.jp.config.js @@ -12,17 +12,17 @@ dayjs.extend(customParseFormat) dayjs.extend(duration) module.exports = { - site: 'www.skyperfectv.co.jp', + site: 'skyperfectv.co.jp', days: 1, lang: 'ja', url: function ({ date, channel }) { let [type, ...code] = channel.site_id.split('_') code = code.join('_') - console.log(`https://www.skyperfectv.co.jp/program/schedule/${type}/channel:${code}/date:${date.format('YYMMDD')}`) - return `https://www.skyperfectv.co.jp/program/schedule/${type}/channel:${code}/date:${date.format('YYMMDD')}` + console.log(`https://skyperfectv.co.jp/program/schedule/${type}/channel:${code}/date:${date.format('YYMMDD')}`) + return `https://skyperfectv.co.jp/program/schedule/${type}/channel:${code}/date:${date.format('YYMMDD')}` }, logo: function ({channel}) { - return `https://www.skyperfectv.co.jp/library/common/img/channel/icon/basic/m_${channel.site_id.toLowerCase()}.gif` + return `https://skyperfectv.co.jp/library/common/img/channel/icon/basic/m_${channel.site_id.toLowerCase()}.gif` }, parser: function ({ content, date }) { const $ = cheerio.load(content) @@ -89,7 +89,7 @@ module.exports = { } const getChannels = async (type) => { - const response = await axios.get(`https://www.skyperfectv.co.jp/program/schedule/${type}/`) + const response = await axios.get(`https://skyperfectv.co.jp/program/schedule/${type}/`) return pageParser(response.data, type) } diff --git a/sites/skyperfectv.co.jp/skyperfectv.co.jp.test.js b/sites/skyperfectv.co.jp/skyperfectv.co.jp.test.js new file mode 100644 index 00000000..5be807a9 --- /dev/null +++ b/sites/skyperfectv.co.jp/skyperfectv.co.jp.test.js @@ -0,0 +1,53 @@ +const { parser, url } = require('./skyperfectv.co.jp.config.js') +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('2024-08-01', 'YYYY-MM-DD').startOf('d') +const channel = { + site_id: 'basic_BS193', + name: 'WOWOWシネマ', + xmltv_id: 'WOWOWCinema.jp' +} + +const content = ` +番組表(アニメシアターX(AT-X))|スカパー!

                        現在マイリストを更新中です。

                        現在マイリストに登録中です。

                        現在マイリストから削除中です。

                        番組放送予定表

                        基本プラン
                        選択した日付から1週間の番組表を表示します
                        番組放送予定表
                        基本プラン
                        選択した日付から1週間の番組表を表示します

                        前週

                        次週

                        午前(4時~)

                        午後(12時~)

                        深夜(24時~)

                        • 04:00〜04:30

                          ヴァルキリードライヴマーメイド #06

                          番組サムネイル
                                  newAppBannerImgnewAppBannerImg

                                  番組情報は予告なく変更となる場合がありますのでご了承ください

                                  ・このサイトでは、当日から1週間分はEPGと同等の番組情報が表示され、その先1ヶ月後まではガイド誌(有料)と同等の番組情報が表示されます。番組や放送予定は予告なく変更される場合がありますのでご了承ください。
                                  ・このサイトは、ウェブブラウザーMicrosoftEdge最新版、GoogleChrome最新版、Firefox最新版、Safari最新版での動作を確認しております。上記以外のウェブブラウザーで閲覧されますと、表示の乱れや予期せぬ動作を起こす場合がございますので、予めご了承ください。

                                  ##ERROR_MSG##

                                  ##ERROR_MSG##

                                  ##ERROR_MSG##

                                  マイリストから削除してもよいですか?

                                  ログインをしてお気に入り番組を登録しよう!
                                  Myスカパー!にログインをすると、マイリストにお気に入り番組リストを作成することができます!
                                  ログイン新規会員登録
                                  マイリストに番組を登録できません
                                  ##ERROR_MSG##
                                  +` + +it('can generate valid url', () => { + const result = url({ date, channel }) + expect(result).toBe('https://skyperfectv.co.jp/program/schedule/basic/channel:BS193/date:240801') +}) + +it('can parse response', () => { + const result = parser({ date, channel, content }).map(p => { + p.start = p.start.toJSON() + p.stop = p.stop.toJSON() + return p + }) + + expect(result).toMatchObject([ + { + start: '2024-07-31T19:00:00.000Z', // UTC time + stop: '2024-07-31T19:30:00.000Z', // UTC + title: 'ヴァルキリードライヴマーメイド #06', + image: 'https://pm-img-ap.skyperfectv.co.jp/uploads/thumbnail/image/11301805/S_BC929697780313_be7975d4e26a4cad9b89fc6c94807e38_20240613144158569.jpg' + } + ]) +}) + + +const empty = ` +番組表(アニメシアターX(AT-X))|スカパー!

                                  現在マイリストを更新中です。

                                  現在マイリストに登録中です。

                                  現在マイリストから削除中です。

                                  番組放送予定表

                                  基本プラン
                                  選択した日付から1週間の番組表を表示します
                                  番組放送予定表
                                  基本プラン
                                  選択した日付から1週間の番組表を表示します

                                  前週

                                  次週

                                  午前(4時~)

                                  午後(12時~)

                                  深夜(24時~)

                                              newAppBannerImgnewAppBannerImg

                                              番組情報は予告なく変更となる場合がありますのでご了承ください

                                              ・このサイトでは、当日から1週間分はEPGと同等の番組情報が表示され、その先1ヶ月後まではガイド誌(有料)と同等の番組情報が表示されます。番組や放送予定は予告なく変更される場合がありますのでご了承ください。
                                              ・このサイトは、ウェブブラウザーMicrosoftEdge最新版、GoogleChrome最新版、Firefox最新版、Safari最新版での動作を確認しております。上記以外のウェブブラウザーで閲覧されますと、表示の乱れや予期せぬ動作を起こす場合がございますので、予めご了承ください。

                                              ##ERROR_MSG##

                                              ##ERROR_MSG##

                                              ##ERROR_MSG##

                                              マイリストから削除してもよいですか?

                                              ログインをしてお気に入り番組を登録しよう!
                                              Myスカパー!にログインをすると、マイリストにお気に入り番組リストを作成することができます!
                                              ログイン新規会員登録
                                              マイリストに番組を登録できません
                                              ##ERROR_MSG##
                                              +` + +it('can handle empty guide', () => { + const result = parser({ + date, + channel, + content: empty + }) + expect(result).toMatchObject([]) +}) diff --git a/sites/www.skyperfectv.co.jp/README.md b/sites/www.skyperfectv.co.jp/README.md deleted file mode 100644 index cb0706f6..00000000 --- a/sites/www.skyperfectv.co.jp/README.md +++ /dev/null @@ -1,28 +0,0 @@ -# www.skyperfectv.co.jp - - - -## Index - -- [Index](#index) -- [Download the guide](#download-the-guide) -- [Update channel list](#update-channel-list) -- [Test](#test) - -## Download the guide - -```sh -npm run grab -- --site=www.skyperfectv.co.jp -``` - -## Update channel list - -```sh -npm run channels:parse -- --config=./sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.config.js --output=./sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.channels.xml -``` - -## Test - -```sh -npm test -- www.skyperfectv.co.jp -``` diff --git a/sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.channels.xml b/sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.channels.xml deleted file mode 100644 index 6a914f22..00000000 --- a/sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.channels.xml +++ /dev/null @@ -1,140 +0,0 @@ - - - WOWOWシネマ - スターチャンネル - WOWOWプラス 映画・ドラマ・スポーツ・音楽 - 日本映画専門チャンネル - 東映チャンネル - 衛星劇場 - 映画・チャンネルNECO - ザ・シネマ - ムービープラス - J SPORTS 1 - J SPORTS 2 - J SPORTS 3 - J SPORTS 4 - スカイA - GAORA SPORTS - 日テレジータス - ゴルフネットワーク - スポーツライブ+ - WOWOWプライム - WOWOWライブ - ディズニー・チャンネル - TBSチャンネル1 最新ドラマ・音楽・映画 - TBSチャンネル2 名作ドラマ・スポーツ・アニメ - テレ朝チャンネル1 - テレ朝チャンネル2 - 日テレプラス ドラマ・アニメ・音楽ライブ - エンタメ~テレ☆シネドラバラエティ - チャンネル銀河 歴史ドラマ・サスペンス・日本のうた - フジテレビONE スポーツ・バラエティ - フジテレビTWO ドラマ・アニメ - フジテレビNEXT ライブ・プレミアム - スカチャン1 - 100%ヒッツ!スペースシャワーTV プラス - 音楽・ライブ! スペースシャワーTV - MTV - ミュージック・エア - MUSIC ON! TV(エムオン!) - 歌謡ポップスチャンネル - スーパー!ドラマTV #海外ドラマ☆エンタメ - アクションチャンネル - Dlife - 女性チャンネル♪LaLa TV - ミステリーチャンネル - KBS World 韓流専門チャンネル - Mnet - TAKARAZUKA SKY STAGE - 時代劇専門チャンネル - ファミリー劇場 - ホームドラマチャンネル 韓流・時代劇・国内ドラマ - MONDO TV - アニマックス - キッズステーション テレビアニメ・劇場版・OVA - カートゥーン ネットワーク 海外アニメ国内アニメ - アニメシアターX(AT-X) - ディスカバリーチャンネル - アニマルプラネット - ヒストリーチャンネル 日本・世界の歴史&エンタメ - ナショナル ジオグラフィック - 日テレNEWS24 - TBS NEWS - BBCニュース - CNNj - BS釣りビジョン - ディズニージュニア - 囲碁・将棋チャンネル - グリーンチャンネル - ショップチャンネル - QVC(キューヴィーシー) - WOWOW 4K - V☆パラダイス - エキサイティング・グランプリ - スポーツライブ+ 2 - FIGHTING TV サムライ - 刺激ストロングチャンネル - ダンスチャンネル by エンタメ~テレ - スカチャン5 - スカチャン6 - スカチャン7 - スカチャン8 - スカチャン9 - スカチャン10 - スカチャン11 - スカチャン12 - スカチャン13 - スカチャン14 - ミュージック・ジャパンTV - ミュージック・グラフィティTV - アジアドラマチックTV(アジドラ) - KNTV - 大人のイキヌキ!ヌーヴェルパラダイス - アイドル専門チャンネルPigoo - SORA―お天気チャンネル― - CNN U.S. - 中国テレビ★大富チャンネル - 日経CNBC - ベターライフチャンネル - パチンコ★パチスロTV! - パチ・スロ サイトセブンTV - 釣りビジョンHD - 寄席チャンネル - 旅チャンネル - 鉄道チャンネル - 南関東地方競馬チャンネル - JLC680 - JLC681 - JLC682 - JLC683 - JLC684 - グリーンチャンネル2 - SPEEDチャンネル(競輪ライブ) 690 - SPEEDチャンネル(競輪ライブ) 691 - SPEEDチャンネル(競輪ライブ) 692 - SPEEDチャンネル(競輪ライブ) 693 - SPEEDチャンネル(競輪ライブ) 694 - スピードプラスワン695 - 地方競馬ナイン 701 - 地方競馬ナイン 702 - 地方競馬ナイン 703 - フェニックステレビ(鳳凰衛視) - ジュエリー☆GSTV - セレクトショッピング - kmpチャンネル - プレイボーイ チャンネル - レインボーチャンネル - ミッドナイト・ブルー - パラダイステレビ - チェリーボム - VENUS - バニラスカイチャンネル - エンタ!959 - Zaptv - ダイナマイトTV - AV王 - レッドチェリー - Splash - フラミンゴ - スカパー!プロモ599 - \ No newline at end of file diff --git a/sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.test.js b/sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.test.js deleted file mode 100644 index cabf72ee..00000000 --- a/sites/www.skyperfectv.co.jp/www.skyperfectv.co.jp.test.js +++ /dev/null @@ -1,53 +0,0 @@ -const { parser, url } = require('./www.skyperfectv.co.jp.config.js') -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('2024-08-01', 'YYYY-MM-DD').startOf('d') -const channel = { - site_id: 'basic_BS193', - name: 'WOWOWシネマ', - xmltv_id: 'WOWOWCinema.jp' -} - -const content = ` -番組表(アニメシアターX(AT-X))|スカパー!

                                              現在マイリストを更新中です。

                                              現在マイリストに登録中です。

                                              現在マイリストから削除中です。

                                              番組放送予定表

                                              基本プラン
                                              選択した日付から1週間の番組表を表示します
                                              番組放送予定表
                                              基本プラン
                                              選択した日付から1週間の番組表を表示します

                                              前週

                                              次週

                                              午前(4時~)

                                              午後(12時~)

                                              深夜(24時~)

                                              • 04:00〜04:30

                                                ヴァルキリードライヴマーメイド #06

                                                番組サムネイル
                                                        newAppBannerImgnewAppBannerImg

                                                        番組情報は予告なく変更となる場合がありますのでご了承ください

                                                        ・このサイトでは、当日から1週間分はEPGと同等の番組情報が表示され、その先1ヶ月後まではガイド誌(有料)と同等の番組情報が表示されます。番組や放送予定は予告なく変更される場合がありますのでご了承ください。
                                                        ・このサイトは、ウェブブラウザーMicrosoftEdge最新版、GoogleChrome最新版、Firefox最新版、Safari最新版での動作を確認しております。上記以外のウェブブラウザーで閲覧されますと、表示の乱れや予期せぬ動作を起こす場合がございますので、予めご了承ください。

                                                        ##ERROR_MSG##

                                                        ##ERROR_MSG##

                                                        ##ERROR_MSG##

                                                        マイリストから削除してもよいですか?

                                                        ログインをしてお気に入り番組を登録しよう!
                                                        Myスカパー!にログインをすると、マイリストにお気に入り番組リストを作成することができます!
                                                        ログイン新規会員登録
                                                        マイリストに番組を登録できません
                                                        ##ERROR_MSG##
                                                        -` - -it('can generate valid url', () => { - const result = url({ date, channel }) - 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 => { - p.start = p.start.toJSON() - p.stop = p.stop.toJSON() - return p - }) - - expect(result).toMatchObject([ - { - start: '2024-07-31T19:00:00.000Z', // UTC time - stop: '2024-07-31T19:30:00.000Z', // UTC - title: 'ヴァルキリードライヴマーメイド #06', - image: 'https://pm-img-ap.skyperfectv.co.jp/uploads/thumbnail/image/11301805/S_BC929697780313_be7975d4e26a4cad9b89fc6c94807e38_20240613144158569.jpg' - } - ]) -}) - - -const empty = ` -番組表(アニメシアターX(AT-X))|スカパー!

                                                        現在マイリストを更新中です。

                                                        現在マイリストに登録中です。

                                                        現在マイリストから削除中です。

                                                        番組放送予定表

                                                        基本プラン
                                                        選択した日付から1週間の番組表を表示します
                                                        番組放送予定表
                                                        基本プラン
                                                        選択した日付から1週間の番組表を表示します

                                                        前週

                                                        次週

                                                        午前(4時~)

                                                        午後(12時~)

                                                        深夜(24時~)

                                                                    newAppBannerImgnewAppBannerImg

                                                                    番組情報は予告なく変更となる場合がありますのでご了承ください

                                                                    ・このサイトでは、当日から1週間分はEPGと同等の番組情報が表示され、その先1ヶ月後まではガイド誌(有料)と同等の番組情報が表示されます。番組や放送予定は予告なく変更される場合がありますのでご了承ください。
                                                                    ・このサイトは、ウェブブラウザーMicrosoftEdge最新版、GoogleChrome最新版、Firefox最新版、Safari最新版での動作を確認しております。上記以外のウェブブラウザーで閲覧されますと、表示の乱れや予期せぬ動作を起こす場合がございますので、予めご了承ください。

                                                                    ##ERROR_MSG##

                                                                    ##ERROR_MSG##

                                                                    ##ERROR_MSG##

                                                                    マイリストから削除してもよいですか?

                                                                    ログインをしてお気に入り番組を登録しよう!
                                                                    Myスカパー!にログインをすると、マイリストにお気に入り番組リストを作成することができます!
                                                                    ログイン新規会員登録
                                                                    マイリストに番組を登録できません
                                                                    ##ERROR_MSG##
                                                                    -` - -it('can handle empty guide', () => { - const result = parser({ - date, - channel, - content: empty - }) - expect(result).toMatchObject([]) -}) From f641443a9daee896d275948189d176076d5c45c5 Mon Sep 17 00:00:00 2001 From: Animenosekai <40539549+Animenosekai@users.noreply.github.com> Date: Sun, 25 Aug 2024 16:37:26 +0200 Subject: [PATCH 11/14] [update] change back the URLs --- sites/skyperfectv.co.jp/README.md | 2 +- sites/skyperfectv.co.jp/skyperfectv.co.jp.config.js | 8 ++++---- sites/skyperfectv.co.jp/skyperfectv.co.jp.test.js | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/sites/skyperfectv.co.jp/README.md b/sites/skyperfectv.co.jp/README.md index 227bcb2e..f6ad307b 100644 --- a/sites/skyperfectv.co.jp/README.md +++ b/sites/skyperfectv.co.jp/README.md @@ -1,6 +1,6 @@ # skyperfectv.co.jp - + ## Index diff --git a/sites/skyperfectv.co.jp/skyperfectv.co.jp.config.js b/sites/skyperfectv.co.jp/skyperfectv.co.jp.config.js index 6a556d81..8fa6db6f 100644 --- a/sites/skyperfectv.co.jp/skyperfectv.co.jp.config.js +++ b/sites/skyperfectv.co.jp/skyperfectv.co.jp.config.js @@ -18,11 +18,11 @@ module.exports = { url: function ({ date, channel }) { let [type, ...code] = channel.site_id.split('_') code = code.join('_') - console.log(`https://skyperfectv.co.jp/program/schedule/${type}/channel:${code}/date:${date.format('YYMMDD')}`) - return `https://skyperfectv.co.jp/program/schedule/${type}/channel:${code}/date:${date.format('YYMMDD')}` + console.log(`https://www.skyperfectv.co.jp/program/schedule/${type}/channel:${code}/date:${date.format('YYMMDD')}`) + return `https://www.skyperfectv.co.jp/program/schedule/${type}/channel:${code}/date:${date.format('YYMMDD')}` }, logo: function ({channel}) { - return `https://skyperfectv.co.jp/library/common/img/channel/icon/basic/m_${channel.site_id.toLowerCase()}.gif` + return `https://www.skyperfectv.co.jp/library/common/img/channel/icon/basic/m_${channel.site_id.toLowerCase()}.gif` }, parser: function ({ content, date }) { const $ = cheerio.load(content) @@ -89,7 +89,7 @@ module.exports = { } const getChannels = async (type) => { - const response = await axios.get(`https://skyperfectv.co.jp/program/schedule/${type}/`) + const response = await axios.get(`https://www.skyperfectv.co.jp/program/schedule/${type}/`) return pageParser(response.data, type) } diff --git a/sites/skyperfectv.co.jp/skyperfectv.co.jp.test.js b/sites/skyperfectv.co.jp/skyperfectv.co.jp.test.js index 5be807a9..c6ff247c 100644 --- a/sites/skyperfectv.co.jp/skyperfectv.co.jp.test.js +++ b/sites/skyperfectv.co.jp/skyperfectv.co.jp.test.js @@ -13,12 +13,12 @@ const channel = { } const content = ` -番組表(アニメシアターX(AT-X))|スカパー!

                                                                    現在マイリストを更新中です。

                                                                    現在マイリストに登録中です。

                                                                    現在マイリストから削除中です。

                                                                    番組放送予定表

                                                                    基本プラン
                                                                    選択した日付から1週間の番組表を表示します
                                                                    番組放送予定表
                                                                    基本プラン
                                                                    選択した日付から1週間の番組表を表示します

                                                                    前週

                                                                    次週

                                                                    午前(4時~)

                                                                    午後(12時~)

                                                                    深夜(24時~)

                                                                    • 04:00〜04:30

                                                                      ヴァルキリードライヴマーメイド #06

                                                                      番組サムネイル
                                                                              newAppBannerImgnewAppBannerImg

                                                                              番組情報は予告なく変更となる場合がありますのでご了承ください

                                                                              ・このサイトでは、当日から1週間分はEPGと同等の番組情報が表示され、その先1ヶ月後まではガイド誌(有料)と同等の番組情報が表示されます。番組や放送予定は予告なく変更される場合がありますのでご了承ください。
                                                                              ・このサイトは、ウェブブラウザーMicrosoftEdge最新版、GoogleChrome最新版、Firefox最新版、Safari最新版での動作を確認しております。上記以外のウェブブラウザーで閲覧されますと、表示の乱れや予期せぬ動作を起こす場合がございますので、予めご了承ください。

                                                                              ##ERROR_MSG##

                                                                              ##ERROR_MSG##

                                                                              ##ERROR_MSG##

                                                                              マイリストから削除してもよいですか?

                                                                              ログインをしてお気に入り番組を登録しよう!
                                                                              Myスカパー!にログインをすると、マイリストにお気に入り番組リストを作成することができます!
                                                                              ログイン新規会員登録
                                                                              マイリストに番組を登録できません
                                                                              ##ERROR_MSG##
                                                                              +番組表(アニメシアターX(AT-X))|スカパー!

                                                                              現在マイリストを更新中です。

                                                                              現在マイリストに登録中です。

                                                                              現在マイリストから削除中です。

                                                                              番組放送予定表

                                                                              基本プラン
                                                                              選択した日付から1週間の番組表を表示します
                                                                              番組放送予定表
                                                                              基本プラン
                                                                              選択した日付から1週間の番組表を表示します

                                                                              前週

                                                                              次週

                                                                              午前(4時~)

                                                                              午後(12時~)

                                                                              深夜(24時~)

                                                                              • 04:00〜04:30

                                                                                ヴァルキリードライヴマーメイド #06

                                                                                番組サムネイル
                                                                                        newAppBannerImgnewAppBannerImg

                                                                                        番組情報は予告なく変更となる場合がありますのでご了承ください

                                                                                        ・このサイトでは、当日から1週間分はEPGと同等の番組情報が表示され、その先1ヶ月後まではガイド誌(有料)と同等の番組情報が表示されます。番組や放送予定は予告なく変更される場合がありますのでご了承ください。
                                                                                        ・このサイトは、ウェブブラウザーMicrosoftEdge最新版、GoogleChrome最新版、Firefox最新版、Safari最新版での動作を確認しております。上記以外のウェブブラウザーで閲覧されますと、表示の乱れや予期せぬ動作を起こす場合がございますので、予めご了承ください。

                                                                                        ##ERROR_MSG##

                                                                                        ##ERROR_MSG##

                                                                                        ##ERROR_MSG##

                                                                                        マイリストから削除してもよいですか?

                                                                                        ログインをしてお気に入り番組を登録しよう!
                                                                                        Myスカパー!にログインをすると、マイリストにお気に入り番組リストを作成することができます!
                                                                                        ログイン新規会員登録
                                                                                        マイリストに番組を登録できません
                                                                                        ##ERROR_MSG##
                                                                                        ` it('can generate valid url', () => { const result = url({ date, channel }) - expect(result).toBe('https://skyperfectv.co.jp/program/schedule/basic/channel:BS193/date:240801') + expect(result).toBe('https://www.skyperfectv.co.jp/program/schedule/basic/channel:BS193/date:240801') }) it('can parse response', () => { @@ -40,7 +40,7 @@ it('can parse response', () => { const empty = ` -番組表(アニメシアターX(AT-X))|スカパー!

                                                                                        現在マイリストを更新中です。

                                                                                        現在マイリストに登録中です。

                                                                                        現在マイリストから削除中です。

                                                                                        番組放送予定表

                                                                                        基本プラン
                                                                                        選択した日付から1週間の番組表を表示します
                                                                                        番組放送予定表
                                                                                        基本プラン
                                                                                        選択した日付から1週間の番組表を表示します

                                                                                        前週

                                                                                        次週

                                                                                        午前(4時~)

                                                                                        午後(12時~)

                                                                                        深夜(24時~)

                                                                                                    newAppBannerImgnewAppBannerImg

                                                                                                    番組情報は予告なく変更となる場合がありますのでご了承ください

                                                                                                    ・このサイトでは、当日から1週間分はEPGと同等の番組情報が表示され、その先1ヶ月後まではガイド誌(有料)と同等の番組情報が表示されます。番組や放送予定は予告なく変更される場合がありますのでご了承ください。
                                                                                                    ・このサイトは、ウェブブラウザーMicrosoftEdge最新版、GoogleChrome最新版、Firefox最新版、Safari最新版での動作を確認しております。上記以外のウェブブラウザーで閲覧されますと、表示の乱れや予期せぬ動作を起こす場合がございますので、予めご了承ください。

                                                                                                    ##ERROR_MSG##

                                                                                                    ##ERROR_MSG##

                                                                                                    ##ERROR_MSG##

                                                                                                    マイリストから削除してもよいですか?

                                                                                                    ログインをしてお気に入り番組を登録しよう!
                                                                                                    Myスカパー!にログインをすると、マイリストにお気に入り番組リストを作成することができます!
                                                                                                    ログイン新規会員登録
                                                                                                    マイリストに番組を登録できません
                                                                                                    ##ERROR_MSG##
                                                                                                    +番組表(アニメシアターX(AT-X))|スカパー!

                                                                                                    現在マイリストを更新中です。

                                                                                                    現在マイリストに登録中です。

                                                                                                    現在マイリストから削除中です。

                                                                                                    番組放送予定表

                                                                                                    基本プラン
                                                                                                    選択した日付から1週間の番組表を表示します
                                                                                                    番組放送予定表
                                                                                                    基本プラン
                                                                                                    選択した日付から1週間の番組表を表示します

                                                                                                    前週

                                                                                                    次週

                                                                                                    午前(4時~)

                                                                                                    午後(12時~)

                                                                                                    深夜(24時~)

                                                                                                                newAppBannerImgnewAppBannerImg

                                                                                                                番組情報は予告なく変更となる場合がありますのでご了承ください

                                                                                                                ・このサイトでは、当日から1週間分はEPGと同等の番組情報が表示され、その先1ヶ月後まではガイド誌(有料)と同等の番組情報が表示されます。番組や放送予定は予告なく変更される場合がありますのでご了承ください。
                                                                                                                ・このサイトは、ウェブブラウザーMicrosoftEdge最新版、GoogleChrome最新版、Firefox最新版、Safari最新版での動作を確認しております。上記以外のウェブブラウザーで閲覧されますと、表示の乱れや予期せぬ動作を起こす場合がございますので、予めご了承ください。

                                                                                                                ##ERROR_MSG##

                                                                                                                ##ERROR_MSG##

                                                                                                                ##ERROR_MSG##

                                                                                                                マイリストから削除してもよいですか?

                                                                                                                ログインをしてお気に入り番組を登録しよう!
                                                                                                                Myスカパー!にログインをすると、マイリストにお気に入り番組リストを作成することができます!
                                                                                                                ログイン新規会員登録
                                                                                                                マイリストに番組を登録できません
                                                                                                                ##ERROR_MSG##
                                                                                                                ` it('can handle empty guide', () => { From 55ab8741602a02db25ed1ce9725f7b787ac4a9c5 Mon Sep 17 00:00:00 2001 From: Animenosekai <40539549+Animenosekai@users.noreply.github.com> Date: Tue, 27 Aug 2024 18:01:09 +0200 Subject: [PATCH 12/14] [update] add @BellezaEmporium code --- .../skyperfectv.co.jp.config.js | 42 +++++++++++-------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/sites/skyperfectv.co.jp/skyperfectv.co.jp.config.js b/sites/skyperfectv.co.jp/skyperfectv.co.jp.config.js index 8fa6db6f..08f4e85c 100644 --- a/sites/skyperfectv.co.jp/skyperfectv.co.jp.config.js +++ b/sites/skyperfectv.co.jp/skyperfectv.co.jp.config.js @@ -18,14 +18,24 @@ module.exports = { url: function ({ date, channel }) { let [type, ...code] = channel.site_id.split('_') code = code.join('_') - console.log(`https://www.skyperfectv.co.jp/program/schedule/${type}/channel:${code}/date:${date.format('YYMMDD')}`) return `https://www.skyperfectv.co.jp/program/schedule/${type}/channel:${code}/date:${date.format('YYMMDD')}` }, - logo: function ({channel}) { + logo: function ({ channel }) { return `https://www.skyperfectv.co.jp/library/common/img/channel/icon/basic/m_${channel.site_id.toLowerCase()}.gif` }, - parser: function ({ content, date }) { - const $ = cheerio.load(content) + // Specific function that permits to gather NSFW channels (needs confirmation) + async fetchSchedule({ date, channel }) { + const url = this.url({ date, channel }) + const response = await axios.get(url, { + headers: { + 'Cookie': 'adult_auth=true' + } + }) + return response.data + }, + async parser({ date, channel }) { + const sched = await this.fetchSchedule({ date, channel }) + const $ = cheerio.load(sched) const programs = [] const sections = [ @@ -39,26 +49,20 @@ module.exports = { // `td` is a column for a day // the next `td` will be the next day const today = date.add(index + addition, 'd').tz('Asia/Tokyo') - + const parseTime = (timeString) => { // timeString is in the format "HH:mm" // replace `today` with the time from timeString const [hour, minute] = timeString.split(':').map(Number) return today.hour(hour).minute(minute) } - + const $element = $(element) // Wrap element with Cheerio $element.find('.p-program__item').each((itemIndex, itemElement) => { const $itemElement = $(itemElement) // Wrap itemElement with Cheerio const [start, stop] = $itemElement.find('.p-program__range').first().text().split('〜').map(parseTime) const title = $itemElement.find('.p-program__name').first().text() const image = $itemElement.find('.js-program_thumbnail').first().attr('data-lazysrc') - console.log({ - title, - start, - stop, - image - }) programs.push({ title, start, @@ -68,7 +72,7 @@ module.exports = { }) }) }) - + return programs }, async channels() { @@ -78,18 +82,22 @@ module.exports = { const $ = cheerio.load(content) const channels = [] - + $('.p-channel').each((index, element) => { const site_id = `${type}_${$(element).find('.p-channel__id').text()}` const name = $(element).find('.p-channel__name').text() channels.push({ site_id, name, lang: 'ja' }) }) - + return channels } const getChannels = async (type) => { - const response = await axios.get(`https://www.skyperfectv.co.jp/program/schedule/${type}/`) + const response = await axios.get(`https://www.skyperfectv.co.jp/program/schedule/${type}/`, { + headers: { + 'Cookie': 'adult_auth=true;' + } + }) return pageParser(response.data, type) } @@ -102,4 +110,4 @@ module.exports = { return await fetchAllChannels() } -} +} \ No newline at end of file From badfc0a7cdbce6b26ff7ca9c2165486bdceb9dd8 Mon Sep 17 00:00:00 2001 From: Animenosekai <40539549+Animenosekai@users.noreply.github.com> Date: Tue, 27 Aug 2024 18:01:47 +0200 Subject: [PATCH 13/14] =?UTF-8?q?[fix]=20changing=20incorrect=20`xmltv=5Fi?= =?UTF-8?q?d`=20for=20`=E3=83=91=E3=83=81=E3=83=BB=E3=82=B9=E3=83=AD?= =?UTF-8?q?=E3=80=80=E3=82=B5=E3=82=A4=E3=83=88=E3=82=BB=E3=83=96=E3=83=B3?= =?UTF-8?q?=EF=BC=B4=EF=BC=B6`=20in=20SkyPerfect!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sites/skyperfectv.co.jp/skyperfectv.co.jp.channels.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sites/skyperfectv.co.jp/skyperfectv.co.jp.channels.xml b/sites/skyperfectv.co.jp/skyperfectv.co.jp.channels.xml index 2e7f622d..a998b9a0 100644 --- a/sites/skyperfectv.co.jp/skyperfectv.co.jp.channels.xml +++ b/sites/skyperfectv.co.jp/skyperfectv.co.jp.channels.xml @@ -97,7 +97,7 @@ 日経CNBC ベターライフチャンネル パチンコ★パチスロTV! - パチ・スロ サイトセブンTV + パチ・スロ サイトセブンTV 釣りビジョンHD 寄席チャンネル 旅チャンネル From aa77d8abe629335c9f8379720ad3e59e137a788f Mon Sep 17 00:00:00 2001 From: Animenosekai <40539549+Animenosekai@users.noreply.github.com> Date: Sun, 13 Oct 2024 21:38:15 +0200 Subject: [PATCH 14/14] [fix] fixing `skyperfectv.co.jp` --- sites/s.mxtv.jp/s.mxtv.jp.config.js | 6 +++--- sites/skyperfectv.co.jp/skyperfectv.co.jp.config.js | 13 +++++++------ sites/skyperfectv.co.jp/skyperfectv.co.jp.test.js | 8 ++++---- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/sites/s.mxtv.jp/s.mxtv.jp.config.js b/sites/s.mxtv.jp/s.mxtv.jp.config.js index 3cc08ef2..e676d826 100644 --- a/sites/s.mxtv.jp/s.mxtv.jp.config.js +++ b/sites/s.mxtv.jp/s.mxtv.jp.config.js @@ -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', diff --git a/sites/skyperfectv.co.jp/skyperfectv.co.jp.config.js b/sites/skyperfectv.co.jp/skyperfectv.co.jp.config.js index 08f4e85c..c2d4aa23 100644 --- a/sites/skyperfectv.co.jp/skyperfectv.co.jp.config.js +++ b/sites/skyperfectv.co.jp/skyperfectv.co.jp.config.js @@ -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() } -} \ No newline at end of file +} + +module.exports = exported \ No newline at end of file diff --git a/sites/skyperfectv.co.jp/skyperfectv.co.jp.test.js b/sites/skyperfectv.co.jp/skyperfectv.co.jp.test.js index c6ff247c..eae08e3f 100644 --- a/sites/skyperfectv.co.jp/skyperfectv.co.jp.test.js +++ b/sites/skyperfectv.co.jp/skyperfectv.co.jp.test.js @@ -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 = ` 番組表(アニメシアターX(AT-X))|スカパー!

                                                                                                                現在マイリストを更新中です。

                                                                                                                現在マイリストに登録中です。

                                                                                                                現在マイリストから削除中です。

                                                                                                                番組放送予定表

                                                                                                                基本プラン
                                                                                                                選択した日付から1週間の番組表を表示します
                                                                                                                番組放送予定表
                                                                                                                基本プラン
                                                                                                                選択した日付から1週間の番組表を表示します

                                                                                                                前週

                                                                                                                次週

                                                                                                                午前(4時~)

                                                                                                                午後(12時~)

                                                                                                                深夜(24時~)

                                                                                                                            newAppBannerImgnewAppBannerImg

                                                                                                                            番組情報は予告なく変更となる場合がありますのでご了承ください

                                                                                                                            ・このサイトでは、当日から1週間分はEPGと同等の番組情報が表示され、その先1ヶ月後まではガイド誌(有料)と同等の番組情報が表示されます。番組や放送予定は予告なく変更される場合がありますのでご了承ください。
                                                                                                                            ・このサイトは、ウェブブラウザーMicrosoftEdge最新版、GoogleChrome最新版、Firefox最新版、Safari最新版での動作を確認しております。上記以外のウェブブラウザーで閲覧されますと、表示の乱れや予期せぬ動作を起こす場合がございますので、予めご了承ください。

                                                                                                                            ##ERROR_MSG##

                                                                                                                            ##ERROR_MSG##

                                                                                                                            ##ERROR_MSG##

                                                                                                                            マイリストから削除してもよいですか?

                                                                                                                            ログインをしてお気に入り番組を登録しよう!
                                                                                                                            Myスカパー!にログインをすると、マイリストにお気に入り番組リストを作成することができます!
                                                                                                                            ログイン新規会員登録
                                                                                                                            マイリストに番組を登録できません
                                                                                                                            ##ERROR_MSG##
                                                                                                                            ` -it('can handle empty guide', () => { +it('can handle empty guide', async () => { const result = parser({ date, channel,