diff --git a/piwigo_refresh.pl b/piwigo_refresh.pl index ce68168..59d8f08 100755 --- a/piwigo_refresh.pl +++ b/piwigo_refresh.pl @@ -12,6 +12,7 @@ # --directory=absolute path to your photos # [--caddie=0 or 1] # [--privacy_level=4 or 8] +# [--meta_all=0 of 1] # [--cat=categorie_id] # [--subcat=0 or 1] @@ -33,18 +34,19 @@ use Digest::MD5 qw/md5 md5_hex/; my %opt = (); GetOptions( - \%opt, - qw/ - base_url=s - site=s - username=s - password=s - directory=s - caddie=s - privacy_level=s - cat=s - subcat=s - / + \%opt, + qw/ + base_url=s + site=s + username=s + password=s + directory=s + caddie=s + privacy_level=s + meta_all=s + cat=s + subcat=s + / ); my $album_dir = $opt{directory}; @@ -56,22 +58,23 @@ $ua->cookie_jar({}); my %conf; my %conf_default = ( - base_url => 'http://localhost:81/piwigogit', - site => 1, - username => 'plg', - password => 'plg', - caddie => 0, - privacy_level => 4, - cat => 162, - subcat => 1, + base_url => 'http://localhost:81/piwigogit', + site => 1, + username => 'plg', + password => 'plg', + caddie => 0, + privacy_level => 4, + meta_all => 0, + cat => 162, + subcat => 1, ); foreach my $conf_key (keys %conf_default) { - $conf{$conf_key} = defined $opt{$conf_key} ? $opt{$conf_key} : $conf_default{$conf_key} + $conf{$conf_key} = defined $opt{$conf_key} ? $opt{$conf_key} : $conf_default{$conf_key} } $ua->default_headers->authorization_basic( - $conf{username}, - $conf{password} + $conf{username}, + $conf{password} ); my $result = undef; @@ -89,65 +92,121 @@ piwigo_refresh(); #--------------------------------------------------------------------- sub piwigo_login { - $ua->post( - $conf{base_url}.'/ws.php?format=json', - { - method => 'pwg.session.login', - username => $conf{username}, - password => $conf{password}, - } - ); + $ua->post( + $conf{base_url}.'/ws.php?format=json', + { + method => 'pwg.session.login', + username => $conf{username}, + password => $conf{password}, + } + ); } sub piwigo_refresh { - if ($conf{cat} > 0) - { - $ua->post( - $conf{base_url}.'/admin.php?page=site_update&site='.$conf{site}, - { - sync => 'files', - display_info => 0, - add_to_caddie => $conf{caddie}, - privacy_level => $conf{privacy_level}, - sync_meta => 1, - simulate => 0, - cat => $conf{cat}, - 'subcats-included' => $conf{subcat}, - submit => 1, - } - ); - } - else - { - $ua->post( - $conf{base_url}.'/admin.php?page=site_update&site='.$conf{site}, - { - sync => 'files', - display_info => 0, - add_to_caddie => $conf{caddie}, - privacy_level => $conf{privacy_level}, - sync_meta => 1, - simulate => 0, - #cat => $conf{cat}, - 'subcats-included' => $conf{subcat}, - submit => 1, - } - ); - } + my $noMetaCat = + [ + 'sync' => 'files', + 'display_info' => 0, + 'add_to_caddie' => $conf{caddie}, + 'privacy_level' => $conf{privacy_level}, + 'sync_meta' => 1, + 'simulate' => 0, + 'cat' => $conf{cat}, + 'subcats-included' => $conf{subcat}, + 'submit' => 1, + ]; + my $wMetaCat = + [ + 'sync' => 'files', + 'display_info' => 0, + 'add_to_caddie' => $conf{caddie}, + 'privacy_level' => $conf{privacy_level}, + 'sync_meta' => 1, + 'meta_all' => $conf{meta_all}, + 'simulate' => 0, + 'cat' => $conf{cat}, + 'subcats-included' => $conf{subcat}, + 'submit' => 1, + ]; + my $noMeta = + [ + 'sync' => 'files', + 'display_info' => 0, + 'add_to_caddie' => $conf{caddie}, + 'privacy_level' => $conf{privacy_level}, + 'sync_meta' => 1, + 'simulate' => 0, + 'subcats-included' => $conf{subcat}, + 'submit' => 1, + ]; + my $wMeta = + [ + 'sync' => 'files', + 'display_info' => 0, + 'add_to_caddie' => $conf{caddie}, + 'privacy_level' => $conf{privacy_level}, + 'sync_meta' => 1, + 'meta_all' => $conf{meta_all}, + 'simulate' => 0, + 'subcats-included' => $conf{subcat}, + 'submit' => 1, + ]; + + if ($conf{cat} > 0) + { + if ($conf{meta_all} > 0) + { + $ua->post($conf{base_url}.'/admin.php?page=site_update&site='.$conf{site},$wMetaCat); + } + else + { + $ua->post($conf{base_url}.'/admin.php?page=site_update&site='.$conf{site},$noMetaCat); + } + } + else + { + if ($conf{meta_all} > 0) + { + $ua->post($conf{base_url}.'/admin.php?page=site_update&site='.$conf{site},$wMeta); + } + else + { + $ua->post($conf{base_url}.'/admin.php?page=site_update&site='.$conf{site},$noMeta); + } + } } sub piwigo_refreshFolder { - $ua->post( - $conf{base_url}.'/admin.php?page=site_update&site='.$conf{site}, - { - sync => 'dirs', - display_info => 0, - privacy_level => $conf{privacy_level}, - sync_meta => 1, - simulate => 0, - #cat => $conf{cat}, - 'subcats-included' => 1, - submit => 1, - } - ); + if ($conf{cat} > 0) + { + $ua->post( + $conf{base_url}.'/admin.php?page=site_update&site='.$conf{site}, + { + 'sync' => 'dirs', + 'display_info' => 0, + 'add_to_caddie' => 0, + 'privacy_level' => $conf{privacy_level}, + 'sync_meta' => 0, + 'simulate' => 0, + 'cat' => $conf{cat}, + 'subcats-included' => $conf{subcat}, + 'submit' => 1, + } + ); + } + else + { + $ua->post( + $conf{base_url}.'/admin.php?page=site_update&site='.$conf{site}, + { + 'sync' => 'dirs', + 'display_info' => 0, + 'privacy_level' => $conf{privacy_level}, + 'sync_meta' => 0, + 'simulate' => 0, + 'subcats-included' => 1, + 'submit' => 1, + } + ); + } } diff --git a/piwirefresh.sh b/piwirefresh.sh index 6790f13..75aff77 100755 --- a/piwirefresh.sh +++ b/piwirefresh.sh @@ -1,5 +1,15 @@ #!/bin/bash +# syncronise piwigo database +# piwirefresh.sh [OPTION] [CATEGORY] [RECURSIVE] +# OPTION +# --meta_all|-m : including already synchronised photos +# CATEGORY +# number != 0 : limit scan to only one category +# find number in dev tools on piwigos' site_update site +# RECURSIVE +# 0 or 1 : wheter to scan CATEGORY recursively + # Get script working directory # (when called from a different directory) WDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >>/dev/null 2>&1 && pwd )" @@ -25,6 +35,15 @@ if [ -z $mounted ] ; then exit 1; fi +metaAll=0 + +case "$1" in + --meta_all|-m) # including already synchronised photos + metaAll=1 + shift + ;; +esac + if [ "$1" != "" ] && [ "$2" != "" ] then piwiRefreshCatId=$1 @@ -32,7 +51,7 @@ then fi -perl -w /root/script/piwigo_refresh.pl \ +perl -w $WDIR/piwigo_refresh.pl \ --base_url="${piwiRefreshUrl}" \ --site=${piwiRefreshSiteId} \ --user="${piwiRefreshUser}" \ @@ -40,8 +59,12 @@ perl -w /root/script/piwigo_refresh.pl \ --directory="${piwiRefreshSite}" \ --caddie=0 \ --privacy_level=${piwiRefreshPrivacy} \ + --meta_all=${metaAll} \ --cat=${piwiRefreshCatId} \ --subcat=${piwiRefreshSubCatId} ENDTIME=$(date +%s) -echo "Refresh took: $((($ENDTIME - $STARTTIME)/60)) minutes" +# Don't calculate runtime yet +# TODO there seems to be a timeout for the refresh; it always returns after 6 minutes +# although php process of piwigo is still running +#echo "Refresh took: $((($ENDTIME - $STARTTIME)/60)) minutes"