X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=supported%2FE621.java;h=a8ea6e6cf3df1b2bf82f4c1aedfea800f05851fe;hb=ffcc07e58b86c06c1a743b2d677e4a0c88477c30;hp=39bbe867d9eb2cdfc630c80df9393bc9bc47aba4;hpb=75002fcc46bc432e5bd8ab4b4c9304c8d9cf6986;p=nikiroo-utils.git diff --git a/supported/E621.java b/supported/E621.java index 39bbe86..a8ea6e6 100644 --- a/supported/E621.java +++ b/supported/E621.java @@ -173,6 +173,25 @@ class E621 extends BasicSupport { @Override protected URL getCanonicalUrl(URL source) { + // Convert search-pools into proper pools + if (source.getPath().equals("/posts") && source.getQuery() != null + && source.getQuery().startsWith("tags=pool%3A")) { + String poolNumber = source.getQuery() + .substring("tags=pool%3A".length()); + try { + Integer.parseInt(poolNumber); + String base = source.getProtocol() + "://" + source.getHost(); + if (source.getPort() != -1) { + base = base + ":" + source.getPort(); + } + source = new URL(base + "/pools/" + poolNumber); + } catch (NumberFormatException e) { + // Not a simple pool, skip + } catch (MalformedURLException e) { + // Cannot happen + } + } + if (isSetOriginalUrl(source)) { try { Document doc = DataUtil.load(Instance.getInstance().getCache().open(source, this, false), "UTF-8", source.toString()); @@ -228,19 +247,19 @@ class E621 extends BasicSupport { title = el.text().trim(); } - for (String s : new String[] { "e621", "-", "e621" }) { + for (String s : new String[] { "e621", "-", "e621", "Pool", "-" }) { if (title.startsWith(s)) { title = title.substring(s.length()).trim(); } if (title.endsWith(s)) { title = title.substring(0, title.length() - s.length()).trim(); } - } if (isSearchOrSet(getSource())) { title = title.isEmpty() ? "e621" : "[e621] " + title; } + return title; } @@ -273,6 +292,28 @@ class E621 extends BasicSupport { builder.append(" ").append(tab[i]); } } + + if (builder.length() == 0) { + try { + String poolNumber = getSource().getPath() + .substring("/pools/".length()); + String url = "https://e621.net/posts" + "?tags=pool%3A" + + poolNumber; + + Document page1 = DataUtil.load(Instance.getInstance() + .getCache().open(getSource(), null, false), "UTF-8", + url); + for (Element el : page1.getElementsByClass("search-tag")) { + if (el.attr("itemprop").equals("author")) { + if (builder.length() > 0) { + builder.append(", "); + } + builder.append(el.text().trim()); + } + } + } catch (Exception e) { + } + } } return builder.toString();