EnulationStation Webフロントエンド - NullPopPoLab/batocera.linux GitHub Wiki

EmulationStationにはwebサーバ機能がありまして、
SYSTEM SETTINGS/DEVELOPER/ENABLE PUBLIC WEB ACCESS
をonにしてEmulationStationを再起動すると
http://(Batocera端末IP):1234/index.html
からアクセスできます。

(認証もないし脆弱性対策絶無なので絶っっっっっっ対インターネットに公開しちゃダメダヨ)

公式品ではゲームの起動と終了ぐらいしかできないですが、
APIとしてはそれなりに機能揃ってまして、
MetaDataの編集ぐらいはできるようになってます。

それでこの度、そのMetaData編集を含めていろいろ実装してみました。
いくつかの機能はNullPopPoCustom専用ですが、本家Batoceraでも互換性のある部分なら
専用のProxyを用意するとかして使えるかもしれない。
というか用意しました。
これにより、初歩的なweb開発スキルのみでフロントエンド部分を自作できるようになります。

ゲームリスト

home

Rating, Favorite, Hidden については、リストから直接変更できます。
その他、

  • Detail ボタンでゲーム毎の詳細ページ
  • Export ボタンで一覧のTSV書き出し
  • Import ボタンで一覧(に対応するMetaData)のTSV取り込み

メディアビュア

ssv

Screenshots については、ゲーム一覧の代わりにビュアが開きます。

  • ← → ボタンでファイル変更
  • × ボタンで終了

ゲームビュー

gameview

ゲーム一覧から Detail ボタンで当該ゲームについてのページが開きます。
MetaData に登録されているメディアは、ここから閲覧できます。 その他、

  • (NullPopPoCustom専用) Jukebox ボタンでjukeboxフォルダ内のメディア閲覧(後述)
  • (NullPopPoCustom専用) SlideShow ボタンでslideshowフォルダ内のメディア閲覧(後述)
  • Meta ボタンでMetaData編集
  • Quit ボタンで一覧に戻る

Metaエディタ

metaedit

MetaDataの編集フォームです。
メディアファイルと集計データに関するものは編集対象から除外されます。

  • Powered by: 本家のarcadesystem相当部分。ディスクシステムとかスーファミターボとか書く想定。
  • Captional Title: 本家のname相当部分。EmulationStationでの表示名。
  • Formal Title: (NullPopPoCustom専用) 正式なタイトル表記
  • Sortable Title: (NullPopPoCustom専用) 本家で封印されていた機能で、ソート処理向けのタイトル表記(を想定) (英大文字と数字と濁点抜きひらがなだけで記述とか)
  • Family: ゲームのシリーズ名
  • Description: ゲームの概要
  • Rating: いわずと知れた5段階評価だけど、★1状態でもう一度★を押すと★0に戻せる。
  • Runnable: (NullPopPoCustom専用) 起動確認済フラグ
  • Kid Game: EmulationStationのUIをKIDモードにしたときでも有効なゲームとする
  • Favorite: お気に入りコレクションに含める
  • Hidden: EmulationStationでの一覧から消す
  • Region: 地域コード
  • Lang: 言語コード
  • Release Date: 発売日 (YYYY-MM-DD形式で)
  • Developer: 開発元
  • Publisher: 発売元
  • Genres: Edit ボタンでジャンル選択
  • Players: 最大プレイヤー人数 (整数のみ有効)
  • Premise: (NullPopPoCustom専用) 前提事項
  • Story: (NullPopPoCustom専用) ストーリー
  • Rule: (NullPopPoCustom専用) ゲームルール
  • Operation: (NullPopPoCustom専用) 操作説明
  • Credit: (NullPopPoCustom専用) 開発者名
  • Tips: (NullPopPoCustom専用) 役に立つ情報
  • Notes: (NullPopPoCustom専用) 雑多な情報
  • Bugs: (NullPopPoCustom専用) バグ情報
  • Submit ボタン: 編集内容の反映
  • Quit ボタン: 編集内容を撤回して戻る

ジャンル選択

genres

複数選択可。
ジャンル説明 サブジャンルを選択するとジャンルカテゴリが自動的に追加され、
ジャンルカテゴリを外すと全てのサブジャンルも外されます。
同様に Submit ボタンで反映、 Quit ボタンで撤回。

Scraper 追加機能

(NullPopPoCustom専用)
extra

NullPopPoCustomでは、各種メディアファイルをromsには置かず、
/userdata/scraper/システム名/ゲーム名/ に集めるようになっています。
さらに、このゲーム毎フォルダの直下に以下を置くことで、ゲームビューに追加機能が現れます。

  • jukebox フォルダ: この中にあるメディアファイル群をWebフロントエンドから視聴ができます
  • slideshow フォルダ: この中にあるメディアファイル群をWebフロントエンドから視聴ができます
  • docs.json ファイル: ドキュメントリンクをゲームビューに追加します

docs.json

{
    "リンク表示名":"URLまたはscraper以下の相対path",
    "リンク表示名":"URLまたはscraper以下の相対path",
      :
    "":"†"
}

な感じ。 空文字列のキーは無視されます。
最後の † は日本語のエンコーディング判別用。
(ウチのエディタ、英数しか使ってないファイルはShift_JIS扱いすんの)
URLと相対pathは : があるかで判定されます←手抜き
なお、plain textへのリンクを書くときは対象ファイルをBOM付きUTF-8にしておきましょう。

TSV編集

とりあえずLibreOffice Calc推奨。
Excelでも編集は可。最近のはよくわかんないけど、10年ぐらい前はUTF-8と相性悪くて
一旦メモ帳で開いたのを全コピー→Excelペーストとかいった変態手順を要したので
推奨はしてない。
TSV
な感じで、タブ区切りにして読み込むと、
(なお、引用符で囲まれたフィールド云々をonにすると正常動作しない)←手抜き
TSVedit
な感じで、表で編集できます。
(複数行系の項目については、表にする意味ないし操作性悪いだけなので敢えて除外)
このうち1行目と ID,Platform,Path 列については、取り込むとき照合に使うので変更不可とします。
他は変更可ですが、書式が決まっている列があります。

  • Rating: 1~5の整数または空白
  • Runa,Favo,Hide,Kids: 0か1
  • Date: YYYY-MM-DD 形式の日付または空白 編集に使わない列は、列ごと削除できます。

編集結果を取り込むときは
import
参照…ボタンでファイルを選んでからImportボタンで実行します。