pervert-monkey 1.0.24 → 1.0.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -2
- package/dist/core/pervertmonkey.core.es.d.ts +2 -540
- package/dist/core/pervertmonkey.core.es.js +8001 -9280
- package/dist/core/pervertmonkey.core.es.js.map +1 -1
- package/dist/core/pervertmonkey.core.umd.js +8829 -10050
- package/dist/core/pervertmonkey.core.umd.js.map +1 -1
- package/dist/userscripts/3hentai.user.js +40 -46
- package/dist/userscripts/camgirlfinder.user.js +56 -49
- package/dist/userscripts/camwhores.user.js +286 -343
- package/dist/userscripts/e-hentai.user.js +54 -57
- package/dist/userscripts/ebalka.user.js +52 -55
- package/dist/userscripts/eporner.user.js +76 -68
- package/dist/userscripts/erome.user.js +79 -84
- package/dist/userscripts/eroprofile.user.js +28 -29
- package/dist/userscripts/javhdporn.user.js +28 -22
- package/dist/userscripts/missav.user.js +22 -23
- package/dist/userscripts/motherless.user.js +141 -147
- package/dist/userscripts/namethatporn.user.js +49 -58
- package/dist/userscripts/nhentai.user.js +104 -99
- package/dist/userscripts/obmenvsem.user.js +61 -69
- package/dist/userscripts/pornhub.user.js +50 -47
- package/dist/userscripts/simpcity.user.js +44 -0
- package/dist/userscripts/socialmediagirls.user.js +26 -22
- package/dist/userscripts/spankbang.user.js +62 -44
- package/dist/userscripts/thisvid.user.js +1269 -1366
- package/dist/userscripts/xhamster.user.js +119 -132
- package/dist/userscripts/xvideos.user.js +115 -91
- package/package.json +10 -6
- package/src/core/data-handler/data-filter.ts +4 -3
- package/src/core/parsers/pagination-parser/index.ts +0 -6
- package/src/core/parsers/pagination-parser/pagination-strategies/PaginationStrategyPathnameParams.ts +36 -1
- package/src/core/parsers/thumb-data-parser.ts +7 -3
- package/src/userscripts/index.ts +1 -1
- package/src/userscripts/meta.json +1 -1
- package/src/userscripts/scripts/3hentai.ts +1 -1
- package/src/userscripts/scripts/camgirlfinder.ts +1 -1
- package/src/userscripts/scripts/camwhores.ts +2 -2
- package/src/userscripts/scripts/e-hentai.ts +1 -1
- package/src/userscripts/scripts/ebalka.ts +1 -1
- package/src/userscripts/scripts/eporner.ts +41 -15
- package/src/userscripts/scripts/erome.ts +1 -1
- package/src/userscripts/scripts/eroprofile.ts +6 -6
- package/src/userscripts/scripts/javhdporn.ts +1 -1
- package/src/userscripts/scripts/missav.ts +1 -1
- package/src/userscripts/scripts/motherless.ts +42 -37
- package/src/userscripts/scripts/namethatporn.ts +1 -1
- package/src/userscripts/scripts/nhentai.ts +1 -1
- package/src/userscripts/scripts/obmenvsem.ts +1 -1
- package/src/userscripts/scripts/pornhub.ts +1 -1
- package/src/userscripts/scripts/simpcity.ts +27 -0
- package/src/userscripts/scripts/socialmediagirls.ts +4 -3
- package/src/userscripts/scripts/spankbang.ts +20 -4
- package/src/userscripts/scripts/thisvid.ts +8 -21
- package/src/userscripts/scripts/xhamster.ts +11 -3
- package/src/userscripts/scripts/xvideos.ts +26 -7
- package/src/utils/fetch/index.ts +2 -0
- package/src/utils/objects/memoize.ts +1 -9
- package/dist/test/test.user.js +0 -10301
|
@@ -1,64 +1,58 @@
|
|
|
1
1
|
// ==UserScript==
|
|
2
2
|
// @name 3Hentai PervertMonkey
|
|
3
3
|
// @namespace pervertmonkey
|
|
4
|
-
// @version 1.0.
|
|
4
|
+
// @version 1.0.20
|
|
5
5
|
// @author violent-orangutan
|
|
6
6
|
// @description Infinite scroll [optional], Filter by Title, thumb preview
|
|
7
7
|
// @license MIT
|
|
8
8
|
// @icon https://www.google.com/s2/favicons?sz=64&domain=3hentai.net
|
|
9
9
|
// @homepage https://github.com/smartacephale/sleazy-fork#readme
|
|
10
10
|
// @homepageURL https://sleazyfork.org/en/users/1253342-smartacephale
|
|
11
|
-
// @source https://github.com/smartacephale
|
|
11
|
+
// @source https://github.com/smartacephale/sleazy-fork
|
|
12
12
|
// @supportURL https://github.com/smartacephale/sleazy-fork/issues
|
|
13
13
|
// @match https://*.3hentai.net/*
|
|
14
|
-
// @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.
|
|
15
|
-
// @require data:application/javascript,var core = window.pervertmonkey.core || pervertmonkey.core; var utils = core;
|
|
14
|
+
// @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.26/dist/core/pervertmonkey.core.umd.js
|
|
16
15
|
// @grant GM_addStyle
|
|
17
16
|
// @grant unsafeWindow
|
|
18
17
|
// @run-at document-idle
|
|
19
18
|
// ==/UserScript==
|
|
20
19
|
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
var ___core = window.pervertmonkey.core || pervertmonkey.core;
|
|
21
|
+
var ___utils = ___core;
|
|
23
22
|
|
|
24
|
-
new core.Rules({
|
|
25
|
-
containerSelectorLast: ".listing-container",
|
|
26
|
-
thumbs: {
|
|
27
|
-
selector: ".doujin-col"
|
|
28
|
-
},
|
|
29
|
-
thumb: {
|
|
30
|
-
selectors: {
|
|
31
|
-
title: ".title"
|
|
32
|
-
}
|
|
33
|
-
},
|
|
34
|
-
thumbImg: {
|
|
35
|
-
strategy: "auto"
|
|
36
|
-
},
|
|
37
|
-
gropeStrategy: "all-in-all",
|
|
38
|
-
schemeOptions: ["Title Filter", "Badge", "Advanced"],
|
|
39
|
-
animatePreview
|
|
40
|
-
});
|
|
41
|
-
function animatePreview() {
|
|
42
|
-
const tick = new utils.Tick(500, false);
|
|
43
|
-
const end = 9999;
|
|
44
|
-
function rotate(src) {
|
|
45
|
-
return src.replace(/(\d+)(?=t\.jpg$)/, (_, n) => `${utils.circularShift(parseInt(n), end)}`);
|
|
46
|
-
}
|
|
47
|
-
utils.OnHover.create(document.body, ".doujin-col", (e) => {
|
|
48
|
-
const img = e.querySelector("img");
|
|
49
|
-
const origin = img.src;
|
|
50
|
-
img.src = img.src.replace(/\w+\.\w+$/, "1t.jpg");
|
|
51
|
-
img.onerror = (_) => tick.stop();
|
|
52
|
-
tick.start(
|
|
53
|
-
() => {
|
|
54
|
-
img.src = rotate(img.src);
|
|
55
|
-
},
|
|
56
|
-
() => {
|
|
57
|
-
img.src = origin;
|
|
58
|
-
}
|
|
59
|
-
);
|
|
60
|
-
return () => tick.stop();
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
23
|
|
|
64
|
-
|
|
24
|
+
(function(___core, ___utils) {
|
|
25
|
+
"use strict";
|
|
26
|
+
new ___core.Rules({
|
|
27
|
+
containerSelectorLast: ".listing-container",
|
|
28
|
+
thumbs: { selector: ".doujin-col" },
|
|
29
|
+
thumb: { selectors: { title: ".title" } },
|
|
30
|
+
thumbImg: { strategy: "auto" },
|
|
31
|
+
gropeStrategy: "all-in-all",
|
|
32
|
+
schemeOptions: [
|
|
33
|
+
"Title Filter",
|
|
34
|
+
"Badge",
|
|
35
|
+
"Advanced"
|
|
36
|
+
],
|
|
37
|
+
animatePreview
|
|
38
|
+
});
|
|
39
|
+
function animatePreview() {
|
|
40
|
+
const tick = new ___utils.Tick(500, false);
|
|
41
|
+
const end = 9999;
|
|
42
|
+
function rotate(src) {
|
|
43
|
+
return src.replace(/(\d+)(?=t\.jpg$)/, (_, n) => `${(0, ___utils.circularShift)(parseInt(n), end)}`);
|
|
44
|
+
}
|
|
45
|
+
___utils.OnHover.create(document.body, ".doujin-col", (e) => {
|
|
46
|
+
const img = e.querySelector("img");
|
|
47
|
+
const origin = img.src;
|
|
48
|
+
img.src = img.src.replace(/\w+\.\w+$/, "1t.jpg");
|
|
49
|
+
img.onerror = (_) => tick.stop();
|
|
50
|
+
tick.start(() => {
|
|
51
|
+
img.src = rotate(img.src);
|
|
52
|
+
}, () => {
|
|
53
|
+
img.src = origin;
|
|
54
|
+
});
|
|
55
|
+
return () => tick.stop();
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
})(___core, ___utils);
|
|
@@ -1,66 +1,73 @@
|
|
|
1
1
|
// ==UserScript==
|
|
2
2
|
// @name CamGirlFinder PervertMonkey
|
|
3
3
|
// @namespace pervertmonkey
|
|
4
|
-
// @version 1.6.
|
|
4
|
+
// @version 1.6.19
|
|
5
5
|
// @author violent-orangutan
|
|
6
6
|
// @description Adds model links for CamWhores, webcamrecordings, recu.me, camvideos, privat-zapisi
|
|
7
7
|
// @license MIT
|
|
8
8
|
// @icon https://www.google.com/s2/favicons?sz=64&domain=camgirlfinder.net
|
|
9
9
|
// @homepage https://github.com/smartacephale/sleazy-fork#readme
|
|
10
10
|
// @homepageURL https://sleazyfork.org/en/users/1253342-smartacephale
|
|
11
|
-
// @source https://github.com/smartacephale
|
|
11
|
+
// @source https://github.com/smartacephale/sleazy-fork
|
|
12
12
|
// @supportURL https://github.com/smartacephale/sleazy-fork/issues
|
|
13
13
|
// @match https://camgirlfinder.net/*
|
|
14
|
-
// @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.
|
|
15
|
-
// @require data:application/javascript,var core = window.pervertmonkey.core || pervertmonkey.core; var utils = core;
|
|
14
|
+
// @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.26/dist/core/pervertmonkey.core.umd.js
|
|
16
15
|
// @grant none
|
|
17
16
|
// @run-at document-idle
|
|
18
17
|
// ==/UserScript==
|
|
19
18
|
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
var ___core = window.pervertmonkey.core || pervertmonkey.core;
|
|
20
|
+
var ___utils = ___core;
|
|
22
21
|
|
|
23
|
-
const websites = [
|
|
24
|
-
{ name: "camwhores.tv", url: (u) => `https://camwhores.tv/search/${u}/` },
|
|
25
|
-
{
|
|
26
|
-
name: "webcamrecordings.com",
|
|
27
|
-
url: (u) => `https://www.webcamrecordings.com/modelSearch/${u}/page/1/`
|
|
28
|
-
},
|
|
29
|
-
{ name: "camvideos.me", url: (u) => `https://camvideos.me/search/${u}` },
|
|
30
|
-
{ name: "recu.me", url: (u) => `https://recu.me/performer/${u}` },
|
|
31
|
-
{
|
|
32
|
-
name: "privat-zapisi.info",
|
|
33
|
-
url: (u) => `https://www.privat-zapisi.info/search/${u}/`
|
|
34
|
-
}
|
|
35
|
-
];
|
|
36
|
-
function createLinks(name) {
|
|
37
|
-
return websites.map(
|
|
38
|
-
(w) => `
|
|
39
|
-
<a rel="nofollow" href="${w.url(name)}">
|
|
40
|
-
<img class="platform-icon" title="${w.name}" src="https://www.google.com/s2/favicons?sz=64&domain=${w.name}"></a>`
|
|
41
|
-
).join(" ");
|
|
42
|
-
}
|
|
43
|
-
function addRedirectButton() {
|
|
44
|
-
if (!document.body.querySelector(".model-name")?.innerText.trim()) return;
|
|
45
|
-
document.querySelectorAll(".result:not(.fucked)").forEach((e) => {
|
|
46
|
-
const name = e.querySelector(".model-name")?.innerText.trim();
|
|
47
|
-
if (name?.length === 0) return;
|
|
48
|
-
e.querySelector("p:last-child").innerHTML += createLinks(name);
|
|
49
|
-
e.classList.add("fucked");
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
let timeout;
|
|
53
|
-
const observer = new MutationObserver((mutations) => {
|
|
54
|
-
mutations.forEach(() => {
|
|
55
|
-
clearTimeout(timeout);
|
|
56
|
-
timeout = setTimeout(addRedirectButton, 300);
|
|
57
|
-
});
|
|
58
|
-
});
|
|
59
|
-
observer.observe(document.body, {
|
|
60
|
-
attributes: true,
|
|
61
|
-
childList: true,
|
|
62
|
-
subtree: true
|
|
63
|
-
});
|
|
64
|
-
addRedirectButton();
|
|
65
22
|
|
|
66
|
-
|
|
23
|
+
(function() {
|
|
24
|
+
"use strict";
|
|
25
|
+
var websites = [
|
|
26
|
+
{
|
|
27
|
+
name: "camwhores.tv",
|
|
28
|
+
url: (u) => `https://camwhores.tv/search/${u}/`
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
name: "webcamrecordings.com",
|
|
32
|
+
url: (u) => `https://www.webcamrecordings.com/modelSearch/${u}/page/1/`
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: "camvideos.me",
|
|
36
|
+
url: (u) => `https://camvideos.me/search/${u}`
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: "recu.me",
|
|
40
|
+
url: (u) => `https://recu.me/performer/${u}`
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: "privat-zapisi.info",
|
|
44
|
+
url: (u) => `https://www.privat-zapisi.info/search/${u}/`
|
|
45
|
+
}
|
|
46
|
+
];
|
|
47
|
+
function createLinks(name) {
|
|
48
|
+
return websites.map((w) => `
|
|
49
|
+
<a rel="nofollow" href="${w.url(name)}">
|
|
50
|
+
<img class="platform-icon" title="${w.name}" src="https://www.google.com/s2/favicons?sz=64&domain=${w.name}"></a>`).join(" ");
|
|
51
|
+
}
|
|
52
|
+
function addRedirectButton() {
|
|
53
|
+
if (!document.body.querySelector(".model-name")?.innerText.trim()) return;
|
|
54
|
+
document.querySelectorAll(".result:not(.fucked)").forEach((e) => {
|
|
55
|
+
const name = e.querySelector(".model-name")?.innerText.trim();
|
|
56
|
+
if (name?.length === 0) return;
|
|
57
|
+
e.querySelector("p:last-child").innerHTML += createLinks(name);
|
|
58
|
+
e.classList.add("fucked");
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
var timeout;
|
|
62
|
+
new MutationObserver((mutations) => {
|
|
63
|
+
mutations.forEach(() => {
|
|
64
|
+
clearTimeout(timeout);
|
|
65
|
+
timeout = setTimeout(addRedirectButton, 300);
|
|
66
|
+
});
|
|
67
|
+
}).observe(document.body, {
|
|
68
|
+
attributes: true,
|
|
69
|
+
childList: true,
|
|
70
|
+
subtree: true
|
|
71
|
+
});
|
|
72
|
+
addRedirectButton();
|
|
73
|
+
})();
|