🏠 Home 

电影列表排序助手

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


Install this script?
Author's suggested script

You may also like GreasyFork Helper.


Install this script
// ==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...
})();