Greasy Fork

Greasy Fork is available in English.

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

网站下直接显示下载链接,可通过多个站点获取。

当前为 2017-01-15 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @namespace     Chang_way_enjoying
// @author        Chang
// @connect       imdb.com
// @description   网站下直接显示下载链接,可通过多个站点获取。
// @require       https://cdn.bootcss.com/jquery/2.2.3/jquery.min.js
// @name          豆瓣电影C+|MyDoubanMovieHelper|豆瓣|豆瓣电影|douban.movie.com
// @id            [email protected]
// @resource      https://coding.net/u/Changhw/p/MyDoubanMovieHelper/git/raw/master/title_overview_sprite.png
// @match         https://movie.douban.com/subject/*
// @version       01152017dsn
// @grant         GM_xmlhttpRequest
// @grant         GM_setClipboard
// @grant         GM_addStyle
// ==/UserScript==

/***
 * Updated by Chang on 01/15/2017.
 * QQ 3099891314
 * contact me :)
 */
(function () {
    var adblock_css = "";
    adblock_css += "#dale_movie_subject_top_right,";
    adblock_css += "#dale_movie_subject_top_right,";
    adblock_css += "#dale_movie_subject_top_midle,";
    adblock_css += "#dale_movie_subject_middle_right,";
    adblock_css += "#dale_movie_subject_bottom_super_banner,";
    adblock_css += "#footer,";
    adblock_css += ".qrcode-app,";
    adblock_css += ".top-nav-doubanapp,";
    adblock_css += ".extra,";
    adblock_css += "div.gray_ad,";
    adblock_css += "p.pl,";
    adblock_css += "div.ticket {";
    adblock_css += "display: none;";
    adblock_css += "}";
    GM_addStyle(adblock_css);
})();
var aside_html = "";
aside_html += '<div class="c-aside">';
aside_html += '<h2><i class="">四字标题</i>· · · · · · </h2>';
aside_html += '<div class="c-aside-body" style="padding: 0 18px;">';
aside_html += '<ul class="bs">';
aside_html += '</ul>';
aside_html += '</div>';
aside_html += '</div>';
var aside_css = "";
aside_css += ".c-aside {";
aside_css += "margin-bottom: 30px;";
aside_css += "background: #F4F4EC;";
aside_css += "}";
aside_css += ".c-aside-body {";
aside_css += "*letter-spacing: normal;";
aside_css += "}";
aside_css += ".c-aside-body a {";
aside_css += "color: #37A;";
aside_css += "width: 65px;";
aside_css += "text-align: center;";
aside_css += "border-radius: 2px;";
aside_css += "letter-spacing: normal;";
aside_css += "margin: 0 8px 8px 0;";
aside_css += "padding: 0 8px;";
aside_css += "display: inline-block;";
aside_css += "border-radius: 6px;";
aside_css += "}";
aside_css += ".c-aside-body a:link,";
aside_css += ".c-aside-body a:visited {";
aside_css += "background-color: #f5f5f5;";
aside_css += "color: #37A;";
aside_css += "}";
aside_css += ".c-aside-body a:hover,";
aside_css += ".c-aside-body a:active {";
aside_css += "background-color: #e8e8e8;";
aside_css += "color: #37A;";
aside_css += "}";
aside_css += ".c-aside-body a.sites_r0 {";
aside_css += "text-decoration: line-through;";
aside_css += "}";
GM_addStyle(aside_css);
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("在线资源");
$("#content div.tags").before(site_online);
function update_site_online_sites(title, en) {
    if (en) {
    } else {
        var site_online_sites = {
            "f4yy": "http://f4yy.com/index.php?m=vod-search-pg-1-wd-" + title,
            "6080": "http://www.6080.tv/book/search?action=search&t=8&tag=" + title,
            "4K吧": "http://www.kkkkba.com/index.php?s=vod-search-wd-" + title + ".html",
            "AcFun": "http://www.acfun.cn/search/#query=" + title,
            "Bilibili": "http://search.bilibili.com/all?keyword=" + title,
            "搜库": "http://www.soku.com/search_video/q_" + title
        };
    }
    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");
        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("name-offline-body");
site_offline.find("h2 i").text("离线资源");
$("#content div.tags").before(site_offline);
function update_site_offline_sites(title, en) {
    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,
            "射手伪": "http://assrt.net/sub/?searchword=" + title,
            "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,
            "字幕库": "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,
            "高清网": "http://gaoqing.la/?s=" + title,
            "高清控": "http://www.gaoqingkong.com/?s=" + title,
            "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,
            "电影天堂": "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.la/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.name-offline-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);
function getDoc(url, 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.finalUrl);
        }
    });
}
function postDoc(url, callback, data) {
    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.finalUrl);
        }
    });
}
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('/')
    };
}
(function () {
    var imdb_html = "";
    imdb_html += '<div class="rating_wrap clearbox rating_imdb" rel="v:rating" style="padding-top: 0;">';
    imdb_html += '<div class="rating_logo">IMDB 评分</div>';
    imdb_html += '<div class="rating_self clearfix" typeof="v:Rating">';
    imdb_html += '<strong class="ll rating_num" property="v:average">0</strong>';
    imdb_html += '<span property="v:best" content="10.0"></span>';
    imdb_html += '<div class="rating_right ">';
    imdb_html += '<div class="ll"></div>';
    imdb_html += '<div class="rating_sum">';
    imdb_html += '<a href="collections" class="rating_people"><span property="v:votes">0</span>人评价</a>';
    imdb_html += '</div>';
    imdb_html += '</div>';
    imdb_html += '</div>';
    imdb_html += '</div>';
    var imdb_css = "";
    imdb_css += "#interest_sectl .rating_imdb {";
    imdb_css += "padding-bottom: 0;";
    imdb_css += "border-bottom: 1px solid #eaeaea;";
    imdb_css += "}";
    imdb_css += "#interest_sectl .rating_wrap {";
    imdb_css += "padding-top: 15px;";
    imdb_css += "}";
    imdb_css += "#interest_sectl .rating_more {";
    imdb_css += "position: relative;";
    imdb_css += "padding: 15px 0;";
    imdb_css += "border-top: 1px solid #eaeaea;";
    imdb_css += "color: #9b9b9b;";
    imdb_css += "margin: 0;";
    imdb_css += "}";
    imdb_css += "#interest_sectl .rating_more a {";
    imdb_css += "left: 80px;";
    imdb_css += "position: absolute;";
    imdb_css += "}";
    imdb_css += "#interest_sectl .rating_more .titleOverviewSprite {";
    imdb_css += "background: url('https://coding.net/u/Changhw/p/MyDoubanMovieHelper/git/raw/master/title_overview_sprite.png') no-repeat;";
    imdb_css += "display: inline-block;";
    imdb_css += "vertical-align: middle;";
    imdb_css += "}";
    imdb_css += "#interest_sectl .rating_more .popularityImageUp {";
    imdb_css += "background-position: -14px -478px;";
    imdb_css += "height: 8px;";
    imdb_css += "width: 8px";
    imdb_css += "}";
    imdb_css += "#interest_sectl .rating_more .popularityImageDown {";
    imdb_css += "background-position: -34px -478px;";
    imdb_css += "height: 8px;";
    imdb_css += "width: 8px;";
    imdb_css += "}";
    imdb_css += "#interest_sectl .rating_more .popularityUpOrFlat {";
    imdb_css += "color: #83C40B";
    imdb_css += "}";
    imdb_css += "#interest_sectl .rating_more .popularityDown {";
    imdb_css += "color: #930E02";
    imdb_css += "}";
    GM_addStyle(imdb_css);
    imdb = $("div#info a[href^='http://www.imdb.com/title/tt']");
    if (imdb) {
        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, function (doc, url) {
            title_en = $(doc, "div.poster img")[0];
            title_en = $(title_en).attr('title').split(" (")[0];
            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>");
                }
            }
        });
    }
})();