Append Username to Playlist Items

Appends the "Added by" username to each playlist item after the title

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला Tampermonkey, Greasemonkey किंवा Violentmonkey यासारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला Tampermonkey किंवा Violentmonkey यासारखे एक्स्टेंशन इंस्टॉल करावे लागेल..

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला Tampermonkey किंवा Violentmonkey यासारखे एक्स्टेंशन इंस्टॉल करावे लागेल..

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला Tampermonkey यासारखे एक्स्टेंशन इंस्टॉल करावे लागेल..

ही स्क्रिप्ट इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्क्रिप्ट व्यवस्थापक एक्स्टेंशन इंस्टॉल करावे लागेल.

(माझ्याकडे आधीच युझर स्क्रिप्ट व्यवस्थापक आहे, मला इंस्टॉल करू द्या!)

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला Stylus सारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला Stylus सारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला Stylus सारखे एक्स्टेंशन इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्टाईल व्यवस्थापक इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्टाईल व्यवस्थापक इंस्टॉल करावे लागेल.

ही स्टाईल इंस्टॉल करण्यासाठी तुम्हाला एक युझर स्टाईल व्यवस्थापक इंस्टॉल करावे लागेल.

(माझ्याकडे आधीच युझर स्टाईल व्यवस्थापक आहे, मला इंस्टॉल करू द्या!)

// ==UserScript==
// @name         Append Username to Playlist Items
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Appends the "Added by" username to each playlist item after the title
// @author       You
// @match        *://*/*
// @grant        none
// ==/UserScript==
// @license MIT

(function () {
    'use strict';

    function appendUsernames() {
        const entries = document.querySelectorAll('li.queue_entry');

        entries.forEach(entry => {
            const titleAttr = entry.getAttribute('title');
            const match = titleAttr && titleAttr.match(/Added by:\s*(.+)/);
            if (match) {
                const username = match[1];
                const titleAnchor = entry.querySelector('.qe_title');
                if (titleAnchor && !titleAnchor.dataset.usernameAppended) {
                    const userSpan = document.createElement('span');
                    userSpan.textContent = ` [${username}]`;
                    userSpan.style.marginLeft = '6px';
                    userSpan.style.fontStyle = 'italic';
                    titleAnchor.parentNode.insertBefore(userSpan, titleAnchor.nextSibling);
                    titleAnchor.dataset.usernameAppended = 'true';
                }
            }
        });
    }

    // Run initially and then observe for dynamic changes
    const observer = new MutationObserver(appendUsernames);
    observer.observe(document.body, { childList: true, subtree: true });

    // Initial run
    appendUsernames();
})();