X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Fsupported%2FInfoText.java;h=8d4d97d935dc4ed263c80b20a836c790bcf683bd;hb=7d0d2be6b0e9bd4e03ac8a7d749f49d6d1436242;hp=a627714a057eadf781c52558f249664756360912;hpb=08fe2e33007063e30fe22dc1d290f8afaa18eb1d;p=fanfix.git diff --git a/src/be/nikiroo/fanfix/supported/InfoText.java b/src/be/nikiroo/fanfix/supported/InfoText.java index a627714..8d4d97d 100644 --- a/src/be/nikiroo/fanfix/supported/InfoText.java +++ b/src/be/nikiroo/fanfix/supported/InfoText.java @@ -1,15 +1,13 @@ package be.nikiroo.fanfix.supported; import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; -import java.net.MalformedURLException; import java.net.URISyntaxException; import java.net.URL; -import java.util.List; import be.nikiroo.fanfix.Instance; +import be.nikiroo.fanfix.data.MetaData; /** * Support class for .info text files ({@link Text} files with a @@ -27,160 +25,37 @@ class InfoText extends Text { } @Override - protected String getTitle(URL source, InputStream in) throws IOException { - String tag = getInfoTag(source, "TITLE"); - if (tag != null) { - return tag; - } - - return super.getTitle(source, in); - } - - @Override - protected String getAuthor(URL source, InputStream in) throws IOException { - String tag = getInfoTag(source, "AUTHOR"); - if (tag != null) { - return tag; - } - - return super.getAuthor(source, in); - } - - @Override - protected String getDate(URL source, InputStream in) throws IOException { - String tag = getInfoTag(source, "DATE"); - if (tag != null) { - return tag; - } - - return super.getDate(source, in); - } - - @Override - protected String getSubject(URL source, InputStream in) throws IOException { - String tag = getInfoTag(source, "SUBJECT"); - if (tag != null) { - return tag; - } - - return super.getSubject(source, in); - } - - @Override - protected String getLang(URL source, InputStream in) throws IOException { - String tag = getInfoTag(source, "LANG"); - if (tag != null) { - return tag; - } - - return super.getLang(source, in); - } - - @Override - protected String getPublisher(URL source, InputStream in) - throws IOException { - String tag = getInfoTag(source, "PUBLISHER"); - if (tag != null) { - return tag; - } - - return super.getPublisher(source, in); - } - - @Override - protected String getUuid(URL source, InputStream in) throws IOException { - String tag = getInfoTag(source, "UUID"); - if (tag != null) { - return tag; - } - - return super.getUuid(source, in); - } - - @Override - protected String getLuid(URL source, InputStream in) throws IOException { - String tag = getInfoTag(source, "LUID"); - if (tag != null) { - return tag; - } - - return super.getLuid(source, in); - } - - @Override - protected List getTags(URL source, InputStream in) - throws IOException { - List tags = super.getTags(source, in); - - String tt = getInfoTag(source, "TAGS"); - if (tt != null) { - for (String tag : tt.split(",")) { - tags.add(tag.trim()); - } - } - - return tags; - } - - @Override - public boolean isImageDocument(URL source, InputStream in) - throws IOException { - String tag = getInfoTag(source, "IMAGES_DOCUMENT"); - if (tag != null) { - return tag.trim().toLowerCase().equals("true"); - } - - return super.isImageDocument(source, in); - } - - @Override - protected URL getCover(URL source, InputStream in) { - File file; + protected MetaData getMeta(URL source, InputStream in) throws IOException { try { - file = new File(source.toURI()); - file = new File(file.getPath() + ".info"); - } catch (URISyntaxException e) { - Instance.syserr(e); - file = null; - } - - String path = null; - if (file != null && file.exists()) { - try { - InputStream infoIn = new FileInputStream(file); - try { - String key = "COVER="; - String tt = getLine(infoIn, key, 0); - if (tt != null && !tt.isEmpty()) { - tt = tt.substring(key.length()).trim(); - if (tt.startsWith("'") && tt.endsWith("'")) { - tt = tt.substring(1, tt.length() - 1).trim(); - } - - URL cover = getImage(source, tt); - if (cover != null) { - path = cover.getFile(); - } - } - } finally { - infoIn.close(); + MetaData meta = InfoReader.readMeta(new File(new File(source + .toURI()).getPath() + ".info")); + + // Some old .info files don't have those now required fields... + String test = meta.getTitle() == null ? "" : meta.getTitle(); + test += meta.getAuthor() == null ? "" : meta.getAuthor(); + test += meta.getDate() == null ? "" : meta.getDate(); + test += meta.getUrl() == null ? "" : meta.getUrl(); + if (test.isEmpty()) { + MetaData superMeta = super.getMeta(source, reset(in)); + if (meta.getTitle() == null || meta.getTitle().isEmpty()) { + meta.setTitle(superMeta.getTitle()); + } + if (meta.getAuthor() == null || meta.getAuthor().isEmpty()) { + meta.setAuthor(superMeta.getAuthor()); + } + if (meta.getDate() == null || meta.getDate().isEmpty()) { + meta.setDate(superMeta.getDate()); + } + if (meta.getUrl() == null || meta.getUrl().isEmpty()) { + meta.setUrl(superMeta.getUrl()); } - } catch (MalformedURLException e) { - Instance.syserr(e); - } catch (IOException e) { - Instance.syserr(e); } - } - if (path != null) { - try { - return new File(path).toURI().toURL(); - } catch (MalformedURLException e) { - Instance.syserr(e); - } - } + return meta; - return null; + } catch (URISyntaxException e) { + throw new IOException("Cannot parse URL to file: " + source, e); + } } @Override @@ -200,49 +75,4 @@ class InfoText extends Text { return false; } - - /** - * Return the value of the given tag in the .info file if present. - * - * @param source - * the source story {@link URL} - * @param key - * the tag key - * - * @return the value or NULL - * - * @throws IOException - * in case of I/O error - */ - private String getInfoTag(URL source, String key) throws IOException { - key += "="; - - File file; - try { - file = new File(source.toURI()); - file = new File(file.getPath() + ".info"); - } catch (URISyntaxException e) { - throw new IOException(e); - } - - if (file.exists()) { - InputStream infoIn = new FileInputStream(file); - try { - String value = getLine(infoIn, key, 0); - if (value != null && !value.isEmpty()) { - value = value.trim().substring(key.length()).trim(); - if (value.startsWith("'") && value.endsWith("'") - || value.startsWith("\"") && value.endsWith("\"")) { - value = value.substring(1, value.length() - 1).trim(); - } - - return value; - } - } finally { - infoIn.close(); - } - } - - return null; - } }