TMOHentai Image Resizer

Ajusta el tamaño de las imágenes para que quepan en la pantalla y añade botones para cambiar el tamaño manualmente, configurable desde Tampermonkey, con detección de idioma y actualizaciones.

  1. // ==UserScript==
  2. // @name TMOHentai Image Resizer
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.2
  5. // @description Ajusta el tamaño de las imágenes para que quepan en la pantalla y añade botones para cambiar el tamaño manualmente, configurable desde Tampermonkey, con detección de idioma y actualizaciones.
  6. // @author Luis123456xp
  7. // @license MIT
  8. // @match https://tmohentai.com/reader/*
  9. // @grant GM_setValue
  10. // @grant GM_getValue
  11. // @grant GM_registerMenuCommand
  12. // @grant GM_xmlhttpRequest
  13. // @grant GM_addStyle
  14. // @require https://code.jquery.com/jquery-3.6.0.min.js
  15. // @connect sleazyfork.org
  16. // ==/UserScript==
  17.  
  18. (function($) {
  19. 'use strict';
  20.  
  21. const currentVersion = '1.2';
  22. const scriptUrl = 'https://sleazyfork.org/es/scripts/497081-tmohentai-image-resizer/code';
  23.  
  24. // Determinar el idioma del navegador
  25. const userLang = navigator.language || navigator.userLanguage;
  26. const isEnglish = userLang.startsWith('en');
  27.  
  28. // Función para comparar versiones
  29. function compareVersions(v1, v2) {
  30. const v1parts = v1.split('.').map(Number);
  31. const v2parts = v2.split('.').map(Number);
  32. for (let i = 0; i < Math.max(v1parts.length, v2parts.length); i++) {
  33. if ((v1parts[i] || 0) > (v2parts[i] || 0)) return 1;
  34. if ((v1parts[i] || 0) < (v2parts[i] || 0)) return -1;
  35. }
  36. return 0;
  37. }
  38.  
  39. // Verificar si hay una nueva versión disponible
  40. GM_xmlhttpRequest({
  41. method: 'GET',
  42. url: scriptUrl,
  43. onload: function(response) {
  44. const match = response.responseText.match(/@version\s+(\d+\.\d+)/);
  45. if (match) {
  46. const latestVersion = match[1];
  47. if (compareVersions(latestVersion, currentVersion) > 0) {
  48. $('body').prepend(`
  49. <div id="updateNotification" style="position:fixed; top:0; left:0; width:100%; background-color:yellow; z-index:9999; text-align:center; padding:10px;">
  50. ${isEnglish ? 'A new version of the script is available. --TMOHentai Image Resizer--' : 'Hay una nueva versión disponible del script. --TMOHentai Image Resizer--'} <a href="https://sleazyfork.org/es/scripts/497081-tmohentai-image-resizer/code" target="_blank">${isEnglish ? 'Click here to update' : 'Haz clic aquí para actualizar'}.</a>
  51. </div>
  52. `);
  53. }
  54. }
  55. }
  56. });
  57.  
  58. // Función para ajustar el tamaño de la imagen
  59. function adjustImageSize(scale) {
  60. let images = document.querySelectorAll('.col-xs-12.text-center img.content-image');
  61. images.forEach(img => {
  62. img.style.width = scale + '%';
  63. img.style.height = 'auto';
  64. console.log(isEnglish ? `Resizing image to ${scale}%` : `Redimensionando imagen a ${scale}%`);
  65. });
  66. }
  67.  
  68. // Añadir botones para aumentar y reducir el tamaño de la imagen
  69. function addResizeButtons() {
  70. let container = document.createElement('div');
  71. container.style.position = 'fixed';
  72. container.style.top = '10px';
  73. container.style.left = '50%';
  74. container.style.transform = 'translateX(-50%)';
  75. container.style.zIndex = '1000';
  76. container.style.backgroundColor = 'rgba(0, 0, 0, 0.5)';
  77. container.style.padding = '10px';
  78. container.style.borderRadius = '5px';
  79. container.style.display = 'flex';
  80. container.style.gap = '5px';
  81.  
  82. let zoomInButton = document.createElement('button');
  83. zoomInButton.innerHTML = '+';
  84. zoomInButton.style.fontSize = '20px';
  85. zoomInButton.onclick = function() {
  86. currentScale += 10;
  87. adjustImageSize(currentScale);
  88. };
  89.  
  90. let zoomOutButton = document.createElement('button');
  91. zoomOutButton.innerHTML = '-';
  92. zoomOutButton.style.fontSize = '20px';
  93. zoomOutButton.onclick = function() {
  94. currentScale -= 10;
  95. adjustImageSize(currentScale);
  96. };
  97.  
  98. container.appendChild(zoomInButton);
  99. container.appendChild(zoomOutButton);
  100. document.body.appendChild(container);
  101. }
  102.  
  103. // Función para establecer la escala predeterminada desde la configuración
  104. function setDefaultScale() {
  105. let newScale = prompt(isEnglish ? "Enter the new default scale value (in percentage):" : "Ingrese el nuevo valor de escala predeterminado (en porcentaje):", currentScale);
  106. if (newScale !== null) {
  107. currentScale = parseInt(newScale, 10);
  108. GM_setValue('defaultScale', currentScale);
  109. adjustImageSize(currentScale);
  110. alert(isEnglish ? `New default scale value set to ${currentScale}%` : `Nuevo valor de escala predeterminado establecido a ${currentScale}%`);
  111. }
  112. }
  113.  
  114. // Escala inicial de la imagen
  115. let currentScale = GM_getValue('defaultScale', 40); // Obtener la escala predeterminada almacenada o usar 40%
  116.  
  117. // Ajustar el tamaño inicial de las imágenes
  118. adjustImageSize(currentScale);
  119.  
  120. // Añadir los botones de redimensionamiento
  121. addResizeButtons();
  122.  
  123. // Registrar el comando de menú para cambiar la escala predeterminada
  124. GM_registerMenuCommand(isEnglish ? "Set default scale" : "Configurar escala predeterminada", setDefaultScale);
  125. })(window.jQuery);