When cover not found, check next to .info
[fanfix.git] / src / be / nikiroo / fanfix / supported / InfoReader.java
index 6f1a7a50002281710613293125731f35ed0f75e0..571f77b0a1cda5b08e6e775b257d9db8f27eb101 100644 (file)
@@ -9,12 +9,15 @@ import java.net.URL;
 import java.util.ArrayList;
 import java.util.List;
 
+import be.nikiroo.fanfix.Instance;
+import be.nikiroo.fanfix.bundles.Config;
 import be.nikiroo.fanfix.data.MetaData;
 import be.nikiroo.utils.MarkableFileInputStream;
 
 // not complete: no "description" tag
 public class InfoReader {
-       public static MetaData readMeta(File infoFile) throws IOException {
+       public static MetaData readMeta(File infoFile, boolean withCover)
+                       throws IOException {
                if (infoFile == null) {
                        throw new IOException("File is null");
                }
@@ -23,7 +26,7 @@ public class InfoReader {
                        InputStream in = new MarkableFileInputStream(new FileInputStream(
                                        infoFile));
                        try {
-                               return createMeta(infoFile.toURI().toURL(), in);
+                               return createMeta(infoFile.toURI().toURL(), in, withCover);
                        } finally {
                                in.close();
                                in = null;
@@ -35,8 +38,8 @@ public class InfoReader {
                }
        }
 
-       private static MetaData createMeta(URL sourceInfoFile, InputStream in)
-                       throws IOException {
+       private static MetaData createMeta(URL sourceInfoFile, InputStream in,
+                       boolean withCover) throws IOException {
                MetaData meta = new MetaData();
 
                meta.setTitle(getInfoTag(in, "TITLE"));
@@ -52,8 +55,22 @@ public class InfoReader {
                meta.setSubject(getInfoTag(in, "SUBJECT"));
                meta.setType(getInfoTag(in, "TYPE"));
                meta.setImageDocument(getInfoTagBoolean(in, "IMAGES_DOCUMENT", false));
-               meta.setCover(BasicSupport.getImage(null, sourceInfoFile,
-                               getInfoTag(in, "COVER")));
+               if (withCover) {
+                       meta.setCover(BasicSupport.getImage(null, sourceInfoFile,
+                                       getInfoTag(in, "COVER")));
+                       // Second chance: try to check for a cover next to the info file
+                       if (meta.getCover() == null) {
+                               String info = sourceInfoFile.getFile().toString();
+                               if (info.endsWith(".info")) {
+                                       info = info.substring(0, info.length() - ".info".length());
+                                       String ext = "."
+                                                       + Instance.getConfig().getString(
+                                                                       Config.IMAGE_FORMAT_COVER);
+                                       meta.setCover(BasicSupport.getImage(null, sourceInfoFile,
+                                                       info + ext));
+                               }
+                       }
+               }
                try {
                        meta.setWords(Long.parseLong(getInfoTag(in, "WORDCOUNT")));
                } catch (NumberFormatException e) {
@@ -62,7 +79,7 @@ public class InfoReader {
                meta.setCreationDate(getInfoTag(in, "CREATION_DATE"));
                meta.setFakeCover(Boolean.parseBoolean(getInfoTag(in, "FAKE_COVER")));
 
-               if (meta.getCover() == null) {
+               if (withCover && meta.getCover() == null) {
                        meta.setCover(BasicSupport.getDefaultCover(meta.getSubject()));
                }