Karups Images

Access to full size content and download buttons

  1. // ==UserScript==
  2. // @name Karups Images
  3. // @namespace https://greasyfork.org/en/users/1384264-atman
  4. // @version 2024-11-23
  5. // @description Access to full size content and download buttons
  6. // @author atman
  7. // @match https://*.karups.com/gallery/*
  8. // @match https://*.karupsow.com/gallery/*
  9. // @match https://*.karupsha.com/gallery/*
  10. // @grant none
  11. // @license GPL-3.0
  12. // ==/UserScript==
  13.  
  14. (function() {
  15. 'use strict';
  16.  
  17. const galleryBlock = document.querySelector('.gallery-thumbs');
  18. const photoHolders = document.querySelectorAll('.thumb-grid-item img');
  19.  
  20. if (photoHolders) {
  21. photoHolders.forEach(img => {
  22. const originalSrc = img.src;
  23. const fullImageUrl = originalSrc.replace(/lowres/g, 'highres').replace(/\.thumb/g, '').replace(/\/thumbs/g, '').replace(/1500(?!.*1500)/, '3000').replace(/1024(?!.*1024)/, '1500');
  24.  
  25. // Set the link
  26. const link = document.createElement('a');
  27. link.href = fullImageUrl;
  28. link.target = '_blank';
  29. img.parentNode.insertBefore(link, img);
  30. link.appendChild(img);
  31. });
  32.  
  33. const originalSrc = photoHolders[1].src.replace(/lowres/g, 'highres').replace(/\.thumb/g, '').replace(/\/thumbs/g, '').replace(/1500(?!.*1500)/, '3000').replace(/1024(?!.*1024)/, '1500');
  34. const downloadUrl = originalSrc.replace(/\/highres/g, '').slice(0, -8) + ".zip";
  35. // Create a single download button
  36. if (downloadUrl) {
  37. const downloadButton = document.createElement('a');
  38. downloadButton.href = downloadUrl;
  39. downloadButton.textContent = 'Download ZIP';
  40. downloadButton.style.cssText = `
  41. display: block;
  42. margin-bottom: 10px;
  43. padding: 10px 10px;
  44. background: linear-gradient(90deg, #00d478, #297d58);
  45. color: #FFFFFF;
  46. text-decoration: none;
  47. border-radius: 5px;
  48. text-align: center;
  49. font-weight: bold;
  50. transition: background 0.5s linear;
  51. `;
  52.  
  53. let insertDiv = document.querySelector('.content-information');
  54. if(insertDiv){
  55. document.querySelector('.button-holder').remove();
  56. insertDiv.appendChild(downloadButton);
  57. }
  58. else {
  59. insertDiv = document.querySelector('.gallery-thumbs');
  60. document.querySelector('.gallery-desc.cf').remove();
  61. insertDiv.insertBefore(downloadButton, insertDiv.firstChild);
  62. }
  63.  
  64. }
  65. }
  66. })();