Major rework of piwigo_refresh.pl to also support updating already synced photos
Fix folder sync function was also updating files
This commit is contained in:
@@ -12,6 +12,7 @@
|
|||||||
# --directory=absolute path to your photos
|
# --directory=absolute path to your photos
|
||||||
# [--caddie=0 or 1]
|
# [--caddie=0 or 1]
|
||||||
# [--privacy_level=4 or 8]
|
# [--privacy_level=4 or 8]
|
||||||
|
# [--meta_all=0 of 1]
|
||||||
# [--cat=categorie_id]
|
# [--cat=categorie_id]
|
||||||
# [--subcat=0 or 1]
|
# [--subcat=0 or 1]
|
||||||
|
|
||||||
@@ -33,18 +34,19 @@ use Digest::MD5 qw/md5 md5_hex/;
|
|||||||
|
|
||||||
my %opt = ();
|
my %opt = ();
|
||||||
GetOptions(
|
GetOptions(
|
||||||
\%opt,
|
\%opt,
|
||||||
qw/
|
qw/
|
||||||
base_url=s
|
base_url=s
|
||||||
site=s
|
site=s
|
||||||
username=s
|
username=s
|
||||||
password=s
|
password=s
|
||||||
directory=s
|
directory=s
|
||||||
caddie=s
|
caddie=s
|
||||||
privacy_level=s
|
privacy_level=s
|
||||||
cat=s
|
meta_all=s
|
||||||
subcat=s
|
cat=s
|
||||||
/
|
subcat=s
|
||||||
|
/
|
||||||
);
|
);
|
||||||
|
|
||||||
my $album_dir = $opt{directory};
|
my $album_dir = $opt{directory};
|
||||||
@@ -56,22 +58,23 @@ $ua->cookie_jar({});
|
|||||||
|
|
||||||
my %conf;
|
my %conf;
|
||||||
my %conf_default = (
|
my %conf_default = (
|
||||||
base_url => 'http://localhost:81/piwigogit',
|
base_url => 'http://localhost:81/piwigogit',
|
||||||
site => 1,
|
site => 1,
|
||||||
username => 'plg',
|
username => 'plg',
|
||||||
password => 'plg',
|
password => 'plg',
|
||||||
caddie => 0,
|
caddie => 0,
|
||||||
privacy_level => 4,
|
privacy_level => 4,
|
||||||
cat => 162,
|
meta_all => 0,
|
||||||
subcat => 1,
|
cat => 162,
|
||||||
|
subcat => 1,
|
||||||
);
|
);
|
||||||
foreach my $conf_key (keys %conf_default) {
|
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(
|
$ua->default_headers->authorization_basic(
|
||||||
$conf{username},
|
$conf{username},
|
||||||
$conf{password}
|
$conf{password}
|
||||||
);
|
);
|
||||||
|
|
||||||
my $result = undef;
|
my $result = undef;
|
||||||
@@ -89,65 +92,121 @@ piwigo_refresh();
|
|||||||
#---------------------------------------------------------------------
|
#---------------------------------------------------------------------
|
||||||
|
|
||||||
sub piwigo_login {
|
sub piwigo_login {
|
||||||
$ua->post(
|
$ua->post(
|
||||||
$conf{base_url}.'/ws.php?format=json',
|
$conf{base_url}.'/ws.php?format=json',
|
||||||
{
|
{
|
||||||
method => 'pwg.session.login',
|
method => 'pwg.session.login',
|
||||||
username => $conf{username},
|
username => $conf{username},
|
||||||
password => $conf{password},
|
password => $conf{password},
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
sub piwigo_refresh {
|
sub piwigo_refresh {
|
||||||
if ($conf{cat} > 0)
|
my $noMetaCat =
|
||||||
{
|
[
|
||||||
$ua->post(
|
'sync' => 'files',
|
||||||
$conf{base_url}.'/admin.php?page=site_update&site='.$conf{site},
|
'display_info' => 0,
|
||||||
{
|
'add_to_caddie' => $conf{caddie},
|
||||||
sync => 'files',
|
'privacy_level' => $conf{privacy_level},
|
||||||
display_info => 0,
|
'sync_meta' => 1,
|
||||||
add_to_caddie => $conf{caddie},
|
'simulate' => 0,
|
||||||
privacy_level => $conf{privacy_level},
|
'cat' => $conf{cat},
|
||||||
sync_meta => 1,
|
'subcats-included' => $conf{subcat},
|
||||||
simulate => 0,
|
'submit' => 1,
|
||||||
cat => $conf{cat},
|
];
|
||||||
'subcats-included' => $conf{subcat},
|
my $wMetaCat =
|
||||||
submit => 1,
|
[
|
||||||
}
|
'sync' => 'files',
|
||||||
);
|
'display_info' => 0,
|
||||||
}
|
'add_to_caddie' => $conf{caddie},
|
||||||
else
|
'privacy_level' => $conf{privacy_level},
|
||||||
{
|
'sync_meta' => 1,
|
||||||
$ua->post(
|
'meta_all' => $conf{meta_all},
|
||||||
$conf{base_url}.'/admin.php?page=site_update&site='.$conf{site},
|
'simulate' => 0,
|
||||||
{
|
'cat' => $conf{cat},
|
||||||
sync => 'files',
|
'subcats-included' => $conf{subcat},
|
||||||
display_info => 0,
|
'submit' => 1,
|
||||||
add_to_caddie => $conf{caddie},
|
];
|
||||||
privacy_level => $conf{privacy_level},
|
my $noMeta =
|
||||||
sync_meta => 1,
|
[
|
||||||
simulate => 0,
|
'sync' => 'files',
|
||||||
#cat => $conf{cat},
|
'display_info' => 0,
|
||||||
'subcats-included' => $conf{subcat},
|
'add_to_caddie' => $conf{caddie},
|
||||||
submit => 1,
|
'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 {
|
sub piwigo_refreshFolder {
|
||||||
$ua->post(
|
if ($conf{cat} > 0)
|
||||||
$conf{base_url}.'/admin.php?page=site_update&site='.$conf{site},
|
{
|
||||||
{
|
$ua->post(
|
||||||
sync => 'dirs',
|
$conf{base_url}.'/admin.php?page=site_update&site='.$conf{site},
|
||||||
display_info => 0,
|
{
|
||||||
privacy_level => $conf{privacy_level},
|
'sync' => 'dirs',
|
||||||
sync_meta => 1,
|
'display_info' => 0,
|
||||||
simulate => 0,
|
'add_to_caddie' => 0,
|
||||||
#cat => $conf{cat},
|
'privacy_level' => $conf{privacy_level},
|
||||||
'subcats-included' => 1,
|
'sync_meta' => 0,
|
||||||
submit => 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' => 'dirs',
|
||||||
|
'display_info' => 0,
|
||||||
|
'privacy_level' => $conf{privacy_level},
|
||||||
|
'sync_meta' => 0,
|
||||||
|
'simulate' => 0,
|
||||||
|
'subcats-included' => 1,
|
||||||
|
'submit' => 1,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,15 @@
|
|||||||
#!/bin/bash
|
#!/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
|
# Get script working directory
|
||||||
# (when called from a different directory)
|
# (when called from a different directory)
|
||||||
WDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >>/dev/null 2>&1 && pwd )"
|
WDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >>/dev/null 2>&1 && pwd )"
|
||||||
@@ -25,6 +35,15 @@ if [ -z $mounted ] ; then
|
|||||||
exit 1;
|
exit 1;
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
metaAll=0
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
--meta_all|-m) # including already synchronised photos
|
||||||
|
metaAll=1
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
if [ "$1" != "" ] && [ "$2" != "" ]
|
if [ "$1" != "" ] && [ "$2" != "" ]
|
||||||
then
|
then
|
||||||
piwiRefreshCatId=$1
|
piwiRefreshCatId=$1
|
||||||
@@ -32,7 +51,7 @@ then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
perl -w /root/script/piwigo_refresh.pl \
|
perl -w $WDIR/piwigo_refresh.pl \
|
||||||
--base_url="${piwiRefreshUrl}" \
|
--base_url="${piwiRefreshUrl}" \
|
||||||
--site=${piwiRefreshSiteId} \
|
--site=${piwiRefreshSiteId} \
|
||||||
--user="${piwiRefreshUser}" \
|
--user="${piwiRefreshUser}" \
|
||||||
@@ -40,8 +59,12 @@ perl -w /root/script/piwigo_refresh.pl \
|
|||||||
--directory="${piwiRefreshSite}" \
|
--directory="${piwiRefreshSite}" \
|
||||||
--caddie=0 \
|
--caddie=0 \
|
||||||
--privacy_level=${piwiRefreshPrivacy} \
|
--privacy_level=${piwiRefreshPrivacy} \
|
||||||
|
--meta_all=${metaAll} \
|
||||||
--cat=${piwiRefreshCatId} \
|
--cat=${piwiRefreshCatId} \
|
||||||
--subcat=${piwiRefreshSubCatId}
|
--subcat=${piwiRefreshSubCatId}
|
||||||
|
|
||||||
ENDTIME=$(date +%s)
|
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"
|
||||||
|
Reference in New Issue
Block a user