Get all categories of "Albert Einstein" on English Wikipedia: ```rust let mut api = mediawiki::api::Api::new("https://en.wikipedia.org/w/api.php").unwrap();
// Query parameters let params: HashMap<_, _> = vec![ ("action".tostring(), "query".tostring()), ("prop".tostring(), "categories".tostring()), ("titles".tostring(), "Albert Einstein".tostring()), ("cllimit".tostring(), "500".tostring()), ] .into_iter() .collect();
// Run query; this will automatically continue if more results are available, and merge all results into one let res = api.getqueryapijsonall(¶ms).unwrap();
// Parse result let categories: Vec<&str> = res["query"]["pages"] .asobject() .unwrap() .iter() .flatmap(|(pageid, page)| { page["categories"] .asarray() .unwrap() .iter() .map(|c| c["title"].asstr().unwrap()) }) .collect();
dbg!(&categories); ```
Edit the Wikidata Sandbox Item (as a bot): ```rust let mut api = mediawiki::api::Api::new("https://www.wikidata.org/w/api.php"); api.login("MY BOT USER NAME", "MY BOT PASSWORD").unwrap();
let token = api.getedittoken().unwrap();
let params: HashMap<_, _> = vec![
("action", "wbeditentity"),
("id", "Q4115189"),
("data",r#"{"claims":[{"mainsnak":{"snaktype":"value","property":"P1810","datavalue":{"value":"ExampleString","type":"string"}},"type":"statement","rank":"normal"}]}"#),
("token", &token),
]
.intoiter()
.collect();
let res = api.postqueryapijson(¶ms).unwrap();
Query Wikidata using SPARQL:
rust
let mut api = mediawiki::api::Api::new("https://www.wikidata.org/w/api.php"); // Will determine the SPARQL API URL via site info data
let res = api.sparqlquery ( "SELECT ?q ?qLabel ?fellowid { ?q wdt:P31 wd:Q5 ; wdt:P6594 ?fellowid . SERVICE wikibase:label { bd:serviceParam wikibase:language '[AUTOLANGUAGE],en'. } }" ).unwrap() ;
println!("{}", ::serdejson::tostring_pretty(&res).unwrap());
```