MUSIC SIEU CHILL ( muấn thêm nhạc ib discord :taochsgamedekiemgai2207 )

idk ?

Από την 22/01/2025. Δείτε την τελευταία έκδοση.

Δημιουργός
xuân nguyễn
Βαθμολογίες
0 0 0
Έκδοση
0,1 (beta test )
Δημιουργήθηκε την
22/01/2025
Ενημερώθηκε την
22/01/2025
Μέγεθος
20 KB
Άδεια
Μη διαθέσιμη
Εφαρμόζεται σε

// ==UserScript==
// @name MUSIC SIEU CHILL ( muấn thêm nhạc ib discord :taochsgamedekiemgai2207 )
// @namespace http://tampermonkey.net/
// @version 0,1 (beta test )
// @description idk ?
// @author XUAN & taochsgamedekiemgai2207 ( cre: Zick & Ano master )
// @match *://*.sploop.io/*
// @match *://*.www.facebook.com/*
// @match *://*.discord.com/*
// @match *://*.moomoo.io/*
// @match *://*.gemini.google.com/*
// @match *://*.www.crazygames.com/*
// @match *://*.youtube.com/*
// @match *://*.extension/*
// @match *://*.edge/*
// @match *://*.www.bing.com/*
// @match https://cn.bing.com/*
// @match https://www.bing.com/*
// @match *://*.bing.com/*
// @match https://chat.openai.com/chat
// @match https://www.google.com/*
// @match https://duckduckgo.com/*
// @match https://www.so.com/s*
// @match *://m.so.com/s*
// @match *://www.baidu.com/s*
// @match https://www.baidu.com/*
// @match https://m.baidu.com/*
// @match *://baidu.com/s*
// @match *://yandex.ru/search*
// @match *://yandex.com/search*
// @match https://search.ecnu.cf/search*
// @match https://search.aust.cf/search*
// @match https://search.*.cf/search*
// @match https://*.cf:*/*
// @match *://gooo.azurewebsites.net/*
// @match https://fsoufsou.com/search*
// @match https://www.google.com.hk/*
// @match *://www.sogou.com/*
// @match *://m.sogou.com/*
// @match *://wap.sogou.com/*
// @match *://*.tiangong.cn/*
// @match *://www.bilibili.com/video/*
// @match *://blog.csdn.net/*/article/details/*
// @match *://chatglm.cn/*
// @match *://*.chatgpt.com/*
// @match https://*.discord.com/app
// @match https://*.discord.com/channels/*
// @match https://*.discord.com/login

// @match https://facebook.com/*
// @match https://*.facebook.com/*

// @match *://starve.io/*

// @match *://classroom.google.com/*

// @match *://*.moomoo.io/*
// @match *://moomoo.io/*
// @match *://sandbox.moomoo.io/*
// @match *://dev.moomoo.io/*
// @match *://www.google.com/recaptcha/api2/*

// @match *://diep.io/*

// @match *://www.baidu.com/*
// @match *://baidu.com/*
// @match *://m.baidu.com/*
// @match *://*.greasyfork.org/*
// @match *://*.google.com/*
// @match *://*.azota.vn/*
// @match *://*.chess.com/*
// @match *://*.google.com.vn/*
// @match *://*.poki.com/*
// @match *://*./*
// @match *://*./*
// @match *://*./*
// @match *://*./*
// @match *://*./*
// @match *://*./*
// @match *://*./*
// @match *://*./*
// @grant none
// ==/UserScript==

(function() {
'use strict';

// Create the music menu container
const musicMenuContainer = document.createElement('div');
musicMenuContainer.id = 'musicMenuContainer';
musicMenuContainer.style.position = 'absolute';
musicMenuContainer.style.top = '20px';
musicMenuContainer.style.left = '20px';
musicMenuContainer.style.width = '320px';
musicMenuContainer.style.maxHeight = '80vh';
musicMenuContainer.style.overflowY = 'auto';
musicMenuContainer.style.backgroundColor = 'rgba(30, 30, 30, 0.9)';
musicMenuContainer.style.color = '#fff';
musicMenuContainer.style.borderRadius = '10px';
musicMenuContainer.style.padding = '20px';
musicMenuContainer.style.zIndex = '9999';
musicMenuContainer.style.boxShadow = '0 4px 20px rgba(0, 0, 0, 0.5)';
musicMenuContainer.style.display = 'none'; // Initially hidden

// Title for music menu
const musicTitle = document.createElement('h2');
musicTitle.textContent = ' bấm nút " tab hoạc ] " để mở hoạc tắt menu ';
musicTitle.style.textAlign = 'center';
musicMenuContainer.appendChild(musicTitle);

// Volume control
const volumeLabel = document.createElement('label');
volumeLabel.textContent = 'âm thanh:';
musicMenuContainer.appendChild(volumeLabel);

const volumeSlider = createSlider(0, 100, 50);
volumeSlider.addEventListener('input', () => {
const volume = volumeSlider.value / 100;
player.setVolume(volume * 100);
});
musicMenuContainer.appendChild(volumeSlider);

// Mute/Unmute button
const muteButton = createButton('tắt tiếng', 'rgba(255, 165, 0, 0.7)');
let isMuted = false;
muteButton.addEventListener('click', () => {
isMuted = !isMuted;
player.setVolume(isMuted ? 0 : volumeSlider.value);
muteButton.textContent = isMuted ? 'Unmute' : 'Mute';
});
musicMenuContainer.appendChild(muteButton);

// Playback speed control
const speedLabel = document.createElement('label');
speedLabel.textContent = 'tốc độ nhạc:';
musicMenuContainer.appendChild(speedLabel);

const speedSelect = createSelect([0.5, 1, 1.5, 2], 'x');
speedSelect.addEventListener('change', () => {
player.setPlaybackRate(parseFloat(speedSelect.value));
});
musicMenuContainer.appendChild(speedSelect);

// Track progress bar
const progressContainer = document.createElement('div');
const progressBar = document.createElement('input');
progressBar.type = 'range';
progressBar.min = '0';
progressBar.max = '100';
progressBar.value = '0';
progressBar.style.width = '100%';
progressBar.style.marginBottom = '10px';
progressBar.disabled = true;

progressBar.addEventListener('input', () => {
const time = (progressBar.value / 100) * player.getDuration();
player.seekTo(time);
});

progressContainer.appendChild(progressBar);
musicMenuContainer.appendChild(progressContainer);

// Song duration display
const durationDisplay = document.createElement('div');
durationDisplay.textContent = 'Duration: 0:00 / 0:00';
durationDisplay.style.textAlign = 'center';
musicMenuContainer.appendChild(durationDisplay);

// List of music genres and their YouTube links
const musicList = [
{ name: 'chill', url: 'https://www.youtube.com/watch?v=PifAHkKlP8E&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=115&ab_channel=%F0%9D%9A%85%F0%9D%9A%92%F0%9D%9A%98%F0%9D%9A%95%F0%9D%9A%8E%F0%9D%9A%9D%F0%9D%9A%9D%F0%9D%9A%8E' },
{ name: 'The Right Path', url: 'https://www.youtube.com/watch?v=o_Figo57l8s&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=114&ab_channel=KainRecordings' },
{ name: 'Glass Animals', url: 'https://www.youtube.com/watch?v=6APgzehjAQM&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=113' },
{ name: 'chill 2', url: 'https://www.youtube.com/watch?v=LAMNfW9v2t0&list=PLRBp0Fe2GpgnIh0AiYKh7o7HnYAej-5ph' },
{ name: 'chill 3', url: 'https://www.youtube.com/watch?v=AQbvCfRCFvg&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=111&pp=gAQBiAQB8AUB' },
{ name: 'Darkside', url: 'https://www.youtube.com/watch?v=AIikYWUbAB0&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=110' },
{ name: 'lovely', url: 'https://www.youtube.com/watch?v=0Ghcjygr66g&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=106' },
{ name: 'chill 4', url: 'https://www.youtube.com/watch?v=5yaTVGSXAMc&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=103' },
{ name: 'chill 5', url: 'https://www.youtube.com/watch?v=Y6AiKryrDyk&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=104&pp=gAQBiAQB8AUB' },
{ name: 'Tobu - Faster', url: 'https://www.youtube.com/watch?v=PoM_oI6ug4A&list=PLRBp0Fe2GpgnIh0AiYKh7o7HnYAej-5ph&index=7' },
{ name: 'Tháng Năm Không Quên', url: 'https://www.youtube.com/watch?v=g3s-OdZazbQ&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=102' },
{ name: 'Bài Hát Liên Quân', url: 'https://www.youtube.com/watch?v=CxXN5DmI9s4&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=101' },
{ name: 'DDTank - Tết Nhà Bà Hoan Parody ', url: 'https://www.youtube.com/watch?v=NRRs9HyfNMc&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=95' },
{ name: 'Legendary', url: 'https://www.youtube.com/watch?v=cTlshvPrIZo&list=RDQMBlegB1oalTw&index=19' },
{ name: 'ĐẾ VƯƠNG', url: 'https://www.youtube.com/watch?v=qkPgUgkQE4Y&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=93' },
{ name: 'Lost Sky', url: 'https://www.youtube.com/watch?v=L7kF4MXXCoA&list=RDQMBlegB1oalTw&index=21' },
{ name: 'Tướng Quân ', url: 'https://www.youtube.com/watch?v=U-hAhjg56HU&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=92' },
{ name: 'Fight Back', url: 'https://www.youtube.com/watch?v=CYDP_8UTAus&list=RDQMBlegB1oalTw&index=2' },
{ name: 'Vicetone - Nevada', url: 'https://www.youtube.com/watch?v=AnMhdn0wJ4I&list=RDQMBlegB1oalTw&index=25' },
{ name: 'Believer ', url: 'https://www.youtube.com/watch?v=FXqp9WiFWzc&list=RDQMBlegB1oalTw&index=17' },
{ name: 'On & On', url: 'https://www.youtube.com/watch?v=XsZZQPKLChY&list=RDQMBlegB1oalTw&index=15' },
{ name: '💋💜Nevada💜💋', url: 'https://www.youtube.com/watch?v=bLrOTFDU2ZI&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=109&ab_channel=Detective.J' },
{ name: 'Legends Never Die', url: 'https://www.youtube.com/watch?v=r6zIGXun57U&list=RDQMBlegB1oalTw&index=3' },
{ name: 'nevada', url: 'https://www.youtube.com/watch?v=2jzxIOCYzEM&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=108&ab_channel=Jarctix' },
{ name: 'chill 6', url: 'https://www.youtube.com/watch?v=ZzbYaDHkObY&list=RDQMBlegB1oalTw&index=5' },
{ name: 'chill 7', url: 'https://www.youtube.com/watch?v=9pO-Cuq7R1Y&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=91&ab_channel=%23phuongmusic.' },
{ name: 'chill 8', url: 'https://www.youtube.com/watch?v=o85fLo47FUE&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=90&pp=gAQBiAQB8AUB' },
{ name: 'chill 9', url: 'https://www.youtube.com/watch?v=NHDKk1QyfhM&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=89&pp=gAQBiAQB8AUB' },
{ name: 'chill 10', url: 'https://www.youtube.com/watch?v=WKtJ7tVgxxs&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=88&pp=gAQBiAQB8AUB' },
{ name: 'chill 11', url: 'https://www.youtube.com/watch?v=kkRqgK6GOWs&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=86&pp=gAQBiAQB8AUB' },
{ name: 'chill 12', url: 'https://www.youtube.com/watch?v=kkRqgK6GOWs&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=86&pp=gAQBiAQB8AUB' },
{ name: 'chill 13', url: 'https://www.youtube.com/watch?v=xZhkxpwkYiA&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=84&pp=gAQBiAQB8AUB' },
{ name: 'chill 14', url: 'https://www.youtube.com/watch?v=_0FI0jVeNUQ&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=83&pp=gAQBiAQB8AUB' },
{ name: 'chill 15', url: 'https://www.youtube.com/watch?v=w35LzCA0YLY&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=82&pp=gAQBiAQB8AUB' },
{ name: 'chill 16', url: 'https://www.youtube.com/watch?v=40EAqsXibhM&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=81&pp=gAQBiAQB8AUB' },
{ name: 'chill 17', url: 'https://www.youtube.com/watch?v=J4L-1FLXVLM&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=80&pp=gAQBiAQB8AUB' },
{ name: 'chill 18', url: 'https://www.youtube.com/watch?v=_7G-E0N9D0w&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=79&pp=gAQBiAQB8AUB' },
{ name: 'chill 19', url: 'https://www.youtube.com/watch?v=-my-C09BdPc&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=77&pp=gAQBiAQB8AUB' },
{ name: 'chill 20', url: 'https://www.youtube.com/watch?v=bb5ucM01Em0&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=76&pp=gAQBiAQB8AUB' },
{ name: 'chill 21', url: 'https://www.youtube.com/watch?v=7ld_7tRuasg&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=75&pp=gAQBiAQB8AUB' },
{ name: 'chill 22', url: 'https://www.youtube.com/watch?v=b0vf8CAh82c&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=73&pp=gAQBiAQB8AUB' },
{ name: 'chill 23', url: 'https://www.youtube.com/watch?v=ocfOBZSOwGc&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=72&pp=gAQBiAQB8AUB' },
{ name: 'chill 24', url: 'https://www.youtube.com/watch?v=caf7T4AubSE&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=71&pp=gAQBiAQB8AUB' },
{ name: 'chill 25', url: 'https://www.youtube.com/watch?v=ZhGWQuqE758&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=65&pp=gAQBiAQB8AUB' },
{ name: 'chill 26', url: 'https://www.youtube.com/watch?v=h3aWuBzimTk&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=66&pp=gAQBiAQB8AUB' },
{ name: 'chill 27', url: 'https://www.youtube.com/watch?v=RKF4Tn7P-MQ&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=63&pp=gAQBiAQB8AUB' },
{ name: 'chill 28', url: 'https://www.youtube.com/watch?v=7bLDnULTyaA&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=61&pp=gAQBiAQB8AUB' },
{ name: 'Run Free', url: 'https://www.youtube.com/watch?v=o3KXwe-7A-I&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=60&ab_channel=ATLAST' },
{ name: 'Shadow Of The Sun', url: 'https://www.youtube.com/watch?v=HsM9VucuCtw&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=59&ab_channel=AZURA' },
{ name: 'Cưới Thôi', url: 'https://www.youtube.com/watch?v=JOWqEpONn9w&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=58' },
{ name: 'Ấn Nút Nhớ Thả Giấc Mơ', url: 'https://www.youtube.com/watch?v=sSljdfttEl8&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=58&ab_channel=N26Music%E2%99%AA' },
{ name: 'huan BACK HOME', url: 'https://www.youtube.com/watch?v=8Tx36l5MGxg&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=55&pp=gAQBiAQB8AUB' },
{ name: 'WAY BACK HOME', url: 'https://www.youtube.com/watch?v=1kehqCLudyg&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=54&pp=gAQBiAQB8AUB' },
{ name: 'THAT GIRL', url: 'https://www.youtube.com/watch?v=OUtbNopS4xU&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=53&pp=gAQBiAQB8AUB' },
{ name: 'PRETTY GIRL', url: 'https://www.youtube.com/watch?v=ptIXwyxf7XQ&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=52&pp=gAQBiAQB8AUB' },
{ name: 'DREAM-SAVE ME', url: 'https://www.youtube.com/watch?v=rREz6DYDXng&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=48&pp=gAQBiAQB8AUB' },
{ name: 'ALAN- PLAY', url: 'https://www.youtube.com/watch?v=YQRHrco73g4&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=44&pp=gAQBiAQB8AUB' },
{ name: 'NHAC REVIEW PHIM', url: 'https://www.youtube.com/watch?v=ialVTirpQ5Q&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=43&pp=gAQBiAQB8AUB' },
{ name: 'LOVE IS GONE', url: 'https://www.youtube.com/watch?v=c6SZy7miyaY&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=42&pp=gAQBiAQB8AUB' },
{ name: 'MONODY', url: 'https://www.youtube.com/watch?v=1MZR0BEniIY&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=36&pp=gAQBiAQB8AUB' },
{ name: 'STEORT HEAL', url: 'https://www.youtube.com/watch?v=Y1pq2oLXbTQ&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=33&pp=gAQBiAQB8AUB' },
{ name: 'CLOSE THE SUN', url: 'https://www.youtube.com/watch?v=VyXm3GTdNf0' },
{ name: 'PSYCHO', url: 'https://www.youtube.com/watch?v=YvLRu5vcr68' },
{ name: 'Yami', url: 'https://www.youtube.com/watch?v=eTgxYFXP1hc&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=14&ab_channel=C%C3%A0Chua' },
{ name: 'RETUNR', url: 'https://www.youtube.com/watch?v=m4Hg_JMtJqI&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=15&pp=gAQBiAQB8AUB' },
{ name: 'TOP EDM', url: 'https://www.youtube.com/watch?v=xlTZywrfO7E&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=17&pp=gAQBiAQB8AUB' },
{ name: 'HIS THEME', url: 'https://www.youtube.com/watch?v=qOpsp9bJFP4&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=12&pp=gAQBiAQB8AUB' },
{ name: 'DEATH BED', url: 'https://www.youtube.com/watch?v=jJPMnTXl63E&list=PLB8Tk-JabtWed_6pE4H7yqctxbntnjwEe&index=10&pp=gAQBiAQB8AUB' }
];


let currentPlayingID = null;
let currentButton = null;

// Initialize music list
const musicItemContainer = document.createElement('div');
musicList.forEach(music => addMusicButton(music));
musicMenuContainer.appendChild(musicItemContainer);
document.body.appendChild(musicMenuContainer);

function addMusicButton(music) {
const musicItem = document.createElement('div');
musicItem.style.display = 'flex';
musicItem.style.alignItems = 'center';
musicItem.style.marginBottom = '10px';

const musicButton = createButton(music.name + ' (nghe thử xem)', 'rgba(0, 255, 255, 0.7)');

musicButton.addEventListener('click', () => {
playMusic(music, musicButton);
});

musicItem.appendChild(musicButton);
musicItemContainer.appendChild(musicItem);
}

// Play the selected music
function playMusic(music, musicButton) {
if (currentPlayingID && currentButton) {
player.stopVideo();
currentButton.textContent = currentButton.textContent.replace(' (Playing)', ' (Play)');
currentButton.style.color = '#fff'; // Reset color
}
const videoID = extractVideoID(music.url);
if (videoID) {
player.loadVideoById(videoID);
player.playVideo();
currentPlayingID = videoID;
currentButton = musicButton;
musicButton.textContent = music.name + ' (Chill nào)';
musicButton.style.color = 'lightgreen'; // Change color to light green when playing
}
}

// Create buttons for volume, speed, etc.
function createButton(text, bgColor) {
const button = document.createElement('button');
button.textContent = text;
button.style.width = '100%';
button.style.padding = '10px';
button.style.backgroundColor = bgColor;
button.style.color = '#fff';
button.style.border = 'none';
button.style.borderRadius = '5px';
button.style.cursor = 'pointer';
button.style.transition = 'background-color 0.3s';

button.addEventListener('mouseover', () => {
button.style.backgroundColor = 'rgba(255, 255, 255, 0.3)';
});

button.addEventListener('mouseout', () => {
button.style.backgroundColor = bgColor;
});

return button;
}

// Create a slider
function createSlider(min, max, defaultValue) {
const slider = document.createElement('input');
slider.type = 'range';
slider.min = min;
slider.max = max;
slider.value = defaultValue;
slider.style.width = '100%';
slider.style.marginBottom = '10px';
return slider;
}

// Create a select dropdown
function createSelect(options, suffix) {
const select = document.createElement('select');
options.forEach(option => {
const opt = document.createElement('option');
opt.value = option;
opt.textContent = `${option}${suffix}`;
select.appendChild(opt);
});
select.style.width = '100%';
return select;
}

// Create Pause/Play Button
const pauseButton = createButton('TẠM DỪNG', 'rgba(0, 255, 0, 0.7)');
pauseButton.addEventListener('click', () => {
if (currentPlayingID) {
const state = player.getPlayerState();
if (state === YT.PlayerState.PLAYING) {
player.pauseVideo();
pauseButton.textContent = 'BẮT ĐẦU '; // Change to play
} else {
player.playVideo();
pauseButton.textContent = 'TẠM DỪNG'; // Change to pause
}
}
});
musicMenuContainer.appendChild(pauseButton);

// Create Random Play Button
const randomPlayButton = createButton('ngẫu nhiên BÀI NHẠC', 'rgba(255, 0, 255, 0.7)');
randomPlayButton.addEventListener('click', () => {
const randomIndex = Math.floor(Math.random() * musicList.length);
playMusic(musicList[randomIndex], randomPlayButton);
});
musicMenuContainer.appendChild(randomPlayButton);

// Create Stop Music button
const stopButton = createButton('Dừng nhạc', 'rgba(255, 0, 0, 0.7)');
stopButton.addEventListener('click', () => {
if (currentPlayingID) {
player.stopVideo();
currentPlayingID = null;
if (currentButton) {
currentButton.textContent = currentButton.textContent.replace(' (Playing)', ' (Play)');
currentButton.style.color = '#fff'; // Reset color
}
}
});
musicMenuContainer.appendChild(stopButton);

// Create an invisible player container
const playerContainer = document.createElement('div');
playerContainer.id = 'musicPlayer';
playerContainer.style.position = 'fixed';
playerContainer.style.bottom = '0';
playerContainer.style.right = '0';
playerContainer.style.width = '0';
playerContainer.style.height = '0';
document.body.appendChild(playerContainer);

// Load YouTube IFrame Player API
let tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
let firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

// Create YouTube player
let player;
window.onYouTubeIframeAPIReady = function() {
player = new YT.Player('musicPlayer', {
height: '0',
width: '0',
videoId: '',
playerVars: { 'autoplay': 1, 'controls': 0, 'mute': 0 },
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
};

function onPlayerReady(event) {
console.log('YouTube Player is ready');
}

function onPlayerStateChange(event) {
if (event.data === YT.PlayerState.PLAYING) {
updateDurationDisplay();
setInterval(updateProgressBar, 1000);
}
}

// Update duration display and progress bar
function updateDurationDisplay() {
const duration = player.getDuration();
durationDisplay.textContent = `Duration: ${formatTime(player.getCurrentTime())} / ${formatTime(duration)}`;
progressBar.max = duration;
}

// Update progress bar
function updateProgressBar() {
if (player && currentPlayingID) {
progressBar.value = player.getCurrentTime();
updateDurationDisplay();
}
}

// Format time in MM:SS
function formatTime(seconds) {
const minutes = Math.floor(seconds / 60);
const secs = Math.floor(seconds % 60);
return `${minutes}:${secs < 10 ? '0' + secs : secs}`;
}

// Function to extract video ID from YouTube URL
function extractVideoID(url) {
const videoIDMatch = url.match(/(?:https?:\/\/)?(?:www\.)?(?:youtube\.com\/(?:[^\/\n\s]+\/\S+\/|(?:v|e(?:mbed)?)\/|\S*?[?&]v=)|youtu\.be\/)([a-zA-Z0-9_-]{11})/);
return videoIDMatch ? videoIDMatch[1] : null;
}

// Hide music menu with Esc key
document.addEventListener('keydown', (event) => {
if (event.key === 'Tab') {
musicMenuContainer.style.display = musicMenuContainer.style.display === 'block' ? 'none' : 'block';
}
if (event.key === ']') {
musicMenuContainer.style.display = musicMenuContainer.style.display === 'block' ? 'none' : 'block';
}
if (event.key === ' ') { // Space for play/pause
pauseButton.click();
}
if (event.key === '') { // '' key to stop
stopButton.click();
}
});

// Show the music menu initially (optional)
musicMenuContainer.style.display = 'block';

})();