X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Fsearchable%2FFanfiction.java;h=c2dfd5d5714a8f4c5e388aeccf7a8cd51053f303;hb=81acd363d9b0af424d462e9d2e6a07b160e7af3b;hp=90f25eec473ba3657aac8de15224161b2faace11;hpb=8ffc8b73e96e80657545f7d713cd065cf7ede786;p=fanfix.git diff --git a/src/be/nikiroo/fanfix/searchable/Fanfiction.java b/src/be/nikiroo/fanfix/searchable/Fanfiction.java index 90f25ee..c2dfd5d 100644 --- a/src/be/nikiroo/fanfix/searchable/Fanfiction.java +++ b/src/be/nikiroo/fanfix/searchable/Fanfiction.java @@ -143,8 +143,10 @@ class Fanfiction extends BasicSearchable { @Override public List search(String search, int page) throws IOException { String encoded = URLEncoder.encode(search.toLowerCase(), "utf-8"); - return getStories(BASE_URL + "search/?ready=1&type=story&keywords=" - + encoded + "&ppage=" + page, null, null); + String url = BASE_URL + "search/?ready=1&type=story&keywords=" + + encoded + "&ppage=" + page; + + return getStories(url, null, null); } @Override @@ -186,6 +188,25 @@ class Fanfiction extends BasicSearchable { return metas; } + @Override + public int searchPages(String search) throws IOException { + String encoded = URLEncoder.encode(search.toLowerCase(), "utf-8"); + String url = BASE_URL + "search/?ready=1&type=story&keywords=" + + encoded; + + return getPages(load(url, false)); + } + + @Override + public int searchPages(SearchableTag tag) throws IOException { + if (tag.isLeaf()) { + String url = tag.getId(); + return getPages(load(url, false)); + } + + return 0; + } + /** * Return the number of pages in this stories result listing. * @@ -249,12 +270,15 @@ class Fanfiction extends BasicSearchable { MetaData meta = new MetaData(); meta.setImageDocument(false); meta.setSource(getType().getSourceName()); + meta.setPublisher(getType().getSourceName()); + meta.setType(getType().toString()); // Title, URL, Cover Element stitle = story.getElementsByClass("stitle").first(); if (stitle != null) { meta.setTitle(stitle.text()); meta.setUrl(stitle.absUrl("href")); + meta.setUuid(meta.getUrl()); Element cover = stitle.getElementsByTag("img").first(); if (cover != null) { // note: see data-original if needed? @@ -269,10 +293,11 @@ class Fanfiction extends BasicSearchable { in.close(); } } catch (Exception e) { - Instance.getTraceHandler() - .error(new Exception( - "Cannot download cover for Fanfiction story in search mode", - e)); + // Should not happen on Fanfiction.net + Instance.getTraceHandler().error( + new Exception( + "Cannot download cover for Fanfiction story in search mode: " + + meta.getTitle(), e)); } } }