Commons:Ancient Chinese characters project/Tutorial/Upload files for Linux users (archive)
Jump to navigation
Jump to search
The 2009 code below is outdated.
Please dig toward API:Upload#Example 1: Upload a local file directly.
First you need to get a token and session ID; For this you can you the login API:
curl -d "action=login&lgname=Myusername&lgpassword=Mypassword&format=xml" "http://commons.wikimedia.org/w/api.php"
A sample output is shown below
<?xml version="1.0"?> <api> <login result="Success" lguserid="999999" lgusername="Myusername" lgtoken="43f11918fcbb662ec5118c78721e03b1" cookieprefix="commonswiki" sessionid="b22577b457293dd37a161e80bbb40943" /> </api>
With the values obtained above, you need to fill the first four lines of the script below. The script assumes it is run in a directory whose name is the character to process (in UTF8) and it contains a GIF for each styles (bronze, seal, big seal, oracle). The name of the GIF files are the same as the names in the Richard Sears' site.
session="" token="" user="" userid="" char=`basename $PWD` for file in *gif do echo "----------------------" gifbase=`basename $file .gif` width=`identify -format '%w' $gifbase.gif` height=`identify -format '%h' $gifbase.gif` echo "size $width x $height" if [ "$width" -gt "$height" ] then max=$width else max=$height fi echo "Max is $max" # convert the GIF to a squared centered BMP image # which side is the largest of the width and height of the GIF convert \( -size $max\x$max xc:white \) \ \( -filter lanczos -size x$max $gifbase.gif \) \ -gravity center -composite +repage $gifbase.bmp potrace -s $gifbase.bmp rm $gifbase.bmp case "$gifbase" in j*) echo "oracle" description="{{ACClicense|$char|oracle|oracle|$gifbase|}}" filen="oracle" ;; s*) echo "seal" description="{{ACClicense|$char|seal|seal|$gifbase||}}" filen="seal" ;; L*) echo "bigseal" description="{{ACClicense|$char|bigseal|Great seal|$gifbase||}}" filen="bigseal" ;; b*) echo "bronze" description="{{ACClicense|$char|bronze|bronze|$gifbase|}}" filen="bronze" ;; esac echo $description rm -f $char-$filen.svg ln -s $gifbase.svg $char-$filen.svg # repost: wpIgnoreWarning wpForReUpload=1 curl -v \ -L \ -H "Cookie: commonswikiToken=$token; commonswikiUserName=$user; commonswikiUserID=$userid; commonswiki_session=$session" \ -F "wpUploadFile=@$char-$filen.svg;type=image/svg+xml" \ --form-string "wpSourceType=file" \ --form-string "wpDestFile=$char-$filen.svg" \ --form-string "wpUploadDescription=$description" \ --form-string "wpIgnoreWarning=true" \ --form-string "wpUpload=Upload file" \ --form-string "wpDestFileWarningAck=" \ --form-string "wpForReUpload=1" \ -H "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.22) Gecko/20090605 Iceape/1.1.17 (Debian-1.1.17-1)" \ -H "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5" \ -H "Accept-Language: en-us,en;q=0.5" \ -H "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7" \ -H "Keep-Alive: 300" \ -H "Expect: " \ "http://commons.wikimedia.org/wiki/Special:Upload" done
Note: the margin obtained in the SVG image is not guaranteed to follow the 300px/270px convention of the Inkscape tutorial, but in practice the results are satisfying.