Obtain-Kanji-Info-from-jpdb.io-for-Mnemonic-generation

Will insert into the clipboard the info already parsed so that you only need to paste in for generating mnemonics

  1. // ==UserScript==
  2. // @name Obtain-Kanji-Info-from-jpdb.io-for-Mnemonic-generation
  3. // @namespace http://tampermonkey.net/
  4. // @version 2024-01-14
  5. // @description Will insert into the clipboard the info already parsed so that you only need to paste in for generating mnemonics
  6. // @author Fernando
  7. // @match https://jpdb.io/review
  8. // @icon https://www.google.com/s2/favicons?sz=64&domain=jpdb.io
  9. // @grant none
  10. // ==/UserScript==
  11.  
  12. (function() {
  13. 'use strict';
  14.  
  15. let copyToClipBKanjiInfo = () => {
  16. let radicalDivs = document.querySelectorAll('.subsection-composed-of-kanji div.subsection .description');
  17. let radicals = Array.from(radicalDivs).map(radicalDiv => radicalDiv.textContent.trim());
  18.  
  19. let keyword = document.querySelector('.subsection-composed-of-kanji').nextElementSibling.querySelector('.subsection').textContent.trim();
  20.  
  21. let finalText = `Radicals: ${radicals.join(', ')}\nKeyword: ${keyword}`;
  22.  
  23. navigator.clipboard.writeText( finalText );
  24. }
  25.  
  26. let insertButtonForKanjiInfoGen = () => {
  27. let box = document.querySelector('.review-reveal .result.kanji .vbox.gap');
  28.  
  29. const button = document.createElement('button');
  30. button.textContent = 'Copy Kanji Info for Mnemonic generation';
  31.  
  32. button.addEventListener('click', copyToClipBKanjiInfo);
  33.  
  34. box.appendChild(button);
  35. }
  36.  
  37. if ( document.querySelectorAll('.subsection-composed-of-kanji') ) insertButtonForKanjiInfoGen();
  38.  
  39. })();