Annonce

Écrire une réponse

Veuillez écrire votre message et l'envoyer

Cliquez dans la zone sombre de l'image pour envoyer votre message.

Retour

Résumé de la discussion (messages les plus récents en premier)

Huy
2014-07-04 10:48:05

Au passage, la synchro aura pris chez moi plus de 3h. Et je test maintenant de resynchroniser pour voir le temps que le script met pour reparcourir ma bibliothèque (en sachant qu'il n'aura qu'à modifier les changements : suppressions, ajouts, modifs).

Faire cela, permet surtout de faire une estimation du temps que vous pouvez mettre dans le crontab pour ce script dans le but de ne pas le lancer si jamais il est encore en exécution.

Huy
2014-07-04 10:43:20

Bonjour,

Merci beaucoup PLG pour ton script. J'ai pu l'utiliser en l'adaptant à mon cas, et cela fonctionne très bien.

Si comme moi vous disposer d'une énorme bibliothèque de photo, peut-être que vous rencontrerez les même problèmes que moi. Je dispose de piwigo sur un serveur, et ma bibliothèque sur un autre (plus de 2To de photo). J'y accède grâce à un montage CIFS et comme vous vous en doutez la synchro est longue, trop longue. J'ai donc eu un problème avec le max_execution_time (par defaut 30 sec dans le php.ini) que j'ai bien tenté d'augmenté, voir même de ne pas limiter, mais rien à faire, le temps de synchro trop long provoque un timeout.

J'ai donc modifier un chouia le script qui me permet désormais de synchroniser dossier par dossier et donc de ne pas tout faire d'un coup, tout en faisant quand même les dossiers les uns après les autres.
Je n'active pas l'option de synchroniser les sous-dossiers dans le sens ou ils seront fait quoiqu'il arrive ensuite.

Voila pour ceux que ça intéresse, n'ayant jamais appris ni codé en perl ce que j'ai ajouté n'est surement pas parfait, mais marche chez moi :) :

Code:

#!/usr/bin/perl
# perl remote_sync.pl --base_url=http://localhost/piwigo/ --username=exemple --password=exemple

use strict;
use warnings;

use LWP::UserAgent;
use Getopt::Long;
use Data::Dumper;
use HTML::Form;

my %opt = ();
GetOptions(
    \%opt,
    qw/
          base_url=s
          username=s
          password=s
         
      /
);
our $ua = LWP::UserAgent->new;
$ua->agent('Mozilla/remote_sync.pl');
$ua->cookie_jar({});
$ua->default_headers->authorization_basic(
    $opt{username},
    $opt{password}
);

my $form = {
    method => 'pwg.session.login',
    username => $opt{username},
    password => $opt{password},
};
my $result = $ua->post(
    $opt{base_url}.'/ws.php?format=json',
    $form
);

my $response = $ua->request(
    HTTP::Request->new(GET => $opt{base_url}.'/admin.php?page=site_update&site=1')
);

$form = HTML::Form->parse($response);

my @catValues = $form->find_input('cat')->possible_values();

my $v = 0;

foreach $v (@catValues){

  # perform the synchronization
  $form = {
      'sync'             => 'files',
      'display_info'     => 1,
      'add_to_caddie'    => 1,
      'privacy_level'    => 0,
      'sync_meta'        => 1, # remove this parameter, turning to 0 is not enough
      'simulate'         => 0,
      'cat'              => $v, 
      'subcats-included' => 0,
      'submit'           => 1,
  };
  $result = $ua->post(
      $opt{base_url}.'/admin.php?page=site_update&site=1',
      $form
  );

  print Dumper($result);

}
flop25
2013-07-12 14:31:05

oui ce sera en 2.6 ^^

Big Z
2013-07-12 11:59:51

Autre question,

Les albums créés lors de la synchro automatique n'héritent pas des droits des albums parents.
Est-il possible d'automatiser dans le script l'héritage des droits sur les albums ? (l'équivalent du bouton appliquer aux sous albums en fait).

Je viens de voir que ça sera une des nouvelles possibilités de piwigo 2.6, je peux attendre.

Big Z
2013-07-03 11:59:36

Trouvé !

Il faudra bien modifier
perl remote_sync.pl --base_url=http://localhost/piwigo/dev/branches/2.0 --username=plg --password=plg

Chez moi ça ne fonctionnait pas, message d'erreur de l'url passée en argument (404)

En modifiant en

perl remote_sync.pl --base_url=http://localhost/piwigo/ --username=bob --password=bob

Ca fontionne !

Big Z
2013-07-03 11:43:58

Je suis désolé de déterrer un aussi vieux post mais j'aimerais utiliser ce script et je pense que pas mal de choses ont bougé depuis !

J'aimerais simplement lancer une synchro du répertoire galleries en évènement planifié mais le script perl me renvoie une erreur

"The requested URL was not found on this server"

J'ai fait plusieurs tests et j'ai bien le script php site_update appelé par le perl dans /piwigo/admin/
J'ai modifié l'url de base renseignée dans perl remote_sync.pl

Merci d'avance messieurs les Jedi  de Piwigo !

Gotcha
2010-04-27 21:01:54

tosca a écrit:

Gotcha a écrit:

Avec mon Batch_Optimisateur je vais uploader via FTP des dossiers entiers.
Est-il possible de lancer la synchronisation uniquement sur ces dossiers précis ?

Je ne suis pas sûre d'avoir compris ... par FTP, tu crées des catégories physiques et - sauf erreur de ma part - lors de la synchronisation, tu peux choisir quelles catégories synchroniser, non ?

Oui mais je veux le faire tout simplement en... deux clics.
Sous Lightroom un clic pour exporter et le deuxième pour choisir mon application. Mon application sait faire jusqu'au chargement par FTP. Après... mes connaissances sont nulles.

HS : J'ai prévu de faire une vidéo pour illustrer ma technique ^^

tosca
2010-04-27 20:38:15

Gotcha a écrit:

Avec mon Batch_Optimisateur je vais uploader via FTP des dossiers entiers.
Est-il possible de lancer la synchronisation uniquement sur ces dossiers précis ?

Je ne suis pas sûre d'avoir compris ... par FTP, tu crées des catégories physiques et - sauf erreur de ma part - lors de la synchronisation, tu peux choisir quelles catégories synchroniser, non ?

Gotcha
2010-04-27 20:14:30

Bon... je remets le couvert sur ce sujet car je vais bientôt en avoir besoin.

Tout d'abord, une question :
Avec mon Batch_Optimisateur je vais uploader via FTP des dossiers entiers.
Est-il possible de lancer la synchronisation uniquement sur ces dossiers précis ?

plg
2009-11-27 23:25:48

Bonjour à tous,

Plusieurs fois nous avons reçu des demandes pour pouvoir automatiser la synchronisation. La réponse habituelle était "ça doit pouvoir se faire en automatisant l'appel à une page web dans le navigateur". Suite à une demande un peu plus "documentée" de worwan sur le forum anglais : wget to automatically quick local sync, et fort de mon expérience technique avec l'API web de piwigo et pLoader, j'ai écrit un petit script en Perl (qui doit marcher sous Windows/Linux/Mac) pour lancer la synchro.

Code:

#!/usr/bin/perl

# perl remote_sync.pl --base_url=http://localhost/piwigo/dev/branches/2.0 --username=plg --password=plg

use strict;
use warnings;

use LWP::UserAgent;
use Getopt::Long;

my %opt = ();
GetOptions(
    \%opt,
    qw/
          base_url=s
          username=s
          password=s
      /
);

our $ua = LWP::UserAgent->new;
$ua->agent('Mozilla/remote_sync.pl');
$ua->cookie_jar({});

$ua->default_headers->authorization_basic(
    $opt{username},
    $opt{password}
);

my $form = {
    method => 'pwg.session.login',
    username => $opt{username},
    password => $opt{password},
};

my $result = $ua->post(
    $opt{base_url}.'/ws.php?format=json',
    $form
);

# perform the synchronization
$form = {
    'sync'             => 'files',
    'display_info'     => 1,
    'add_to_caddie'    => 1,
    'privacy_level'    => 0,
    'sync_meta'        => 1, # remove this parameter, turning to 0 is not enough
    'simulate'         => 0,
    'subcats-included' => 1,
    'submit'           => 1,
};

$result = $ua->post(
    $opt{base_url}.'/admin.php?page=site_update&site=1',
    $form
);

use Data::Dumper;
print Dumper($result);

Copier ce code dans un fichier remote_sync.pl puis lancer:

Code:

perl remote_sync.pl --base_url=http://localhost/piwigo/dev/branches/2.0 --username=plg --password=plg

En plus de Perl, il faudra que le module LWP soit installé (dans le paquet Debian libwww-perl)

A priori, je pense l'intégrer dans piwigo_remote.pl.

Pied de page des forums

Propulsé par FluxBB

github twitter newsletter Faire un don Piwigo.org © 2002-2024 · Contact