From 34a3f708a9c0a336bd59283f39011ce5e0152f71 Mon Sep 17 00:00:00 2001
From: theofficialomega <30985701+BellezaEmporium@users.noreply.github.com>
Date: Wed, 17 Dec 2025 16:58:56 +0100
Subject: [PATCH] reworked skyperfectv channels parse, prevent dupes, update
sjonvarp and singtel channels
---
sites/sjonvarp.is/sjonvarp.is.channels.xml | 14 +-
sites/sky.com/sky.com.channels.xml | 4 +-
.../skyperfectv.co.jp.channels.xml | 308 +++++++++++-------
.../skyperfectv.co.jp.config.js | 39 ++-
4 files changed, 222 insertions(+), 143 deletions(-)
diff --git a/sites/sjonvarp.is/sjonvarp.is.channels.xml b/sites/sjonvarp.is/sjonvarp.is.channels.xml
index b018a11c..c6fdbf2d 100644
--- a/sites/sjonvarp.is/sjonvarp.is.channels.xml
+++ b/sites/sjonvarp.is/sjonvarp.is.channels.xml
@@ -1,16 +1,16 @@
- Stöð 2 Golf
- RÚV
RÚV Íþróttir
- Sjónvarp Símans
- Síminn Sport
+ RÚV
Síminn Sport 2
+ Síminn Sport
+ Sjónvarp Símans
+ Stöð 2
Stöð 2 E Sport
+ Stöð 2 Fjölskylda
+ Stöð 2 Golf
+ Stöð 2 Sport 2
Stöð 2 Sport 3
Stöð 2 Sport 4
- Stöð 2 Sport 2
- Stöð 2
- Stöð 2 Fjölskylda
Stöð 2 Sport
diff --git a/sites/sky.com/sky.com.channels.xml b/sites/sky.com/sky.com.channels.xml
index 7492e08b..50bdb763 100644
--- a/sites/sky.com/sky.com.channels.xml
+++ b/sites/sky.com/sky.com.channels.xml
@@ -373,11 +373,11 @@
Sky Atlantic HD
Sky Atlantic+1
Sky Atlantic
- Spider-Man HD
+ Sky Action HD
SkyAnimationHD
Sky Comedy HD
Sky Drama HD
- SkyKarateKidHD
+ Sky Family HD
Favourites HD
SkyExclusivesHD
SkyPremiereHD
diff --git a/sites/skyperfectv.co.jp/skyperfectv.co.jp.channels.xml b/sites/skyperfectv.co.jp/skyperfectv.co.jp.channels.xml
index 92497b95..4275324a 100644
--- a/sites/skyperfectv.co.jp/skyperfectv.co.jp.channels.xml
+++ b/sites/skyperfectv.co.jp/skyperfectv.co.jp.channels.xml
@@ -1,140 +1,202 @@
- WOWOW 4K
- WOWOWプライム
- WOWOWライブ
- WOWOWシネマ
- スターチャンネル
- グリーンチャンネル
+ BS10プレミアム
+ フェニックステレビ(鳳凰衛視)
+ 囲碁・将棋チャンネル
+ ショップチャンネル
+ QVC(キューヴィーシー)
+ ジュエリー☆GSTV
+ セレクトショッピング
+ ベターライフチャンネル
+ 大人のイキヌキ!ヌーヴェルパラダイス
+ パチンコ★パチスロTV!
+ パチ・スロ サイトセブンTV
+ 釣りビジョンHD
+ 寄席チャンネル
+ 旅チャンネル
+ 鉄道チャンネル
+ SORA―お天気チャンネル―
+ BBCニュース
+ CNNj(国際ニュースCNN24時間チャンネル)
+ CNN U.S.
+ 中国テレビ★大富チャンネル
+ 日経CNBC
+ 日テレNEWS24
+ TBS NEWS
+ スポーツライブ+
+ スカチャン1
+ スポーツライブ+ 2
+ スカチャン5
+ スカチャン6
+ スカチャン7
+ スカチャン8
+ スカチャン9
+ スカチャン10
+ スカチャン11
+ スカパー!プロモ599
+ FIGHTING TV サムライ
+ ゴルフネットワーク
+ GAORA SPORTS
+ J SPORTS 1
+ J SPORTS 2
+ J SPORTS 4
+ J SPORTS 3
+ スカイA
+ 日テレジータス
+ 刺激ストロングチャンネル
+ テレ朝チャンネル1
+ テレ朝チャンネル2
+ フジテレビNEXT ライブ・プレミアム
+ フジテレビONE スポーツ・バラエティ
+ フジテレビTWO ドラマ・アニメ
+ TBSチャンネル1 最新ドラマ・音楽・映画
+ TBSチャンネル2 名作ドラマ・スポーツ・アニメ
+ エンタメ~テレ☆シネドラバラエティ
+ 日テレプラス ドラマ・アニメ・音楽ライブ
+ ディズニー・チャンネル
+ WOWOWプライム
+ WOWOWライブ
+ WOWOWシネマ
+ BS10プレミアム
+ 衛星劇場
+ 東映チャンネル
+ WOWOWプラス 映画・ドラマ・スポーツ・音楽
+ ザ・シネマ
+ ムービープラス
+ 映画・チャンネルNECO
+ 日本映画専門チャンネル
+ V☆パラダイス
+ エキサイティング・グランプリ
+ ミュージック・エア
+ ミュージック・ジャパンTV
+ MTV
+ MUSIC ON! TV(エムオン!)
+ 音楽・ライブ! スペースシャワーTV
+ 歌謡ポップスチャンネル
+ ミュージック・グラフィティTV
+ スーパー!ドラマTV #海外ドラマ☆エンタメ
+ ミステリーチャンネル
+ アクションチャンネル
+ Dlife(ディーライフ)
+ 女性チャンネル♪LaLa TV
+ アジアドラマチックTV(アジドラ)
+ KBS World 韓流専門チャンネル
+ KNTV
+ Mnet
+ MONDO TV
+ ファミリー劇場
+ ホームドラマチャンネル 韓流・時代劇・国内ドラマ
+ 時代劇専門チャンネル
+ アイドル専門チャンネルPigoo
+ チャンネル銀河 歴史ドラマ・サスペンス・日本のうた
+ ダンスチャンネル by エンタメ~テレ
+ アニメシアターX(AT-X)
+ カートゥーン ネットワーク 海外アニメ国内アニメ
+ キッズステーション テレビアニメ・劇場版・OVA
+ アニマックス
+ ディズニージュニア
+ ヒストリーチャンネル 日本・世界の歴史&エンタメ
+ ナショナル ジオグラフィック
+ ディスカバリーチャンネル
+ アニマルプラネット
+ 南関東地方競馬チャンネル
+ JLC680
+ JLC681
+ JLC682
+ JLC683
+ JLC684
+ グリーンチャンネル
+ グリーンチャンネル2
+ SPEEDチャンネル(競輪ライブ) 690
+ SPEEDチャンネル(競輪ライブ) 691
+ SPEEDチャンネル(競輪ライブ) 692
+ SPEEDチャンネル(競輪ライブ) 693
+ SPEEDチャンネル(競輪ライブ) 694
+ SPEEDチャンネル(競輪ライブ) 695
+ SPEEDチャンネル(競輪ライブ) 696
+ 地方競馬ナイン 701
+ 地方競馬ナイン 702
+ 地方競馬ナイン 703
+ kmpチャンネル
+ プレイボーイ チャンネル
+ レインボーチャンネル
+ ミッドナイト・ブルー
+ パラダイステレビ
+ チェリーボム
+ VENUS
+ バニラスカイチャンネル
+ エンタ!959
+ Zaptv
+ ダイナマイトTV
+ AV王
+ レッドチェリー
+ Splash
+ フラミンゴ
+ アクションチャンネル
+ アニマルプラネット
アニマックス
+ アニメシアターX(AT-X)
+ BBCニュース
+ カートゥーン ネットワーク 海外アニメ国内アニメ
+ チャンネル銀河 歴史ドラマ・サスペンス・日本のうた
+ 映画・チャンネルNECO
+ CNNj(国際ニュースCNN24時間チャンネル)
+ ディスカバリーチャンネル
+ ディズニー・チャンネル
+ ディズニージュニア
+ Dlife(ディーライフ)
+ 衛星劇場
+ エンタメ~テレ☆シネドラバラエティ
+ ファミリー劇場
+ BS釣りビジョン
+ フジテレビNEXT ライブ・プレミアム
+ フジテレビONE スポーツ・バラエティ
+ フジテレビTWO ドラマ・アニメ
+ GAORA SPORTS
+ ゴルフネットワーク
+ グリーンチャンネル
+ ヒストリーチャンネル 日本・世界の歴史&エンタメ
+ ホームドラマチャンネル 韓流・時代劇・国内ドラマ
+ 囲碁・将棋チャンネル
+ 時代劇専門チャンネル
J SPORTS 1
J SPORTS 2
J SPORTS 3
J SPORTS 4
- BS釣りビジョン
- WOWOWプラス 映画・ドラマ・スポーツ・音楽
- 日本映画専門チャンネル
- ディズニー・チャンネル
- ショップチャンネル
- QVC(キューヴィーシー)
- 東映チャンネル
- 衛星劇場
- 映画・チャンネルNECO
- ザ・シネマ
- ムービープラス
- スカイA
- GAORA SPORTS
- 日テレジータス
- ゴルフネットワーク
- TAKARAZUKA SKY STAGE
- 時代劇専門チャンネル
- ファミリー劇場
- ホームドラマチャンネル 韓流・時代劇・国内ドラマ
- MONDO TV
- TBSチャンネル1 最新ドラマ・音楽・映画
- TBSチャンネル2 名作ドラマ・スポーツ・アニメ
- テレ朝チャンネル1
- テレ朝チャンネル2
- 日テレプラス ドラマ・アニメ・音楽ライブ
- エンタメ~テレ☆シネドラバラエティ
- チャンネル銀河 歴史ドラマ・サスペンス・日本のうた
- フジテレビONE スポーツ・バラエティ
- フジテレビTWO ドラマ・アニメ
- フジテレビNEXT ライブ・プレミアム
- スーパー!ドラマTV #海外ドラマ☆エンタメ
- アクションチャンネル
- Dlife
+ 歌謡ポップスチャンネル
+ KBS World 韓流専門チャンネル
+ キッズステーション テレビアニメ・劇場版・OVA
女性チャンネル♪LaLa TV
- ミステリーチャンネル
- KBS World 韓流専門チャンネル
Mnet
- 100%ヒッツ!スペースシャワーTV プラス
- 音楽・ライブ! スペースシャワーTV
+ MONDO TV
+ ムービープラス
MTV
ミュージック・エア
MUSIC ON! TV(エムオン!)
- 歌謡ポップスチャンネル
- キッズステーション テレビアニメ・劇場版・OVA
- カートゥーン ネットワーク 海外アニメ国内アニメ
- アニメシアターX(AT-X)
- ディズニージュニア
- ディスカバリーチャンネル
- アニマルプラネット
- ヒストリーチャンネル 日本・世界の歴史&エンタメ
+ ミステリーチャンネル
ナショナル ジオグラフィック
+ 日本映画専門チャンネル
+ 日テレプラス ドラマ・アニメ・音楽ライブ
+ 日テレジータス
日テレNEWS24
- TBS NEWS
- BBCニュース
- CNNj
- 囲碁・将棋チャンネル
+ QVC(キューヴィーシー)
+ ショップチャンネル
+ スカイA
+ 音楽・ライブ! スペースシャワーTV
+ ミュージック・ジャパンTV
スポーツライブ+
スカチャン1
- フェニックステレビ(鳳凰衛視)
- ジュエリー☆GSTV
- セレクトショッピング
- ベターライフチャンネル
- 大人のイキヌキ!ヌーヴェルパラダイス
- パチンコ★パチスロTV!
- パチ・スロ サイトセブンTV
- 釣りビジョンHD
- 寄席チャンネル
- 旅チャンネル
- 鉄道チャンネル
- SORA―お天気チャンネル―
- CNN U.S.
- 中国テレビ★大富チャンネル
- 日経CNBC
- スポーツライブ+ 2
- スカチャン5
- スカチャン6
- スカチャン7
- スカチャン8
- スカチャン9
- スカチャン10
- スカチャン11
- スカチャン12
- スカチャン13
- スカチャン14
- スカパー!プロモ599
- FIGHTING TV サムライ
- 刺激ストロングチャンネル
- V☆パラダイス
- エキサイティング・グランプリ
- ミュージック・ジャパンTV
- ミュージック・グラフィティTV
- アジアドラマチックTV(アジドラ)
- KNTV
- アイドル専門チャンネルPigoo
- ダンスチャンネル by エンタメ~テレ
- 南関東地方競馬チャンネル
- JLC680
- JLC681
- JLC682
- JLC683
- JLC684
- グリーンチャンネル2
- SPEEDチャンネル(競輪ライブ) 690
- SPEEDチャンネル(競輪ライブ) 691
- SPEEDチャンネル(競輪ライブ) 692
- SPEEDチャンネル(競輪ライブ) 693
- SPEEDチャンネル(競輪ライブ) 694
- スピードプラスワン695
- 地方競馬ナイン 701
- 地方競馬ナイン 702
- 地方競馬ナイン 703
- kmpチャンネル
- プレイボーイ チャンネル
- レインボーチャンネル
- ミッドナイト・ブルー
- パラダイステレビ
- チェリーボム
- VENUS
- バニラスカイチャンネル
- エンタ!959
- Zaptv
- ダイナマイトTV
- AV王
- レッドチェリー
- Splash
- フラミンゴ
+ スーパー!ドラマTV #海外ドラマ☆エンタメ
+ TAKARAZUKA SKY STAGE
+ TBSチャンネル1 最新ドラマ・音楽・映画
+ TBSチャンネル2 名作ドラマ・スポーツ・アニメ
+ TBS NEWS
+ ザ・シネマ
+ 東映チャンネル
+ テレ朝チャンネル1
+ テレ朝チャンネル2
+ WOWOWシネマ
+ WOWOWライブ
+ WOWOWプラス 映画・ドラマ・スポーツ・音楽
+ WOWOWプライム
diff --git a/sites/skyperfectv.co.jp/skyperfectv.co.jp.config.js b/sites/skyperfectv.co.jp/skyperfectv.co.jp.config.js
index 16ec8f7d..a064ba55 100644
--- a/sites/skyperfectv.co.jp/skyperfectv.co.jp.config.js
+++ b/sites/skyperfectv.co.jp/skyperfectv.co.jp.config.js
@@ -78,26 +78,44 @@ const exported = {
return programs
},
async channels() {
+ const normalizeText = str => (str || '').replace(/\s+/g, ' ').trim()
+
+ const getChannelIdFromHref = href => {
+ const m = (href || '').match(/channel:([^/]+)\//i)
+ return m ? normalizeText(m[1]) : ''
+ }
+
const pageParser = (content, type) => {
// type: "basic" | "premium"
- // Returns an array of channel objects
-
const $ = cheerio.load(content)
- const channels = []
+ const map = new Map()
- $('.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' })
+ $('.p-channel').each((_, element) => {
+ const $el = $(element)
+
+ const href = $el.find('a.p-channel__link').attr('href') || $el.find('a').first().attr('href')
+ const idFromDom = normalizeText($el.find('.p-channel__id').first().text())
+ const id = idFromDom || getChannelIdFromHref(href)
+
+ const name = normalizeText($el.find('.p-channel__name').first().text())
+
+ if (!id || !name) return
+
+ const site_id = `${type}_${id}`
+ if (!map.has(site_id)) {
+ map.set(site_id, { site_id, name, lang: 'ja' })
+ }
})
- return channels
+ return Array.from(map.values())
}
const getChannels = async type => {
const response = await axios.get(`https://www.skyperfectv.co.jp/program/schedule/${type}/`, {
headers: {
- Cookie: 'adult_auth=true;'
+ Cookie: 'adult_auth=true;',
+ 'User-Agent':
+ 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36'
}
})
return pageParser(response.data, type)
@@ -106,8 +124,7 @@ const exported = {
const fetchAllChannels = async () => {
const basicChannels = await getChannels('basic')
const premiumChannels = await getChannels('premium')
- const results = [...basicChannels, ...premiumChannels]
- return results
+ return [...basicChannels, ...premiumChannels]
}
return await fetchAllChannels()