SW 개발

piwigo 자동으로 싱크하기.. : 리눅스서버

. . . 2014. 2. 13. 20:37
반응형
  • 마크다운변환 : 20190905

piwigo 를 사용하다보면 몇가지 불편한점 중에 하나가 싱크를 하기위해서 매번 webpage 를 들어가야 한다는것이다.

이러한 고민은 piwigo 포럼에도 많다.

자동 싱크하기

역시나 고수님들께서 한방에 해결해주셨다.

  • 출처 : http://piwigo.org/forum/viewtopic.php?pid=110429
    • 위의 포럼의 내용에서 직접 테스트 한 내용을 백업한다.

방법은 perl 스크립트를 직접 web protocol 로 제어하는 하는방법이다.

스크립트 작성

아래의 텍스트를 텍스트파일로 저장.

remote_sync.pl 로 저장

#!/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);

실행

커맨드라인에 다음과 같이 실행

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

이때 username 과 password 는 각자의 환경에 맞게 넣어서 실행

위의 소스를 잘 활용하면 원하는데로 sync 옵션을 주면서 바로 실행가능 할듯하다.

현재 crond 에 위의 스크립트를 넣은채 주기적으로 자동싱크 하니 편하다. 현재 최신버젼 2.6.1 에서 동작확인 완료

반응형