电影列表排序助手

给包含很长电影列表的单个页面添加几个筛选排序功能,比如按照年份、评分等对电影列表重新进行排序。作者:浴火凤凰(QQ:307053741,油猴脚本讨论QQ群:194885662)

Installera detta skript?
Författaren's rekommenderade skript

Du kanske också gillar GreasyFork Helper.

Installera detta skript
// ==UserScript==
// @name         电影列表排序助手
// @namespace    https://github.com/kingphoenix2000/tampermonkey_scripts
// @supportURL   https://github.com/kingphoenix2000/tampermonkey_scripts
// @version      0.1.2
// @author       浴火凤凰(QQ:307053741,油猴脚本讨论QQ群:194885662)
// @description  给包含很长电影列表的单个页面添加几个筛选排序功能,比如按照年份、评分等对电影列表重新进行排序。作者:浴火凤凰(QQ:307053741,油猴脚本讨论QQ群:194885662)
// @homepage     https://blog.csdn.net/kingwolf_javascript/
// @include      https://leisidianying.com/*
// @grant        GM_openInTab
// @note         2020-02-22:1.增加使用说明和显示更多电影按钮
// @note         2020-02-22:2.增加电影详情页的相似度查询
// ==/UserScript==


(function () {
    'use strict';

    function removeADS(arr) {
        arr.forEach(function (v) {
            let elem = document.querySelector(v);
            if (elem) { elem.remove(); }
        });
    }

    //标签列表页
    function setButton() {
        let div = document.createElement("div");
        div.id = "sortHelper";
        let h4 = document.createElement("h4");
        let h5 = document.createElement("h5");
        h4.innerHTML = '<a href="https://greasyfork.org/zh-CN/users/289205-%E6%B5%B4%E7%81%AB%E5%87%A4%E5%87%B0" target="_blank">★★★电影列表排序助手,作者:浴火凤凰(QQ:307053741)★★★</a>';
        let totalMovie = document.querySelector(".block-main.block-main-first div.item-name div.rat span[title=rating]").innerText;
        let loaded = document.querySelectorAll("#tag-movie-list > div.item").length;
        let title = document.querySelector("#block-tag-movie-list > div.heading-c > h2");
        title.innerHTML = title.innerText + '<font color="red">(30/100)</font>'.replace("30", loaded).replace("100", totalMovie);
        let info = '<div style="color:red;">1.本标签系列共有电影' + totalMovie + '部,首次打开页面只显示了' + loaded + '部,想要显示更多电影请点击【显示更多电影】按钮。</div>';
        info += '<div style="color:red;">2.点击【显示更多电影】按钮之后,需要再次点击筛选按钮,才会对新加载的电影进行排序。</div>';
        h5.innerHTML = info;
        let input0 = document.createElement("input");
        let input1 = document.createElement("input");
        let input2 = document.createElement("input");
        input0.type = "button";
        input0.value = "显示更多电影";
        input1.type = "button";
        input1.value = "年份从远到近";
        input1.style.marginLeft = "15px";
        input2.type = "button";
        input2.value = "年份从近到远";
        input2.style.marginLeft = "15px";
        input0.onclick = function () {
            var iRelListNextPage = iTagMovieListCurrentPage + 1;
            $('#buttonMoreTagMovieListContainer button').attr('disabled', 'disabled');
            document.querySelector("#sortHelper input:first-of-type").value = "正在加载...";
            document.querySelector("#sortHelper input:first-of-type").disabled = true;
            $.ajax({
                url: sTagMovieListMoreUrl + '&order=' + iTagMovieListOrder + '&page=' + iRelListNextPage,
                success: function (data) {
                    $('#tag-movie-list').append(data);
                    iTagMovieListCurrentPage++;
                    let loaded = document.querySelectorAll("#tag-movie-list > div.item").length;
                    let title = document.querySelector("#block-tag-movie-list > div.heading-c > h2 > font");
                    title.innerText = '(' + loaded + '/' + totalMovie + ')';
                    if (iTagMovieListCurrentPage == iTagMovieListLastPage) {
                        $('#buttonMoreTagMovieListContainer').remove();
                        document.querySelector("#sortHelper input:first-of-type").value = "全部加载完毕";
                        document.querySelector("#sortHelper input:first-of-type").disabled = true;
                    } else {
                        $('#buttonMoreTagMovieListContainer button').removeAttr('disabled');
                        document.querySelector("#sortHelper input:first-of-type").value = "显示更多电影";
                        document.querySelector("#sortHelper input:first-of-type").disabled = false;
                    }
                }
            })
        }
        input1.onclick = input2.onclick = function () {
            let items = document.querySelectorAll("#tag-movie-list > div.item");
            let len = items.length;
            let arr = [];
            for (let i = 0; i < len; i++) {
                arr.push(items[i]);
            }
            let _this = this;
            arr.sort(function (a, b) {
                let name1 = a.querySelector("div.item-name div.name-c a.name");
                let year1 = name1.innerText.match(/\((\d+)\)/);
                if (year1) { year1 = +year1[1] }
                else { year1 = 0; }
                let name2 = b.querySelector("div.item-name div.name-c a.name");
                let year2 = name2.innerText.match(/\((\d+)\)/);
                if (year2) { year2 = +year2[1] }
                else { year2 = 0; }
                if (_this.value == "年份从近到远") { return year2 - year1; }
                else { return year1 - year2; }

            });
            let div = document.createElement("div");
            for (let i = 0; i < len; i++) {
                div.appendChild(arr[i]);
            }
            document.querySelector("#tag-movie-list").innerHTML = div.innerHTML;
        }
        let input3 = document.createElement("input");
        let input4 = document.createElement("input");
        input3.type = "button";
        input3.value = "评分从高到低";
        input3.style.marginLeft = "15px";
        input4.type = "button";
        input4.value = "评分从低到高";
        input4.style.marginLeft = "15px";
        input3.onclick = input4.onclick = function () {
            let items = document.querySelectorAll("#tag-movie-list > div.item");
            let len = items.length;
            let arr = [];
            for (let i = 0; i < len; i++) {
                arr.push(items[i]);
            }
            let _this = this;
            arr.sort(function (a, b) {
                let name1 = a.querySelector("div.item-name div.rat span[title=rating]");
                let rating1 = name1.innerText;
                if (rating1) { rating1 = +rating1 }
                else { rating1 = 0; }
                let name2 = b.querySelector("div.item-name div.rat span[title=rating]");
                let rating2 = name2.innerText;
                if (rating2) { rating2 = +rating2 }
                else { rating2 = 0; }
                if (_this.value == "评分从高到低") { return rating2 - rating1; }
                else { return rating1 - rating2; }

            });
            let div = document.createElement("div");
            for (let i = 0; i < len; i++) {
                div.appendChild(arr[i]);
            }
            document.querySelector("#tag-movie-list").innerHTML = div.innerHTML;
        }

        div.appendChild(h4);
        div.appendChild(h5);
        div.appendChild(input0);
        div.appendChild(input1);
        div.appendChild(input2);
        div.appendChild(input3);
        div.appendChild(input4);
        document.querySelector("#tag-movie-list").parentNode.insertBefore(div, document.querySelector("#tag-movie-list"));

    }

    //电影详情页
    function setButton2() {
        let div = document.createElement("div");
        div.id = "sortHelper";
        let h4 = document.createElement("h4");
        let h5 = document.createElement("h5");
        h4.innerHTML = '<a href="https://greasyfork.org/zh-CN/users/289205-%E6%B5%B4%E7%81%AB%E5%87%A4%E5%87%B0" target="_blank">★★★电影列表排序助手,作者:浴火凤凰(QQ:307053741)★★★</a>';
        // let totalMovie = document.querySelector(".block-main.block-main-first div.item-name div.rat span[title=rating]").innerText;
        let loaded = document.querySelectorAll("#movie-rel-list > div.item").length;
        let title = document.querySelector("#block-movie-rel-list > div.heading-c > h2");
        title.innerHTML = title.innerText + '<font color="red">(30)</font>'.replace("30", loaded);
        let info = '<div style="color:red;">1.想要显示更多电影请点击【显示更多电影】按钮。</div>';
        info += '<div style="color:red;">2.点击【显示更多电影】按钮之后,需要再次点击筛选按钮,才会对新加载的电影进行排序。</div>';
        h5.innerHTML = info;
        let input0 = document.createElement("input");
        let input1 = document.createElement("input");
        let input2 = document.createElement("input");
        input0.type = "button";
        input0.value = "显示更多电影";
        input1.type = "button";
        input1.value = "年份从远到近";
        input1.style.marginLeft = "15px";
        input2.type = "button";
        input2.value = "年份从近到远";
        input2.style.marginLeft = "15px";
        input0.onclick = function () {
            if (moreMovieRelListInProcess)
                return false;
            moreMovieRelListInProcess = true;
            var iRelListNextPage = iMovieRelListCurrentPage + 1;
            if (iRelListNextPage > iMovieRelListLastPage)
                return false;
            $('#buttonMoreMovieRelListContainer button').attr('disabled', 'disabled');
            document.querySelector("#sortHelper input:first-of-type").value = "正在加载...";
            document.querySelector("#sortHelper input:first-of-type").disabled = true;
            $.ajax({
                url: sMovieRelListMoreUrl + '&order=' + iMovieRelListOrder + '&page=' + iRelListNextPage,
                success: function (data) {
                    $('#movie-rel-list').append(data);
                    iMovieRelListCurrentPage++;
                    let loaded = document.querySelectorAll("#movie-rel-list > div.item").length;
                    let title = document.querySelector("#block-movie-rel-list > div.heading-c > h2 > font");
                    title.innerText = '(' + loaded + ')';
                    if (iMovieRelListCurrentPage == iMovieRelListLastPage) {
                        $('#buttonMoreMovieRelListContainer').remove();
                        document.querySelector("#sortHelper input:first-of-type").value = "全部加载完毕";
                        document.querySelector("#sortHelper input:first-of-type").disabled = true;
                    } else {
                        $('#buttonMoreMovieRelListContainer button').removeAttr('disabled');
                        document.querySelector("#sortHelper input:first-of-type").value = "显示更多电影";
                        document.querySelector("#sortHelper input:first-of-type").disabled = false;
                    }
                    setTimeout(function () {
                        moreMovieRelListInProcess = false;
                    }, 1e3)
                }
            });
        }
        input1.onclick = input2.onclick = function () {
            let items = document.querySelectorAll("#movie-rel-list > div.item");
            let len = items.length;
            let arr = [];
            for (let i = 0; i < len; i++) {
                arr.push(items[i]);
            }
            let _this = this;
            arr.sort(function (a, b) {
                let name1 = a.querySelector("div.item-name div.name-c a.name");
                let year1 = name1.innerText.match(/\((\d+)\)/);
                if (year1) { year1 = +year1[1] }
                else { year1 = 0; }
                let name2 = b.querySelector("div.item-name div.name-c a.name");
                let year2 = name2.innerText.match(/\((\d+)\)/);
                if (year2) { year2 = +year2[1] }
                else { year2 = 0; }
                if (_this.value == "年份从近到远") { return year2 - year1; }
                else { return year1 - year2; }

            });
            let div = document.createElement("div");
            for (let i = 0; i < len; i++) {
                div.appendChild(arr[i]);
            }
            document.querySelector("#movie-rel-list").innerHTML = div.innerHTML;
        }
        let input3 = document.createElement("input");
        let input4 = document.createElement("input");
        input3.type = "button";
        input3.value = "评分从高到低";
        input3.style.marginLeft = "15px";
        input4.type = "button";
        input4.value = "评分从低到高";
        input4.style.marginLeft = "15px";
        input3.onclick = input4.onclick = function () {
            let items = document.querySelectorAll("#movie-rel-list > div.item");
            let len = items.length;
            let arr = [];
            for (let i = 0; i < len; i++) {
                arr.push(items[i]);
            }
            let _this = this;
            arr.sort(function (a, b) {
                let name1 = a.querySelector("div.item-name div.rat span[title=rating]");
                let rating1 = name1.innerText;
                if (rating1) { rating1 = +rating1 }
                else { rating1 = 0; }
                let name2 = b.querySelector("div.item-name div.rat span[title=rating]");
                let rating2 = name2.innerText;
                if (rating2) { rating2 = +rating2 }
                else { rating2 = 0; }
                if (_this.value == "评分从高到低") { return rating2 - rating1; }
                else { return rating1 - rating2; }

            });
            let div = document.createElement("div");
            for (let i = 0; i < len; i++) {
                div.appendChild(arr[i]);
            }
            document.querySelector("#movie-rel-list").innerHTML = div.innerHTML;
        }
        let input5 = document.createElement("input");
        input5.type = "button";
        input5.value = "相似度";
        input5.style.marginLeft = "15px";
        input5.onclick = function () {
            let items = document.querySelectorAll("#movie-rel-list > div.item");
            let len = items.length;
            let arr = [];
            for (let i = 0; i < len; i++) {
                arr.push(items[i]);
            }
            let _this = this;
            arr.sort(function (a, b) {
                let name1 = a.querySelector("div.is-row.clearfix div.row div.smt span[title=rating]");
                let rating1 = name1.innerText.replace("%", "");
                if (rating1) { rating1 = +rating1 }
                else { rating1 = 0; }
                let name2 = b.querySelector("div.is-row.clearfix div.row div.smt span[title=rating]");
                let rating2 = name2.innerText.replace("%", "");
                if (rating2) { rating2 = +rating2 }
                else { rating2 = 0; }
                if (_this.value == "相似度") { return rating2 - rating1; }
                else { return rating1 - rating2; }

            });
            let div = document.createElement("div");
            for (let i = 0; i < len; i++) {
                div.appendChild(arr[i]);
            }
            document.querySelector("#movie-rel-list").innerHTML = div.innerHTML;
        }

        div.appendChild(h4);
        div.appendChild(h5);
        div.appendChild(input0);
        div.appendChild(input1);
        div.appendChild(input2);
        div.appendChild(input3);
        div.appendChild(input4);
        div.appendChild(input5);
        document.querySelector("#movie-rel-list").parentNode.insertBefore(div, document.querySelector("#movie-rel-list"));

    }




    if (location.hostname.includes("leisidianying.com")) {//整个网站
        if (location.href.includes("/tag/")) {//单个页面
            setTimeout(function () { setButton(); }, 2000);
        }
        if (location.href.includes("/movie/")) {//单个页面
            setTimeout(function () { setButton2(); }, 2000);
        }
    }
    // Your code here...
})();