Changeset 31852 in osm for applications/editors/josm/plugins/wikipedia/src/org
- Timestamp:
- 2015-12-22T21:35:16+01:00 (9 years ago)
- Location:
- applications/editors/josm/plugins/wikipedia/src/org/wikipedia
- Files:
-
- 1 added
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
applications/editors/josm/plugins/wikipedia/src/org/wikipedia/WikipediaApp.java
r31851 r31852 16 16 import java.util.Objects; 17 17 import java.util.Scanner; 18 import java.util.TreeMap; 18 19 import java.util.regex.Matcher; 19 20 import java.util.regex.Pattern; … … 32 33 import org.openstreetmap.josm.tools.Utils.Function; 33 34 import org.w3c.dom.Document; 35 import org.w3c.dom.Node; 34 36 import org.w3c.dom.NodeList; 35 37 … … 164 166 } 165 167 168 /** 169 * Returns a map mapping wikipedia articles to wikidata ids. 170 */ 171 static Map<String, String> getWikidataForArticles(String wikipediaLang, Collection<String> articles) { 172 try { 173 final String url = "https://www.wikidata.org/w/api.php" + 174 "?action=wbgetentities" + 175 "&props=sitelinks" + 176 "&sites=" + wikipediaLang + "wiki" + 177 "&sitefilter=" + wikipediaLang + "wiki" + 178 "&format=xml" + 179 "&titles=" + Utils.join("|", Utils.transform(articles, new Function<String, String>() { 180 @Override 181 public String apply(String x) { 182 return Utils.encodeUrl(x); 183 } 184 })); 185 Main.info("Wikipedia: GET " + url); 186 final Map<String, String> r = new TreeMap<>(); 187 try (final InputStream in = Utils.openURL(new URL(url))) { 188 final Document xml = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(in); 189 final NodeList nodes = (NodeList) XPathFactory.newInstance().newXPath().compile("//entity").evaluate(xml, XPathConstants.NODESET); 190 for (int i = 0; i < nodes.getLength(); i++) { 191 final Node node = nodes.item(i); 192 final String wikidata = (String) XPathFactory.newInstance().newXPath().compile("./@id").evaluate(node, XPathConstants.STRING); 193 final String wikipedia = (String) XPathFactory.newInstance().newXPath().compile("./sitelinks/sitelink/@title").evaluate(node, XPathConstants.STRING); 194 r.put(wikipedia, wikidata); 195 } 196 } 197 return r; 198 } catch (Exception ex) { 199 throw new RuntimeException(ex); 200 } 201 } 202 166 203 static Collection<WikipediaLangArticle> getInterwikiArticles(String wikipediaLang, String article) { 167 204 try { -
applications/editors/josm/plugins/wikipedia/src/org/wikipedia/WikipediaPlugin.java
r29778 r31852 14 14 new WikipediaCopyTemplate(); 15 15 MainMenu.add(Main.main.menu.dataMenu, new WikipediaAddNamesAction()); 16 MainMenu.add(Main.main.menu.dataMenu, new FetchWikidataAction()); 16 17 } 17 18
Note:
See TracChangeset
for help on using the changeset viewer.