213 lines
4.4 KiB
Perl
Executable File
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,
|
|
}
|
|
);
|
|
}
|
|
}
|