import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
+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");
}
InputStream in = new MarkableFileInputStream(new FileInputStream(
infoFile));
try {
- return createMeta(in);
+ return createMeta(infoFile.toURI().toURL(), in, withCover);
} finally {
in.close();
in = null;
}
- } else {
- throw new FileNotFoundException(
- "File given as argument does not exists: "
- + infoFile.getAbsolutePath());
}
+
+ throw new FileNotFoundException(
+ "File given as argument does not exists: "
+ + infoFile.getAbsolutePath());
}
- private static MetaData createMeta(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"));
meta.setDate(getInfoTag(in, "DATE"));
meta.setTags(getInfoTagList(in, "TAGS", ","));
meta.setSource(getInfoTag(in, "SOURCE"));
+ meta.setUrl(getInfoTag(in, "URL"));
meta.setPublisher(getInfoTag(in, "PUBLISHER"));
meta.setUuid(getInfoTag(in, "UUID"));
meta.setLuid(getInfoTag(in, "LUID"));
meta.setSubject(getInfoTag(in, "SUBJECT"));
meta.setType(getInfoTag(in, "TYPE"));
meta.setImageDocument(getInfoTagBoolean(in, "IMAGES_DOCUMENT", false));
- meta.setCover(BasicSupport.getImage(null, 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) {
+ meta.setWords(0);
+ }
+ 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()));
}