separate support name and BasicSupport
[fanfix.git] / src / be / nikiroo / fanfix / supported / Cbz.java
index 1cf07c5d0f162c0f300e4a389c0a6282819e7c99..e1a766e32defd0a1945e3aeba53c0622b7e487a2 100644 (file)
@@ -17,6 +17,7 @@ import be.nikiroo.fanfix.Instance;
 import be.nikiroo.fanfix.data.Chapter;
 import be.nikiroo.fanfix.data.MetaData;
 import be.nikiroo.fanfix.data.Paragraph;
+import be.nikiroo.fanfix.data.Paragraph.ParagraphType;
 import be.nikiroo.fanfix.data.Story;
 import be.nikiroo.utils.IOUtils;
 import be.nikiroo.utils.Image;
@@ -35,11 +36,6 @@ class Cbz extends Epub {
                return url.toString().toLowerCase().endsWith(".cbz");
        }
 
-       @Override
-       public String getSourceName() {
-               return "cbz";
-       }
-
        @Override
        protected String getDataPrefix() {
                return "";
@@ -72,7 +68,7 @@ class Cbz extends Epub {
                pg.addProgress(pgMeta, 10);
                Story story = processMeta(true, pgMeta);
                MetaData meta = story.getMeta();
-               
+
                pgMeta.done(); // 10%
 
                File tmpDir = Instance.getTempFiles().createTempDir("info-text");
@@ -126,16 +122,37 @@ class Cbz extends Epub {
 
                        pg.setProgress(90);
 
-                       // include original story
+                       // only the description is kept
                        Story origStory = getStoryFromTxt(tmpDir, basename);
                        if (origStory != null) {
-                               story.setChapters(origStory.getChapters());
                                if (origStory.getMeta().getCover() == null) {
                                        origStory.getMeta().setCover(story.getMeta().getCover());
                                }
                                story.setMeta(origStory.getMeta());
-                       } else {
-                               story.setChapters(new ArrayList<Chapter>());
+                       }
+                       story.setChapters(new ArrayList<Chapter>());
+
+                       // Check if we can find non-images chapters, for hybrid-cbz support
+                       for (Chapter chap : origStory) {
+                               Boolean isImages = null;
+                               for (Paragraph para : chap) {
+                                       ParagraphType t = para.getType();
+                                       if (isImages == null && !t.isText(true)) {
+                                               isImages = true;
+                                       }
+                                       if (t.isText(false)) {
+                                               String line = para.getContent();
+                                               // Images are saved in text mode as "[image-link]"
+                                               if (!(line.startsWith("[") && line.endsWith("]"))) {
+                                                       isImages = false;
+                                               }
+                                       }
+                               }
+
+                               if (isImages != null && !isImages) {
+                                       story.getChapters().add(chap);
+                                       chap.setNumber(story.getChapters().size());
+                               }
                        }
 
                        if (!imagesList.isEmpty()) {
@@ -156,8 +173,6 @@ class Cbz extends Epub {
                                meta.setCover(images.get(imagesList.get(0)));
                                meta.setFakeCover(true);
                        }
-                       
-System.out.println("Meta from Cbz support at end: "+meta);
                } finally {
                        IOUtils.deltree(tmpDir);
                        if (zipIn != null) {