Subsonicのクライアントアプリは Subsonicにあるだけが全てではない。そうCLIで動かせるものが存在する。
ググると割とあれやこれやと見付かったのだけど、成功したこちらを。 GitHub - mj2p/psub: CLI Subsonic Client
インストール
README.mdに書いてあるとおりかと思いきや、Clone this repoのところgit clone github.com/inuitwallet/psub.git
とURLが間違ってる。
$ git clone https://github.com/mj2p/psub.git
$ cd psub
$ sudo apt install python3-venv
$ python3 -m venv ve
$ ve/bin/pip install .
Processing /home/arimasou16/git/psub
ERROR: Command errored out with exit status 1:
command: /home/arimasou16/git/psub/ve/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-req-build-5f82xmdn/setup.py'"'"'; __file__='"'"'/tmp/pip-req-build-5f82xmdn/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-y3kj3jo1
cwd: /tmp/pip-req-build-5f82xmdn/
Complete output (6 lines):
usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
or: setup.py --help [cmd1 cmd2 ...]
or: setup.py --help-commands
or: setup.py cmd --help
error: invalid command 'bdist_wheel'
----------------------------------------
ERROR: Failed building wheel for pSub
Running setup.py clean for pSub
Failed to build pSub
Installing collected packages: click, colorama, pyparsing, packaging, pyyaml, wcwidth, prompt-toolkit, questionary, urllib3, idna, chardet, certifi, six, pycparser, cffi, cryptography, pyOpenSSL, requests, pSub
Running setup.py install for pSub ... done
Successfully installed certifi-2020.12.5 cffi-1.14.5 chardet-4.0.0 click-7.1.2 colorama-0.4.4 cryptography-3.4.7 idna-2.10 pSub-0.1 packaging-20.9 prompt-toolkit-3.0.18 pyOpenSSL-20.0.1 pycparser-2.20 pyparsing-2.4.7 pyyaml-5.4.1 questionary-1.9.0 requests-2.25.1 six-1.15.0 urllib3-1.26.4 wcwidth-0.2.5
"ERROR: Failed building wheel" during pip installation · Issue #1 · infobyte/faraday-cli · GitHub
何かエラーが出た(その後にインストール成功とか出てるけど)。pip install wheel
とか実行しても既にインストール済みと出る。
うーん、試しに別バージョンのpython
をインストールして試すこととする。
$ curl https://pyenv.run | bash
$ pyenv install 3.5.10
$ sudo apt install libbz2-dev libreadline-dev libsqlite3-dev
しかし、やはり駄目で、再度python 3.8.5で試す。ただし、pyenv
で3.8.5を入れ直してから。するとエラーが変わった。pyenv
のためのsudo apt install libbz2-dev libreadline-dev libsqlite3-dev
が効いたのかな?
$ ve/bin/pip3 install .
Processing /home/arimasou16/git/psub
ERROR: Command errored out with exit status 1:
command: /home/arimasou16/git/psub/ve/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-req-build-7jxztbt8/setup.py'"'"'; __file__='"'"'/tmp/pip-req-build-7jxztbt8/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-j94uiags
cwd: /tmp/pip-req-build-7jxztbt8/
Complete output (11 lines):
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/home/arimasou16/git/psub/ve/lib/python3.8/site-packages/setuptools/__init__.py", line 19, in <module>
from setuptools.dist import Distribution
File "/home/arimasou16/git/psub/ve/lib/python3.8/site-packages/setuptools/dist.py", line 34, in <module>
from setuptools import windows_support
File "/home/arimasou16/git/psub/ve/lib/python3.8/site-packages/setuptools/windows_support.py", line 2, in <module>
import ctypes
File "/home/arimasou16/.pyenv/versions/3.8.5/lib/python3.8/ctypes/__init__.py", line 7, in <module>
from _ctypes import Union, Structure, Array
ModuleNotFoundError: No module named '_ctypes'
----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
WARNING: You are using pip version 20.1.1; however, version 21.1.1 is available.
You should consider upgrading via the '/home/arimasou16/git/psub/ve/bin/python3 -m pip install --upgrade pip' command.
pipenvのinstall時に、No module named ‘_ctypes’が発生する - Qiita
$ pyenv uninstall 3.8.5
$ sudo apt install libffi-dev
$ pyenv install 3.8.5
すったもんだで、インストール成功。
初回起動
そして、psub
ディレクトリから起動
$ ve/bin/pSub
Welcome to pSub
To get set up, please edit your config file
Press any key to continue ...
Select an editor. To change later, run 'select-editor'.
1. /bin/nano <---- easiest
2. /usr/bin/vim.basic
3. /usr/bin/nvim
4. /usr/bin/vim.tiny
5. /bin/ed
Choose 1-5 [1]: 3
設定
初回起動時は設定ファイルを編集しろと促してくれるらしい。優しい。
$HOME/.config/psub/config.yaml
host: hostname/jpsonic
# Username and Password next
username: username
password: password
# If your Subsonic server is accessed over https:// set this to 'true'
ssl: true
と、私の場合、https://hostname/jpsonic
なので上記のようになった。ではテスト接続。
$ ve/bin/pSub -t
Testing Server Connection
https://username@hostname/jpsonic
Traceback (most recent call last):
File "ve/bin/pSub", line 11, in <module>
load_entry_point('pSub==0.1', 'console_scripts', 'pSub')()
File "/home/arimasou16/git/psub/ve/lib/python3.8/site-packages/click/core.py", line 829, in __call__
return self.main(*args, **kwargs)
File "/home/arimasou16/git/psub/ve/lib/python3.8/site-packages/click/core.py", line 782, in main
rv = self.invoke(ctx)
File "/home/arimasou16/git/psub/ve/lib/python3.8/site-packages/click/core.py", line 1236, in invoke
return Command.invoke(self, ctx)
File "/home/arimasou16/git/psub/ve/lib/python3.8/site-packages/click/core.py", line 1066, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/home/arimasou16/git/psub/ve/lib/python3.8/site-packages/click/core.py", line 610, in invoke
return callback(*args, **kwargs)
File "/home/arimasou16/git/psub/ve/lib/python3.8/site-packages/click/decorators.py", line 21, in new_func
return f(get_current_context(), *args, **kwargs)
File "/home/arimasou16/git/psub/ve/lib/python3.8/site-packages/pSub.py", line 623, in cli
test_ok = ctx.obj.test_config()
File "/home/arimasou16/git/psub/ve/lib/python3.8/site-packages/pSub.py", line 93, in test_config
ping = self.make_request(url=self.create_url('ping'))
File "/home/arimasou16/git/psub/ve/lib/python3.8/site-packages/pSub.py", line 117, in create_url
if version.parse(self.api) < version.parse("1.13.0"):
File "/home/arimasou16/git/psub/ve/lib/python3.8/site-packages/packaging/version.py", line 57, in parse
return Version(version)
File "/home/arimasou16/git/psub/ve/lib/python3.8/site-packages/packaging/version.py", line 296, in __init__
match = self._regex.search(version)
TypeError: expected string or bytes-like object
またエラー?と思ったが、どうもエラーがライブラリーとかのエラーというより、設定によるものっぽいと思ったので
$HOME/.config/psub/config.yaml
# If you use a server with a specific API version set it here
api: 109
と空にしてたのを109と設定して再テスト。
$ ve/bin/pSub -t
Testing Server Connection
https://username@hostname/jpsonic
Command Failed! 30: Incompatible Jpsonic REST protocol version. Server must upgrade.
Test Failed! Please check your config
エラーがまともになった。Subsonicなどのアプリのそのものじゃないバージョンでは駄目で、RESTAPIバージョンということなので
で調べる。
Airsonic currently embed Subsonic API version 1.15.0.
JpsonicはAirsonicがベースなので
$HOME/.config/psub/config.yaml
api: 1.15.0
とする。
$ ve/bin/pSub -c
Testing Server Connection
https://username@hostname/jpsonic
Test Passed
今度こそ成功。
音楽再生
コマンドはこれだけ
album Play songs from chosen Album
artist Play songs from chosen Artist
playlist Play a chosen playlist
radio Play endless Radio based on a search
random Play random tracks
で、音楽を再生してみる。
artist
検索。
$ ve/bin/pSub artist 氷室京介
? Choose an Artist, or 'Search Again' to search again (Use arrow keys)
» 氷室京介
Search Again
Playing tracks by 氷室京介
n = Next
b = Beginning
x = Exit
My Name is "TABOO" by 氷室京介
n
Skipping...
PARACHUTE by 氷室京介
n
Skipping...
Rock'n'Roll Suicide by 氷室京介
b
Restarting Track....
Rock'n'Roll Suicide by 氷室京介
x
Exiting!
なるぅ。
album
検索。
$ ve/bin/pSub album lovebites
? Choose an Album, or 'Search Again' to search again (Use arrow keys)
» THE LOVEBITES EP
Awakening From Abyss
BATTLE AGAINST DAMNATION
BATTLE IN THE EAST
CLOCKWORK IMMORTALITY
DAUGHTERS OF THE DAWN - LIVE IN TOKYO 2019
CRUSADERS STANDING AT WACKEN - LIVE IN GERMANY 2018
ELECTRIC PENTAGRAM
Golden Destination
FIVE OF A KIND - LIVE IN TOKYO 2020
AWAKE AGAIN: AWAKENING FROM ABYSS 3rd Anniversary Studio Live
GLORY, GLORY, TO THE WORLD
Search Again
再生するとスキップするか、曲の頭に戻るか、終了しかない。一時停止ぐらいは欲しかったなぁ。
また、検索結果が端末の高さ、もしくは20を超えると表示できなくて、ページ遷移できない。なのでその場合、もっと絞り込めるように検索する必要がある。ただ、album
にアーティスト名を入れてもちゃんとアルバム名にアーティスト名が含まれてなくても、アーティスト名が一致するアルバムを検索してくれたのはありがたかったが。
見た目に変化が欲しい場合。
$HOME/.config/psub/config.yaml
display: true
show_mode: 0
と表示される。
まあ、なんにせよ、Subsonicを流し聞きする用途だなぁ。
その他CLI Subsonic Client
-
GitHub - tourn/subcl: a command-line front-end for the subsonic api
良さげだったんだけど
no support for HTTPS (does mpd even support this?)
はアカン。 -
GitHub - TcM1911/jamsonic: Subsonic console player for Linux, macOS and Windows
なんとインストール方法が書いてない。Goで書かれているからだろうか? nlamirault/jam: Google Play Music console playerのフォークということなので、更なるフォーク元の Jam: Listen To Google Play Music From The Console ~ Web Upd8: Ubuntu / Linux blogを参考に
sudo install jam_x64 /usr/local/bin/jam sudo apt install golang-go git libpulse-dev mkdir ~/.go echo "export GOPATH=\$HOME/.go" >> ~/.bashrc echo "export PATH=\$PATH:\$GOROOT/bin:\$GOPATH/bin" >> ~/.bashrc source ~/.bashrc go get github.com/TcM1911/jamsonic
をするも、ソースを落してくるが、バイナリファイルが出来ない。 $GOPATH/bin に入らない - Qiitaを参考に
$GOBIN
を設定するも駄目。なので諦めた。 -
nvllsvm / subsonic-cli · GitLab
本当、必要最低限のインターフェースしか用意されてない。簡単操作できるようになるにはシェルで制御しないと無理。