pervert-monkey 1.0.15 → 1.0.18

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 (55) hide show
  1. package/dist/core/pervertmonkey.core.es.d.ts +23 -16
  2. package/dist/core/pervertmonkey.core.es.js +157 -153
  3. package/dist/core/pervertmonkey.core.es.js.map +1 -1
  4. package/dist/core/pervertmonkey.core.umd.js +157 -153
  5. package/dist/core/pervertmonkey.core.umd.js.map +1 -1
  6. package/dist/userscripts/3hentai.user.js +10 -4
  7. package/dist/userscripts/camgirlfinder.user.js +2 -2
  8. package/dist/userscripts/camwhores.user.js +4 -5
  9. package/dist/userscripts/e-hentai.user.js +7 -6
  10. package/dist/userscripts/ebalka.user.js +12 -8
  11. package/dist/userscripts/eporner.user.js +5 -2
  12. package/dist/userscripts/erome.user.js +7 -11
  13. package/dist/userscripts/eroprofile.user.js +2 -2
  14. package/dist/userscripts/javhdporn.user.js +2 -2
  15. package/dist/userscripts/missav.user.js +3 -8
  16. package/dist/userscripts/motherless.user.js +3 -3
  17. package/dist/userscripts/namethatporn.user.js +4 -4
  18. package/dist/userscripts/nhentai.user.js +2 -2
  19. package/dist/userscripts/obmenvsem.user.js +3 -2
  20. package/dist/userscripts/pornhub.user.js +2 -2
  21. package/dist/userscripts/spankbang.user.js +6 -7
  22. package/dist/userscripts/thisvid.user.js +7 -8
  23. package/dist/userscripts/xhamster.user.js +6 -6
  24. package/dist/userscripts/xvideos.user.js +8 -8
  25. package/package.json +1 -1
  26. package/src/core/data-handler/data-filter-fn-defaults.ts +8 -8
  27. package/src/core/data-handler/data-filter-fn.ts +10 -8
  28. package/src/core/data-handler/data-filter.ts +10 -8
  29. package/src/core/data-handler/data-manager.ts +52 -106
  30. package/src/core/infinite-scroll/index.ts +6 -4
  31. package/src/core/parsers/thumb-data-parser.ts +11 -4
  32. package/src/userscripts/index.ts +1 -1
  33. package/src/userscripts/scripts/3hentai.ts +5 -3
  34. package/src/userscripts/scripts/camgirlfinder.ts +1 -1
  35. package/src/userscripts/scripts/camwhores.ts +3 -4
  36. package/src/userscripts/scripts/e-hentai.ts +9 -7
  37. package/src/userscripts/scripts/ebalka.ts +15 -8
  38. package/src/userscripts/scripts/eporner.ts +4 -1
  39. package/src/userscripts/scripts/erome.ts +6 -12
  40. package/src/userscripts/scripts/eroprofile.ts +1 -1
  41. package/src/userscripts/scripts/javhdporn.ts +1 -1
  42. package/src/userscripts/scripts/missav.ts +2 -7
  43. package/src/userscripts/scripts/motherless.ts +4 -3
  44. package/src/userscripts/scripts/namethatporn.ts +3 -3
  45. package/src/userscripts/scripts/nhentai.ts +1 -1
  46. package/src/userscripts/scripts/obmenvsem.ts +6 -2
  47. package/src/userscripts/scripts/pornhub.ts +1 -1
  48. package/src/userscripts/scripts/spankbang.ts +4 -6
  49. package/src/userscripts/scripts/thisvid.ts +6 -6
  50. package/src/userscripts/scripts/xhamster.ts +5 -5
  51. package/src/userscripts/scripts/xvideos.ts +7 -7
  52. package/src/utils/dom/dom-observers.ts +3 -3
  53. package/src/utils/dom/index.ts +10 -7
  54. package/src/utils/index.ts +4 -22
  55. package/src/utils/performance/index.ts +44 -0
@@ -1,9 +1,9 @@
1
1
  // ==UserScript==
2
2
  // @name 3Hentai PervertMonkey
3
3
  // @namespace pervertmonkey
4
- // @version 1.0.7
4
+ // @version 1.0.8
5
5
  // @author violent-orangutan
6
- // @description Infinite scroll [optional], Filter by Title
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
@@ -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.15/dist/core/pervertmonkey.core.umd.js
14
+ // @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.18/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
@@ -40,13 +40,19 @@
40
40
  });
41
41
  function animatePreview() {
42
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
+ }
43
47
  utils.OnHover.create(document.body, ".doujin-col", (e) => {
44
48
  const img = e.querySelector("img");
45
49
  const origin = img.src;
46
50
  img.src = img.src.replace(/\w+\.\w+$/, "1t.jpg");
47
51
  img.onerror = (_) => tick.stop();
48
52
  tick.start(
49
- () => img.setAttribute("src", img.src),
53
+ () => {
54
+ img.src = rotate(img.src);
55
+ },
50
56
  () => {
51
57
  img.src = origin;
52
58
  }
@@ -1,7 +1,7 @@
1
1
  // ==UserScript==
2
2
  // @name CamGirlFinder PervertMonkey
3
3
  // @namespace pervertmonkey
4
- // @version 1.6.5
4
+ // @version 1.6.7
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.15/dist/core/pervertmonkey.core.umd.js
14
+ // @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.18/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.9
4
+ // @version 3.0.11
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.15/dist/core/pervertmonkey.core.umd.js
16
+ // @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.18/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
@@ -163,9 +163,8 @@
163
163
  }
164
164
  const createDownloadButton = () => utils.downloader({
165
165
  append: ".tabs-menu > ul",
166
- after: "",
167
- button: '<li><a href="#tab_comments" class="toggle-button" style="text-decoration: none;">download 📼</a></li>',
168
- cbBefore: () => $(".fp-ui").click()
166
+ buttonHtml: '<li><a href="#tab_comments" class="toggle-button" style="text-decoration: none;">download 📼</a></li>',
167
+ doBefore: () => $(".fp-ui").click()
169
168
  });
170
169
  const DEFAULT_FRIEND_REQUEST_FORMDATA = utils.objectToFormData({
171
170
  message: "",
@@ -1,7 +1,7 @@
1
1
  // ==UserScript==
2
2
  // @name E-Hentai PervertMonkey
3
3
  // @namespace pervertmonkey
4
- // @version 1.0.5
4
+ // @version 1.0.8
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.15/dist/core/pervertmonkey.core.umd.js
14
+ // @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.18/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
@@ -37,10 +37,10 @@
37
37
  });
38
38
  function createPaginationStrategyOptions() {
39
39
  let nextLink;
40
+ function getNextLink(doc = document) {
41
+ return [...doc.querySelectorAll("a#dnext[href]")].pop()?.href;
42
+ }
40
43
  function getPaginationUrlGenerator() {
41
- function getNextLink(doc = document) {
42
- return [...doc.querySelectorAll("a#dnext[href]")].pop()?.href;
43
- }
44
44
  const paginationUrlGenerator = async (_) => {
45
45
  if (!nextLink) {
46
46
  nextLink = getNextLink();
@@ -52,9 +52,10 @@
52
52
  };
53
53
  return paginationUrlGenerator;
54
54
  }
55
+ const totalTitles = Number.parseInt(getNextLink()?.match(/\d+$/)?.[0] || "0");
55
56
  return {
56
57
  paginationSelector: ".searchnav + div + .searchnav",
57
- overwritePaginationLast: () => 9999999,
58
+ overwritePaginationLast: () => totalTitles,
58
59
  getPaginationUrlGenerator
59
60
  };
60
61
  }
@@ -1,9 +1,9 @@
1
1
  // ==UserScript==
2
2
  // @name Ebalka PervertMonkey
3
3
  // @namespace pervertmonkey
4
- // @version 3.0.6
4
+ // @version 3.0.8
5
5
  // @author violent-orangutan
6
- // @description Infinite scroll [optional], Filter by Title and Duration, Sort by Duration
6
+ // @description Infinite scroll [optional], Filter by Title and Duration, Sort by Duration, Download button.
7
7
  // @license MIT
8
8
  // @icon https://www.google.com/s2/favicons?sz=64&domain=ebalka.zip
9
9
  // @homepage https://github.com/smartacephale/sleazy-fork
@@ -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.15/dist/core/pervertmonkey.core.umd.js
18
+ // @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.18/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
@@ -52,14 +52,14 @@
52
52
  });
53
53
  function animatePreview(container) {
54
54
  function animateThumb(thumb) {
55
- const el = thumb.querySelector(".card__thumb_video");
56
- el.classList.toggle("video-on");
57
- const src = el.querySelector(".card__image")?.getAttribute("data-preview");
55
+ const e = thumb.querySelector(".card__thumb_video");
56
+ e.classList.toggle("video-on");
57
+ const src = e.querySelector(".card__image")?.getAttribute("data-preview");
58
58
  const videoElem = utils.parseHtml(`<video style="position: absolute; left: 0px; top: 0px; visibility: visible; margin-top: -1px;"
59
59
  autoplay="" loop="" playsinline="true" webkit-playsinline="true" src="${src}"></video>`);
60
- el.appendChild(videoElem);
60
+ e.appendChild(videoElem);
61
61
  return () => {
62
- el.classList.toggle("video-on");
62
+ e.classList.toggle("video-on");
63
63
  utils.exterminateVideo(videoElem);
64
64
  };
65
65
  }
@@ -68,5 +68,9 @@
68
68
  return animateThumb(thumb);
69
69
  });
70
70
  }
71
+ document.querySelector(".tooltip-container") && utils.downloader({
72
+ append: ".tooltip-container",
73
+ buttonHtml: '<a class="button button_regular button_list root__link">Download ⤓</a>'
74
+ });
71
75
 
72
76
  })(core, utils);
@@ -1,7 +1,7 @@
1
1
  // ==UserScript==
2
2
  // @name Eporner PervertMonkey
3
3
  // @namespace pervertmonkey
4
- // @version 2.0.7
4
+ // @version 2.0.10
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/dist/core/pervertmonkey.core.umd.js
15
+ // @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.18/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
@@ -49,6 +49,7 @@
49
49
  { quality480: (el, state) => !!state.quality480 && el.quality !== 480 },
50
50
  { quality720: (el, state) => !!state.quality720 && el.quality !== 720 },
51
51
  { quality1080: (el, state) => !!state.quality1080 && el.quality !== 1080 },
52
+ { quality2k: (el, state) => !!state.quality2k && el.quality !== 2 },
52
53
  { quality4k: (el, state) => !!state.quality4k && el.quality !== 4 }
53
54
  ],
54
55
  schemeOptions: [
@@ -62,6 +63,7 @@
62
63
  { quality480: false },
63
64
  { quality720: false },
64
65
  { quality1080: false },
66
+ { quality2k: false },
65
67
  { quality4k: false }
66
68
  ]
67
69
  },
@@ -69,6 +71,7 @@
69
71
  "Badge",
70
72
  "Advanced"
71
73
  ],
74
+ gropeStrategy: "all-in-all",
72
75
  animatePreview
73
76
  });
74
77
  function animatePreview(doc) {
@@ -1,9 +1,9 @@
1
1
  // ==UserScript==
2
2
  // @name Erome PervertMonkey
3
3
  // @namespace pervertmonkey
4
- // @version 5.0.6
4
+ // @version 5.0.9
5
5
  // @author violent-orangutan
6
- // @description Infinite scroll [optional], Filter by Title, Uploader and Video/Photo albums, Sort by Views
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
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.15/dist/core/pervertmonkey.core.umd.js
14
+ // @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.18/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
@@ -41,12 +41,8 @@
41
41
  },
42
42
  storeOptions: { showPhotos: true },
43
43
  customDataFilterFns: [
44
- {
45
- filterPhotoAlbums: (el, state) => state.filterPhotoAlbums && !el.videoAlbum
46
- },
47
- {
48
- filterVideoAlbums: (el, state) => state.filterVideoAlbums && el.videoAlbum
49
- }
44
+ { filterPhotoAlbums: (el, state) => !!state.filterPhotoAlbums && !el.videoAlbum },
45
+ { filterVideoAlbums: (el, state) => !!state.filterVideoAlbums && !!el.videoAlbum }
50
46
  ],
51
47
  schemeOptions: [
52
48
  "Title Filter",
@@ -56,11 +52,11 @@
56
52
  content: [
57
53
  {
58
54
  filterVideoAlbums: false,
59
- label: "video albums"
55
+ label: "photo"
60
56
  },
61
57
  {
62
58
  filterPhotoAlbums: false,
63
- label: "photo albums"
59
+ label: "video"
64
60
  }
65
61
  ]
66
62
  },
@@ -1,7 +1,7 @@
1
1
  // ==UserScript==
2
2
  // @name Eroprofile PervertMonkey
3
3
  // @namespace pervertmonkey
4
- // @version 2.0.6
4
+ // @version 2.0.8
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.15/dist/core/pervertmonkey.core.umd.js
14
+ // @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.18/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.6
4
+ // @version 3.0.8
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/dist/core/pervertmonkey.core.umd.js
15
+ // @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.18/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.6
4
+ // @version 3.0.7
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.15/dist/core/pervertmonkey.core.umd.js
18
+ // @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.18/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
@@ -31,12 +31,7 @@
31
31
  },
32
32
  containerSelector: ".grid[x-data]",
33
33
  thumbs: { selector: "div:has(> .thumbnail.group)" },
34
- thumb: {
35
- selectors: {
36
- title: "div > div > a.text-secondary",
37
- duration: "div > a > span.text-xs"
38
- }
39
- },
34
+ thumb: { strategy: "auto-text" },
40
35
  thumbImg: { strategy: "auto" },
41
36
  schemeOptions: [
42
37
  "Title Filter",
@@ -1,7 +1,7 @@
1
1
  // ==UserScript==
2
2
  // @name Motherless PervertMonkey
3
3
  // @namespace pervertmonkey
4
- // @version 5.0.7
4
+ // @version 5.0.9
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.15/dist/core/pervertmonkey.core.umd.js
14
+ // @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.18/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
@@ -142,7 +142,7 @@
142
142
  }
143
143
  const overwrite1 = (x) => `@media only screen and (max-width: 1280px) {
144
144
  #categories-page.inner ${x} }`;
145
- rules.dataManager.dataFilter.applyCSSFilters(overwrite1);
145
+ rules.dataManager.dataFilter.createCssFilters(overwrite1);
146
146
  _GM_addStyle(`
147
147
  .img-container, .desktop-thumb { min-height: 150px; max-height: 150px; }
148
148
 
@@ -1,7 +1,7 @@
1
1
  // ==UserScript==
2
2
  // @name NameThatPorn PervertMonkey
3
3
  // @namespace pervertmonkey
4
- // @version 3.0.6
4
+ // @version 3.0.8
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.15/dist/core/pervertmonkey.core.umd.js
14
+ // @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.18/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
@@ -42,10 +42,10 @@
42
42
  gropeStrategy: "all-in-all",
43
43
  customDataFilterFns: [
44
44
  {
45
- filterSolved: (el, state) => state.filterSolved && el.solved
45
+ filterSolved: (e, state) => state.filterSolved && e.solved
46
46
  },
47
47
  {
48
- filterUnsolved: (el, state) => state.filterUnsolved && !el.solved
48
+ filterUnsolved: (e, state) => state.filterUnsolved && !e.solved
49
49
  }
50
50
  ],
51
51
  schemeOptions: [
@@ -1,7 +1,7 @@
1
1
  // ==UserScript==
2
2
  // @name NHentai PervertMonkey
3
3
  // @namespace pervertmonkey
4
- // @version 4.0.6
4
+ // @version 4.0.8
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/dist/core/pervertmonkey.core.umd.js
15
+ // @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.18/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 Obmensvem PervertMonkey
3
3
  // @namespace pervertmonkey
4
- // @version 1.0.6
4
+ // @version 1.0.9
5
5
  // @author violent-orangutan
6
6
  // @description Infinite scroll [optional], Filter by Title and Duration, Sort by Duration
7
7
  // @license MIT
@@ -12,7 +12,8 @@
12
12
  // @supportURL https://github.com/smartacephale/sleazy-fork/issues
13
13
  // @match https://*.obmenvsem.com/*
14
14
  // @match https://*.obmenvsem.*/*
15
- // @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.15/dist/core/pervertmonkey.core.umd.js
15
+ // @match https://*.obmenvsems.*/*
16
+ // @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.18/dist/core/pervertmonkey.core.umd.js
16
17
  // @require data:application/javascript,var core = window.pervertmonkey.core || pervertmonkey.core; var utils = core;
17
18
  // @grant GM_addElement
18
19
  // @grant GM_addStyle
@@ -1,7 +1,7 @@
1
1
  // ==UserScript==
2
2
  // @name PornHub PervertMonkey
3
3
  // @namespace pervertmonkey
4
- // @version 4.0.6
4
+ // @version 4.0.8
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/dist/core/pervertmonkey.core.umd.js
15
+ // @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.18/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 SpankBang.com PervertMonkey
3
3
  // @namespace pervertmonkey
4
- // @version 4.0.6
4
+ // @version 4.0.8
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/dist/core/pervertmonkey.core.umd.js
15
+ // @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.18/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
@@ -22,7 +22,7 @@
22
22
  (function (core) {
23
23
  'use strict';
24
24
 
25
- const rules = new core.Rules({
25
+ new core.Rules({
26
26
  containerSelector: ".main-container .js-media-list, .main_content_container .video-list",
27
27
  paginationStrategyOptions: {
28
28
  paginationSelector: ".paginate-bar, .pagination"
@@ -39,9 +39,9 @@ views: { selector: '[data-testid="views"]', type: "float" },
39
39
  thumbImg: { strategy: "auto" },
40
40
  gropeStrategy: "all-in-all",
41
41
  customDataFilterFns: [
42
- { qualityLow: (el, state) => !!state.qualityLow && el.quality !== "" },
43
- { qualityHD: (el, state) => !!state.qualityHD && el.quality !== "HD" },
44
- { quality4k: (el, state) => !!state.quality4k && el.quality !== "4K" }
42
+ { qualityLow: (e, state) => !!state.qualityLow && e.quality !== "" },
43
+ { qualityHD: (e, state) => !!state.qualityHD && e.quality !== "HD" },
44
+ { quality4k: (e, state) => !!state.quality4k && e.quality !== "4K" }
45
45
  ],
46
46
  schemeOptions: [
47
47
  "Title Filter",
@@ -59,6 +59,5 @@ views: { selector: '[data-testid="views"]', type: "float" },
59
59
  "Advanced"
60
60
  ]
61
61
  });
62
- console.log(rules.dataManager.data.values().toArray());
63
62
 
64
63
  })(core);
@@ -1,7 +1,7 @@
1
1
  // ==UserScript==
2
2
  // @name ThisVid.com Improved
3
3
  // @namespace pervertmonkey
4
- // @version 8.0.6
4
+ // @version 8.0.8
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.15/dist/core/pervertmonkey.core.umd.js
14
+ // @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.18/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
@@ -995,9 +995,9 @@ function takeWhile(predicate) {
995
995
  }
996
996
  return g();
997
997
  }
998
- function getMembers(el) {
999
- const friendsList = el.querySelector("#list_members_friends_items") || el;
1000
- return Array.from(friendsList.querySelectorAll(".tumbpu") || []).map((e) => e.href.match(/\d+/)?.[0]).filter((_) => _);
998
+ function getMembers(e) {
999
+ const friendsList = e.querySelector("#list_members_friends_items") || e;
1000
+ return Array.from(friendsList.querySelectorAll(".tumbpu") || []).map((e2) => e2.href.match(/\d+/)?.[0]).filter((_) => _);
1001
1001
  }
1002
1002
  async function friendMemberFriends(orientationFilter) {
1003
1003
  const memberId = window.location.pathname.match(/\d+/)?.[0];
@@ -1124,10 +1124,9 @@ function takeWhile(predicate) {
1124
1124
  }
1125
1125
  }
1126
1126
  const createDownloadButton = () => utils.downloader({
1127
- append: "",
1128
1127
  after: ".share_btn",
1129
- button: '<li><a href="#" style="text-decoration: none;font-size: 2rem;">📼</a></li>',
1130
- cbBefore: () => $(".fp-ui").click()
1128
+ buttonHtml: '<li><a href="#" style="text-decoration: none;font-size: 2rem;">📼</a></li>',
1129
+ doBefore: () => $(".fp-ui").click()
1131
1130
  });
1132
1131
  function animatePreview(_) {
1133
1132
  const tick = new utils.Tick(750);
@@ -1,7 +1,7 @@
1
1
  // ==UserScript==
2
2
  // @name Xhamster Improved
3
3
  // @namespace pervertmonkey
4
- // @version 5.0.7
4
+ // @version 5.0.9
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.15/dist/core/pervertmonkey.core.umd.js
16
+ // @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.18/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
@@ -91,10 +91,10 @@
91
91
  gropeStrategy: "all-in-all",
92
92
  customDataFilterFns: [
93
93
  {
94
- filterWatched: (el, state) => !!(state.filterWatched && el.watched)
94
+ filterWatched: (e, state) => !!(state.filterWatched && e.watched)
95
95
  },
96
96
  {
97
- filterUnwatched: (el, state) => !!(state.filterUnwatched && !el.watched)
97
+ filterUnwatched: (e, state) => !!(state.filterUnwatched && !e.watched)
98
98
  }
99
99
  ],
100
100
  schemeOptions: [
@@ -139,11 +139,11 @@
139
139
  }
140
140
  function expandMoreVideoPage() {
141
141
  utils.watchElementChildrenCount(rules.container, () => setTimeout(rules.gropeInit, 1800));
142
- utils.waitForElementToAppear(document.body, 'button[data-role="show-more-next"]', (el) => {
142
+ utils.waitForElementToAppear(document.body, 'button[data-role="show-more-next"]', (e) => {
143
143
  const observer = new utils.Observer((target) => {
144
144
  target.click();
145
145
  });
146
- observer.observe(el);
146
+ observer.observe(e);
147
147
  });
148
148
  }
149
149
  if (IS_VIDEO_PAGE) {
@@ -1,7 +1,7 @@
1
1
  // ==UserScript==
2
2
  // @name XVideos Improved
3
3
  // @namespace pervertmonkey
4
- // @version 4.0.7
4
+ // @version 4.0.9
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.15/dist/core/pervertmonkey.core.umd.js
14
+ // @require https://cdn.jsdelivr.net/npm/pervert-monkey@1.0.18/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
@@ -47,12 +47,12 @@
47
47
  }
48
48
  },
49
49
  customDataFilterFns: [
50
- { qualityLow: (el, state) => !!state.qualityLow && el.quality !== "" },
51
- { quality360: (el, state) => !!state.quality360 && el.quality !== "360p" },
52
- { quality720: (el, state) => !!state.quality720 && el.quality !== "720p" },
53
- { quality1080: (el, state) => !!state.quality1080 && el.quality !== "1080p" },
54
- { quality1440: (el, state) => !!state.quality1440 && el.quality !== "1440p" },
55
- { quality4k: (el, state) => !!state.quality4k && el.quality !== "4k" }
50
+ { qualityLow: (e, state) => !!state.qualityLow && e.quality !== "" },
51
+ { quality360: (e, state) => !!state.quality360 && e.quality !== "360p" },
52
+ { quality720: (e, state) => !!state.quality720 && e.quality !== "720p" },
53
+ { quality1080: (e, state) => !!state.quality1080 && e.quality !== "1080p" },
54
+ { quality1440: (e, state) => !!state.quality1440 && e.quality !== "1440p" },
55
+ { quality4k: (e, state) => !!state.quality4k && e.quality !== "4k" }
56
56
  ],
57
57
  schemeOptions: [
58
58
  "Title Filter",
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.15",
4
+ "version": "1.0.18",
5
5
  "license": "MIT",
6
6
  "keywords": [
7
7
  "userscript",