(* List of Russian names from http://wikigrib.ru *) maintainRussianWikigrib := ( url = "http://wikigrib.ru/vidy/page/NN/"; nmax0 = 222; dirwikigrib = ToFileName[{dirwork, "data", "names", "wikigrib"}]; textconditwg = StringFreeQ[#, "\:0421\:0442\:0440\:0430\:043d\:0438\:0446\:0430 \:043d\ \:0435 \:043d\:0430\:0439\:0434\:0435\:043d\:0430"] &; match = RegularExpression[ "(?i)(?s) rel=\"bookmark\">\\s*(.{3,50}?)\\s*</a></h3>\\s*<div class=\"greycat\">Lat: <h4><span lang=\"la\" xml:lang=\"la\">\\s*(.{3,50}?)\\s*</span></h4></div>" <> "\\s*<div class=\"greycat\"><i>\:0421\:0438\:043d\:043e\:043d\:0438\:043c\:044b:</i>\\s*(.{3,222}?)\\s*</div>"]; checkdir1[dirwikigrib]; SetDirectory[dirwikigrib]; filen = "wikigribNN.htm"; filenmax = "nmax.m"; If[FileType[filenmax] === File, Get[filenmax], nmax = 0; Do[Print[n]; file = ToFileName[dirwikigrib, StringReplace[filen, "NN" -> ToString[n]]]; urlsave[StringReplace[url, "NN" -> ToString[n]], file, textconditwg]; If[FileType[file] === File, nmax = n, Print["Wikigrib: file was not loaded: n = ", n, ", nmax = ", nmax]; Break[]], {n, nmax0}]; Save[filenmax, nmax]; ]; data = Join @@ Table[ file = ToFileName[dirwikigrib, StringReplace[filen, "NN" -> ToString[n]]]; checkfile[file]; text = Import[file, "Text"]; datan = StringCases[text, match -> {"$1", "$2", "$3"}]; datan = Table[ {rusname, latname, syns} = dat; syn0 = stringtrim /@ StringSplit[rusname, {"(", ")"}]; If[StringTake[syns, -1] === ".", syns = StringDrop[syns, -1]]; syns = stringtrim /@ StringSplit[syns, ","]; syns = Join[syn0, Select[syns, !MemberQ[syn0, #]&]]; syns = Select[syns, (ifrussianlett[#] && !ifenglishlett[#])&]; noPrint[latname, " -- ", ToString[syns]]; {latname, syns}, {dat, datan}], {n, nmax}]; Print["Found ", Length[data], " names in Wikigrib -> rusnamesWikigrib"]; printnames[data // TableForm]; rusnamesWikigrib = updatenames[data]; );