MPDWEB 紹介/特徴

MPDWEB 紹介/特徴
MPDWEB 紹介/特徴

2020年8月5日水曜日

2020-08-01:Ver1.36 修正,機能追加

複数MPD Host/お気に入りの機能に取り掛かった。このバージョンで一部リリースする。Mpdweb本体は完成版とするがメンテナンスは手動となっている。

Microsoft Edge ChromiumEngin版がUpdate対象になりIEにサポートも切り替わるので,本バージョンは,Chrome/Edgeをメインにした。
Chromeも脆弱な部分が指摘されて昨年から変更があり動作に影響が出ているので合わせて変更をしている。また旧Edgeの動作検証は止めた。

 1. mpdtaskのXML展開時,他XMLの取得方法を汎用的にした。
 2. Search機能に遷移するとき,Searchボックスを継承する
    Search機能で,SearchFunctionクリック(緑に変化している)でTitleにコピーする
    Search行の詳細をAlbum内容,File機能に遷移するときにSearchボックスを継承する
    ※Title検索を強化したので,Titleを変更したとき基の検索語に戻せるようにした。
 3. Search機能,File機能,Album内容,Playlist内容から他に遷移するとき,時計マークを表示するようにした。
 4. NowMusicの画面を修正し,使用中にネットワークエラーが起きた場合エラーを表示し,復旧すると継続使用できるようにした。
    ※ネットワークがつながらない場合にブラウザで呼ぶ出すとエラーダイアログを表示。
      mpdからの応答で画面を構成しているため繋がらない場合表示する意味がないので。
 5. mpdtaskの設定を追加修正しTaskServerを使用しなくても良い場合はShell実行するようにした。
     <TaskServer><Force>{on|off}</Force>  on:常にTaskServerを使用 , off:TaskServer/Shellを併用(WebServerと同じサーバでの実行はShellで行う
     Accunt:www-dataでは実行できないShellはTaskServerを使用する設定
     <cmd shell="off">Shell実行の場合でもshell="off"の場合はTaskServerを使用する。
 6. 確認のメッセージボックスOK,CANのボタンが窪んで見えたので修正した。
 7. Web検索機能を変更。サブウィンドウでArtistなど編集できるようにした。
    Frame機能/ブラウザ機能を追加したため設定も各部変更となった。
    iFrameに他DNSを表示するためにコンバータを用意したが処理が遅い。frameで見る必要がなければあまり意味がないが,タブレットの操作性とのトレードオフ。
      XML設定:mpdconfig.xml<HTMLBuiltin><Body_fame>追加
                           <Additional_Func><FindArt3><FindArt4><FileArt3><FileArt4>変更
                           <Extend_Link><frame>変更
              mpdartlist.xml<ViewExtend><HTML>変更
                           <ViewExternal_HTML><Thumbnail_onClick>変更/追加
                           <Viewer>追加
 8.mpdartlistのViewerに機能追加
   内部拡張Viewerに設定によりFunction機能を追加した。
   Release版では,Text Viewerにエンコード機能を追加。ShiftJisのファイルも参照できるようになった。
    XML設定:mpdartlist.xml:<ViewExtend><ViewExternal_HTML>に機能追加
 9.mpdartlistの設定でmpdwebと共通部については,mpdconfig.xmlを参照するようにした。
    XML設定:mpdartlist.xml:<php_config><VendorPrefix><Html_config><LibConf>
            <AlterSection>{[XMLPath:[TagSection]}の設定で共通化できる。
10.mpdartlistのAjax関数を独立した。(mpdweb.libcajax.js)
   mpdweb.phpは機能の差よりこのモジュールを使用していない。
11.バージョン情報の表示に自身のバージョンに色を付けた。
12.NowMusic画面のArt表示時,Musicデータ変化後表示の不具合を修正
   長時間画面を放置しておいたとき表示がおかしくなるのを修正
   デザインを少し修正した。(Art表示時,タイトルが下地と判別し難いため)
13.動作が伴わない部分で,選択状態は間際らしいのでフォーカスを外した。
   XML設定:<Additional_Func>,プログラムを修正
14.デジタル時計が日付が変わったとき年月日が変更されなかったのを修正
15.MpdMount設定を作成した。
   Mpdweb設定プログラムを作成予定の一部
   マウント設定のメリットは,mpd環境のmountshellを設定ファイル化しておくことができるので環境を新規作成する場合設定をコピーできる。
16.画像をクリップ時,"clip:rect"で画像をクリップするとクリップされた部分があるかのようにスクロールエリアが残ってしまう対応をした。
   横長の画像は,clip:rectの使用法を改善した。縦長の画像がなぜ改善されたか疑問がある。
17.Rollover,イメージ(ヘッダ画像)拡大の表示順を調整。File表示機能ヘッダRollover表示時も,ヘッダファンクションを使用可能にした。
18.Viewportの設定を修正し,Phone(携帯,タブレット)時計算して画面にフィット機能を追加した。
   XML設定:<Html_config><ViewportPhone>width=380px,initial-scale=%scale%,maximum-scale=1.7</ViewportPhone>
           ViewportPhone:Phone時のデフォルト設定。%scale%部分を計算する
   この機能を使用するためには,Phone(携帯,タブレット)の設定を無効しておく。(Viewport_{{AGENT}}:を無効)
   計算で画面にフィットしない場合は従来の設定を使用する。
19.配布用設定,XMLファイルのサブネットマスクを解除した。環境によって操作できないため。
    XML設定:<Html_config><Mpd_exclusive><netmask></netmask>
20.再生中終了分秒の表示形式変更
   NetRadio/mpgで終了時間が取れないとき"--:--"と表示した
   ProgressBarの進行のため00:30(30秒)としていたのを設定できるようにした。{分9(2)}:{秒9(2)}
   長すぎると終了Eventのラグタイムがでることに注意。形式不正のとき初期00:30(30秒)をセット。
    XML設定:<DISP_Config><Play_EndTime>
21.複数MPD Host/お気に入りの機能を作成。
   まだテスト段階なので詳細は次回
   setting/mpdmyset.xmlで設定するが,配布ファイルには含めない参考ファイルを同封予定。
22.「お気に入り」作成のためWebタイトルを一部変更 (Playlist/File:Pathを表示)
23.内部的ではあるが,外部アプリI/Fを強引に手を入れた。
   <Div id="MPDWEB-IF"({Item}:{Value};....)を外部I/F連携項目,Event:mpdconfig.xml<HTMLBuiltin><NowMusic>を新設した。
   新規アプリで曲が変わったとき,タイマ監視で,Postを使用して<NowMusic>を経由して実行できるようにした。
24.Playlist Load/Saveの選択「PlaylistSelect」Boxにタイトルバーを付けた
25.「MPDHost」「お気に入り」下部バーを作成した
   Mpdweb内の登録はGetボタンで登録できる。
   PCでブラウザでlinkをドロップして登録もできる(別タブで開くように登録している)
   MPDHostは手動での登録しか現状ではない
   MPDHostの切り替えはセッション内で有効にしているので,セッション保持が終了すれば,元に戻る。
   現在メンテナンス画面はないので,登録後,XMLを手動で変更する
   初回GetでXML設定ファイル:mpdmyset.xmlを生成するのでこれをメンテナンスする。
26.NowMusicに再生ファイル数,時間表示の「TotalBox」バーを作成した。
   Common Functionに表示/非表示のボタンを付けた。
   このバーにTop/Lastのポジショニングボタンを作成した。
   最終を表示しているとき、「Last」ボタンは動作しない。
   Lastに移動時,設定したファイル数(初期10Files)にポジショニングする。Windowサイズを意識して表示する。
   XML設定:<DISP_Config><Current_Total>:TotalBoxの初期表示モード
                        <Current_JoinLast>:TotalBox Lastに移動時同時に表示件数
27.「MPD Statistics.」情報を表示するファンクションを作成した。
    List/File/Playlist/Searchに表示/非表示のボタンを付けた。
28.外部の支援ソフト/機能を全て削除した設定ファイルをリリース。
    setting/mpdconfig.xml.lightをsetting/mpdconfig.xmlにして使用する。
    Cash(Shared MemoryLibrary)は,本体ソフトとしているので使用可能。(速度最大設定)

  今回の修正に際しての細かい修正/不具合を改善しているが上記に記載していない部分もある。

  マニュアルが追い付いていない現状....

2020年3月17日火曜日

2020-03-10:Ver1.35 修正,機能追加

mpd Protocolを読んでいたら(https://www.musicpd.org/doc/html/protocol.html#command-reference)
いくつかの使える機能があったので実装した。
mpd0.21版でProtocolが変わり機能が多くなるようだが,現在の手法では単純にできなそうなので,mpd関連に対し現バージョンで入れたい機能は対応するようにした。
mpdのドキュメントを読んでおこうと思っています。
またVolumio3となってきているのでI/Fを読んでみた
CLI:command line client (https://volumio.github.io/docs/API/Command_Line_Client.html)
APから使用できそうな機能を実装してみた。

2020-03-10:Ver1.35 修正,機能追加....
本バージョンは,VolumioRc2が大幅な機能アップ,mpd0.20が主流になったので機能を反映する機能追加を行った。
VolumioRc2は,mpdを活用するのにのDACの認識,reboot/plunginなどの保守,インストールが省力化されているのでさらに活用する方向とした。
また,他端末との排他的な活用を最低限行い,信頼性を向上した。

1. Shared Memoryの削除時Errorのケースがあったのでメモリリークが怖いので,強制削除できるモード(Clear指示)を作成。(FileArt機能である程度のディレクトリがあった場合を想定)
    mpdweb作成時点の環境ではErrorが起きていなかったので再度調査し組み込んだ。操作面での変更はない。
 2. Mpd ver0.20版でZipFileが扱えたのでZip時のArtを設定できるようにした。
     XML設定<Album_art><file>%filename%.jpg,Folder.jpg,folder.jpg
                     :ZipFile時:%{basename}%(extension含む),%{extension}%,%{filename}%(extension除く)
    Zipファイル:「Last-Modified」(更新日)がない場合はストリーミングとしていたがZipの場合も「Last-Modified」がない。
    なぜか,File一覧(mpd:lslist)では「Last-Modified」(更新日)がある。
        Playlistの編集で,「Last-Modified」(更新日)ない場合は,リンク切れとストリーミングを判定していたが,更にZipを判定する必要が発生した。
        予想外の修正量になってしまったが、当環境でBackupZipを置いているので対応した。
        ※Zipファイルの制約として,日本語はUTF-8でないと文字化けし正常に動作しない。(Volumioも同様)
    UTF-8のZipファイル作成:Windows10の場合
    コントロールパネル→地域
    →「管理」タブ→「システムロケールの変更」
    →「地域の設定」→ 「ベータ:ワールドワイド言語サポートでUnicode UTF-8を使用(U)」にチェック
    →「OK」ボタンで再起動
    Windows10のロケールが変更されるの未対応ソフトがあれば、文字化けする。
    またテキストファイルは過去メモ帳で作成分はShiftJisなのでメモ帳で開くと文字化けする。今後はUTF-8で保存されるので,ロケールがUTF-8でないPCで
    メモ帳で開くと文字化けすることに注意。秀丸などのエディタでは問題ない。
    (Windows10 1903以降はメモ帳はUTF-8がデフォルトになった)
3. Playlist機能のFunctionでの不具合対応。
    ストリーミング選択:「Add Music」~「Add toPlaylist」で動作しないのを修正。
    ファイル選択      : JSを使用してのHTML縮小版を活用。
    前版でのエンバクを修正
4. mpd ver0.20版でmpgファイルを再生できるので暫定対応。これも当環境でZipのmpdを認識してしまうのを確認。
5. volumioとのI/Fモジュールを作成中だが中間として,XML設定<Additional_Funcのパラメータを追加した。
    追加に伴い,IndexListのHTML-IDが直接指定できるようになったので修正
    XML設定 <HTMLBuiltin><BodyJs>
                      <Additional_Func><CommonFunc>
    を変更した
6. 再生Playlistがないことを検知したとき,Load Playlist名をクリアしOverwriteできなくした。
    操作PCでは良いが,他機器で操作している場合は一定時間で最新化する条件がある。
    ・Playパネルを表示しているときのみ一定時間経過後に有効。(mpdとのI/Fを制限するため)
7. Current PlayStatus Cunsume(再生楽曲をクリアする)モードのときPlaylist名をクリアしOverwriteできなくした
    XML設定 <DISP_Config><Playlist_Consume>on|off
8. Current PlayStatus Cunsume(再生楽曲をクリアする)モードのときMoveを設定で抑制するようにした
    MoveはMpdのI/Fに従い,Qidで行っているが,Cunsumeモードのとき再生終了で楽曲が減るとき,Qidも変わるため操作対象が変わるのを防止を兼ねる。
    XML設定 <DISP_Config><Current_ConsumeMove>on|off
9. Current Move/Delete更新時,Titleが異なるとき他端末で操作されたと判断し更新しないようにした。
    XML設定 <Exclusive><Current>on|off</Current><Playlist>on|off</Playlist> NowMusic排他利用,Playlist機能 排他利用
    排他利用設定 排他利用時:Playlistを多く使用しているとき遅くなる。
    一台のみ利用/行わなければ:offで使用も可能
    遅くなるのは,Playlistの対象行を得るmpd Commandで機能がないので,代用策でmpdとの交信が増えることも作用している。
    ループによるオーバヘッドを改善したが,mpdからの応答からCallbackを使用し大幅な改善にならないようにした。
    Callbackを使いたくないが,Move&Deleteを連続操作を行ったときmpdが処理し切れなくなり,Update漏れがでるのでここまでとした。
       排他利用設定をoffにすることで,従来の機能となる設定をできるようにしておいた。信頼性と端末で同時に編集はない前提でも良いとは思う。
       ※ Playlist機能のチェックは,Move/Deleteを更新するとき,同行同ファイルでない場合は,メッセージBox表示し再度Playlistを読み込む。
       Current画面に対するチェックだが,画面上FilePathがないのでTitleで代用。
       同じPositionに同じTitleがあるか完全ではないがチェックしている。
       Current画面にFilePathを持つのは,HTML自体が大きくなるので対応しない予定
10. Playlist機能でList選択しPlaylistを表示時,他端末でPlaylistを削除されたとき,ACKがないエラーメッセージになっていたが,エラーを表示しないようにした。
    Playlist内容が無いような表示を行う。戻るとListがない状態になる。
11. mpdtaskserverモジュールを追加
    volumio-rc2.668で使用可能。
    Volumiovolumio-rc2初期では
         用意している設定で可能となるのは
             ・Volumio2の開始/終了
            「Readme_install.txt」にインストール方法を記載
    XML設定 <Additional_Func><CommonFunc>で設定
    mpdtaskserverを設定していない,またVolumio2が未対応では機能が使用可能にならない
12. 編集機能「Move」が未完了で別行の「Move」を行うと前「Move」のマークが残っていたのを修正(Playlist機能/NowMusic)
13. メタタグ「Diskno」のSort方法を設定変更した。10枚組で1の次に10が来るため。
    XML設定 <Sort_Base><FieldLength>Disc:%03s,を追加
    設定を変更している場合は,同設定のみ設定する。
14. Playlist画面でMove中に再生時間をクリックするとイベントを受けて誤動作していたのを修正
15. Playlist画面でFileが存在しない場合,File機能にリンク時,内部でエラーになっていたのを修正。
    ディレクトリがあるかも知れないのでFile機能にリンク(前版でのエンバクを修正)
16. Playlist機能でDrop&DragdでMoveをできるようにした。(マウス操作のみ)
17. Google Chromeでズーム若干の縮小で使用に耐えるようにstyleを修正。Microsoft Edgs Chromiumベースリリースに合わせて修正。
    レスポンシブWebデザインにはなっていない。Width(ブラウザの幅)とGoogle Chromeの縮小の関係で解決策がない。(ブラウザの幅をそのまま縮小するので@media max-widthでは対応できない?)
18. Search機能で対象データなしの指定で,内部でエラーを起こしていたのを修正。(SharedMemory使用時)
19. CommonPannelでdsf時使用環境でエラーを起こしていたのを修正。
    mpdからのサンプリング周波数の応答が何種類かあったので対応。(他にあった場合でエラーを起こす場合は都度修正)
20. IndexListとFunctionBoxの表示順を変更
    IndexListの上にFunctionBoxを表示するようにした。
    XML設定:<HTMLBuiltin> z-index:1000 →4
21. Search機能強化。完一致(従来の機能)部分一致,先頭一致,大文字小文字区別なしとなる。
    XML設定:<Search_Match>Perfect,Partial,First:Perfec</Search_Match>一致種類,デフォルト
                     <Search_TitleLeng>4</Search_TitleLeng>タイトル検索の必要桁数(default:6)完全一致時はチェックしない
22. List機能のFunctionBoxに選択リストをSearch機能に,引き継ぐ機能を追加した。Search機能強化の一環
    List機能 HTMLサイズが大きくなったが機能とのトレードオフとした。
23. NowMusic 外部起動設定 (Extend Link)でFrame起動時 Fremeのidを変数で指定できるようにした。
    Fremeで動作するアプリ作成時,アプリ内でFrameサイズを変更できるようになる。
    XML設定:<Extend_Link><frame>...%Fremeid%(または[Fremeid])で指定
    ※今回リリースでは未使用
24. 外部起動設定(Extend Link)で終了時,Linkし開いたURLを閉じるようにした。(SubWindow)
    XML設定:<Additional_Func>OpenWindowDescriptionを$SUBWIN$と設定すると機能する
    外部起動を閉じるとき,RequestSubWinCls()[共通関数]を使用することができる
25. 外部起動設定(Extend Link)Frame起動後Closeしない場合,同じClient機器のみ起動するモードを作成した。
        (他機器でも起動面倒だったので)
    XML設定:<Extend_Link><frame> ''/self/close/を設定可とした。
                     <JS_Watch><ExpAutoLoadleng>256</ExpAutoLoadleng>
                             : 外部Link機能の記録Sessionの長さ制限(1記録約20Byte)(最後の2個は必ず残る)
    ※変更時「Session Data Clear」を行うこと。
26. Funcxtion画面Informationにバージョン情報を追加
    mpdweb.common.js/mpdweb.common.css : バージョンを追加。
     ソースからのリターンを表示しているので古い場合は,ブラウザを最新表示,観覧履歴をクリアする。
27. 次期作成予定の機能のため"<Additional_Func>"でFrame起動をできるようにした。
    Frame用に作成するアプリで機能を広げやすくし,mpdweb本体に直接機能を広げたくないため。
    XML設定:<Additional_Func><{tag}> object={FrameObject} frame={FrameStyle:Parent} fsize={FrameStyle:child Size}