pervert-monkey 1.0.21 → 1.0.23
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/dist/core/pervertmonkey.core.es.d.ts +15 -14
- package/dist/core/pervertmonkey.core.es.js +1567 -1569
- package/dist/core/pervertmonkey.core.es.js.map +1 -1
- package/dist/core/pervertmonkey.core.umd.js +1567 -1569
- package/dist/core/pervertmonkey.core.umd.js.map +1 -1
- package/dist/userscripts/3hentai.user.js +2 -2
- package/dist/userscripts/camgirlfinder.user.js +2 -2
- package/dist/userscripts/camwhores.user.js +2 -2
- package/dist/userscripts/e-hentai.user.js +2 -2
- package/dist/userscripts/ebalka.user.js +6 -5
- package/dist/userscripts/eporner.user.js +2 -2
- package/dist/userscripts/erome.user.js +7 -3
- package/dist/userscripts/eroprofile.user.js +2 -2
- package/dist/userscripts/javhdporn.user.js +2 -2
- package/dist/userscripts/missav.user.js +2 -2
- package/dist/userscripts/motherless.user.js +2 -2
- package/dist/userscripts/namethatporn.user.js +2 -2
- package/dist/userscripts/nhentai.user.js +2 -2
- package/dist/userscripts/obmenvsem.user.js +2 -2
- package/dist/userscripts/pornhub.user.js +2 -2
- package/dist/userscripts/socialmediagirls.user.js +42 -0
- package/dist/userscripts/spankbang.user.js +2 -2
- package/dist/userscripts/thisvid.user.js +2 -2
- package/dist/userscripts/xhamster.user.js +2 -2
- package/dist/userscripts/xvideos.user.js +2 -2
- package/package.json +2 -2
- package/src/core/data-handler/data-manager.ts +13 -16
- package/src/userscripts/scripts/3hentai.ts +1 -1
- package/src/userscripts/scripts/camgirlfinder.ts +1 -1
- package/src/userscripts/scripts/camwhores.ts +1 -1
- package/src/userscripts/scripts/e-hentai.ts +1 -1
- package/src/userscripts/scripts/ebalka.ts +6 -4
- package/src/userscripts/scripts/eporner.ts +1 -1
- package/src/userscripts/scripts/erome.ts +8 -3
- package/src/userscripts/scripts/eroprofile.ts +1 -1
- package/src/userscripts/scripts/javhdporn.ts +1 -1
- package/src/userscripts/scripts/missav.ts +1 -1
- package/src/userscripts/scripts/motherless.ts +1 -1
- 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/spankbang.ts +1 -1
- package/src/userscripts/scripts/thisvid.ts +1 -1
- package/src/userscripts/scripts/xhamster.ts +2 -2
- package/src/userscripts/scripts/xvideos.ts +1 -1
- package/src/utils/dom/attributes.ts +54 -0
- package/src/utils/dom/index.ts +4 -165
- package/src/utils/dom/miscellaneous.ts +55 -0
- package/src/utils/dom/selectors.ts +48 -0
- package/src/utils/events/index.ts +2 -2
- package/src/utils/observers/index.ts +16 -11
- package/src/utils/observers/lazy-image-loader.ts +13 -11
- package/src/utils/performance/index.ts +11 -5
- /package/src/utils/dom/{dom-observers.ts → observers.ts} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// ==UserScript==
|
|
2
2
|
// @name 3Hentai PervertMonkey
|
|
3
3
|
// @namespace pervertmonkey
|
|
4
|
-
// @version 1.0.
|
|
4
|
+
// @version 1.0.16
|
|
5
5
|
// @author violent-orangutan
|
|
6
6
|
// @description Infinite scroll [optional], Filter by Title, thumb preview
|
|
7
7
|
// @license MIT
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
// @source github: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.
|
|
14
|
+
// @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.23/dist/core/pervertmonkey.core.umd.js
|
|
15
15
|
// @require data:application/javascript,var core = window.pervertmonkey.core || pervertmonkey.core; var utils = core;
|
|
16
16
|
// @grant GM_addStyle
|
|
17
17
|
// @grant unsafeWindow
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// ==UserScript==
|
|
2
2
|
// @name CamGirlFinder PervertMonkey
|
|
3
3
|
// @namespace pervertmonkey
|
|
4
|
-
// @version 1.6.
|
|
4
|
+
// @version 1.6.15
|
|
5
5
|
// @author violent-orangutan
|
|
6
6
|
// @description Adds model links for CamWhores, webcamrecordings, recu.me, camvideos, privat-zapisi
|
|
7
7
|
// @license MIT
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
// @source github: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.
|
|
14
|
+
// @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.23/dist/core/pervertmonkey.core.umd.js
|
|
15
15
|
// @require data:application/javascript,var core = window.pervertmonkey.core || pervertmonkey.core; var utils = core;
|
|
16
16
|
// @grant none
|
|
17
17
|
// @run-at document-idle
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// ==UserScript==
|
|
2
2
|
// @name CamWhores PervertMonkey
|
|
3
3
|
// @namespace pervertmonkey
|
|
4
|
-
// @version 3.0.
|
|
4
|
+
// @version 3.0.19
|
|
5
5
|
// @author violent-orangutan
|
|
6
6
|
// @description Infinite scroll [optional]. Filter by Title, Duration and Private/Public. Sort by Duration and Views. Mass friend request button. Download button
|
|
7
7
|
// @license MIT
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
// @match https://*.camwhores.tv
|
|
14
14
|
// @match https://*.camwhores.*/*
|
|
15
15
|
// @exclude https://*.camwhores.tv/*mode=async*
|
|
16
|
-
// @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.
|
|
16
|
+
// @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.23/dist/core/pervertmonkey.core.umd.js
|
|
17
17
|
// @require data:application/javascript,var core = window.pervertmonkey.core || pervertmonkey.core; var utils = core;
|
|
18
18
|
// @grant GM_addStyle
|
|
19
19
|
// @grant unsafeWindow
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// ==UserScript==
|
|
2
2
|
// @name E-Hentai PervertMonkey
|
|
3
3
|
// @namespace pervertmonkey
|
|
4
|
-
// @version 1.0.
|
|
4
|
+
// @version 1.0.16
|
|
5
5
|
// @author violent-orangutan
|
|
6
6
|
// @description Infinite scroll [optional], Filter by Title
|
|
7
7
|
// @license MIT
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
// @source github:smartacephale/sleazy-fork
|
|
12
12
|
// @supportURL https://github.com/smartacephale/sleazy-fork/issues
|
|
13
13
|
// @match https://*.e-hentai.org/*
|
|
14
|
-
// @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.
|
|
14
|
+
// @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.23/dist/core/pervertmonkey.core.umd.js
|
|
15
15
|
// @require data:application/javascript,var core = window.pervertmonkey.core || pervertmonkey.core; var utils = core;
|
|
16
16
|
// @grant GM_addStyle
|
|
17
17
|
// @grant unsafeWindow
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// ==UserScript==
|
|
2
2
|
// @name Ebalka PervertMonkey
|
|
3
3
|
// @namespace pervertmonkey
|
|
4
|
-
// @version 3.0.
|
|
4
|
+
// @version 3.0.17
|
|
5
5
|
// @author violent-orangutan
|
|
6
6
|
// @description Infinite scroll [optional], Filter by Title and Duration, Sort by Duration, Download button.
|
|
7
7
|
// @license MIT
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
// @match https://*ebalka.*.*/*
|
|
16
16
|
// @match https://*.ebalk*.*/*
|
|
17
17
|
// @match https://*.fuckingbear*.*/*
|
|
18
|
-
// @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.
|
|
18
|
+
// @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.23/dist/core/pervertmonkey.core.umd.js
|
|
19
19
|
// @require data:application/javascript,var core = window.pervertmonkey.core || pervertmonkey.core; var utils = core;
|
|
20
20
|
// @grant GM_addStyle
|
|
21
21
|
// @grant unsafeWindow
|
|
@@ -68,9 +68,10 @@
|
|
|
68
68
|
return animateThumb(thumb);
|
|
69
69
|
});
|
|
70
70
|
}
|
|
71
|
-
document.querySelector(".
|
|
72
|
-
append: ".
|
|
73
|
-
|
|
71
|
+
document.querySelector(".tabs-menu") && utils.downloader({
|
|
72
|
+
append: ".tabs-menu",
|
|
73
|
+
doBefore: () => document.querySelector("video")?.click(),
|
|
74
|
+
buttonHtml: '<li class="ml-20"><a class="button button_regular button_list root__link">Download ⤓</a></li>'
|
|
74
75
|
});
|
|
75
76
|
|
|
76
77
|
})(core, utils);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// ==UserScript==
|
|
2
2
|
// @name Eporner PervertMonkey
|
|
3
3
|
// @namespace pervertmonkey
|
|
4
|
-
// @version 2.0.
|
|
4
|
+
// @version 2.0.18
|
|
5
5
|
// @author violent-orangutan
|
|
6
6
|
// @description Infinite scroll [optional], Filter by Title, Uploader, Duration and HD, Sort by Views and Duration
|
|
7
7
|
// @license MIT
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
// @supportURL https://github.com/smartacephale/sleazy-fork/issues
|
|
13
13
|
// @match https://*.eporner.com/*
|
|
14
14
|
// @match https://*.eporner.*/*
|
|
15
|
-
// @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.
|
|
15
|
+
// @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.23/dist/core/pervertmonkey.core.umd.js
|
|
16
16
|
// @require data:application/javascript,var core = window.pervertmonkey.core || pervertmonkey.core; var utils = core;
|
|
17
17
|
// @grant GM_addStyle
|
|
18
18
|
// @grant unsafeWindow
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// ==UserScript==
|
|
2
2
|
// @name Erome PervertMonkey
|
|
3
3
|
// @namespace pervertmonkey
|
|
4
|
-
// @version 5.0.
|
|
4
|
+
// @version 5.0.17
|
|
5
5
|
// @author violent-orangutan
|
|
6
|
-
// @description Infinite scroll [optional], Filter by Title, Uploader and Video/Photo albums, Sort by Views. Show/Hide Photos in album. Remove disclaimer.
|
|
6
|
+
// @description Infinite scroll [optional], Filter by Title, Uploader and Video/Photo albums, Sort by Views. Show/Hide Photos in album. Remove disclaimer. Restore Search Bar
|
|
7
7
|
// @license MIT
|
|
8
8
|
// @icon https://www.google.com/s2/favicons?sz=64&domain=erome.com
|
|
9
9
|
// @homepage https://github.com/smartacephale/sleazy-fork
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
// @source github:smartacephale/sleazy-fork
|
|
12
12
|
// @supportURL https://github.com/smartacephale/sleazy-fork/issues
|
|
13
13
|
// @match *://*.erome.com/*
|
|
14
|
-
// @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.
|
|
14
|
+
// @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.23/dist/core/pervertmonkey.core.umd.js
|
|
15
15
|
// @require data:application/javascript,var core = window.pervertmonkey.core || pervertmonkey.core; var utils = core;
|
|
16
16
|
// @grant GM_addStyle
|
|
17
17
|
// @grant unsafeWindow
|
|
@@ -97,5 +97,9 @@
|
|
|
97
97
|
if (IS_ALBUM_PAGE) {
|
|
98
98
|
setupAlbumPage();
|
|
99
99
|
}
|
|
100
|
+
(function restoreSearchBar() {
|
|
101
|
+
$('[aria-label="Search"]').click(() => $("#searchModal").show());
|
|
102
|
+
$("#searchModal .close").click(() => $("#searchModal").hide());
|
|
103
|
+
})();
|
|
100
104
|
|
|
101
105
|
})(core);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// ==UserScript==
|
|
2
2
|
// @name Eroprofile PervertMonkey
|
|
3
3
|
// @namespace pervertmonkey
|
|
4
|
-
// @version 2.0.
|
|
4
|
+
// @version 2.0.16
|
|
5
5
|
// @author violent-orangutan
|
|
6
6
|
// @description Infinite scroll [optional], Filter by Title and Duration, Sort by Duration
|
|
7
7
|
// @license MIT
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
// @source github:smartacephale/sleazy-fork
|
|
12
12
|
// @supportURL https://github.com/smartacephale/sleazy-fork/issues
|
|
13
13
|
// @match https://*.eroprofile.com/*
|
|
14
|
-
// @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.
|
|
14
|
+
// @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.23/dist/core/pervertmonkey.core.umd.js
|
|
15
15
|
// @require data:application/javascript,var core = window.pervertmonkey.core || pervertmonkey.core; var utils = core;
|
|
16
16
|
// @grant GM_addStyle
|
|
17
17
|
// @grant unsafeWindow
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// ==UserScript==
|
|
2
2
|
// @name Javhdporn PervertMonkey
|
|
3
3
|
// @namespace pervertmonkey
|
|
4
|
-
// @version 3.0.
|
|
4
|
+
// @version 3.0.16
|
|
5
5
|
// @author violent-orangutan
|
|
6
6
|
// @description Infinite scroll [optional], Filter by Title and Duration, Sort By Duration and Views
|
|
7
7
|
// @license MIT
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
// @supportURL https://github.com/smartacephale/sleazy-fork/issues
|
|
13
13
|
// @match https://*.javhdporn.net/*
|
|
14
14
|
// @match https://*.javhdporn.*/*
|
|
15
|
-
// @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.
|
|
15
|
+
// @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.23/dist/core/pervertmonkey.core.umd.js
|
|
16
16
|
// @require data:application/javascript,var core = window.pervertmonkey.core || pervertmonkey.core; var utils = core;
|
|
17
17
|
// @grant GM_addStyle
|
|
18
18
|
// @grant unsafeWindow
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// ==UserScript==
|
|
2
2
|
// @name Missav PervertMonkey
|
|
3
3
|
// @namespace pervertmonkey
|
|
4
|
-
// @version 3.0.
|
|
4
|
+
// @version 3.0.15
|
|
5
5
|
// @author violent-orangutan
|
|
6
6
|
// @description Infinite scroll [optional], Filter by Title and Duration, Sort by Duration
|
|
7
7
|
// @license MIT
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
// @match https://*.missav.ws/*
|
|
16
16
|
// @match https://*.missav.to/*
|
|
17
17
|
// @match https://*.missav.live/*
|
|
18
|
-
// @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.
|
|
18
|
+
// @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.23/dist/core/pervertmonkey.core.umd.js
|
|
19
19
|
// @require data:application/javascript,var core = window.pervertmonkey.core || pervertmonkey.core; var utils = core;
|
|
20
20
|
// @grant GM_addStyle
|
|
21
21
|
// @grant unsafeWindow
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// ==UserScript==
|
|
2
2
|
// @name Motherless PervertMonkey
|
|
3
3
|
// @namespace pervertmonkey
|
|
4
|
-
// @version 5.0.
|
|
4
|
+
// @version 5.0.17
|
|
5
5
|
// @author violent-orangutan
|
|
6
6
|
// @description Infinite scroll [optional], Filter by Title, Uploader and Duration, Sort by Duration and Views
|
|
7
7
|
// @license MIT
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
// @source github:smartacephale/sleazy-fork
|
|
12
12
|
// @supportURL https://github.com/smartacephale/sleazy-fork/issues
|
|
13
13
|
// @match https://motherless.com/*
|
|
14
|
-
// @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.
|
|
14
|
+
// @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.23/dist/core/pervertmonkey.core.umd.js
|
|
15
15
|
// @require data:application/javascript,var core = window.pervertmonkey.core || pervertmonkey.core; var utils = core;
|
|
16
16
|
// @grant GM_addElement
|
|
17
17
|
// @grant GM_addStyle
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// ==UserScript==
|
|
2
2
|
// @name NameThatPorn PervertMonkey
|
|
3
3
|
// @namespace pervertmonkey
|
|
4
|
-
// @version 3.0.
|
|
4
|
+
// @version 3.0.16
|
|
5
5
|
// @author violent-orangutan
|
|
6
6
|
// @description Infinite scroll [optional], Filter by Title, Uploader and Solved/Unsolved
|
|
7
7
|
// @license MIT
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
// @source github:smartacephale/sleazy-fork
|
|
12
12
|
// @supportURL https://github.com/smartacephale/sleazy-fork/issues
|
|
13
13
|
// @match https://namethatporn.com/*
|
|
14
|
-
// @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.
|
|
14
|
+
// @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.23/dist/core/pervertmonkey.core.umd.js
|
|
15
15
|
// @require data:application/javascript,var core = window.pervertmonkey.core || pervertmonkey.core; var utils = core;
|
|
16
16
|
// @grant GM_addStyle
|
|
17
17
|
// @grant unsafeWindow
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// ==UserScript==
|
|
2
2
|
// @name NHentai PervertMonkey
|
|
3
3
|
// @namespace pervertmonkey
|
|
4
|
-
// @version 4.0.
|
|
4
|
+
// @version 4.0.16
|
|
5
5
|
// @author violent-orangutan
|
|
6
6
|
// @description Infinite scroll [optional], Filter by Title
|
|
7
7
|
// @license MIT
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
// @supportURL https://github.com/smartacephale/sleazy-fork/issues
|
|
13
13
|
// @match https://*.nhentai.net/*
|
|
14
14
|
// @match https://*.nhentai.*/*
|
|
15
|
-
// @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.
|
|
15
|
+
// @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.23/dist/core/pervertmonkey.core.umd.js
|
|
16
16
|
// @require data:application/javascript,var core = window.pervertmonkey.core || pervertmonkey.core; var utils = core;
|
|
17
17
|
// @grant GM_addStyle
|
|
18
18
|
// @grant unsafeWindow
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// ==UserScript==
|
|
2
2
|
// @name Obmenvsem PervertMonkey
|
|
3
3
|
// @namespace pervertmonkey
|
|
4
|
-
// @version 1.0.
|
|
4
|
+
// @version 1.0.18
|
|
5
5
|
// @author violent-orangutan
|
|
6
6
|
// @description Infinite scroll [optional], Filter by Title and Duration, Sort by Duration
|
|
7
7
|
// @license MIT
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
// @match https://*.obmenvsem.com/*
|
|
14
14
|
// @match https://*.obmenvsem.*/*
|
|
15
15
|
// @match https://*.obmenvsems.*/*
|
|
16
|
-
// @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.
|
|
16
|
+
// @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.23/dist/core/pervertmonkey.core.umd.js
|
|
17
17
|
// @require data:application/javascript,var core = window.pervertmonkey.core || pervertmonkey.core; var utils = core;
|
|
18
18
|
// @grant GM_addElement
|
|
19
19
|
// @grant GM_addStyle
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// ==UserScript==
|
|
2
2
|
// @name PornHub PervertMonkey
|
|
3
3
|
// @namespace pervertmonkey
|
|
4
|
-
// @version 4.0.
|
|
4
|
+
// @version 4.0.16
|
|
5
5
|
// @author violent-orangutan
|
|
6
6
|
// @description Infinite scroll [optional]. Filter by Title, Uploader and Duration. Sort by Duration and Views
|
|
7
7
|
// @license MIT
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
// @supportURL https://github.com/smartacephale/sleazy-fork/issues
|
|
13
13
|
// @match https://*.pornhub.com/*
|
|
14
14
|
// @exclude https://*.pornhub.com/embed/*
|
|
15
|
-
// @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.
|
|
15
|
+
// @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.23/dist/core/pervertmonkey.core.umd.js
|
|
16
16
|
// @require data:application/javascript,var core = window.pervertmonkey.core || pervertmonkey.core; var utils = core;
|
|
17
17
|
// @grant GM_addStyle
|
|
18
18
|
// @grant unsafeWindow
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// ==UserScript==
|
|
2
|
+
// @name Socialmediagirls PervertMonkey
|
|
3
|
+
// @namespace pervertmonkey
|
|
4
|
+
// @version 1.0.0
|
|
5
|
+
// @author violent-orangutan
|
|
6
|
+
// @description Infinite scroll [optional], Filter by Title, thumb preview
|
|
7
|
+
// @license MIT
|
|
8
|
+
// @icon https://www.google.com/s2/favicons?sz=64&domain=socialmediagirls.com
|
|
9
|
+
// @homepage https://github.com/smartacephale/sleazy-fork
|
|
10
|
+
// @homepageURL https://github.com/smartacephale/sleazy-fork
|
|
11
|
+
// @source github:smartacephale/sleazy-fork
|
|
12
|
+
// @supportURL https://github.com/smartacephale/sleazy-fork/issues
|
|
13
|
+
// @match https://forums.socialmediagirls.com/threads/*
|
|
14
|
+
// @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.22/dist/core/pervertmonkey.core.umd.js
|
|
15
|
+
// @require data:application/javascript,var core = window.pervertmonkey.core || pervertmonkey.core; var utils = core;
|
|
16
|
+
// @grant GM_addStyle
|
|
17
|
+
// @grant unsafeWindow
|
|
18
|
+
// @run-at document-idle
|
|
19
|
+
// ==/UserScript==
|
|
20
|
+
|
|
21
|
+
(function (core) {
|
|
22
|
+
'use strict';
|
|
23
|
+
|
|
24
|
+
new core.Rules({
|
|
25
|
+
containerSelector: ".js-replyNewMessageContainer",
|
|
26
|
+
paginationStrategyOptions: {
|
|
27
|
+
paginationSelector: ".pageNavWrapper"
|
|
28
|
+
},
|
|
29
|
+
thumbs: {
|
|
30
|
+
selector: "article.message"
|
|
31
|
+
},
|
|
32
|
+
thumb: {
|
|
33
|
+
strategy: "auto-text"
|
|
34
|
+
},
|
|
35
|
+
thumbImg: {
|
|
36
|
+
strategy: "default"
|
|
37
|
+
},
|
|
38
|
+
gropeStrategy: "all-in-all",
|
|
39
|
+
schemeOptions: ["Title Filter", "Badge", "Advanced"]
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
})(core);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// ==UserScript==
|
|
2
2
|
// @name SpankBang.com PervertMonkey
|
|
3
3
|
// @namespace pervertmonkey
|
|
4
|
-
// @version 4.0.
|
|
4
|
+
// @version 4.0.16
|
|
5
5
|
// @author violent-orangutan
|
|
6
6
|
// @description Infinite scroll [optional]. Filter by Title and Duration. Sort by Duration and Views
|
|
7
7
|
// @license MIT
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
// @supportURL https://github.com/smartacephale/sleazy-fork/issues
|
|
13
13
|
// @match https://*.spankbang.com/*
|
|
14
14
|
// @match https://*.spankbang.*/*
|
|
15
|
-
// @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.
|
|
15
|
+
// @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.23/dist/core/pervertmonkey.core.umd.js
|
|
16
16
|
// @require data:application/javascript,var core = window.pervertmonkey.core || pervertmonkey.core; var utils = core;
|
|
17
17
|
// @grant GM_addStyle
|
|
18
18
|
// @grant unsafeWindow
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// ==UserScript==
|
|
2
2
|
// @name ThisVid.com PervertMonkey
|
|
3
3
|
// @namespace pervertmonkey
|
|
4
|
-
// @version 8.0.
|
|
4
|
+
// @version 8.0.17
|
|
5
5
|
// @author violent-orangutan
|
|
6
6
|
// @description Infinite scroll [optional]. Preview for private videos. Filter by Title, Duration, Quality and Public/Private. Sort by Duration and Views. Private/Public feed of friends uploads. Check access to private vids. Mass friend request button. Sorts messages. Download button 📼
|
|
7
7
|
// @license MIT
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
// @source github:smartacephale/sleazy-fork
|
|
12
12
|
// @supportURL https://github.com/smartacephale/sleazy-fork/issues
|
|
13
13
|
// @match https://*.thisvid.com/*
|
|
14
|
-
// @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.
|
|
14
|
+
// @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.23/dist/core/pervertmonkey.core.umd.js
|
|
15
15
|
// @require data:application/javascript,var core = window.pervertmonkey.core || pervertmonkey.core; var utils = core;
|
|
16
16
|
// @grant GM_addStyle
|
|
17
17
|
// @grant unsafeWindow
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// ==UserScript==
|
|
2
2
|
// @name Xhamster PervertMonkey
|
|
3
3
|
// @namespace pervertmonkey
|
|
4
|
-
// @version 5.0.
|
|
4
|
+
// @version 5.0.18
|
|
5
5
|
// @author violent-orangutan
|
|
6
6
|
// @description Infinite scroll [optional], Filter by Title, Duration and Watched/Unwatched. Sort by Duration and Views
|
|
7
7
|
// @license MIT
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
// @match https://*.xhamster.com/*
|
|
14
14
|
// @match https://*.xhamster.*/*
|
|
15
15
|
// @exclude https://*.xhamster.com/embed*
|
|
16
|
-
// @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.
|
|
16
|
+
// @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.23/dist/core/pervertmonkey.core.umd.js
|
|
17
17
|
// @require data:application/javascript,var core = window.pervertmonkey.core || pervertmonkey.core; var utils = core;
|
|
18
18
|
// @grant GM_addElement
|
|
19
19
|
// @grant GM_addStyle
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// ==UserScript==
|
|
2
2
|
// @name XVideos PervertMonkey
|
|
3
3
|
// @namespace pervertmonkey
|
|
4
|
-
// @version 4.0.
|
|
4
|
+
// @version 4.0.18
|
|
5
5
|
// @author violent-orangutan
|
|
6
6
|
// @description Infinite scroll [optional], Filter by Title, Uploader and Duration. Sort by Duration and Views.
|
|
7
7
|
// @license MIT
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
// @source github:smartacephale/sleazy-fork
|
|
12
12
|
// @supportURL https://github.com/smartacephale/sleazy-fork/issues
|
|
13
13
|
// @match https://*.xvideos.com/*
|
|
14
|
-
// @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.
|
|
14
|
+
// @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.23/dist/core/pervertmonkey.core.umd.js
|
|
15
15
|
// @require data:application/javascript,var core = window.pervertmonkey.core || pervertmonkey.core; var utils = core;
|
|
16
16
|
// @grant GM_addStyle
|
|
17
17
|
// @grant unsafeWindow
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pervert-monkey",
|
|
3
3
|
"description": "daddy told us not to be ashamed of our userscripts",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.23",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"userscript",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"@types/node": "^25.2.3",
|
|
45
|
-
"jabroni-outfit": "^2.1.
|
|
45
|
+
"jabroni-outfit": "^2.1.4",
|
|
46
46
|
"typescript": "^5.9.3",
|
|
47
47
|
"vite": "^6.4.1",
|
|
48
48
|
"vite-plugin-dts": "^4.5.4"
|
|
@@ -42,21 +42,15 @@ export class DataManager {
|
|
|
42
42
|
|
|
43
43
|
const parents = Map.groupBy(updates, (u) => u.e.parentElement);
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
for (const [parent, mutations] of parents) {
|
|
46
46
|
const f = () => {
|
|
47
|
-
|
|
47
|
+
mutations.forEach((u) => {
|
|
48
48
|
u.e.classList.toggle(u.name, u.condition);
|
|
49
49
|
});
|
|
50
50
|
};
|
|
51
51
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
} else {
|
|
55
|
-
requestAnimationFrame(() => {
|
|
56
|
-
this.optimize(parent, f);
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
});
|
|
52
|
+
parent ? await this.optimize(parent, f) : f();
|
|
53
|
+
}
|
|
60
54
|
}
|
|
61
55
|
|
|
62
56
|
public async filterAll(offset?: number): Promise<void> {
|
|
@@ -106,7 +100,7 @@ export class DataManager {
|
|
|
106
100
|
|
|
107
101
|
if (shouldLazify) {
|
|
108
102
|
const { img, imgSrc } = this.rules.thumbImgParser.getImgData(thumbElement);
|
|
109
|
-
this.lazyImgLoader.lazify(
|
|
103
|
+
this.lazyImgLoader.lazify(img, imgSrc);
|
|
110
104
|
}
|
|
111
105
|
|
|
112
106
|
fragment.append(thumbElement);
|
|
@@ -115,18 +109,21 @@ export class DataManager {
|
|
|
115
109
|
await this.filterAll(dataOffset);
|
|
116
110
|
|
|
117
111
|
if (!parent) return;
|
|
118
|
-
this.optimize(parent, () => parent?.appendChild(fragment));
|
|
112
|
+
await this.optimize(parent, () => parent?.appendChild(fragment));
|
|
119
113
|
}
|
|
120
114
|
|
|
121
|
-
private optimize(container: HTMLElement, mutation: () => void) {
|
|
115
|
+
private async optimize(container: HTMLElement, mutation: () => void) {
|
|
122
116
|
if (this.rules.containMutationEnabled) {
|
|
123
|
-
containMutation(container, mutation);
|
|
117
|
+
await containMutation(container, mutation);
|
|
124
118
|
} else {
|
|
125
119
|
mutation();
|
|
126
120
|
}
|
|
127
121
|
}
|
|
128
122
|
|
|
129
|
-
public sortBy<K extends keyof DataElement>(
|
|
123
|
+
public async sortBy<K extends keyof DataElement>(
|
|
124
|
+
key: K,
|
|
125
|
+
direction = true,
|
|
126
|
+
): Promise<void> {
|
|
130
127
|
if (this.data.size < 2) return;
|
|
131
128
|
|
|
132
129
|
const ds = this.data
|
|
@@ -141,7 +138,7 @@ export class DataManager {
|
|
|
141
138
|
for (const [container, items] of byContainers) {
|
|
142
139
|
items.sort((a, b) => ((a[key] as number) - (b[key] as number)) * dir);
|
|
143
140
|
const children = items.map((e) => e.element);
|
|
144
|
-
this.optimize(container, () => container.replaceChildren(...children));
|
|
141
|
+
await this.optimize(container, () => container.replaceChildren(...children));
|
|
145
142
|
}
|
|
146
143
|
}
|
|
147
144
|
}
|
|
@@ -4,7 +4,7 @@ import { circularShift, OnHover, Tick } from '../../utils';
|
|
|
4
4
|
|
|
5
5
|
export const meta: MonkeyUserScript = {
|
|
6
6
|
name: '3Hentai PervertMonkey',
|
|
7
|
-
version: '1.0.
|
|
7
|
+
version: '1.0.16',
|
|
8
8
|
description: 'Infinite scroll [optional], Filter by Title, thumb preview',
|
|
9
9
|
match: 'https://*.3hentai.net/*',
|
|
10
10
|
};
|
|
@@ -2,7 +2,7 @@ import type { MonkeyUserScript } from 'vite-plugin-monkey';
|
|
|
2
2
|
|
|
3
3
|
export const meta: MonkeyUserScript = {
|
|
4
4
|
name: 'CamGirlFinder PervertMonkey',
|
|
5
|
-
version: '1.6.
|
|
5
|
+
version: '1.6.15',
|
|
6
6
|
description:
|
|
7
7
|
'Adds model links for CamWhores, webcamrecordings, recu.me, camvideos, privat-zapisi',
|
|
8
8
|
match: ['https://camgirlfinder.net/*'],
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
|
|
18
18
|
export const meta: MonkeyUserScript = {
|
|
19
19
|
name: 'CamWhores PervertMonkey',
|
|
20
|
-
version: '3.0.
|
|
20
|
+
version: '3.0.19',
|
|
21
21
|
description:
|
|
22
22
|
'Infinite scroll [optional]. Filter by Title, Duration and Private/Public. Sort by Duration and Views. Mass friend request button. Download button',
|
|
23
23
|
match: ['https://*.camwhores.tv', 'https://*.camwhores.*/*'],
|
|
@@ -4,7 +4,7 @@ import { fetchHtml } from '../../utils';
|
|
|
4
4
|
|
|
5
5
|
export const meta: MonkeyUserScript = {
|
|
6
6
|
name: 'E-Hentai PervertMonkey',
|
|
7
|
-
version: '1.0.
|
|
7
|
+
version: '1.0.16',
|
|
8
8
|
description: 'Infinite scroll [optional], Filter by Title',
|
|
9
9
|
match: ['https://*.e-hentai.org/*'],
|
|
10
10
|
};
|
|
@@ -4,7 +4,7 @@ import { downloader, exterminateVideo, OnHover, parseHtml } from '../../utils';
|
|
|
4
4
|
|
|
5
5
|
export const meta: MonkeyUserScript = {
|
|
6
6
|
name: 'Ebalka PervertMonkey',
|
|
7
|
-
version: '3.0.
|
|
7
|
+
version: '3.0.17',
|
|
8
8
|
description:
|
|
9
9
|
'Infinite scroll [optional], Filter by Title and Duration, Sort by Duration, Download button.',
|
|
10
10
|
match: [
|
|
@@ -65,8 +65,10 @@ function animatePreview(container: HTMLElement) {
|
|
|
65
65
|
});
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
-
document.querySelector('.
|
|
68
|
+
document.querySelector('.tabs-menu') &&
|
|
69
69
|
downloader({
|
|
70
|
-
append: '.
|
|
71
|
-
|
|
70
|
+
append: '.tabs-menu',
|
|
71
|
+
doBefore: () => document.querySelector('video')?.click(),
|
|
72
|
+
buttonHtml:
|
|
73
|
+
'<li class="ml-20"><a class="button button_regular button_list root__link">Download ⤓</a></li>',
|
|
72
74
|
});
|
|
@@ -5,7 +5,7 @@ import { OnHover } from '../../utils';
|
|
|
5
5
|
|
|
6
6
|
export const meta: MonkeyUserScript = {
|
|
7
7
|
name: 'Eporner PervertMonkey',
|
|
8
|
-
version: '2.0.
|
|
8
|
+
version: '2.0.18',
|
|
9
9
|
description:
|
|
10
10
|
'Infinite scroll [optional], Filter by Title, Uploader, Duration and HD, Sort by Views and Duration',
|
|
11
11
|
match: ['https://*.eporner.com/*', 'https://*.eporner.*/*'],
|
|
@@ -4,9 +4,9 @@ import { Rules } from '../../core';
|
|
|
4
4
|
|
|
5
5
|
export const meta: MonkeyUserScript = {
|
|
6
6
|
name: 'Erome PervertMonkey',
|
|
7
|
-
version: '5.0.
|
|
7
|
+
version: '5.0.17',
|
|
8
8
|
description:
|
|
9
|
-
'Infinite scroll [optional], Filter by Title, Uploader and Video/Photo albums, Sort by Views. Show/Hide Photos in album. Remove disclaimer.',
|
|
9
|
+
'Infinite scroll [optional], Filter by Title, Uploader and Video/Photo albums, Sort by Views. Show/Hide Photos in album. Remove disclaimer. Restore Search Bar',
|
|
10
10
|
match: ['*://*.erome.com/*'],
|
|
11
11
|
};
|
|
12
12
|
|
|
@@ -51,7 +51,7 @@ const rules = new Rules({
|
|
|
51
51
|
'Badge',
|
|
52
52
|
'Advanced',
|
|
53
53
|
],
|
|
54
|
-
containMutationEnabled: false
|
|
54
|
+
containMutationEnabled: false,
|
|
55
55
|
});
|
|
56
56
|
|
|
57
57
|
GM_addStyle(`
|
|
@@ -95,3 +95,8 @@ function setupAlbumPage() {
|
|
|
95
95
|
if (IS_ALBUM_PAGE) {
|
|
96
96
|
setupAlbumPage();
|
|
97
97
|
}
|
|
98
|
+
|
|
99
|
+
(function restoreSearchBar() {
|
|
100
|
+
$('[aria-label="Search"]').click(() => $('#searchModal').show());
|
|
101
|
+
$('#searchModal .close').click(() => $('#searchModal').hide());
|
|
102
|
+
})();
|
|
@@ -3,7 +3,7 @@ import { Rules } from '../../core';
|
|
|
3
3
|
|
|
4
4
|
export const meta: MonkeyUserScript = {
|
|
5
5
|
name: 'Eroprofile PervertMonkey',
|
|
6
|
-
version: '2.0.
|
|
6
|
+
version: '2.0.16',
|
|
7
7
|
description: 'Infinite scroll [optional], Filter by Title and Duration, Sort by Duration',
|
|
8
8
|
match: ['https://*.eroprofile.com/*'],
|
|
9
9
|
};
|