Show All NSFW Covers Cuddly Octopus

Show the R18 covers for some covers that are disabled outside of Japan.

질문, 리뷰하거나, 이 스크립트를 신고하세요.
  1. // ==UserScript==
  2. // @name Show All NSFW Covers Cuddly Octopus
  3. // @version 2024-07-07
  4. // @namespace TyMcCuddly
  5. // @description Show the R18 covers for some covers that are disabled outside of Japan.
  6. // @author TyMc
  7. // @license MIT
  8. // @match https://cuddlyoctopus.com/product/*
  9. // @icon https://www.google.com/s2/favicons?sz=64&domain=cuddlyoctopus.com
  10. // @grant none
  11. // @run-at document-idle
  12. // ==/UserScript==
  13.  
  14. (function() {
  15. 'use strict';
  16. function getCookieValue(name) {
  17. let matches = document.cookie.match(new RegExp(
  18. "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
  19. ));
  20. return matches ? decodeURIComponent(matches[1]) : undefined;
  21. }
  22.  
  23. function nextVariant(letter) {
  24. let charCode = letter.charCodeAt(0);
  25. return String.fromCharCode(charCode + 1);
  26. }
  27.  
  28. let cookie = getCookieValue("sfw_version");
  29. let showNSFW = cookie == 0;
  30.  
  31. if (!showNSFW) return;
  32.  
  33. let nsfwElement = document.querySelector("input[name=attribute_pa_variant][value*=r18]")
  34. let nsfwAlreadyShown = nsfwElement !== null && nsfwElement !== undefined;
  35.  
  36. if (nsfwAlreadyShown) return;
  37.  
  38. let variantsTableRow = document.querySelector("tr.attribute-pa_variant td.value")
  39. let product = document.querySelector(".variations_form.cart");
  40. let variantsInformation = product.attributes['data-product_variations'].value;
  41. let variants = JSON.parse(variantsInformation);
  42. let product_id = product.attributes["data-product_id"].value;
  43.  
  44. let r18Variants = variants.filter((e) => {return !e.attributes.attribute_pa_variant.includes("aa");})
  45. let variant_version = r18Variants.length > 1 ? "a" : "";
  46.  
  47. for(let i = 0; i < r18Variants.length; ++i){
  48. const div = document.createElement('div');
  49.  
  50. let variant_value = r18Variants[i].attributes.attribute_pa_variant
  51. if (variant_value == "") {
  52. variant_value = `r18${variant_version}`
  53. }
  54.  
  55. div.innerHTML = `
  56. <input type="radio" name="attribute_pa_variant" value="${variant_value}" id="pa_variant_v_${variant_value}${product_id}">
  57. <label for="pa_variant_v_${variant_value}${product_id}"><span>R-18 ${variant_value}</span></label>
  58. `;
  59.  
  60. variantsTableRow.appendChild(div);
  61. console.log(`Added variant to list ${variant_value}: ${r18Variants[i]}`);
  62.  
  63. variant_version = nextVariant(variant_version);
  64. }
  65. })();