Користувач: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 "";
}
}