X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Fsupported%2FYiffStar.java;h=a2126db5fcfc55d991a336f9111b2430f9427e32;hb=ed08c17162aa8cbdb0cbe6a6045815b987236b9f;hp=e9c10c9f06eb4d2d333976e039d09e8adfb37305;hpb=a4143cd74a90e17a811a4581cbeb213fed1f6304;p=fanfix.git diff --git a/src/be/nikiroo/fanfix/supported/YiffStar.java b/src/be/nikiroo/fanfix/supported/YiffStar.java index e9c10c9..a2126db 100644 --- a/src/be/nikiroo/fanfix/supported/YiffStar.java +++ b/src/be/nikiroo/fanfix/supported/YiffStar.java @@ -3,15 +3,19 @@ package be.nikiroo.fanfix.supported; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.InputStream; +import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Scanner; import be.nikiroo.fanfix.Instance; +import be.nikiroo.fanfix.bundles.Config; import be.nikiroo.fanfix.data.MetaData; +import be.nikiroo.utils.Progress; import be.nikiroo.utils.StringUtils; /** @@ -65,24 +69,42 @@ class YiffStar extends BasicSupport { } @Override - public Map getCookies() { - // TODO - // Cookies will actually be retained by the cache manager once logged in - // But we need to connect here and notify the cache manager - - return super.getCookies(); + public void login() throws IOException { + // Note: this should not be necessary anymore + // (the "/guest" trick is enough) + String login = Instance.getConfig().getString( + Config.LOGIN_YIFFSTAR_USER); + String password = Instance.getConfig().getString( + Config.LOGIN_YIFFSTAR_PASS); + + if (login != null && !login.isEmpty() && password != null + && !password.isEmpty()) { + Map post = new HashMap(); + post.put("sfLoginUsername", login); + post.put("sfLoginPassword", password); + post.put("YII_CSRF_TOKEN", ""); + + // Cookies will actually be retained by the cache manager once + // logged in + Instance.getCache() + .openNoCache(new URL("https://www.sofurry.com/user/login"), + this, post).close(); + } } @Override public URL getCanonicalUrl(URL source) throws IOException { if (source.getPath().startsWith("/view")) { + source = new URL(source.toString() + "/guest"); InputStream in = Instance.getCache().open(source, this, false); String line = getLine(in, "/browse/folder/", 0); - String[] tab = line.split("\""); - if (tab.length > 1) { - String groupUrl = source.getProtocol() + "://" - + source.getHost() + tab[1]; - return new URL(groupUrl); + if (line != null) { + String[] tab = line.split("\""); + if (tab.length > 1) { + String groupUrl = source.getProtocol() + "://" + + source.getHost() + tab[1]; + return guest(groupUrl); + } } } @@ -109,7 +131,7 @@ class YiffStar extends BasicSupport { private BufferedImage getCover(URL source, InputStream in) throws IOException { - List> chaps = getChapters(source, in); + List> chaps = getChapters(source, in, null); if (!chaps.isEmpty()) { in = Instance.getCache().open(chaps.get(0).getValue(), this, true); String line = getLine(in, " name=\"og:image\"", 0); @@ -164,8 +186,8 @@ class YiffStar extends BasicSupport { } @Override - protected List> getChapters(URL source, InputStream in) - throws IOException { + protected List> getChapters(URL source, InputStream in, + Progress pg) throws IOException { List> urls = new ArrayList>(); @SuppressWarnings("resource") @@ -181,7 +203,7 @@ class YiffStar extends BasicSupport { link = source.getProtocol() + "://" + source.getHost() + link; } - final URL value = new URL(link); + final URL value = guest(link); final String key = StringUtils.unhtml(line).trim(); urls.add(new Entry() { public URL setValue(URL value) { @@ -204,8 +226,8 @@ class YiffStar 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 startAt = "id=\"sfContentBody"; @@ -226,10 +248,33 @@ class YiffStar extends BasicSupport { if (ok) { builder.append(line); - builder.append('\n'); + builder.append(' '); } } return builder.toString(); } + + /** + * Return a {@link URL} from the given link, but add the "/guest" part to it + * to make sure we don't need to be logged-in to see it. + * + * @param link + * the link + * + * @return the {@link URL} + * + * @throws MalformedURLException + */ + private URL guest(String link) throws MalformedURLException { + if (link.contains("?")) { + if (link.contains("/?")) { + return new URL(link.replace("?", "guest?")); + } else { + return new URL(link.replace("?", "/guest?")); + } + } else { + return new URL(link + "/guest"); + } + } }