pervert-monkey 1.0.6 → 1.0.8
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 +20 -0
- package/dist/core/pervertmonkey.core.es.d.ts +17 -4
- package/dist/core/pervertmonkey.core.es.js +277 -257
- package/dist/core/pervertmonkey.core.es.js.map +1 -1
- package/dist/core/pervertmonkey.core.umd.js +277 -257
- package/dist/core/pervertmonkey.core.umd.js.map +1 -1
- package/dist/userscripts/3hentai.user.js +1 -1
- package/dist/userscripts/camgirlfinder.user.js +1 -1
- package/dist/userscripts/camwhores.user.js +5 -5
- package/dist/userscripts/e-hentai.user.js +1 -1
- package/dist/userscripts/ebalka.user.js +5 -5
- package/dist/userscripts/eporner.user.js +3 -3
- package/dist/userscripts/erome.user.js +4 -4
- package/dist/userscripts/eroprofile.user.js +2 -2
- package/dist/userscripts/javhdporn.user.js +2 -2
- package/dist/userscripts/missav.user.js +3 -3
- package/dist/userscripts/motherless.user.js +3 -3
- package/dist/userscripts/namethatporn.user.js +2 -2
- package/dist/userscripts/nhentai.user.js +3 -3
- package/dist/userscripts/pornhub.user.js +2 -2
- package/dist/userscripts/spankbang.user.js +4 -4
- package/dist/userscripts/thisvid.user.js +35 -1284
- package/dist/userscripts/xhamster.user.js +4 -4
- package/dist/userscripts/xvideos.user.js +4 -4
- package/package.json +3 -4
- package/src/core/data-control/data-manager.ts +1 -2
- package/src/core/infinite-scroll/index.ts +1 -3
- package/src/core/jabroni-config/default-scheme.ts +1 -0
- package/src/core/jabroni-config/index.ts +2 -0
- package/src/core/rules/index.ts +5 -6
- package/src/userscripts/index.ts +1 -1
- package/src/userscripts/meta.json +1 -5
- package/src/userscripts/scripts/3hentai.ts +0 -1
- package/src/userscripts/scripts/camgirlfinder.ts +0 -1
- package/src/userscripts/scripts/camwhores.ts +4 -5
- package/src/userscripts/scripts/e-hentai.ts +0 -1
- package/src/userscripts/scripts/ebalka.ts +4 -5
- package/src/userscripts/scripts/eporner.ts +3 -4
- package/src/userscripts/scripts/erome.ts +3 -4
- package/src/userscripts/scripts/eroprofile.ts +1 -2
- package/src/userscripts/scripts/javhdporn.ts +1 -2
- package/src/userscripts/scripts/missav.ts +2 -3
- package/src/userscripts/scripts/motherless.ts +3 -4
- package/src/userscripts/scripts/namethatporn.ts +1 -2
- package/src/userscripts/scripts/nhentai.ts +2 -3
- package/src/userscripts/scripts/pornhub.ts +1 -2
- package/src/userscripts/scripts/spankbang.ts +4 -5
- package/src/userscripts/scripts/thisvid.ts +715 -0
- package/src/userscripts/scripts/xhamster.ts +4 -5
- package/src/userscripts/scripts/xvideos.ts +4 -8
- package/src/utils/events/index.ts +1 -1
- package/src/utils/events/on-hover.ts +42 -0
- package/src/utils/index.ts +3 -1
- package/src/utils/events/on-pointer-over-and-leave.ts +0 -35
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// ==UserScript==
|
|
2
2
|
// @name Xhamster Improved
|
|
3
3
|
// @namespace pervertmonkey
|
|
4
|
-
// @version 5.0.
|
|
4
|
+
// @version 5.0.1
|
|
5
5
|
// @author violent-orangutan
|
|
6
6
|
// @description Infinite scroll [optional], Filter by Title and Duration
|
|
7
7
|
// @license MIT
|
|
@@ -10,10 +10,10 @@
|
|
|
10
10
|
// @homepageURL https://github.com/smartacephale/sleazy-fork
|
|
11
11
|
// @source github:smartacephale/sleazy-fork
|
|
12
12
|
// @supportURL https://github.com/smartacephale/sleazy-fork/issues
|
|
13
|
-
// @match https://*.xhamster.*/*
|
|
14
13
|
// @match https://*.xhamster.com/*
|
|
14
|
+
// @match https://*.xhamster.*/*
|
|
15
15
|
// @exclude https://*.xhamster.com/embed*
|
|
16
|
-
// @require https://cdn.jsdelivr.net/npm/pervert-monkey@
|
|
16
|
+
// @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.8/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
|
|
@@ -128,7 +128,7 @@
|
|
|
128
128
|
);
|
|
129
129
|
return () => utils.exterminateVideo(video);
|
|
130
130
|
}
|
|
131
|
-
utils.
|
|
131
|
+
utils.OnHover.create(
|
|
132
132
|
document.body,
|
|
133
133
|
(e) => e.classList.contains("thumb-image-container__image"),
|
|
134
134
|
(e) => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// ==UserScript==
|
|
2
2
|
// @name XVideos Improved
|
|
3
3
|
// @namespace pervertmonkey
|
|
4
|
-
// @version 4.0.
|
|
4
|
+
// @version 4.0.1
|
|
5
5
|
// @author violent-orangutan
|
|
6
6
|
// @description Infinite scroll [optional], Filter by Title and 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://*.xvideos.com/*
|
|
14
|
-
// @require https://cdn.jsdelivr.net/npm/pervert-monkey@
|
|
14
|
+
// @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.8/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
|
|
@@ -70,9 +70,9 @@
|
|
|
70
70
|
};
|
|
71
71
|
}
|
|
72
72
|
function getVideoURL(src) {
|
|
73
|
-
return src.replace(
|
|
73
|
+
return src.replace(/\w+\.\w+$/, () => "preview.mp4");
|
|
74
74
|
}
|
|
75
|
-
utils.
|
|
75
|
+
utils.OnHover.create(
|
|
76
76
|
container,
|
|
77
77
|
(target) => target.tagName === "IMG" && target.id.includes("pic_"),
|
|
78
78
|
(target) => {
|
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.8",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"userscript",
|
|
@@ -36,11 +36,11 @@
|
|
|
36
36
|
"scripts": {
|
|
37
37
|
"dev": "vite",
|
|
38
38
|
"build": "tsc && vite build",
|
|
39
|
-
"build:userscripts": "node vite.build.ts"
|
|
39
|
+
"build:userscripts": "node vite.build.userscripts.ts"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
42
|
"@types/node": "^25.2.3",
|
|
43
|
-
"jabroni-outfit": "^2.1.
|
|
43
|
+
"jabroni-outfit": "^2.1.2",
|
|
44
44
|
"typescript": "^5.9.3",
|
|
45
45
|
"vite": "^6.4.1",
|
|
46
46
|
"vite-plugin-dts": "^4.0.3"
|
|
@@ -48,7 +48,6 @@
|
|
|
48
48
|
"dependencies": {
|
|
49
49
|
"ix": "^7.0.0",
|
|
50
50
|
"lskdb": "^1.0.2",
|
|
51
|
-
"pervert-monkey": "^1.0.1",
|
|
52
51
|
"urlpattern-polyfill": "^10.1.0",
|
|
53
52
|
"vite-plugin-monkey": "^7.1.9"
|
|
54
53
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { StoreState } from 'jabroni-outfit';
|
|
2
|
-
import { checkHomogenity } from '../../utils
|
|
3
|
-
import { LazyImgLoader } from '../../utils/observers';
|
|
2
|
+
import { checkHomogenity, LazyImgLoader } from '../../utils';
|
|
4
3
|
import type { RulesGlobal } from '../rules';
|
|
5
4
|
import { DataFilter } from './data-filter';
|
|
6
5
|
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import { wait } from '../../utils
|
|
2
|
-
import { fetchHtml } from '../../utils/fetch';
|
|
3
|
-
import { Observer } from '../../utils/observers';
|
|
1
|
+
import { fetchHtml, Observer, wait } from '../../utils';
|
|
4
2
|
import type { PaginationStrategy } from '../pagination-parsing/pagination-strategies';
|
|
5
3
|
import type { RulesGlobal } from '../rules';
|
|
6
4
|
|
package/src/core/rules/index.ts
CHANGED
|
@@ -4,15 +4,14 @@ import {
|
|
|
4
4
|
querySelectorLast,
|
|
5
5
|
querySelectorText,
|
|
6
6
|
removeClassesAndDataAttributes,
|
|
7
|
+
sanitizeStr,
|
|
8
|
+
timeToSeconds,
|
|
7
9
|
waitForElementToDisappear,
|
|
8
|
-
} from '../../utils
|
|
9
|
-
import { timeToSeconds } from '../../utils/parsers';
|
|
10
|
-
import { sanitizeStr } from '../../utils/strings';
|
|
10
|
+
} from '../../utils';
|
|
11
11
|
import { DataManager } from '../data-control';
|
|
12
12
|
import type { DataSelectorFn } from '../data-control/data-filter';
|
|
13
13
|
import { InfiniteScroller, type OffsetGenerator } from '../infinite-scroll/';
|
|
14
|
-
import { DefaultScheme, type SchemeOptions } from '../jabroni-config
|
|
15
|
-
import { StoreStateDefault } from '../jabroni-config/default-store';
|
|
14
|
+
import { DefaultScheme, type SchemeOptions, StoreStateDefault } from '../jabroni-config';
|
|
16
15
|
import { getPaginationStrategy } from '../pagination-parsing';
|
|
17
16
|
import type { PaginationStrategy } from '../pagination-parsing/pagination-strategies';
|
|
18
17
|
|
|
@@ -244,7 +243,7 @@ export class RulesGlobal {
|
|
|
244
243
|
this.schemeOptions as Parameters<typeof setupScheme>[0],
|
|
245
244
|
DefaultScheme,
|
|
246
245
|
);
|
|
247
|
-
this.gui = new JabronioGUI(scheme, this.store);
|
|
246
|
+
this.gui = new JabronioGUI(scheme, this.store, 'PervertMonkey');
|
|
248
247
|
return this.gui;
|
|
249
248
|
}
|
|
250
249
|
|
package/src/userscripts/index.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import './scripts/
|
|
1
|
+
import './scripts/pornhub';
|
|
@@ -7,9 +7,5 @@
|
|
|
7
7
|
"homepage": "https://github.com/smartacephale/sleazy-fork",
|
|
8
8
|
"homepageURL": "https://github.com/smartacephale/sleazy-fork",
|
|
9
9
|
"source": "github:smartacephale/sleazy-fork",
|
|
10
|
-
"supportURL": "https://github.com/smartacephale/sleazy-fork/issues"
|
|
11
|
-
"require": [
|
|
12
|
-
"https://cdn.jsdelivr.net/npm/pervert-monkey@latest/dist/core/pervertmonkey.core.umd.js",
|
|
13
|
-
"data:application/javascript,var core = window.pervertmonkey.core || pervertmonkey.core; var utils = core;"
|
|
14
|
-
]
|
|
10
|
+
"supportURL": "https://github.com/smartacephale/sleazy-fork/issues"
|
|
15
11
|
}
|
|
@@ -6,7 +6,6 @@ export const meta: MonkeyUserScript = {
|
|
|
6
6
|
version: '1.0.0',
|
|
7
7
|
description: 'Infinite scroll [optional], Filter by Title',
|
|
8
8
|
match: 'https://*.3hentai.net/*',
|
|
9
|
-
icon: 'https://www.google.com/s2/favicons?sz=64&domain=3hentai.net',
|
|
10
9
|
};
|
|
11
10
|
|
|
12
11
|
const rules = new RulesGlobal({
|
|
@@ -7,7 +7,6 @@ export const meta: MonkeyUserScript = {
|
|
|
7
7
|
'Adds model links for CamWhores, webcamrecordings, recu.me, camvideos, privat-zapisi',
|
|
8
8
|
match: ['https://camgirlfinder.net/*'],
|
|
9
9
|
grant: 'none',
|
|
10
|
-
icon: 'https://www.google.com/s2/favicons?sz=64&domain=camgirlfinder.net',
|
|
11
10
|
};
|
|
12
11
|
|
|
13
12
|
interface Website {
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
downloader,
|
|
8
8
|
fetchHtml,
|
|
9
9
|
objectToFormData,
|
|
10
|
-
|
|
10
|
+
OnHover,
|
|
11
11
|
parseHtml,
|
|
12
12
|
querySelectorLastNumber,
|
|
13
13
|
querySelectorText,
|
|
@@ -17,12 +17,11 @@ import {
|
|
|
17
17
|
|
|
18
18
|
export const meta: MonkeyUserScript = {
|
|
19
19
|
name: 'CamWhores PervertMonkey',
|
|
20
|
-
version: '3.0.
|
|
20
|
+
version: '3.0.4',
|
|
21
21
|
description:
|
|
22
22
|
'Infinite scroll [optional]. Filter by Title, Duration and Private/Public. Mass friend request button. Download button',
|
|
23
|
-
match: ['https://*.camwhores
|
|
23
|
+
match: ['https://*.camwhores.tv', 'https://*.camwhores.*/*'],
|
|
24
24
|
exclude: 'https://*.camwhores.tv/*mode=async*',
|
|
25
|
-
icon: 'https://www.google.com/s2/favicons?sz=64&domain=3hentai.net',
|
|
26
25
|
};
|
|
27
26
|
|
|
28
27
|
const $ = (unsafeWindow as any).$;
|
|
@@ -102,7 +101,7 @@ function animatePreview(container: HTMLElement) {
|
|
|
102
101
|
return src.replace(/(\d)(?=\.jpg$)/, (_, n) => `${circularShift(parseInt(n), count)}`);
|
|
103
102
|
}
|
|
104
103
|
|
|
105
|
-
|
|
104
|
+
OnHover.create(
|
|
106
105
|
container,
|
|
107
106
|
(target) =>
|
|
108
107
|
target.tagName === 'IMG' &&
|
|
@@ -7,7 +7,6 @@ export const meta: MonkeyUserScript = {
|
|
|
7
7
|
version: '1.0.0',
|
|
8
8
|
description: 'Infinite scroll [optional], Filter by Title',
|
|
9
9
|
match: ['https://*.e-hentai.org/*'],
|
|
10
|
-
icon: 'https://www.google.com/s2/favicons?sz=64&domain=e-hentai.org',
|
|
11
10
|
};
|
|
12
11
|
|
|
13
12
|
const rules = new RulesGlobal({
|
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
import type { MonkeyUserScript } from 'vite-plugin-monkey';
|
|
2
2
|
import { RulesGlobal } from '../../core';
|
|
3
|
-
import { exterminateVideo,
|
|
3
|
+
import { 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.1',
|
|
8
8
|
description: 'Infinite scroll [optional], Filter by Title and Duration',
|
|
9
9
|
match: [
|
|
10
|
-
'https://a.ebalka.love/*',
|
|
11
10
|
'https://b.ebalka.zip/*',
|
|
11
|
+
'https://a.ebalka.love/*',
|
|
12
12
|
'https://*ebalka.*.*/*',
|
|
13
13
|
'https://*.ebalk*.*/*',
|
|
14
14
|
'https://*.fuckingbear*.*/*',
|
|
15
15
|
],
|
|
16
|
-
icon: 'https://www.google.com/s2/favicons?sz=64&domain=ebalka.nl',
|
|
17
16
|
};
|
|
18
17
|
|
|
19
18
|
const rules = new RulesGlobal({
|
|
@@ -45,7 +44,7 @@ function animatePreview(container: HTMLElement) {
|
|
|
45
44
|
};
|
|
46
45
|
}
|
|
47
46
|
|
|
48
|
-
|
|
47
|
+
OnHover.create(
|
|
49
48
|
container,
|
|
50
49
|
(target) => target.tagName === 'IMG',
|
|
51
50
|
(target) => {
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import type { MonkeyUserScript } from 'vite-plugin-monkey';
|
|
2
2
|
import { unsafeWindow } from '$';
|
|
3
3
|
import { RulesGlobal } from '../../core';
|
|
4
|
-
import {
|
|
4
|
+
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.2',
|
|
9
9
|
description: 'Infinite scroll [optional], Filter by Title, Duration and HD',
|
|
10
10
|
match: ['https://*.eporner.com/*', 'https://*.eporner.*/*'],
|
|
11
|
-
icon: 'https://www.google.com/s2/favicons?sz=64&domain=eporner.com',
|
|
12
11
|
};
|
|
13
12
|
|
|
14
13
|
const show_video_prev = (unsafeWindow as any).show_video_prev;
|
|
@@ -77,7 +76,7 @@ const rules = new RulesGlobal({
|
|
|
77
76
|
});
|
|
78
77
|
|
|
79
78
|
function animatePreview(doc: HTMLElement) {
|
|
80
|
-
|
|
79
|
+
OnHover.create(
|
|
81
80
|
doc,
|
|
82
81
|
(e) => e instanceof HTMLImageElement,
|
|
83
82
|
(e) => {
|
|
@@ -4,10 +4,9 @@ import { RulesGlobal } from '../../core';
|
|
|
4
4
|
|
|
5
5
|
export const meta: MonkeyUserScript = {
|
|
6
6
|
name: 'Erome PervertMonkey',
|
|
7
|
-
version: '5.0.
|
|
7
|
+
version: '5.0.1',
|
|
8
8
|
description: 'Infinite scroll [optional], Filter by Title and Video/Photo albums',
|
|
9
9
|
match: ['*://*.erome.com/*'],
|
|
10
|
-
icon: 'https://www.google.com/s2/favicons?sz=64&domain=erome.com',
|
|
11
10
|
};
|
|
12
11
|
|
|
13
12
|
const $ = (unsafeWindow as any).$;
|
|
@@ -44,11 +43,11 @@ const rules = new RulesGlobal({
|
|
|
44
43
|
title: 'Filter Albums',
|
|
45
44
|
content: [
|
|
46
45
|
{
|
|
47
|
-
filterVideoAlbums:
|
|
46
|
+
filterVideoAlbums: false,
|
|
48
47
|
label: 'video albums',
|
|
49
48
|
},
|
|
50
49
|
{
|
|
51
|
-
filterPhotoAlbums:
|
|
50
|
+
filterPhotoAlbums: false,
|
|
52
51
|
label: 'photo albums',
|
|
53
52
|
},
|
|
54
53
|
],
|
|
@@ -3,10 +3,9 @@ import { RulesGlobal } from '../../core';
|
|
|
3
3
|
|
|
4
4
|
export const meta: MonkeyUserScript = {
|
|
5
5
|
name: 'Eroprofile PervertMonkey',
|
|
6
|
-
version: '2.0.
|
|
6
|
+
version: '2.0.1',
|
|
7
7
|
description: 'Infinite scroll [optional], Filter by Title and Duration',
|
|
8
8
|
match: ['https://*.eroprofile.com/*'],
|
|
9
|
-
icon: 'https://www.google.com/s2/favicons?sz=64&domain=eroprofile.com',
|
|
10
9
|
};
|
|
11
10
|
|
|
12
11
|
document.querySelector('.videoGrid')?.after(document.querySelector('.clB') as HTMLElement);
|
|
@@ -3,13 +3,12 @@ import { RulesGlobal } from '../../core';
|
|
|
3
3
|
|
|
4
4
|
export const meta: MonkeyUserScript = {
|
|
5
5
|
name: 'Javhdporn PervertMonkey',
|
|
6
|
-
version: '3.0.
|
|
6
|
+
version: '3.0.1',
|
|
7
7
|
description: 'Infinite scroll [optional], Filter by Title and Duration',
|
|
8
8
|
match: [
|
|
9
9
|
"https://*.javhdporn.net/*",
|
|
10
10
|
"https://*.javhdporn.*/*"
|
|
11
11
|
],
|
|
12
|
-
icon: 'https://www.google.com/s2/favicons?sz=64&domain=javhdporn.net',
|
|
13
12
|
};
|
|
14
13
|
|
|
15
14
|
const rules = new RulesGlobal({
|
|
@@ -3,16 +3,15 @@ import { RulesGlobal } from '../../core';
|
|
|
3
3
|
|
|
4
4
|
export const meta: MonkeyUserScript = {
|
|
5
5
|
name: 'Missav PervertMonkey',
|
|
6
|
-
version: '3.0.
|
|
6
|
+
version: '3.0.1',
|
|
7
7
|
description: 'Infinite scroll [optional], Filter by Title and Duration',
|
|
8
8
|
match: [
|
|
9
|
-
'https://*.missav.*/*',
|
|
10
9
|
'https://*.missav123.com/*',
|
|
10
|
+
'https://*.missav.*/*',
|
|
11
11
|
'https://*.missav.ws/*',
|
|
12
12
|
'https://*.missav.to/*',
|
|
13
13
|
'https://*.missav.live/*',
|
|
14
14
|
],
|
|
15
|
-
icon: 'https://www.google.com/s2/favicons?sz=64&domain=missav123.com',
|
|
16
15
|
};
|
|
17
16
|
|
|
18
17
|
const rules = new RulesGlobal({
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import type { MonkeyUserScript } from 'vite-plugin-monkey';
|
|
2
2
|
import { GM_addStyle, unsafeWindow } from '$';
|
|
3
3
|
import { RulesGlobal } from '../../core';
|
|
4
|
-
import { fetchWith,
|
|
4
|
+
import { fetchWith, OnHover, replaceElementTag, Tick } from '../../utils';
|
|
5
5
|
|
|
6
6
|
export const meta: MonkeyUserScript = {
|
|
7
7
|
name: 'Motherless PervertMonkey',
|
|
8
|
-
version: '5.0.
|
|
8
|
+
version: '5.0.1',
|
|
9
9
|
description: 'Infinite scroll [optional], Filter by Title and Duration',
|
|
10
10
|
match: ['https://motherless.com/*'],
|
|
11
|
-
icon: 'https://www.google.com/s2/favicons?sz=64&domain=motherless.com',
|
|
12
11
|
};
|
|
13
12
|
|
|
14
13
|
(unsafeWindow as any).__is_premium = true;
|
|
@@ -92,7 +91,7 @@ function animatePreview(_: HTMLElement) {
|
|
|
92
91
|
return { onOverCallback, leaveTarget: container };
|
|
93
92
|
}
|
|
94
93
|
|
|
95
|
-
|
|
94
|
+
OnHover.create(
|
|
96
95
|
document.body,
|
|
97
96
|
(e) => {
|
|
98
97
|
const container = e.closest('.desktop-thumb.video') as HTMLElement;
|
|
@@ -4,10 +4,9 @@ import { RulesGlobal } from '../../core';
|
|
|
4
4
|
|
|
5
5
|
export const meta: MonkeyUserScript = {
|
|
6
6
|
name: 'NameThatPorn PervertMonkey',
|
|
7
|
-
version: '3.0.
|
|
7
|
+
version: '3.0.1',
|
|
8
8
|
description: 'Infinite scroll [optional], Filter by Title and Un/Solved',
|
|
9
9
|
match: ['https://namethatporn.com/*'],
|
|
10
|
-
icon: 'https://www.google.com/s2/favicons?sz=64&domain=namethatporn.com',
|
|
11
10
|
};
|
|
12
11
|
|
|
13
12
|
const rules = new RulesGlobal({
|
|
@@ -4,10 +4,9 @@ import { parseHtml } from '../../utils';
|
|
|
4
4
|
|
|
5
5
|
export const meta: MonkeyUserScript = {
|
|
6
6
|
name: 'NHentai PervertMonkey',
|
|
7
|
-
version: '4.0.
|
|
7
|
+
version: '4.0.1',
|
|
8
8
|
description: 'Infinite scroll [optional], Filter by Title',
|
|
9
|
-
match: ['https://*.nhentai
|
|
10
|
-
icon: 'https://www.google.com/s2/favicons?sz=64&domain=nhentai.net',
|
|
9
|
+
match: ['https://*.nhentai.net/*', 'https://*.nhentai.*/*'],
|
|
11
10
|
};
|
|
12
11
|
|
|
13
12
|
const IS_TITLE_PAGE = /^\/g\/\d+/.test(location.pathname);
|
|
@@ -3,12 +3,11 @@ import { RulesGlobal } from '../../core';
|
|
|
3
3
|
|
|
4
4
|
export const meta: MonkeyUserScript = {
|
|
5
5
|
name: 'PornHub PervertMonkey',
|
|
6
|
-
version: '4.0.
|
|
6
|
+
version: '4.0.1',
|
|
7
7
|
description:
|
|
8
8
|
'Infinite scroll [optional]. Filter by Title and Duration',
|
|
9
9
|
match: ['https://*.pornhub.com/*'],
|
|
10
10
|
exclude: 'https://*.pornhub.com/embed/*',
|
|
11
|
-
icon: 'https://www.google.com/s2/favicons?sz=64&domain=pornhub.com',
|
|
12
11
|
};
|
|
13
12
|
|
|
14
13
|
const rules = new RulesGlobal({
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import type { MonkeyUserScript } from 'vite-plugin-monkey';
|
|
2
2
|
import { RulesGlobal } from '../../core';
|
|
3
|
-
import { exterminateVideo,
|
|
3
|
+
import { exterminateVideo, OnHover, parseHtml } from '../../utils';
|
|
4
4
|
|
|
5
5
|
export const meta: MonkeyUserScript = {
|
|
6
6
|
name: 'SpankBang.com PervertMonkey',
|
|
7
|
-
version: '4.0.
|
|
7
|
+
version: '4.0.1',
|
|
8
8
|
description: 'Infinite scroll [optional]. Filter by Title and Duration',
|
|
9
|
-
match: ['https://*.spankbang
|
|
10
|
-
icon: 'https://www.google.com/s2/favicons?sz=64&domain=spankbang.com',
|
|
9
|
+
match: ['https://*.spankbang.com/*', 'https://*.spankbang.*/*'],
|
|
11
10
|
};
|
|
12
11
|
|
|
13
12
|
const rules = new RulesGlobal({
|
|
@@ -47,7 +46,7 @@ function animatePreview(container: HTMLElement) {
|
|
|
47
46
|
};
|
|
48
47
|
}
|
|
49
48
|
|
|
50
|
-
|
|
49
|
+
OnHover.create(
|
|
51
50
|
container,
|
|
52
51
|
(e) => e.tagName === 'IMG',
|
|
53
52
|
(e) => {
|