@sunatomo
I think option "2 - Provides human-modifiable ..." would be best as it would provide flexibility.
-
webui-plus開発/サポート(webui-plus development/support)
-
2023-01-02 版の webui-plus アップデートについて
1年ぶりになりますが、ある程度の成果が見込まれましたのでアップデートを提供します。
ログは以下の通り。-
https のサポートについて
標準ではOFFにしておりますが、httpsを今回からサポートすることにしました。
有効化したい方は次の投稿で詳細を記載しますので、そちらの手順に基づき実行して下さい。 -
インターネット経由のカバーアート再取得サポートについて
Castle 様の提案通り、まずは手動でカバーアートに必要な文字列を変更可能なダイアログを提供します(試作段階のため、今後UIが変更の恐れあり)。
カバーモードのカバーアート表示域をクリックすると、上のダイアログが表示されます。各コンポーネントの説明は下記のとおりです。
名前 詳細 Current URL 当該カバーアート領域で現在先頭に指定されているURLを表示(編集不可) Album Name 楽曲から取得したアルバム名を表示 Album Artist 楽曲から取得したアルバムアーティスト名を表示 Song Name 楽曲から取得した楽曲名を表示 Song Artist 楽曲から取得したアーティスト名を表示 Spin ボタン カバーアート表示領域で指定されたカバーアートのURL候補の順番を変更
(これにより、希望のカバーアートを優先表示可)recover ボタン Album Name 〜 Song Artist の文字列を楽曲から取得したものに復元 ReGet ボタン Album Name 〜 Song Artist に記載の文字列で再度インターネットからのカバーアート再検索を実施 各サービスにより必要なパラメータが異なるのですが、最小公倍数で以上4つの項目が必要になります。
Album Name, Album Artist は同一アルバム再生中は変更しないように実装しましたが、もしかしたら想定外の動作がある可能性があること、
現状の仕様では Current URL が見えにくい、
また、スマホ向けには本機能はOFFになっていることから
もう少しブラッシュアップが必要と考えています。- 表示上のバグFixについて
・アルバムモードで楽曲リストまで絞り込み表示した際に通常はrootのトップページに表示される項目(Album・Genre...)が表示されていた件
・searchプラグインの結果表示時にパンくずリストの「search」を押すと動作がおかしくなる件の修正
また、主にFireFox向けにいくつかバグがありましたので修正しております。
・リストビューのリスト上にマウスを配置した際に選択領域の右端が枠から飛び出す件。
・Android向けのハンバーガーメニュー表示の際、ボリウム調整用のスライダーが表示されない件。
-
-
2023-01-02 バージョンでの https 有効化方法について
- こちらの用意した証明書で実装する場合
原則、本手法が基本になります。
a) 動作させる端末にルート証明書を予めインストールしておく
http://smpd.local/ 直下においたルート証明書をダウンロードして各ブラウザの証明書保管場所に保存して下さい。OS ブラウザ ファイル名 備考 Windows edge
chromelocalCA.crt OSの証明書ストレージ WIndows FireFox localCA.crt FireFox独自の証明書ストレージ Linux
FreeBSD等chrome
FireFoxlocalCA.crt 各ブラウザの証明書ストレージ Android chrome
FireFoxlocalCA.der.crt OSの証明書ストレージ内※1 iphone
ipadchrome
safarilocalCA.crt OSの証明書ストレージ※2 ※1 Android の場合、「設定 > パスワードとセキュリティ > システムセキュリティ > 認証情報ストレージ > ストレージから証明書をインストール」(手元のOneplus8 Android V13の場合)、
「設定 > セキュリティ > 暗号化と認証情報 > SDカードからインストール」(手元のXperia XZ2 Android V11の場合)
等の操作でサーバ証明書をインストールできます。※2 Apple 社製品の場合、ルート証明書は 「Safari からのダウンロード」か「メールでの添付ファイルによる送付」以外はインストールできません。
また、ダウンロード後 「設定 > 一般 > VPNとデバイス管理 >ダウンロード済みプロファイルのインストール作業」と「設定 > 情報 > 証明書信頼設定」の2つの設定が必要になります。ちなみにChrome・FireFoxともに証明書の設定画面は「設定>プライバシーとセキュリティ」からアクセス可能です。
b) /opt/cert ディレクトリの systemd 関連ファイルを複写
remakeCert.service, remakeCert.timer を /etc/systemd/system に複写します。
最近のセキュリティ強化により smpd サーバで使用するサーバ証明書は有効期限が13ヶ月以下にしないとブラウザ側で弾かれる現象が発生しています。
このため、smpd で使用するサーバ証明書も有効期限が13ヶ月以内となっていますが、証明書の再発行+ympdの再起動をsystemdのタイマーで処理させるための設定ファイルを複写するという訳です。
ちなみにremakeCert.timerのタイマー設定は毎年1月1日の4:00となっているため、変更したい方は当該ファイルを編集して下さい。c) systemd のタイマー設定を有効化
まずsystemctl daemon-reload
で設定ファイルをsystemdに反映させます。
次にsystemctl enable remakeCert.timer
で remakeCert.timer を有効化します。
さらにsystemctl start remakeCert.timer
で remakeCert.timer を開始させればOKです。
一応動作を確認する際はsystemctl list-timers
と入力し、以下の状況であることを確認して下さい。NEXT LEFT LAST PASSED UNIT ACTIVATES Mon 2023-01-02 10:23:30 JST 14min left Sun 2023-01-01 10:23:30 JST 23h ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service Mon 2024-01-01 04:00:00 JST 11 months 28 days left Sun 2023-01-01 04:00:04 JST 1 day 6h ago remakeCert.timer remakeCert.service 2 timers listed. Pass --all to see loaded but inactive timers, too.
d) ympdのhttps 関連設定を有効化
まず、ympd.socketを書き換えます。[Socket] #ListenStream=80 ListenStream=443 KeepAlive=true PassCredentials=true [Install] WantedBy=sockets.target
もともとは ListenStream=443 の行は記載なしだったと思いますが、本行を ListenStream=80 の真下に追加し、ListenStream=80 の先頭に#を付けてコメントアウト化して下さい。
次に今回添付のympd.serviceを書き換えします。[Unit] Description=ympd server daemon Requires=network.target local-fs.target After=mpd.service [Service] EnvironmentFile=/etc/environment Type=simple ExecStartPre=/usr/bin/ympd-plus.sh ExecStart=/usr/bin/ympd -h /run/mpd/socket --webport 80 -i 200 --documentroot /var/lib/mpd/music #ExecStart=/usr/bin/ympd -h /run/mpd/socket --webport "ssl://443:/var/lib/mpd/music/ssl.pem" -i 200 --documentroot /var/lib/mpd/music User=root CPUSchedulingPolicy=other CPUAffinity=3 [Install] WantedBy=multi-user.target
ExecStart の --webport 80 と書かれている行をコメントアウトし、その下の行を有効化して下さい。
両方のファイル編集後、以下のコマンドでympdをhttpsで起動させます。
systemctl daemon-reload systemctl stop ympd.service systemctl stop ympd.socket systemctl start ympd.socket systemctl start ympd.service
- ルート証明書を自分で作る場合
/opt/cert/localCA にて genRootCA.sh を実行してルート証明書を作成後、
/opt/cert にて genSVcert.sh を実行してサーバ証明書を作り直して下さい。
生成したサーバ証明書は以下のコマンドで /var/lib/mpd/music に複写します(/opt/cert のファイル名と /var/lib/mpd/music のファイルが名が異なります。
cp /opt/cert/smpd.loca.pem /var/lib/mpd/music/ssl.pem
ルート証明書も/var/lib/mpd/musicに複写し直し、前項の通り使用する端末に配布して下さい。
- ルート証明書はそのまま使うが、サーバ証明書だけは作り直したい。
2項の「/opt/cert にて genSVcert.sh を実行してサーバ証明書を作り直して下さい。」以降だけを実施して下さい。
現在保存されているルート証明書でサーバ証明書を作り直しします。
- こちらの用意した証明書で実装する場合
-
パッケージ再リリース予告について
昨日アップしたばかりですが、カバーアート再取得関係での課題を解決した目処が付きましたので、今週末に再リリースします。
・携帯電話向けの設定画面
レイアウトを調整の上、対応できましたのでデスクトップ版と同じく機能を提供します。・埋め込みカバーアートの対応改善
従来は埋め込みカバーアートの取得設定が有効な場合はその有無を確認せずにURLを生成していたのですが、
埋め込みカバーアートの抽出に失敗した場合はURL生成しないように設定を変更しました。・インターネットからのカバーアートの取得方法改善
従来はインターネットへのカバーアート取得がOnの場合は、楽曲変更時に毎回問い合わせを行っていましたが、
今回から「同一アルバムでの再生が継続していた場合」は最初の1回だけ取得しその後は取得しない処理に変更しました。
↑
これについてはアルバム名を修正後にインターネットへ問い合わせた場合も適用させます。特に3番目の拡張に関する動作の検証のため、少し時間を頂きたくよろしくおねがいします。
-
作業遅延のご連絡
当初目的のカバーアートについてはほぼ達成出来たのですが、
最近になって真面目にいろいろな機器で動作を確認したところ、
以下の気になる挙動が見受けられましたので併せて対応したいと思っています。-
一部ブラウザ(主にモバイル機器向け)で input タグ+ datalist タグを使用してコンボボックス化する際に、datalistに指定されたリストが表示されない。
-
上記の代替としてselectタグを使用した場合、ipadOS(恐らくiphoneも?)の Safari と Chrome ではオリジナルのスタイルになってしまう。
このスタイルを解除すると、selectタグ右横の矢印が非表示になる。
また、昨年末から復帰し始めて開発機のSDカードにエラーが出始めて怪しくなってきたのですが、
ここに来てビルドが通らない現象が発生したため、急遽開発環境の再構築が必要でした。
(改めて、インストールし直しでインストール関連ドキュメントの不足や拡充が必要なことがわかったので合わせて修正しました。)という訳で、リリースまでもう少し時間がかかりそうです。ご了承下さい。
余談ですが、さんざん触っておいて今頃気づきましたが、google-closure-compiler って linux のバイナリネイティブ版なら一瞬でJavaScript の最適化終わるんですね。
メイン PC の VSCode でソースコードいじったら、そのままこの端末で最適化やってしまったほうが効率良いですね。 -
-
2023-01-08版のwebui-plusのリリースについて
リリースノートはこちらより
-
インターネット向けのカバーアートを再取得するモードを拡充しました。
予告通り、同じアルバムでインターネット上のカバーアート取得を最初にそのアルバムの楽曲を再生した場合(+手動で再取得した場合)のみに限定します。
また、同一アルバム再生が継続している際は、手動アルバムアート取得のためのパラメータは引き続き使用できます(アルバム名・アルバムアーティスト名は書き換えされません)。 -
各種設定画面のうち、リスト項目が変更されない場合は select タグを使用するように変更。
(これにより、モバイル系のブラウザでもリスト項目が非表示になるバグが解消されたと思われます。) -
上記に関連し、当方で編集したプラグインを全てレイアウトを統一修正しました。
以下の項目は個人的に利便性を考慮し修正しましたが、もし従来のものがお好みの場合は元に戻す予定です。
-
歯車でメニュー項目を表示した際の項目をスクロール可能にしました。
有効化したプラグイン数により「画面領域よりメニューの数が増えた場合はスクロールが可能」です。 -
PC向け横画面で使用時、メインメニュー領域のアイテムの左右余白をモード切替矢印幅と揃えました。
-
DASHBOARD の LATENCY グラフ表示前にプログレスバーが表示されると思いますが、これが1秒単位で進捗するようにした。
(個人的に LATENCY グラフが表示されるまで待つのが苦手だったので...)
余談:fanart.tv でのアルバムアート取得について
もしかしたら実装時からそうなのかもしれませんが、webui-plus (JavaScript) で取得した場合、URLが正常でも途中でエラーが返されることが判明しました。
(webui-plus で生成するURLをそのままブラウザの場所で貼り付けした場合、想定したデータが返ってくるのですが...)
↑
という訳で、ちょっと調査してみます。 -
-
fanart.tv のアルバムアート取得方法について
2023-01-10追記:昨日の記述に誤りがあったので取り消し線と訂正を行います。
仕様を完全に誤解していました...
こちら に記載のドキュメント+テストケースに基づき実装したはずなのですが、
そもそもこの API で指定する mbid (musicbrainz のID)はアーティストの ID であり アルバムの ID ではない(サンプルの Evanesence のケースをもっとよく見るべきだった)。という訳で、どれだけの方がFanart.tvを使いたいかはわかりませんが、以下の通り実装します。
1) album-artist の mbid を取得(Musicbrainz の API から)
2) album の release-groupのid を取得(これも Musicbrainz の API から)
2023-01-10追記:Fanart.tv でアルバムを特定するためのMusicbrainz の ID は release-group id (アルバムの総称に対して付与されるID)でした。
CoverArtArchive では release の id (アルバムの特定版)を使用しています。
ここで解釈の違いがあったという...
3) album-artist の release-group id から当該アルバムの情報を取得(ここから Fanart.tv の API を使用)
4) 取得した JSON を解析して、albumsオブジェクト から release-group idでキーが一致したデータオブジェクト内の albumcover[0].url に当該カバーのURLが入っているはずなので、
これを表示する。ちなみに上記の手順の途中で失敗した場合は当然取得不可です。
ただし、当該URLを叩いた際に CORS(オリジン管理ソース共有)のエラーも同時表示されているので、
ちゃんと返ってきてくれるかは別の問題として残っています...2023-01-10追記:CORS対応は結局として「 ブラウザがFanart.tvのAPIサーバに対してhttp GET メソッドで問い合わせを送る前に OPTIONS(プリフライトリクエスト)を送っていた」ため、
これのレスポンスでCORSの規則違反がありエラーとなっていました。
結局はワンレスポンス化(GETメソッド+contentTypeをtext/plainにする)ことで回避できました。という訳で、Fanart.tv も攻略出来ました。
もう少し手元で動作確認し安定化させたら再リリースします。 -
2023-01-21 版の webui-plus アップデートについて
リリースノートはこちら
-
インターネットからカバーアートを取り込む方法のうち Fanart.tv の機能を修正
前の投稿の通り Fanart.tv の API では Musicbrainz のアルバム (release) の ID をパラメータとしてカバーアートの URL を返す仕様なのですが、
この時指定する ID は release-group (一般的にメジャーなアーティストの場合、各国版を Musicbrainz は認識しますが、当該アルバムの総称が release-group) でした。
(Fanart.tv にカバーを問い合わせる前に、Musicbrainz のAPIに対してアルバム情報を問い合わせて ID をもらうのだが、今回からは release-group ID を取り込んで Fanart.tv 向けのパラメータとして使用する) -
プラグイン向けの HTML タグの統合
トップページの HTML にはプラグイン表示用タグの集合体が非表示のまま埋め込みされています。
(「DASHBOARD」・「SETTINGS」・「パラメータ設定向けプラグイン表示」、「処理結果出力向けプラグイン表示」・「アップデート処理表示」・「カバーアート再取得」)。
今回から、「処理結果出力向けプラグイン表示出力」の使用を止めて「パラメータ設定向けプラグイン表示」に統合し、僅かに省メモリ化(使用上は全くわからないかと思います)。
また、大変今更で申し訳ありませんが、当方でメンテナンスをしているプラグインについては全て表示を統合し、同一の外観になるように再調整を行いました(内部仕様の変更は行っていません)。 -
楽曲再生中の局情報の一部項目追加
Search やトップページの検索機能でサポートしている genre(ジャンル)・composer(作曲者)・performer(演奏者)も楽曲タグにある場合は埋め込む仕様に変更 -
一部のライブラリの差替
jquery をv3.6.3へアップデート + 通知のポップアップアニメーションに使用している animation.js で不使用効果を廃止してフットプリントの縮小
さて、個人的な次のネタとしては ADD STREAM プラグインの動作チェックでよく聞いている「Jazz Sakura」についてググって見つけた こちら です。
何かというと、現状の webui-plus ではかなりヒット率が低い「インターネットラジオでの現在演奏中のカバーアート表示」についてです。
ま、良い方法が見つかったら対応したいなぁとは思います。 -
-
2023-01-22 版の webui-plus アップデートについて
すいません。昨日アップデートしたばかりですが、1点気になった事項がありますので早速差し替えします。
-
CoverArtArchive においての挙動を修正
CoverArtArchive のパラメータで MusicBrainz のリリース(アルバム)IDを指定するのですが、これを導出するために MusicBrainz のAPI に問い合わせ(アルバム名+アーティスト名をパラメータとして)を行います。
当該APIでアルバムを問い合わせしヒットした場合、スコア付きで複数候補が出力されるのですが、アーティスト名を指定した場合でも全く違うアーティストが上位スコアになる可能性があったため、
問い合わせ結果とアーティストが一致した場合のみ抽出としました。
(また、複数候補出力時は従来スコアが95点以上の候補のみで判断していたのですが、今回から80点以上としました。)
↑
もう少し補足すると、各リストのアーティスト名と検索パラメータのアーティスト名は双方とも大文字化したもの同士で一致を確認(リストのアーティスト名が検索パラメータのアーティスト名で始まるかどうか)しています。
現状、以下の場合は一致するアーティストは検知出来ません。
①アーティスト名内にスペースがある場合とない場合の比較
(例えば姓と名の間とか)
②ローマ数字などの特殊数字の表記が異なる場合(片方のⅠがIの場合等)
③途中で改名をしたアーティストや複数の呼称を持つアーティスト
(例えば 綾戸智絵 → 綾戸智恵) -
インターネット経由でのCoverArt検索時のエラー表示
notifyをOnにしていた場合、インターネットでCoverArt取得に失敗した際はwarning(背景黄色)の通知を行う仕様にしました。
(本通知はインターネット経由のCoverArt取得のバグがある程度取れた場合はもう一度出力しない仕様に変更する可能性はあります。) -
symphonic-mpd左隣のヘッドフォンアイコンの挙動修正
すいません。以前に再生・停止・一時停止の挙動について整理した際に不動にしてしていました。
今回から再生中に本アイコンが振動する元々の挙動に戻しました。
-
-
Radio 周りのインターネット経由でのカバーアート取得について
今回は、インターネット経由のカバーアート取得方法についてちょっと解説を書いてみたいと思います。
1.ライブラリ上の楽曲での検索方法
カバーアートを各APIに問い合わせる際のパラメータは「アルバム名」+「アルバムアーティスト名」が基本になります。
(Webui-plus では アルバムアーティスト名が取得できない場合、楽曲のアーティスト名を使用して問い合わせます。)
CoverArtArchive と Fanart.tv はちょっと特殊で当該アルバムの release-group MBID(musicbrainz が提供するアルバム固有ID)で指定する必要があります。
↑
以前 CoverArtArchive と Fanart.tv では同じMBIDでも異なる旨説明していましたが、
改めてAPIのドキュメントを見たところ、どちらも release-group id で抽出可能なため、近日リリース版では仕様を統一します。
という訳で、これらのサービス向けには一旦 MusicBrainzのAPIを使用して release-group MBID を解決してから 各サービスを呼び出す2段階検索が必要になります。2.MusicBrainzの検索サービス
検索パラメータを指定しても完全一致しない場合もありますが、複数ヒットした場合は各候補のスコア値とともに値が返ります。
ただし、アルバムアーティストやアルバム名は内部的にあいまい検索なようで完全一致しない場合も返ってくるため、
次のリリースアルゴリズムでは「検索対象文字列をスペースで分割し、その配列の最初のデータを大文字化したものが、候補の文字列の先頭に一致するか?」を条件とする予定です。
(これをアルバム名とアルバムアーティストの両方で実施)3.ラジオでのカバーアート検索方法
ラジオで検索用パラメータとして使用できそうなものは「楽曲名」+「アーティスト名」であり、アルバム関連の情報は通常取得できません。
このため、MusicBrainzの検索APIのうち「recording(楽曲検索)」を使用して、上記パラメータから「release-group」を抽出する方法で実現しています。
このため、ラジオでのカバーアート検索は現状は CoverArtArchive のみとなっています(将来的に Fanart.tv との切替対応は検討します)。4.カバーアート検索後の結果について
PCでカバーアート表示部にマウスカーソルを重ねると、ツールチップが表示され現在のカバーアート表示候補を確認できます。
CoverArtArchive や Fanart.tv の場合は MusicBrainz の API で release-group の検索が成功すると表示候補としてURLが抽出されますが、
実際に当該URLで先方サイトに画像があるかどうかは運次第となります(画像がない場合は、その後ろのno-image*.jpgが透けて表示される)。という訳で、明日アップデート版をリリースします。
-
2023-01-29 版の webui-plus アップデートについて
-
インターネット経由でのカバーアート取得の改良(CoverArtArchive・Fanart.tv)
昨日の投稿の通り、これらのサービスでは事前にMusicBrainzの APIでの問い合わせによりMBIDの特定が必要になりますが、
その際のアルバム特定方法を改良しました。
また、CoverArtArchive・Fanart.tv共にrelease-groupでアルバムを特定するようにしました。 -
webuiの通常使用時の使用タグ・スクリプトを削減
従来はDashboard・Settings・CoverArtRegetプラグインはメニュー選択の有無に関わらず常時読み込み(+非表示)状態でしたが、
今回よりこれらのプラグインはHTMLファイルを分離し、ブラウザのメモリ使用量を削減しました。 -
アルバムモードでのページ切替不動バグの修正
最後に動作確認して気づきましたが、先日のアップデートの際にパンくずリストからの遷移を修正したために上記動作がおかしくなっていました。 -
(業務連絡になりますが)やっとGitリポジトリに今までの変更点をコミットしました。
個人的な次のネタとしては以下の3つを考えています。
(出来るかどうかは今後の状況次第)-
ラジオ再生時のカバーアートヒット率向上
前に表示したとおり、各ラジオ局の現在再生中リストが上手く取得できればヒット率は向上出来るのですが... -
ラジオストリームでのHLS・MPEG-DASH対応
(Arch Linux AoE では実現していますが、smpd 内蔵の ffmpeg v4.2.2 では不可能なため。) -
BBC・NHK等のストリームURL変更時のplsファイル再提供を半自動化
(今回Arch Linux AoE向けのおまけの方でURL確認しましたが、両方とも変わっていました。
NHKはXMLファイルが同じURL上のため、これの解析で連続的にPLSファイルが生成されるようにしたい。) -
キューの並び替え(テーブルのドラッグによる修正)
あまり必要性は感じていませんでしたが、そろそろ重い腰を上げようかなぁと。
-
-
NHKのHLSストリーム形式のラジオリンクをpls形式で出力するスクリプト(試作版)の提供
昨日からちょっと手を動かしてみて、とりあえず形になったので提供します。
今回はpythonのスクリプトになります。import urllib.request import urllib.parse url = 'https://www.nhk.or.jp/radio/config/config_web.xml' req = urllib.request.Request(url) with urllib.request.urlopen(req) as response: xml_string = response.read() import xml.etree.ElementTree as ET root = ET.fromstring(xml_string) p1 = ['AM1', 'AM2', 'FM'] p2 = [4, 5, 6] cnt = 0 for child in root.iter('area'): for num in range(0, 3): title = 'NHK-' + p1[num] + '_' + child.text f = open(title + '.pls', 'w') print(title + '.pls') f.write('[playlist]\n') f.write('NumberOfEntries=1\n') f.write('File1=' + root[1][cnt][p2[num]].text + '\n') f.write('Title1=' + title + '\n') f.write('Length1=-1\n') f.write('Version=2\n') f.close() cnt = cnt + 1
場所を決め打ちにしているのはXMLパーサーの使い方がまだまだ甘いためです。
このスクリプト、動作させると当該スクリプトファイルと同一ディレクトリ上に全国のNHKラジオ局(インターネット上で公開されているもの。札幌・仙台・東京・名古屋・大阪・広島・松山・福岡)のAMラジオ第1・AMラジオ第2・FMのplsファイルが生成されます。
-
2023-02-18 版の webui-plus アップデートについて
新機能実装成果がないのでもう少し先にしようと思いましたが、以下の不具合を修正しましたのでリリースいたします。
- FILE UPLOAD プラグインのSENDボタンを消去しており、本機能が使えなくなっていた。
- COLOR THEME プラグインでのプラグインの切替が出来なくなっていた。
- LAST.FM プラグインの Session Key 取得が不動であったため、新規に Scrobble を始めることが出来ない状況であった。
- 携帯電話等で Dashboard を開いた際、Latency グラフの右端が切れていた。
- 特定プラグイン固有のスクリプトをプラグインのHTML内部に移動し、通常実行時のスクリプトサイズを極小化した。
- webui専用のスタイルシートの整理
- キーボード・ショートカット+画面上のアイコン説明のプラグインを追加
大変遅くなりましたが、こういうのを作ってみました。
有効化する際は/opt/plugins/assets に 83-key_help という名前のシンボリックリンクを作成してください(リンク先は /opt/plugins/83-key_help/)
前の投稿で考えていた「HLSストリーム対応」ネタですが、smpd に添付の mpd を再コンパイルしないと無理ですね。 smpd での mpd のコンパイル時のオプション指定が分からないので、ちょっと手が出せないかも知れません。キューの並べ替えもテーブルをドラッグすると自動で反映させるという Bootstrap の追加機能は見つけましたが、
ちょっと実装が面倒臭そうなので手は動かしていません。後は調査次第ですが、HTTP/2 対応当たりが「当面私の出来る範疇」でしょうかねぇ。
↑
常に大歓迎ですが「webuiでこんな機能ほしいんだけど」という希望ありましたら、お教えください。 -
@sunatomo さん
ジャストアイデアなのですが、foobar2000 で実現しているような、
YouTube 上の曲をキーワードサーチして一覧を表示し、希望する曲をセレクトして再生させるようなことってできないでしょうか?
ご検討いただけると幸いです。 -
@mgroovy さま
最近 foobar2000 ちゃんと触っていないのでイメージが沸かないんでちょっと解説いただけませんか?Youtube の検索はプラグインや何らかの方法で提供し、
Youtube上のリンクのURLをクリックしたら smpd で当該リンクの楽曲を再生出来るってことでしょうか? -
@sunatomo さん
私も foobar2000 の使い方を良く把握できているわけではありませんが、
View -> Youtube Source -> Search on Site とクリックすると、
別 window が開き、検索する文字を入力できます。
その後、下の部分に検索結果が表示され、どれかをダブルクリックすると、再生が始まります。結構大変な気もしますので、YouTube の検索は YouTube内で行ってもらい、
気に入った曲の URL を smpd の webui に入力し、再生できれば良いと思います。 -
@mgroovy さま
本機能、遅くなりましたが今日実際にfoobar2000起動してみて確認しました。
こちらで紹介されている「Youtube component for foobar2000」ですよね?
(標準では当該メニュー表示されなかったので、ちょっと一緒に調べてみました)
コンポーネントのダウンロード先はこちら
確かにアーティスト名を指定すると楽曲のリストがずらっと並んで、音声再生だけfoobar2000経由でできますね(カバーアートはおそらくサムネールが表示される)。私のようなライト系ユーザには面白い機能ですが、実現するには以下の確認が必要ですね。
-
検索の実現方法
ご呈示の通り、Youtubeサイトで検索してURL指定するってのもありだと思いますが... -
YoutubeのURLを音声デコード可能なのか
smpdの現状のffmpeg実装ではサポートが不足しているため再生できない可能性が高いかもしれません。
Arch Linux AoEならもしかしたらOKかもしれません。
どちらにせよ、後者のYoutubeのURLをsmpdから再生できるかちょっと試してみたいと思います。
-
-
@sunatomo さん
すみません、標準のコンポーネントではなかったのですね。。。
いつの間にか自分でインストールしていたようです。。。検索についてなのですが、検索文字を入れるすぐ下に、"youtube.web: Ordered by relevance" と表示されていると思います。
それで、youtube.web と relevance にアンダーラインが表示されていて、クリックできるようになっています。
そこをクリックすると検索方法のようなものが表示され、Provider とか type とか各種情報が表示されます。
なにかヒントになれば。まぁ大変そうなので、Youtube の URL 入力だけで良くって、とにかく再生ができたら万々歳です!
-
2023-02-26 版の webui-plus アップデートについて
本日も新機能はほぼ無く、バグフィックスになります。
- DASHBOARD プラグインのグラフ表示がある程度の画面解像度の場合正常に表示されない(その下の表領域の内側に指定される)バグ修正。
- 同じくDASHBOADR でスマートフォン向けのarm_freq・core_freq の表示がされない件のバグ修正。
- カバーアートモードでカバーアートをクリックした際のカバーアート用プラグインの動作修正。
(ReGetボタンを動かなくしていました。また、当該プラグインでは現在再生中楽曲のカバーアートを表示するように修正し、Spin・ReGetボタンを押した際もプラグインは閉じない仕様に変更しました。) - html内部のstyle属性並びにJavaScriptでの.cssメソッドを極力使用しないように内蔵のCSSファイルにクラスとして事前定義済みに変更。
インターネット向けのカバーアートに関する現状の実装についてちょっと解説します。-
ライブラリ上の楽曲はwebuiプラグインで指定した方法で検索しますが、ラジオの場合は現状は必ず CoverArtArchive (musicbrainz) で問い合わせを行います。
これは、Musicbrainz の検索 API 以外では「楽曲名とアーティスト名からアルバム名を特定」出来ないためです。
(正確に言うと Fanart.tv でも Musicbrainz の API を使用してアルバムを特定しているため、こちらとの切替運用は可能でしょうが、今の実装は上記のとおりです。) -
CoverArtArchive では楽曲からアルバムを特定するために「アルバム名」・「楽曲名」・「アーティスト名」の3つを指定出来ます。
アーティスト名は「アルバムアーティスト名」が存在する場合はそれを、存在しない場合は楽曲のアーティスト名を使用しています。
一般的には「アルバム名」と「アーティスト名」からアルバムは特定できますが、特定できなかった場合は、アルバム名を消して「楽曲名」+「アーティスト名」で検索してみるとヒットする場合があります(指定したアルバム名が Musicbrainz の DB 内部記述と異なる場合)。 -
CoverArtArchive でのアルバム特定に失敗した場合、以下の2つのエラー出力が通知として表示されます。
「No Release in result」検索 API のレスポンスに候補が無い(空)の場合
「Can't specify Release」検索 API のレスポンスをすべて確認したが、アーティスト名が一致しなかった場合
(通知をOffにした場合は表示されません) -
Musicbrainz の検索APIではアーティスト名の厳格な検索は行われずにレーティングと共に複数のアルバムを返す仕様のため、
当該リストから再度アーティスト名でふるいにかけていますが、
その際のアーティスト名は半角スペースで区切った最初の文字列部分の一致を検出しているため、まれに希望外のアーティストを特定する場合があります。
例えば、指定したいアーティスト名が John Doe だった場合、Musicbrainz から返されたリストの候補で John Robinson が先に記載されていたら John Robinson のほうがヒットしてしまいます。
(アーティスト名でのふるいをかける方法に工夫が必要かも知れません。) -
CoverArtArchive では、事前に Musicbrainz の API でアルバムを特定出来た(Musicbrainz のアルバムIDを取得出来た)場合でも、
必ずしもアルバム画像を取得出来ない場合があります(当該カバーアートが CoverArtArchive に非登録の場合)。
この場合、その後ろの no-image*.jpg が透けて見えます。 -
欧州文字列の半角中丸?とASCIIでの半角ピリオドの相違により Musicbrainz で同一アルバムと認識してくれない例がありました(下例が Metallica なのは個人的な趣味です)。
特殊文字の読み替え辞書を作る必要があるかも知れませんね...
Musicbranz 登録 …And Justice for All 当方ライブラリ登録 ...And Justice for All
youtube の URLを smpd・Arch Linux AoE 両方にライブラリの追加をした場合の挙動ですが、 どちらも楽曲(動画)URLのデコードに失敗しました。前から考えていたのですが、youtube の楽曲を本システムで聞きたい場合は shareport-sync のように chrome-cast 互換のクライアントプログラムを起動したほうが良い気がしてきました。
(以前調べた際はその用途に使えるアプリケーションは存在しませんでしたが、再調査してみようと思います。)