/// <summary>Gets all MediaWiki messages and dumps them to XML file. This function is /// obsolete, it won't work with current versions of MediaWiki software.</summary> /// <param name="forceLoad">If true, the messages are updated unconditionally. Otherwise /// the messages are updated only if they are outdated.</param> public void GetMediaWikiMessages(bool forceLoad) { if (messages == null) messages = new PageList(this); string filePathName = "Cache" + Path.DirectorySeparatorChar + HttpUtility.UrlEncode(site.Replace("://", ".")) + ".xml"; if (forceLoad == false && File.Exists(filePathName) && (DateTime.Now - File.GetLastWriteTime(filePathName)).Days <= 90) { messages.FillAndLoadFromXMLDump(filePathName); return; } Bot.LogEvent(Bot.Msg("Updating MediaWiki messages dump. Please, wait...")); PageList pl = new PageList(this); pl.FillFromAllPages("!", 8, false, 100000); File.Delete(filePathName); pl.SaveXMLDumpToFile(filePathName); messages.FillAndLoadFromXMLDump(filePathName); Bot.LogEvent(Bot.Msg("MediaWiki messages dump updated successfully.")); }
/// <summary>Gets all MediaWiki messages and dumps it to XML file.</summary> /// <param name="forceLoad">If true, the messages are forced to be updated.</param> public void GetMediaWikiMessages(bool forceLoad) { if (forceLoad == false) messages = new PageList(this); string filePathName = "Cache/" + HttpUtility.UrlEncode(site.Replace('/','_').Replace(':','_'))+ ".xml"; if (forceLoad == false && File.Exists(filePathName) && (DateTime.Now - File.GetLastWriteTime(filePathName)).Days <= 90) { messages.FillAndLoadFromXMLDump(filePathName); return; } Console.WriteLine("Updating MediaWiki messages dump. Please, wait..."); PageList pl = new PageList(this); pl.FillFromAllPages("!", 8, false, 10000); File.Delete(filePathName); pl.SaveXMLDumpToFile(filePathName); Console.WriteLine("MediaWiki messages dump updated successfully."); messages.FillAndLoadFromXMLDump(filePathName); }
/// <summary>Gets all modified MediaWiki messages (to be more precise, all messages that are /// contained in database), loads them into site.messages PageList (both titles and texts) /// and dumps them to XML file.</summary> /// <param name="forceLoad">If true, the messages are updated unconditionally. Otherwise /// the messages are updated only if they are outdated.</param> public void GetModifiedMediaWikiMessages(bool forceLoad) { if (messages == null) messages = new PageList(this); string filePathName = "Cache" + Path.DirectorySeparatorChar + HttpUtility.UrlEncode(site.Replace("://", ".")) + ".mw_db_msg.xml"; if (forceLoad == false && File.Exists(filePathName) && (DateTime.Now - File.GetLastWriteTime(filePathName)).Days <= 90) { messages.FillAndLoadFromXMLDump(filePathName); return; } Console.WriteLine(Bot.Msg("Updating MediaWiki messages dump. Please, wait...")); PageList pl = new PageList(this); bool prevBotQueryState = botQuery; botQuery = false; // backward compatibility requirement pl.FillFromAllPages("!", 8, false, 100000); botQuery = prevBotQueryState; File.Delete(filePathName); pl.SaveXMLDumpToFile(filePathName); messages.FillAndLoadFromXMLDump(filePathName); Console.WriteLine(Bot.Msg("MediaWiki messages dump updated successfully.")); }
public static int Main() { // Se registra en la página y configura el bot Site welp = iniciar(); leerOpciones(Environment.GetCommandLineArgs()); if (welp == null) return 1; // Cuenta del número de ediciones int cuenta = 0; // Obtiene todos los trabajos (de momento en el espacio de nombre Principal) PageList todas = new PageList(welp); todas.FillFromAllPages("Trabajo:", 0, false, Int32.MaxValue, "Trabajo;"); foreach (Page pag in todas) { pag.Load(); // Si ya hay indicación de curso no hace nada List<string> cats = pag.GetCategories(); if (cats.Exists(patronCCurso.IsMatch)) continue; // Para averiguar el curso obtiene la fecha de la // primera edición PageList hist = new PageList(welp); hist.FillFromPageHistory(pag.title, Int32.MaxValue); DateTime fc = hist[hist.Count()-1].timestamp; // Distingue en base a ella el curso int año = fc.Year; // Si es antes del 29 de septiembre (aprox) es que es // del curso que empieza en el año anterior if (fc.Month < 9 || fc.Month == 9 && fc.Day < 29) año--; string curso = "Curso " + año + "-" + (año + 1); // Muestra información por consola Console.Error.WriteLine("«" + pag.title + "» creado en " + fc + " => " + curso); cuenta++; if (!simulado) { pag.AddToCategory(curso); pag.Save("bot: categorización de trabajos por curso", true); } } // Resumen de las operaciones Console.Error.WriteLine("El bot " + (simulado ? "hubiera realizado " : "realizó ") + cuenta + " ediciones."); return 0; }