Everynoise Enhancement Script

A script to slightly enhance everynoise's user experience

2023-11-30 يوللانغان نەشرى. ئەڭ يېڭى نەشرىنى كۆرۈش.

// ==UserScript==
// @name         Everynoise Enhancement Script
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  A script to slightly enhance everynoise's user experience
// @author       NeroYuki
// @match        https://everynoise.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=https://everynoise.com/
// @grant        GM_getResourceText
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    // Your code here...
    var head = document.getElementsByTagName('head')[0];
    var thisScript = document.scripts[0]
    var cloneScript= document.createElement('script');
    if (thisScript) {
        const genreData = JSON.parse(GM_getResourceText("spotify_genres"));

        cloneScript.textContent = thisScript.textContent.replace(/scandur \= 6000/g, 'scandur = 28000');
        var cloneScriptLines = cloneScript.textContent.split('\n');
        var dataInsertLine = 0
        cloneScriptLines.splice(dataInsertLine, 0, `
var genreData = [];
fetch('https://raw.githubusercontent.com/NeroYuki/AnotherElaina/master/resources/spotify_genres.json')
    .then(async (response) => {
        console.log(response);
        genreData = await response.json();
    });
        `);
        var insertLine = cloneScriptLines.findIndex(val => val.includes('thisdiv.scrollIntoView({behavior: "smooth", block: "center", inline: "center"});')) + 2;
        cloneScriptLines.splice(insertLine, 0, `
            var label = document.getElementById('genre_label');
            if (!label) {
                label = document.createElement('div');
                document.body.appendChild(label);
            }
            let genreInfo = genreData.find(val => val.genre === which.trim())
            label.id = 'genre_label';
            label.style.position = 'absolute';
            label.style.color = 'black';
            label.style.backgroundColor = 'white';
            label.style.padding = '5px';
            label.style.display = 'none';
            label.textContent = genreInfo ? genreInfo.desc : "No description";
            // set the label position to be above the highlighted div
            var rect = thisdiv.getBoundingClientRect();
            label.style.left = Math.max(10, (parseInt(thisdiv.style.left) - 100)) + 'px';
            label.style.width = '300px'
            label.style.top = (parseInt(thisdiv.style.top) + 96) + 'px';
            label.style.border = 'solid 1px black';
            // show the label
            label.style.display = 'block';
`);
       cloneScript.textContent = cloneScriptLines.join('\n');
       head.appendChild(cloneScript);
       thisScript.remove();
    }
})();