r369 - in trunk/bow-ui: . src/main/java/org/chorem/bow
Author: bpoussin Date: 2013-09-27 12:23:29 +0200 (Fri, 27 Sep 2013) New Revision: 369 Url: http://chorem.org/projects/bow/repository/revisions/369 Log: - enhance favicon download - don't try to take screenshot if not configured Modified: trunk/bow-ui/pom.xml trunk/bow-ui/src/main/java/org/chorem/bow/BookmarkUtils.java Modified: trunk/bow-ui/pom.xml =================================================================== --- trunk/bow-ui/pom.xml 2013-09-26 18:18:46 UTC (rev 368) +++ trunk/bow-ui/pom.xml 2013-09-27 10:23:29 UTC (rev 369) @@ -179,12 +179,19 @@ <version>4.3</version> </dependency> + <!-- used to call screenshot service and to get suggestion from search engine --> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.3</version> </dependency> - + + <!-- used to parse html and extract favicon url --> + <dependency> + <groupId>org.jsoup</groupId> + <artifactId>jsoup</artifactId> + <version>1.7.2</version> + </dependency> </dependencies> <build> Modified: trunk/bow-ui/src/main/java/org/chorem/bow/BookmarkUtils.java =================================================================== --- trunk/bow-ui/src/main/java/org/chorem/bow/BookmarkUtils.java 2013-09-26 18:18:46 UTC (rev 368) +++ trunk/bow-ui/src/main/java/org/chorem/bow/BookmarkUtils.java 2013-09-27 10:23:29 UTC (rev 369) @@ -40,6 +40,8 @@ import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; import org.nuiton.wikitty.entities.Element; import org.nuiton.wikitty.query.WikittyQuery; import org.nuiton.wikitty.query.WikittyQueryMaker; @@ -218,9 +220,11 @@ byte[] result = null; try { String ssu = BowConfig.getScreenshotURL(); - url = URLEncoder.encode(url, "UTF-8"); - String imageUrl = String.format(ssu, url); - result = getImage(imageUrl); + if (StringUtils.isNotBlank(ssu)) { + url = URLEncoder.encode(url, "UTF-8"); + String imageUrl = String.format(ssu, url); + result = getImage(imageUrl); + } } catch (Exception eee) { log.info("Can't encode URL: " + url, eee); } @@ -235,9 +239,22 @@ public static byte[] getFavicon(String urlString) { byte[] result = null; try { - URL url = new URI(urlString).toURL(); - URL favURL = new URL(url.getProtocol(), url.getHost(), url.getPort(), "/favicon.ico"); - result = getImage(favURL.toExternalForm()); + String favicon = null; + + // on commence par rechercher le favicon specifie dans le head + Document doc = Jsoup.connect(urlString).get(); + org.jsoup.nodes.Element link = doc.head().select("link[rel~=(shortcut icon|icon)]").first(); + if (link != null) { + favicon = link.attr("abs:href"); + } + + // si rien n'est specifie dans le head, on recherche un /favicon.ico + if (favicon == null) { + URL url = new URI(urlString).toURL(); + URL favURL = new URL(url.getProtocol(), url.getHost(), url.getPort(), "/favicon.ico"); + favicon = favURL.toExternalForm(); + } + result = getImage(favicon); return result; } catch (Exception eee) { log.info("Can't parse URL: " + urlString, eee);
participants (1)
-
bpoussin@users.chorem.org