MyDoubanMovieHelper|豆瓣电影C+|豆瓣|豆瓣电影|movie.douban.com

网页信息增强,并入IMDB评分系统, 提供在线观看便捷链接,提供资源提供站点哦便捷链接。美化界面。

As of 2017-06-04. See the latest version.

// ==UserScript==
// @id            heawercher@gmail.com
// @name          MyDoubanMovieHelper|豆瓣电影C+|豆瓣|豆瓣电影|movie.douban.com
// @namespace     Chang_way_enjoying
// @description   网页信息增强,并入IMDB评分系统, 提供在线观看便捷链接,提供资源提供站点哦便捷链接。美化界面。
// @description   豆瓣电影C+|MyDoubanMovieHelper|豆瓣|豆瓣电影
// @author        Chang
// @connect       imdb.com
// @connect       6080.tv
// @connect       lbldy.com
// @connect       aaqqs.com
// @grant         GM_xmlhttpRequest
// @grant         GM_setClipboard
// @grant         GM_addStyle
// @grant         GM_setValue
// @grant         GM_getValue
// @require       http://cdn.bootcss.com/jquery/3.2.1/jquery.min.js
// @include       https://movie.douban.com/
// @match         https://movie.douban.com/*
// @match         https://book.douban.com/*
// @resource      https://coding.net/u/Changhw/p/MyDoubanMovieHelper/git/raw/master/title_overview_sprite.png
// @version       06042017wCe
// @run-at        document-start
// ==/UserScript==
GM_addStyle("@charset utf-8;#dale_movie_subject_top_right,#dale_movie_subject_top_right,#dale_movie_subject_top_midle,#dale_movie_subject_middle_right,#dale_movie_subject_bottom_super_banner,#footer,#dale_movie_subject_download_middle,#dale_movie_subject_inner_middle,#movie_home_left_bottom,#dale_movie_home_top_right,#dale_movie_home_side_top,#dale_movie_home_bottom_right,#dale_movie_home_inner_bottom,#dale_movie_home_download_bottom,#dale_movie_home_bottom_right_down,#dale_movie_towhome_explore_right,.qrcode-app,.top-nav-doubanapp,.extra,div.gray_ad,p.pl,div.ticket{display:none}.c-aside{margin-bottom:30px}.c-aside-body{*letter-spacing:normal}.c-aside-body a{border-radius:6px;color:#37A;display:inline-block;letter-spacing:normal;margin:0 8px 8px 0;padding:0 8px;text-align:center;width:65px}.c-aside-body a:link,.c-aside-body a:visited{background-color:#f5f5f5;color:#37A}.c-aside-body a:hover,.c-aside-body a:active{background-color:#e8e8e8;color:#37A}.c-aside-body a.disabled{text-decoration:line-through}.c-aside-body a.available{background-color:#5ccccc;color:#006363}.c-aside-body a.available:hover,.c-aside-body a.available:active{background-color:#3cc}.c-aside-body a.sites_r0{text-decoration:line-through}#interest_sectl .rating_imdb{border-bottom:1px solid #eaeaea;padding-bottom:0}#interest_sectl .rating_wrap{padding-top:15px}#interest_sectl .rating_more{border-top:1px solid #eaeaea;color:#9b9b9b;margin:0;padding:15px 0;position:relative}#interest_sectl .rating_more a{left:80px;position:absolute}#interest_sectl .rating_more .titleOverviewSprite{background:url(https://coding.net/u/Changhw/p/MyDoubanMovieHelper/git/raw/master/title_overview_sprite.png) no-repeat;display:inline-block;vertical-align:middle}#interest_sectl .rating_more .popularityImageUp{background-position:-14px -478px;height:8px;width:8px}#interest_sectl .rating_more .popularityImageDown{background-position:-34px -478px;height:8px;width:8px}#interest_sectl .rating_more .popularityUpOrFlat{color:#83C40B}#interest_sectl .rating_more .popularityDown{color:#930E02}");
var aside_html = '<div class=c-aside > <h2><i class="">四字标题</i>· · · · · · </h2> <div class=c-aside-body  style="padding: 0 18px;"> <ul class=bs > </ul> </div> </div>';
var imdb_html = '<div class="rating_wrap clearbox rating_imdb" rel="v:rating" style="padding-top: 0;"> <div class=rating_logo >IMDB 评分</div> <div class="rating_self clearfix" typeof="v:Rating"> <strong class="ll rating_num" property="v:average">0</strong> <span property="v:best" content=10.0 ></span> <div class="rating_right "> <div class=ll ></div> <div class=rating_sum > <a href=collections  class=rating_people ><span property="v:votes">0</span>人评价</a> </div> </div> </div> </div>';
if (!document.getElementById("yesTeA") && document.title.indexOf('豆瓣') != -1) {
    var yesTeA = document.createElement("a");
    yesTeA.id = "yesTeA";
    document.getElementsByTagName("html")[0].appendChild(yesTeA);

    if (location.href.startsWith('https://movie.douban.com/subject/')) {
        $(document).ready(function() {
            function getDoc(url, meta, callback) {
                GM_xmlhttpRequest({
                    method: 'GET',
                    url: url,
                    headers: {
                        'User-agent': window.navigator.userAgent,
                        'Content-type': null
                    },
                    onload: function(responseDetail) {
                        var doc = '';
                        if (responseDetail.status == 200) {
                            doc = new DOMParser().parseFromString(responseDetail.responseText, 'text/html');
                            if (doc === undefined) {
                                doc = document.implementation.createHTMLDocument("");
                                doc.querySelector('html').innerHTML = responseText;
                            }
                        }
                        callback(doc, responseDetail, meta);
                    }
                });
            }

            function postDoc(url, data, meta, callback) {
                GM_xmlhttpRequest({
                    anonymous: true,
                    method: 'POST',
                    url: url,
                    headers: {
                        'User-agent': window.navigator.userAgent,
                        'Content-type': 'application/x-www-form-urlencoded'
                    },
                    data: data,
                    onload: function(responseDetail) {
                        callback(responseDetail.responseText, responseDetail, meta);
                    }
                });
            }

            function getJSON(url, callback) {
                GM_xmlhttpRequest({
                    method: 'GET',
                    url: url,
                    headers: {
                        "Accept": "application/json"
                    },
                    onload: function(response) {
                        if (response.status >= 200 && response.status < 400) {
                            callback(JSON.parse(response.responseText), url);
                        } else {}
                    }
                });
            }

            function parseURL(url) {
                var a = document.createElement('a');
                a.href = url;
                return {
                    source: url,
                    protocol: a.protocol.replace(':', ''),
                    host: a.hostname,
                    port: a.port,
                    query: a.search,
                    params: (function() {
                        var ret = {},
                            seg = a.search.replace(/^\?/, '').split('&'),
                            len = seg.length,
                            i = 0,
                            s;
                        for (; i < len; i++) {
                            if (!seg[i]) {
                                continue;
                            }
                            s = seg[i].split('=');
                            ret[s[0]] = s[1];
                        }
                        return ret;
                    })(),
                    file: (a.pathname.match(/\/([^\/?#]+)$/i) || [, ''])[1],
                    hash: a.hash.replace('#', ''),
                    path: a.pathname.replace(/^([^\/])/, '/$1'),
                    relative: (a.href.match(/tps?:\/\/[^\/]+(.+)/) || [, ''])[1],
                    segments: a.pathname.replace(/^\//, '').split('/')
                };
            }
            var site_online = $(aside_html);
            site_online.addClass("site_online");
            site_online.find("div.c-aside-body").addClass("site-online-body");
            site_online.find("h2 i").text("在线资源or网盘资源");
            $("#content div.tags").before(site_online);

            function update_site_online_sites(title, en) {
                title = encodeURI(title);
                if (en) {
                    var site_online_sites = {
                        "GOmovies": "https://gomovies.to/movie/search/" + title
                    }
                } else {
                    var site_online_sites = {
                        "aaqqs": "http://www.aaqqs.com/index.php?m=vod-search-pg-1-wd-" + encodeURIComponent(title),
                        "电影6080": "http://www.6080.tv/book/search?action=search&t=8&tag=" + title,
                        "Bilibili": "http://search.bilibili.com/all?keyword=" + title,
                        "哔哩搜索": "http://www.biliworld.com/search/all/" + title,
                        "4K吧": "http://www.kkkkba.com/index.php?s=vod-search-wd-" + title + ".html",
                        "AcFun": "http://www.acfun.cn/search/#query=" + title,
                        "搜库": "http://www.soku.com/search_video/q_" + title
                    };
                    var sites_playBtn = $("div.gray_ad a.playBtn");
                    for (var i = 0, n;
                        (n = sites_playBtn[i]); i++) {
                        var t = $(n).text().replace(/\s/g, "").replace("视频", "");
                        var l = $(n).attr("href");
                        if (l == "javascript: void 0;") {
                            continue;
                        }
                        l = parseURL(l).params['url'];
                        l = decodeURIComponent(l);
                        site_online_sites[t + ''] = "http://www.sfsft.com/admin.php?url=" + l;
                        site_online_sites[t + ' '] = "http://vip.ifkdy.com/?url=" + l;
                    }
                }
                for (var name in site_online_sites) {
                    link = site_online_sites[name];
                    link_parsed = parseURL(link);
                    link = $("<a></a>").attr("href", link);
                    link.attr("data-host", link_parsed.host);
                    link.attr("target", "_blank").attr("rel", "nofollow");
                    if (link_parsed.host === 'www.sfsft.com' || link_parsed.host === 'search.bilibili.com' || link_parsed.host === 'vip.ifkdy.com') {
                        link.addClass('available');
                    }
                    link.html(name);
                    $("#content div.site-online-body ul").append(link);
                }
            }
            var site_offline = $(aside_html);
            site_offline.addClass("name-offline");
            site_offline.find("div.c-aside-body").addClass("site-offline-body");
            site_offline.find("h2 i").text("离线资源");
            $("#content div.tags").before(site_offline);

            function update_site_offline_sites(title, en) {
                title = encodeURI(title);
                if (en) {
                    var site_offline_sites = {
                        "海盗湾": "http://thepiratebay.ee/s/?q=" + title,
                        "kickass": "https://katcr.co/new/torrents-search.php?" +
                            "c69=1&c80=1&c79=1&c148=1&c149=1&c81=1&c78=1&c150=1&c71=1&c74=1&cat=0" +
                            "&incldead=0&freeleech=0&inclexternal=0&lang=0&search=" +
                            title,
                        'kickass_': "https://kickass.cd/usearch/" + title + " category:movies/",
                        "rarbg": "https://rarbg.to/torrents.php?search=" + title,
                        "飘域家园": "http://bbs.homefei.net/searcher.php?keyword=" + title
                    };
                } else {
                    var site_offline_sites = {
                        "龙部落": "http://www.lbldy.com/search/" + title,
                        "51下片": "http://www.51xiapian.com/search.php?submit=%E6%90%9C%E7%B4%A2&searchword=" + title,
                        "高清网": "http://gaoqing.la/?s=" + title,
                        "高清控": "http://www.gaoqingkong.com/?s=" + title,
                        "疯狂影视": "http://ifkdy.com/?q=" + title + "&p=1",
                        "BT天堂": "http://www.bttt.la/s.php?q=" + title + "&sitesearch=www.bttt.la&domains=bttt.la&hl=zh-CN&ie=UTF-8&oe=UTF-8",
                        "BT吧": "http://www.btba.com.cn/search?keyword=" + title,
                        "movie吧": "http://www.52movieba.com/?s=" + title,
                        "动漫花园": "https://share.dmhy.org/topics/list?keyword=" + title,
                        "电影天堂": "http://zhannei.baidu.com/cse/search?q=" + title + "&s=4523418779164925033",
                        "飘花资源": "http://so.piaohua.com:8909/plus/search.php?kwtype=0&keyword=" + title,
                        "BT之家": "http://www.btbtt.co/search-index-keyword-" + title + ".htm",
                        "我飞网": "http://www.9kkz.com/search.php?keyword=" + title,
                        "片源网": "http://pianyuan.net/search?q=" + title,
                        "比特大雄": "http://www.btdx8.com/?s=" + title,
                        "RARBT": "http://www.rarbt.com/index.php/search/index.html?search=" + title,
                        "CILI001": "http://cili17.com/?topic_title3=" + title,
                        "哇呱影视": "http://www.gagays.com/movie/search?req%5Bkw%5D=" + title,
                        "天天美剧": "http://www.ttmeiju.com/index.php/search/index.html?keyword=" + title + "&range=0",
                        "深影论坛": "http://zhannei.baidu.com/cse/search?q=" + title + "&click=1&s=10886843873236087874&nsid="
                    };
                }
                for (var name in site_offline_sites) {
                    link = site_offline_sites[name];
                    link_parsed = parseURL(link);
                    link = $("<a></a>").attr("href", link);
                    link.attr("data-host", link_parsed.host);
                    link.attr("target", "_blank").attr("rel", "nofollow");
                    link.html(name);
                    $("#content div.site-offline-body ul").append(link);
                }
            }
            var site_sub = $(aside_html);
            site_sub.addClass("name-offline");
            site_sub.find("div.c-aside-body").addClass("site-sub-body");
            site_sub.find("h2 i").text("字幕资源");
            $("#content div.related-info").after(site_sub);

            function update_site_sub_sites(title, en) {
                title = encodeURI(title);
                if (en) {
                    var site_offline_sites = {
                        "射手伪": "http://assrt.net/sub/?searchword=" + title,
                    };
                } else {
                    var site_offline_sites = {
                        "字幕库": "http://www.zimuku.net/search?q=" + title,
                        "字幕组": "http://www.zimuzu.tv/search/index?keyword=" + title,
                        "sub HD": "http://subhd.com/search/" + title,
                        "sub OM": "http://www.subom.net/search/" + title,
                        "163字幕": "http://www.163sub.com/Search?id=" + title,
                        "第三楼字幕": "http://zhannei.baidu.com/cse/search?click=1&s=8073048380622477318&nsid=&q=" + title,
                        "电波字幕": "http://dbfansub.com/?s=" + title,
                    };
                }
                for (var name in site_offline_sites) {
                    link = site_offline_sites[name];
                    link_parsed = parseURL(link);
                    link = $("<a></a>").attr("href", link);
                    link.attr("data-host", link_parsed.host);
                    link.attr("target", "_blank").attr("rel", "nofollow");
                    link.html(name);
                    $("#content div.site-sub-body ul").append(link);
                }
            }
            var title = title_sec = $("#content > h1 > span")[0].textContent.split(" ");
            title = title.shift();
            title_sec = title_sec.join(" ").trim();
            var title_en = "";
            update_site_online_sites(title);
            update_site_offline_sites(title);
            update_site_sub_sites(title);
            var site = null;
            site = $("div.aside a[data-host$='www.6080.tv']");
            if (site) {
                var site_href = site.attr("href");
                var meta = new Array();
                meta['site'] = site;
                getDoc(site_href, meta, function(doc, resp, meta) {
                    var site = meta['site'];
                    var lists = $("div.bd ul.pic li", doc);
                    var links = [];
                    for (var i = 0; i < lists.length; i++) {
                        var l = $(lists[i]);
                        if (l.find("span > span").text().indexOf(title) != -1) {
                            links.push('http://www.6080.tv' + l.find("a[href^='/note']").attr("href"));
                        }
                    }
                    if (links.length == 0) {
                        site.addClass("disabled");
                        return;
                    } else if (links.length == 1) {
                        site.addClass('available');
                        site.attr('href', links[0]);
                    }
                });
            }
            site = $("div.aside a[data-host$='lbldy.com']");
            if (site) {
                var site_href = site.attr("href");
                var meta = new Array();
                meta['site'] = site;
                getDoc(site_href, meta, function(doc, resp, meta) {
                    var site = meta['site'];
                    var lists = $("div.col div.postlist", doc);
                    var links = [];
                    for (var i = 0; i < lists.length; i++) {
                        var l = $(lists[i]);
                        l = l.find("a");
                        links.push(l.attr("href"));
                    }
                    if (links.length == 0) {
                        site.addClass("disabled");
                        return;
                    } else if (links.length == 1) {
                        site.attr('href', links[0]);
                        site.addClass('available');
                    }
                });
            }
            site = $("div.aside a[data-host$='aaqqs.com']");
            if (site) {
                var site_href = site.attr("href");
                var meta = new Array();
                meta['site'] = site;
                getDoc(site_href, meta, function(doc, resp, meta) {
                    var site = meta['site'];
                    var lists = $("#contents li", doc);
                    var links = [];
                    for (var i = 0; i < lists.length; i++) {
                        var l = $(lists[i]);
                        links.push('http://www.aaqqs.com' + l.find("a[href^='/vodhtml']").attr("href"));
                    }
                    if (links.length == 0) {
                        site.addClass("disabled");
                        return;
                    } else if (links.length == 1) {
                        site.attr('href', links[0]);
                        site.addClass('available');
                    }
                });
            }
            var imdb = $("div#info a[href^='http://www.imdb.com/title/tt']");
            if (imdb) {
                var imdb_href = imdb.attr('href');
                imdb_id = imdb.text();
                if (imdb && imdb_id.startsWith('tt')) {
                    imdb_id = imdb_id.slice(2);
                } else {
                    imdb_id = "";
                }
                getDoc(imdb_href, null, function(doc, resp, meta) {
                    title_en = $(doc).attr('title');
                    title_en = title_en.split(" (")[0];
                    update_site_online_sites(title_en, true);
                    update_site_offline_sites(title_en, true);
                    var rating_douban = $("#interest_sectl .rating_wrap").addClass("rating_douban");
                    var rating_douban_ratingValue = $("#interest_sectl .rating_douban a.rating_people span[property^=v]").text();
                    rating_douban_ratingValue = (rating_douban_ratingValue + '').replace(/\d{1,3}(?=(\d{3})+(\.\d*)?$)/g, '$&,');
                    $("#interest_sectl .rating_douban a.rating_people span[property^=v]").text(rating_douban_ratingValue);
                    $("#interest_sectl").prepend($(imdb_html));
                    var rating_imdb = $("#interest_sectl .rating_imdb");
                    $("#interest_sectl .rating_imdb a.rating_people").attr("href", imdb_href + "/" + "ratings?ref_=tt_ov_rt");
                    var ratingValue = $('span[itemprop=ratingValue]', doc).text();
                    $("#interest_sectl .rating_imdb strong.rating_num").text(ratingValue);
                    var starValue = ratingValue / 2;
                    starValue = ((starValue % 1) > 0.5) ? Math.floor(starValue) + 0.5 : Math.floor(starValue);
                    starValue *= 10;
                    starValue = "bigstar" + starValue;
                    $("#interest_sectl .rating_imdb div.rating_right div.ll").addClass(starValue);
                    var ratingCount = $('span[itemprop=ratingCount]', doc).text();
                    $("#interest_sectl .rating_imdb a.rating_people span[property^=v]").text(ratingCount);
                    $("#interest_sectl").append($("<div></div>").addClass("rating_more"));
                    var rating_more = $("#interest_sectl .rating_more");
                    var titleReviewBarItem = $('div.titleReviewBarItem', doc);
                    var Metasocre = "";
                    for (var i = 0, n;
                        (n = titleReviewBarItem[i]); i++) {
                        var t = $(n).text();
                        if (t.indexOf("Metascore") != -1) {
                            var Metascore = $(n).find("a[href^=criticreviews] span").text();
                            rating_more.html(rating_more.html() + "Metasocre" + $("<a></a>").attr("href", imdb_href + "/" + "criticreviews?ref_=tt_ov_rt").text(Metascore)[0].outerHTML + "<br>");
                        } else if (t.indexOf("Reviews") != -1) {} else if (t.indexOf("Popularity") != -1) {
                            var Popularity = $(n).find("span.subText").html();
                            rating_more.html(rating_more.html() + "流行度&nbsp;&nbsp;" + Popularity + "<br>");
                        }
                    }
                });
            }
        });
    }

}