vrporn.com download url extractor to clipboard

vrporn.com extractor of download links to clipboard. Click on new input to copy link to clipboard and use it in your download manager. Url should be valid for 2 days, keep in mind that too many parallel downloads can get you blocked for few days. New button to view miniatures.

  1. // ==UserScript==
  2. // @name vrporn.com download url extractor to clipboard
  3. // @description vrporn.com extractor of download links to clipboard. Click on new input to copy link to clipboard and use it in your download manager. Url should be valid for 2 days, keep in mind that too many parallel downloads can get you blocked for few days. New button to view miniatures.
  4. // @version 10
  5. // @grant none
  6. // @include https://vrporn.com/*
  7. // @include https://www.vrporn.com/*
  8. // @namespace https://greasyfork.org/users/1079192
  9. // ==/UserScript==
  10.  
  11. window.addEventListener(
  12. "load",
  13. function () {
  14. var pname = document.getElementsByClassName("footer-titles")[0];
  15. pname.style.userSelect = "text";
  16.  
  17. var content_title = document.getElementsByClassName("content-title")[0];
  18. if (content_title !== undefined) {
  19. var title = content_title.innerHTML;
  20.  
  21. var pstar = document.getElementsByClassName(
  22. "lav_pornstar_list premium-version"
  23. )[0];
  24. var pstar_names = "";
  25. var thumb = document.getElementById("dl8videoplayer").getAttribute("poster")
  26. const video_title = document.createElement("input");
  27. const pstar_title = document.createElement("input");
  28. const thumb_url = document.createElement("input");
  29.  
  30. if (pstar !== undefined) {
  31. for (var star of pstar.children) {
  32. var name = star.children[0].title;
  33. pstar_names += name + " ";
  34. }
  35. video_title.value = pstar_names + "- " + title + ".mp4";
  36. pstar_title.value = pstar_names;
  37. } else {
  38. video_title.value = title + ".mp4";
  39. }
  40. if (thumb !== undefined){
  41. thumb_url.value = thumb;
  42. }
  43.  
  44. try {
  45. const miniature = document
  46. .getElementsByTagName("dl8-video-preview-sprite-sheet")[0]
  47. .getAttribute("src");
  48. const popover_image = document.createElement("img");
  49. popover_image.src = miniature;
  50. popover_image.style.margin = "auto";
  51. popover_image.style.position = "relative";
  52. popover_image.style.top = "75px";
  53. popover_image.style.overflow = "hidden";
  54. popover_image.style.width = "50%";
  55. const popover_close = document.createElement("button");
  56. popover_close.innerText = "X";
  57. popover_close.style.position = "fixed";
  58. popover_close.style.top = "75px";
  59. popover_close.style.right = "30px";
  60. popover_close.style.width = "45px";
  61. popover_close.style.height = "45px";
  62. popover_close.onclick = closePopover;
  63. const popover = document.createElement("div");
  64. popover.id = "popover_image";
  65. popover.style.position = "absolute";
  66. popover.style.top = "0";
  67. popover.style.bottom = "0";
  68. popover.style.overflow = "scroll";
  69. popover.style.left = "2.5vw;";
  70. popover.style.width = "100vw";
  71. popover.style.height = "100vh";
  72. popover.style.textAlign = "center";
  73. popover.style.backgroundColor = "rgba(168, 168, 168, 0.95)";
  74. popover.appendChild(popover_close);
  75. popover.appendChild(popover_image);
  76. const miniature_open_btn = document.createElement("button");
  77. miniature_open_btn.style.backgroundColor = "#0ea1d5";
  78. miniature_open_btn.addEventListener(
  79. "mouseleave",
  80. function (event) {
  81. event.target.style.backgroundColor = "#0ea1d5";
  82. }
  83. );
  84. miniature_open_btn.addEventListener(
  85. "mouseenter",
  86. function (event) {
  87. event.target.style.backgroundColor = "#85c8e1";
  88. }
  89. );
  90. miniature_open_btn.innerText = "Miniature";
  91. miniature_open_btn.onclick = function () {
  92. window.scrollTo(0, 0);
  93. document.body.appendChild(popover);
  94. document.addEventListener('keyup', closePopoverKey);
  95. };
  96. content_title.parentNode.insertBefore(
  97. miniature_open_btn,
  98. content_title.nextSibling
  99. );
  100. } catch (error) {}
  101.  
  102. thumb_url.onclick = function () {
  103. this.select();
  104. navigator.clipboard.writeText(this.value);
  105. };
  106. content_title.parentNode.insertBefore(
  107. thumb_url,
  108. content_title.nextSibling
  109. );
  110.  
  111. pstar_title.onclick = function () {
  112. this.select();
  113. navigator.clipboard.writeText(this.value);
  114. };
  115. content_title.parentNode.insertBefore(
  116. pstar_title,
  117. content_title.nextSibling
  118. );
  119.  
  120. video_title.onclick = function () {
  121. this.select();
  122. navigator.clipboard.writeText(this.value);
  123. };
  124. content_title.parentNode.insertBefore(
  125. video_title,
  126. content_title.nextSibling
  127. );
  128.  
  129. var downloads = document
  130. .getElementsByClassName("download-links-popup-zone")[0]
  131. .getElementsByClassName("download-links-popup-inner")[0]
  132. .getElementsByClassName("list_version_download")[0]
  133. .getElementsByClassName("list_row")[0]
  134. .getElementsByClassName("download-btn");
  135.  
  136. for (var element of downloads) {
  137. var url = element.getAttribute("data");
  138. const copy = document.createElement("input");
  139. copy.value = url;
  140. copy.onclick = function () {
  141. this.select();
  142. navigator.clipboard.writeText(this.value);
  143. };
  144. element.parentNode.insertBefore(copy, element.nextSibling);
  145. }
  146. }
  147. },
  148. false
  149. );
  150.  
  151. function closePopoverKey(e) {
  152. if (e.code === "Escape"){
  153. closePopover();
  154. document.removeEventListener('keyup', closePopoverKey);
  155. }
  156. }
  157.  
  158.  
  159. function closePopover() {
  160. document.getElementById("popover_image").remove();
  161. }