X-Git-Url: http://git.nikiroo.be/?p=nikiroo-utils.git;a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Fsupported%2FInfoReader.java;h=c22dbd711bedca99d1bde9f08400ba8e83b069b7;hp=8e1c385cfa8d115fd9fd6035be77eac10c580611;hb=8d59ce0748baeeea0458bab49716ab4543aae439;hpb=4ec79417fe5bd4344ac12b39ac8c98db8f9276f6 diff --git a/src/be/nikiroo/fanfix/supported/InfoReader.java b/src/be/nikiroo/fanfix/supported/InfoReader.java index 8e1c385..c22dbd7 100644 --- a/src/be/nikiroo/fanfix/supported/InfoReader.java +++ b/src/be/nikiroo/fanfix/supported/InfoReader.java @@ -1,7 +1,6 @@ package be.nikiroo.fanfix.supported; import java.io.File; -import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; @@ -13,10 +12,15 @@ import java.util.Scanner; import be.nikiroo.fanfix.Instance; import be.nikiroo.fanfix.bundles.Config; import be.nikiroo.fanfix.data.MetaData; -import be.nikiroo.utils.MarkableFileInputStream; +import be.nikiroo.utils.Image; +import be.nikiroo.utils.streams.MarkableFileInputStream; // not complete: no "description" tag public class InfoReader { + static protected BasicSupportHelper bsHelper = new BasicSupportHelper(); + // static protected BasicSupportImages bsImages = new BasicSupportImages(); + // static protected BasicSupportPara bsPara = new BasicSupportPara(new BasicSupportHelper(), new BasicSupportImages()); + public static MetaData readMeta(File infoFile, boolean withCover) throws IOException { if (infoFile == null) { @@ -24,8 +28,7 @@ public class InfoReader { } if (infoFile.exists()) { - InputStream in = new MarkableFileInputStream(new FileInputStream( - infoFile)); + InputStream in = new MarkableFileInputStream(infoFile); try { return createMeta(infoFile.toURI().toURL(), in, withCover); } finally { @@ -58,21 +61,12 @@ public class InfoReader { if (withCover) { String infoTag = getInfoTag(in, "COVER"); if (infoTag != null && !infoTag.trim().isEmpty()) { - meta.setCover(BasicSupportHelper.getImage(null, sourceInfoFile, + meta.setCover(bsHelper.getImage(null, sourceInfoFile, infoTag)); } - // 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) - .toLowerCase(); - meta.setCover(BasicSupportHelper.getImage(null, - sourceInfoFile, info + ext)); - } + // Second chance: try to check for a cover next to the info file + meta.setCover(getCoverByName(sourceInfoFile)); } } try { @@ -84,12 +78,47 @@ public class InfoReader { meta.setFakeCover(Boolean.parseBoolean(getInfoTag(in, "FAKE_COVER"))); if (withCover && meta.getCover() == null) { - meta.setCover(BasicSupportHelper.getDefaultCover(meta.getSubject())); + meta.setCover(bsHelper.getDefaultCover(meta.getSubject())); } return meta; } + /** + * Return the cover image if it is next to the source file. + * + * @param sourceInfoFile + * the source file + * + * @return the cover if present, NULL if not + */ + public static Image getCoverByName(URL sourceInfoFile) { + Image cover = null; + + File basefile = new File(sourceInfoFile.getFile()); + + String ext = "." + + Instance.getConfig().getString(Config.FILE_FORMAT_IMAGE_FORMAT_COVER) + .toLowerCase(); + + // Without removing ext + cover = bsHelper.getImage(null, sourceInfoFile, + basefile.getAbsolutePath() + ext); + + // Try without ext + String name = basefile.getName(); + int pos = name.lastIndexOf("."); + if (cover == null && pos > 0) { + name = name.substring(0, pos); + basefile = new File(basefile.getParent(), name); + + cover = bsHelper.getImage(null, sourceInfoFile, + basefile.getAbsolutePath() + ext); + } + + return cover; + } + private static boolean getInfoTagBoolean(InputStream in, String key, boolean def) throws IOException { Boolean value = getInfoTagBoolean(in, key);