Redaktor:AbdullBot/template replace

z Wikipédie, slobodnej encyklopédie
Skočit na navigaci Skočit na vyhledávání
 import java.util.LinkedHashMap;
 
 import jwikipediabot.JWikipediaBotException;
 import jwikipediabot.Log;
 import jwikipediabot.Sablona;
 import jwikipediabot.util;
 
 public class AbdullBot
 {
 	private static Log log;
 
 	public static void main(String args[])
 	{
 		try
 		{
 			// vytvorenie log suboru
 			log = new Log("C:\\Temp\\AbdullBot.log", Log.DEFAULT_DATETIME_FORMAT);
 			log.writeln("=== START ===");
 			
 			// vytvorenie bota
 			jwikipediabot bot = jwikipediabot.connect("AbdullBot", "heslo");
 			log.writeln("Bot pripojeny na wiki.");
 
 			// ktoré články upravovať
 			String[] articles = {
 					"Michail Alexandrovič Bakunin",
 					"Johann Bernhard Basedow", 
 					"Pierre Bayle",
 					"Simone de Beauvoir", 
 					"Max Bense",
 					"Jeremy Bentham",
 					"Henri Bergson",
 					"George Berkeley",
 					"Eduard Bernstein" 
 			};
 			
 			vymenaSablon(bot, articles);
 			
 			log.writeln("=== END ===");
 		}
 		catch (Exception e)
 		{
 			e.printStackTrace();
 		}
 
 		log.close();
 	}
 	
 	private static void vymenaSablon(jwikipediabot bot, String[] articles)
 	{
 		String old_name = "Biografia";
 		String new_name = "Infobox Osobnosť";
 		
 		// vzťah parametrov v starej a novej šablóne
 		LinkedHashMap paramNames = new LinkedHashMap();
 		paramNames.put("názov", "Meno");
 		paramNames.put("meno_obrázku", "Portrét");
 		paramNames.put("popis_obrázku", "Popis");
 		paramNames.put("dátum_narodenia", "Dátum narodenia");
 		paramNames.put("miesto_narodenia", "Miesto narodenia");
 		paramNames.put("dátum_úmrtia", "Dátum úmrtia");
 		paramNames.put("miesto_úmrtia", "Miesto úmrtia");
 		
 		log.writeln("Vymena sablon '" + old_name + "' -> '" + new_name + " (" + paramNames.size() + " clankov na upravu).");
 		
 		for (int ii = 0; ii < articles.length; ii++)
 		{
 			try
 			{
 				// text článku
 				String article_text = bot.readArticle(articles[ii]);
 				
 				// Nájdeme v článku šablónu
 				Sablona sablFrom = Sablona.createFromArticle(article_text, old_name);
 				if (!sablFrom.isFounded())
 				{
 					log.writeln("  " + articles[ii] + " - Nema sablonu");
 					continue;
 				}
 				// Vytiahneme parametre z existujúcej šablóny a pretransformujeme ich na
 				// parametre novej šablóny
 				LinkedHashMap paramsTo = Sablona.simpleRenameParams(paramNames, sablFrom.getParams());
 				
 				// Vytvoríme novú šablónu z parametrov
 				Sablona sablTo = Sablona.createFromParams(new_name, paramsTo);
 	
 				// Nový text článku (výmena šablóny)
 				article_text = article_text.substring(0, sablFrom.getPosStart())
 							 + sablTo.toString()
 							 + article_text.substring(sablFrom.getPosEnd());
 	
 				// Uloženie článku
 				bot.writeArticle(articles[ii], article_text, "Výmena šablóny ('" + old_name + "' -> '" +new_name + "')", true);
 				log.writeln("  " + articles[ii] + " - OK");
 			}
 			catch (JWikipediaBotException e)
 			{
 				log.writeln("  " + articles[ii] + " - " + e.getMessage());
 			}
 		}
 		
 		log.writeln("Koniec vymeny sablon");
 	}
 }