From b7afbe4297ae1f0c4db57cc431c2341b9fc6c061 Mon Sep 17 00:00:00 2001 From: Niki Roo Date: Sun, 26 Nov 2017 20:39:53 +0100 Subject: [PATCH] =?utf8?q?Improve=20cbz=20support:=20-=20accept=20title=20?= =?utf8?q?and=20author=20from=20SUMMARY=20files=20(first=20line=20is=20tit?= =?utf8?q?le,=20second=20line=20is=20author=20if=20starting=20with=20?= =?utf8?q?=C2=A9,=20rest=20is=20descriptions=20-=20accept=20URL=20from=20U?= =?utf8?q?RL=20files=20(first=20line)?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- changelog.md | 8 ++-- src/be/nikiroo/fanfix/output/Cbz.java | 2 - src/be/nikiroo/fanfix/supported/Epub.java | 47 ++++++++++++++++++++--- 3 files changed, 44 insertions(+), 13 deletions(-) diff --git a/changelog.md b/changelog.md index 0154d4e..8449338 100644 --- a/changelog.md +++ b/changelog.md @@ -122,8 +122,7 @@ ## 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 diff --git a/src/be/nikiroo/fanfix/output/Cbz.java b/src/be/nikiroo/fanfix/output/Cbz.java index 8d59ae8..c350eb2 100644 --- a/src/be/nikiroo/fanfix/output/Cbz.java +++ b/src/be/nikiroo/fanfix/output/Cbz.java @@ -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(); } diff --git a/src/be/nikiroo/fanfix/supported/Epub.java b/src/be/nikiroo/fanfix/supported/Epub.java index bd5c719..6819ec2 100644 --- a/src/be/nikiroo/fanfix/supported/Epub.java +++ b/src/be/nikiroo/fanfix/supported/Epub.java @@ -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()); meta.setSource(getSourceName()); - meta.setUrl(source.toString()); + meta.setUuid(url); + meta.setUrl(url); + meta.setTitle(title); + meta.setAuthor(author); } } -- 2.27.0