●shoutcast-test
50局中3局しか稼働してないとか、多分方法がかわっているので対応できてない。一時中止とする。
SHOUTcastについて、以下の問合せと回答があった。
SHOUTcast 聞き手側をWEBアプリとしてつくれるかな?
はい、作れます。現代のWeb技術を使えば、SHOUTcastの聞き手側(リスナー)をWebアプリケーションとして構築することは十分可能です。
### 基本的な作り方 (聞くだけのシンプルなアプリ)
最も簡単な方法は、HTML5の`<audio>`タグを使うことです。SHOUTcastのストリームはHTTPで配信される音声データなので、そのURLを`<audio>`タグの`src`属性に指定するだけで、Webページ上で再生プレーヤーを実装できます。
**HTMLコードの例:**
```html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>SHOUTcast Web Player</title>
</head>
<body>
<h1>インターネットラジオを聴く</h1>
<audio controls src="http://your-shoutcast-server-ip:8000/stream"></audio>
<p>※上の再生ボタンを押してください。</p>
</body>
</html>
```
このコードの `http://your-shoutcast-server-ip:8000/stream` の部分を、聴きたいラジオ局のストリーミングURLに書き換えるだけで、ブラウザに表示される再生/一時停止ボタンや音量バーで操作できるプレーヤーが完成します。
-----
### より高機能なアプリにするには (JavaScriptの活用)
さらにJavaScriptを組み合わせることで、より高機能でデザイン性の高いWebアプリを作成できます。
#### **できること**
* **独自の再生/停止ボタンの作成:** HTMLのボタンとJavaScriptの`play()`, `pause()`メソッドを連携させて、オリジナルのUIを作れます。
* **曲名やアーティスト情報の表示:** SHOUTcastサーバーは、現在流れている曲の情報をメタデータとして提供していることがよくあります。JavaScriptの`fetch`などを使ってサーバーのステータスページ(JSONやXML形式で提供されることが多い)に定期的にアクセスし、取得した曲情報をWebページ上にリアルタイムで表示させることができます。
**JavaScriptコードのイメージ:**
```javascript
const audioPlayer = new Audio('http://your-shoutcast-server-ip:8000/stream');
const playButton = document.getElementById('play-btn');
const songTitle = document.getElementById('song-title');
//再生ボタンの制御
playButton.addEventListener('click', () => {
if (audioPlayer.paused) {
audioPlayer.play();
playButton.textContent = '停止';
} else {
audioPlayer.pause();
playButton.textContent = '再生';
}
});
// 3秒ごとに曲情報を取得して更新
setInterval(async () => {
try {
// サーバーのステータスURLから情報を取得
const response = await fetch('http://your-shoutcast-server-ip:8000/stats?sid=1&json=1');
const data = await response.json();
// 曲情報を表示
songTitle.textContent = data.songtitle;
} catch (error) {
console.error('曲情報の取得に失敗しました。', error);
songTitle.textContent = '曲情報なし';
}
}, 3000);
```
-----
### 注意点 ⚠️
* **CORS (Cross-Origin Resource Sharing):** あなたのWebアプリのドメインと、SHOUTcastサーバーのドメインが異なる場合、ブラウザのセキュリティ機能(CORSポリシー)により、JavaScriptでの曲情報取得などがブロックされることがあります。これを解決するには、SHOUTcastサーバー側で適切な許可設定(`Access-Control-Allow-Origin`ヘッダー)が必要になります。
* **HTTPとHTTPS (Mixed Content):** あなたのWebアプリがHTTPSで公開されている場合、セキュリティ上の理由で暗号化されていないHTTPのストリームを再生できないことがあります(Mixed Contentエラー)。できれば、ラジオ局側もHTTPSでストリームを配信していることが望ましいです。
これらの点を考慮すれば、**HTMLとJavaScriptだけで十分に実用的なリスナー向けWebアプリを開発できます。**
それと、ラジオ局のURLについて調査結果も得られた(以下、CSV形式) これら2つのデータから、
ラジオ局を選択し、再生で音がでるWEBアプリを作ってもらいたい。
まずは Ver0.01とする。
Station Name,Primary Genre,Stream URL,Server Type,Metadata Retrieval Method,Metadata Endpoint / Instructions,Notes
R/a/dio,Anime/Japanese,http://relay0.r-a-d.io/main.mp3,Icecast 2.4,JSON,http://relay1.r-a-d.io/status-json.xsl,マウントポイントは /main.mp3。公式サイトは r-a-d.io [27]。
Vocaloid Radio,Vocaloid,https://vocaloid.radioca.st/stream,Icecast 2.4,JSON,https://vocaloid.radioca.st/status-json.xsl,公式サイトは vocaloidradio.com [28, 29]。複数のビットレートを提供。
J-Pop Powerplay Kawaii,J-Pop,http://149.56.23.7:20002/stream,SHOUTcast v2,JSON,http://149.56.23.7:20002/stats?json=1,"Asia DREAM Radioネットワークの一部 [30, 31]。ストリームURLはコミュニティリストより [21]。"
JPopsuki Radio,J-Pop,http://jpopsuki.fm:8000/stream,SHOUTcast v2,ICY,ICYパーサーを使用。公開されたJSON/XMLエンドポイントは確認できず。,ストリームURLはコミュニティリストより [21]。サーバーは/statsや/status.xslに応答しない。
J-Pop Powerplay,J-Pop,http://cabhs30.sonixcast.com:9628/;.mp3,SHOUTcast v2,JSON,http://cabhs30.sonixcast.com:9628/stats?json=1,"Asia DREAM Radioネットワークの一部 [30, 32]。ストリームURLはコミュニティリストより [21]。"
J-Rock Powerplay,J-Rock,http://cabhs30.sonixcast.com:9508/;.m3u,SHOUTcast v2,JSON,http://cabhs30.sonixcast.com:9508/stats?json=1,"Asia DREAM Radioネットワークの一部 [33, 34]。ストリームURLはコミュニティリストより [21]。"
AnimeNfo Radio,Anime,http://momori.animenfo.com:8000/,Icecast 2,JSON,http://momori.animenfo.com:8000/status-json.xsl,ストリームURLはコミュニティリストより [21]。エンドポイントは標準的なIcecastのものを利用。
Ghost Anime Radio,Anime,http://animeradio.su:8000/;,SHOUTcast v2,ICY,ICYパーサーを使用。公開されたJSON/XMLエンドポイントは確認できず。,ストリームURLはコミュニティリストより [21]。サーバーは/statsに応答しない [35]。
Japanimradio - Officiel,Anime/J-Pop,http://listen.radioking.com/japanimradio-fm3,SHOUTcast v2,JSON,http://listen.radioking.com/japanimradio-fm3/stats?json=1,公式サイトのリンク [36] はリダイレクト。最終的なストリームURLとエンドポイント。
Asia DREAM Radio - Japan Hits,J-Pop,http://cabhs30.sonixcast.com:9764/,SHOUTcast v2,JSON,http://cabhs30.sonixcast.com:9764/stats?json=1,Asia DREAM Radioネットワークのメイン局 [30]。
J-Pop Sakura,J-Pop,http://cabhs31.sonixcast.com:20278/,SHOUTcast v2,JSON,http://cabhs31.sonixcast.com:20278/stats?json=1,懐メロJ-Popに特化。Asia DREAM Radioネットワークの一部 [21, 37]。
Hotmix Radio Japan,J-Pop,http://hotmixradio-japan.ice.infomaniak.ch/hotmixradio-japan-128.mp3,Icecast 2,ICY,ICYパーサーを使用。公開されたJSON/XMLエンドポイントは確認できず。,Icecastサーバーだが、標準の統計情報エンドポイントは無効化されている模様。
Shonan Beach FM,Pop/Local,http://47.89.252.38:8000/by_the_sea,SHOUTcast v1,7.html,http://47.89.252.38:8000/7.html,神奈川県のコミュニティFM。ストリームURLはコミュニティリストより [21]。
Be Happy!789,Community,http://musicbird.leanstream.co/JCB068-MP3,Icecast,JSON,http://musicbird.leanstream.co/status-json.xsl?mount=/JCB068-MP3,山形県米沢市のコミュニティFM。Musicbird系列 [21]。
Ottava (オッターヴァ),Classical,http://rakuten.streamguys1.com/ottava1_b,Icecast,ICY,ICYパーサーを使用。公開されたJSON/XMLエンドポイントは確認できず。,楽天が運営するクラシック専門局 [21]。
Tokyo FM World,J-Pop/International,http://tokyofmworld.leanstream.co/JOAUFM-MP3?args=tunein,Icecast,ICY,ICYパーサーを使用。公開されたJSON/XMLエンドポイントは確認できず。,Tokyo FMの国際放送 [21]。
Japan-a-Radio,Anime/J-Pop,http://audio.misproductions.com/japan48k,SHOUTcast v1,7.html,http://audio.misproductions.com/7.html,老舗のアニメ・J-POP系ラジオ [21]。
J-Club Powerplay HipHop,J-HipHop,http://agnes.torontocast.com:8051/;.mp3,SHOUTcast v2,JSON,http://agnes.torontocast.com:8051/stats?json=1,Asia DREAM Radioネットワークの一部 [21, 30]。
WREP,HipHop,http://139.99.4.27/stream,Icecast,ICY,ICYパーサーを使用。公開されたJSON/XMLエンドポイントは確認できず。,日本のヒップホップ専門局 [21]。
Kittikun Minimal Techno,Techno,http://shoutcast.kittikun.jp:11168/,SHOUTcast v2,JSON,http://shoutcast.kittikun.jp:11168/stats?json=1,個人運営のテクノ専門局 [21]。
Nightwave Plaza,Vaporwave,http://plaza.one/ogg,Icecast,JSON,http://plaza.one/status-json.xsl,Vaporwave専門局。ストリームはOGG形式 [21]。
Retro PC GAME,Video Game Music,http://gyusyabu.ddo.jp:8000/,SHOUTcast v1,7.html,http://gyusyabu.ddo.jp:8000/7.html,レトロゲーム音楽専門局 [21]。
No Life Radio,Anime/Game,http://radio.nolife-radio.com:9000/stream,Icecast,ICY,ICYパーサーを使用。公開されたJSON/XMLエンドポイントは確認できず。,フランス発のアニメ・ゲーム音楽局 [21]。
J1 Hits,J-Pop,http://jenny.torontocast.com:20000/stream/J1HITS,SHOUTcast v2,JSON,http://jenny.torontocast.com:20000/stats?sid=J1HITS&json=1,J1 Radioネットワークのヒットチャンネル [40, 41]。
J1 Xtra,J-Pop (Retro),http://jenny.torontocast.com:8058/xtra,SHOUTcast v2,JSON,http://jenny.torontocast.com:8058/stats?json=1,J1 Radioネットワークの懐メロチャンネル [40]。
Nonstop Casiopea,Fusion/Jazz,http://hyades.shoutca.st:8551/,SHOUTcast v2,JSON,http://hyades.shoutca.st:8551/stats?json=1,日本のフュージョンバンドCasiopea専門局 [40]。
J-Idols Project Radio,J-Pop/Idol,http://stream.radio.co/s953f51e42/listen,Radio.co,ICY,Radio.coプラットフォームは通常ICYを使用。,女性アイドルに特化したラジオ局 [18, 42]。
Anime Plus Radio,Anime,http://192.240.102.133:11216/stream,SHOUTcast v2,JSON,http://192.240.102.133:11216/stats?json=1,南米発のアニメ音楽ラジオ [42]。
The Kyoto Connection,Ambient/Instrumental,https://radio.thekyotoconnection.com/stream.mp3,Unknown,ICY,ICYパーサーを使用。公開されたJSON/XMLエンドポイントは確認できず。,日本のアンビエント音楽に特化 [43]。
JPHiP Radio,J-HipHop/R&B,http://radio.jphip.com:8800/,SHOUTcast v1,7.html,http://radio.jphip.com:8800/7.html,日本のヒップホップ・R&B専門局 [17, 21]。
Isekai-Online,Anime/J-Pop,https://www.isekai-online.com/radioking/icecast.php,Icecast,ICY,ICYパーサーを使用。公開されたJSON/XMLエンドポイントは確認できず。,フランス発の日本ポップカルチャー専門局 [44]。
Stereo Anime,Anime/Game,http://192.99.150.42:2345/stream,SHOUTcast v2,JSON,http://192.99.150.42:2345/stats?json=1,アニメ・ゲーム音楽専門局 [45, 46]。
Anison FM,Anime,http://anison.fm:8000/radio,Icecast,ICY,ICYパーサーを使用。公開されたJSON/XMLエンドポイントは確認できず。,ロシア発のアニソン専門局 [47, 48]。
Extreme Anime Radio,Anime/Game,http://radio.keiichi.net:8000/ear.mp3,Icecast,ICY,ICYパーサーを使用。公開されたJSON/XMLエンドポイントは確認できず。,リクエストベースのアニメ・ゲーム音楽局 [49, 50]。
J-Pop Project Radio,J-Pop/Idol,http://stream.radio.co/s953f51e42/listen,Radio.co,ICY,J-Idols Project Radioと同じストリームの可能性が高い [18, 51]。
Radio Anime Nexus,Anime,http://nexus.radio:8000/stream,Icecast,ICY,ICYパーサーを使用。公開されたJSON/XMLエンドポイントは確認できず。,アニメ音楽コミュニティラジオ [17]。
Yggdrasil Radio,Anime/J-Pop,http://radio.yggdrasil.me/radio/8000/radio.mp3,Icecast,ICY,ICYパーサーを使用。公開されたJSON/XMLエンドポイントは確認できず。,アニメ・J-POP中心のラジオ [17]。
JMusicAnime Radio,Anime/J-Music,http://192.99.8.192:3560/stream,SHOUTcast v2,JSON,http://192.99.8.192:3560/stats?json=1,アニメ・日本音楽全般 [17]。
Radio Animati,Anime (Italian),http://stream.radioanimati.it:8000/radioanimati,Icecast,ICY,ICYパーサーを使用。公開されたJSON/XMLエンドポイントは確認できず。,イタリアのアニメソング専門局 [17]。
Anime Web Radio,Anime,http://animewebradio.it:8000/stream.mp3,Icecast,ICY,ICYパーサーを使用。公開されたJSON/XMLエンドポイントは確認できず。,イタリアのアニメ専門ウェブサイトのラジオ [52]。
Kibo.FM,Anime/J-Pop,http://stream.kibo.fm/live,Icecast,ICY,ICYパーサーを使用。公開されたJSON/XMLエンドポイントは確認できず。,ドイツの日本ラジオ [19]。
Radio-AniNeko,J-Pop/K-Pop/Anime,http://radio-anineko.de:8000/live.mp3,Icecast,ICY,ICYパーサーを使用。公開されたJSON/XMLエンドポイントは確認できず。,ドイツ発のアジア音楽局 [19]。
鎌倉エフエム (Kamakura FM),Community,http://musicbird.leanstream.co/JCB016-MP3,Icecast,JSON,http://musicbird.leanstream.co/status-json.xsl?mount=/JCB016-MP3,神奈川県鎌倉市のコミュニティFM [21]。
FMちゅーピー (FM Chupea),Community,http://musicbird.leanstream.co/JCB082-MP3,Icecast,JSON,http://musicbird.leanstream.co/status-json.xsl?mount=/JCB082-MP3,広島県広島市のコミュニティFM [21]。
FM Edogawa,Community,http://musicbird.leanstream.co/JCB033-MP3,Icecast,JSON,http://musicbird.leanstream.co/status-json.xsl?mount=/JCB033-MP3,東京都江戸川区のコミュニティFM [21]。
FM千里 (FM Senri),Community,http://simul.freebit.net:8310/fmsenri,Unknown,ICY,ICYパーサーを使用。公開されたJSON/XMLエンドポイントは確認できず。,大阪府豊中市のコミュニティFM [21]。
Radio MOMO (レディオモモ),Community,http://musicbird.leanstream.co/JCB079-MP3,Icecast,JSON,http://musicbird.leanstream.co/status-json.xsl?mount=/JCB079-MP3,岡山県岡山市のコミュニティFM [21]。
Radio Hayama,Community,http://199.195.194.140:8073/,SHOUTcast v1,7.html,http://199.195.194.140:8073/7.html,神奈川県葉山町のコミュニティFM [21]。
FM-POCO (FMポコ),Community,http://musicbird.leanstream.co/JCB010-MP3,Icecast,JSON,http://musicbird.leanstream.co/status-json.xsl?mount=/JCB010-MP3,福島県福島市のコミュニティFM [21]。
富士山GOGOエフエム,Community,http://musicbird.leanstream.co/JCB037-MP3,Icecast,JSON,http://musicbird.leanstream.co/status-json.xsl?mount=/JCB037-MP3,静岡県御殿場市のコミュニティFM [21]。
FM Apple Wave,Community,http://musicbird.leanstream.co/JCB004-MP3,Icecast,JSON,http://musicbird.leanstream.co/status-json.xsl?mount=/JCB004-MP3,青森県弘前市のコミュニティFM [21]。