X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Fsupported%2FE621.java;h=72c68b1a20e589f206275444390e1aaf0c72b247;hb=16a81ef7656c5c692fb831927e75edde25dd77a0;hp=45c110f283ebaf825d5f7c65361917333f69add9;hpb=7d0d2be6b0e9bd4e03ac8a7d749f49d6d1436242;p=nikiroo-utils.git diff --git a/src/be/nikiroo/fanfix/supported/E621.java b/src/be/nikiroo/fanfix/supported/E621.java index 45c110f..72c68b1 100644 --- a/src/be/nikiroo/fanfix/supported/E621.java +++ b/src/be/nikiroo/fanfix/supported/E621.java @@ -12,6 +12,8 @@ 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.Image; +import be.nikiroo.utils.Progress; import be.nikiroo.utils.StringUtils; /** @@ -44,18 +46,19 @@ class E621 extends BasicSupport { meta.setUuid(source.toString()); meta.setLuid(""); meta.setLang("EN"); - meta.setSubject(""); + meta.setSubject("Furry"); meta.setType(getType().toString()); meta.setImageDocument(true); - meta.setCover(null); + meta.setCover(getCover(source)); + meta.setFakeCover(true); return meta; } @Override - public Story process(URL url) throws IOException { + public Story process(URL url, Progress pg) throws IOException { // There is no chapters on e621, just pagination... - Story story = super.process(url); + Story story = super.process(url, pg); Chapter only = new Chapter(1, null); for (Chapter chap : story) { @@ -84,7 +87,22 @@ class E621 extends BasicSupport { return true; } - private String getAuthor(URL source, InputStream in) throws IOException { + private Image getCover(URL source) throws IOException { + InputStream in = Instance.getCache().open(source, this, true); + String images = getChapterContent(new URL(source.toString() + "?page=" + + 1), in, 1, null); + if (!images.isEmpty()) { + int pos = images.indexOf("
"); + if (pos >= 0) { + images = images.substring(1, pos - 1); + return getImage(this, null, images); + } + } + + return null; + } + + private String getAuthor(URL source, InputStream in) { String author = getLine(in, "href=\"/post/show/", 0); if (author != null) { String key = "href=\""; @@ -126,7 +144,7 @@ class E621 extends BasicSupport { return null; } - private String getTitle(InputStream in) throws IOException { + private String getTitle(InputStream in) { String title = getLine(in, "", 0); if (title != null) { int pos = title.indexOf('>'); @@ -173,8 +191,8 @@ class E621 extends BasicSupport { } @Override - protected List<Entry<String, URL>> getChapters(URL source, InputStream in) - throws IOException { + protected List<Entry<String, URL>> getChapters(URL source, InputStream in, + Progress pg) throws IOException { List<Entry<String, URL>> urls = new ArrayList<Entry<String, URL>>(); int last = 1; // no pool/show when only one page @@ -204,14 +222,17 @@ class E621 extends BasicSupport { final String key = Integer.toString(i); final URL value = new URL(source.toString() + "?page=" + i); urls.add(new Entry<String, URL>() { + @Override public URL setValue(URL value) { return null; } + @Override public URL getValue() { return value; } + @Override public String getKey() { return key; } @@ -222,8 +243,8 @@ class E621 extends BasicSupport { } @Override - protected String getChapterContent(URL source, InputStream in, int number) - throws IOException { + protected String getChapterContent(URL source, InputStream in, int number, + Progress pg) throws IOException { StringBuilder builder = new StringBuilder(); String staticSite = "https://static1.e621.net"; if (source.getHost().contains("e926")) { @@ -237,7 +258,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); @@ -250,7 +271,7 @@ class E621 extends BasicSupport { id = id.substring(0, dotPos); builder.append("["); builder.append(id); - builder.append("]\n"); + builder.append("]<br/>"); } } }