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;
return url.toString().toLowerCase().endsWith(".cbz");
}
- @Override
- public String getSourceName() {
- return "cbz";
- }
-
@Override
protected String getDataPrefix() {
return "";
pg.addProgress(pgMeta, 10);
Story story = processMeta(true, pgMeta);
MetaData meta = story.getMeta();
-
+
pgMeta.done(); // 10%
File tmpDir = Instance.getTempFiles().createTempDir("info-text");
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()) {
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) {