X-Git-Url: http://git.nikiroo.be/?p=fanfix.git;a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Fsearchable%2FFanfiction.java;h=e8fbf4db9683e70d58197c870c34ce5f43fa8c1e;hp=f178a815fc8b8676402a92da21236d0c3c60f17f;hb=76ec935e19dbd00dfbcaaeabfc187125f727b5ac;hpb=158b372d8a27a5256569c30d793f4a81bfcbd215 diff --git a/src/be/nikiroo/fanfix/searchable/Fanfiction.java b/src/be/nikiroo/fanfix/searchable/Fanfiction.java index f178a81..e8fbf4d 100644 --- a/src/be/nikiroo/fanfix/searchable/Fanfiction.java +++ b/src/be/nikiroo/fanfix/searchable/Fanfiction.java @@ -23,6 +23,8 @@ import be.nikiroo.fanfix.supported.SupportType; * @author niki */ class Fanfiction extends BasicSearchable { + static private String BASE_URL = "http://fanfiction.net/"; + /** * Create a new {@link Fanfiction}. * @@ -40,7 +42,7 @@ class Fanfiction extends BasicSearchable { Map stories = new HashMap(); Map crossovers = new HashMap(); - Document mainPage = load("http://fanfiction.net/"); + Document mainPage = load(BASE_URL, true); Element menu = mainPage.getElementsByClass("dropdown").first(); if (menu != null) { Element ul = menu.getElementsByClass("dropdown-menu").first(); @@ -68,17 +70,17 @@ class Fanfiction extends BasicSearchable { List tags = new ArrayList(); if (storiesName != null) { - SearchableTag tag = new SearchableTag(null, storiesName, true); + SearchableTag tag = new SearchableTag(null, storiesName, false); for (String id : stories.keySet()) { - tag.add(new SearchableTag(id, stories.get(id), false)); + tag.add(new SearchableTag(id, stories.get(id), true, false)); } tags.add(tag); } if (crossoversName != null) { - SearchableTag tag = new SearchableTag(null, crossoversName, true); + SearchableTag tag = new SearchableTag(null, crossoversName, false); for (String id : crossovers.keySet()) { - tag.add(new SearchableTag(id, crossovers.get(id), false)); + tag.add(new SearchableTag(id, crossovers.get(id), false, false)); } tags.add(tag); } @@ -92,9 +94,9 @@ class Fanfiction extends BasicSearchable { return; } - boolean subtagIsComplete = !tag.getId().contains("/crossovers/"); + boolean subtagIsLeaf = !tag.getId().contains("/crossovers/"); - Document doc = load(tag.getId()); + Document doc = load(tag.getId(), false); Element list = doc.getElementById("list_output"); if (list != null) { Element table = list.getElementsByTag("table").first(); @@ -105,7 +107,7 @@ class Fanfiction extends BasicSearchable { if (a != null) { SearchableTag subtag = new SearchableTag( - a.absUrl("href"), a.text(), subtagIsComplete); + a.absUrl("href"), a.text(), subtagIsLeaf); tag.add(subtag); if (span != null) { String nr = span.text(); @@ -145,7 +147,7 @@ class Fanfiction extends BasicSearchable { @Override public List search(String search) throws IOException { - // TODO Auto-generated method stub + // TODO /search/?reader=1&type=story&keywords=blablablab return null; } @@ -154,7 +156,29 @@ class Fanfiction extends BasicSearchable { List metas = new ArrayList(); if (tag.getId() != null) { - Document doc = load(tag.getId()); + Document doc = load(tag.getId(), false); + + Element center = doc.getElementsByTag("center").first(); + if (center != null) { + int pages = -1; + for (Element a : center.getElementsByTag("a")) { + if (a.absUrl("href").contains("&p=")) { + int thisLinkPages = -1; + try { + String[] tab = a.absUrl("href").split("="); + tab = tab[tab.length - 1].split("&"); + thisLinkPages = Integer + .parseInt(tab[tab.length - 1]); + } catch (Exception e) { + } + + pages = Math.max(pages, thisLinkPages); + } + } + + tag.setPages(pages); + } + for (Element story : doc.getElementsByClass("z-list")) { String title = ""; String url = ""; @@ -199,6 +223,7 @@ class Fanfiction extends BasicSearchable { 0, Instance.getTrans().getString(StringId.DESCRIPTION), resume)); meta.setSource(getType().getSourceName()); + // TODO: remove tags to interpret them instead (lang, words..) meta.setTags(Arrays.asList(tags.split(" *- *"))); meta.setTitle(title); meta.setUrl(url); @@ -227,6 +252,7 @@ class Fanfiction extends BasicSearchable { System.out.println(cmlp); List metas = f.search(mlp); - System.out.println(metas); + System.out.println(mlp.getPages()); + //System.out.println(metas); } }