OURBITS Info Clone

OURBITS种子信息克隆

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name         OURBITS Info Clone
// @namespace    XingXing_OURBITS
// @author       XingXing
// @description  OURBITS种子信息克隆
// @grant        GM_xmlhttpRequest
// @include      *ourbits.club/torrents*
// @include      *ourbits.club/upload*
// @require      https://cdn.bootcss.com/jquery/2.2.4/jquery.min.js
// @icon         https://ourbits.club/bitbucket/37C58PIC7IT_1024.jpg
// @version      20181201
// @run-at       document-end
// ==/UserScript==

// https://cdn.bootcss.com/jquery/2.2.4/jquery.min.js
// https://ourbits.club/js/jquery-1.11.3.min.js
// 脚本预处理阶段
const jq = jQuery.noConflict();

const SetAnonymous = false; //设置匿名[true,false]

(function() {

    if (jq('table#torrenttable.torrents').length) {
        jq('table#torrenttable.torrents tr:first td.colhead:first').after('<td class="colhead">Clone</td>');
        jq('table.torrents tr:gt(0)').each(function() {
            let tr = jq(this);
            if (tr.find('table.torrentname').length) {
                let id = tr.find('table.torrentname a:first').attr('href').match(/id=(\d+)/)[1];
                tr.find('td:first').after('<td class="rowfollow"><a title="点击克隆种子信息" target="_blank" href="/upload.php#clone_' + id + '"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH3AUIEBkrj+YiQwAAAxtJREFUSMellc1rXGUUxn/nPee8d2aaJpOYmqSV1lTciOJGKJSCCK7dFXQhuHMvdeXSpXtxmb+gS0Eh0p0gUsVWEZWkMeAHCcHGNGYmc+9xMZ/pJM4U7+rycu95zvN7zr1HADbfucL/vVbXtk49l9HiEiUgDUCmqBmBtBAp/0vERu6fBrkVotdCSJOqSwBRbQp89Nujzr1moWMkVte2hgIS1bsHzavv71y8TiSbVB+A5u79G3N/3L1w2O68t+BVO1WJEHkI7IZ0BfuVEvDS/tLL/PXsqxDl5OqiVOcW0N/vvb5bxvq81yvNipZHO1J1PpSoboekgYAAkszJrl37kwIQxd1oa902Ll5fqZ57geb58zR3719a3vzsA4n2HWBvwCIANSUXDpVO4SBhZpCU48Yi7fnLtJvzHFii2r5zIbWOZhHdOwFbVfGckWoyokgJcwMBs0R2JbvhriBDBjbsH0yVnB1i4hCBKOZGiGCquDs5Z9ysO+NxQqDnwJRcZJjCAZJwM44R1AzPjheOuTP6GZ2CyKGawkHqOuhItzHPTs4+wDYuEIFaIucpHaSEuoEIZkNE5j1EfeyPO0jFlA5EEXdEZODAs6PuINKPYFxAngARvUBNuxnkIpN8Qsj2BIiih0it+9F5dqR3dmbIOTsxpYPK7QSinB3c6Iw8NubAiwxlZyqBjnUFzIaIKndKYSyDAEJFyPUalFMgUgVLQPQQdUMu3WghPDZFUkXE963v1m/6U8uI5e6pCPQfjpE/oAhE0Prmc/6WOtRmKIpMzpmOOyJQRffN4T5Q+6T189ezrY1vr4lIAmK/XV5taX1Z5xY5bck90gYbV15jeeUZZptz5HqNoEOUZfQ33WgGf0LcojxuBMhSPZXrDw7f0nP2cTEzV4jlIdgBV2Ph4QMu/XRIufcVB6q0frlLHB18Kcl26Ld12tLfO6rYOaqKRqpuWuKGwNg/XICaCg0DGxr8VczWCLYROXu5f/rGCkmETgRfbP/D2g/71O3k+NYMXlmq8ebzM7y4WIyKnGjizOvHty8PRuzMYRKwdHqnq2tb/AtfUe1KQr9mZwAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxNi0wOS0xN1QxNToxNzo0NyswODowMIu/JeMAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTItMDUtMDhUMTY6MjU6NDMrMDg6MDCbVEygAAAATXRFWHRzb2Z0d2FyZQBJbWFnZU1hZ2ljayA3LjAuMS02IFExNiB4ODZfNjQgMjAxNi0wOS0xNyBodHRwOi8vd3d3LmltYWdlbWFnaWNrLm9yZ93ZpU4AAAAYdEVYdFRodW1iOjpEb2N1bWVudDo6UGFnZXMAMaf/uy8AAAAYdEVYdFRodW1iOjpJbWFnZTo6SGVpZ2h0ADUxMo+NU4EAAAAXdEVYdFRodW1iOjpJbWFnZTo6V2lkdGgANTEyHHwD3AAAABl0RVh0VGh1bWI6Ok1pbWV0eXBlAGltYWdlL3BuZz+yVk4AAAAXdEVYdFRodW1iOjpNVGltZQAxMzM2NDY1NTQzfWYZJAAAABJ0RVh0VGh1bWI6OlNpemUAMTYuOUtCML+chwAAAF90RVh0VGh1bWI6OlVSSQBmaWxlOi8vL2hvbWUvd3d3cm9vdC9zaXRlL3d3dy5lYXN5aWNvbi5uZXQvY2RuLWltZy5lYXN5aWNvbi5jbi9zcmMvMTA2NjIvMTA2NjI1NC5wbme2gbXWAAAAAElFTkSuQmCC"></a></td>');
            }
        });
        return;
    }

    jq('form#compose table tr:eq(1)').before('<td class="rowhead nowrap" valign="top" align="right">引用种子链接</td><td class="rowfollow" valign="top" align="left"><input type="text" style="width:320px;" id="clone_from" placeholder="请输入种子ID或链接..." onkeypress="if(event.keyCode==13){clone_btn.click();}"/><input type="button" id="clone_btn" style="size:100px;" value=" 克   隆 ">&nbsp;&nbsp;&nbsp;&nbsp;<span>[克隆状态:</span><span id="clone_info">请输入要克隆的种子编号或者链接</span><span>]</span></td>');

    function requestData(url, successHandle, timeoutHandle) {
        GM_xmlhttpRequest({
            method: 'GET',
            url: url,
            timeout: 5000,
            onreadystatechange: successHandle,
            ontimeout: timeoutHandle,
        });
    }

    function requestJson(url, successHandle, timeoutHandle) {
        requestData(url, function(response) {
            if (response.readyState == 4) {
                successHandle(JSON.parse(response.responseText));
            }
        }, function(response) {
            timeoutHandle(response);
        });
    }

    jq("input#info").css('width', '580px');
    jq("input#info").after('<input type="button" id="query_btn" style="width:70px;" value=" 查   询 ">');
    jq("input#query_btn").click(function() {
        var query_input = jq("input#info").val().trim();
        var Search_From_API = function(url, callback) {
            requestJson(url, function(res, resj) {
                let search_html = callback(res, resj);
                if (search_html) {
                    jq('span#search_res').remove();
                    jq('#compose>table>tbody>tr:eq(8)>td.rowfollow>font').after(search_html).show();
                    jq("a.search_choose").click(function() {
                        jq('input#info').val(jq(this).attr("data-url"));
                        jq('span#search_res').remove();
                    });
                }
            }, function() {});
        };
        Search_From_API("https://api.douban.com/v2/movie/search?q=" + query_input, function(resj) {
            let search_html = "";
            if (resj.total !== 0) {
                search_html = '<span id="search_res"><hr><table style="width: 100%" align="center"><tr><td class="colhead" align="center">年代</td><td class="colhead" align="center">类别</td><td class="colhead" align="center">标题</td><td class="colhead" align="center">豆瓣链接</td><td class="colhead" align="center">行为</td></tr>';
                for (let i_douban = 0; i_douban < resj.subjects.length; i_douban++) {
                    let i_item = resj.subjects[i_douban];
                    search_html += "<tr><td class='rowfollow' align='center'>" + i_item.year + "</td><td class='rowfollow' align='center'>" + i_item.subtype + "</td><td class='rowfollow'>" + i_item.title + "</td><td class='rowfollow'><a href='" + i_item.alt + "' target='_blank'>" + i_item.alt + "</a></td><td class='rowfollow' align='center'><a href='javascript:void(0);' class='search_choose' data-url='" + i_item.alt + "'>选择</a></td></tr>";
                }
                search_html += "</table></span>";
            }
            return search_html;
        });
    });


    jq('#clone_btn').click(function() {
        // jq('#torrent').removeAttr('onchange');
        var seedfrom = jq('#clone_from').val().trim().match(/(\d+)/)[1];
        var info = jq('#clone_info');
        if (/\d+/.test(seedfrom)) {
            info.text('正在读取...');
            jq.get('//ourbits.club/details.php?id=' + seedfrom, function(resp) {
                info.text('正在分析...');
                var title = resp.match(/<title>[\s\S]*<\/title>/gi)[0];
                var body = resp.match(/<body[^>]*>[\s\S]*<\/body>/gi)[0];
                var page = jq(body);
                var seed_info = page.find('td#outer table');
                var seed_descr = seed_info.find('div#kdescr');

                //标题
                title = title.match(/quot;([\s\S]*)&quot/);
                if (title) {
                    jq('input#name').val(title[1]);
                }
                // 副标题
                var sub_title = "";
                if (page.find('td#outer table tr:eq(1) td:eq(1) a').length) {
                    sub_title = page.find('td#outer table:eq(1) tr:eq(1) td:eq(1)').text();
                } else {
                    sub_title = page.find('td#outer table tr:eq(1) td:eq(1)').text();
                }
                if (sub_title) {
                    jq("input[name='small_descr']").val(sub_title);
                }
                // 匿名发布
                jq("input[name=uplver]").attr("checked", SetAnonymous);

                // IMDB链接
                var imdb_or_douban_link = "";
                if (seed_info.find('div#imdbinfo').length) {
                    let imdblink_t = seed_info.find('div#imdbinfo a:first').attr('href');
                    if (imdblink_t.match(/www\.imdb\.com/)) {
                        imdb_or_douban_link = imdblink_t;
                    }
                }
                if (imdb_or_douban_link == "" && seed_info.find('div#doubaninfo').length) {
                    let doubanlink_t = seed_info.find('div#doubaninfo a:first').attr('href');
                    if (doubanlink_t.match(/movie\.douban\.com/)) {
                        imdb_or_douban_link = doubanlink_t;
                    }
                }
                if (imdb_or_douban_link == "") {
                    let imdb_match = seed_descr.text().match(/(http[\S]{0,2}\/\/www\.imdb\.com\/title\/tt\d+)/);
                    if (imdb_match) {
                        imdb_or_douban_link = imdb_match[1] + "/";
                    } else {
                        let douban_match = seed_descr.text().match(/(http[\S]{0,2}\/\/movie\.douban\.com\/subject\/\d+)/);
                        if (douban_match) {
                            imdb_or_douban_link = douban_match[1] + "/";
                        }
                    }
                }
                jq("input#info").val(imdb_or_douban_link);
                //
                jq("input[name=uplver]").attr("checked", true);
                // 简介
                if (seed_descr.find('div.codetop').length) {
                    seed_descr.find('div.codetop').remove();
                    seed_descr.find('div.codemain').remove();
                }
                if (seed_descr.find('fieldset').length) {
                    seed_descr.find('fieldset').remove();
                }
                if (seed_descr.find('img').length) {
                    var img_src = seed_descr.find('img:first').attr("src");
                    if (img_src.match(/http[\S]{0,2}\/\//)) {
                        img_src = "[img]" + img_src + "[/img]";
                    } else {
                        img_src = "[img]https://ourbits.club/" + img_src + "[/img]";
                    }
                    SmileIT(img_src + seed_descr.text(), 'upload', 'descr');
                } else {
                    SmileIT(seed_descr.text(), 'upload', 'descr');
                }
                // 视频参数
                var seed_type = seed_info.find('tr:eq(2) td:eq(1)').text();
                if (seed_type) {
                    var regx = "";
                    var fillarea_pre = ["类型: ", "媒介: ", "编码: ", "音频编码: ", "分辨率: ", "", "制作组: "];
                    var fillarea = ["type", "medium_sel", "codec_sel", "audiocodec_sel", "standard_sel", "processing_sel", "team_sel"];
                    for (var i = 0; i < fillarea.length; i++) {
                        jq("select[name='" + fillarea[i] + "'] option").each(function() {
                            var option_str = jq(this).text();
                            if (i === 0)
                                option_str = option_str.replace(/\/[\s\S]+/, "").trim();
                            regx = new RegExp(fillarea_pre[i] + option_str, 'i');
                            if (regx.test(seed_type)) {
                                jq(this).attr('selected', 'selected');
                                seed_type = seed_type.replace(regx, "");
                                return false;
                            }
                        });
                    }
                }
                info.text('克隆完成');
            });
        } else {
            info.text('请输入要克隆的种子编号或者链接');
        }
    });

    jq(document).ready(function() {
        let match = location.href.match(/#clone_(\d+)/);
        if (match) {
            history.pushState("", document.title, window.location.pathname + window.location.search);
            jq('#clone_from').val(match[1]);
            jq('#clone_btn').click();

        }
    });
})();