X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Fsupported%2FInfoReader.java;h=405b28fb4197be856192e3b8ad31a219f4636cc5;hb=95c926ea1d5b7c75d5bbc81c50d80f5509d28a4d;hp=b65256ca4b6a3a4db4e836113fe064587be35fbf;hpb=16a81ef7656c5c692fb831927e75edde25dd77a0;p=fanfix.git diff --git a/src/be/nikiroo/fanfix/supported/InfoReader.java b/src/be/nikiroo/fanfix/supported/InfoReader.java deleted file mode 100644 index b65256c..0000000 --- a/src/be/nikiroo/fanfix/supported/InfoReader.java +++ /dev/null @@ -1,155 +0,0 @@ -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; -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, boolean withCover) - throws IOException { - if (infoFile == null) { - throw new IOException("File is null"); - } - - if (infoFile.exists()) { - InputStream in = new MarkableFileInputStream(new FileInputStream( - infoFile)); - try { - return createMeta(infoFile.toURI().toURL(), in, withCover); - } finally { - in.close(); - in = null; - } - } - - throw new FileNotFoundException( - "File given as argument does not exists: " - + infoFile.getAbsolutePath()); - } - - private static MetaData createMeta(URL sourceInfoFile, InputStream in, - boolean withCover) throws IOException { - MetaData meta = new MetaData(); - - meta.setTitle(getInfoTag(in, "TITLE")); - meta.setAuthor(getInfoTag(in, "AUTHOR")); - 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.setLang(getInfoTag(in, "LANG")); - meta.setSubject(getInfoTag(in, "SUBJECT")); - meta.setType(getInfoTag(in, "TYPE")); - meta.setImageDocument(getInfoTagBoolean(in, "IMAGES_DOCUMENT", false)); - if (withCover) { - String infoTag = getInfoTag(in, "COVER"); - if (infoTag != null && !infoTag.trim().isEmpty()) { - meta.setCover(BasicSupport.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(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 (withCover && meta.getCover() == null) { - meta.setCover(BasicSupport.getDefaultCover(meta.getSubject())); - } - - return meta; - } - - private static boolean getInfoTagBoolean(InputStream in, String key, - boolean def) throws IOException { - Boolean value = getInfoTagBoolean(in, key); - return value == null ? def : value; - } - - private static Boolean getInfoTagBoolean(InputStream in, String key) - throws IOException { - String value = getInfoTag(in, key); - if (value != null && !value.trim().isEmpty()) { - value = value.toLowerCase().trim(); - return value.equals("1") || value.equals("on") - || value.equals("true") || value.equals("yes"); - } - - return null; - } - - private static List getInfoTagList(InputStream in, String key, - String separator) throws IOException { - List list = new ArrayList(); - String tt = getInfoTag(in, key); - if (tt != null) { - for (String tag : tt.split(separator)) { - list.add(tag.trim()); - } - } - - return list; - } - - /** - * Return the value of the given tag in the .info file if present. - * - * @param key - * the tag key - * - * @return the value or NULL - * - * @throws IOException - * in case of I/O error - */ - private static String getInfoTag(InputStream in, String key) - throws IOException { - key = "^" + key + "="; - - if (in != null) { - in.reset(); - String value = BasicSupport.getLine(in, key, 0); - if (value != null && !value.isEmpty()) { - value = value.trim().substring(key.length() - 1).trim(); - if (value.startsWith("'") && value.endsWith("'") - || value.startsWith("\"") && value.endsWith("\"")) { - value = value.substring(1, value.length() - 1).trim(); - } - - return value; - } - } - - return null; - } -}