Files
piwigo_scan/piwigo_refresh.pl
2019-05-24 16:56:43 +02:00

213 lines
4.4 KiB
Perl
Executable File

#!/usr/bin/perl
# author: Sebastian P.
# version: 1.0
#
# usage:
# perl piwigo_import_tree.pl
# --base_url=http://address/of/your/piwigo
# --site=site_index (default galleries=1)
# --user=your_username
# --password=your_password
# --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]
use strict;
use warnings;
# make it compatible with Windows, but breaks Linux
#use utf8;
use File::Find;
use Data::Dumper;
use File::Basename;
use LWP::UserAgent;
use JSON;
use Getopt::Long;
use Encode qw/is_utf8 decode/;
use Time::HiRes qw/gettimeofday tv_interval/;
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
meta_all=s
cat=s
subcat=s
/
);
my $album_dir = $opt{directory};
$album_dir =~ s{^\./*}{};
our $ua = LWP::UserAgent->new;
$ua->agent('Mozilla/piwigo_refresh.pl 1.00');
$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,
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}
}
$ua->default_headers->authorization_basic(
$conf{username},
$conf{password}
);
my $result = undef;
my $query = undef;
binmode STDOUT, ":encoding(utf-8)";
# Login to Piwigo
piwigo_login();
piwigo_refreshFolder();
piwigo_refresh();
#---------------------------------------------------------------------
# Functions
#---------------------------------------------------------------------
sub piwigo_login {
$ua->post(
$conf{base_url}.'/ws.php?format=json',
{
method => 'pwg.session.login',
username => $conf{username},
password => $conf{password},
}
);
}
sub piwigo_refresh {
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 {
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,
}
);
}
}