示例#1
0
        public void ReloadAllWikis()
        {
            Thread.CurrentThread.Name = "ReloadAll";

            Program.SendMessageF(Meebey.SmartIrc4net.SendType.Message, currentBatchReloadChannel,
                                 "Request to reload all " + this.Count.ToString() + " wikis accepted.",
                                 Meebey.SmartIrc4net.Priority.High);

            foreach (DictionaryEntry dicent in this)
            {
                Project prj = (Project)dicent.Value;
                prj.RetrieveWikiDetails();
                Thread.Sleep(600);
            }

            // Dump new settings:
            DumpToFile();

            Program.SendMessageF(Meebey.SmartIrc4net.SendType.Message, currentBatchReloadChannel,
                                 "Reloaded all wikis. Phew, give the Wikimedia servers a break :(",
                                 Meebey.SmartIrc4net.Priority.High);
        }
示例#2
0
        /// <summary>
        /// Adds a new Project to the ProjectList. Remember to dump the configuration afterwards by calling dumpToFile()
        /// </summary>
        /// <param name="projectName">Name of the project (e.g., en.wikipedia) to add</param>
        /// <param name="interwiki">Interwiki link (e.g., it:s: -- can be empty string)</param>
        public void AddNewProject(string projectName, string interwiki)
        {
            if (interwiki == "")
            {
                // Try to guess interwiki

                if (!projectName.Contains("."))
                {
                    // Cannot guess; probably something like "mediawiki"
                    throw new Exception((String)Program.msgs["20004"]);
                }

                string langPortion = projectName.Split(new char[] { '.' }, 2)[0];
                string projPortion = projectName.Split(new char[] { '.' }, 2)[1];
                switch (projPortion)
                {
                case "wikipedia":
                    interwiki = langPortion + ":";
                    break;

                case "wiktionary":
                    interwiki = "wikt:" + langPortion + ":";
                    break;

                case "wikibooks":
                    interwiki = "b:" + langPortion + ":";
                    break;

                case "wikinews":
                    interwiki = "n:" + langPortion + ":";
                    break;

                case "wikisource":
                    interwiki = "s:" + langPortion + ":";
                    break;

                case "wikiquote":
                    interwiki = "q:" + langPortion + ":";
                    break;

                case "wikiversity":
                    interwiki = "v:" + langPortion + ":";
                    break;

                default:
                    throw new Exception((String)Program.msgs["20004"]);
                }
            }

            if (this.ContainsKey(projectName))
            {
                throw new Exception(Program.GetFormatMessage(16400, projectName));
            }

            logger.InfoFormat("Registering new project {0} with interwiki {1}", projectName, interwiki);
            Project prj = new Project();

            prj.projectName   = projectName;
            prj.interwikiLink = interwiki;
            switch (projectName)
            {
            case "mediawiki.wikipedia":
                prj.rooturl = "https://www.mediawiki.org/";
                break;

            case "outreach.wikipedia":
                prj.rooturl = "https://outreach.wikimedia.org/";
                break;

            case "testwikidata.wikipedia":
                prj.rooturl = "https://test.wikidata.org/";
                break;

            case "wikidata.wikipedia":
                prj.rooturl = "https://www.wikidata.org/";
                break;

            default:
                prj.rooturl = "https://" + projectName + ".org/";
                break;
            }
            prj.RetrieveWikiDetails();
            this.Add(projectName, prj);
            // Join the new channel
            logger.InfoFormat("Joining RCReader channel: #{0}", projectName);
            Program.rcirc.rcirc.RfcJoin("#" + projectName);

            // Dump new settings
            DumpToFile();
        }