家族の写真管理をするにあたって必要な写真管理アプリの要件を考えた結果、Piwigo を使うことにしました。
インストール方法などの詳細は前回・前々回の記事をごらんください。
ただそのままだとまだいろいろ使いづらいので、カスタマイズが必要となってきます。
というわけで今回も Piwigo のカスタマイズの続きです。
なお環境は以下の通りです。
- Ubuntu 18.04
- Piwigo: 11.5.0(linuxserver/piwigo:version-11.5.0)
カスタマイズ項目一覧
カスタマイズする項目は以下の通りです。
- 地図上で写真を閲覧できるようにする
- アルバムごとにまとめて写真をダウンロードできるようにする
- GeoTag 情報をファイルへ書き込む
- Exif 情報を追加で表示できるようにする
- 動画に対応する
- 写真読み込み時にカメラ機種のタグをつける
- バッチマネージャーの「定義済みフィルター」を増やす
- ページフッタから「ウェブマスタに連絡する」を削除する
今回は動画対応から以降の部分についてまとめていきます。
前半部分のカスタマイズについては前回の記事をごらんください。
動画に対応する
Piwigo はもともと写真管理ソフトなので、動画対応に関してはプラグインを入れて対応することになります。
これが結構大変です。
VideoJS プラグインをインストールする
今回試しているバージョンは 2.9.b です。
インストール自体は特に難しいところはありません。
普通に Piwigo のプラグイン画面から検索してインストールすることができます。
公式手順に沿って設定する
まずは公式手順に沿って /gallery/local/config/config.inc.php
を編集します。
以下の通り設定します。
$conf['upload_form_all_types'] = true;
$conf['sync_chars_regex'] = '/^[a-zA-Z0-9-_. ]+$/';
Exif 設定はお好みで。参考までに前回設定した内容を載せておきます(空行から下の部分が動画に関する情報)。
$conf['show_exif'] = true;
$conf['show_exif_fields'] = array(
'Make',
'Model',
'Software',
'DateTimeOriginal',
'COMPUTED;ApertureFNumber',
'ExposureTime',
'ISOSpeedRatings',
'FocalLength',
'FocalLengthIn35mmFilm',
'format',
'type',
'playtime_seconds',
'resolution',
'frame_rate',
'sampling_rate',
'formatprofile',
'codecid',
'display_aspect_ratio'
);
メタデータを同期する
メタデータを同期すると、解像度やフレームレート情報などを表示できるようになります。
逆に言うと、動画をアップロードしただけでは詳細情報は表示されないということです。
以下例です。
メタデータを同期していないと(動画ファイルをアップロードしただけだと)ファイルサイズくらいしか表示されませんが・・・
メタデータを同期すると詳細情報が表示されるようになります。
また、ポスター(サムネイル画)が表示されずにビデオアイコンが出てしまっているような場合でも、同期を行うことでポスターも生成されるようになります。
で、どうも今見ている限りだと、動画を単にアップロードしただけではメタデータの同期は行われないようで、手動で同期を行う必要がありそうです。
メタデータを同期する方法は(たぶん)3通りあります。
- 各写真のプロパティの「VideoJS」タブで「メタデータを同期する」をクリックする。
- バッチマネージャーで「ビデオ」を選び、「Metadata」にチェックを入れてアクションを実行する。
- VideoJS plugin の設定で「同期する」タブを選び、「シミュレーション」のチェックを外して「送信」する。
いずれの方法でもメタデータを同期することができますが、実際に同期を実行するとエラーが出てしまいます。というわけで以下に続きます。
動画のメタデータの同期でエラーが出ないようにする
動画のメタデータを「同期する」を実行した場合、以下のようなエラーが出て先に進みません。
Fatal error: Uncaught Error: Unsupported operand types in /gallery/plugins/piwigo-videojs/include/exiftool.php:58
Stack trace:
#0 /gallery/plugins/piwigo-videojs/include/function_sync2.php(81): include()
#1 /gallery/plugins/piwigo-videojs/admin/admin_sync.php(104): require_once('/gallery/plugin...')
#2 /gallery/plugins/piwigo-videojs/admin/admin.php(68): include_once('/gallery/plugin...')
#3 /gallery/admin/plugin.php(53): include_once('/gallery/plugin...')
#4 /gallery/admin.php(298): include('/gallery/admin/...')
#5 {main} thrown in /gallery/plugins/piwigo-videojs/include/exiftool.php on line 58
自分は php はやったことがないのであまりよくわかっていないのですが、exiftool.php:58 が気に食わないと言っているので、そこをコメントアウトしちゃいます。
56 if (isset($general['Duration']))
57 {
58 // $exif['duration'] = round($general['Duration']*1000, 0);
59 }
コレで通るようになります。
正直ちょっとダサいとは思っているのですが、今のところ実害はないのでこれで運用しています。
1GB を超える動画をアップロードできるようにする
動画対応をして、いざ動画をアップロードしようとするとエラーになります。
PHP お決まりの post_max_size
とか upload_max_filesize
かなと思ったのですが、どうも違う(というかこれ JavaScript でハジいてるよね)。
数100MBのファイルであればアップロードできるようだし・・・というところでいくつかの動画をアップロードして試してみたところ、どうも1GBあたりを境にアップロードできなくなっているようです。
ググってみてもたいていみんな php.ini を確認しろといったお決まりの内容しか見つけられず結構苦戦したのですが、どうもコレに引っかかっていそうなことがわかりました。
/gallery/admin/themes/defalt/template/photos_add_direct.tpl
に最大ファイルサイズが 1000MB とハードコーディングされています。
こんな感じ。
chunk_size: '{/literal}{$chunk_size}{literal}kb',
filters : {
// Maximum file size
max_file_size : '1000mb',
// Specify what files to browse for
mime_types: [
{title : "Image files", extensions : "{/literal}{$file_exts}{literal}"}
]
},
ここの 1000mb
を 5000mb
などに変更すると、5GBまでのファイルをアップロードできるようになります。
引き続きダサいとは思うのですが仕方ないですね・・・
アルバム画面で動画か静止画かわかるようにする
これはどういうことかというと、実際にアルバム画面を見てもらうとわかると思います。
アルバム画面に表示されている3つのサムネイルのうち一番右側だけ動画なのですが、これだとぱっと見どれが動画でどれが写真かわからないですよね?(この例だとアスペクト比違いで見分けることは可能ですが)
これを何とかしたいなーという話です。
結論から言うと、自分は Bootstrap Darkroom テーマを入れることで解決しました。
Bootstrap Darkroom を入れると、こんな感じになります。
ファイル名が入りますし、何といってもサムネイルの左上にビデオアイコンが挿入されるため、一目でこれが動画だとわかります。これは便利。
写真読み込み時にカメラ機種のタグをつける
写真をアップロードするときに、カメラ機種やメーカーをタグとして自動登録できるようにします。
こうしておくことによって、後で「あのカメラで撮った写真」抽出することができます。
今回 Piwigo は家族で使う想定なので、家族それぞれが持っているカメラの機種で写真をフィルタ出来るようにしておくことで、疑似的に「誰が取った写真か」を抽出できるようになります。
/gallery/local/config/config.inc.php
に、以下のように設定します。
// use_exif_mapping: same behaviour as use_iptc_mapping
$conf['use_exif_mapping'] = array(
'date_creation' => 'DateTimeOriginal',
'tags' => 'Model',
'keywords' => 'Make'
);
なお、メーカー名が不要な場合は keywords の行は不要です。
以下参考
バッチマネージャーの「定義済みフィルター」を増やす
バッチマネージャーは、アップロードされた写真を複数枚抽出・選択し、選択した写真に対して同じ処理(アクション)を適用するための機能です。
わかりやすい操作例としては、写真を複数枚選択し、選択した写真を全て削除するといった使い方ですね。
もちろん写真の削除だけではなく、アルバムの移動やタグの編集、ここまでにも説明したメタデータの同期やジオタグの付与なども行えます。
では「定義済みフィルター」とはなんなのか?
これは、バッチマネージャーで写真を抽出するための条件です。
例えば、「最近追加した写真」「動画」「ジオタグ情報がついている写真」などです。
まずはこれらの条件に当てはまる写真を「定義済みフィルター」で抽出することで、アクションを適用したい写真の候補を絞ることができます。
全ての写真から1つ1つチマチマ探すなんてことはやってられないですからね。
Batch Manager Prefilters をいれることで、この「定義済みフィルター」の種類を少しだけ増やすことができます。
個人的には「タグがついているもの(with tags)」の条件が欲しかったので助かりました。
ページフッタから「ウェブマスタに連絡する」を削除する
これは文字通りなのですが、フッタ部分に「ウェブマスタに連絡する」がデカデカと表示されていて結構ウザいので、これをなくします。
これについては既にオフィシャルに投稿がありました。
手順としては以下の通りです。
1.LocalFiles Editor プラグインを有効化する
2.LocalFiles Editor プラグインの設定画面で、「個人のプラグイン」タブを選択
3.以下のように記述し、保存する
<?php
/*
Plugin Name: 個人のプラグイン
Version: 1.0
Description: 個人のプラグイン
Plugin URI: http://piwigo.org
Author:
Author URI:
*/
add_event_handler('loc_end_page_tail', 'removecontact');
function removecontact() {
global $template;
$template->clear_assign('CONTACT_MAIL');
}
?>
4.プラグイン画面の「無効なプラグイン」に「個人のプラグイン」ができているはずなので、それを有効化する
まとめ
というわけでここまで3回にわたって Ubuntu 上での Piwigo のインストール・設定について触れてきました。
いろいろと手間はかかりましたが、ここまで設定できれば、今のところ我が家の写真管理としてはかなり使い勝手が良いです。
ただ、まだいくつか課題はあり、1つが AVCHD への対応です。
これは VideoJS の問題だから簡単じゃないのかな・・・
この辺はまたわかり次第更新していきたいと思います。
コメント