Користувач:BaseBot/Категоризація видів роками опису

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
package cb;

import java.util.regex.Matcher;
import java.util.regex.Pattern;
import net.wikipedia.Wiki;

/**
 *
 * @author Base
 */
public class CB {

    /**
     * @param args the command line arguments
     */
    public static String str = "[[Linnaeus]], [[1758]]";

    public static void main(String[] args) throws Exception {
        Wiki wiki = new Wiki("uk.wikipedia.org");//укрвікіцитати
        wiki.setUserAgent("WPBot 1.0");
        wiki.login("BaseBot", "".toCharArray());//вхід в ВЦ
        wiki.setMarkBot(true);
        wiki.setMarkMinor(true);
        String wrt = "";
        String[] ws = wiki.whatTranscludesHere("Шаблон:Картка:Таксономія", Wiki.MAIN_NAMESPACE);
        for (int i = 5468; i < ws.length; i++) {
            String p = ws[i];
            System.out.println(i+"     "+p);
            String pt = wiki.getPageText(p);
            pt=pt.replaceAll("\\[\\[([Ff]ile|[Ii]mage|[Зз]ображення):", "[[Файл:");
            pt=pt.replaceAll("\\[\\[[Cc]ategory:", "[[Категорія:"); 
            if (pt.contains("binomial_authority")&&(!pt.contains("атегорія:Тварини, описані"))&&(!pt.contains("атегорія:Рослини, описані"))&&(!pt.contains("атегорія:Гриби, описані"))) {
                
                String ys = pt.split("\\s*\\|\\s*binomial( |_)authority")[1].split("\n")[0];//year string
                System.out.println(i+"    "+ys);
                String year = returnYear(ys) + "";  // 0
                if (!"-1".equals(year)) {
                    System.out.println(i+"     "+year);

                    if (pt.contains("regnum")) {
                        
                        String rs = pt.split("\\s*\\|\\s*regnum")[1].split("\n")[0];//regnum string
                        String regnum = returnRegnum(rs) + "";  // 0
                        System.out.println(i+"     "+regnum);
                        if(!"".equals(regnum)){
                          
                            String catname="Категорія:"+regnum+", описані "+year;
                            System.out.println(i+"    "+catname);
                            pt=pt.replaceFirst("\\[\\[Категорія:", "[["+catname+"]]\n[[Категорія:");//
                            wiki.edit(p, pt, "Автоматично додано "+catname);
                        }else{}
                        
                    } else {
                    }


                } else {
                }
            } else {
            }
        }

        //wiki.logout();


    }

    public static Integer returnYear(String inst) {
        String exs = "";
        for (int z = 0; z < inst.length(); z++) {
            char ct = inst.charAt(z);
            String sct = String.valueOf(ct);
            //System.out.println(sct);
            if ("1".equals(sct) || "2".equals(sct) || "3".equals(sct) || "4".equals(sct) || "5".equals(sct) || "6".equals(sct) || "7".equals(sct) || "8".equals(sct) || "9".equals(sct) || "0".equals(sct)) {
                exs += sct;
                //System.out.println("sct = " + sct);
            } else {
                if (!"".equals(exs)) {
                    return Integer.parseInt(exs);
                } else {
                }

            }

        }

        if (!"".equals(exs)) {
            return Integer.parseInt(exs);
        } else {
            return -1;
        }
    }

    public static String returnRegnum(String inst) {
        String retstr = "";
        Boolean isViridiplantae = inst.contains("[[Рослини]]")|| inst.contains("[[Зелені рослини]]")|| inst.contains("[[Зелені рослини]] (Viridiplantae)");
        Boolean isAnimalia = inst.contains("[[Тварини]]") || inst.contains("[[Animalia]]") || inst.contains("[[Тварини]] (Animalia або Metazoa)") || inst.contains("[[Тварини]] (Metazoa)");
        Boolean isProtista = inst.contains("[[Найпростіші]]") || inst.contains("[[Найпростіші]] (Protista)");
        Boolean isFungi = inst.contains("[[Гриби]]") || inst.contains("[[Гриби]] (Fungi)");
        System.out.println("isViridiplantae="+isViridiplantae);
        System.out.println("isAnimalia="+isAnimalia);
        System.out.println("isProtista="+isProtista);
        System.out.println("isFungi="+isFungi);
        if (isViridiplantae) {
            return "Рослини";
        } else {
        }


        if (isAnimalia) {
            return "Тварини";
        } else {
        }

        if (isProtista) {
            return "Тварини";
        } else {
        }

        if (isFungi) {
            return "Гриби";
        } else {
        }

        return "";
    }
}