API:Dotazy
Tato stránka je součástí dokumentace k API Action MediaWiki. |
Modul action=query
vám umožňuje získat informace o wiki a datech v ní uložených, jako je wikitext konkrétní stránky, odkazy a kategorie sady stránek nebo token, který potřebujete ke změně obsahu wiki .
Dokumentace API
Moduly dotazů
Modul dotazu má tři typy podmodulů (nazývaných také dotazovací moduly):
- Metainformace o wiki a přihlášeném uživateli.
- Vlastnosti stránek, včetně revizí stránek a obsahu.
- Seznamy stránek, které odpovídají určitým kritériím.
Příklady
Příklad 1: Určení stránek
Na rozdíl od modulů meta a dotazů na seznam fungují všechny moduly dotazů na vlastnosti na sadě stránek, které lze zadat jedním z následujících způsobů:
- Podle jména pomocí parametru
titles
, např.titles=Foo|Bar|Main_Page
. - Podle ID stránky pomocí parametru
pageids
, např.pageids=123|456|75915
. - Podle ID revize pomocí parametru
revids
, např.revids=478198|54872|54894545
. Většina dotazovacích modulů převede ID revize na odpovídající ID stránky. Pouze prop=revisions ve skutečnosti používá samotné ID revize. - Pomocí generátoru.
Požadavek GET
Odpověď
{
"batchcomplete": true,
"query": {
"pages": [
{
"pageid": 1130,
"ns": 0,
"title": "Avicenna"
},
{
"pageid": 17412,
"ns": 0,
"title": "Klein bottle"
},
{
"pageid": 33642,
"ns": 0,
"title": "Warrant"
}
]
}
}
Příklad 2: Normalizace názvu
Normalizace nadpisů převede nadpisy stránek do jejich kanonické podoby.
To znamená použití velkého prvního znaku, nahrazení podtržítek mezerami a změnu jmenného prostoru na lokalizovaný tvar definovaný pro danou wiki.
Požadavek GET
Odpověď
{
"batchcomplete": true,
"query": {
"normalized": [
{
"fromencoded": false,
"from": "Project:articleA",
"to": "Wikipedia:ArticleA"
},
{
"fromencoded": false,
"from": "article_B",
"to": "Article B"
}
],
"pages": [
{
"ns": 0,
"title": "Article B",
"missing": true
},
{
"ns": 4,
"title": "Wikipedia:ArticleA",
"missing": true
}
]
}
}
Příklad 3: Chybějící a neplatné názvy
Názvy, které neexistují nebo jsou neplatné, budou mít v odpovědi nastaven atribut missing
nebo invalid
.
Ve výstupních formátech, které podporují klávesy číselných polí, budou mít chybějící a neplatné názvy záporné ID stránky.
V některých případech může uživatel zobrazit název, ale nemůže k němu přistupovat rozhraní API, jako jsou stránky, které zrcadlí obsah z jiné wiki.
Tyto tituly budou mít v odpovědi nastavený atribut known
.
Požadavek GET
Odpověď
{
"batchcomplete": true,
"query": {
"pages": [
{
"ns": 0,
"title": "Doesntexist",
"missing": true
},
{
"title": "Talk:",
"invalidreason": "The requested page title is empty or contains only the name of a namespace.",
"invalid": true
},
{
"pageid": 15580374,
"ns": 0,
"title": "Main Page"
}
]
}
}
Příklad 4: Pokračující dotazy
Když nejsou v odpovědi na dotaz vrácena všechna data, bude zde atribut continue
, který značí, že existuje více dat.
Požadavek GET
Odpověď
{
"continue": {
"accontinue": "List_of_largest_companies_in_Sri_Lanka",
"continue": "-||"
},
"query": {
"allcategories": [
{
"category": "List of BioWare characters"
},
{
"category": "List of Harlequin Romance novels"
},
{
"category": "List of MPs elected in UK elections templates"
},
{
"category": "List of Metamorphoses characters"
},
{
"category": "List of Rockstar Games characters"
},
{
"category": "List of Star Trek awards and nominations"
},
{
"category": "List of Swedish films of the 2020s"
},
{
"category": "List of association football clubs in the Republic of Ireland templates"
},
{
"category": "List of awards and nominations received by Aleksej Pechkuroy"
},
{
"category": "List of cabinet templates"
}
]
}
}
Chcete-li získat další data, přidejte jejich hodnoty k původnímu požadavku:
Požadavek GET
Odpověď
{
"batchcomplete": true,
"query": {
"allcategories": [
{
"category": "List of largest companies in Sri Lanka"
},
{
"category": "List of longest beaches of the world"
},
{
"category": "List of ministers by ministry of Bangladesh"
},
{
"category": "List of people from Palm Beach, Florida"
},
{
"category": "List of video game characters"
}
]
}
}
Příklad 5: Dokončení dávky
Rozhraní API vrací prvek batchcomplete
, který označuje, že byla vrácena všechna data pro aktuální dávku položek.
MW 1.25+
V odpovědi na ukázkový dotaz níže byl zahrnut batchcomplete
, což znamená, že byla vrácena všechna data pro každý ze tří obrázků.
Příští pokračování začne vracet data pro další sadu 3 snímků.
Požadavek GET
Odpověď
{
"batchcomplete": true,
"continue": {
"aicontinue": "20020822143445|Do_You_Want_to_Know_a_Secret_(Beatles_song_-_sample).ogg",
"continue": "-||"
},
"query": {
"allimages": [
{
"name": "Simon_and_Garfunkel_-_Mrs_Robinson.ogg",
"timestamp": "2002-08-04T19:55:17Z",
"url": "https://upload.wikimedia.org/wikipedia/en/6/64/Simon_and_Garfunkel_-_Mrs_Robinson.ogg",
"descriptionurl": "https://en.wikipedia.org/wiki/File:Simon_and_Garfunkel_-_Mrs_Robinson.ogg",
"descriptionshorturl": "https://en.wikipedia.org/w/index.php?curid=67723",
"ns": 6,
"title": "File:Simon and Garfunkel - Mrs Robinson.ogg"
},
{
"name": "Simon_and_Garfunkel_-_Scarborough_Fair.ogg",
"timestamp": "2002-08-04T20:01:36Z",
"url": "https://upload.wikimedia.org/wikipedia/en/c/c1/Simon_and_Garfunkel_-_Scarborough_Fair.ogg",
"descriptionurl": "https://en.wikipedia.org/wiki/File:Simon_and_Garfunkel_-_Scarborough_Fair.ogg",
"descriptionshorturl": "https://en.wikipedia.org/w/index.php?curid=67779",
"ns": 6,
"title": "File:Simon and Garfunkel - Scarborough Fair.ogg"
},
{
"name": "Beatles_please_me.ogg",
"timestamp": "2002-08-22T14:34:00Z",
"url": "https://upload.wikimedia.org/wikipedia/en/e/ee/Beatles_please_me.ogg",
"descriptionurl": "https://en.wikipedia.org/wiki/File:Beatles_please_me.ogg",
"descriptionshorturl": "https://en.wikipedia.org/w/index.php?curid=74826",
"ns": 6,
"title": "File:Beatles please me.ogg"
}
]
}
}
Příklad 6: Generátory
Pokud chcete získat data o sadě stránek, použijte generátory.
Chcete-li například získat data o stránkách v určité kategorii, místo dotazování list=categorymembers
a následného dotazování znovu s pageids
nastaveným na všechny vrácené stránky, zkombinujte dvě volání API do jednoho pomocí generator=categorymembers
.
Při použití modulu seznamu jako generátoru nemusíte specifikovat stránky.
U modulu vlastností byste však měli specifikovat stránky, na kterých bude generátor pracovat.
Chcete-li například načíst všechny stránky, na které odkazuje hlavní stránka, použijte generator=links&titles=Main%20Page
.
Parametry předávané generátoru musí mít předponu g
. Například při použití generator=backlinks
použijte místo bllimit
gbllimit
.
Ukázkový dotaz níže získá odkazy a kategorie pro první tři stránky v hlavním jmenném prostoru začínající "Ba".
Požadavek GET
Odpověď
{
"continue": {
"plcontinue": "14977970|0|Kirkwall_Ba_game",
"continue": "||categories"
},
"query": {
"pages": [
{
"pageid": 98178,
"ns": 0,
"title": "Ba",
"links": [
{
"ns": 0,
"title": "BA"
},
{
"ns": 4,
"title": "Wikipedia:Mainspace"
},
{
"ns": 4,
"title": "Wikipedia:Naming conventions (capitalization)"
},
{
"ns": 4,
"title": "Wikipedia:Protection policy"
},
{
"ns": 4,
"title": "Wikipedia:Redirect"
},
{
"ns": 10,
"title": "Template:R from miscapitalisation"
},
{
"ns": 10,
"title": "Template:R from modification"
},
{
"ns": 10,
"title": "Template:R to disambiguation page"
},
{
"ns": 14,
"title": "Category:Redirects from ambiguous terms"
},
{
"ns": 14,
"title": "Category:Redirects from other capitalisations"
}
],
"categories": [
{
"ns": 14,
"title": "Category:Redirects from ambiguous terms"
},
{
"ns": 14,
"title": "Category:Redirects from other capitalisations"
},
{
"ns": 14,
"title": "Category:Unprintworthy redirects"
}
]
},
{
"pageid": 14977970,
"ns": 0,
"title": "Ba'"
},
{
"pageid": 33351890,
"ns": 0,
"title": "Ba'Al Shem Tov"
}
]
}
}
Pokračující dotazy
Dotazy budou mít často k dispozici více výsledků, než je jen zobrazeno v původním dotazu. (Often this is because a List query's result limit has been reached.) V těchto případech lze v dotazech pokračovat. Podrobnější informace o pokračujících dotazech jsou k dispozici na API:Pokračování .
Možná varování
Varovná zpráva | Způsobí |
---|---|
Nebyla implementována žádná podpora pro speciální stránky. | Vyvolá se, pokud je uveden název ve jmenném prostoru Special: nebo Media:. Na stránky v těchto jmenných prostorech nelze dotazovat. |
Redirect resolution cannot be used together with the revids parameter. Any redirects the revids point to have not been resolved. | Vyvolá se, pokud je parametr redirect použit v dotazu, který specifikuje stránky pomocí revids .
|
Historie parametrů
- v1.34: Představeno
exportschema
- v1.24: Představeno
rawcontinue
(poznámka: raw continuation bylo výchozí chování až do verze 1.26) - v1.21: Představeno
continue
Další poznámky
- Zadání titulů prostřednictvím
titles
nebopageids
je omezeno na 50 titulů na dotaz nebo 500 pro ty s právemapihighlimits
. - Použijte více modulů dotazů dohromady, abyste získali to, co potřebujete, v jednom požadavku, např.
prop=info|revisions&list=backlinks|embeddedin|allimages&meta=userinfo
. - Generátory vždy předávají názvy stránek modulu dotazu. Na rozdíl od seznamů (které mohou ve výchozím nastavení obsahovat další data), generátory by samy neměly vydávat žádné informace, pokud nejsou výslovně požadovány prostřednictvím parametrů dotazu modulu generátoru.
Řešení přesměrování
Přesměrování lze vyřešit automaticky, takže místo daného názvu je vrácen cíl přesměrování.
Jsou-li k dispozici, budou vždy obsahovat atributy from
a to
a mohou obsahovat atribut tofragment
pro přesměrování, které ukazují na konkrétní sekce.
Může dojít k normalizaci i přesměrování.
V případě více přesměrování budou všechna přesměrování vyřešena a v případě kruhového přesměrování nemusí být stránka v sekci 'stránky' (viz také níže).
Rozlišení přesměrování nelze použít v kombinaci s parametrem revids=
nebo s generátorem generujícím revidy. Když to uděláte, vytvoří se varování a nevyřeší se přesměrování pro zadané revize.
Níže uvedené příklady ukazují, jak funguje parametr redirects
.
Výsledek |
---|
{
"batchcomplete": true,
"query": {
"redirects": [
{
"from": "Main page",
"to": "Main Page"
}
],
"pages": [
{
"pageid": 15580374,
"ns": 0,
"title": "Main Page"
}
]
}
}
|
Výsledek |
---|
{
"batchcomplete": true,
"query": {
"pages": [
{
"pageid": 217225,
"ns": 0,
"title": "Main page"
}
]
}
}
|
Výsledek |
---|
{
"batchcomplete": true,
"query": {
"pages": [
{
"pageid": 217225,
"ns": 0,
"title": "Main page",
"contentmodel": "wikitext",
"pagelanguage": "en",
"pagelanguagehtmlcode": "en",
"pagelanguagedir": "ltr",
"touched": "2017-12-17T02:02:05Z",
"lastrevid": 777924062,
"length": 170,
"redirect": true
}
]
}
}
|
Výsledek |
---|
{
"batchcomplete": true,
"query": {
"redirects": [
{
"from": "Wikipedia:!--",
"to": "Wikipedia:Manual of Style",
"tofragment": "Invisible comments"
}
],
"pages": [
{
"pageid": 33697,
"ns": 4,
"title": "Wikipedia:Manual of Style"
}
]
}
}
|
Výsledek |
---|
{
"batchcomplete": true,
"query": {
"normalized": [
{
"fromencoded": false,
"from": "page1",
"to": "Page1"
}
],
"redirects": [
{
"from": "Page1",
"to": "Page2"
},
{
"from": "Page2",
"to": "Page3"
},
{
"from": "Page3",
"to": "Page1"
}
],
"pages": [
{
"ns": 0,
"title": "Page1",
"missing": true
}
]
}
}
|
Související odkazy
- API:Hlavní stránka - Průvodce rychlým startem.
- API:Raw query continue - Obsahuje informace o použití parametru
rawcontinue
.
- Spravováno MediaWiki Interfaces Team.
- Živý chat (IRC): #mediawiki-core připojit se
- Nástroj pro sledování problémů: Phabricator MediaWiki-Action-API (nahlášení problému)