DLSite Title & Tag Unmasker

Effortlessly unmask hidden titles and tags.

  1. // ==UserScript==
  2. // @name DLSite Title & Tag Unmasker
  3. // @description Effortlessly unmask hidden titles and tags.
  4. // @description:ja DLSiteの規制された単語の復元を試みる
  5. // @author Ginoa AI
  6. // @namespace https://greasyfork.org/ja/users/119008-ginoaai
  7. // @version 1.4.2
  8. // @match https://www.dlsite.com/pro/work/=/product_id/*
  9. // @match https://www.dlsite.com/pro-touch/work/=/product_id/*
  10. // @match https://www.dlsite.com/maniax/work/=/product_id/*
  11. // @match https://www.dlsite.com/maniax-touch/work/=/product_id/*
  12. // @match https://www.dlsite.com/books/work/=/product_id/*
  13. // @match https://www.dlsite.com/books-touch/work/=/product_id/*
  14. // @match https://www.dlsite.com/home/work/=/product_id/*
  15. // @match https://www.dlsite.com/home-touch/work/=/product_id/*
  16. // @icon https://pbs.twimg.com/profile_images/1648150443522940932/4TTHKbGo_400x400.png
  17. // @run-at document-end
  18. // @grant GM_xmlhttpRequest
  19. // ==/UserScript==
  20.  
  21.  
  22.  
  23. function LoadWait() {
  24. if ( !document.querySelectorAll('h1[id="work_name"]')[0].textContent ) {
  25. setTimeout( LoadWait, 100 );
  26. return;
  27. } else {
  28. try{
  29. if ( contents ) {
  30. var work_name = contents.detail[0].name;
  31. document.querySelector('h1[id="work_name"]').innerText = work_name;
  32. }
  33. } catch(e) {
  34. GetTitle(location.href.replace(/.*?_id\/(.+?)\..+/g, "$1"));
  35. }
  36. MainProcess();
  37. }
  38. }
  39. LoadWait();
  40.  
  41. async function GetTitle(id) {
  42. var work_name = JSON.parse(await makeGetRequest("https://www.dlsite.com/maniax/api/=/product.json?keyword_work_name=" + id));
  43. document.querySelector('h1[id="work_name"]').innerText = work_name[0].work_name;
  44. }
  45.  
  46. function MainProcess() {
  47. try { document.querySelector('a[href*="/fsr/=/genre/525/from/work.genre"]').innerText = "メスガキ"; } catch (e) {}
  48. try { document.querySelector('a[href*="/fsr/=/genre/113/from/work.genre"]').innerText = "レイプ"; } catch (e) {}
  49. try { document.querySelector('a[href*="/fsr/=/genre/207/from/work.genre"]').innerText = "ロリ"; } catch (e) {}
  50. try { document.querySelector('a[href*="/fsr/=/genre/531/from/work.genre"]').innerText = "ロリババア"; } catch (e) {}
  51. try { document.querySelector('a[href*="/fsr/=/genre/151/from/work.genre"]').innerText = "監禁"; } catch (e) {}
  52. try { document.querySelector('a[href*="/fsr/=/genre/154/from/work.genre"]').innerText = "鬼畜"; } catch (e) {}
  53. try { document.querySelector('a[href*="/fsr/=/genre/115/from/work.genre"]').innerText = "逆レイプ"; } catch (e) {}
  54. try { document.querySelector('a[href*="/fsr/=/genre/114/from/work.genre"]').innerText = "強制/無理矢理"; } catch (e) {}
  55. try { document.querySelector('a[href*="/fsr/=/genre/120/from/work.genre"]').innerText = "近親相姦"; } catch (e) {}
  56. try { document.querySelector('a[href*="/fsr/=/genre/201/from/work.genre"]').innerText = "拷問"; } catch (e) {}
  57. try { document.querySelector('a[href*="/fsr/=/genre/157/from/work.genre"]').innerText = "催眠"; } catch (e) {}
  58. try { document.querySelector('a[href*="/fsr/=/genre/163/from/work.genre"]').innerText = "獣姦"; } catch (e) {}
  59. try { document.querySelector('a[href*="/fsr/=/genre/326/from/work.genre"]').innerText = "洗脳"; } catch (e) {}
  60. try { document.querySelector('a[href*="/fsr/=/genre/139/from/work.genre"]').innerText = "痴漢"; } catch (e) {}
  61. try { document.querySelector('a[href*="/fsr/=/genre/140/from/work.genre"]').innerText = "調教"; } catch (e) {}
  62. try { document.querySelector('a[href*="/fsr/=/genre/147/from/work.genre"]').innerText = "奴隷"; } catch (e) {}
  63. try { document.querySelector('a[href*="/fsr/=/genre/134/from/work.genre"]').innerText = "陵辱"; } catch (e) {}
  64. try { document.querySelector('a[href*="/fsr/=/genre/121/from/work.genre"]').innerText = "輪姦"; } catch (e) {}
  65. try { document.querySelector('a[href*="/fsr/=/genre/490/from/work.genre"]').innerText = "蟲姦"; } catch (e) {}
  66. try { document.querySelector('a[href*="/fsr/=/genre/465/from/work.genre"]').innerText = "モブ姦"; } catch (e) {}
  67. try { document.querySelector('a[href*="/fsr/=/genre/324/from/work.genre"]').innerText = "異種姦"; } catch (e) {}
  68. try { document.querySelector('a[href*="/fsr/=/genre/164/from/work.genre"]').innerText = "機械姦"; } catch (e) {}
  69. try { document.querySelector('a[href*="/fsr/=/genre/495/from/work.genre"]').innerText = "睡眠姦"; } catch (e) {}
  70. try { document.querySelector('a[href*="/fsr/=/genre/314/from/work.genre"]').innerText = "催眠音声"; } catch (e) {}
  71. }
  72.  
  73. function makeGetRequest(url) {
  74. return new Promise((resolve, reject) => {
  75. GM_xmlhttpRequest({
  76. method: "GET",
  77. url: url,
  78. headers: {
  79. 'Content-Type':'application/x-www-form-urlencoded',
  80. },
  81. onload: function(response) {
  82. resolve(response.responseText);
  83. }
  84. });
  85. });
  86. }