Greasy Fork is available in English.

[kesai]豆瓣电影辅助

豆瓣电影辅助,提供一些常用网站的搜索以及预告片的快捷进入

// ==UserScript==
// @name         [kesai]豆瓣电影辅助
// @namespace    http://tampermonkey.net/
// @version      1.1.3
// @description  豆瓣电影辅助,提供一些常用网站的搜索以及预告片的快捷进入
// @description  1.1.3修复1337无法显示问题
// @author       kesai
// @match        https://movie.douban.com/subject/*
// @require      https://cdn.bootcss.com/layer/2.3/layer.js
// @grant        none
// ==/UserScript==

(function () {
    //'use strict';

    // Your code here...
    function addCSS(url) {
        var link = window.document.createElement('link');
        link.rel = 'stylesheet';
        link.type = 'text/css';
        link.href = url;
        document.getElementsByTagName("HEAD")[0].appendChild(link);
    }

    function popWin(url) {
        //iframe窗
        var width = window.screen.width * 0.9 + "px";
        var height = window.screen.height * 0.8 + "px";
        var index = layer.open({
            type: 2,
            closeBtn: false,
            title: "预告片",
            shade: [0.9, '#000000'],
            shadeClose: true,
            offset: 'auto',
            //shade: false,
            maxmin: false,
            //开启最大化最小化按钮
            area: [width, height],
            content: [url, 'yes'],
            success: function (layerInstance) {
                console.log(index);
                console.log(layer);
                //layer.full(index);
            }
        });
    }

    //默认新窗口配置 
    var windowDefaultConfig = new Object;
    windowDefaultConfig['directories'] = 'no';
    windowDefaultConfig['location'] = 'no';
    windowDefaultConfig['menubar'] = 'no';
    windowDefaultConfig['resizable'] = 'yes';
    windowDefaultConfig['scrollbars'] = 'yes';
    windowDefaultConfig['status'] = 'no';
    windowDefaultConfig['toolbar'] = 'no';

    function clone(obj) {
        var o;
        if (typeof obj == "object") {
            if (obj === null) {
                o = null;
            } else {
                if (obj instanceof Array) {
                    o = [];
                    for (var i = 0, len = obj.length; i < len; i++) {
                        o.push(clone(obj[i]));
                    }
                } else {
                    o = {};
                    for (var j in obj) {
                        o[j] = clone(obj[j]);
                    }
                }
            }
        } else {
            o = obj;
        }
        return o;
    }
    /** 
    * 以POST表单方式打开新窗口的JQUERY实现 
    @param:url 需要打开的URL 
    @param:args URL的参数,数据类型为object 
    @param:name 打开URL窗口的名字,如果同一按钮需要重复地打开新窗口, 
    而不是在第一次打开的窗口做刷新,此参数应每次不同 
    @param:windowParam 新打开窗口的参数配置 
    * @author: haijiang.mo 
    */
    function OpenPostWindow(url, args, name, windowParam) {
        //创建表单对象 
        var _form = $("<form></form>", {
            'id': 'tempForm',
            'method': 'post',
            'action': url,
            'target': name,
            'style': 'display:none'
        }).appendTo($("body"));

        //将隐藏域加入表单 
        for (var i in args) {
            _form.append($("<input>", { 'type': 'hidden', 'name': i, 'value': args[i] }));
        }

        //克隆窗口参数对象 
        var windowConfig = clone(windowDefaultConfig);

        //配置窗口 
        for (var i in windowParam) {
            windowConfig[i] = windowParam[i];
        }

        //窗口配置字符串 
        var windowConfigStr = "";

        for (var i in windowConfig) {
            windowConfigStr += i + "=" + windowConfig[i] + ",";
        }

        //绑定提交触发事件 
        _form.bind('submit', function () {
            window.open("about:blank", name);
            //window.open("about:blank", name, windowConfigStr);
        });

        //触发提交事件 
        _form.trigger("submit");
        //表单删除 
        _form.remove();
    }



    function createButton(backgroudcolor, text, url, type, params) {
        var btn = $("<li><span style='margin-top:-10px;cursor:pointer;height:30px;width:55px;background:" + backgroudcolor + ";display:inline-block;text-align:center;line-height:30px;color:white;'>" + text + "</span></li>");
        $(".ul_subject_menu ").append(btn);
        btn.click(function () {
            if (type === 'post') {
                var formData = new Object;
                params.split("&").forEach(function (item) {
                    formData[item.split('=')[0]] = item.split('=')[1];
                });
                OpenPostWindow(url, formData, 'test', null)
            } else {
                window.open(url);
            }
        });
    }

    addCSS('https://cdn.bootcss.com/layer/2.3/skin/layer.css');
    var text = $("h1 span")[0].innerText;
    var movieName = text.split(" ")[0];

    var configs = [{
        color: "#f8d306",
        text: "磁力猫",
        url: "https://www.cilimao.me/search?word=" + movieName
    }, {
        color: "#1b6d9d",
        text: "字幕库",
        url: "https://www.zimuku.la/search?q=" + movieName
    }, {
        color: "#c0392b",
        text: "射手网",
        url: "https://assrt.net/sub/?searchword=" + movieName
    }, {
        color: "#39ac6a",
        text: "58网盘",
        url: "http://www.58wangpan.com/search/kw" + movieName
    }, {
        color: "#268dcd",
        text: "bd-film",
        url: "https://www.bd2020.com/search.jspx?q=" + movieName
    }, {
        color: "#2B7ACD",
        text: "5ndy",
        type: "post",
        url: "http://www.5ndy.com/search.php?mod=forum",
        params: "searchsubmit=yes&srchfid=38&srchtxt=" + movieName
        //srchfid:指定搜索范围,38表示只在百度云电影下载板块内搜索
    }, {
        color: "#222",
        text: "哔嘀影视",
        url: "https://bde4.com/search/" + movieName
    }, {
        color: "red",
        text: "片库",
        url: "https://www.pianku.tv/s/go.php?q=" + movieName
    }]

    configs.forEach(function (item) {
        createButton(item.color, item.text, item.url, item.type, item.params);
    });

    var info = $('#info').text();
    //var imdb_id = $("[href^='https://www.imdb.com']").text(); //获取imdb链接里的imdb_id
    let imdb_id = info.match(/(?<=IMDb:\s)[^\n]*/)[0];
    let apikey = '26abfbd0';
    let apiurl = 'https://www.omdbapi.com/?tomatoes=false&apikey=' + apikey + '&i=' + imdb_id;
    $.ajax({
        url: apiurl,
        type: "GET",
        dataType: "json",
        success: function (response) {
            var imdb_MovieName = response.Title;
            if (imdb_MovieName != null) createButton("red", "1337x", 'https://1377x.to/search/' + imdb_MovieName + '/1/');
        }
    });

    // 调整底下剧情简介的位置
    let interest_sectl_selector = $('#interest_sectl');
    interest_sectl_selector.after($('div.grid-16-8 div.related-info'));
    interest_sectl_selector.attr('style', 'float:right');
    $('div.related-info').attr('style', 'width:480px;float:left');
    $('#link-report').css('margin-bottom', '0px');
    $("#interest_sect_level").css('padding-top', '0px');

    //增加预告片显示
    var div = $('<div id="divPiao" style="position: fixed; right:1px!important;right:18px;margin-right:30px; bottom:50px;"></div>');
    var ul = $("<ul class='related-pic-bd'></ul>");
    var li = $(".label-trailer"); //.clone();
    ul.append($(".label-trailer"));
    var a = li.find("a");
    var url = a.attr("href");
    a.attr("href", "javascript:void()");
    a.click(function () {
        popWin(url);
    })
    div.append(ul);
    $("body").append(div);

    document.addEventListener("keydown", function (e) {
        if (e.keyCode === 192) {
            popWin(url);
        }
    }, false);
})();