https://github.com/kanoshiou/radiko-tui
A Radiko Japanese internet radio player written in Go with an interactive TUI.
https://github.com/kanoshiou/radiko-tui
small-tools tool tools
Last synced: about 1 month ago
JSON representation
A Radiko Japanese internet radio player written in Go with an interactive TUI.
- Host: GitHub
- URL: https://github.com/kanoshiou/radiko-tui
- Owner: kanoshiou
- License: mit
- Created: 2023-07-04T08:18:26.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2026-03-26T01:24:21.000Z (3 months ago)
- Last Synced: 2026-03-26T23:33:11.511Z (3 months ago)
- Topics: small-tools, tool, tools
- Language: Go
- Homepage:
- Size: 22.4 MB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.ja.md
- License: LICENSE
Awesome Lists containing this project
README
# Radiko TUI
[English](README.md) | **[日本語](README.ja.md)** | [中文](README.zh.md)
Go言語で書かれたRadiko日本インターネットラジオのターミナルUI(TUI)プレーヤーです。
[](https://github.com/kanoshiou/radiko-tui/releases)
[](https://go.dev/)
[](https://github.com/kanoshiou/radiko-tui/pkgs/container/radiko-tui)
[](LICENSE)
## ✨ 機能
- 🎵 Radikoラジオ局のライブストリーミング
- 🗾 日本全国47都道府県対応
- 🖥️ インタラクティブなターミナルUI(TUI)
- 🌐 HTTPストリーミングのサーバーモード(AAC/PCM)
- 🔌 リモートサーバーに接続するクライアントモード(ローカルffmpeg不要)
- 🔊 ミュート機能付き音量調整
- ⏺️ AACファイルへのストリーム録音
- 🔄 ストリーム障害時の自動再接続
- 💾 前回の放送局と設定を記憶
- 🌏 クロスプラットフォーム(Windows/Linux/macOS)
## 📸 スクリーンショット
```
📻 Radiko 🔊 80%
◀ 埼玉 千葉 [東京] 神奈川 新潟 ▶ [13/47]
──────────────────────────────────────────────
TBSラジオ TBS
▶ 文化放送 QRR
ニッポン放送 LFR
ラジオNIKKEI第1 RN1
ラジオNIKKEI第2 RN2
↓ さらに表示
──────────────────────────────────────────────
▶ 文化放送 QRR ♪ 大竹まことゴールデンラジオ ⏺ 録音中 02:15
↑↓ 選択 Enter 再生 ←→ 地域切替 +- 音量 m ミュート s 停止 r 再接続 Esc 終了
```
## 📦 インストール
### ビルド済みバイナリのダウンロード(推奨)
[Releases](https://github.com/kanoshiou/radiko-tui/releases) からダウンロードしてください。
### ソースからビルド
```bash
git clone https://github.com/kanoshiou/radiko-tui.git
cd radiko-tui
go mod tidy
go build -o radiko
```
### サーバー専用ビルド(オーディオ依存なし)
オーディオサポートのないLinuxサーバー向け:
```bash
go build -tags noaudio -o radiko-server
```
このビルドはオーディオ再生依存関係(oto)を除外し、サーバーモード(`-server`フラグ)のみをサポートします。
### デフォルトサーバーURL埋め込みビルド
ビルド時にデフォルトのサーバーURLを指定することで、実行時に毎回`-server-url`を指定する必要がなくなります:
```bash
go build -ldflags "-X main.defaultServerURL=http://your-server-ip:8080" -o radiko-tui
```
注意:実行時に`--server-url`引数が指定された場合、ビルド時に埋め込まれたアドレスよりも優先されます。
### Docker(サーバーモード推奨)
GitHub Container Registryからプル:
```bash
docker pull ghcr.io/kanoshiou/radiko-tui:latest
```
Dockerで実行:
```bash
docker run -d --name radiko -p 8080:8080 ghcr.io/kanoshiou/radiko-tui:latest
```
カスタムポートと猶予期間:
```bash
docker run -d --name radiko -p 9000:9000 ghcr.io/kanoshiou/radiko-tui:latest \
-server -port 9000 -grace 60
```
Docker Compose:
```yaml
version: '3.8'
services:
radiko:
image: ghcr.io/kanoshiou/radiko-tui:latest
ports:
- "8080:8080"
environment:
- TZ=Asia/Tokyo
restart: unless-stopped
```
## ⚠️ 必要条件
音声デコードと録音には **ffmpeg が必要** です。
```bash
# Windows (Chocolatey)
choco install ffmpeg
# Linux (Ubuntu/Debian)
sudo apt install ffmpeg
# macOS (Homebrew)
brew install ffmpeg
```
## 🚀 使用方法
### TUIモード(デフォルト)
```bash
./radiko-tui
```
### クライアントモード(ffmpeg不要)
実行中のradiko-tuiサーバーに接続:
```bash
./radiko-tui -server-url http://192.168.1.100:8080
```
このモードでは、音声デコードは内部で処理されます。**クライアント側にffmpegのインストールは不要です。**
TUIの全機能(音量、地域切り替えなど)が利用可能です。
### サーバーモード
HTTPストリーミングサーバーとして実行:
```bash
./radiko-tui -server -port 8080
```
VLCまたは任意のオーディオプレーヤーでストリーミング:
```bash
vlc http://localhost:8080/api/play/QRR
```
#### サーバーモードの機能
- **マルチクライアント対応**:複数のクライアントが同じ放送局を視聴でき、ffmpegインスタンスを共有
- **スマートffmpeg再利用**:クライアント切断後、ffmpegは猶予期間(デフォルト10秒)稼働し続ける
- **自動再接続**:猶予期間内にクライアントが再接続すると、既存のストリームを即座に再利用
#### サーバーオプション
| オプション | デフォルト | 説明 |
|------------|------------|------|
| `-port` | 8080 | HTTPサーバーポート |
| `-grace` | 10 | 最後のクライアント切断後にffmpegを維持する秒数 |
カスタム猶予期間の例:
```bash
./radiko-tui -server -port 8080 -grace 30
```
#### サーバーAPIエンドポイント
| エンドポイント | 説明 |
|---------------------------------|-----------------------------------------------|
| `GET /api/play/{stationID}` | 指定した放送局のオーディオ(AAC)をストリーミング(VLC/ブラウザ用) |
| `GET /api/play/{stationID}/pcm` | 指定した放送局のオーディオ(PCM)をストリーミング(radiko-tuiクライアント用) |
| `GET /api/status` | アクティブなストリームのJSONステータスを取得 |
### 操作方法
| キー | 操作 |
|-----|--------|
| ↑/↓ または k/j | 放送局を選択 |
| ←/→ または h/l | 地域を切り替え |
| Enter/Space | 放送局を再生 |
| +/- | 音量調整 |
| 0-9 | 音量レベルを設定 |
| m | ミュート切り替え |
| s | 録音開始/停止 |
| r | 再接続 |
| Esc | 終了 |
### 録音機能
`s` キーを押すと、現在のストリームの録音を開始/停止できます。録音ファイルはダウンロードフォルダに `radiko_放送局名_YYYYMMDD_HHMMSS.aac` の形式で保存されます。
再生中の放送局と異なる放送局を録音している場合、放送局名が括弧で表示されます:`⏺ 録音中[放送局名] MM:SS`
## 📖 ドキュメント
- [インストールガイド](docs/INSTALL.md)
- [使用ガイド](docs/USAGE.md)
- [トラブルシューティング](docs/TROUBLESHOOTING.md)
- [アーキテクチャ](docs/ARCHITECTURE.md)
## 🏗️ 技術スタック
- **TUI**: [bubbletea](https://github.com/charmbracelet/bubbletea)
- **オーディオ**: [oto](https://github.com/ebitengine/oto) + ffmpeg
- **スタイリング**: [lipgloss](https://github.com/charmbracelet/lipgloss)
## 🙏 謝辞
インスピレーションと参考のために [rajiko](https://github.com/jackyzy823/rajiko) に感謝します。
## 📋 システム要件
- ffmpeg(実行時)
- Go 1.18+(ビルド時のみ)
- UTF-8対応ターミナル
## 🤝 貢献
IssueおよびPull Requestを歓迎します!
## 📄 ライセンス
MITライセンス - [LICENSE](LICENSE) を参照
---
**注意**: このプロジェクトは学習および個人使用のみを目的としています。Radikoの利用規約を遵守してください。