upload-wiki.pl | 51 +++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 41 insertions(+), 10 deletions(-)
New commits: commit f36f2883973e4ba6d59ee8d0d9b3e98273aa1c44 Author: Dennis Roczek <dennisroc...@libreoffice.org> Date: Tue Jun 9 03:54:20 2015 +0200 improving upload script Change-Id: I8f7bc5973f988af29b0a07ad3ac066f93bebe5e6 Reviewed-on: https://gerrit.libreoffice.org/16198 Reviewed-by: Adolfo Jayme Barrientos <fit...@ubuntu.com> Tested-by: Adolfo Jayme Barrientos <fit...@ubuntu.com> diff --git a/upload-wiki.pl b/upload-wiki.pl index a42d809..f49c739 100755 --- a/upload-wiki.pl +++ b/upload-wiki.pl @@ -11,6 +11,7 @@ use MediaWiki::API; use File::Find(); use File::Slurp; use Getopt::Std; +use Digest::SHA1 qw(sha1 sha1_hex sha1_base64); # help sub usage { @@ -153,9 +154,12 @@ File::Find::find( {wanted => \&upload_article}, 'wiki/' ); # upload the images if ( $upload_images ) { open( IN, "images.txt" ) || usage(); + my $imagename = ''; + my $imageuploadmsg = ''; + my $image = ''; while ( my $line = <IN> ) { chomp( $line ); - $fname = "images/$line"; + my $fname = "images/$line"; if ( ! -f $fname ) { print "Image '$fname' not found, skipped.\n"; next; @@ -163,19 +167,46 @@ if ( $upload_images ) { if ( ! $fname =~ /\.(png|gif|jpg|jpeg)$/ ) { print "Image '$line' ignored, not a jpg/png/gif.\n"; next; - } - - my $imagename = $line; + } + + $imagename = $line; if ( $line =~ /\/([^\/]*)$/ ) { $imagename = $1; } - my $image = read_file( $fname ); - - print "Uploading image '$imagename'\n"; - $mw->upload( { - title => $imagename, - summary => 'Initial upload.', + sub upload_file_to_mw { + $mw->upload( { + title => 'File:'.$imagename, + summary => $imageuploadmsg, data => $image } ) || die $mw->{error}->{code} . ': ' . $mw->{error}->{details}; + } + + $image = read_file( $fname ); + + # don't reupload an image if it is already present - otherwise it only bloats the wiki + my $imagesha1 = sha1_hex($image); + # get the sha1 request directly from the wiki + my $mwquery = $mw->api( { + action => 'query', + prop => 'imageinfo', + iiprop => 'sha1', + titles => 'File:'.$imagename } ); + my $mwimagesha1 = ""; + #FIXME: bad style, this foreach should konsist only ONE imageid --> do that nicelier + foreach my $imageid (keys $mwquery->{'query'}{'pages'}) { + $mwimagesha1 = $mwquery->{'query'}{'pages'}{$imageid}{'imageinfo'}->[0]->{'sha1'}; + } + + if (($imagesha1 ne $mwimagesha1) and ($mwimagesha1 ne '')) { + print "Updating image '$imagename', sha1 is different from already uploaded image.\n"; + $imageuploadmsg = 'Updating image.'; + upload_file_to_mw(); + } elsif ($mwimagesha1 eq '') { + print "Initial upload of image '$imagename'\n"; + $imageuploadmsg = 'Initial upload.'; + upload_file_to_mw(); + } else { + print "Skipping image '$imagename', sha1 identially to already uploaded image.\n"; + } } } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits