private Dictionary <Entity, String> RetrieveWikpediaLinks(IEnumerable <Entity> entities, Language language) { var result = new Dictionary <Entity, String>(); if (_api == null) { _api = new WikibaseApi("https://www.wikidata.org", "TambonBot"); _helper = new WikiDataHelper(_api); } var actualEntities = entities.Select(x => x.CurrentEntity(_country)); foreach (var entity in actualEntities.Where(x => x.wiki != null && !String.IsNullOrEmpty(x.wiki.wikidata))) { var item = _helper.GetWikiDataItemForEntity(entity); if (item != null) { var links = item.getSitelinks(); String languageLink; String wikiIdentifier = String.Empty; switch (language) { case Language.German: wikiIdentifier = WikiBase.SiteLinkGermanWikipedia; break; case Language.English: wikiIdentifier = WikiBase.SiteLinkEnglishWikipedia; break; case Language.Thai: wikiIdentifier = WikiBase.SiteLinkThaiWikipedia; break; } if (item.getSitelinks().TryGetValue(wikiIdentifier, out languageLink)) { result[entity] = languageLink; } } } return(result); }
private void btnTest_Click(object sender, EventArgs e) { //WikibaseApi api = new WikibaseApi("https://test.wikidata.org", "TambonBot"); //// Login with username and password //var username = ConfigurationManager.AppSettings["WikiDataUsername"]; //var password = ConfigurationManager.AppSettings["WikiDataPassword"]; //api.login(username, password); //var provider = new EntityProvider(api); //var entity = provider.getEntityFromId(new EntityId("q", 281)); //var statement = entity.Claims.First() as Statement; //var qualifier = new Qualifier(statement, SnakType.Value, new EntityId("P11"), new StringValue("abc")); //qualifier.Save("Qualifier save"); var tis1099thesaban = new List <UInt32>() { 1195, 1196, 1197, 1198, 1199, 1295, 1296, 1297, 1298, 1299, 1396, 1397, 1398, 1399, 1496, 1497, 1498, 1499, 1598, 1599, 1697, 1698, 1699, 1799, 1898, 1899, 1996, 1997, 1998, 1999, 2093, 2094, 2095, 2096, 2097, 2098, 2099, 2197, 2198, 2199, 2297, 2298, 2299, 2399, 2498, 2499, 2598, 2599, 2699, 2798, 2799, 3096, 3097, 3098, 3099, 3198, 3199, 3299, 3399, 3497, 3498, 3499, 3599, 3699, 3799, 3999, 4096, 4097, 4098, 4099, 4199, 4299, 4399, 4499, 4599, 4699, 4799, 4899, 4999, 5099, 5199, 5299, 5398, 5399, 5499, 5599, 5699, 5799, 5899, 6097, 6098, 6099, 6199, 6299, 6398, 6399, 6498, 6499, 6599, 6697, 6698, 6699, 6798, 6799, 7097, 7098, 7099, 7198, 7199, 7298, 7299, 7399, 7497, 7498, 7499, 7598, 7599, 7698, 7699, 7798, 7799, 8097, 8098, 8099, 8199, 8298, 8299, 8398, 8399, 8497, 8498, 8499, 8599, 8698, 8699, 9096, 9097, 9098, 9099, 9199, 9297, 9298, 9299, 9399, 9498, 9499, 9598, 9599, 9698, 9699, }; var entites = allEntities.Where(x => tis1099thesaban.Contains(x.geocode)); foreach (var entity in entites) { var item = _helper.GetWikiDataItemForEntity(entity); if (_helper.GeocodeCorrect(item, entity) == WikiDataState.NotSet) { var statement = _helper.SetGeocode(item, entity, false); if (statement != null) { statement.save(_helper.GetClaimSaveEditSummary(statement)); var snak = new Snak(SnakType.Value, new EntityId(WikiBase.PropertyIdStatedIn), new EntityIdValue(new EntityId(WikiBase.ItemSourceTIS1099BE2548))); var reference = statement.CreateReferenceForSnak(snak); reference.Save(_helper.GetReferenceSaveEditSummary(reference)); } } } }
private Dictionary<Entity, String> RetrieveWikpediaLinks(IEnumerable<Entity> entities, Language language) { var result = new Dictionary<Entity, String>(); var api = new WikibaseApi("https://www.wikidata.org", "TambonBot"); var helper = new WikiDataHelper(api); foreach ( var entity in entities.Where(x => x.wiki != null && !String.IsNullOrEmpty(x.wiki.wikidata)) ) { var item = helper.GetWikiDataItemForEntity(entity); if ( item != null ) { var links = item.getSitelinks(); String languageLink; String wikiIdentifier = String.Empty; switch ( language ) { case Language.German: wikiIdentifier = "dewiki"; break; case Language.English: wikiIdentifier = "enwiki"; break; case Language.Thai: wikiIdentifier = "thwiki"; break; } if ( item.getSitelinks().TryGetValue(wikiIdentifier, out languageLink) ) { result[entity] = languageLink; } } } return result; }
/// <summary> /// Counts the links to the various Wikimedia projects. /// </summary> /// <param name="entities">Entities to check.</param> /// <returns>Number of sitelinks by name of the wiki.</returns> public Dictionary <String, Int32> CountSiteLinks(IEnumerable <Entity> entities, StringBuilder collisionData) { var result = new Dictionary <String, Int32>(); result["Orphan"] = 0; result["Deleted"] = 0; // Create a new EntityProvider instance and pass the api created above. EntityProvider entityProvider = new EntityProvider(_helper.Api); foreach (var entity in entities) { // Get an entity by searching for the id var item = _helper.GetWikiDataItemForEntity(entity); if (item != null) { var links = item.getSitelinks(); if (!links.Any()) { result["Orphan"]++; if (collisionData != null) { collisionData.AppendFormat("Orphan: {0} - {1} ({2})", entity.wiki.wikidata, entity.english, entity.geocode); collisionData.AppendLine(); } } foreach (var key in links.Keys) { if (!result.ContainsKey(key)) { result[key] = 0; } result[key]++; } } else { result["Deleted"]++; if (collisionData != null) { collisionData.AppendFormat("Deleted: {0} - {1} ({2})", entity.wiki.wikidata, entity.english, entity.geocode); collisionData.AppendLine(); } } } return(result); }