e621: better title
[nikiroo-utils.git] / supported / E621.java
index 39bbe867d9eb2cdfc630c80df9393bc9bc47aba4..602cd36309250e03de7291c4f46784b7171ccc93 100644 (file)
@@ -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;
        }