X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=supported%2FInfoReader.java;h=22afc92f8d3521bfc16ba05e38461ac2f4ef77a9;hb=e992c260c059c53c4aabc980db85efd58f190205;hp=206464f45a0a2e7c989e6fa6719afa22ca61c9cb;hpb=bff19b54d345ceb9e14aef616b53c013e93a0417;p=fanfix.git diff --git a/supported/InfoReader.java b/supported/InfoReader.java index 206464f..22afc92 100644 --- a/supported/InfoReader.java +++ b/supported/InfoReader.java @@ -11,27 +11,30 @@ import java.util.Scanner; import be.nikiroo.fanfix.Instance; import be.nikiroo.fanfix.bundles.Config; +import be.nikiroo.fanfix.data.Chapter; import be.nikiroo.fanfix.data.MetaData; +import be.nikiroo.utils.IOUtils; 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()); + 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) { throw new IOException("File is null"); } + + MetaData meta = null; if (infoFile.exists()) { InputStream in = new MarkableFileInputStream(infoFile); try { - MetaData meta = createMeta(infoFile.toURI().toURL(), in, + meta = createMeta(infoFile.toURI().toURL(), in, withCover); // Some old .info files were using UUID for URL... @@ -46,9 +49,6 @@ public class InfoReader { // formats have a copy of the original text file) if (!hasIt(meta.getTitle(), meta.getAuthor(), meta.getDate(), meta.getUrl())) { - - // TODO: not nice, would be better to do it properly... - String base = infoFile.getPath(); if (base.endsWith(".info")) { base = base.substring(0, @@ -62,57 +62,94 @@ 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; + } finally { in.close(); } } + if (meta != null) { + try { + File summaryFile = new File(infoFile.getAbsolutePath() + .replaceFirst("\\.info$", ".summary")); + InputStream in = new MarkableFileInputStream(summaryFile); + try { + String content = IOUtils.readSmallStream(in); + Chapter desc = bsPara.makeChapter(null, null, 0, + "Description", content, false, null); + meta.setResume(desc); + } finally { + in.close(); + } + } catch (IOException e) { + // ignore absent or bad summary + } + + return meta; + } + throw new FileNotFoundException( "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 { + // TODO: not nice, would be better to do it properly... + 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.