music player for arras (beta)

pls no cringe for music choice. also change stuff as you please.

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

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

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name        music player for arras (beta)
// @namespace   its kinda workin out
// @match       *://arras.io/*
// @match       *://arrax.io/*
// @grant       none
// @version     2
// @author      onion
// @description pls no cringe for music choice. also change stuff as you please.
// @license     MIT
// ==/UserScript==


//creating audio element
let audio = document.createElement('audio');
let audio1 = document.createElement('audio');
let nextthing = document.createElement('audio');
let uhm = document.createElement('audio');
let tetris = document.createElement('audio');
let rise = document.createElement('audio');
let sour = document.createElement('audio');
let ops = document.createElement('audio');
let efs = document.createElement('audio');
let erika = document.createElement('audio');
let vd = document.createElement('audio');
let reichstag = document.createElement('audio');
let ussr1 = document.createElement('audio');
let ussr2 = document.createElement('audio');
let ussr3 = document.createElement('audio');
var number = 1;
var elementp = document.createElement('style');
var sonata = document.createElement('audio');
var classical = document.createElement('audio');





let ps = document.createElement('button');
ps.style.backgroundColor = "transparent";
ps.style.width = "100%";
ps.style.height = "100%";
ps.style.pointerEvents = "none";
ps.style.position = "absolute";
ps.style.top = "0";
ps.style.left = "0";
ps.style.zIndex = "100000";




document.body.appendChild(ps);

//const canvas = document.querySelector("canvas");


if (!document.getElementById('jwd')) {
  var rect = document.createElement('div');
  rect.id = 'jwd';
  rect.style.cssText = 'position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%) rotate(0); width: 1000%; height: 50px; background-color: red; transform-origin: center; z-index: 1000000; opacity: 0.15; pointer-events: none;';
  document.body.style.cssText = 'cursor: crosshair !important; '
  // append the rectangle to the body
  //canvas.append(rect);
  document.body.append(rect);

  // calculate the rotation angle based on mouse position
  document.onmousemove = function(e) {
    var angle = Math.atan2(e.pageY - window.innerHeight/2, e.pageX - window.innerWidth/2);
    rect.style.transform = 'translate(-50%, -50%) rotate(' + angle + 'rad)';
  };
};


//document.getElementById("#canvas").backgroundImage = "linear-gradient( 358.4deg, rgba(249,151,119,1) -2.1%, rgba(98,58,162,1) 90% );";

var sadsad = `
#canvas {
    backgroundImage: linear-gradient( 358.4deg, rgba(249,151,119,1) -2.1%, rgba(98,58,162,1) 90% );
}

`;

document.head.append(sadsad);












// Set sources
// classical music 2 hours
classical.src = "https://cdn.glitch.me/b1fc10cc-5b67-4847-88d6-c342a69adfee/videoplayback%20(7).m4a?v=1679525707955";
// moonlight sonata nightmare
sonata.src = "https://cdn.discordapp.com/attachments/1068333890596524033/1088229398152491108/videoplayback_5.m4a";
// ussr anthem 1977 russian
ussr3.src = "https://cdn.discordapp.com/attachments/1068333890596524033/1084286826103181312/soviet-anthem.mp3";
// ussr anthem 1944 english
ussr2.src = "https://cdn.discordapp.com/attachments/1068333890596524033/1084286889831448626/soviet-anthem_en.mp3";
// ussr anthem 1944 russian
ussr1.src = "https://cdn.discordapp.com/attachments/1068333890596524033/1084286842473545799/soviet-anthem1944.mp3";
// national anthem of nazi germany
reichstag.src = "https://cdn.discordapp.com/attachments/1068333890596524033/1084285133269508157/de-naz.mp3";
// victory day russian ssr song
vd.src = "https://cdn.discordapp.com/attachments/1068333890596524033/1084202798733860986/yt5s.com_-_Eng_CC_Victory_Day___Soviet_Song_128_kbps.mp3";
// erika
erika.src = "https://cdn.discordapp.com/attachments/1068333890596524033/1084201573711888466/yt5s.com_-_German_Soldiers_Song_-__Erika__with_English_Subtitles_128_kbps.mp3";
// live a lie
efs.src = "https://cdn.discordapp.com/attachments/1009208113200631949/1081768386679279616/videoplayback_4.m4a";
// Rest
ops.src = 'https://cdn.discordapp.com/attachments/1009208113200631949/1081654159624900628/videoplayback_3.m4a';
// dont surrender
sour.src = 'https://cdn.discordapp.com/attachments/1009208113200631949/1081014554915504148/videoplayback_2.m4a';
// RISE
rise.src = "https://cdn.discordapp.com/attachments/1009208113200631949/1080989152620851250/videoplayback_1.m4a";
//take over
audio.src = 'https://cdn.discordapp.com/attachments/967213871267971072/1027416621318414406/8mb.video-Vf9-wfenD0dA.m4a';
//egzod royalty
audio1.src = 'https://cdn.discordapp.com/attachments/1068333890596524033/1089017554091126824/videoplayback_8.m4a';
//the fat rat
nextthing.src = 'https://cdn.discordapp.com/attachments/1009208113200631949/1076650551024033872/TheFatRat_-_Unity.mp3';
//tetris theme song
tetris.src = 'https://cdn.discordapp.com/attachments/1009208113200631949/1078813267440439336/Tetris.mp3';
// forgot lolz
uhm.src = 'https://cdn.discordapp.com/attachments/1009208113200631949/1076657096881348628/Rick_Astley_-_Never_Gonna_Give_You_Up_Official_Music_Video.mp3';
// Check if player already exists
let player = document.querySelector('.player');

if (!player) {
    // Create player
    player = document.createElement('div');
    player.className = 'player';

    // Create buttons
    let playButton = document.createElement('button');
    playButton.innerHTML = 'start';
    playButton.className = "btn";
    let pauseButton = document.createElement('button');
    pauseButton.innerHTML = 'pause';
    pauseButton.className = "btn";
    let endButton = document.createElement('button');
    endButton.innerHTML = 'end';
    endButton.className = "btn";
    let choicer = document.createElement('select');
    choicer.innerHTML = 'music';
    choicer.id = 'select';
    let option1 = document.createElement('option');
    option1.innerHTML = 'Take Over';
    option1.value = '1';
    option1.className = "btn";
    choicer.appendChild(option1);
    let option2 = document.createElement('option');
    option2.innerHTML = 'Royalty';
    option2.value = '2';
    option2.className = "btn";
    choicer.appendChild(option2);
    let option3 = document.createElement('option');
    option3.innerHTML = "The Fat Rat";
    option3.value = '3';
    option3.className = "btn";
    choicer.appendChild(option3);
    let option4 = document.createElement('option');
    option4.innerHTML = 'Rickroll';
    option4.value = '4';
    option4.className = "btn";
    choicer.appendChild(option4);
    let option5 = document.createElement('option');
    option5.innerHTML = 'Tetris';
    option5.value = '5';
    option5.className = "btn";
    choicer.appendChild(option5);
    let option6 = document.createElement('option');
    option6.innerHTML = 'RISE';
    option6.value = '6';
    option6.className = "btn";
    choicer.appendChild(option6);
    let option7 = document.createElement('option');
    option7.innerHTML = "Don't surrender.";
    option7.value = '7';
    option7.className = "btn";
    choicer.appendChild(option7);
    let option8 = document.createElement('option');
    option8.innerHTML = "Rest";
    option8.value = '8';
    option8.className = 'btn';
    choicer.appendChild(option8);
    let option9 = document.createElement('option');
    option9.innerHTML = "Live a Lie";
    option9.value = '9';
    option9.className = 'btn';
    choicer.appendChild(option9);
    let option10 = document.createElement('option');
    option10.innerHTML = "Erika";
    option10.value = '10';
    option10.className = 'btn';
    choicer.appendChild(option10);
    let option11 = document.createElement('option');
    option11.innerHTML = "Victory Day!";
    option11.value = '11';
    option11.className = 'btn';
    choicer.appendChild(option11);
    let option12 = document.createElement('option');
    option12.innerHTML = "卍";
    option12.value = '12';
    option12.className = 'btn';
    choicer.appendChild(option12);
    let option13 = document.createElement('option');
    option13.innerHTML = "USSR Anthem 1944 - Russian";
    option13.value = '13';
    option13.className = 'btn';
    choicer.appendChild(option13);
    let option14 = document.createElement('option');
    option14.innerHTML = "USSR Anthem 1944 - English";
    option14.value = '14';
    option14.className = 'btn';
    choicer.appendChild(option14);
    let option15 = document.createElement('option');
    option15.innerHTML = "USSR Anthem 1977 - Russian";
    option15.value = '15';
    option15.className = 'btn';
    choicer.appendChild(option15);
    let option16 = document.createElement('option');
    option16.innerHTML = "Moonlight Sonata Nightmare";
    option16.value = '16';
    option16.className = 'btn';
    choicer.appendChild(option16);
    let option17 = document.createElement('option');
    option17.innerHTML = "Classical Music 2 Hours";
    option17.value = '17';
    option17.className = 'btn';
    choicer.appendChild(option17);
    let credits = document.createElement('button');
    credits.id = 'credits';
    credits.className = "btn";
    credits.innerHTML = 'by onion';

    // Append buttons to player
    player.appendChild(choicer);
    player.appendChild(playButton);
    player.appendChild(pauseButton);
    player.appendChild(endButton);
    player.appendChild(credits);

    // Append player to document
    document.body.appendChild(player);

    // Set player to be on top of everything
    player.style.zIndex = 9999;
    player.style.position = 'fixed';
    player.style.top = 0;
    player.style.left = 0;
    credits.style.fontSize = '10';




    var visible = false;


    document.addEventListener("keydown", function (e) {
        if (e.key == "p") {
            if (visible) {
                playButton.style.display = 'none';
                pauseButton.style.display = 'none';
                endButton.style.display = 'none';
                visible = false;
            } else {
                playButton.style.display = 'unset';
                pauseButton.style.display = 'unset';
                endButton.style.display = 'unset';
                visible = true;
            };
        };
    });


    // Add event listeners
    playButton.addEventListener('click', () => {
        if (number == 1) {
            audio.play();
        } else if (number == 2) {
            audio1.play();
        } else if (number == 3) {
            nextthing.play();
        } else if (number == 4) {
            uhm.play();
        } else if (number == 5) {
            tetris.play();
        } else if (number == 6) {
            rise.play();
        } else if (number == 7) {
            sour.play();
        } else if (number == 8) {
            ops.play();
        } else if (number == 9) {
            efs.play();
        } else if (number == 10) {
            erika.play();
        } else if (number == 11) {
            vd.play();
        } else if (number == 12) {
            reichstag.play();
        } else if (number == 13) {
          ussr1.play();
        } else if (number == 14) {
          ussr2.play();
        } else if (number == 15) {
          ussr3.play();
        } else if (number == 16) {
          sonata.play();
        } else if (number == 17) {
          classical.play();
        }
    });

    pauseButton.addEventListener('click', () => {
        if (number == 1) {
            audio.pause();
        } else if (number == 2) {
            audio1.pause();
        } else if (number == 3) {
            nextthing.pause();
        } else if (number == 4) {
            uhm.pause();
        } else if (number == 5) {
          tetris.pause();
        } else if (number == 6) {
          rise.pause();
        } else if (number == 7) {
          sour.pause();
        } else if (number == 8) {
            ops.pause();
        } else if (number == 9) {
            efs.pause();
        } else if (number == 10) {
            erika.pause();
        } else if (number == 11) {
            vd.pause();
        } else if (number == 12) {
            reichstag.pause();
        } else if (number == 13) {
          ussr1.pause();
        } else if (number == 14) {
          ussr2.pause();
        } else if (number == 15) {
          ussr3.pause();
        } else if (number == 16) {
          sonata.pause();
        } else if (number == 17) {
          classical.pause();
        }
    });

    endButton.addEventListener('click', () => {
        if (number == 1) {
            audio.pause();
            audio.currentTime = 0;
        } else if (number == 2) {
            audio1.pause();
            audio1.currentTime = 0;
        } else if (number == 3) {
            nextthing.pause();
            nextthing.currentTime = 0;
        } else if (number == 4) {
            uhm.pause();
            uhm.currentTime = 0;
        } else if (number == 5) {
            tetris.pause();
            tetris.currentTime = 0;
        } else if (number == 6) {
            rise.pause();
            rise.currentTime = 0;
        } else if (number == 7) {
            sour.pause();
            sour.currentTime = 0;
        } else if (number == 8) {
            ops.pause();
            ops.currentTime = 0;
        } else if (number == 9) {
            efs.pause();
            efs.currentTime = 0;
        } else if (number == 10) {
            erika.pause();
            erika.currentTime = 0;
        } else if (number == 11) {
            vd.pause();
            vd.currentTime = 0;
        } else if (number == 12) {
            reichstag.pause();
            reichstag.currentTime = 0;
        } else if (number == 13) {
            ussr1.pause();
            ussr1.currentTime = 0;
        } else if (number == 14) {
            ussr2.pause();
            ussr2.currentTime = 0;
        } else if (number == 15) {
            ussr3.pause();
            ussr3.currentTime = 0;
        } else if (number == 16) {
            sonata.pause();
            sonata.currentTime = 0;
        } else if (number == 17) {
            classical.pause();
            classical.currentTime = 0;
    }
    });

    let playCount = 0;

    tetris.addEventListener('ended', () => {
      if (playCount < 2) {
        playCount++;
        tetris.currentTime = 0;
        tetris.play();
      }
    });



    var menu = document.getElementById("select");

    var selected_option = menu.options[menu.selectedIndex].value;

    menu.onchange = function () {
        number = parseInt(menu.value);
    }

} else {
    var visible = false;


    document.addEventListener("keydown", function (e) {
        if (e.key == "p") {
            if (visible) {
                playButton.style.display = 'none';
                pauseButton.style.display = 'none';
                endButton.style.display = 'none';
                visible = false;
            } else {
                playButton.style.display = 'unset';
                pauseButton.style.display = 'unset';
                endButton.style.display = 'unset';
                visible = true;
            };
        };
    });


    // Add event listeners



    var menu = document.getElementById("select");

    var selected_option = menu.options[menu.selectedIndex].value;

    menu.onchange = function () {
        number = parseInt(menu.value);
    }
}


const progressBar = document.createElement('div');
progressBar.style.position = 'fixed';
progressBar.style.top = '0';
progressBar.style.left = '0';
progressBar.style.width = '50px';
progressBar.style.height = '3px';
progressBar.style.backgroundColor = '#29d';
progressBar.zIndex = 9999;
progressBar.margin = 'auto';

document.body.appendChild(progressBar);

let progress = 0;
let intervalId;
let isAnimating = false;

function startProgressBar() {
  if (!isAnimating) {
    isAnimating = true;
    intervalId = setInterval(() => {
      progress += 1;
      progressBar.style.width = `${progress}%`;
      if (progress === 100) {
        clearInterval(intervalId);
        setTimeout(() => {
          progress = 0;
          progressBar.style.width = '0';
          isAnimating = false;
        }, 800);
      }
    }, 8);
  }
}

function resetProgressBar() {
  clearInterval(intervalId);
  progress = 0;
  progressBar.style.width = '0';
  isAnimating = false;
}

document.addEventListener('mousedown', (event) => {
  if (!isAnimating) {
    startProgressBar();
  }
});

document.addEventListener('mouseup', () => {
  resetProgressBar();
});

document.addEventListener('mouseleave', () => {
  resetProgressBar();
});










var cursor = document.createElement("div");
cursor.id = "custom-cursor";
cursor.style.zIndex = "218039732198";
document.body.appendChild(cursor);

// Add the custom cursor CSS to the page
var css = document.createElement("style");
css.type = "text/css";
css.innerHTML = ".custom-cursor { cursor: url('https://img.favpng.com/25/12/17/portable-network-graphics-clip-art-image-transparency-computer-icons-png-favpng-Cz19qWQrGKt8RD7RE6Yn42Xr5.jpg'), auto; position: fixed; width: 30px; height: 30px; z-index: 9999; }";
document.head.appendChild(css);
// Update the position of the custom cursor on mouse move
document.addEventListener("mousemove", function(e) {
  cursor.style.left = e.clientX + "px";
  cursor.style.top = e.clientY + "px";
});