マイリスト一覧 名前表示

名前表示

// ==UserScript==
// @name         マイリスト一覧 名前表示
// @namespace    https://zadankai.club/@tan
// @version      2024-01-18
// @description  名前表示
// @author       You
// @match        https://www.nicovideo.jp/openlist/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=nicovideo.jp
// @grant        none
 // @license MIT
// ==/UserScript==

(function() {
    // ページが読み込まれた後に実行されるコード

    // .OpenlistMediaObject-description クラスに属するすべての要素を取得
    var descriptionElements = document.querySelectorAll('.OpenlistMediaObject-description');

    // 各要素に対して処理を行う
    descriptionElements.forEach(function(element) {
        // 子要素 strong の子要素 a を取得
        var anchorElement = element.querySelector('strong > a');
        var desp = element.querySelector('strong');
        // a 要素が存在する場合、その href 属性を出力
        if (anchorElement) {
            console.log(anchorElement.href);
            fetch(anchorElement.href)
                .then(response => response.text())
                .then(html => {
                const parser = new DOMParser();
                const doc = parser.parseFromString(html, 'text/html');

                // #js-initial-userpage-data要素を取得
                const userDataElement = doc.querySelector('#js-initial-userpage-data');

                // data-environment属性の値を取得
                const dataEnvironment = userDataElement.getAttribute('data-initial-data');

                // data-environment属性の値をJSONとしてパースしてコンソールに出力
                const jsonData = JSON.parse(dataEnvironment);
                console.log(jsonData.state.userDetails.userDetails.user.nickname);
                desp.insertAdjacentHTML("beforeend", "<br><p style='color:gray'>" + jsonData.state.userDetails.userDetails.user.nickname)+"</p>"

            })
                .catch(error => console.error('Error:', error));

        }
    });


    const url = 'https://www.nicovideo.jp/mylist/76168952';


})();