diff options
author | Jan Holesovsky <kendy@suse.cz> | 2010-12-03 13:33:28 +0100 |
---|---|---|
committer | Jan Holesovsky <kendy@suse.cz> | 2010-12-03 13:33:28 +0100 |
commit | 15b1b660a11a0f2d05341e1181d93f89c21add18 (patch) | |
tree | dc6b5137654ee0954115d369bda2a5b29e9e43c1 /helpcontent2/upload-wiki.pl | |
parent | 28f9f37cce7fef09df98d9cdd30e2328777607d1 (diff) |
wikihelp: Uploading of images.
Diffstat (limited to 'helpcontent2/upload-wiki.pl')
-rwxr-xr-x | helpcontent2/upload-wiki.pl | 64 |
1 files changed, 60 insertions, 4 deletions
diff --git a/helpcontent2/upload-wiki.pl b/helpcontent2/upload-wiki.pl index 1531b216e1..74861a8436 100755 --- a/helpcontent2/upload-wiki.pl +++ b/helpcontent2/upload-wiki.pl @@ -13,16 +13,30 @@ You need a wikisetup.txt in this directory, to be able to authentificate you. The content should be: wiki=<url of the api.php on the wiki> +upload=<url of the Special:Upload page> name=<the user name> password=<the appropriate password> +upload-wiki.pl operates on the output of help-to-wiki.py, needing particularly +these: + +wiki/ - directory with all the pages generated out of the help .xhp files +images.txt - list of the images used in help + +Additionally you need: + +images/ - directory with an unpack of images_tango.zip + EOM exit 1; } # first of all, read the configuration from wikisetup.txt -my ( $url, $name, $password ); -open( IN, "wikisetup.txt" ) || usage(); +my ( $url, $upload_url, $name, $password ); +if ( ! open( IN, "wikisetup.txt" ) ) { + print "Missing wikisetup.txt\n\n"; + usage(); +} while ( my $line = <IN> ) { if ( $line =~ /^([^=]*)=(.*)$/ ) { my $k = $1; @@ -32,6 +46,9 @@ while ( my $line = <IN> ) { if ( $k eq 'wiki' ) { $url = $v; } + elsif ( $k eq 'upload' ) { + $upload_url = $v; + } elsif ( $k eq 'name' ) { $name = $v; } @@ -42,13 +59,25 @@ while ( my $line = <IN> ) { } close( IN ); -if ( !defined( $url ) || !defined( $name ) || !defined( $password ) ) { +if ( !defined( $url ) || !defined( $upload_url ) || !defined( $name ) || !defined( $password ) ) { + print "wikisetup.txt does not contain all the info.\n\n"; + usage(); +} + +if ( ! -d 'wiki' || ! -f 'images.txt' ) { + print "Missing the wiki/ subdir or images.txt, re-run help-to-wiki.py.\n\n"; + usage(); +} + +if ( ! -d 'images' ) { + print "Missing images/ subdir - mkdir images ; cd images ; unzip /path/to/images_tango.zip\n\n"; usage(); } # initialize the wiki my $mw = MediaWiki::API->new(); $mw->{config}->{api_url} = $url; +$mw->{config}->{upload_url} = $upload_url; # log in to the wiki $mw->login( { lgname => $name, lgpassword => $password } ) || die $mw->{error}->{code} . ': ' . $mw->{error}->{details}; @@ -61,7 +90,7 @@ sub upload_article { $pagename =~ s/^wiki\///; my $text = read_file( $_ ); - print "Uploading '$pagename'\n"; + print "Uploading page '$pagename'\n"; $mw->edit( { action => 'edit', title => $pagename, @@ -69,6 +98,33 @@ sub upload_article { } File::Find::find( {wanted => \&upload_article}, 'wiki/' ); +# upload the images +open( IN, "images.txt" ) || usage(); +while ( my $line = <IN> ) { + chomp( $line ); + $fname = "images/$line"; + if ( ! -f $fname ) { + print "Image '$fname' not found, skipped.\n"; + next; + } + if ( ! $fname =~ /\.(png|gif|jpg|jpeg)$/ ) { + print "Image '$line' ignored, not a jpg/png/gif.\n"; + next; + } + + my $imagename = $line; + if ( $line =~ /\/([^\/]*)$/ ) { + $imagename = $1; + } + my $image = read_file( $fname ); + + print "Uploading image '$imagename'\n"; + $mw->upload( { + title => $imagename, + summary => 'Initial upload.', + data => $image } ) || die $mw->{error}->{code} . ': ' . $mw->{error}->{details}; +} + # clean up $mw->logout(); |