@sunatomo さん
遅くなってすみませんでした。
試してみましたが、正常に表示されるものもされないものも、すべて、
404 Not Find
と表示されました。
別のフォルダの正常に表示されるファイルについても同じ結果でした。
よろしくお願い致します。
webui-plus開発/サポート(webui-plus development/support)
@sunatomo さん
遅くなってすみませんでした。
試してみましたが、正常に表示されるものもされないものも、すべて、
404 Not Find
と表示されました。
別のフォルダの正常に表示されるファイルについても同じ結果でした。
よろしくお願い致します。
@mgroovy さま
もしかしたらシングルコーテーションの部分でURLが変わっているかもしれません。
http://ご自分のIPアドレス/NAS/Jazz/Various/
でブラウザを叩いた場合、ディレクトリ一覧(青文字下線のリンクを押すとそのディレクトリの内部が見える)が表示されると思いますので、
こちらからHD Jazz Volume xをたどって探してみて各フォルダのFolder.jpgが見えるかちょっと確認頂けますでしょうか?
「webuiでカバーアートが見える」=「RaspberryPiにSMBでマウントされている当該NASのカバーアートをwebuiのwebサーバが参照出来ている」
ということを確認するための下調べになります。
@sunatomo さん
この方式で試してみましたら、表示されていたフォルダのFolder.jpgも、表示されなかったフォルダのFolder.jpgもすべて表示されることが確認できました。
なお、xが15,16,17,20,21,22,23,24,25,26のときだけカバーが表示されず、デフォルトの女の人の絵になってしまう症状は相変わらず同じで、ずっと再現しております。
よろしくお願い致します。
@mgroovy さま
やはり、webuiの内蔵httpdではFolder.jpg見えましたか。
それでは申し訳ありませんが、Folder.jpgが正常に表示された際のURL、
ご提示頂けますと幸いです。
(画像が表示された際に「場所」で表示されているURLをご提示下さい)
私の推察では以下のどちらか(もしくは両方?)により表示出来ないと想定しています。
1)MPDから返されたアルバムのフォルダ情報からカバーアートのためのURLを生成する部分に問題がある。
2)MPDから返されるアルバムのフォルダ情報と実際のカバーアートの場所が(何らかの原因で)異なるため参照できない。
1)は修正出来ると思いますが、2)は現象を特定してもちょっと対応が難しいかもしれません...
@sunatomo さん
こちらでよろしいでしょうか?
上の ls-la を取得したのと同じファイルを表示させてみました。
すべて大きな画像(600x600)で表示されております。
http://192.168.0.203/NAS/Jazz/Various/HD%20Jazz%20Volume%201/Folder.jpg
http://192.168.0.203/NAS/Jazz/Various/HD%20Jazz%20Volume%2013/Folder.jpg
http://192.168.0.203/NAS/Jazz/Various/HD%20Jazz%20Volume%2015/Folder.jpg
http://192.168.0.203/NAS/Jazz/Various/HD%20Jazz%20Volume%2016/Folder.jpg
http://192.168.0.203/NAS/Jazz/Various/HD%20Jazz%20Volume%2026/Folder.jpg
ちょっと長らくご無沙汰でした。(すいません)
という訳で、 @mgroovy さまの宿題はそのまま残っていたのですが、ちょっと足踏みしていたのが事実です。
ただし、1点「これをやっておきたい」と思う事項があったので、次のリリースではメインテーマとして対応します。
「ES6(ES2015)対応」
JavaScriptのリビジョン改定になります。
従来はES5という古い仕様で記載してきましたが、スキンの対応時点でIE11を対応ブラウザから外した時点で「そのうちES6対応が必要だよなぁ」とは薄々感じていました。ですが、個人的知識がES6非対応であったため、ちょっと時間がかかってしまったというところになります。
今回、ES6対応に踏み切った訳は「さらなる動作の安定化」を望めるからになります。
※今までもVSCodeでjshintを動作させて構文のチェックはかなり厳密に行ってきましたが、今回さらに一歩進めたいと思います。
変数宣言
ブロックスコープ({}内部で変数宣言すると、その外部では使用できない)により、「不要な変数は早めに開放される」+「変数の使い回しによる謎のバグが発生しなくなる」が期待出来ます。
また、const型変数(定義後の書換が出来ない変数型)により、値参照と実際に演算して書換が必要な変数を分離することが出来ます。
文字列
テンプレート文字列を使用することで文字列記述内部に変数を直接埋込出来、生成したい文字列の視認性が向上します。
(従来は定義済み文字列と変数値を "+" 演算子で結合して記述していた。)
リリース時期は今週末を予定しています。手元では宿題を除いて書換完了していますが、動作の検証をしてからということになります。
なおリリース後、各自の環境でお試し頂き、「ES6対応したことにより問題が発生した」場合は元に戻したいと思いますので、動作のご報告よろしくお願いします。
先週末リリース予定と書いていましたが、以下の理由によりもう少し時間を頂く形になりました。
2.jqueryの最新版への対応可否の確認
すっかり押さえていませんでしたが、v.3.6.0がリリースされたため、これに対応するかの確認を行います。
やっとJavaScriptのES6対応書換の方が終わると思った段階で
リリース向けコンパイル済ませてブラウザのDevelopper Toolでソースコードを確認したところ、
Closure Compilerを通して最適化したコードではES5相当の記述に戻ります
しかも、変数は再利用しまくりで「スコープって何状態」...
もちろんテンプレート文字列なんか当然のように無視...
ココ2週間の努力は何だったんだろうか?
ま、いいや。今後のソースコードはES6対応でリポジトリに戻します。
という訳で「致命的なバグがなければ土曜日にリリース」いたします。
(ちょっとした改良やバグフィックスも加えてありますし、
jqueryもv3.6.0で手元で正常動作しているのでリリースとしてはOKでしょう)
リリースノートはこちらとなっています。
クライアント側のJavaScriptソースコードをES6仕様に変更
前にも説明したとおり、ES6仕様にした最大の理由は
「スコープや定義が厳密化したletとconst型変数を使用し、バグの発生を防止する」ことと、
「テンプレートリテラルにより定常文字列と変数の一括記述で文字列生成部分を見やすくする」ことになります。
ただし、リリース向けに Google Closure Compiler で最適化したコード(webui-plus同梱のもの)はES5仕様に戻されています。
ライブラリの一部差替
jqueryがv3.6.0にバージョンアップしているため、差替えました。
手元で動作検証した結果としては「前と相違なし」です。
カウンター表示の仕様変更
非再生時に従来はカウンターが"00:00 / 00:00"であったが、
今回”--:-- / --:--”に変更してみました。
(これは不評でしたら元に戻します。)
また、従来楽曲再生時に現在値のカウンターが"00:01"で始まることがありましたが、今回出来るだけそれを避けるようにしました。
ごく稀にwebsocketで正常ではないデータが送信されるバグ対応
Developper ToolでConsoleを見ていない限り気づかないでしょうが、こういう事例がありましたので対策しました。
(曲の再生開始直後にその曲のトータルタイムがMPDからまだ取得できない場合のみ内部的に正常ではないjsonを作るロジックであったことが判明)
不使用関数の削減+類似処理の重複定義関数の統合
描画処理の見直し
キュー←→リスト(グリッド)表示の切替時や、各リストでの項目クリックによる内部リストの表示の際など、無駄な画面効果の定義を見直ししました。
ColorTheme変更後の自動リロード
これにより変更後直ちにカラーテーマが適用状態になります。
(従来は手動でのリロードが必須でした)
jqueryによるクエリセレクタの最適化
内部的にクエリセレクタにより、webuiのコンポーネントを指定して動的書換を行っていますが、その記述を見直ししました。
イベント処理定義の最適化
従来は真面目に表の各行単位でクリック時のイベントを定義する等内部的に行っていましたが、
今回は表全体で1回だけイベント定義する様に書き換えて定義数を削減する方向にしました。
list itemフォルダ内カバーアートファイル名を表示方法の変更
@mgroovy さまからの宿題になります。
とりあえず、従来は"/"を除いてパス部分のみURLエンコードする仕様でしたが、今回はフルパスでURLエンコードするように書き換えてみました。
一通り出荷前に動作チェックは行いましたが不具合等ございましたらお申し出くださいませ。
(今回は特に「クエリセレクタの記述変更」を行ったため、それに起因するバグが発生する可能性があるかもしれません。)
私がスマートフォンでのwebuiの表示を日常的に確認する際はAndroid形態のLightningというブラウザを使用しているのですが、
webuiの表示領域高さがブラウザの画面高さと一致しているため、アドレスバーが表示されている場合は画面の下部が隠れてしまいます。
(この現象が特に顕著なのは、通知をOnにしていた場合です。
ページをリロードすると「Connected to ympd」と通知が表示されますが、
下にはみ出した場合は薄っすらと通知のダイアログの上部しか見えません。)
表示領域をスワイプしてスクロールアップの上でアドレスバーを隠せば問題ないのですが、毎回これを行うのは面倒くさいのでそろそろ対策したいと思ったのがこの投稿の元ネタになります。
お使いのモバイル系デバイスとブラウザ名を記載の上、アドレスバーがブラウザアプリの上部に表示状態で正常に通知が表示されるかをお教え下さい。
(本現象はモバイル系デバイスのみで発生する現象のため、とりあえずPCでの報告は不要とします)
もし「特定のブラウザ」のみで現象発生するようでしたら、対策はなしにしたいと思いますが、ご協力お願いします。
端末名 | ブラウザ名 | 表示の良否 |
---|---|---|
Oneplus8(Android 11) | Lightning | ☓ |
Oneplus8(Android 11) | Duck Duck Go | ☓ |
Oneplus8(Android 11) | Chrome | ○ |
ipad mini2(iOS 12) | Chrome | ○ |
ipad mini2(iOS 12) | Safari | ○ |
@sunatomo
webui-plusの開発及びサポートについて、感謝します。
キューを曲単位で削除する右側のゴミ箱をクリックする場合、
「'」が曲名に含まれていると上手くいかないようです。
元々、このような仕様なのでしょうか?
一番右上のゴミ箱による全削除は機能しています。
@kaamura さま
ちょっと調査してみます。
ちなみに、こちらに書き込む前にブラウザで動作しているコードを確認してみたのですが、
曲単位でゴミ箱を操作してキューから当該曲を削除する場合、
「RaspberryPiにはパラメータとしてキュー番号(数値)しか伝送していない」ため
「曲名にどのようなキャラクターがあっても問題ないはず」です。
(これはアルバム単位で削除する場合も同じで、
キュー番号から同一アルバム内の曲をグループ化して「数字範囲として指定」しています。)
もし可能でしたら、以下の情報をお教え下さい。
① 当該操作を行った場合のwebui画面左下の通知について
「Song ”〜” removed」と出るはずです。
(通知を有効化している場合のみで結構です)
②RaspberryPiへsshログインし、以下のコマンドでmpdのログを確認して頂く
cat /var/run/mpd/mpd.log
(ちなみに正常に削除が出来た場合はログには何も記録されません)
リストモードで従来アイコンが表示されていたかと思いますが、
これをカバーアート表示に変更する機能を追加します。
(Volumioやmoodeaudioで既に実現していますが、意外とあっさりと実装出来ました。)
↑
従来どおりのアイコン表示で問題ない場合はそのまま使用し続けることも可能です。
他にも内部的に処理を見直しを行っていますので、25日リリースとします。
お返事ありがとうございます。
もし可能でしたら、以下の情報をお教え下さい。
① 当該操作を行った場合のwebui画面左下の通知について
「Song ”〜” removed」と出るはずです。
(通知を有効化している場合のみで結構です)
表示されません。
②RaspberryPiへsshログインし、以下のコマンドでmpdのログを確認して頂く
cat /var/run/mpd/mpd.log
(ちなみに正常に削除が出来た場合はログには何も記録されません)
特に記録されていません。
アルバム単位で削除する場合においても、
アルバム名に「'」が含まれていると反応しないようです。
webui-baseに戻してみると問題ありませんが、
2021-06-12版のwebui-plusでも問題なかったように思われます。
@kaamura さま
今日改めてwebuiでキューに生成されたhtmlを確認したところ、原因がわかりました。
実は、今回のアップデートでは「通知がOnの場合は、楽曲の削除の際に”その楽曲名を通知する”」機能が追加されており、
ゴミ箱ボタンに割り当てられている関数へパラメータとして楽曲名を生文字列で渡しているのですが、
文字列区切りに ’ が使われているため、「楽曲名の途中で ’ がある場合は正常に動作しない」という結果でした。
という訳で次回のリリース時は修正いたします。
お手数をおかけしました。
Hi Sunatomo, I have a feature request. I have one AOE Frontend but three AOE backends in various locations within the house and shop. Would it be possible to specify the AOE backend that one would want to use in the user interface (I believe it is the execstart command in the vsound.service)?
@Castle
Is it correct that your request is
"I want to restart the vsound.service to specify the connection destination backend with the AoE plug-in"?
If it's correct, I can make the test version with these procedure,
make the extension to AoE plugin html (1 input field to specify Mac address and 1 button to send the message)
first, make the one command (to rewrite the /usr/lib/systemd/system/vsound.service).
second, make the shell-script service to restart the vsound.service with new vsound.service file.
I don't know how to detect and specify your multiple backend board's mac-address (so, I think you have to find it manually and save it to frontend text files).
@sunatomo さん
いえいえ、とんでもないです。
原因を調べていただき、ありがとうございます。
少しでもユーザーの皆さんのお役に立てれば、幸いです。
@Castle さまのご要望にお応えする方向で、以下の実装を考えています。
(一応皆さんにも見てもらうつもりで、日本語で記述をしてみました。)
要望自体は「vsound.service に-d オプションと MACアドレス を指定することで、複数設置されたBackendから希望のものを指定して接続する」と受け取っています。
① プラグイン自体の改良について
テキストボックスを利用してMACアドレスを指定出来るようにします。
まずはテキストボックスに直に手動でMACアドレスを入れる仕様とします。
テキストボックス右横にボタンを配置し、当該ボタンを押した際には後述の方法で vsound.service を再起動する仕様で考えています。
② Webuiでの対応
プラグインで拡張したテキストボックスからMACアドレスを取得し、これをパラメータとして/usr/local/bin に設置したシェルスクリプトを呼び出しする様に調整します。
(昨年 @パパリウス さまに任意のコマンドを実行できるような対応をしていただいたので、上手くいけばこれを使うことであっさりと動作するかなぁと思っています。)
③ vsound.service 制御用のシェルスクリプト
vsound.service の ”ExecStart=” 行を直接書き換えし、その後にsystemdのサービスを再起動させるシェルスクリプトを用意します。
④ 今後の対応について
プラグインでの MACアドレス 指定ですが、将来的には以下の方法でリストから選択出来るまで対応したいとは思っています。
a案:設定ファイルでの指定でリスト化
b案:frontend側でのarpコマンドにより、自動的にリストを取得
a案の場合は「自分の作ったリストのため、確実に対象機を絞り込み可能」ですが、「手動でリストを作るのがちょっと面倒」でしょう。
b案の場合は「面倒なリスト作りは任せてしまう」ことが出来ますが、「ルータやNASなどbackend以外もリストに見えてしまう」というのが問題でしょうか。
なお、試作版の提供タイミングは②のwebui側でのコマンド実行対応が実装出来次第になります(①と③は手元で試作済み)。
sunatomoさん、 CC.皆さま
当方も2台のバックエンドを使い分けていますが、現状は使用するラズパイだけを立ち上げる方法を取っています。
Web-UIで切替コントロールできるのは大変便利になると思いますが、利用者の数は?ですのでMACアドレスの設定は取り敢えずa案でよろしいのではないでしょうか。
(lsaoeコマンドにて複数台のバックエンドのMACアドレスをまとめて照会できますのでそこからのコピペで)
2台のバックエンドを使う理由はb19(44.1K専用)とb16.2(~192Kまでのレート混在)を音源のサンプルレートによって変えているためです。b16.2はCPU速度設定が324MHzで2cpuがデフォなので、ハイレゾ系の再生が安定しています。
なお、話は別件となりますが、AoEのV1.0が待ち遠しいですね、、、、