package com.lanyuan.picking.pattern.girls;

import android.graphics.Color;

import com.lanyuan.picking.common.bean.AlbumInfo;
import com.lanyuan.picking.common.bean.PicInfo;
import com.lanyuan.picking.pattern.MultiPicturePattern;
import com.lanyuan.picking.pattern.Searchable;
import com.lanyuan.picking.ui.contents.ContentsActivity;
import com.lanyuan.picking.ui.detail.DetailActivity;
import com.lanyuan.picking.ui.menu.Menu;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class JDlingyu implements MultiPicturePattern, Searchable {
    @Override
    public String getWebsiteName() {
        return "绝对领域";
    }

    @Override
    public String getCategoryCoverUrl() {
        return "http://www.jdlingyu.wang/wp-content/uploads/2017/01/2017-01-07_20-57-14.png";
    }

    @Override
    public int getBackgroundColor() {
        return Color.LTGRAY;
    }

    @Override
    public String getBaseUrl(List<Menu> menuList, int position) {
        return "http://www.jdlingyu.wang/";
    }

    @Override
    public List<Menu> getMenuList() {
        List<Menu> menuList = new ArrayList<>();
        menuList.add(new Menu("主页", "http://www.jdlingyu.wang/"));
        menuList.add(new Menu("自拍", "http://www.jdlingyu.wang/%E8%87%AA%E6%8B%8D/"));
        menuList.add(new Menu("独家", "http://www.jdlingyu.wang/%E4%B8%93%E9%A2%98/%E7%8B%AC%E5%AE%B6//"));
        menuList.add(new Menu("胖次", "http://www.jdlingyu.wang/%E8%83%96%E6%AC%A1/"));
        menuList.add(new Menu("丝袜", "http://www.jdlingyu.wang/%E7%89%B9%E7%82%B9/%E4%B8%9D%E8%A2%9C/"));
        menuList.add(new Menu("汉服", "http://www.jdlingyu.wang/%E7%89%B9%E7%82%B9/%E6%B1%89%E6%9C%8D/"));
        menuList.add(new Menu("死库水", "http://www.jdlingyu.wang/%E7%89%B9%E7%82%B9/%E6%AD%BB%E5%BA%93%E6%B0%B4/"));
        menuList.add(new Menu("体操服", "http://www.jdlingyu.wang/%E7%89%B9%E7%82%B9/%E4%BD%93%E6%93%8D%E6%9C%8D/"));
        menuList.add(new Menu("女仆装", "http://www.jdlingyu.wang/%E7%89%B9%E7%82%B9/%E5%A5%B3%E4%BB%86%E8%A3%85/"));
        menuList.add(new Menu("水手服", "http://www.jdlingyu.wang/%E7%89%B9%E7%82%B9/%E6%B0%B4%E6%89%8B%E6%9C%8D/"));
        menuList.add(new Menu("和服浴衣", "http://www.jdlingyu.wang/%E7%89%B9%E7%82%B9/%E5%92%8C%E6%9C%8D%E6%B5%B4%E8%A1%A3/"));
        menuList.add(new Menu("束缚", "http://www.jdlingyu.wang/%E5%BC%84%E6%BD%AE/%E6%9D%9F%E7%BC%9A/"));
        menuList.add(new Menu("妹子图", "http://www.jdlingyu.wang/mzitu/"));
        menuList.add(new Menu("Hentai好物", "http://www.jdlingyu.wang/hentai/"));
        menuList.add(new Menu("二次元", "http://www.jdlingyu.wang/acg/"));
        return menuList;
    }

    @Override
    public Map<ContentsActivity.parameter, Object> getContent(String baseUrl, String currentUrl, byte[] result, Map<ContentsActivity.parameter, Object> resultMap) throws UnsupportedEncodingException {
        List<AlbumInfo> urls = new ArrayList<>();
        Document document = Jsoup.parse(new String(result, "utf-8"));
        Elements elements = document.select("#postlist .pin");
        for (Element element : elements) {
            AlbumInfo temp = new AlbumInfo();

            Elements album = element.select(".pin-coat>a");
            temp.setAlbumUrl(album.attr("href"));
            Elements pic = album.select("img");
            if (pic.size() > 0) {
                temp.setPicUrl(pic.get(0).attr("original"));
            }

            Elements title = element.select("span.bg");
            if (title.size() > 0)
                temp.setTitle(title.get(0).text());

            Elements time = element.select("span.timer");
            if (time.size() > 0)
                temp.setTime(time.get(0).text());

            urls.add(temp);
        }
        resultMap.put(ContentsActivity.parameter.CURRENT_URL, currentUrl);
        resultMap.put(ContentsActivity.parameter.RESULT, urls);
        return resultMap;
    }

    @Override
    public String getContentNext(String baseUrl, String currentUrl, byte[] result) throws UnsupportedEncodingException {
        Document document = Jsoup.parse(new String(result, "utf-8"));
        Elements elements = document.select("#pagenavi a:containsOwn(下一页)");
        if (elements.size() > 0)
            return elements.get(0).attr("href");
        return "";
    }

    @Override
    public Map<DetailActivity.parameter, Object> getDetailContent(String baseUrl, String currentUrl, byte[] result, Map<DetailActivity.parameter, Object> resultMap) throws UnsupportedEncodingException {
        List<PicInfo> urls = new ArrayList<>();
        Document document = Jsoup.parse(new String(result, "utf-8"));

        Elements title = document.select("h2.main-title");
        String sTitle = "";
        if (title.size() > 0)
            sTitle = title.get(0).text();

        Elements time = document.select("div.main-header span.post-span");
        String sTime = "";
        if (time.size() > 0)
            sTime = time.get(0).text();

        Elements elements = document.select(".main-body a:has(img)");
        for (Element element : elements) {
            urls.add(new PicInfo(element.attr("href")).setTitle(sTitle).setTime(sTime));
        }
        resultMap.put(DetailActivity.parameter.CURRENT_URL, currentUrl);
        resultMap.put(DetailActivity.parameter.RESULT, urls);
        return resultMap;
    }

    @Override
    public String getDetailNext(String baseUrl, String currentUrl, byte[] result) throws UnsupportedEncodingException {
        return null;
    }

    @Override
    public String getSearch(String query) {
        return "http://www.jdlingyu.wang/?s=" + query;
    }
}