Kitsun Open JPod101 Audio

Open JPod101 audio for the word being edited in a new tab.

// ==UserScript==
// @name          Kitsun Open JPod101 Audio
// @namespace     https://kitsun.io
// @description   Open JPod101 audio for the word being edited in a new tab.
// @author        seanblue
// @version       1.0.2
// @include       https://kitsun.io/*
// @grant         none
// ==/UserScript==

(function() {
    'use strict';

    const requiredKey = 120; // F9

    const kanjiLabelText = 'Vocabulary';
    const kanaLabelText = 'Readings';

    document.addEventListener('keydown', onKeyDown);

    function onKeyDown(e) {
        if (e.keyCode === requiredKey) {
            openJPod101Audio();
        }
    }

    function openJPod101Audio() {
        let labelNodes = document.querySelectorAll('.kitInputWrapper label');

        let kanji = getInputValue(labelNodes, kanjiLabelText);
        let kana = getInputValue(labelNodes, kanaLabelText);

        if (kana) {
            let url = getJPodUrl(kanji, kana);

            window.open(url);
        }
    }

    function getInputValue(labelNodes, labelText) {
        for (let i = 0; i < labelNodes.length; i++) {
            let label = labelNodes[i];

            if (label.innerText === labelText) {
                let input = label.nextElementSibling;
                if (input && input.value) {
                    return input.value.split(',')[0].trim();
                }
            }
        }
    }

    function getJPodUrl(kanji, kana) {
        return `http://assets.languagepod101.com/dictionary/japanese/audiomp3.php?kanji=${kanji}&kana=${kana}`;
    }
})();