X-Git-Url: http://git.nikiroo.be/?p=fanfix.git;a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Fsupported%2FE621.java;h=665bdd5100cb0e7ef2b10ebc972a0c0729dca607;hp=2455c8753e822910785cbc1a83a150bee1d35d37;hb=d98a29006897a1ae31ff3a039afe9643a48e0704;hpb=08fe2e33007063e30fe22dc1d290f8afaa18eb1d diff --git a/src/be/nikiroo/fanfix/supported/E621.java b/src/be/nikiroo/fanfix/supported/E621.java index 2455c87..665bdd5 100644 --- a/src/be/nikiroo/fanfix/supported/E621.java +++ b/src/be/nikiroo/fanfix/supported/E621.java @@ -1,5 +1,6 @@ package be.nikiroo.fanfix.supported; +import java.awt.image.BufferedImage; import java.io.IOException; import java.io.InputStream; import java.net.URL; @@ -10,6 +11,7 @@ import java.util.Scanner; import be.nikiroo.fanfix.Instance; import be.nikiroo.fanfix.data.Chapter; +import be.nikiroo.fanfix.data.MetaData; import be.nikiroo.fanfix.data.Story; import be.nikiroo.utils.StringUtils; @@ -30,8 +32,25 @@ class E621 extends BasicSupport { } @Override - public boolean isImageDocument(URL source, InputStream in) { - return true; + protected MetaData getMeta(URL source, InputStream in) throws IOException { + MetaData meta = new MetaData(); + + meta.setTitle(getTitle(reset(in))); + meta.setAuthor(getAuthor(source, reset(in))); + meta.setDate(""); + meta.setTags(new ArrayList()); // TODDO ??? + meta.setSource(getSourceName()); + meta.setUrl(source.toString()); + meta.setPublisher(getSourceName()); + meta.setUuid(source.toString()); + meta.setLuid(""); + meta.setLang("EN"); + meta.setSubject(""); + meta.setType(getType().toString()); + meta.setImageDocument(true); + meta.setCover(getCover(source)); + + return meta; } @Override @@ -66,8 +85,22 @@ class E621 extends BasicSupport { return true; } - @Override - protected String getAuthor(URL source, InputStream in) throws IOException { + private BufferedImage getCover(URL source) throws IOException { + InputStream in = Instance.getCache().open(source, this, true); + String images = getChapterContent(new URL(source.toString() + "?page=" + + 1), in, 1); + if (!images.isEmpty()) { + int pos = images.indexOf('\n'); + if (pos >= 0) { + images = images.substring(1, pos - 1); + return getImage(this, null, images); + } + } + + return null; + } + + private String getAuthor(URL source, InputStream in) throws IOException { String author = getLine(in, "href=\"/post/show/", 0); if (author != null) { String key = "href=\""; @@ -79,24 +112,28 @@ class E621 extends BasicSupport { author = author.substring(0, pos - 1); String page = source.getProtocol() + "://" + source.getHost() + author; - InputStream pageIn = Instance.getCache().open( - new URL(page), this, false); try { - key = "class=\"tag-type-artist\""; - author = getLine(pageIn, key, 0); - if (author != null) { - pos = author.indexOf("= 0) { - author = author.substring(pos); - pos = author.indexOf(""); + InputStream pageIn = Instance.getCache().open( + new URL(page), this, false); + try { + key = "class=\"tag-type-artist\""; + author = getLine(pageIn, key, 0); + if (author != null) { + pos = author.indexOf("= 0) { - author = author.substring(0, pos); - return StringUtils.unhtml(author); + author = author.substring(pos); + pos = author.indexOf(""); + if (pos >= 0) { + author = author.substring(0, pos); + return StringUtils.unhtml(author); + } } } + } finally { + pageIn.close(); } - } finally { - pageIn.close(); + } catch (Exception e) { + // No author found } } } @@ -105,23 +142,7 @@ class E621 extends BasicSupport { return null; } - @Override - protected String getDate(URL source, InputStream in) throws IOException { - return null; - } - - @Override - protected String getSubject(URL source, InputStream in) throws IOException { - return null; - } - - @Override - protected URL getCover(URL source, InputStream in) throws IOException { - return null; - } - - @Override - protected String getTitle(URL source, InputStream in) throws IOException { + private String getTitle(InputStream in) throws IOException { String title = getLine(in, "", 0); if (title != null) { int pos = title.indexOf('>'); @@ -137,7 +158,7 @@ class E621 extends BasicSupport { title = title.substring("Pool:".length()); } - title = title.trim(); + title = StringUtils.unhtml(title).trim(); } return title; @@ -232,7 +253,7 @@ class E621 extends BasicSupport { scan.useDelimiter("\\n"); while (scan.hasNext()) { String line = scan.next(); - if (line.contains("class=\"preview\"")) { + if (line.contains("class=\"preview")) { for (int pos = line.indexOf(key); pos >= 0; pos = line.indexOf( key, pos + key.length())) { int endPos = line.indexOf("\"", pos);