どの音楽ストリーミングサービスも飽きたのでターミナルラジオ作って解決した話

![tera.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30943/791f1e9d-4d24-0460-e801-2ad621d7f998.png)
## アルゴリズムで推薦してくる曲に飽きていた

以前はYoutubeやアマゾンミュージックを聞いていましたがアルゴリズムで推薦してくる曲がほぼ同じ音楽で飽きていました。そこで[Tera(Terminal Radio)](https://github.com/shinokada/tera)を作ってから毎日それを使っています。この記事はその紹介です。
音楽を毎日聴く人でターミナルを毎日開く方はぜひ試してみてください。

[GitHub repoです。](https://github.com/shinokada/tera)

## TERAは何ができるの

- プレイリストのCRUDができます。
- 好きなラジオ局をリストに保存できます。
- Radio Brower APIを使っているので3万３千局以上の音楽ラジオ局が聞けます。
- Gistにリストをアップロードとダウンロードできます。
- ランダムに好きなジャンルから選べます。
- 全てターミナルから操作します。
- インターアクティブです。

## 必要なもの
以下のものを事前にインストールしておいてください。

- UNIX/MacOSの環境で動きます。
- [mpv](https://mpv.io/) Media playerです。
- [jq](https://stedolan.github.io/jq/) JSON processorです。
- [fzf](https://github.com/junegunn/fzf) fuzzy finderです。
- [gh](https://cli.github.com/) GitHub CLIです。
- wget

## インストール
### MacOS
```
brew tap shinokada/tera
brew install tera
```
### Debian/Ubuntu

```
sudo apt install ./tera_0.4.1_all.deb
rm -rf ./tera_0.4.1_all.deb
```

インストール後mpvがちゃんとインストールされているか試してみましょう。
```
mpv https://live.musopen.org:8085/streamvbr0
```

## 使ってみましょう

```
tera
```

次のメインメニューが出てきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30943/c744a862-1bad-ad5d-5a18-39da49ed00bb.png)
1番は前もってセーブした自分のリストからラジオ局が選べます。
2番でラジオ局をサーチできます。
3番でお気に入りのリストがCRUDできます。
4番はラジオ局をお気に入りリストから消せます。
5番は入力した単語からランダムでラジオ局が出ます。
6番はお気に入りリストをGistにセーブできます。

２番のSearch radio stationsをセレクトしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30943/e35aeca8-fec3-84e0-8a53-96dcf871e784.png)
1のTagを押して 言葉を一つ入力してください。例えばchristmas, jass, smooth, rock, classical, jazz, pop, country, hip, heavy, blues, soul, meditation, relax, mozart, Beatlesなどから一つ選んで入力してみてください。関係するラジオ局が全て出ますのでラジオ局の番号を選択してしましょう。
次に1を押せばラジオ局が始まります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30943/0bd867d4-9217-f638-e309-73b6b174f31c.png)
2番はセーブでSearch Menuに戻りたければ3番を、Main Menuへは4番を押してください。

## プレイヤーの操作の仕方

右のアローを押すと次の曲に飛びます。左のアローは前の曲に飛びます。
以下のショートカットを使って操作をしてください。
| Keyboard    | Description     |
| ------- | ------------------- |
| p and SPACE | Toggle pause/unpause.              |
| [ and ]   | Descrease/increase speed by 10%.     |
| { and }   | Halve/double current playback speed. |
| q         | Stop playing and quit.               |
| / and *   | Descrease/increase volume.           |
| 9 and 0   | Descrease/increase volume.           |
| m         | Mute sound.                          |

`tera -h`でヘルプが出まーす。

## 演奏をストップ
スペースを押すと一時的にポーズされます。またスペースを押せば始まります。
`q`を押すと演奏が終わりラジオ局をセーブするかが出ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30943/b5750f96-c67e-707d-d791-ed1e51d334a9.png)
セーブするなら事前にリストを作っておいてください。Main Menuから3番を選ぶとリストが作れます。

## お気に入りリスト

メインメニューから3番を押すとList Menuが出ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30943/f3699a8b-e237-bcdf-b4bb-9f8158c64ce2.png)
4番を押して私のリストが出てきました。
リストを作りたいときは1番を。削除したい時は2番を。リスト名を変更したい時は3番を押してください。
 
## I feel lucky

Main menuから5番のI feel luckyを選択してchristmasを入力してみてください。ランダムにクリスマスの音楽を流しているラジオ局が出ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30943/082ec944-1e26-464b-b6b1-61bf8b3caf58.png)
気に入った局が出るまで何度でも同じ単語でできます。毎回違った局が選ばれます。

## Gist
リストがたまったらGistにセーブしてみんなとシェアしましょう。
Gistを作るときはあらかじめ`gh auth login`でログインしておいてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30943/96e15833-8153-19a4-2248-17098e47e716.png)
これが私のGistです。
https://gist.github.com/shinokada/39ebe77d6990a46b2cdbc7b80781ec2e
2番のRecover favorites from a gistを選んでこのURLを入力すれば私のリストをセーブできますよー。

## 日本語のラジオは聞けるの

メインメニューのSearch radio stationsを押してTERA SEARCH MENUからLanguageを選んでjapanese,もしくはCountry codeを選んでjpを入力してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30943/10b3cb98-ad3c-4597-1d26-7d375388128e.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30943/c0ad2b0d-b87a-ce3d-b6ab-e063c519b983.png)

## 終了の仕方

メインメニューの0を押せばTeraは終了します。

## 好みの音楽は探せましたか

気に入った人はぜひ[GitHubのrepo](https://github.com/shinokada/tera)にいいねをお願いします。
毎日違った音楽を聴いてプログラミングを楽しくしましょう。