☰

xmegadrive PervertMonkey

Infinite scroll [optional]. Filter by Title and Duration. Sort by Duration and Views.

Vous devrez installer une extension telle que Tampermonkey, Greasemonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Violentmonkey pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey ou Userscripts pour installer ce script.

Vous devrez installer une extension telle que Tampermonkey pour installer ce script.

Vous devrez installer une extension de gestionnaire de script utilisateur pour installer ce script.

(J'ai déjà un gestionnaire de scripts utilisateur, laissez-moi l'installer !)

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension telle que Stylus pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

Vous devrez installer une extension du gestionnaire de style pour utilisateur pour installer ce style.

(J'ai déjà un gestionnaire de style utilisateur, laissez-moi l'installer!)

// ==UserScript==
// @name         xmegadrive PervertMonkey
// @namespace    pervertmonkey
// @version      1.0.0
// @author       violent-orangutan
// @description  Infinite scroll [optional]. Filter by Title and Duration. Sort by Duration and Views.
// @license      MIT
// @icon         https://www.google.com/s2/favicons?sz=64&domain=xmegadrive.com
// @homepage     https://github.com/smartacephale/sleazy-fork#readme
// @homepageURL  https://sleazyfork.org/en/users/1253342-smartacephale
// @source       https://github.com/smartacephale/sleazy-fork
// @supportURL   https://github.com/smartacephale/sleazy-fork/issues
// @match        https://*.xmegadrive.com/*
// @exclude      https://*.xmegadrive.com/*mode=async*
// @require      https://cdn.jsdelivr.net/npm/[email protected]/dist/core/pervertmonkey.core.umd.js
// @grant        GM_addStyle
// @grant        unsafeWindow
// @run-at       document-idle
// ==/UserScript==

var ___core = window.pervertmonkey.core || pervertmonkey.core;
var ___utils = ___core;


(function(___core, ___utils) {
	"use strict";
	var $ = (() => typeof unsafeWindow != "undefined" ? unsafeWindow : void 0)().$;
	new ___core.Rules({
		containerSelector: "[id*=\"playlist\"]:has(> .item .title),[id*=\"videos\"]:has(> .item .title),form:has(>.item .title)",
		paginationStrategyOptions: { paginationSelector: ".pagination:not([id *= member])" },
		thumbs: { selector: ".list-videos .item, .playlist .item, .list-playlists > div > .item, .item:has(.title)" },
		thumb: {
			strategy: "auto-select",
			selectors: {
				private: {
					type: "boolean",
					selector: "[class*=private]"
				},
				views: {
					selector: ".views",
					type: "float"
				}
			}
		},
		dataManagerOptions: { removeDuplicates: true },
		thumbImg: { selector: "data-original" },
		gropeStrategy: "all-in-all",
		schemeOptions: [
			"Title Filter",
			"Duration Filter",
			"Sort By",
			"Badge",
			"Advanced"
		],
		animatePreview
	});
	function animatePreview(container) {
		const tick = new ___utils.Tick(500);
		function killjquery(n = 10) {
			if (n > 0) {
				n--;
				$("img[data-cnt]").off();
				setTimeout(() => killjquery(n), 250);
			}
		}
		killjquery();
		function rotateImg(src, count) {
			return src.replace(/(\d)(?=\.jpg$)/, (_, n) => `${(0, ___utils.circularShift)(parseInt(n), count)}`);
		}
		___utils.OnHover.create(container, ".list-videos .item, .playlist .item, .list-playlists > div > .item, .item:has(.title)", (e) => {
			const img = e.querySelector("img");
			const origin = img.src;
			const count = parseInt(img.getAttribute("data-cnt")) || 5;
			tick.start(() => {
				img.src = rotateImg(img.src, count);
			}, () => {
				img.src = origin;
			});
			return () => tick.stop();
		});
	}
})(___core, ___utils);