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

Reply via email to