X-Git-Url: http://git.nikiroo.be/?p=fanfix.git;a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Fsupported%2FInfoReader.java;h=571f77b0a1cda5b08e6e775b257d9db8f27eb101;hp=6f1a7a50002281710613293125731f35ed0f75e0;hb=2d2a32227e37cb3be9c2b2259d1673f2dc0dc1cd;hpb=a9eb3f46dd83115e7a549e96e800b932162b68ad diff --git a/src/be/nikiroo/fanfix/supported/InfoReader.java b/src/be/nikiroo/fanfix/supported/InfoReader.java index 6f1a7a5..571f77b 100644 --- a/src/be/nikiroo/fanfix/supported/InfoReader.java +++ b/src/be/nikiroo/fanfix/supported/InfoReader.java @@ -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())); }