X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;ds=inline;f=supported%2FE621.java;h=36b9dad3c9bf3520053e938539a9db149e134695;hb=HEAD;hp=adf8d28c8b2853a01fddc02b239346bec9f28a0e;hpb=5f3671e17febc5b7f6abbfc62c66c4045d47ec8d;p=nikiroo-utils.git diff --git a/supported/E621.java b/supported/E621.java deleted file mode 100644 index adf8d28..0000000 --- a/supported/E621.java +++ /dev/null @@ -1,432 +0,0 @@ -package be.nikiroo.fanfix.supported; - -import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.net.MalformedURLException; -import java.net.URL; -import java.net.URLDecoder; -import java.util.AbstractMap; -import java.util.ArrayList; -import java.util.Date; -import java.util.LinkedList; -import java.util.List; -import java.util.Map.Entry; - -import org.json.JSONArray; -import org.json.JSONException; -import org.json.JSONObject; -import org.jsoup.helper.DataUtil; -import org.jsoup.nodes.Document; -import org.jsoup.nodes.Element; - -import be.nikiroo.fanfix.Instance; -import be.nikiroo.fanfix.bundles.Config; -import be.nikiroo.fanfix.data.MetaData; -import be.nikiroo.utils.Image; -import be.nikiroo.utils.Progress; -import be.nikiroo.utils.StringUtils; -import be.nikiroo.utils.Version; - -/** - * Support class for e621.net and - * e926.net, a Furry website supporting comics, - * including some of MLP. - *
- * e926.net only shows the "clean" images and
- * comics, but it can be difficult to browse.
- *
- * @author niki
- */
-class E621 extends BasicSupport {
- @Override
- protected boolean supports(URL url) {
- String host = url.getHost();
- if (host.startsWith("www.")) {
- host = host.substring("www.".length());
- }
-
- return ("e621.net".equals(host) || "e926.net".equals(host))
- && (isPool(url) || isSearchOrSet(url));
- }
-
- @Override
- protected boolean isHtml() {
- return true;
- }
-
- @Override
- protected MetaData getMeta() throws IOException {
- MetaData meta = new MetaData();
-
- meta.setTitle(getTitle());
- meta.setAuthor(getAuthor());
- meta.setDate(bsHelper.formatDate(getDate()));
- meta.setTags(getTags());
- meta.setSource(getType().getSourceName());
- meta.setUrl(getSource().toString());
- meta.setPublisher(getType().getSourceName());
- meta.setUuid(getSource().toString());
- meta.setLuid("");
- meta.setLang("en");
- meta.setSubject("Furry");
- meta.setType(getType().toString());
- meta.setImageDocument(true);
- meta.setCover(getCover());
- meta.setFakeCover(true);
-
- return meta;
- }
-
- @Override
- protected String getDesc() throws IOException {
- if (isSearchOrSet(getSource())) {
- StringBuilder builder = new StringBuilder();
- builder.append("A collection of images from ")
- .append(getSource().getHost()).append("\n") //
- .append("\tTime of creation: "
- + StringUtils.fromTime(new Date().getTime()))
- .append("\n") //
- .append("\tTags: ");//
- for (String tag : getTags()) {
- builder.append("\t\t").append(tag);
- }
-
- return builder.toString();
- }
-
- if (isPool(getSource())) {
- Element el = getSourceNode().getElementById("description");
- if (el != null) {
- return el.text();
- }
- }
-
- return null;
- }
-
- @Override
- protected List
");
- } catch (JSONException e) {
- // Can be NULL if filtered
- // When the value is NULL, we get an exception
- // but the "has" method still returns true
- Instance.getInstance().getTraceHandler()
- .error("Cannot get image for chapter " + number + " of "
- + getSource());
- }
- }
-
- return builder.toString();
- }
-
- @Override
- protected URL getCanonicalUrl(URL source) {
- // Convert search-pools into proper pools
- if (source.getPath().equals("/posts") && source.getQuery() != null
- && source.getQuery().startsWith("tags=pool%3A")) {
- String poolNumber = source.getQuery()
- .substring("tags=pool%3A".length());
- try {
- Integer.parseInt(poolNumber);
- String base = source.getProtocol() + "://" + source.getHost();
- if (source.getPort() != -1) {
- base = base + ":" + source.getPort();
- }
- source = new URL(base + "/pools/" + poolNumber);
- } catch (NumberFormatException e) {
- // Not a simple pool, skip
- } catch (MalformedURLException e) {
- // Cannot happen
- }
- }
-
- if (isSetOriginalUrl(source)) {
- try {
- Document doc = DataUtil.load(Instance.getInstance().getCache()
- .open(source, this, false), "UTF-8", source.toString());
- for (Element shortname : doc
- .getElementsByClass("set-shortname")) {
- for (Element el : shortname.getElementsByTag("a")) {
- if (!el.attr("href").isEmpty())
- return new URL(el.absUrl("href"));
- }
- }
- } catch (IOException e) {
- Instance.getInstance().getTraceHandler().error(e);
- }
- }
-
- if (isPool(source)) {
- try {
- return new URL(
- source.toString().replace("/pool/show/", "/pools/"));
- } catch (MalformedURLException e) {
- }
- }
-
- return super.getCanonicalUrl(source);
- }
-
- private String getTitle() {
- String title = "";
-
- Element el = getSourceNode().getElementsByTag("title").first();
- if (el != null) {
- title = el.text().trim();
- }
-
- for (String s : new String[] { "e621", "-", "e621", "Pool", "-" }) {
- if (title.startsWith(s)) {
- title = title.substring(s.length()).trim();
- }
- if (title.endsWith(s)) {
- title = title.substring(0, title.length() - s.length()).trim();
- }
- }
-
- if (isSearchOrSet(getSource())) {
- title = title.isEmpty() ? "e621" : "[e621] " + title;
- }
-
- return title;
- }
-
- private String getAuthor() {
- List