X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Fsearchable%2FFanfiction.java;h=f392bf15cd09a4da7a8877db42dd924b48f3f194;hb=d16065ecb5ab854a71f385ed8c47012184139783;hp=6814e63648ba933d7c199fe115a8c64fabae747d;hpb=b3b9a1cd8fd01d855cdbe18b3df76ab5d563cc90;p=fanfix.git diff --git a/src/be/nikiroo/fanfix/searchable/Fanfiction.java b/src/be/nikiroo/fanfix/searchable/Fanfiction.java index 6814e63..f392bf1 100644 --- a/src/be/nikiroo/fanfix/searchable/Fanfiction.java +++ b/src/be/nikiroo/fanfix/searchable/Fanfiction.java @@ -126,11 +126,11 @@ class Fanfiction extends BasicSearchable { nr = nr.substring(0, nr.length() - 1); } nr = nr.trim(); - - //TODO: fix toNumber/fromNumber + + // TODO: fix toNumber/fromNumber nr = nr.replaceAll("\\.[0-9]*", ""); - - subtag.setCount(toNumber(nr)); + + subtag.setCount(StringUtils.toNumber(nr)); } } } @@ -140,38 +140,22 @@ class Fanfiction extends BasicSearchable { tag.setComplete(true); } - /** - * @deprecated use {@link StringUtils} when updated - */ - @Deprecated - private static long toNumber(String value) { - // TODO: use StringUtils instead after update - long count = 0l; - if (value != null) { - try { - if (value.toLowerCase().endsWith("m")) { - count = Long.parseLong(value.substring(0, - value.length() - 1).trim()); - count *= 1000000; - } else if (value.toLowerCase().endsWith("k")) { - count = Long.parseLong(value.substring(0, - value.length() - 1).trim()); - count *= 1000; - } else { - count = Long.parseLong(value); - } - } catch (NumberFormatException pe) { - } - } + @Override + public List search(String search, int page) throws IOException { + String encoded = URLEncoder.encode(search.toLowerCase(), "utf-8"); + String url = BASE_URL + "search/?ready=1&type=story&keywords=" + + encoded + "&ppage=" + page; - return count; + return getStories(url, null, null); } @Override - public List search(String search) throws IOException { + public int searchPages(String search) throws IOException { String encoded = URLEncoder.encode(search.toLowerCase(), "utf-8"); - return getStories(BASE_URL + "search/?ready=1&type=story&keywords=" - + encoded, null, null); + String url = BASE_URL + "search/?ready=1&type=story&keywords=" + + encoded; + + return getPages(load(url, false)); } @Override @@ -190,7 +174,7 @@ class Fanfiction extends BasicSearchable { url += "&p=" + page; } } - + Document doc = load(url, false); // Update the pages number if needed @@ -220,11 +204,8 @@ class Fanfiction extends BasicSearchable { * the document * * @return the number of pages or -1 if unknown - * - * @throws IOException - * in case of I/O errors */ - private int getPages(Document doc) throws IOException { + private int getPages(Document doc) { int pages = -1; if (doc != null) { @@ -279,12 +260,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? @@ -299,10 +283,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)); } } }