Beispiel #1
0
        /// <summary>
        /// Creates a new instance of <see cref="WikiDataBot"/>.
        /// </summary>
        /// <param name="helper">Wiki data helper.</param>
        /// <exception cref="ArgumentNullException"><paramref name="helper"/> is <c>null</c>.</exception>
        public WikiDataBot(WikiDataHelper helper)
        {
            if (helper == null)
            {
                throw new ArgumentNullException("helper");
            }

            _helper  = helper;
            _runInfo = new Dictionary <WikiDataState, Int32>();

            _availableTasks = new List <WikiDataTaskInfo>();
            WikiDataTaskDelegate setDescriptionEnglish = (IEnumerable <Entity> entities, StringBuilder collisionInfo, Boolean overrideData) => SetDescription(Language.English, entities, collisionInfo, overrideData);
            WikiDataTaskDelegate setDescriptionThai    = (IEnumerable <Entity> entities, StringBuilder collisionInfo, Boolean overrideData) => SetDescription(Language.Thai, entities, collisionInfo, overrideData);
            WikiDataTaskDelegate setDescriptionGerman  = (IEnumerable <Entity> entities, StringBuilder collisionInfo, Boolean overrideData) => SetDescription(Language.German, entities, collisionInfo, overrideData);

            _availableTasks.Add(new WikiDataTaskInfo("Set description [en]", setDescriptionEnglish));
            _availableTasks.Add(new WikiDataTaskInfo("Set description [de]", setDescriptionGerman));
            _availableTasks.Add(new WikiDataTaskInfo("Set description [th]", setDescriptionThai));
            WikiDataTaskDelegate setLabelEnglish = (IEnumerable <Entity> entities, StringBuilder collisionInfo, Boolean overrideData) => SetLabel(Language.English, entities, collisionInfo, overrideData);
            WikiDataTaskDelegate setLabelGerman  = (IEnumerable <Entity> entities, StringBuilder collisionInfo, Boolean overrideData) => SetLabel(Language.German, entities, collisionInfo, overrideData);
            WikiDataTaskDelegate setLabelThai    = (IEnumerable <Entity> entities, StringBuilder collisionInfo, Boolean overrideData) => SetLabel(Language.Thai, entities, collisionInfo, overrideData);

            _availableTasks.Add(new WikiDataTaskInfo("Set label [en]", setLabelEnglish));
            _availableTasks.Add(new WikiDataTaskInfo("Set label [de]", setLabelGerman));
            _availableTasks.Add(new WikiDataTaskInfo("Set label [th]", setLabelThai));
            _availableTasks.Add(new WikiDataTaskInfo("Set Thai abbreviation", SetThaiAbbreviation));
            _availableTasks.Add(new WikiDataTaskInfo("Set country", SetCountry));
            _availableTasks.Add(new WikiDataTaskInfo("Set is in administrative unit", SetIsInAdministrativeUnit));
            WikiDataTaskDelegate setInstanceOf = (IEnumerable <Entity> entities, StringBuilder collisionInfo, Boolean overrideData) => SetTypeOfAdministrativeUnit(entities, collisionInfo, overrideData);

            // _availableTasks.Add(new WikiDataTaskInfo("Set type of administrative unit", setTypeOfAdministrativeUnit));
            _availableTasks.Add(new WikiDataTaskInfo("Set instance of", setInstanceOf));
            _availableTasks.Add(new WikiDataTaskInfo("Set OpenStreetMap", SetOpenStreetMap));
            SetContainsSubdivisionTask = new WikiDataTaskInfo("Set ContainsSubdivisions", SetContainsSubdivisions);
            _availableTasks.Add(SetContainsSubdivisionTask);
            SetLocatorMapTask = new WikiDataTaskInfo("Set locator map", SetLocatorMap);
            _availableTasks.Add(SetLocatorMapTask);
            _availableTasks.Add(new WikiDataTaskInfo("Set TIS 1099", SetGeocode));
            _availableTasks.Add(new WikiDataTaskInfo("Set GND reference", SetGnd));
            _availableTasks.Add(new WikiDataTaskInfo("Set Postal code", SetPostalCode));
            _availableTasks.Add(new WikiDataTaskInfo("Set Location", SetLocation));
            WikiDataTaskDelegate setCensus2010 = (IEnumerable <Entity> entities, StringBuilder collisionInfo, Boolean overrideData) => SetPopulationData(entities, collisionInfo, overrideData, PopulationDataSourceType.Census, 2010);

            _availableTasks.Add(new WikiDataTaskInfo("Set Census 2010", setCensus2010));
            WikiDataTaskDelegate setDopa2014 = (IEnumerable <Entity> entities, StringBuilder collisionInfo, Boolean overrideData) => SetPopulationData(entities, collisionInfo, overrideData, PopulationDataSourceType.DOPA, 2014);

            _availableTasks.Add(new WikiDataTaskInfo("Set DOPA population 2014", setDopa2014));
            WikiDataTaskDelegate setCensus2000 = (IEnumerable <Entity> entities, StringBuilder collisionInfo, Boolean overrideData) => SetPopulationData(entities, collisionInfo, overrideData, PopulationDataSourceType.Census, 2000);

            _availableTasks.Add(new WikiDataTaskInfo("Set Census 2000", setCensus2000));
            WikiDataTaskDelegate setCensus1990 = (IEnumerable <Entity> entities, StringBuilder collisionInfo, Boolean overrideData) => SetPopulationData(entities, collisionInfo, overrideData, PopulationDataSourceType.Census, 1990);

            _availableTasks.Add(new WikiDataTaskInfo("Set Census 1990", setCensus1990));
            _availableTasks.Add(new WikiDataTaskInfo("Set Slogan", SetSlogan));
            _availableTasks.Add(new WikiDataTaskInfo("Set native label", SetNativeLabel));
            _availableTasks.Add(new WikiDataTaskInfo("Set bounding entities", SetShareBorderWith));
        }
Beispiel #2
0
        private void btnLogin_Click(object sender, EventArgs e)
        {
            var api = OpenConnection();

            _helper = new WikiDataHelper(api);
            _bot    = new WikiDataBot(_helper);

            foreach (var activity in _bot.AvailableTasks)
            {
                cbxActivity.Items.Add(activity);
            }
            btnRun.Enabled            = true;
            btnLogout.Enabled         = true;
            btnLogin.Enabled          = false;
            btnCountInterwiki.Enabled = true;
            RefreshAmphoeSelection();
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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;
        }