X-Git-Url: https://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Fsupported%2FMangaHub.java;h=7ba12b979e9e93ac7f2426c4a588aa99369d6fd6;hb=258e065f81071a861711ef935dca3ec5563f4360;hp=706a59114adf62949044cf1eb52b8347d38749dc;hpb=04ae006fdc06b9cbad52f9851ffcb5ad58068318;p=fanfix.git diff --git a/src/be/nikiroo/fanfix/supported/MangaHub.java b/src/be/nikiroo/fanfix/supported/MangaHub.java deleted file mode 100644 index 706a591..0000000 --- a/src/be/nikiroo/fanfix/supported/MangaHub.java +++ /dev/null @@ -1,214 +0,0 @@ -package be.nikiroo.fanfix.supported; - -import java.io.IOException; -import java.net.HttpURLConnection; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.AbstractMap; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Map.Entry; - -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; - -/** - * Support class for MangaHub, a website - * dedicated to Manga. - * - * @author niki - */ -class MangaHub extends BasicSupport { - @Override - protected boolean isHtml() { - return true; - } - - @Override - protected MetaData getMeta() throws IOException { - MetaData meta = new MetaData(); - - meta.setTitle(getTitle()); - meta.setDate(""); - meta.setAuthor(getAuthor()); - 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("manga"); - meta.setType(getType().toString()); - meta.setImageDocument(true); - meta.setCover(getCover()); - - return meta; - } - - private String getTitle() { - Element doc = getSourceNode(); - - Element el = doc.getElementsByTag("h1").first(); - if (el != null) { - return StringUtils.unhtml(el.text()).trim(); - } - - return null; - } - - private String getAuthor() { - String author = ""; - - Element el = getSourceNode().select("h1+div span:not([class])").first(); - if (el != null) - author = StringUtils.unhtml(el.text()).trim(); - return author; - } - - private List getTags() { - return getListA("genre-label"); - } - - private List getListA(String uniqueClass) { - List list = new ArrayList(); - - Element doc = getSourceNode(); - Element el = doc.getElementsByClass(uniqueClass).first(); - if (el != null) { - for (Element valueA : el.getElementsByTag("a")) { - list.add(StringUtils.unhtml(valueA.text()).trim()); - } - } - - return list; - } - - @Override - protected String getDesc() { - Element doc = getSourceNode(); - Element title = doc.getElementsByClass("fullcontent").first(); - if (title != null) { - return StringUtils.unhtml(title.text()).trim(); - } - - return null; - } - - private Image getCover() { - Element doc = getSourceNode(); - Element cover = doc.getElementsByClass("manga-thumb").first(); - if (cover != null) { - try { - return bsImages.getImage(this, new URL(cover.absUrl("src"))); - } catch (MalformedURLException e) { - Instance.getInstance().getTraceHandler().error(e); - } - } - - return null; - } - - @Override - protected List> getChapters(Progress pg) { - List> urls = new ArrayList>(); - - Element doc = getSourceNode(); - for (Element el : doc.getElementsByClass("list-group-item")) { - Element urlEl = el.getElementsByTag("a").first(); - if (urlEl == null) - continue; - - String url = urlEl.absUrl("href"); - - String title = ""; - el = el.getElementsByClass("text-secondary").first(); - if (el != null) { - title = StringUtils.unhtml(el.text()).trim(); - } - - try { - urls.add(new AbstractMap.SimpleEntry(title, new URL(url))); - } catch (Exception e) { - Instance.getInstance().getTraceHandler().error(e); - } - } - - // by default, the chapters are in reversed order - Collections.reverse(urls); - - return urls; - } - - @Override - protected String getChapterContent(URL chapUrl, int number, Progress pg) throws IOException { - if (pg == null) { - pg = new Progress(); - } - - // 1. Get the title and chapter url part - String path = chapUrl.getPath(); - if (path.endsWith("/")) { - path = path.substring(0, path.length() - "/".length()); - } - String tab[] = path.split("/"); - String chap = tab[tab.length - 1]; - String title = tab[tab.length - 2]; - - if (chap.startsWith("chapter-")) { - chap = chap.substring("chapter-".length()); - } - - // 2. generate an image base - String base = "https://img.mghubcdn.com/file/imghub/" + title + "/" + chap + "/"; - - // 3. add each chapter - StringBuilder builder = new StringBuilder(); - - int i = 1; - String url = base + i + ".jpg"; - while (getHttpStatus(new URL(url)) != 404) { - builder.append("["); - builder.append(url); - builder.append("]
"); - - i++; - url = base + i + ".jpg"; - } - - return builder.toString(); - } - - // HTTP response code, or -1 if other error - // TODO: move that to Downloader? - private int getHttpStatus(URL url) { - try { - HttpURLConnection conn = (HttpURLConnection) url.openConnection(); - try { - conn.setRequestMethod("HEAD"); - conn.setRequestProperty("User-Agent", Instance.getInstance().getConfig().getString(Config.NETWORK_USER_AGENT)); - conn.setRequestProperty("Accept-Encoding", "gzip"); - conn.setRequestProperty("Accept", "*/*"); - conn.setRequestProperty("Charset", "utf-8"); - - return conn.getResponseCode(); - } finally { - conn.disconnect(); - } - } catch (Exception e) { - return -1; - } - } - - @Override - protected boolean supports(URL url) { - return "mangahub.io".equals(url.getHost()) || "www.mangahub.io".equals(url.getHost()); - } -}