Music Player

Displays a button labeled "Songs" that opens a window with play buttons for different songs. Each song can be played individually with pause, stop, and volume adjustment functionalities.

  1. // ==UserScript==
  2. // @name Music Player
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.1
  5. // @license Apache License 2.0
  6. // @description Displays a button labeled "Songs" that opens a window with play buttons for different songs. Each song can be played individually with pause, stop, and volume adjustment functionalities.
  7. // @match https://*/*
  8. // @match http://*/*
  9. // @icon https://cdn.dribbble.com/users/747620/screenshots/5451284/glitch_text.gif
  10. // @grant GM_addStyle
  11. // ==/UserScript==
  12.  
  13. (function() {
  14. 'use strict';
  15.  
  16. let musicPlayerWindow = null; // Track the music player window
  17.  
  18. // Create the button
  19. const songsButton = document.createElement('button');
  20. songsButton.textContent = 'Songs';
  21. songsButton.style.backgroundColor = 'black';
  22. songsButton.style.color = 'white';
  23. songsButton.style.position = 'fixed';
  24. songsButton.style.top = '32.5%';
  25. songsButton.style.left = '20px';
  26. songsButton.style.zIndex = '9999';
  27. songsButton.addEventListener('click', openMusicPlayer);
  28. document.body.appendChild(songsButton);
  29.  
  30. // Function to open the music player window
  31. function openMusicPlayer() {
  32. if (musicPlayerWindow && !musicPlayerWindow.closed) {
  33. musicPlayerWindow.focus(); // If window is already open, focus on it
  34. return;
  35. }
  36.  
  37. musicPlayerWindow = window.open('', '_blank', 'width=400,height=300,top=100,left=100');
  38. musicPlayerWindow.document.title = 'Playlist'; // Set window title to "Playlist"
  39. musicPlayerWindow.document.body.style.backgroundColor = 'black'; // Set background color to black
  40.  
  41. // Disable closing the window
  42. musicPlayerWindow.addEventListener('beforeunload', function(event) {
  43. event.preventDefault();
  44. event.returnValue = '';
  45. });
  46.  
  47. // Create a div for the title
  48. const titleDiv = document.createElement('div');
  49. titleDiv.textContent = 'Playlist';
  50. titleDiv.style.color = 'white'; // White text
  51. titleDiv.style.textShadow = '0 0 10px white, 0 0 20px white, 0 0 30px white, 0 0 40px white'; // Glowing effect
  52. titleDiv.style.fontSize = '36px'; // Larger font size
  53. titleDiv.style.fontWeight = 'bold'; // Bold font
  54. titleDiv.style.textAlign = 'center'; // Center-align text
  55. titleDiv.style.marginTop = '20px'; // Add margin from the top
  56. musicPlayerWindow.document.body.appendChild(titleDiv);
  57.  
  58. // Create audio elements for each song
  59. const songs = [
  60. { name: 'After Dark', url: 'https://drive.google.com/uc?export=download&id=1YBpNKw-Sl6wTclJ4mliXYaSrK1ldTr1P' },
  61. { name: 'Sonic.exe music', url: 'https://drive.google.com/uc?export=download&id=1Xx5r3d7LmDk8hVkSvf6-WMOnxJRvjO23' },
  62. { name: 'PATD Emperor\'s New Clothes', url: 'https://drive.google.com/uc?export=download&id=1Yew0YY5Iwdm4VbjjxkjWBI4qtpn-lR-I' },
  63. { name: 'PATD This Is Gospel', url: 'https://drive.google.com/uc?export=download&id=1YnG5miZNCQMu5S0BC5y6iMThVBz7Z26P' },
  64. { name: 'PATD Death of a Bachelor', url: 'https://drive.google.com/uc?export=download&id=1Ys1s4z-ClOnb8T3BDvnO-CE9_PouHHr1' },
  65. // RED songs
  66. { name: 'RED Part that\'s holding on', url: 'https://drive.google.com/uc?export=download&id=1Yz9bjVO98c2F-kIU3iUpRGRWbw7aZuFn' },
  67. { name: 'RED Falling sky', url: 'https://drive.google.com/uc?export=download&id=1ZDvKvs2PucLdsIkVFRl-KgXtZqn4zbtO' },
  68. { name: 'RED What you keep alive', url: 'https://drive.google.com/uc?export=download&id=1ZH22WharprXcc0gz4jJuK89W6-RTHCLo' },
  69. { name: 'RED Losing control', url: 'https://drive.google.com/uc?export=download&id=1ZJ7mtXWoDvQ1H1GDi7moNfsw18VhwEth' },
  70. { name: 'RED If I break', url: 'https://drive.google.com/uc?export=download&id=1ZOu0CpUygSRf4nSAZ3Lgj7gl0v4gr5Q-' },
  71. { name: 'RED Yours again', url: 'https://drive.google.com/uc?export=download&id=1ZRiAKf_Z9jI3o9fqU1fprMPNLUiyKPjj' },
  72. { name: 'RED ~Darkest Part~', url: 'https://drive.google.com/uc?export=download&id=1ZWXPIR422spsYN-zveVePC4DttoHldr6' },
  73. { name: 'RED Still alive', url: 'https://drive.google.com/uc?export=download&id=1ZZzVEtK97eFFz-eW2A65SuvpeFpuD5In' },
  74. { name: 'RED Coming apart', url: 'https://drive.google.com/uc?export=download&id=1Z_3b5QdrWjqkQXP4TJBVVAoJqtwBKds7' },
  75. { name: 'RED As you go', url: 'https://drive.google.com/uc?export=download&id=1ZbJRxKSys2_4_S985XG6K0K6xyf2Dof1' },
  76. { name: 'RED Hold me now', url: 'https://drive.google.com/uc?export=download&id=1ZdcjjsUMDSydQBzr1YD7JPxaY5ryumZ9' },
  77. { name: 'RED Death of me', url: 'https://drive.google.com/uc?export=download&id=1Zf18ekSaxJ6shtmMxY0-QSj6YlL0GNxA' },
  78. { name: 'RED Fight to forget', url: 'https://drive.google.com/uc?export=download&id=1ZgzE8BpU7SRFzDKRchfMlzzBilUNQNMV' },
  79. // End of RED songs
  80. { name: 'Sub Urban CRADLES', url: 'https://drive.google.com/uc?export=download&id=1Zit2CuvdwRrBK4rqjlIu9QwgCESEAaXG' },
  81. { name: 'SWEET SWEET VICTORY', url: 'https://drive.google.com/uc?export=download&id=1Zj4L6Red0a3sTAaQ0_X1QqXP3TwhdvCW' },
  82. { name: 'Astronomia', url: 'https://drive.google.com/uc?export=download&id=1Znxa2Jz7nEigFY2U1XOmXm0czSsWWcgA' },
  83. { name: 'Afrojack Ten Feet Tall', url: 'https://drive.google.com/uc?export=download&id=1Zrz9Z4qXbLFDlXU2SdaN1k3O15TrqDi-' },
  84. { name: 'FOB The Phoenix', url: 'https://drive.google.com/uc?export=download&id=1ZyxjFK4sGg_NYbNHOgnpNukHTUKkFlNU' },
  85. { name: 'FOB Light \'Em Up', url: 'https://drive.google.com/uc?export=download&id=1ZyzJJPWRqDYr3Izp81jWZfPxAVCU8x7f' },
  86. { name: 'FOB Uma Thurman', url: 'https://drive.google.com/uc?export=download&id=1ZzEFkeX7nBrN2loIjtN4idiVPHQHCHp3' },
  87. { name: 'FOB Centuries', url: 'https://drive.google.com/uc?export=download&id=1_0OfS0HfG5RkZCvmj48DzK92sQHFf2Gn' },
  88. { name: 'FOB Irresistible', url: 'https://drive.google.com/uc?export=download&id=1_0wu35Giy_94sT5CBU4nbsWv-YTVMp5Z' },
  89. { name: 'FOB Immortals', url: 'https://drive.google.com/uc?export=download&id=1_6OcWd4YqPh3o-CSkxpnJ1ErusfIvRSW' },
  90. { name: 'FOB Alone Together', url: 'https://drive.google.com/uc?export=download&id=1_AFCk-GYJXgafPUyJPI5q5_rK3alQ3DV' },
  91. { name: '24KGoldn Mood', url: 'https://drive.google.com/uc?export=download&id=1_FGlouBMJAZ5sRKMGrabYIP-baGeTwgZ'},
  92. { name: 'FRIENDS Marshmello & Anne-Marie', url: 'https://drive.google.com/uc?export=download&id=1_JBfwobslMwFApDylqh6_1M6t4ixYbb5' },
  93. { name: 'Feel This Moment Pitbull', url: 'https://drive.google.com/uc?export=download&id=1_RmyXuwWGc5G0-J20QwE1xopbta2_zep' },
  94. { name: 'Without me - Halsey', url: 'https://drive.google.com/uc?export=download&id=1_cA5-7LaGMFwXjsp-SmHtqyNuaXsTTAn' },
  95. { name: 'Party Rock', url: 'https://drive.google.com/uc?export=download&id=1_d-Zb7TACWKVCPxplOjP867ObGFbgXXr' },
  96. { name: 'Come & go - marsh. x juice.', url: 'https://drive.google.com/uc?export=download&id=1_dLkstzsbFWTlse5Z3EGzUr07YvNF5k9' },
  97. { name: 'Work - Apashe', url: 'https://drive.google.com/uc?export=download&id=1_daovBcjhYa6bMzCvO3IGqN1p0FME3l_' },
  98. { name: 'Mr Kitty After Dark TrackGonEat Remix', url: 'https://drive.google.com/uc?export=download&id=1_hztVjtLM_XnJJFkAKi3slQCrkxJn92Z' },
  99. { name: 'DJ Tiesto Remix KRAKEN REMIX', url: 'https://drive.google.com/uc?export=download&id=1_l20NFJIR7WhyFvOeGuxuTvVqfax_1sm' },
  100. { name: 'No Hands - Roscoe Dash', url: 'https://drive.google.com/uc?export=download&id=1_ta1L0DhdRMJhj0avlZd48e0qBgqAVWE' },
  101. { name: 'Runaway (U and I)', url: 'https://drive.google.com/ucexport=download&id=1aA5VXujpOTX_glzkctaGUyYo2JsuWhX0' },
  102. { name: 'Scared Of The Dark (MM)', url: 'https://drive.google.com/uc?export=download&id=1_v8vERcj3KL7nWwoMZTrkZ7q6YeNfrOE' },
  103. { name: 'Start A Riot (MM)', url: 'https://drive.google.com/uc?export=download&id=1_wCG_u-Rsux4TI9oLbNE-N66jxUteEal' },
  104. { name: 'What\'s up Danger (MM)', url: 'https://drive.google.com/uc?export=download&id=1a-f7KjMsQ7Tp7OTy6dPspe1aGA7Dv2Ik' },
  105. { name: 'Elevate (MM)', url: 'https://drive.google.com/uc?export=download&id=1a53C0Lb6p5wjND4PiyUbVi0-CzZ7YU5E' },
  106. { name: 'Galantis Runaway', url: 'https://drive.google.com/uc?export=download&id=1aA5VXujpOTX_glzkctaGUyYo2JsuWhX0' },
  107. { name: 'BT Rusted from the rain', url: 'https://drive.google.com/uc?export=download&id=1aB-I7gPgLxcR1Q5LCQzoK3CLwdkhXPED' },
  108. { name: 'BT Try Honesty', url: 'https://drive.google.com/uc?export=download&id=1aBnawTgK_Lg19zmW-Bju5IPwLoY_ZfWB' },
  109. { name: 'BT Fallen Leaves', url: 'https://drive.google.com/uc?export=download&id=1aBu9fBeSnDLTY5xwME__D0QnS4eoOyPZ' },
  110. { name: 'BT Devil in a midnight mass', url: 'https://drive.google.com/uc?export=download&id=1aESu4iUvwg9lqQ5JQ2n5RJFGW9uwAfGq' },
  111. { name: 'BT Devil on my shoulder', url: 'https://drive.google.com/uc?export=download&id=1aFOsoDXSV_5zU0vFObU4jlpJ0LuZovlG' },
  112. { name: 'GS Sarcasm', url: 'https://drive.google.com/uc?export=download&id=1aOnfPaeiTc5XeIFonlKd381-RuMkorZQ' },
  113. { name: 'GS Keep Myself Alive', url: 'https://drive.google.com/uc?export=download&id=1aQ0lTuY3wiZlPNeVfvUxf40yt3Kwb7hq' },
  114. { name: 'GS Don\' you dare forget the sun', url: 'https://drive.google.com/uc?export=download&id=1aR-z5y1srqYUV3RBHJvW1De9nEzZpwsb' },
  115. { name: 'GS Problematic', url: 'https://drive.google.com/uc?export=download&id=1aTmv2ExwMr3vsVGv_9G2ynTuiAmoMEZ0' },
  116. { name: 'GS Built for blame', url: 'https://drive.google.com/uc?export=download&id=1aUrABLtmdf7AG_BIDeLY6JfXURhWa5Ti' },
  117. { name: 'GS Buried Alive', url: 'https://drive.google.com/uc?export=download&id=1aWj-KvLyMmI-H8LBc4UuYEIRXl9nhpyR' },
  118. { name: 'GS Suffer', url: 'https://drive.google.com/uc?export=download&id=1aX1-Va3hpzwC3o0Zi-JQWBS9WKEkBReS' },
  119. { name: 'GS Under My Skin', url: 'https://drive.google.com/uc?export=download&id=1aZXuSw-n9RnBQDpzJp8K9AWJ1ZtvzLH2' },
  120. { name: 'GS Relax, Relapse', url: 'https://drive.google.com/uc?export=download&id=1ag6CBX_PCjB15pfqX0dVRtr17DqnV5tJ' },
  121. { name: 'GS Second Guessing', url: 'https://drive.google.com/uc?export=download&id=1ahC6dfouvNPnC9XNgC3Lv9zwIeD8nXEo' },
  122. { name: 'GS Voodoo', url: 'https://drive.google.com/uc?export=download&id=1at0eLRyuSXOFWKYN6FmYhNVcmKMLgbHL' },
  123. { name: 'GS The Dead Days', url: 'https://drive.google.com/uc?export=download&id=1aulA1xem_c1b-UihGxcKP01FbVWHvNCs' },
  124. { name: 'GS Silence', url: 'https://drive.google.com/uc?export=download&id=1avA0g-2Lyz1O7Jto5HArIVZ7i9C68xO9' },
  125. { name: 'GS Dance with the dead', url: 'https://drive.google.com/uc?export=download&id=1axbGe4pjLB9XqrVjbWczCWnVscAFJ8Tp' },
  126. { name: 'GS Goodbye Soul', url: 'https://drive.google.com/uc?export=download&id=1b-BIOaCcEA6bPpPfu-s_O3CKVaSGTJAf' },
  127. { name: 'Silva Hound HAZBIN HOTEL - Addict', url: 'https://drive.google.com/uc?export=download&id=1b0rkk0RQa2UKdrlCRX3Y6Yn0ilJIliSr' },
  128. { name: 'PLAY WITH ME (Sonic.EXE)', url: 'https://drive.google.com/uc?export=download&id=1b1Kj5Cfdj9ncM3MD944SG2VbTgapi5la' },
  129. { name: 'Dark Auras (slowed reverb)', url: 'https://drive.google.com/uc?export=download&id=1b4PMV5tBBVZ4jRJfJM04gh2FhotPDIx9' },
  130. { name: 'TLT FNAF this comes from inside', url: 'https://drive.google.com/uc?export=download&id=1bAj3BvM5dBl5YgY90akVHfYwtUAPpWbN' },
  131. { name: 'CG5 Sleep Well', url: 'https://drive.google.com/uc?export=download&id=1bEdEU5wv70Mn3Vp0Yhz9CLuFa15bhuDr' },
  132. { name: 'Wide Awake ', url: 'https://drive.google.com/uc?export=download&id=1bEx7y2vlAESN8_mVVLU-n9icvUJt2A9V' },
  133. { name: 'I Can\'t fix you apAngryPig', url: 'https://drive.google.com/uc?export=download&id=1bHiTpsVFeI4MaZrn3V2IQs-no-0wK-wN' },
  134. { name: 'CG5 Stuck Inside Green Skeleton Remix', url: 'https://drive.google.com/uc?export=download&id=1bJ0GQlMveFaF42jr4n5enxWEIBq3tsXO' },
  135. { name: 'CG5 Skibidi Toilet', url: 'https://drive.google.com/uc?export=download&id=1bKbltVDTRW3DiksAd7hc22bN9mUl69Ws' },
  136. { name: 'Undertale MEGALOVANIA', url: 'https://drive.google.com/uc?export=download&id=1bQwg81qwWGiqf3k0XyDLCwIchVtnUVSe' },
  137. { name: 'ULTRA NECROZMA METAL COVER', url: 'https://drive.google.com/uc?export=download&id=1bSj9SebtRW_e2hW6kPSBqA_4_JYep8dA' },
  138. { name: 'Triple Trouble METAL COVER', url: 'https://drive.google.com/uc?export=download&id=1bTftX_1nGemNXKwHBQwdokUiHscj3Wui' },
  139. { name: 'Undefeatable (Sonic Frontiers) METAL COVER', url: 'https://drive.google.com/uc?export=download&id=1bVAdaZs5jFKASYvP8lgLAm5vkaLHONcz' },
  140. { name: 'DaGames Build Our Machine Metal Cover', url: 'https://drive.google.com/uc?export=download&id=1bVBdjMlWYIm6HQFfH0u29jXmlAOe5-D9' },
  141. { name: 'Discharge Metal Cover', url: 'https://drive.google.com/uc?export=download&id=1bYthKz-OKsYO5WWNTs-X34IfeGR8xERl' },
  142. { name: 'DHeusta Dark Deception TipToe', url: 'https://drive.google.com/uc?export=download&id=1b_z1DyiniLFxoeddgZ6AifYY6UKXcFmz' },
  143. { name: 'DHeusta FNAF Into the pit', url: 'https://drive.google.com/uc?export=download&id=1bbLBU06psNC7_kF3ckYZUqYrI3aVg3GR' },
  144. { name: 'Into the pit remix cover', url: 'https://drive.google.com/uc?export=download&id=1bgQMKshtZ1MPbn0gFoNIajOKXT5H1DsJ' },
  145. { name: 'TLT It\'s been so long', url: 'https://drive.google.com/uc?export=download&id=1biBgd_6Gg3_f2v3k-kaIeV5OxWPoYl7S' },
  146. { name: 'TLT FNAF Original Song', url: 'https://drive.google.com/uc?export=download&id=1bq4f9Zl9nKpEwe5ew2IxK0SLFV81zVNB' },
  147. { name: 'CG5 Phantom Dancing', url: 'https://drive.google.com/uc?export=download&id=1btLUUS_9qf-N-44JgYu3Jg94Z_m0Mepu' },
  148. { name: 'CG5 Lyin 2 Me', url: 'https://drive.google.com/uc?export=download&id=1bzJJZpfBFWWMs1Z1xc_quo2Q69-0XhHt' },
  149. { name: 'CG5 FNAF 4 remix ft. TLT', url: 'https://drive.google.com/uc?export=download&id=1c-bQdphYrR1Lz2kVLQrKpONAy9Mx7qP3' },
  150. { name: 'CG5 good to be alive', url: 'https://drive.google.com/uc?export=download&id=1c0bnZ7oeCjWmbj64IuQ1-CbTXP28YJcV' },
  151. { name: 'CG5 SHow Yourself', url: 'https://drive.google.com/uc?export=download&id=1c1C3ae25I4Jzt1Wir5axsur_AtJk4Bdi' },
  152. { name: 'CG5 Every Door', url: 'https://drive.google.com/uc?export=download&id=1c3uH7RPqIxYHW3hNtIMcg1echMcAxZXh' },
  153. { name: 'CG5 Poison Blooms', url: 'https://drive.google.com/uc?export=download&id=1cCXgU6PuRPYQgeKVSbwQ8K6J6b1xVxdc' },
  154. { name: 'CG5 Toon Catasrophes', url: 'https://drive.google.com/uc?export=download&id=1cFNZmqVtBenDnREf-8bRPDIR5ASOW5RU' },
  155. { name: 'CG5 He\'s the cartoon cat', url: 'https://drive.google.com/uc?export=download&id=1cF_Pu3I9q9gZRNWqUiIen00xXqGXK_Aj' },
  156. { name: 'CG5 Let me through', url: 'https://drive.google.com/uc?export=download&id=1cHf5sVf2lT2QdoIeNobJYTViFDuN111h' },
  157. { name: 'CG5 Mommy\'s here', url: 'https://drive.google.com/uc?export=download&id=1cL6W_NuJ9weuS_m1znfIoPvM4vA9IJmW' },
  158. { name: 'CG5 Bred To Be Bad', url: 'https://drive.google.com/uc?export=download&id=1cP4P4I8ghD6rJHo-EatRTBDz8QPOg3ru' },
  159. { name: 'CG5 MINION', url: 'https://drive.google.com/uc?export=download&id=1cSGVb5lP0GupNuCSmyH9hkv0-qjvm30Z' },
  160. { name: 'CG5 Glamorous', url: 'https://drive.google.com/uc?export=download&id=1cTbzblrw9SlgAvz6EC32sgzBbKqXaG6U' },
  161. { name: 'CG5 Pied Piper', url: 'https://drive.google.com/uc?export=download&id=1cXvwko-gu32Q1CYTgnYfZ6r4GZ8n9-QD' },
  162. { name: 'CG5 IDONTUNDERSTAND', url: 'https://drive.google.com/uc?export=download&id=1ccQJhbD9THua0Bilb6aFSeoJNcmmeATL' },
  163. { name: 'RG Memory', url: 'https://drive.google.com/uc?export=download&id=1coyyN9Aiif48wDN6KCnU3ecLFAMpHAIQ' },
  164. { name: 'RG TIME Stranger Things', url: 'https://drive.google.com/uc?export=download&id=1cp5Broybctm9EBFkPUgMfQ6PUd1vVGvv' },
  165. { name: 'RG PURPLE', url: 'https://drive.google.com/uc?export=download&id=1czQ3mgculd1E68ZH_sNa5fIKNEIeojYa' },
  166. { name: 'RG ORANGE', url: 'https://drive.google.com/uc?export=download&id=1d-HLXtZLLeJPT88_qDUKdk7yXZRIB51X' },
  167. { name: 'SOLO "Let me solo her"', url: 'https://drive.google.com/uc?export=download&id=1d-fOdQuSIY7kaqERHkREgkqbltdz0Ggi' },
  168. { name: 'JT Music Monsters FNAF', url: 'https://drive.google.com/uc?export=download&id=1d38GNGDOIoJo_Q9ynZnNUEMd9y1RCAGd' },
  169. { name: 'JT Music AMANDA THE ADVENTURER', url: 'https://drive.google.com/uc?export=download&id=1d4EWchBidy8ro2yKVlNEfyY5vW7fBM32' },
  170. { name: 'Shwab Straight Up', url: 'https://drive.google.com/uc?export=download&id=1d6FNz0Z1DsRkf_BCclsBuW1DPe_iTIHt' },
  171. { name: 'Shwab Untouchable', url: 'https://drive.google.com/uc?export=download&id=1d8HMFWXn7i2JVcJkFjOs-Q_TeDqxUrSj' },
  172. { name: 'Shwab I Want Violence', url: 'https://drive.google.com/uc?export=download&id=1dB5F5itvINrbSevUvCo_ZiH_pNi4YPZr' },
  173. { name: 'Dizzy Sacrifices', url: 'https://drive.google.com/uc?export=download&id=1dE5KqUjHKyGJGMP5ZX9CAhzGJgFHhKNi' },
  174. { name: 'Dizzy Slide', url: 'https://drive.google.com/uc?export=download&id=1dELTWli6fbbIfw_ZIzl4po_KCJJoaU6N' },
  175. { name: 'Dizzy Sharingan', url: 'https://drive.google.com/uc?export=download&id=1dI30ujDQxLhoEE7iivFdCabUuEmA-wyC' },
  176. { name: 'Dizzy In Paradis', url: 'https://drive.google.com/uc?export=download&id=1dR3QZu504DOPasOzxOSWKlsela3Y-bmW' },
  177. { name: 'Dizzy No Way Home', url: 'https://drive.google.com/uc?export=download&id=1dXC8YdV-9i-kh_ksu9EYEZBapfFiL4mX' },
  178. { name: 'Dizzy I Don\'t wanna be alone', url: 'https://drive.google.com/uc?export=download&id=1dZ0u61QOku71NeheUyn1Bjniz9HLS-JL' },
  179. { name: 'Dizzy Gojo_Flow', url: 'https://drive.google.com/uc?export=download&id=1dZRWWnK6-p69HSypAqpUfY3XPgb5vLED' },
  180. { name: 'Dizzy Invincible', url: 'https://drive.google.com/uc?export=download&id=1dfIna9mziktBvVT6vn013x5rjawG-AaA' },
  181. { name: 'Dizzy Fire In My Heart', url: 'https://drive.google.com/uc?export=download&id=1dfUGfl380Z5oqY5-ruJIatpC_3Je2e9h' },
  182. { name: 'Dizzy Cold Flame', url: 'https://drive.google.com/uc?export=download&id=1diXpbQla5M1jtU6alIGBkCFZzcIVTz__' },
  183. { name: 'Dizzy Off My Mind', url: 'https://drive.google.com/uc?export=download&id=1dpRJlXZL4AhgqGYJrr5fa8ni8gc8p914' },
  184. { name: 'Dizzy Royalty', url: 'https://drive.google.com/uc?export=download&id=1dsrnc_taRx6ElVOBG_q6bOrRzq-4Tlh0' },
  185. { name: 'Dizzy Crazy In Love', url: 'https://drive.google.com/uc?export=download&id=1dv1xRdVces-jUd6veWvSTjhZNhG0v65R' },
  186. { name: 'Dizzy KAKAROT', url: 'https://drive.google.com/uc?export=download&id=1dv8GNFKUCiX3wvAL3A5m0jCnnG7Ro3_-' },
  187. { name: 'Dizzy Redemption', url: 'https://drive.google.com/uc?export=download&id=1e1NFhigDWWgNmanT8WbSQw-_2Gq1UYlg' },
  188. { name: 'Dizzy Itachi', url: 'https://drive.google.com/uc?export=download&id=1e779Z3uNMxkxFHi_I22kj7soqbhpOVmW' },
  189. { name: 'Dizzy ULTRA INSTINCT FREESTYLE', ur: 'https://drive.google.com/uc?export=download&id=1e7xNPDO744vfyaiq3NgtIc28NG_G-FuN' },
  190. { name: 'Dizzy Decay', url: 'https://drive.google.com/uc?export=download&id=1e843is3kI8t4_XZUezXmLWJ1Yai2be-m' },
  191. { name: 'Dizzy Feeling Like', url: 'https://drive.google.com/uc?export=download&id=1e9E4Tgtg9IzkG0TkWs1WB_vhwV8bcdmX' },
  192. { name: 'Dizzy DEATH MATCH', url: 'https://drive.google.com/uc?export=download&id=1eISHh4w9tH50PnFwraqBkgmMEdUQvR-_' },
  193. { name: 'Dizzy MARINES CYPHER', url: 'https://drive.google.com/uc?export=download&id=1eLoGVY6jLnjAwWgKp2c-33GsguaNUrMR' },
  194. { name: 'Dizzy Shooting Star', url: 'https://drive.google.com/uc?export=download&id=1eM4__j6ZLT6xNqqCZmllRtOGme2cXT_F' },
  195. { name: 'Dizzy Eclipse', url: 'https://drive.google.com/uc?export=download&id=1eMUjWlPMcw-YECp4am-_zmplJ1vArJ7K' },
  196. { name: 'Dizzy Arch-Villain', url: 'https://drive.google.com/uc?export=download&id=1eO2uq3mRJsJLlUiw6WHQCc6LEGD4N3Ls' },
  197. { name: 'Dizzy Not Mine', url: 'https://drive.google.com/uc?export=download&id=1ePe2NeWKL0Qljt5b9uATqm1HPDTtSdwr' },
  198. { name: 'Dizzy Liberation', url: 'https://drive.google.com/uc?export=download&id=1eQzdFLgOWMso-7N_Pm2o0hoJe2CMegqx' },
  199. { name: 'Dizzy Reckless', url: 'https://drive.google.com/uc?export=download&id=1eTSibM7cd9mPMKiqQYV9zCYo3zF_quAP' },
  200. { name: 'Dizzy RATIO', url: 'https://drive.google.com/uc?export=download&id=1eh8IncOq3HoO5OPQVTT5zYEksCDXlWdz' },
  201. { name: 'Dizzy Strongest', url: 'https://drive.google.com/uc?export=download&id=1ehew4C2VCU3wUOVNI9iQYCrdvR8xBEGa' },
  202. { name: 'CAM STEADY POKEMON VILLAIN CYPHER', url: 'https://drive.google.com/uc?export=download&id=1ei3td2DGLNYpqSeO3okfcuNL7MKmzuAA' },
  203. { name: 'CAM STEADY POKEMON TRAINER CYPHER', url: 'https://drive.google.com/uc?export=download&id=1ejhToulOvkSfk6nR9OGMMTLmA6UKX4Zj' },
  204. { name: 'DPS King Me', url: 'https://drive.google.com/uc?export=download&id=1et30IuEYpNPnkqXpTLN8B9q34GDdW1eh' },
  205. { name: 'DPS MALEVOLENT', url: 'https://drive.google.com/uc?export=download&id=1eyaj_MS9ICvcsvrtL5LLNcM9fyQEYOZ0' },
  206. { name: 'DPS Fallen', url: 'https://drive.google.com/uc?export=download&id=1f51mBd2ApnQPHvgF_WJMw7OA6rQgRjCK' },
  207. { name: 'DPS Sins Of The Father (invincible)', url: 'https://drive.google.com/uc?export=download&id=1fE1NLQ-fagqNECLyq873QpKD7OWAgXvF' },
  208. { name: 'DPS Invincible (Omni Man)', url: 'https://drive.google.com/uc?export=download&id=1fMtq9bg_nfR8gTlIIXCtrgVTJE805N04' },
  209. { name: 'DPS Final Laugh', url: 'https://drive.google.com/uc?export=download&id=1fPRy5sMOKJlUoXFftKRXwu3rW2JgF4Pe' },
  210. { name: 'DPS Scary Hours (Akaza Rap)', url: 'https://drive.google.com/uc?export=download&id=1fP_tqWepLdsgsdp17e_jcZUj0jVrNISR' },
  211. { name: 'DPS REBEL (Bakugo)', url: 'https://drive.google.com/uc?export=download&id=1fPlYkxgcA-jyS5smZqS1VCAgtdfKO3Ea' },
  212. { name: 'DPS Hold Up', url: 'https://drive.google.com/uc?export=download&id=1fS8LblnHxQrA2gNVdgjxBkYMQ2yZNqWo' },
  213. { name: 'DPS L Rap', url: 'https://drive.google.com/uc?export=download&id=1fSsU4D6FbSgCCt8jvPSZY1Nimbls6s8r' },
  214. { name: 'DPS Titans', url: 'https://drive.google.com/uc?export=download&id=1fUvootRArS1PL1rjEqIj753wITat-Cvs' },
  215. { name: 'DPS Omni King (Zeno)', url: 'https://drive.google.com/uc?export=download&id=1fVIp12OB39pXvDqyaYYBQvkdBv0JZYMw' },
  216. { name: 'DPS Split (Moon Knight)', url: 'https://drive.google.com/uc?export=download&id=1fWCTkgrIKBVZ-pL4Bh182JlhGrH94Ynr' },
  217. { name: 'DPS Grave', url: 'https://drive.google.com/uc?export=download&id=1fWQ_0yMEir4EWytcxu8w10ohM7Wxb6tR' },
  218. { name: 'DPS The Rumbling', url: 'https://drive.google.com/uc?export=download&id=1fYhGCWYGtPaULCtYxbP5NoFLguS7Yk_Z' },
  219. { name: 'DPS Black Air Force Energy', url: 'https://drive.google.com/uc?export=download&id=1fdhe2o5Rkp5ociRBfaV6Nx9R1xD_4-Ox' },
  220. { name: 'DPS Over The Top', url: 'https://drive.google.com/uc?export=download&id=1fjknrupmyfdMJyZ3vP50tlUtcPQOvABR' },
  221. { name: 'DPS Triple Threat', url: 'https://drive.google.com/uc?export=download&id=1foe5L7d7a-YJUaaQe7I80IWBdNdVqPdQ' },
  222. { name: 'DPS Squid Games (Gganbu)', url: 'https://drive.google.com/uc?export=download&id=1fvdgFpDOCy8zextdsAB_zX7euPjjLAwl' },
  223. { name: 'DPS Forgive Me', url: 'https://drive.google.com/uc?export=download&id=1fx4dNcu08dfQ9qy08EfWphBhrDftGSjY' },
  224. { name: 'DPS Blood Curdle', url: 'https://drive.google.com/uc?export=download&id=1g9LrTw4RWMbqcOS0VIxObViPu66_Kqtr' },
  225. { name: 'DPS Cowboy Bebop (Space cowboy)', url: 'https://drive.google.com/uc?export=download&id=1gCqWKIp75VMozuW1w4CvU1ujIG3ruM0K' },
  226. { name: 'DPS I Am Him', url: 'https://drive.google.com/uc?export=download&id=1gIGtspADKN6RNeoOAKcYpZpO_56wCzhN' },
  227. { name: 'DPS tHe GoAt', url: 'https://drive.google.com/uc?export=download&id=1gJ7q8BT9_mf6zG5GQAeTLBkvCxkq78GD' },
  228. { name: 'DPS Cyber Psycho', url: 'https://drive.google.com/uc?export=download&id=1gKT72r52KKxbRMRt-doIp5jUsHhFPrnQ' },
  229. { name: 'DPS Menace', url: 'https://drive.google.com/uc?export=download&id=1gKn0NpBxfl1phK_I17QO_wcsbwW8rf3I' },
  230. { name: 'DPS Legend Remix', url: 'https://drive.google.com/uc?export=download&id=1gLvJAFPAv87JFWwxHEgNnktl_jvPGILb' },
  231. { name: 'DPS SaVaGe', url: 'https://drive.google.com/uc?export=download&id=1gNjUI5eFZzeb9oegWJU-vceRasEfAC27' },
  232. { name: 'DPS Ragnarok (Record of Ragnorok', url: 'https://drive.google.com/uc?export=download&id=1gO8miayxpAA7jprii1htx1oyu_oKT03L' },
  233. { name: 'DPS DEATH', url: 'https://drive.google.com/uc?export=download&id=1gUyxLIAHzNT4DEZD6N0f_4FzhysJbOWV' },
  234. { name: 'DPS London Bridge', url: 'https://drive.google.com/uc?export=download&id=1gV-trhW9BUIAt5JRpQAvUFvmNwijY_2F' },
  235. { name: 'DPS I\'m Better (Homelander)', url: 'https://drive.google.com/uc?export=download&id=1gXWm_Sttk8EBKiENhpK4PkQyYK-RBK5B' },
  236. { name: 'Let Him Cook (Sanji)', url: 'https://drive.google.com/uc?export=download&id=1gYkpxXkJsWa-pt4p5AcUF4RC6YFWyoI6' },
  237. { name: 'DPS All The Smoke', url: 'https://drive.google.com/uc?export=download&id=1gfHVseQvSPxTJB3dujLwH6IuqR1ApseT' },
  238. { name: 'DPS Your End', url: 'https://drive.google.com/uc?export=download&id=1gfwUEP9IC7k9pNvzzq4KvyunOubyfRY9' },
  239. { name: 'DPS Liberation', url: 'https://drive.google.com/uc?export=download&id=1gj1hlhfBJsAl2UWmdIjUECPt2awsStSh' },
  240. { name: 'DPS GOATED (Buddha)', url: 'https://drive.google.com/uc?export=download&id=1gjTCE7mF6bg2Q5h-bJskLdBgWENIGt4o' },
  241. { name: 'DPS Michael Myers (Halloween Horror Dis', url: 'https://drive.google.com/uc?export=download&id=1gmaeNBPNWe0rLDgX9jHbhU3RKGZARM-9' },
  242. { name: 'DPS Hoodlum', url: 'https://drive.google.com/uc?export=download&id=1gnWOPatGGxBBoBzggLlt_C8AOvuwD5tP' },
  243. { name: 'DPS Eye_For_An_Eye', url: 'https://drive.google.com/uc?export=download&id=1gtl-yUXLvse4fTKrfXHPkGPIB83nKVVW' },
  244. { name: 'DPS Transfiguration', url: 'https://drive.google.com/uc?export=download&id=1h1vENw1NgardyKLXwNpgT4n7W8RdIobX' },
  245. { name: 'CAM STEADY DROP DEAD!', url: 'https://drive.google.com/uc?export=download&id=1h4EtUjVayaeAREAP09qAXARjCdhXz0At' },
  246. { name: 'CAM STEADY MEWTWO!', url: 'https://drive.google.com/uc?export=download&id=1hKw9oKuLoini2GK5r1V96TvSrs-wC5L4' },
  247. { name: 'CAM STEADY YOU CANNOT BREAK ME!', url: 'https://drive.google.com/uc?export=download&id=1hNm4trSyq5XEc217U7RWHPgy9I49XDWp' },
  248. { name: 'CAM STEADY GOD COMPLEX!', url: 'https://drive.google.com/uc?export=download&id=1hXzrQc2ObDsi-ldsUBcc9DJjHNuUq1MI' }
  249. ];
  250.  
  251. const audioElements = [];
  252. let currentlyPlayingIndex = -1; // Initialize to no song playing
  253. songs.forEach(song => {
  254. const audio = new Audio(song.url);
  255. audio.volume = 0.5; // Set default volume to 50%
  256. audioElements.push(audio);
  257. });
  258.  
  259. // Create a div for controls
  260. const controlsDiv = document.createElement('div');
  261. controlsDiv.style.textAlign = 'center'; // Center-align controls
  262. controlsDiv.style.marginTop = '20px'; // Add margin from the top for controls
  263.  
  264. // Create buttons for each song
  265. songs.forEach((song, index) => {
  266. const playButton = document.createElement('button');
  267. playButton.textContent = song.name;
  268. playButton.addEventListener('click', () => playSong(index));
  269. playButton.style.backgroundColor = '#222'; // Dark grey background
  270. playButton.style.color = 'white'; // White text
  271. playButton.style.textShadow = '0 0 10px white, 0 0 20px white, 0 0 30px white, 0 0 40px white'; // Glowing effect
  272. playButton.style.border = 'none';
  273. playButton.style.padding = '10px';
  274. playButton.style.margin = '5px';
  275. playButton.style.width = '90%'; // Make buttons fill width of the window
  276. playButton.style.display = 'block';
  277. playButton.style.marginLeft = 'auto';
  278. playButton.style.marginRight = 'auto';
  279. controlsDiv.appendChild(playButton);
  280.  
  281. const separator = document.createElement('div');
  282. separator.style.height = '2px'; // Height of separator
  283. separator.style.backgroundColor = 'white'; // White color for separator
  284. separator.style.margin = '5px 0'; // Margin top and bottom to separate buttons
  285. controlsDiv.appendChild(separator);
  286. });
  287.  
  288. // Create pause, stop, and volume controls
  289. const pauseButton = document.createElement('button');
  290. pauseButton.textContent = 'Pause';
  291. pauseButton.addEventListener('click', togglePause);
  292. pauseButton.style.backgroundColor = '#222'; // Dark grey background
  293. pauseButton.style.color = 'white'; // White text
  294. pauseButton.style.textShadow = '0 0 10px white, 0 0 20px white, 0 0 30px white, 0 0 40px white'; // Glowing effect
  295. pauseButton.style.border = 'none';
  296. pauseButton.style.padding = '10px';
  297. pauseButton.style.margin = '5px';
  298. pauseButton.style.width = '90%'; // Make buttons fill width of the window
  299. pauseButton.style.display = 'block';
  300. pauseButton.style.marginLeft = 'auto';
  301. pauseButton.style.marginRight = 'auto';
  302. controlsDiv.appendChild(pauseButton);
  303.  
  304. const stopButton = document.createElement('button');
  305. stopButton.textContent = 'Stop';
  306. stopButton.addEventListener('click', stopAllSongs);
  307. stopButton.style.backgroundColor = '#222'; // Dark grey background
  308. stopButton.style.color = 'white'; // White text
  309. stopButton.style.textShadow = '0 0 10px white, 0 0 20px white, 0 0 30px white, 0 0 40px white'; // Glowing effect
  310. stopButton.style.border = 'none';
  311. stopButton.style.padding = '10px';
  312. stopButton.style.margin = '5px';
  313. stopButton.style.width = '90%'; // Make buttons fill width of the window
  314. stopButton.style.display = 'block';
  315. stopButton.style.marginLeft = 'auto';
  316. stopButton.style.marginRight = 'auto';
  317. controlsDiv.appendChild(stopButton);
  318.  
  319. const volumeSlider = document.createElement('input');
  320. volumeSlider.type = 'range';
  321. volumeSlider.min = 0;
  322. volumeSlider.max = 2; // Allow volume up to 200%
  323. volumeSlider.step = 0.1;
  324. volumeSlider.value = 0.5;
  325. volumeSlider.addEventListener('input', adjustVolume);
  326. volumeSlider.style.width = '90%'; // Make slider fill width of the window
  327. volumeSlider.style.margin = '5px';
  328. volumeSlider.style.display = 'block';
  329. volumeSlider.style.marginLeft = 'auto';
  330. volumeSlider.style.marginRight = 'auto';
  331. controlsDiv.appendChild(volumeSlider);
  332.  
  333. // Create Loop Song button
  334. const loopButton = document.createElement('button');
  335. loopButton.textContent = 'Loop Song';
  336. loopButton.addEventListener('click', loopCurrentSong);
  337. loopButton.style.backgroundColor = '#222'; // Dark grey background
  338. loopButton.style.color = 'white'; // White text
  339. loopButton.style.textShadow = '0 0 10px white, 0 0 20px white, 0 0 30px white, 0 0 40px white'; // Glowing effect
  340. loopButton.style.border = 'none';
  341. loopButton.style.padding = '10px';
  342. loopButton.style.margin = '5px';
  343. loopButton.style.width = '90%'; // Make buttons fill width of the window
  344. loopButton.style.display = 'block';
  345. loopButton.style.marginLeft = 'auto';
  346. loopButton.style.marginRight = 'auto';
  347. controlsDiv.appendChild(loopButton);
  348.  
  349. // Create a settings button
  350. const settingsButton = document.createElement('button');
  351. settingsButton.textContent = 'Settings';
  352. settingsButton.addEventListener('click', openSettingsWindow);
  353. settingsButton.style.backgroundColor = '#222'; // Dark grey background
  354. settingsButton.style.color = 'white'; // White text
  355. settingsButton.style.textShadow = '0 0 10px white, 0 0 20px white, 0 0 30px white, 0 0 40px white'; // Glowing effect
  356. settingsButton.style.border = 'none';
  357. settingsButton.style.padding = '10px';
  358. settingsButton.style.margin = '20px auto 0'; // Center the button horizontally and add margin from the top
  359. settingsButton.style.width = '90%'; // Make buttons fill width of the window
  360. settingsButton.style.display = 'block';
  361. settingsButton.style.marginLeft = 'auto';
  362. settingsButton.style.marginRight = 'auto';
  363. controlsDiv.appendChild(settingsButton);
  364.  
  365. // Create a Credits button
  366. const creditsButton = document.createElement('button');
  367. creditsButton.textContent = 'Credits';
  368. creditsButton.addEventListener('click', openCreditsWindow);
  369. creditsButton.style.backgroundColor = '#222'; // Dark grey background
  370. creditsButton.style.color = 'white'; // White text
  371. creditsButton.style.textShadow = '0 0 10px white, 0 0 20px white, 0 0 30px white, 0 0 40px white'; // Glowing effect
  372. creditsButton.style.border = 'none';
  373. creditsButton.style.padding = '10px';
  374. creditsButton.style.margin = '20px auto 0'; // Center the button horizontally and add margin from the top
  375. creditsButton.style.width = '90%'; // Make buttons fill width of the window
  376. creditsButton.style.display = 'block';
  377. creditsButton.style.marginLeft = 'auto';
  378. creditsButton.style.marginRight = 'auto';
  379. controlsDiv.appendChild(creditsButton);
  380.  
  381. musicPlayerWindow.document.body.appendChild(controlsDiv);
  382.  
  383. // Function to play a song
  384. function playSong(index) {
  385. stopAllSongs(); // Stop all other songs before playing
  386. audioElements[index].play();
  387. currentlyPlayingIndex = index; // Set currently playing index
  388. }
  389.  
  390. // Function to toggle pause/play for the currently playing song
  391. function togglePause() {
  392. if (currentlyPlayingIndex === -1) return; // No song playing
  393. const isPaused = audioElements[currentlyPlayingIndex].paused;
  394. if (isPaused) {
  395. audioElements[currentlyPlayingIndex].play();
  396. } else {
  397. audioElements[currentlyPlayingIndex].pause();
  398. }
  399. }
  400.  
  401. // Function to stop all songs
  402. function stopAllSongs() {
  403. audioElements.forEach(audio => {
  404. audio.pause();
  405. audio.currentTime = 0;
  406. });
  407. currentlyPlayingIndex = -1; // Reset currently playing index
  408. }
  409.  
  410. // Function to adjust volume
  411. function adjustVolume() {
  412. const volume = parseFloat(volumeSlider.value);
  413. audioElements.forEach(audio => audio.volume = volume);
  414. }
  415.  
  416. // Function to loop the currently playing song
  417. function loopCurrentSong() {
  418. if (currentlyPlayingIndex !== -1) {
  419. audioElements[currentlyPlayingIndex].loop = true;
  420. }
  421. }
  422.  
  423. function openSettingsWindow() {
  424. const settingsWindow = window.open('', '_blank', 'width=400,height=300,top=100,left=100');
  425. settingsWindow.document.title = 'Settings';
  426. settingsWindow.document.body.style.backgroundColor = 'black'; // Set background color to black
  427.  
  428. // Create a div for the title
  429. const titleDiv = document.createElement('div');
  430. titleDiv.textContent = 'Change Color';
  431. titleDiv.style.color = '#7b6d8d'; // UltraViolet color
  432. titleDiv.style.textShadow = '0 0 10px #ff00ff, 0 0 20px #ff00ff, 0 0 30px #ff00ff, 0 0 40px #ff00ff'; // Neon glow effect
  433. titleDiv.style.fontSize = '24px';
  434. titleDiv.style.marginTop = '20px'; // Add margin from the top
  435. titleDiv.style.textAlign = 'center'; // Center the text
  436. settingsWindow.document.body.appendChild(titleDiv);
  437.  
  438. const controlsDiv = document.createElement('div');
  439. settingsWindow.document.body.appendChild(controlsDiv);
  440.  
  441. const colorButtons = [
  442. { value: 'white', label: 'White' },
  443. { value: 'red', label: 'Red' },
  444. { value: 'cyan', label: 'Cyan' },
  445. { value: 'purple', label: 'Purple' },
  446. { value: 'magenta', label: 'Magenta' },
  447. { value: 'lime', label: 'Lime' },
  448. { value: 'yellow', label: 'Yellow' },
  449. { value: 'gold', label: 'Gold' },
  450. { value: 'blue', label: 'Blue' },
  451. { value: 'teal', label: 'Teal' },
  452. { value: 'green', label: 'Green' },
  453. { value: 'orange', label: 'Orange' },
  454. { value: 'silver', label: 'Silver' },
  455. { value: 'coral', label: 'Coral' },
  456. { value: '#E0115F', label: 'Ruby' },
  457. { value: '#800000', label: 'Maroon' },
  458. { value: '#FFC0CB', label: 'Pink' },
  459. { value: '#FF007F', label: 'Rose' },
  460. { value: '#ACE1AF', label: 'Celadon' },
  461. { value: '#deb887', label: 'Burlywood' },
  462. { value: '#fdee00', label: 'Aureolin' },
  463. { value: '#6082B6', label: 'Glaucous' },
  464. { value: '#2CFA1F', label: 'RadioActive' }, // UltraViolet and lime green
  465. { value: '#53322f', label: 'Gred' },
  466. { value: '#06ff69', label: 'Celery'},
  467. { value: '#0affa0', label: 'WinterGreen'},
  468. { value: '#7d12ff', label: 'BlackLight'},
  469. { value: '#26136f', label: 'Dark Blue'},
  470. { value: '#ff5e00', label: 'Red-Orange'}
  471. ];
  472.  
  473. // Function to handle color changes
  474. function handleColorChange(color) {
  475. changeColors(color);
  476. }
  477.  
  478. // Event listener for color buttons
  479. colorButtons.forEach(option => {
  480. const button = document.createElement('button');
  481. button.textContent = option.label;
  482. button.style.display = 'block';
  483. button.style.margin = '10px auto';
  484. button.style.width = '150px';
  485. button.style.backgroundColor = option.value;
  486. button.style.color = 'black'; // For visibility
  487. button.addEventListener('click', () => handleColorChange(option.value)); // Modified line
  488. controlsDiv.appendChild(button);
  489. });
  490. }
  491. // Function to change colors
  492. function changeColors(color) {
  493. // Change title color and glow
  494. titleDiv.style.color = color;
  495. titleDiv.style.textShadow = `0 0 10px ${color}, 0 0 20px ${color}, 0 0 30px ${color}, 0 0 40px ${color}`;
  496.  
  497. // Change button text color and glow
  498. controlsDiv.childNodes.forEach(button => {
  499. button.style.color = color;
  500. button.style.textShadow = `0 0 10px ${color}, 0 0 20px ${color}, 0 0 30px ${color}, 0 0 40px ${color}`;
  501. });
  502.  
  503. // Change separator line color
  504. controlsDiv.querySelectorAll('div').forEach(line => {
  505. line.style.backgroundColor = color;
  506. });
  507.  
  508. // Change settings window color
  509. settingsWindow.document.body.style.color = color;
  510. }
  511. // Function to open the credits window
  512. function openCreditsWindow() {
  513. const creditsWindow = window.open('', '_blank', 'width=400,height=300,top=100,left=100');
  514. creditsWindow.document.title = 'Credits';
  515. creditsWindow.document.body.style.backgroundColor = 'black'; // Set background color to black
  516.  
  517. const creditsText = document.createElement('div');
  518. creditsText.textContent = '♥♥♥ I want to be amazing enough for Angelica P. ♥♥♥';
  519. creditsText.style.color = 'silver'; // Silver text
  520. creditsText.style.textShadow = '0 0 10px silver, 0 0 20px silver, 0 0 30px silver, 0 0 40px silver'; // Glowing effect
  521. creditsText.style.fontSize = '24px'; // Larger font size
  522. creditsText.style.fontWeight = 'bold'; // Bold font
  523. creditsText.style.textAlign = 'center'; // Center-align text
  524. creditsText.style.marginTop = '20px'; // Add margin from the top
  525. creditsWindow.document.body.appendChild(creditsText);
  526. }
  527. }
  528. })();