X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Fsearchable%2FMangaLel.java;h=3e2924f31d5d84a5082fec20b0058a7091c86f5d;hb=81acd363d9b0af424d462e9d2e6a07b160e7af3b;hp=c8a522c896d17849ab1cc223d86c468aa15934fa;hpb=4749f2c50437f610f7e5258ab1c22a9f1bfa527a;p=fanfix.git diff --git a/src/be/nikiroo/fanfix/searchable/MangaLel.java b/src/be/nikiroo/fanfix/searchable/MangaLel.java index c8a522c..3e2924f 100644 --- a/src/be/nikiroo/fanfix/searchable/MangaLel.java +++ b/src/be/nikiroo/fanfix/searchable/MangaLel.java @@ -50,12 +50,6 @@ class MangaLel extends BasicSearchable { // Tags are always complete } - @Override - public int searchPages(String search) throws IOException { - // No pagination - return 1; - } - @Override public List search(String search, int page) throws IOException { String url = BASE_URL + "?nomProjet=" @@ -76,6 +70,22 @@ class MangaLel extends BasicSearchable { return getResults(url); } + @Override + public int searchPages(String search) throws IOException { + // No pagination + return 1; + } + + @Override + public int searchPages(SearchableTag tag) throws IOException { + if (tag.isLeaf()) { + // No pagination + return 1; + } + + return 0; + } + private List getResults(String sourceUrl) throws IOException { List metas = new ArrayList(); @@ -86,32 +96,29 @@ class MangaLel extends BasicSearchable { for (Element result : doc.getElementsByClass("rechercheAffichage")) { Element a = result.getElementsByTag("a").first(); if (a != null) { + int projectId = -1; + MetaData meta = new MetaData(); - meta.setUrl(a.absUrl("href")); - Element img = result.getElementsByTag("img").first(); - if (img != null) { - String coverUrl = img.absUrl("src"); - try { - InputStream in = Instance.getCache().open( - new URL(coverUrl), getSupport(), true); - try { - meta.setCover(new Image(in)); - } finally { - in.close(); - } - } catch (Exception e) { - Instance.getTraceHandler() - .error(new Exception( - "Cannot download cover for MangaLEL story in search mode", - e)); - } - } + // Target: + // http://mangas-lecture-en-ligne.fr/index_lel.php?page=presentationProjet&idProjet=218 + + // a.absUrl("href"): + // http://mangas-lecture-en-ligne.fr/index_lel?onCommence=oui&idChapitre=2805 + + // ...but we need the PROJECT id, not the CHAPTER id -> use + // Elements infos = result.getElementsByClass("texte"); if (infos != null) { String[] tab = infos.outerHtml().split("
"); + meta.setLang("fr"); + meta.setSource(getType().getSourceName()); + meta.setPublisher(getType().getSourceName()); + meta.setType(getType().toString()); + meta.setSubject("manga"); + meta.setImageDocument(true); meta.setTitle(getVal(tab, 0)); meta.setAuthor(getVal(tab, 1)); meta.setTags(Arrays.asList(getVal(tab, 2).split(" "))); @@ -125,7 +132,44 @@ class MangaLel extends BasicSearchable { getVal(tab, 5))); } - metas.add(meta); + Element img = result.getElementsByTag("img").first(); + if (img != null) { + try { + String[] tab = img.attr("src").split("/"); + String str = tab[tab.length - 1]; + tab = str.split("\\."); + str = tab[0]; + projectId = Integer.parseInt(str); + + String coverUrl = img.absUrl("src"); + try { + InputStream in = Instance.getCache().open( + new URL(coverUrl), getSupport(), true); + try { + meta.setCover(new Image(in)); + } finally { + in.close(); + } + } catch (Exception e) { + // Happen often on MangaLEL... + Instance.getTraceHandler().trace( + "Cannot download cover for MangaLEL story in search mode: " + + meta.getTitle()); + } + } catch (Exception e) { + // no project id... cannot use the story :( + Instance.getTraceHandler().error( + "Cannot find ProjectId for MangaLEL story in search mode: " + + meta.getTitle()); + } + } + + if (projectId >= 0) { + meta.setUrl("http://mangas-lecture-en-ligne.fr/index_lel.php?page=presentationProjet&idProjet=" + + projectId); + meta.setUuid(meta.getUrl()); + metas.add(meta); + } } }