Get all categories of "Albert Einstein" on English Wikipedia
letmut api = mediawiki::api::Api::new("https://en.wikipedia.org/w/api.php").unwrap();// Query parameterslet params = api.params_into(&[("action","query"),("prop","categories"),("titles","Albert Einstein"),("cllimit","500"),]);// Run query; this will automatically continue if more results are available, and merge all results into onelet res = api.get_query_api_json_all(¶ms).unwrap();// Parse resultlet categories:Vec<&str> = res["query"]["pages"].as_object().unwrap().iter().flat_map(|(_page_id, page)| {
page["categories"].as_array().unwrap().iter().map(|c| c["title"].as_str().unwrap())}).collect();dbg!(&categories);
Edit the Wikidata Sandbox Item (as a bot)
letmut api = mediawiki::api::Api::new("https://www.wikidata.org/w/api.php").unwrap();
api.login("MY BOT USER NAME","MY BOT PASSWORD").unwrap();let token = api.get_edit_token().unwrap();let params = api.params_into(&[("action","wbeditentity"),("id","Q4115189"),("data",r#"{"claims":[{"mainsnak":{"snaktype":"value","property":"P1810","datavalue":{"value":"ExampleString","type":"string"}},"type":"statement","rank":"normal"}]}"#),("token",&token),]);let res = api.post_query_api_json(¶ms).unwrap();dbg!(res);
Edit via OAuth
let json = json!({"g_consumer_key":"YOUR_CONSUMER_KEY","g_token_key":"YOUR_TOKEN_KEY"});let oauth = mediawiki::api::OAuthParams::new_from_json(&json);letmut api = mediawiki::api::Api::new("https://www.wikidata.org/w/api.php").unwrap();
api.set_oauth(Some(oauth));
Query Wikidata using SPARQL
let api = mediawiki::api::Api::new("https://www.wikidata.org/w/api.php").unwrap();// Will determine the SPARQL API URL via site info datalet res = api.sparql_query("SELECT ?q ?qLabel ?fellow_id { ?q wdt:P31 wd:Q5 ; wdt:P6594 ?fellow_id . SERVICE wikibase:label { bd:serviceParam wikibase:language '[AUTO_LANGUAGE],en'. } }").unwrap();println!("{}", ::serde_json::to_string_pretty(&res).unwrap());