X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=supported%2FInfoReader.java;h=d5eeeb1d9190a022db4bf360cb243710decc493e;hb=002972e9de731678035d56304d75a6d9e8233635;hp=15a4f5c4e7bc1234e45d157411fb6279eb7b9ac5;hpb=31e27ee3108543141f9bfd2efce8c0fa024460a1;p=nikiroo-utils.git diff --git a/supported/InfoReader.java b/supported/InfoReader.java index 15a4f5c..d5eeeb1 100644 --- a/supported/InfoReader.java +++ b/supported/InfoReader.java @@ -9,8 +9,6 @@ import java.util.ArrayList; import java.util.List; import java.util.Scanner; -import org.jsoup.nodes.Document; - import be.nikiroo.fanfix.Instance; import be.nikiroo.fanfix.bundles.Config; import be.nikiroo.fanfix.data.MetaData; @@ -36,6 +34,13 @@ public class InfoReader { MetaData meta = createMeta(infoFile.toURI().toURL(), in, withCover); + // Some old .info files were using UUID for URL... + if (!hasIt(meta.getUrl()) && meta.getUuid() != null + && (meta.getUuid().startsWith("http://") + || meta.getUuid().startsWith("https://"))) { + meta.setUrl(meta.getUuid()); + } + // Some old .info files don't have those now required fields... // So we check if we can find the info in another way (many // formats have a copy of the original text file) @@ -43,7 +48,6 @@ public class InfoReader { meta.getUrl())) { // TODO: not nice, would be better to do it properly... - String base = infoFile.getPath(); if (base.endsWith(".info")) { base = base.substring(0, @@ -57,45 +61,8 @@ public class InfoReader { textFile = new File(base + ".text"); } - if (textFile.exists()) { - final URL source = textFile.toURI().toURL(); - final MetaData[] superMetaA = new MetaData[1]; - @SuppressWarnings("unused") - Text unused = new Text() { - private boolean loaded = loadDocument(); - - @Override - public SupportType getType() { - return SupportType.TEXT; - } - - protected boolean loadDocument() - throws IOException { - loadDocument(source); - superMetaA[0] = getMeta(); - return true; - } - - @Override - protected Image getCover(File sourceFile) { - return null; - } - }; - - MetaData superMeta = superMetaA[0]; - if (!hasIt(meta.getTitle())) { - meta.setTitle(superMeta.getTitle()); - } - if (!hasIt(meta.getAuthor())) { - meta.setAuthor(superMeta.getAuthor()); - } - if (!hasIt(meta.getDate())) { - meta.setDate(superMeta.getDate()); - } - if (!hasIt(meta.getUrl())) { - meta.setUrl(superMeta.getUrl()); - } - } + completeMeta(textFile, meta); + // } return meta; @@ -108,6 +75,60 @@ public class InfoReader { "File given as argument does not exists: " + infoFile.getAbsolutePath()); } + + /** + * Complete the given {@link MetaData} with the original text file if needed + * and possible. + * + * @param textFile + * the original text file + * @param meta + * the {@link MetaData} to complete if needed and possible + * + * @throws IOException + * in case of I/O errors + */ + static public void completeMeta(File textFile, + MetaData meta) throws IOException { + if (textFile != null && textFile.exists()) { + final URL source = textFile.toURI().toURL(); + final MetaData[] superMetaA = new MetaData[1]; + @SuppressWarnings("unused") + Text unused = new Text() { + private boolean loaded = loadDocument(); + + @Override + public SupportType getType() { + return SupportType.TEXT; + } + + protected boolean loadDocument() throws IOException { + loadDocument(source); + superMetaA[0] = getMeta(); + return true; + } + + @Override + protected Image getCover(File sourceFile) { + return null; + } + }; + + MetaData superMeta = superMetaA[0]; + if (!hasIt(meta.getTitle())) { + meta.setTitle(superMeta.getTitle()); + } + if (!hasIt(meta.getAuthor())) { + meta.setAuthor(superMeta.getAuthor()); + } + if (!hasIt(meta.getDate())) { + meta.setDate(superMeta.getDate()); + } + if (!hasIt(meta.getUrl())) { + meta.setUrl(superMeta.getUrl()); + } + } + } /** * Check if we have non-empty values for all the given {@link String}s. @@ -133,7 +154,7 @@ public class InfoReader { meta.setTitle(getInfoTag(in, "TITLE")); meta.setAuthor(getInfoTag(in, "AUTHOR")); - meta.setDate(getInfoTag(in, "DATE")); + meta.setDate(bsHelper.formatDate(getInfoTag(in, "DATE"))); meta.setTags(getInfoTagList(in, "TAGS", ",")); meta.setSource(getInfoTag(in, "SOURCE")); meta.setUrl(getInfoTag(in, "URL")); @@ -159,7 +180,8 @@ public class InfoReader { } catch (NumberFormatException e) { meta.setWords(0); } - meta.setCreationDate(getInfoTag(in, "CREATION_DATE")); + meta.setCreationDate( + bsHelper.formatDate(getInfoTag(in, "CREATION_DATE"))); meta.setFakeCover(Boolean.parseBoolean(getInfoTag(in, "FAKE_COVER"))); if (withCover && meta.getCover() == null) { @@ -254,11 +276,21 @@ public class InfoReader { String value = 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("\"")) { + if (value.length() > 1 && // + (value.startsWith("'") && value.endsWith("'") + || value.startsWith("\"") + && value.endsWith("\""))) { value = value.substring(1, value.length() - 1).trim(); } + // Some old files ended up with TITLE="'xxxxx'" + if ("^TITLE=".equals(key)) { + if (value.startsWith("'") && value.endsWith("'") + && value.length() > 1) { + value = value.substring(1, value.length() - 1).trim(); + } + } + return value; } }