private void SetGeocode(IEnumerable <Entity> entities, StringBuilder collisionInfo, Boolean overrideData) { if (entities == null) { throw new ArgumentNullException("entities"); } ClearRunInfo(); foreach (var entity in entities) { var item = _helper.GetWikiDataItemForEntity(entity); if (item == null) { _runInfo[WikiDataState.ItemNotFound]++; collisionInfo.AppendFormat("{0}: {1} was deleted!", entity.wiki.wikidata, entity.english); } else { var state = _helper.GeocodeCorrect(item, entity); _runInfo[state]++; if (state == WikiDataState.WrongValue) { collisionInfo.AppendFormat("{0}: {1} has wrong geocode id", item.id, entity.english); collisionInfo.AppendLine(); } if (state != WikiDataState.Valid) { var statement = _helper.SetGeocode(item, entity, overrideData); if (statement != null) { statement.save(_helper.GetClaimSaveEditSummary(statement)); } } // TODO: Sources } } }
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)); } } } }