您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Automatically set the highest quality for all items on page
当前为
- // ==UserScript==
- // @name animestc.net - Automatically set the highest quality for all items on page
- // @name:pt-BR animestc.net - Seleciona a qualidade mais alta de download em todos os items da página
- // @namespace secretx_scripts
- // @match *://animestc.net/*
- // @match *://*.animestc.net/*
- // @version 2022.03.12
- // @author SecretX
- // @description Automatically set the highest quality for all items on page
- // @description:pt-br Seleciona automaticamente a qualidade mais alta de download em todos os items da página
- // @grant none
- // @icon https://www.animestc.net/icons/favicon-32x32.png
- // @license GNU LGPLv3
- // ==/UserScript==
- function sortByQuality(map) {
- return new Map([...map].sort((a, b) => String(a[0]).localeCompare(b[0])));
- }
- const qualityRegex = /\s*(\d+)\s*p\s*/i;
- function parseQuality(string) {
- let parsedQuality = string.match(qualityRegex);
- if (parsedQuality == null)
- return string;
- else
- return parsedQuality[1];
- }
- /**
- * Parses the quality options inside the `div` parameter, and return the "best" quality available.
- *
- * @param div a div that contains `a` html elements that represent the quality options of an episode
- * @returns {any} a map entry with the quality number (or string), e.g. 1080, 720, MP4 as key, and the highest
- * quality `a` html element as value
- */
- function highestQualityFromDiv(div) {
- const qualityMap = new Map();
- for (const elementA of div) {
- const quality = parseQuality(elementA.innerText);
- qualityMap.set(quality, elementA);
- }
- return sortByQuality(qualityMap).entries().next().value;
- }
- function getHighestQualitiesFromDivColl(divHtmlCol) {
- const highestQualityElems = [];
- for (let div of divHtmlCol) {
- const children = div.children;
- const highestQualityElem = highestQualityFromDiv(children);
- highestQualityElems.push(highestQualityElem[1])
- }
- return highestQualityElems;
- }
- window.addEventListener("load", function() {
- 'use strict';
- const qualityDivs = document.getElementsByClassName("episode-info-tabs");
- if (qualityDivs.length === 0) {
- console.info("There is no quality div on this page, skipping automatic quality selection for now.");
- return;
- }
- const highestQualityElems = getHighestQualitiesFromDivColl(qualityDivs);
- console.info(`highestQualityElems = ${highestQualityElems}`);
- for (const elementA of highestQualityElems) {
- console.info(`Clicking on ${elementA} element!`);
- elementA.click();
- }
- }, false);