Improve cbz support:
authorNiki Roo <niki@nikiroo.be>
Sun, 26 Nov 2017 19:39:53 +0000 (20:39 +0100)
committerNiki Roo <niki@nikiroo.be>
Sun, 26 Nov 2017 19:39:53 +0000 (20:39 +0100)
- accept title and author from SUMMARY files (first line is title, second line is author if starting with ©, rest is descriptions
- accept URL from URL files (first line)

changelog.md
src/be/nikiroo/fanfix/output/Cbz.java
src/be/nikiroo/fanfix/supported/Epub.java

index 0154d4e8b2ccc788d6bc6018deac8c6290572ddb..84493385f09728cef6ffaa25c9f718319efdd17b 100644 (file)
 
 ## Version 1.0.0
 
-The GUI is now good enough to be released (export is still CLI-only though).
-
+- the GUI is now good enough to be released (export is still CLI-only though)
 - bugs fixed
 - GUI improved (a lot)
 - should be good enough for 1.0.0
@@ -147,11 +146,10 @@ The GUI is now good enough to be released (export is still CLI-only though).
 
 ## Version 0.9.2
 
-Minimum JVM version: Java 1.6 (all binary JAR files will be released in 1.6).
-
+- minimum JVM version: Java 1.6 (all binary JAR files will be released in 1.6)
 - bugs fixed
 
 ## Version 0.9.1
 
-Initial version
+- initial version
 
index 8d59ae883a7586d966440cb6aff738ce83e6739a..c350eb24d0f88716251551cd192164765c14c980 100644 (file)
@@ -70,8 +70,6 @@ class Cbz extends BasicOutput {
                        if (meta != null) {
                                writer.write(meta.getUuid());
                        }
-                       writer.write("\n\n");
-                       writer.write(builder.toString());
                } finally {
                        writer.close();
                }
index bd5c7191a86fe687942a6411c4291ff9010ad060..6819ec29e272f1ee319fdf69da893b8d20855a77 100644 (file)
@@ -18,6 +18,7 @@ import be.nikiroo.utils.IOUtils;
 import be.nikiroo.utils.ImageUtils;
 import be.nikiroo.utils.MarkableFileInputStream;
 import be.nikiroo.utils.Progress;
+import be.nikiroo.utils.StringUtils;
 
 /**
  * Support class for EPUB files created with this program (as we need some
@@ -26,8 +27,9 @@ import be.nikiroo.utils.Progress;
  * @author niki
  */
 class Epub extends InfoText {
-       private File tmp;
        protected MetaData meta;
+       private File tmp;
+       private String desc;
 
        private URL fakeSource;
        private InputStream fakeIn;
@@ -53,6 +55,10 @@ class Epub extends InfoText {
 
        @Override
        protected String getDesc(URL source, InputStream in) throws IOException {
+               if (desc != null) {
+                       return desc;
+               }
+
                if (fakeIn != null) {
                        fakeIn.reset();
                        return super.getDesc(fakeSource, fakeIn);
@@ -92,12 +98,16 @@ class Epub extends InfoText {
                fakeSource = tmp.toURI().toURL();
                BufferedImage cover = null;
 
+               String url = source.toString();
+               String title = null;
+               String author = null;
+
                for (ZipEntry entry = zipIn.getNextEntry(); entry != null; entry = zipIn
                                .getNextEntry()) {
                        if (!entry.isDirectory()
                                        && entry.getName().startsWith(getDataPrefix())) {
                                String entryLName = entry.getName().toLowerCase();
-                               
+
                                boolean imageEntry = false;
                                for (String ext : getImageExt(false)) {
                                        if (entryLName.endsWith(ext)) {
@@ -121,9 +131,32 @@ class Epub extends InfoText {
                                                }
                                        }
                                } else if (entry.getName().equals(getDataPrefix() + "URL")) {
-                                       // Do nothing
+                                       String[] descArray = StringUtils
+                                                       .unhtml(IOUtils.readSmallStream(zipIn)).trim()
+                                                       .split("\n");
+                                       if (descArray.length > 0) {
+                                               url = descArray[0].trim();
+                                       }
                                } else if (entry.getName().equals(getDataPrefix() + "SUMMARY")) {
-                                       // Do nothing
+                                       String[] descArray = StringUtils
+                                                       .unhtml(IOUtils.readSmallStream(zipIn)).trim()
+                                                       .split("\n");
+                                       int skip = 0;
+                                       if (descArray.length > 1) {
+                                               title = descArray[0].trim();
+                                               skip = 1;
+                                               if (descArray.length > 2
+                                                               && descArray[1].startsWith("©")) {
+                                                       author = descArray[1].substring(1).trim();
+                                                       skip = 2;
+                                               }
+                                       }
+                                       this.desc = "";
+                                       for (int i = skip; i < descArray.length; i++) {
+                                               this.desc += descArray[i].trim() + "\n";
+                                       }
+
+                                       this.desc = this.desc.trim();
                                } else {
                                        // Hopefully the data file
                                        IOUtils.write(zipIn, tmp);
@@ -148,11 +181,13 @@ class Epub extends InfoText {
                        tmpInfo.delete();
                } else {
                        meta = new MetaData();
-                       meta.setUuid(source.toString());
                        meta.setLang("EN");
                        meta.setTags(new ArrayList<String>());
                        meta.setSource(getSourceName());
-                       meta.setUrl(source.toString());
+                       meta.setUuid(url);
+                       meta.setUrl(url);
+                       meta.setTitle(title);
+                       meta.setAuthor(author);
                }
        }