fix for old files
authorNiki Roo <niki@nikiroo.be>
Mon, 27 Apr 2020 14:42:24 +0000 (16:42 +0200)
committerNiki Roo <niki@nikiroo.be>
Mon, 27 Apr 2020 14:42:24 +0000 (16:42 +0200)
src/be/nikiroo/fanfix/supported/Epub.java
src/be/nikiroo/fanfix/supported/InfoReader.java

index f8e467831381185244eae24b15d3a96a6cb0f6cb..90a9f458e4fd3ce9c0f8ad331bc407a27dc760ca 100644 (file)
@@ -42,8 +42,8 @@ class Epub extends InfoText {
                try {
                        return new File(fakeSource.toURI());
                } catch (URISyntaxException e) {
-                       Instance.getInstance().getTraceHandler()
-                                       .error(new IOException("Cannot get the source file from the info-text URL", e));
+                       Instance.getInstance().getTraceHandler().error(new IOException(
+                                       "Cannot get the source file from the info-text URL", e));
                }
 
                return null;
@@ -55,7 +55,8 @@ class Epub extends InfoText {
                        try {
                                fakeIn.reset();
                        } catch (IOException e) {
-                               Instance.getInstance().getTraceHandler().error(new IOException("Cannot reset the Epub Text stream", e));
+                               Instance.getInstance().getTraceHandler().error(new IOException(
+                                               "Cannot reset the Epub Text stream", e));
                        }
 
                        return fakeIn;
@@ -83,7 +84,8 @@ class Epub extends InfoText {
                ZipInputStream zipIn = null;
                try {
                        zipIn = new ZipInputStream(in);
-                       tmpDir = Instance.getInstance().getTempFiles().createTempDir("fanfic-reader-parser");
+                       tmpDir = Instance.getInstance().getTempFiles()
+                                       .createTempDir("fanfic-reader-parser");
                        File tmp = new File(tmpDir, "file.txt");
                        File tmpInfo = new File(tmpDir, "file.info");
 
@@ -99,8 +101,9 @@ class Epub extends InfoText {
                        String title = null;
                        String author = null;
 
-                       for (ZipEntry entry = zipIn.getNextEntry(); entry != null; entry = zipIn
-                                       .getNextEntry()) {
+                       for (ZipEntry entry = zipIn
+                                       .getNextEntry(); entry != null; entry = zipIn
+                                                       .getNextEntry()) {
                                if (!entry.isDirectory()
                                                && entry.getName().startsWith(getDataPrefix())) {
                                        String entryLName = entry.getName().toLowerCase();
@@ -124,18 +127,25 @@ class Epub extends InfoText {
                                                        try {
                                                                cover = new Image(zipIn);
                                                        } catch (Exception e) {
-                                                               Instance.getInstance().getTraceHandler().error(e);
+                                                               Instance.getInstance().getTraceHandler()
+                                                                               .error(e);
                                                        }
                                                }
-                                       } else if (entry.getName().equals(getDataPrefix() + "URL")) {
+                                       } else if (entry.getName()
+                                                       .equals(getDataPrefix() + "URL")) {
                                                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")) {
+                                       } else if (entry.getName().endsWith(".desc")) {
+                                               // // For old files
+                                               // if (this.desc != null) {
+                                               // this.desc = IOUtils.readSmallStream(zipIn).trim();
+                                               // }
+                                       } else if (entry.getName()
+                                                       .equals(getDataPrefix() + "SUMMARY")) {
                                                String[] descArray = StringUtils
                                                                .unhtml(IOUtils.readSmallStream(zipIn)).trim()
                                                                .split("\n");
@@ -149,12 +159,12 @@ class Epub extends InfoText {
                                                                skip = 2;
                                                        }
                                                }
-                                               this.desc = "";
-                                               for (int i = skip; i < descArray.length; i++) {
-                                                       this.desc += descArray[i].trim() + "\n";
-                                               }
-
-                                               this.desc = this.desc.trim();
+                                               // 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);
@@ -198,9 +208,8 @@ class Epub extends InfoText {
                                if (cover != null) {
                                        meta.setCover(cover);
                                } else {
-                                       meta.setCover(InfoReader
-                                                       .getCoverByName(getSourceFileOriginal().toURI()
-                                                                       .toURL()));
+                                       meta.setCover(InfoReader.getCoverByName(
+                                                       getSourceFileOriginal().toURI().toURL()));
                                }
                        }
                } finally {
index 15a4f5c4e7bc1234e45d157411fb6279eb7b9ac5..1a00ef25f6102d8928f2a1c213f2afe66dc4c01e 100644 (file)
@@ -9,8 +9,6 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Scanner;
 
-import org.jsoup.nodes.Document;
-
 import be.nikiroo.fanfix.Instance;
 import be.nikiroo.fanfix.bundles.Config;
 import be.nikiroo.fanfix.data.MetaData;
@@ -36,6 +34,13 @@ public class InfoReader {
                                MetaData meta = createMeta(infoFile.toURI().toURL(), in,
                                                withCover);
 
+                               // Some old .info files were using UUID for URL...
+                               if (!hasIt(meta.getUrl()) && meta.getUuid() != null
+                                               && (meta.getUuid().startsWith("http://")
+                                                               || meta.getUuid().startsWith("https://"))) {
+                                       meta.setUrl(meta.getUuid());
+                               }
+
                                // Some old .info files don't have those now required fields...
                                // So we check if we can find the info in another way (many
                                // formats have a copy of the original text file)
@@ -259,6 +264,13 @@ public class InfoReader {
                                        value = value.substring(1, value.length() - 1).trim();
                                }
 
+                               // Some old files ended up with TITLE="'xxxxx'"
+                               if ("TITLE".equals(key)) {
+                                       if (value.startsWith("'") && value.endsWith("'")) {
+                                               value = value.substring(1, value.length() - 1).trim();
+                                       }
+                               }
+
                                return value;
                        }
                }