Hi, I’m trying to create a page programmatically. I can get a token back from a GET, but doing an action=edit in a PUT does not create the page. The response I get back is the MediaWiki API help page.
My Python code is below. Can anyone see what I’m doing wrong?
Thanks,
Matthew
#!/bin/env python
import requests
import urllib
import urllib.parse
baseUrl = 'http://chlamyannotations-test2.princeton.edu/api.php'
params = {'action': 'query',
'meta': 'tokens'}
responseFilename = '/molbio2/mcahn/temp/createPagesResponse.html'
r = requests.get(baseUrl, params=params)
print(r)
print(r.text)
params = {'action': 'edit',
'title': 'TestPage',
'summary': 'Test summary',
'text': 'article content',
'token': r'+\\'}
f = open(responseFilename, 'w')
r = requests.put(baseUrl, data=urllib.parse.urlencode(params))
print(r)
f.write(r.text)
f.close()
|| Matthew Cahn | Linux Administrator | Dept. of Molecular Biology / Research Computing | Princeton University | (609) 258-5404 | mcahn(a)princeton.edu<mailto:mcahn@princeton.edu> ||
The Multi-Content Revisions project [1] introduced the concept of slots to
MediaWiki: instead of a single content, a revision can now contain multiple
content slots, each identified by a role name. With Gerrit change 413223
[2], the revision-related query API modules (action=query&prop=revisions,
action=query&prop=deletedrevisions, action=query&list=allrevisions, and
action=query&list=alldeletedrevisions) are updated to account for that:
* They take a new '<prefix>slots' parameter (where <prefix> is one of 'rv',
'drv', 'arv', 'adr') to indicate which roles to return information about.
Use '*' to return information about all slots, 'main' to return information
about the main slot (which is what was called the content of the revision
before multi-content revisions were introduced). When not used, it will
default to 'main' and the legacy response format will be used.
* Their '<prefix>prop' parameter takes a new value, 'roles', to list roles
for which a slot exists in the given revision.
* Using '<prefix>prop=content' or '<prefix>prop=contentmodel' without
specifiying '<prefix>slots' has been deprecated.
* The parameter '<prefix>contentformat' has been deprecated. Clients should
be prepared to handle the default format.
* Using '<prefix>slots' together with the (already deprecated) parameters
'<prefix>expandtemplates', '<prefix>generatexml', '<prefix>parse',
'<prefix>diffto', '<prefix>difftotext', '<prefix>difftotextpst',
'<prefix>contentformat' and '<prefix>prop=parsetree' results in an error.
Multi-Content Revisions is a work in progress; at this point in time, you
are unlikely to find a wiki with pages which have roles other than 'main'.
This will change in the next few months.
[1] https://www.mediawiki.org/wiki/Multi-Content_Revisions
[2] https://gerrit.wikimedia.org/r/c/mediawiki/core/+/413223
--
Gergő Tisza (Tgr)
Senior Software Engineer
Wikimedia Foundation
_______________________________________________
Mediawiki-api-announce mailing list
Mediawiki-api-announce(a)lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce
It was noticed[1] that the error messages for "missing parameter" errors
were not including the module prefix, for example a query to
action=query&list=search could complain that the "search" parameter must be
set when the actual parameter name is "srsearch". This extends to the error
code, which in this example is "nosearch" rather than "nosrsearch".
This is now fixed, and should be deployed to Wikimedia sites with MediaWiki
1.32.0-wmf.15 and later. See
https://www.mediawiki.org/wiki/MediaWiki_1.32/Roadmap for a schedule.
If your client is checking for specific missing parameter error codes, it
may need to be updated for the changed codes.
[1]: https://phabricator.wikimedia.org/T200155
--
Brad Jorsch (Anomie)
Senior Software Engineer
Wikimedia Foundation
_______________________________________________
Mediawiki-api-announce mailing list
Mediawiki-api-announce(a)lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce
There is no API call that will just return a list of page names
DebConf18/DayTrip/Registration/A
DebConf18/DayTrip/Registration/B
DebConf18/DayTrip/Registration/C
like one sees in
https://wiki.debconf.org/wiki/Special:PrefixIndex/DebConf18/DayTrip/Registr…
without insisting on adding
pageid="7823" ns="0" to the result
even if one uses prop=info & ininfo=...
nor just printing it in the above plain text format without
any other junk added, even if one uses format=txt.
The best one can do is
wget -O z "https://wiki.debconf.org/api.php?action=query&generator=allpages&gapprefix=…"
perl -wnle 'print for m!DebConf18/DayTrip/Registration.+!g;' z
DebConf18/DayTrip/Registration/A
DebConf18/DayTrip/Registration/B
DebConf18/DayTrip/Registration/C
The API has traditionally ignored values beyond the allowed limit,
returning a warning for this situation since 2008(!). It's long past time
for this error situation to actually raise an error, as requested in
https://phabricator.wikimedia.org/T41936.
This is happening in https://gerrit.wikimedia.org/r/433742. It should be
deployed to Wikimedia wikis with 1.32.0-wmf.6 or later, see
https://www.mediawiki.org/wiki/MediaWiki_1.32/Roadmap for the schedule.
Logs indicate that few clients on Wikimedia wikis are hitting the warning.
You can check your client by seeing if you're receiving a "Too many values
supplied for parameter" warning, or by using Special:ApiFeatureUsage for
your client's user agent and looking for a "too-many-X" code.
If your client is affected, the solution is to divide the values into
batches of the appropriate size. Generally the limit is 50 values for
clients without the apihighlimits right and 500 for clients with that
right. The limits for any particular parameter are documented in the
auto-generated help and are available in machine-readable format via
action=paraminfo.
--
Brad Jorsch (Anomie)
Senior Software Engineer
Wikimedia Foundation
_______________________________________________
Mediawiki-api-announce mailing list
Mediawiki-api-announce(a)lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce
Hello maintainers
I was trying to use curl to POST something to an api.php when I get the
following error:
{"error":{"code":"notoken","info":"The "token" parameter must be
set.","*":"See https://wiki.octave.org/wiki/api.php for API usage.
Subscribe to the mediawiki-api-announce mailing list at <
https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce> for
notice of API deprecations and breaking changes."}}
My api.php is as follows: *https://wiki.octave.org/wiki/api.php
<https://wiki.octave.org/wiki/api.php>*
My POSTFIELDs are as follows: username=myusrname&
password=mypswd&rememberMe=1&logintoken=b86c77706c772328b4ece0e5dfde31
b25af83fcf%2B%5C&loginreturnurl=http%3A%2F%2Fwiki.octave.org%2Fwiki%2Fapi.
php
Note that I'm using libcurl (curl_easy_perform() and alike) for my work. Please
help me where I'm going wrong. I'll be really thankful to you.
Looking forward in anticipation.
Thanks and Regards
Sahil
> Date: Tue, 1 May 2018 15:46:20 -0400
> From: "Brad Jorsch (Anomie)" <bjorsch(a)wikimedia.org>
> To: "MediaWiki API announcements & discussion"
> <mediawiki-api(a)lists.wikimedia.org>
> Subject: Re: [Mediawiki-api] MediaWiki API v1.19.7; edit token
> request; empty response
>
>
> On Tue, May 1, 2018 at 3:38 PM, tom schulze <tom.schulze(a)posteo.de> wrote:
>
>
>> however all I get is an empty response.
>>
>> I created a gist
>> <https://gist.github.com/tomschulze/16fcdf8b88f285ab29365e4e558cb5f5>
>> with my python code.
>>
> You're missing parameters in params_edit_token. Try adding 'titles' with at
> least one title (doesn't have to exist) and 'intoken' with value 'edit'.
>
>
That did it! Thanks so much!
Hi everybody,
I am trying to receive an edit token for the MediaWiki 1.19 API, however
all I get is an empty response.
I created a gist
<https://gist.github.com/tomschulze/16fcdf8b88f285ab29365e4e558cb5f5>
with my python code. The script is successfully logging into the wiki
using my admin credentials prior to sending the request for the edit
token. The WRITE_API is enabled.
I read through the API docs
<MediaWiki%20API%20edit%20token%20request%20empty%20response> and
searched on stackoverflow. However, I could not find any answers. This
is really bugging me...
What am I doing wrong, why is the server not responding with the edit token?
Kind regards,
Tom
Thanks so much Brian for your detailed answer, thanks to you I'm starting to understand something !
Viviana
________________________________
Da: Mediawiki-api <mediawiki-api-bounces(a)lists.wikimedia.org> per conto di mediawiki-api-request(a)lists.wikimedia.org <mediawiki-api-request(a)lists.wikimedia.org>
Inviato: domenica 29 aprile 2018 14:00
A: mediawiki-api(a)lists.wikimedia.org
Oggetto: Mediawiki-api Digest, Vol 129, Issue 2
Send Mediawiki-api mailing list submissions to
mediawiki-api(a)lists.wikimedia.org
To subscribe or unsubscribe via the World Wide Web, visit
https://lists.wikimedia.org/mailman/listinfo/mediawiki-api
or, via email, send a message with subject or body 'help' to
mediawiki-api-request(a)lists.wikimedia.org
You can reach the person managing the list at
mediawiki-api-owner(a)lists.wikimedia.org
When replying, please edit your Subject line so it is more specific
than "Re: Contents of Mediawiki-api digest..."
Today's Topics:
1. Wikimedia API redirect 301 (viviana paga)
2. Re: Wikimedia API redirect 301 (bawolff)
----------------------------------------------------------------------
Message: 1
Date: Sat, 28 Apr 2018 14:33:29 +0000
From: viviana paga <viviana.paga(a)hotmail.it>
To: "mediawiki-api(a)lists.wikimedia.org"
<mediawiki-api(a)lists.wikimedia.org>
Subject: [Mediawiki-api] Wikimedia API redirect 301
Message-ID:
<DB6PR06MB3128D1B493601C07A5FF46C5E48C0(a)DB6PR06MB3128.eurprd06.prod.outlook.com>
Content-Type: text/plain; charset="windows-1252"
Hi everyone,
I'm developing an Ajax webservice that query Wikimedia Api Service, but I get a very strange behavior; in fact my query sometimes works perfectly and sometimes doesn't work at all (301 internal redirect) .
This is the response by the server: X-Cors-Redirect-1: 301 https://commons.wikimedia.…metadata&sroffset=0&callback=?
Could you help me to understand why or what I miss in my code?
This is my code :
$.ajaxPrefilter(function (options) {
if (options.crossDomain && jQuery.support.cors) {
const https = (window.location.protocol === 'http:' ? 'http:' : 'https:');
options.url = https + '//cors-anywhere.herokuapp.com/' + options.url;
}
if ( !options.beforeSend) {
options.beforeSend = function (xhr) {
xhr.setRequestHeader('Api-User-Agent', 'OpenArtImages/Beta (http://localhost:8080; viviana.paga(a)hotmail.it; Wikipedia User: Vivsss)');
xhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');
xhr.setRequestHeader('Origin', 'http://localhost:8080');
xhr.setRequestHeader('Strict-Transport-Security', 'max-age=106384710; includeSubDomains; preload');
xhr.withCredentials = true;
}
}
});
firstRequest = $.get( 'https://commons.wikipedia.org/w/api.php?origin=*&action=query&list=search&f…:'+inputWord+incategory+'+fileh:>600& &prop=imageinfo|pageids|titles&srnamespace=6&rawcontinue=&srinfo=totalhits|suggestion&srlimit='+limit+'&iiprop=timestamp|user|url|size|sha1|mime|metadata'+offset+'&callback=?',
function (response) {
///// ........ I get Data ......... /////
}
Thank you so much,
Viviana Paga