Greasy Fork

Greasy Fork is available in English.

Douban2RARBG

Add direct links to RARBG & TPB from Douban.

当前为 2022-08-22 提交的版本,查看 最新版本

// ==UserScript==
// @name        Douban2RARBG
// @version     0.4.4
// @author      Mogeko
// @description Add direct links to RARBG & TPB from Douban.
// @supportURL  https://github.com/mogeko/userscript-douban2rarbg/issues
// @match       https://movie.douban.com/subject/*
// @namespace   https://mogeko.me
// @icon        https://img9.doubanio.com/favicon.ico
// @grant       none
// @license     MIT
// ==/UserScript==

/******/ (() => { // webpackBootstrap
/******/ 	"use strict";
var __webpack_exports__ = {};
function _arrayLikeToArray(arr, len) {
    if (len == null || len > arr.length) len = arr.length;
    for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
    return arr2;
}
function _arrayWithHoles(arr) {
    if (Array.isArray(arr)) return arr;
}
function _iterableToArrayLimit(arr, i) {
    var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
    if (_i == null) return;
    var _arr = [];
    var _n = true;
    var _d = false;
    var _s, _e;
    try {
        for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
            _arr.push(_s.value);
            if (i && _arr.length === i) break;
        }
    } catch (err) {
        _d = true;
        _e = err;
    } finally{
        try {
            if (!_n && _i["return"] != null) _i["return"]();
        } finally{
            if (_d) throw _e;
        }
    }
    return _arr;
}
function _nonIterableRest() {
    throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
function _slicedToArray(arr, i) {
    return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
}
function _unsupportedIterableToArray(o, minLen) {
    if (!o) return;
    if (typeof o === "string") return _arrayLikeToArray(o, minLen);
    var n = Object.prototype.toString.call(o).slice(8, -1);
    if (n === "Object" && o.constructor) n = o.constructor.name;
    if (n === "Map" || n === "Set") return Array.from(n);
    if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
}
var META_DATA = {
    资源: {
        RARBG: "https://rarbg.to/torrents.php?imdb=%i",
        "RARBG (Mirror)": "https://rarbgmirror.com/torrents.php?imdb=%i",
        TPB: "https://thepiratebay.org/search.php?q=%i"
    },
    字幕: {
        opensubtitles: "https://www.opensubtitles.org/zh/search/imdbid-%x/sublanguageid-all/moviename-%i",
        SubHD: "https://subhd.tv/search/%d",
        字幕组: "https://zmk.pw/search?q=%i"
    }
};
(function() {
    var ref, ref1;
    var metaRoot = document.querySelector("#info");
    var imdb = (ref1 = metaRoot === null || metaRoot === void 0 ? void 0 : (ref = metaRoot.innerHTML) === null || ref === void 0 ? void 0 : ref.match(/tt[0-9]{4,}/)) === null || ref1 === void 0 ? void 0 : ref1[0];
    var doubanID = document.location.toString().split("/")[4];
    if (!imdb || !doubanID) return;
    Object.entries(META_DATA).forEach(function(param) {
        var _param = _slicedToArray(param, 2), key = _param[0], sites = _param[1];
        var metaNode = document.createElement("span");
        var keyNode = document.createElement("span");
        var valueNode = document.createElement("span");
        var br = document.createElement("br");
        keyNode.textContent = "".concat(key, ": ");
        keyNode.setAttribute("class", "pl");
        var links = Object.entries(sites).map(function(param) {
            var _param = _slicedToArray(param, 2), title = _param[0], template = _param[1];
            var handleTemplate = function(template) {
                var ref = [
                    imdb,
                    doubanID,
                    imdb.replace(/^tt/, "")
                ], i = ref[0], d = ref[1], x = ref[2];
                return template.replace("%i", i).replace("%d", d).replace("%x", x);
            };
            var link = document.createElement("a");
            link.textContent = title;
            link.setAttribute("href", handleTemplate(template));
            link.setAttribute("target", "_blank");
            return link;
        });
        links.forEach(function(link, index, array) {
            valueNode.appendChild(link);
            if (index !== array.length - 1) {
                valueNode.innerHTML += " / ";
            }
        });
        metaNode.appendChild(keyNode);
        metaNode.appendChild(valueNode);
        metaRoot.appendChild(metaNode);
        metaRoot.appendChild(br);
    });
})();


/******/ })()
;