GUI search, step 3
[fanfix.git] / src / be / nikiroo / fanfix / searchable / MangaLel.java
index c8a522c896d17849ab1cc223d86c468aa15934fa..3e2924f31d5d84a5082fec20b0058a7091c86f5d 100644 (file)
@@ -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<MetaData> 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<MetaData> getResults(String sourceUrl) throws IOException {
                List<MetaData> metas = new ArrayList<MetaData>();
 
@@ -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
+                               // <IMG>
 
                                Elements infos = result.getElementsByClass("texte");
                                if (infos != null) {
                                        String[] tab = infos.outerHtml().split("<br>");
 
+                                       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);
+                               }
                        }
                }