Entropia:Uploaden: Unterschied zwischen den Versionen

aus dem Wiki des Entropia e.V., CCC Karlsruhe
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
Hier ein Skript, um eine Datei ins Wiki zu tun. Die Dateinamen sollte man vorher schon von Fremdkörpern wie Leerzeichen befreien und ein erneuter Upload einer Datei, die bereits mit identischem Namen existiert oder existierte, wird auch nicht unterstützt. Im Fehlerfall schmeisst curl mit HTML um sich. (Patches accepted.)
Hier ein Skript, um eine Datei ins Wiki zu tun.
 
<pre>
<pre>
#!/bin/sh
#!/usr/bin/perl
# Upload a file to a recent MediaWiki using the API.


if [ -z "$4" ]; then
use strict;
  echo "Usage: $0 <wikiuser> <wikipass> <file> <comment>"; exit 0
use MediaWiki::API 0.39;
fi


wikiuser="$1"
my $wikiuser = $ARGV[0];
wikipass="$2"
my $wikipass = $ARGV[1];
file="$3"
my $file     = $ARGV[2];
comment="$4"
my $comment = $ARGV[3];


cookie=`mktemp /tmp/wiki-upload-cookies-XXXXXX`
# usage
if (!defined($comment)) {
  print "Usage: $0 <wikiuser> <wikipass> <file> <comment>\n";
  exit;
}


# Clumsily retrieve wpLoginToken
# log in to the wiki
wplogintoken=`curl -D $cookie -o - \
my $mw = MediaWiki::API->new();
'https://entropia.de/Spezial:Anmelden' \
$mw->{config}->{api_url} = 'https://entropia.de/wiki/api.php';
| grep wpLoginToken | sed -e 's#.*value="##' -e 's#".*##'`
$mw->login( { lgname => $wikiuser, lgpassword => $wikipass } )
  || die $mw->{error}->{code} . ': ' . $mw->{error}->{details};


# Login
# upload file
curl -b $cookie -D $cookie \
open FILE, $file or die $!;
-F wpName="$wikiuser" \
binmode FILE;
-F wpRemember=1 \
my ($buffer, $data);
-F wpPassword="$wikipass" \
while ( read(FILE, $buffer, 65536) )  {
   -F wpLoginToken="$wplogintoken" \
   $data .= $buffer;
-F wpLoginattempt="Log in" \
}
'https://entropia.de/wiki/index.php?title=Spezial:Anmelden&amp;action=submitlogin&amp;type=login'
close(FILE);


# Uploa
$mw->upload( { title => $file,
curl -b $cookie \
              summary => $comment,
-F wpUploadFile=@"$file" \
              data => $data } ) || die $mw->{error}->{code} . ': ' . $mw->{error}->{details};
-F wpUploadDescription="$4" \
-F wpUploadAffirm=1 \
  -F wpIgnoreWarning=1 \
-F wpUpload="Dateien hochladen" \
"https://entropia.de/Spezial:Upload"


rm -f $cookie
</pre>
</pre>

Version vom 30. Juni 2012, 18:31 Uhr

Hier ein Skript, um eine Datei ins Wiki zu tun.

#!/usr/bin/perl
# Upload a file to a recent MediaWiki using the API.

use strict;
use MediaWiki::API 0.39;

my $wikiuser = $ARGV[0];
my $wikipass = $ARGV[1];
my $file     = $ARGV[2];
my $comment  = $ARGV[3];

# usage
if (!defined($comment)) {
  print "Usage: $0 <wikiuser> <wikipass> <file> <comment>\n";
  exit;
}

# log in to the wiki
my $mw = MediaWiki::API->new();
$mw->{config}->{api_url} = 'https://entropia.de/wiki/api.php';
$mw->login( { lgname => $wikiuser, lgpassword => $wikipass } )
  || die $mw->{error}->{code} . ': ' . $mw->{error}->{details};

# upload file
open FILE, $file or die $!;
binmode FILE;
my ($buffer, $data);
while ( read(FILE, $buffer, 65536) )  {
  $data .= $buffer;
}
close(FILE);

$mw->upload( { title => $file,
               summary => $comment,
               data => $data } ) || die $mw->{error}->{code} . ': ' . $mw->{error}->{details};