diorskin airflash annuncio immobile privato federscacchi last minute offerta speciali epson stylus d88 oakley black minute zelig drive 4 ferrari f355 pantaloni sci juego de la logica sei tu lamore amilo fujitsu m3438g cuoco it hit high tat saggio breve sul decadentismo jvc telecamera hd i turn to you yaeh borgata hotel principe gatteo a mare quilon musica california o c cooper, gordon leroy bistecca gratinate www laurax.it gol miner gazettino regolabarba rasoio supporto antenna profilax carnielli tapis roulant custodia mitac mio stupid disco junior jack mp3 download hotel in spagna foots yu yu bonjour bonjour jules e jim guanti cross carte dei sentieri surf mania le stelle hanno paura cd amplificatore amplificatori canon cb-2lue mendelson fun radio france sex bonb slip e perizoma string intimo tagliacapelli 15 alberghi cortina max inculate scopate pompini hotel a carta romana ischia gommista henry, o. gers (fiume) silos tv7 ku fu master she s so high hd 120 gb maxtor veronelli libri pachito panasonic sintoamplificatore video paul jhonson adattatore video fomen wifi compaq erice hotel most fiere esposizioni roma acer 630 mazda 2004 catalogo regali punti lune amd 64 3000 socket 939 bandane ps2 snowboard racer macchina fotografica sony focus 90 cv virgili nvidia 7800gt www kladi it egitto crociera scorte effetti yamaha passeggino doppio saladino la cyber-shot t7 enciclopedia multimediale o zone dragostea din tei romanian benq -pe7700 libro psicologia bavarija labai labai paolomeneguzzi it zuccherifici fabbian illuminazione digiuno video erotici celebri grand rapids aprile a parigi ef 70-300mm f 4 5-5 6 do is usm veneri al sole fotoannunci ragazze a pagamento suunto orologi vacanza in romania siltal frigorifero roulette strategy ilg, alfred laurence harvey racconti erotici tra madre e figlio thy majesty haiducii vs gabri compro vinili dvd mannoia voli irlanda antivirus worm ulubat trv80 cover paola turci foot ninja 3 commerciali in vendita a roma la situazione di advance wars kazem cinema uci casalecchio di reno libri musica ospedale vicenza scheda wlan compositor dale don nokia monitor plasma philips hotel classic lido di savio vojvodina la bionda one for you one for me manifesto ringraziamenti democratici di videocamere vhs jvc erano e passavanti i love america attrezzi accessori auto e moto panerai orologio duns fighe delle persone famose federico garcia lorca sexy bar bambola acer power f1 bisl hum e cocaina automodellismo a scoppio 1 5 stana izbasa cowon g3 offerta mauritius accettazione appartamento affitto venezia the anthem 2003 us robotics adsl modem wireless www italiauno video clip de ven a bailar perugia agriturismi model young little gomme per cancellare mi chiamo giulia ross www hardcore www elvis presley it nardi forno elettrico ventilato joe cuba un fiume di dollari wwwabc com pentax mx agriturismo forte dei marmo ketch cavo ottico 3 5 this lover maroon5 camera viareggio bmw 540i touring forno di pane comprare stelle too fast too furious slip uomo dolce e gabbana smallvill tribales byblos terra drivers scanner export area manager (regione lombardia - pavia provincia) malattia cane portatili toshiba 60 gb tacy sami dildone impresa lombardia giustizia senza processo socket sdio seca sky giovanni marchese asse aspirante da stiro behead kim sun orologi della casio coppie e singole abruzzo nokia 3510 6310i caricabatterie registratore cd tascam samba me transfert km0 opel corsa benzina auto km 0 sun star office akai l aquila risacca WikiLink is actually two separate things; firstly, a java class for interfacing with a mediawiki server, and secondly, a Mathematica package providing a wrapper around this. This page documents the Mathematica package, while the java class, and its addition functionality, will be documented elsewhere.
WikiLink is available as a standalone package, suitable for use with any Mediawiki installation, and is included in the KnotTheory` package.
License
WikiLink.nb, WikiLink.m and wikilink.jar are copyright Scott Morrison, available under your choice of the MIT, Apache or GPL licenses. The other components are copyright by other parties, all available under the Apache license.
Download
If you already have KnotTheory` installed, there's no need to install anything. The functionality of WikiLink is available as soon as you open KnotTheory`.
Otherwise, download WikiLink.zip. Unzip this anywhere you like. This will create a subdirectory called WikiLink, containing (at least) these files:
Filename
|
Description
|
mathematica/WikiLink.nb
|
The Mathematica notebook containing wrapper function definitions.
|
mathematica/WikiLink.m
|
The Mathematica package automatically generated from WikiLink.nb.
|
wikilink.jar
|
The WikiLink java classes and source code.
|
jars/jdom.jar
jars/commons-httpclient-3.0-rc2.jar
jars/commons-codec-1.3.jar
jars/commons-lang-2.1.jar
jars/commons-logging.jar
|
Libraries (all available under either GPL or the Apache license) required by wikilink.jar
|
Importing the package in Mathematica
If you're not using KnotTheory`, first, you'll need to set some paths, so WikiLink` can find the java files it needs. You need to add the "mathematica/" subdirectory of the WikiLink distribution to the Mathematica $Path.
In[1]:=
|
WikiLinkPath = "/path/to/WikiLink/mathematica/";
|
In[2]:=
|
AppendTo[$Path, WikiLinkPath];
|
If you've already loaded KnotTheory` (e.g., with the statement <<KnotTheory`
), you can simply begin at this point.
We then try to connect to the wiki. Executing this line will prompt you for a username and password.
In[6]:=
|
CreateWikiConnection[
"http://katlas.math.toronto.edu/w/index.php",
InputString["Enter Your Username:"],
InputString["Enter Your Password:"]
]
|
The function WikiUserName[]
checks that we're logged in
In[4]:=
|
?WikiUserName
|
WikiUserName[] returns either the name of the user you are logged in as, your IP address if you're not logged in, or $Failed if something more complicated has happened!
|
|
In[5]:=
|
WikiUserName[]
|
Out[5]=
|
ScottManualRobot
|
Usage
WikiLink` provides functions for checking your login status, getting and setting pages, as well as transparently extending some of Mathematica's string manipulation functions to wiki pages.
In[6]:=
|
?WikiUserName
|
WikiUserName[] returns either the name of the user you are logged in as, your IP address if you're not logged in, or $Failed if something more complicated has happened!
|
|
In[7]:=
|
?WikiGetPageText
|
WikiGetPageText[pagename] returns the raw text of the specified page.
|
|
In[8]:=
|
?WikiSetPageText
|
WikiSetPageText[pagename, text] overwrites the contents of the specificied page with the given text.
WikiSetPageText[pagename, text, summary] overwrites the contents of the specificied page with the given text and notes summary in the change log.
|
|
In[9]:=
|
?WikiSetPageTexts
|
WikiSetPageText[{{pagename1, text1},{pagename2,text2},...}] efficiently sets multiple pages, by first checking which texts are already up to date.
|
|
In[10]:=
|
?WikiUploadFile
|
WikiUploadFile[name, description] uploads the specified file to the wiki.
|
|
Thus for example after
In[11]:=
|
WikiSetPageText["Sandbox", "A robotic edit, at 19:39, 31-August-2005."]
|
Out[11]=
|
True
|
we get
In[12]:=
|
WikiGetPageText["Sandbox"]
|
Out[12]=
|
A robotic edit, at 19:39, 31-August-2005.
|
The function WikiSetPageTexts
is most useful for batch uploads, as it does considerably more error checking, and filters out edits which won't change the page text. It takes as argument a list of {"title", "text"}
pairs, and returns a list of those pairs which failed.
In[13]:=
|
WikiSetPageTexts[{{"Sandbox", "A robotic edit, by --~~"<>"~~"}, {"Sandbox2", "The determinant of the knot [[3_1]] is 3."}}]
|
Out[13]=
|
{}
|
In[14]:=
|
WikiGetPageText["Sandbox2"]
|
Out[14]=
|
The determinant of the knot [[3_1]] is 3.
|
String manipulation functions
WikiLink`
provides functions WikiPageMatchQ, WikiPageFreeQ, WikiStringReplace and WikiStringCases. Each function works likes its usual Mathematica partner,
StringMatchQ,
StringFreeQ,
StringReplace
or StringCases. Instead of providing a string, or list of strings, as the first argument, you should give the name of a page, or a list of names.
You can use these to perform all sorts of editing tricks.
In[15]:=
|
WikiPageMatchQ[{"Sandbox", "Sandbox2"}, "determinant"]
|
Out[15]=
|
{False, False}
|
In[16]:=
|
WikiPageFreeQ[{"Sandbox", "Sandbox2"}, "[["~~(DigitCharacter..)~~"_"~~(DigitCharacter..)~~"]]"]
|
Out[16]=
|
{True, False}
|
In[17]:=
|
WikiStringCases[{"Sandbox", "Sandbox2"}, "[["~~ShortestMatch[__]~~"]]"]
|
Out[17]=
|
{{Sandbox, {[[User:ScottManualRobot|ScottManualRobot]]}},
{Sandbox2, {[[3_1]]}}}
|
In[18]:=
|
WikiStringReplace[{"Sandbox", "Sandbox2"}, "robotic edit"->"robotic edit (using WikiLink`)]
|
Out[18]=
|
$Failed
|
In[19]:=
|
WikiGetPageTexts[{"Sandbox", "Sandbox2"}]
|
Out[19]=
|
{{Sandbox, A robotic edit, by\
--[[User:ScottManualRobot|ScottManualRobot]] 14:54, 18 Feb 2006\
(EST)}, {Sandbox2, The determinant of the knot [[3_1]] is 3.}}
|
Troubleshooting
The instruction ShowJavaConsole[]
will bring up a window in which some debugging information is displayed.
Compatibility
WikiLink (with some modifications made in July 2007) appears to work with mediawiki 1.10.1. Bug reports appreciated!
WikiLink has been tested against mediawiki 1.4.5beta3 and 1.4.7.
WikiLink has known issues on mediawiki 1.5.0. Retrieving multiple pages at once is broken. This appears to be a mediawiki bug, and will not be fixed. The same problem does not occur on mediawiki 1.5.8. --Scott 10:56, 27 Mar 2006 (EST)
I expect WikiGetPage text to continue working in mediawiki 1.5 and beyond, because it uses the stable interface Special:Export. Logging in and setting pages will quite likely break in the next version. If you've tried this, please let me know about your experiences. I'm hoping that soon (1.5?) Special:Import will become available, and I can switch to using this. --Scott 15:57, 31 Aug 2005 (EDT)
Todo
I'd love to create an Ant task which allows uploading a file to a wiki. We could then use this in build scripts for KnotTheory, etc. --Scott 04:07, 17 Sep 2005 (EDT)
See Also
All of the Mathematica notebooks in Category:Knot Atlas Maintenance Software rely on WikiLink, and so are good examples of how to use it.
You may also be interested in the Wikipedia page on mediawiki bots, and in particular the Python Wikipedia Robot Framework.