简单动漫增强支持

简单动漫增强支持,包括:搜索位置提供指定类型资源搜索功能、磁链链接的tr属性修复为正确url地址、磁力链接添加dn属性(即display name显示名称)的支持

目前为 2020-03-05 提交的版本,查看 最新版本

// ==UserScript==
// @name         简单动漫增强支持
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  简单动漫增强支持,包括:搜索位置提供指定类型资源搜索功能、磁链链接的tr属性修复为正确url地址、磁力链接添加dn属性(即display name显示名称)的支持
// @author       fjqingyou
// @match        *://www.36dm.club/*
// @run-at       document-body
// @grant        none
// ==/UserScript==

(function() {
    'use strict';


    // Your code here...

    function $id(id){
        return document.getElementById(id);
    }

    function getQueryVariable(variable){
        var query = window.location.search.substring(1);
        var vars = query.split("&");
        for (var i=0;i<vars.length;i++) {
            var pair = vars[i].split("=");
            if(pair[0] == variable){
                return pair[1];
            }
        }
        return(false);
    }


    
    /**
     * 覆盖掉原始搜索
     */
    function overrideOriginSearch(){
        /**
         * 覆盖掉原始搜索
         */
        window.doSearch = function() {
            var topsearch = $id("topsearch");
            if(topsearch){
                var keyword = topsearch.value;
                if (!keyword || "请输入您要搜索的资源名称" == keyword) {
                    Window.alert("请输入您要搜索的资源名称");
                    return false;
                }


                var url = "/search.php?keyword=" + encodeURIComponent(keyword);

                var sort_id = $id("sort_id");
                if(sort_id != null){
                    url += "&sort_id=" + sort_id.value;
                }

                //执行跳转
                window.location.href = url;
            }
        };
    }


    /**
     * 创建搜索类型的 dom 对象
     */
    function createSearchTypeDom(){
        //环境
        var urlSort_id = getQueryVariable("sort_id");

        //创建下拉框
        var sort_id = document.createElement("select");

        //指定下拉框属性
        sort_id.style = "float: left; height: 25px; margin-right: 5px;";
        sort_id.id = "sort_id";
        sort_id.name = "sort_id";

        //选项元素项列表
        var arrItems =[
            [0, "全部"],

            [2, "動畫"],
            [7, "  新番連載"],
            [8, "  動畫合集", true],
            [14, "  英譯動畫"],

            [3, "漫畫"],
            [12, "  港台漫畫"],
            [13, "  原版日漫"],
            [16, "  英譯漫畫"],
            
            [4, "動漫音樂"],
            [15, "  音樂視頻"],

            
            [5, "RAW片源"],
            [20, "  日劇"],
            [21, "  特攝片"],
            [22, "  原版日劇"],
            [23, "  英譯日劇"],
            
            [18, "遊戲"],

            [6, "其他資源"],
            [17, "  寫真集"],
            [19, "  圖集"]
        ];

        //遍历生成 option 元素
        for(var i = 0 ; i < arrItems.length; i++){
            var item = arrItems[i];
            var option = document.createElement("option");
            option.value = item[0];
            option.text = item[1];

            //默认选中项
            if(!urlSort_id){//如果没有这个参数
                if(item[2]){//如果有默认指定这个的需求
                    option.selected = true;//那么才指定
                }
            }else{//如果存在这个参数
                option.selected = urlSort_id == option.value;//那么要求一致
            }

            sort_id.appendChild(option);
        }
        return sort_id;
    }


    /**
     * 添加搜索类型选项
     */
    function addSearchTypeOption(){
        //环境
        var topsearch = $id("topsearch");
        if(topsearch != null){
            //获取父节点
            var topsearchParent = topsearch.parentElement;

            //扩大这个元素的宽度,让它不被换行
            topsearchParent.style.width = "610px";

            //创建搜索类型节点
            var sort_id = createSearchTypeDom();

            //插入搜索类型
            topsearchParent.insertBefore(sort_id, topsearch);

            //覆盖掉原始搜索
            overrideOriginSearch();
        }
    }

    /**
     * 修复磁力链接的 tr 参数
     */
    function fixMagnetTr(){
        var magnetDom = $id("magnet");
        if(magnetDom){
            var url = magnetDom.href;
            var index = url.indexOf("&tr=http://");
            if(index > -1){
                var strLeft = url.substr(0, index + 4);
                var trUrl = url.substr(index + 4);
                magnetDom.href = strLeft + encodeURIComponent(trUrl);
            }
        }
    }

    /**
     * 添加磁力链接的显示名称
     */
    function addMagnetDisplayName(){
        var magnetDom = $id("magnet");
        if(magnetDom && !magnetDom.href.contains("&dn=")){
            var title = document.title;
            for(var i = 0 ; i < 2; i++){
                var index = title.lastIndexOf(" - ");
                if(index > -1){
                    title = title.substr(0, index);
                }
            }

            if(title.length > 0){
                magnetDom.href += "&dn=" + encodeURIComponent(title);
            }
        }
    }

    /**
     * 初始化
     */
    function init(){
        //添加搜索类型选项
        addSearchTypeOption();

        if(document.location.href.contains("/show-")){
            //修复磁力链接的 tr
            fixMagnetTr();

            //添加磁力链接的显示名称
            addMagnetDisplayName();
        }
    }

    init();
})();