pervert-monkey 1.0.19 → 1.0.21

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.
Files changed (50) hide show
  1. package/README.md +4 -4
  2. package/dist/core/pervertmonkey.core.es.d.ts +6 -4
  3. package/dist/core/pervertmonkey.core.es.js +20 -14
  4. package/dist/core/pervertmonkey.core.es.js.map +1 -1
  5. package/dist/core/pervertmonkey.core.umd.js +20 -14
  6. package/dist/core/pervertmonkey.core.umd.js.map +1 -1
  7. package/dist/userscripts/3hentai.user.js +2 -2
  8. package/dist/userscripts/camgirlfinder.user.js +2 -2
  9. package/dist/userscripts/camwhores.user.js +2 -2
  10. package/dist/userscripts/e-hentai.user.js +2 -2
  11. package/dist/userscripts/ebalka.user.js +2 -2
  12. package/dist/userscripts/eporner.user.js +2 -2
  13. package/dist/userscripts/erome.user.js +4 -6
  14. package/dist/userscripts/eroprofile.user.js +2 -2
  15. package/dist/userscripts/javhdporn.user.js +2 -2
  16. package/dist/userscripts/missav.user.js +2 -2
  17. package/dist/userscripts/motherless.user.js +2 -2
  18. package/dist/userscripts/namethatporn.user.js +2 -2
  19. package/dist/userscripts/nhentai.user.js +2 -2
  20. package/dist/userscripts/obmenvsem.user.js +2 -2
  21. package/dist/userscripts/pornhub.user.js +3 -3
  22. package/dist/userscripts/spankbang.user.js +2 -2
  23. package/dist/userscripts/thisvid.user.js +2 -2
  24. package/dist/userscripts/xhamster.user.js +2 -2
  25. package/dist/userscripts/xvideos.user.js +2 -2
  26. package/package.json +1 -1
  27. package/src/core/data-handler/data-manager.ts +16 -8
  28. package/src/core/parsers/thumb-data-parser.ts +1 -1
  29. package/src/core/rules/index.ts +6 -4
  30. package/src/userscripts/index.ts +1 -1
  31. package/src/userscripts/scripts/3hentai.ts +1 -1
  32. package/src/userscripts/scripts/camgirlfinder.ts +1 -1
  33. package/src/userscripts/scripts/camwhores.ts +1 -1
  34. package/src/userscripts/scripts/e-hentai.ts +1 -1
  35. package/src/userscripts/scripts/ebalka.ts +1 -1
  36. package/src/userscripts/scripts/eporner.ts +1 -1
  37. package/src/userscripts/scripts/erome.ts +2 -6
  38. package/src/userscripts/scripts/eroprofile.ts +1 -1
  39. package/src/userscripts/scripts/javhdporn.ts +1 -1
  40. package/src/userscripts/scripts/missav.ts +1 -1
  41. package/src/userscripts/scripts/motherless.ts +1 -1
  42. package/src/userscripts/scripts/namethatporn.ts +1 -1
  43. package/src/userscripts/scripts/nhentai.ts +1 -1
  44. package/src/userscripts/scripts/obmenvsem.ts +1 -1
  45. package/src/userscripts/scripts/pornhub.ts +3 -3
  46. package/src/userscripts/scripts/spankbang.ts +1 -1
  47. package/src/userscripts/scripts/thisvid.ts +1 -1
  48. package/src/userscripts/scripts/xhamster.ts +1 -1
  49. package/src/userscripts/scripts/xvideos.ts +1 -1
  50. package/src/utils/dom/index.ts +3 -5
@@ -1,7 +1,7 @@
1
1
  // ==UserScript==
2
2
  // @name 3Hentai PervertMonkey
3
3
  // @namespace pervertmonkey
4
- // @version 1.0.12
4
+ // @version 1.0.14
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.19/dist/core/pervertmonkey.core.umd.js
14
+ // @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.21/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.11
4
+ // @version 1.6.13
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.19/dist/core/pervertmonkey.core.umd.js
14
+ // @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.21/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.15
4
+ // @version 3.0.17
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.19/dist/core/pervertmonkey.core.umd.js
16
+ // @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.21/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.12
4
+ // @version 1.0.14
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.19/dist/core/pervertmonkey.core.umd.js
14
+ // @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.21/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.12
4
+ // @version 3.0.14
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.19/dist/core/pervertmonkey.core.umd.js
18
+ // @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.21/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 Eporner PervertMonkey
3
3
  // @namespace pervertmonkey
4
- // @version 2.0.14
4
+ // @version 2.0.16
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.19/dist/core/pervertmonkey.core.umd.js
15
+ // @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.21/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 Erome PervertMonkey
3
3
  // @namespace pervertmonkey
4
- // @version 5.0.13
4
+ // @version 5.0.15
5
5
  // @author violent-orangutan
6
6
  // @description Infinite scroll [optional], Filter by Title, Uploader and Video/Photo albums, Sort by Views. Show/Hide Photos in album. Remove disclaimer.
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 *://*.erome.com/*
14
- // @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.19/dist/core/pervertmonkey.core.umd.js
14
+ // @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.21/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
@@ -63,10 +63,8 @@
63
63
  "Sort By Views",
64
64
  "Badge",
65
65
  "Advanced"
66
- ]
67
- });
68
- rules.infiniteScroller?.subject.subscribe(() => {
69
- setTimeout(() => new LazyLoad(), 100);
66
+ ],
67
+ containMutationEnabled: false
70
68
  });
71
69
  _GM_addStyle(`
72
70
  .inactive-gm { background: #a09f9d; }
@@ -1,7 +1,7 @@
1
1
  // ==UserScript==
2
2
  // @name Eroprofile PervertMonkey
3
3
  // @namespace pervertmonkey
4
- // @version 2.0.12
4
+ // @version 2.0.14
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.19/dist/core/pervertmonkey.core.umd.js
14
+ // @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.21/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.12
4
+ // @version 3.0.14
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.19/dist/core/pervertmonkey.core.umd.js
15
+ // @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.21/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.11
4
+ // @version 3.0.13
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.19/dist/core/pervertmonkey.core.umd.js
18
+ // @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.21/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.13
4
+ // @version 5.0.15
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.19/dist/core/pervertmonkey.core.umd.js
14
+ // @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.21/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.12
4
+ // @version 3.0.14
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.19/dist/core/pervertmonkey.core.umd.js
14
+ // @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.21/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.12
4
+ // @version 4.0.14
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.19/dist/core/pervertmonkey.core.umd.js
15
+ // @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.21/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.14
4
+ // @version 1.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
@@ -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.19/dist/core/pervertmonkey.core.umd.js
16
+ // @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.21/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.12
4
+ // @version 4.0.14
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.19/dist/core/pervertmonkey.core.umd.js
15
+ // @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.21/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
@@ -27,7 +27,7 @@
27
27
  paginationSelector: ".paginationGated",
28
28
  overwritePaginationLast: (n) => n === 9 ? 9999 : n
29
29
  },
30
- containerSelector: () => [...document.querySelectorAll("ul:has(> li[data-video-vkey])")].filter((e) => e.children.length > 0 && e.checkVisibility()).pop(),
30
+ containerSelector: () => [...document.querySelectorAll("ul:has(> li[data-video-vkey])")].filter((e) => e.children.length > 0 && e.checkVisibility()).sort((a, b) => b.children.length - a.children.length)?.[0],
31
31
  containerHomogenity: { id: true, className: true },
32
32
  thumbs: { selector: "li[data-video-vkey]" },
33
33
  thumb: {
@@ -1,7 +1,7 @@
1
1
  // ==UserScript==
2
2
  // @name SpankBang.com PervertMonkey
3
3
  // @namespace pervertmonkey
4
- // @version 4.0.12
4
+ // @version 4.0.14
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.19/dist/core/pervertmonkey.core.umd.js
15
+ // @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.21/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.13
4
+ // @version 8.0.15
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.19/dist/core/pervertmonkey.core.umd.js
14
+ // @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.21/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.14
4
+ // @version 5.0.16
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.19/dist/core/pervertmonkey.core.umd.js
16
+ // @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.21/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.14
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
@@ -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.19/dist/core/pervertmonkey.core.umd.js
14
+ // @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.21/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.19",
4
+ "version": "1.0.21",
5
5
  "license": "MIT",
6
6
  "keywords": [
7
7
  "userscript",
@@ -1,5 +1,5 @@
1
1
  import type { StoreState } from 'jabroni-outfit';
2
- import { checkHomogenity, containMutation, LazyImgLoader, runIdleJob } from '../../utils';
2
+ import { areElementsAlike, containMutation, LazyImgLoader, runIdleJob } from '../../utils';
3
3
  import type { Rules } from '../rules';
4
4
  import { DataFilter } from './data-filter';
5
5
 
@@ -17,7 +17,7 @@ export class DataManager {
17
17
 
18
18
  constructor(
19
19
  private rules: Rules,
20
- private containerHomogenity?: Parameters<typeof checkHomogenity>[2],
20
+ private containerHomogenity?: Parameters<typeof areElementsAlike>[2],
21
21
  ) {
22
22
  this.dataFilter = new DataFilter(this.rules);
23
23
  }
@@ -53,7 +53,7 @@ export class DataManager {
53
53
  f();
54
54
  } else {
55
55
  requestAnimationFrame(() => {
56
- containMutation(parent, f);
56
+ this.optimize(parent, f);
57
57
  });
58
58
  }
59
59
  });
@@ -83,9 +83,9 @@ export class DataManager {
83
83
  for (const thumbElement of thumbs) {
84
84
  const url = this.rules.thumbDataParser.getUrl(thumbElement);
85
85
 
86
- const isHomogenic =
86
+ const isNotHomogenic =
87
87
  homogenity &&
88
- !checkHomogenity(
88
+ !areElementsAlike(
89
89
  parent,
90
90
  thumbElement.parentElement as HTMLElement,
91
91
  this.containerHomogenity as object,
@@ -95,7 +95,7 @@ export class DataManager {
95
95
  !url ||
96
96
  this.data.has(url) ||
97
97
  (parent !== container && parent?.contains(thumbElement)) ||
98
- isHomogenic
98
+ isNotHomogenic
99
99
  ) {
100
100
  if (removeDuplicates) thumbElement.remove();
101
101
  continue;
@@ -115,7 +115,15 @@ export class DataManager {
115
115
  await this.filterAll(dataOffset);
116
116
 
117
117
  if (!parent) return;
118
- containMutation(parent, () => parent?.appendChild(fragment));
118
+ this.optimize(parent, () => parent?.appendChild(fragment));
119
+ }
120
+
121
+ private optimize(container: HTMLElement, mutation: () => void) {
122
+ if (this.rules.containMutationEnabled) {
123
+ containMutation(container, mutation);
124
+ } else {
125
+ mutation();
126
+ }
119
127
  }
120
128
 
121
129
  public sortBy<K extends keyof DataElement>(key: K, direction = true): void {
@@ -133,7 +141,7 @@ export class DataManager {
133
141
  for (const [container, items] of byContainers) {
134
142
  items.sort((a, b) => ((a[key] as number) - (b[key] as number)) * dir);
135
143
  const children = items.map((e) => e.element);
136
- containMutation(container, () => container.replaceChildren(...children));
144
+ this.optimize(container, () => container.replaceChildren(...children));
137
145
  }
138
146
  }
139
147
  }
@@ -35,7 +35,7 @@ export class ThumbDataParser {
35
35
  }
36
36
 
37
37
  public getUrl(thumb: HTMLElement | HTMLAnchorElement) {
38
- return ((thumb.querySelector('a[href]') || thumb) as HTMLAnchorElement).href;
38
+ return (querySelectorOrSelf(thumb, 'a[href]') as HTMLAnchorElement).href;
39
39
  }
40
40
 
41
41
  private preprocessCustomThumbDataSelectors() {
@@ -24,15 +24,15 @@ import {
24
24
  } from '../parsers';
25
25
 
26
26
  export class Rules {
27
+ public thumbs: Parameters<typeof ThumbsParser.create>[0] = {};
28
+ public thumbsParser: ThumbsParser;
29
+
27
30
  public thumb: Parameters<typeof ThumbDataParser.create>[0] = {};
28
31
  public thumbDataParser: ThumbDataParser;
29
32
 
30
33
  public thumbImg: Parameters<typeof ThumbImgParser.create>[0] = {};
31
34
  public thumbImgParser: ThumbImgParser;
32
35
 
33
- public thumbs: Parameters<typeof ThumbsParser.create>[0] = {};
34
- public thumbsParser: ThumbsParser;
35
-
36
36
  public containerSelector: string | (() => HTMLElement) = '.container';
37
37
  public containerSelectorLast?: string;
38
38
 
@@ -123,6 +123,8 @@ export class Rules {
123
123
  return window.self !== window.top;
124
124
  }
125
125
 
126
+ public containMutationEnabled = true;
127
+
126
128
  private mutationObservers: MutationObserver[] = [];
127
129
 
128
130
  public resetOnPaginationOrContainerDeath = true;
@@ -176,9 +178,9 @@ export class Rules {
176
178
 
177
179
  Object.assign(this, options);
178
180
 
181
+ this.thumbsParser = ThumbsParser.create(this.thumbs);
179
182
  this.thumbDataParser = ThumbDataParser.create(this.thumb);
180
183
  this.thumbImgParser = ThumbImgParser.create(this.thumbImg);
181
- this.thumbsParser = ThumbsParser.create(this.thumbs);
182
184
 
183
185
  this.paginationStrategy = getPaginationStrategy(this.paginationStrategyOptions);
184
186
 
@@ -1 +1 @@
1
- import './scripts/camwhores';
1
+ import './scripts/erome';
@@ -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.12',
7
+ version: '1.0.14',
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.11',
5
+ version: '1.6.13',
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.15',
20
+ version: '3.0.17',
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.12',
7
+ version: '1.0.14',
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.12',
7
+ version: '3.0.14',
8
8
  description:
9
9
  'Infinite scroll [optional], Filter by Title and Duration, Sort by Duration, Download button.',
10
10
  match: [
@@ -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.14',
8
+ version: '2.0.16',
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,14 +4,13 @@ import { Rules } from '../../core';
4
4
 
5
5
  export const meta: MonkeyUserScript = {
6
6
  name: 'Erome PervertMonkey',
7
- version: '5.0.13',
7
+ version: '5.0.15',
8
8
  description:
9
9
  'Infinite scroll [optional], Filter by Title, Uploader and Video/Photo albums, Sort by Views. Show/Hide Photos in album. Remove disclaimer.',
10
10
  match: ['*://*.erome.com/*'],
11
11
  };
12
12
 
13
13
  const $ = (unsafeWindow as any).$;
14
- declare var LazyLoad: ObjectConstructor;
15
14
 
16
15
  const rules = new Rules({
17
16
  containerSelector: '#albums',
@@ -52,10 +51,7 @@ const rules = new Rules({
52
51
  'Badge',
53
52
  'Advanced',
54
53
  ],
55
- });
56
-
57
- rules.infiniteScroller?.subject.subscribe(() => {
58
- setTimeout(() => new LazyLoad(), 100);
54
+ containMutationEnabled: false
59
55
  });
60
56
 
61
57
  GM_addStyle(`
@@ -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.12',
6
+ version: '2.0.14',
7
7
  description: 'Infinite scroll [optional], Filter by Title and Duration, Sort by Duration',
8
8
  match: ['https://*.eroprofile.com/*'],
9
9
  };
@@ -3,7 +3,7 @@ import { Rules } from '../../core';
3
3
 
4
4
  export const meta: MonkeyUserScript = {
5
5
  name: 'Javhdporn PervertMonkey',
6
- version: '3.0.12',
6
+ version: '3.0.14',
7
7
  description:
8
8
  'Infinite scroll [optional], Filter by Title and Duration, Sort By Duration and Views',
9
9
  match: ['https://*.javhdporn.net/*', 'https://*.javhdporn.*/*'],
@@ -3,7 +3,7 @@ import { Rules } from '../../core';
3
3
 
4
4
  export const meta: MonkeyUserScript = {
5
5
  name: 'Missav PervertMonkey',
6
- version: '3.0.11',
6
+ version: '3.0.13',
7
7
  description: 'Infinite scroll [optional], Filter by Title and Duration, Sort by Duration',
8
8
  match: [
9
9
  'https://*.missav123.com/*',