Redaktor:AbdullBot/template replace

Z Wikipédie

 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");
        }
 }