Пример #1
0
 /// <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);
        }
Пример #3
0
 /// <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."));
 }
Пример #4
0
	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;
	}