X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Fsupported%2FInfoText.java;h=2af8c7e2f4880139540aa6f7f4e4895fd6e4742d;hb=d9691f01bac1ea36d234f240534ae8bb94ab522a;hp=021b8c0b47abec25bd328e01554aa0586b7e54f7;hpb=d011400048cae6884f0d94c320498429b45fb48a;p=nikiroo-utils.git diff --git a/src/be/nikiroo/fanfix/supported/InfoText.java b/src/be/nikiroo/fanfix/supported/InfoText.java index 021b8c0..2af8c7e 100644 --- a/src/be/nikiroo/fanfix/supported/InfoText.java +++ b/src/be/nikiroo/fanfix/supported/InfoText.java @@ -1,15 +1,10 @@ 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 @@ -21,228 +16,17 @@ import be.nikiroo.fanfix.Instance; * @author niki */ class InfoText extends Text { - @Override - public String getSourceName() { - return "info-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; + protected File getInfoFile() { + return new File(assureNoTxt(getSourceFile()).getPath() + ".info"); } @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; - 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(); - } - } 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 null; + protected MetaData getMeta() throws IOException { + return InfoReader.readMeta(getInfoFile(), true); } @Override protected boolean supports(URL url) { - if ("file".equals(url.getProtocol())) { - File file; - try { - file = new File(url.toURI()); - file = new File(file.getPath() + ".info"); - } catch (URISyntaxException e) { - Instance.syserr(e); - file = null; - } - - return file != null && file.exists(); - } - - 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 = "^" + 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; + return supports(url, true); } }