WIP: The MuSiCaL Update #1
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
node_modules
|
||||
nul
|
||||
package-lock.json
|
||||
45
BGMHUD.css
Normal file
45
BGMHUD.css
Normal file
@@ -0,0 +1,45 @@
|
||||
/* BGM Title Box - Desktop Styles */
|
||||
#bgm-title {
|
||||
position: fixed !important;
|
||||
top: 10px !important;
|
||||
right: 10px !important;
|
||||
padding: 8px 12px !important;
|
||||
background-color: rgba(0, 0, 0, 0.8) !important;
|
||||
color: #ffeb3b !important;
|
||||
border: 2px solid yellow !important;
|
||||
border-radius: 5px !important;
|
||||
z-index: 9999 !important;
|
||||
font-family: 'Sono', Arial, sans-serif !important;
|
||||
font-size: 12px !important;
|
||||
font-weight: bold !important;
|
||||
text-shadow: 1px 1px 2px black !important;
|
||||
opacity: 0 !important;
|
||||
display: block !important;
|
||||
visibility: visible !important;
|
||||
box-shadow: 0 0 10px rgba(255, 235, 59, 0.3) !important;
|
||||
}
|
||||
#bgm-title.visible {
|
||||
opacity: 1 !important;
|
||||
}
|
||||
|
||||
/* Mobile: centered at top */
|
||||
@media (max-width: 600px) {
|
||||
#bgm-title {
|
||||
position: fixed !important;
|
||||
top: 0 !important;
|
||||
left: 50% !important;
|
||||
right: auto !important;
|
||||
transform: translateX(-50%) !important;
|
||||
width: 100% !important;
|
||||
max-width: 100% !important;
|
||||
border-radius: 0 0 5px 5px !important;
|
||||
text-align: center !important;
|
||||
box-sizing: border-box !important;
|
||||
}
|
||||
body {
|
||||
padding-top: 40px !important;
|
||||
}
|
||||
#nl, img[src*="webneko"] {
|
||||
margin-top: 40px !important;
|
||||
}
|
||||
}
|
||||
18
BGM_Integration_Guide.md
Normal file
18
BGM_Integration_Guide.md
Normal file
@@ -0,0 +1,18 @@
|
||||
# BGM Workflow Guide
|
||||
|
||||
This guide outlines the process for implementing or modifying Background Music (BGM) functionality across any page using `Music/bgm.js`.
|
||||
|
||||
## What I do (Instructions in bullet points, excluding page specific logic)
|
||||
* **Dependencies:** Ensure `Music/bgm.js` and necessary CSS (`BGMHUD.css`, `normalbordem.css`) are loaded on the target page.
|
||||
* **Required HTML Elements:** The page must contain `<div id="bgm-title">` and `<div id="autoplay"></div>`.
|
||||
* **Initialization:** Call `SongRNG('initial')` in the page's script block to start playback immediately upon loading.
|
||||
* **Manual Control:** For manual control, call `MIDIjs.play(urlOrId, true)` directly when needed.
|
||||
|
||||
## What NOT to do (General safety for AI agents)
|
||||
* Do not modify the core logic within `Music/bgm.js` unless explicitly instructed by a developer request.
|
||||
* Never assume that calling `SongRNG()` is sufficient; always check if manual playback control (`MIDIjs.play()`) is required after initialization.
|
||||
|
||||
## When to use me (When the agent should execute this workflow, eg when asked to add BGM support to a page)
|
||||
* Use this guide when implementing or modifying BGM features on any page. The process involves updating the target page's HTML/JS and committing changes to `Music/bgm.js` if core logic needs adjustment.
|
||||
|
||||
***
|
||||
14
Dockerfile
Normal file
14
Dockerfile
Normal file
@@ -0,0 +1,14 @@
|
||||
# Use the official Nginx image as a base
|
||||
FROM nginx:alpine
|
||||
|
||||
# Copy the current project files into the container
|
||||
# Copy custom Nginx configuration
|
||||
COPY nginx.conf /etc/nginx/conf.d/
|
||||
COPY . /usr/share/nginx/html
|
||||
|
||||
# Expose port 80 for testing
|
||||
EXPOSE 80
|
||||
EXPOSE 9000
|
||||
|
||||
# Configure Nginx to serve the files
|
||||
CMD ["nginx", "-g", "daemon off;"]
|
||||
@@ -5,19 +5,32 @@
|
||||
<!-- /\ you see this? this is the sum of those mobile optimizations. one line. yeah. you can leave now.-->
|
||||
<title>DOOFENSMIRTZ ONLINE</title>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<!--gotta remember to ALSO load midijs-->
|
||||
<script type='text/javascript' src='//www.midijs.net/lib/midi.js'></script>
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Libre+Barcode+39+Extended+Text&display=swap" rel="stylesheet">
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Sono&display=swap" rel="stylesheet">
|
||||
<link href="/normalbordem.css" rel="stylesheet" type="text/css" media="all">
|
||||
<link href="/BGMHUD.css" rel="stylesheet" type="text/css">
|
||||
</head>
|
||||
<body>
|
||||
<!-- song title display in top-right corner -->
|
||||
<div id="bgm-title">
|
||||
<span id="bgm-title-content"></span>
|
||||
</div>
|
||||
|
||||
<!-- BGM.js loads and will add .visible class when text is set -->
|
||||
<script src="/Music/bgm.js"></script>
|
||||
|
||||
<!-- [FC2 Analyzer] //analyzer.fc2.com/ -->
|
||||
<script language="javascript" src="//analyzer54.fc2.com/ana/processor.php?uid=2906964" type="text/javascript"></script>
|
||||
<noscript><div align="right"><img src="//analyzer54.fc2.com/ana/icon.php?uid=2906964&ref=&href=&wid=0&hei=0&col=0" /></div></noscript>
|
||||
<!-- [FC2 Analyzer] -->
|
||||
<header>
|
||||
<div class="autoplay-warning" id="autoplay">
|
||||
</div>
|
||||
<h1>Doofensmirtz Evil Incorperated Game Revewal Services</h1>
|
||||
<h3 class="quote">"that's some sick beat"</h3>
|
||||
<a href=/index.html><img src=/WebTV.gif alt="WebTV City" title="click me to go back!"></a>
|
||||
@@ -36,4 +49,11 @@
|
||||
<img src=/Vault/gameboy.gif>
|
||||
</footer>
|
||||
</body>
|
||||
<!-- noscript fallback for BGM.js user -->
|
||||
<noscript>
|
||||
<div style="position:fixed;top:10px;right:10px;background:#111;color:#ffeb3b;padding:8px 12px;border:2px solid yellow;border-radius:5px;font-family:'Sono',sans-serif;font-weight:bold;z-index:1000;">
|
||||
MIDI music requires JavaScript. This song title display won't work without it.
|
||||
</div>
|
||||
</noscript>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -6,18 +6,31 @@
|
||||
<title>loud PNG game</title>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<!--gotta remember to ALSO load midijs-->
|
||||
<script type='text/javascript' src='//www.midijs.net/lib/midi.js'></script>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Libre+Barcode+39+Extended+Text&display=swap" rel="stylesheet">
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Sono&display=swap" rel="stylesheet">
|
||||
<link href="/normalbordem.css" rel="stylesheet" type="text/css" media="all">
|
||||
</head>
|
||||
<link href="/BGMHUD.css" rel="stylesheet" type="text/css">
|
||||
</head>
|
||||
<body>
|
||||
<!-- song title display in top-right corner -->
|
||||
<div id="bgm-title">
|
||||
<span id="bgm-title-content"></span>
|
||||
</div>
|
||||
|
||||
<!-- BGM.js loads and will add .visible class when text is set -->
|
||||
<script src="/Music/bgm.js"></script>
|
||||
|
||||
<!-- [FC2 Analyzer] //analyzer.fc2.com/ -->
|
||||
<script language="javascript" src="//analyzer54.fc2.com/ana/processor.php?uid=2906964" type="text/javascript"></script>
|
||||
<noscript><div align="right"><img src="//analyzer54.fc2.com/ana/icon.php?uid=2906964&ref=&href=&wid=0&hei=0&col=0" /></div></noscript>
|
||||
<!-- [FC2 Analyzer] -->
|
||||
<header>
|
||||
<div class="autoplay-warning" id="autoplay">
|
||||
</div>
|
||||
<h1>Doofensmirtz Evil Incorperated Game Revewal Services</h1>
|
||||
<h3 class="quote">"thats some sick beat"</h3>
|
||||
<a href=/index.html><img src=/WebTV.gif alt="WebTV City" title="click me to go back!"></a>
|
||||
@@ -48,5 +61,12 @@ HalfLife Event (bodermen event)
|
||||
<footer>
|
||||
<a href=index.html>go back</a>
|
||||
</footer>
|
||||
</body>
|
||||
<!-- noscript fallback for BGM.js -->
|
||||
<noscript>
|
||||
<div style="position:fixed;top:10px;right:10px;background:#111;color:#ffeb3b;padding:8px 12px;border:2px solid yellow;border-radius:5px;font-family:'Sono',sans-serif;font-weight:bold;z-index:1000;">
|
||||
MIDI music requires JavaScript. Song title display won't work without JS.
|
||||
</div>
|
||||
</noscript>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -8,16 +8,29 @@
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Libre+Barcode+39+Extended+Text&display=swap" rel="stylesheet">
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<!--gotta remember to ALSO load midijs-->
|
||||
<script type='text/javascript' src='//www.midijs.net/lib/midi.js'></script>
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Sono&display=swap" rel="stylesheet">
|
||||
<link href="/normalbordem.css" rel="stylesheet" type="text/css" media="all">
|
||||
</head>
|
||||
<link href="/BGMHUD.css" rel="stylesheet" type="text/css">
|
||||
</head>
|
||||
<body>
|
||||
<!-- song title display in top-right corner -->
|
||||
<div id="bgm-title">
|
||||
<span id="bgm-title-content"></span>
|
||||
</div>
|
||||
|
||||
<!-- BGM.js loads and will add .visible class when text is set -->
|
||||
<script src="/Music/bgm.js"></script>
|
||||
|
||||
<!-- [FC2 Analyzer] //analyzer.fc2.com/ -->
|
||||
<script language="javascript" src="//analyzer54.fc2.com/ana/processor.php?uid=2906964" type="text/javascript"></script>
|
||||
<noscript><div align="right"><img src="//analyzer54.fc2.com/ana/icon.php?uid=2906964&ref=&href=&wid=0&hei=0&col=0" /></div></noscript>
|
||||
<!-- [FC2 Analyzer] -->
|
||||
<header>
|
||||
<div class="autoplay-warning" id="autoplay">
|
||||
</div>
|
||||
<h1>Doofensmirtz Evil Incorperated Game Revewal Services</h1>
|
||||
<h3 class="quote">"thats some sick beat"</h3>
|
||||
<a href=/index.html><img src=/WebTV.gif alt="WebTV City" title="click me to go back!"></a>
|
||||
@@ -57,5 +70,12 @@
|
||||
<footer>
|
||||
<a href=index.html>go back</a>
|
||||
</footer>
|
||||
</body>
|
||||
<!-- noscript fallback for BGM.js -->
|
||||
<noscript>
|
||||
<div style="position:fixed;top:10px;right:10px;background:#111;color:#ffeb3b;padding:8px 12px;border:2px solid yellow;border-radius:5px;font-family:'Sono',sans-serif;font-weight:bold;z-index:1000;">
|
||||
MIDI music requires JavaScript. Song title display won't work without JS.
|
||||
</div>
|
||||
</noscript>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -8,16 +8,29 @@
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Libre+Barcode+39+Extended+Text&display=swap" rel="stylesheet">
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<!--gotta remember to ALSO load midijs-->
|
||||
<script type='text/javascript' src='//www.midijs.net/lib/midi.js'></script>
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Sono&display=swap" rel="stylesheet">
|
||||
<link href="/normalbordem.css" rel="stylesheet" type="text/css" media="all">
|
||||
</head>
|
||||
<link href="/BGMHUD.css" rel="stylesheet" type="text/css">
|
||||
</head>
|
||||
<body>
|
||||
<!-- song title display in top-right corner -->
|
||||
<div id="bgm-title">
|
||||
<span id="bgm-title-content"></span>
|
||||
</div>
|
||||
|
||||
<!-- BGM.js loads and will add .visible class when text is set -->
|
||||
<script src="/Music/bgm.js"></script>
|
||||
|
||||
<!-- [FC2 Analyzer] //analyzer.fc2.com/ -->
|
||||
<script language="javascript" src="//analyzer54.fc2.com/ana/processor.php?uid=2906964" type="text/javascript"></script>
|
||||
<noscript><div align="right"><img src="//analyzer54.fc2.com/ana/icon.php?uid=2906964&ref=&href=&wid=0&hei=0&col=0" /></div></noscript>
|
||||
<!-- [FC2 Analyzer] -->
|
||||
<header>
|
||||
<div class="autoplay-warning" id="autoplay">
|
||||
</div>
|
||||
<h1>Doofensmirtz Evil Incorperated Game Revewal Services</h1>
|
||||
<h3 class="quote">"thats some sick beat"</h3>
|
||||
<a href=/index.html><img src=/WebTV.gif alt="WebTV City" title="click me to go back!"></a>
|
||||
@@ -61,5 +74,12 @@
|
||||
<footer>
|
||||
<a href=index.html>go back</a>
|
||||
</footer>
|
||||
</body>
|
||||
<!-- noscript fallback for BGM.js -->
|
||||
<noscript>
|
||||
<div style="position:fixed;top:10px;right:10px;background:#111;color:#ffeb3b;padding:8px 12px;border:2px solid yellow;border-radius:5px;font-family:'Sono',sans-serif;font-weight:bold;z-index:1000;">
|
||||
MIDI music requires JavaScript. Song title display won't work without JS.
|
||||
</div>
|
||||
</noscript>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
119
Music/bgm.js
Normal file
119
Music/bgm.js
Normal file
@@ -0,0 +1,119 @@
|
||||
//Based off of the one found at not_found.html but randomizes the songs
|
||||
let song = "/Music/noway.mid"
|
||||
let autoplaySupported = false;
|
||||
let audioLoadFailed = false;
|
||||
let consecutivefails = 0;
|
||||
let audioCheckDone = false;
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
document.addEventListener('error', function(e) {
|
||||
if (e.target && e.target.src && e.target.src.includes('/Music/bgm/')) {
|
||||
audioLoadFailed = true;
|
||||
console.error('BGM: Failed to load audio file:', e.target.src);
|
||||
}
|
||||
}, true);
|
||||
});
|
||||
|
||||
function SongRNG(reason = 'initial') {
|
||||
//this is actually code from minima and its absolutely NOT made for this BUT WHO CARES????
|
||||
let lines = ["AnotherMedium-Updated.mid", "CORE_.mid", "Death_by_Glamour.mid", "maniaStudiopolisZoneAct1.mid", "maniaStudiopolisZoneAct2.mid", "mk7_select_menu.mid", "Mpntbgm1.mid", "MPntBgk2.mid", "portal.mid", "SmashMenu.mid", "funni.mid", "utruins.mid"]
|
||||
let titles = ["Another Medium", "CORE", "Death by Glamour", "Studiopolis Act 1 (Lights, Camera, Action!)", "Studiopolis Act 2", "Select a kart", "Creative Exersise", "Monkeys", "Still Alive", "Main Menu", "24 Hour Cinderella", "The Ruins"]
|
||||
let games = ["Undertale", "Undertale", "Undertale", "Sonic Mania", "Sonic Mania", "Mario Kart 7", "Mario Paint", "Mario Paint", "Portal", "SSB Wii U/3DS", "Yakuza", "Undertale"]
|
||||
let max = lines.length - 1;
|
||||
let randint = Math.floor(Math.random() * (max + 1));
|
||||
|
||||
// Display song title on page
|
||||
try {
|
||||
let contentEl = document.getElementById('bgm-title-content');
|
||||
let titleEl = document.getElementById('bgm-title');
|
||||
|
||||
if (contentEl) {
|
||||
contentEl.textContent = titles[randint] + " - " + games[randint];
|
||||
} else if (titleEl) {
|
||||
titleEl.textContent = titles[randint] + " - " + games[randint];
|
||||
}
|
||||
|
||||
if (titleEl) titleEl.classList.add('visible');
|
||||
} catch(e) {
|
||||
console.warn("BGM title display unavailable (element may not exist on this page)");
|
||||
}
|
||||
|
||||
console.log('BGM: Now playing:', titles[randint], '-', games[randint], '(' + reason + ')');
|
||||
song = "/Music/bgm/" + lines[randint];
|
||||
MIDIjs.play(song, true);
|
||||
}
|
||||
|
||||
function checkAudioContext() {
|
||||
try {
|
||||
if (audioLoadFailed) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Use MIDIjs to check actual audio status
|
||||
const status = MIDIjs.get_audio_status();
|
||||
if (status && status.audioMethod) {
|
||||
// If we have an audio method, check if it's actually playing
|
||||
if (status.playing) {
|
||||
return true;
|
||||
}
|
||||
// Audio method exists but not playing - autoplay blocked
|
||||
console.warn('BGM: Audio available but not playing (autoplay blocked)');
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
} catch(e) {
|
||||
console.error('BGM: AudioContext check failed:', e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function checkAudio() {
|
||||
if (audioCheckDone) return;
|
||||
|
||||
try {
|
||||
let apbox = document.getElementById("autoplay");
|
||||
if (!apbox) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!checkAudioContext()) {
|
||||
consecutivefails++;
|
||||
if (consecutivefails >= 2) {
|
||||
audioCheckDone = true;
|
||||
console.warn('BGM: Autoplay blocked - showing modal');
|
||||
apbox.innerHTML = '<p>Music is playing, but your autoplay is turned off.</p><noscript>JS is off, MIDIjs won\'t be able to play audio anyways.</noscript> <button onclick="MIDIjs.play(song, true); this.parentElement.style.display=\'none\';">Play Music</button>';
|
||||
} else {
|
||||
console.warn('BGM: Retry checkAudio in 3 seconds');
|
||||
setTimeout(function(){
|
||||
checkAudio();
|
||||
}, 3000);
|
||||
}
|
||||
} else {
|
||||
audioCheckDone = true;
|
||||
console.log('BGM: Music is playing successfully');
|
||||
apbox.innerHTML = '<div style="color: green;">✅ Music is playing!</div>';
|
||||
apbox.style.display = 'none';
|
||||
}
|
||||
} catch(e) {
|
||||
console.error('BGM: Error in checkAudio:', e);
|
||||
}
|
||||
}
|
||||
|
||||
function handlePlayingEvent(event) {
|
||||
if (event.status === 'playing' || event.time !== undefined) {
|
||||
// Music is actively playing - checkAudio will handle showing success
|
||||
}
|
||||
}
|
||||
|
||||
SongRNG('initial');
|
||||
let isPlaying = false;
|
||||
console.log('BGM: Initializing...');
|
||||
autoplaySupported = checkAudioContext();
|
||||
|
||||
setTimeout(function(){
|
||||
checkAudio();
|
||||
}, 3000);
|
||||
|
||||
MIDIjs.player_callback = function(event) {
|
||||
handlePlayingEvent(event);
|
||||
};
|
||||
BIN
Music/bgm/AnotherMedium-Updated.mid
Normal file
BIN
Music/bgm/AnotherMedium-Updated.mid
Normal file
Binary file not shown.
BIN
Music/bgm/BSXSoundlink.mp3
Normal file
BIN
Music/bgm/BSXSoundlink.mp3
Normal file
Binary file not shown.
BIN
Music/bgm/BSXSoundlinkFIXED.mid
Normal file
BIN
Music/bgm/BSXSoundlinkFIXED.mid
Normal file
Binary file not shown.
BIN
Music/bgm/CORE_.mid
Normal file
BIN
Music/bgm/CORE_.mid
Normal file
Binary file not shown.
BIN
Music/bgm/Death_by_Glamour.mid
Normal file
BIN
Music/bgm/Death_by_Glamour.mid
Normal file
Binary file not shown.
BIN
Music/bgm/MPntBkg2.mid
Normal file
BIN
Music/bgm/MPntBkg2.mid
Normal file
Binary file not shown.
BIN
Music/bgm/Mpntbgm1.mid
Normal file
BIN
Music/bgm/Mpntbgm1.mid
Normal file
Binary file not shown.
BIN
Music/bgm/Sample3BSX.mp3
Normal file
BIN
Music/bgm/Sample3BSX.mp3
Normal file
Binary file not shown.
BIN
Music/bgm/SmashMenu.mid
Normal file
BIN
Music/bgm/SmashMenu.mid
Normal file
Binary file not shown.
BIN
Music/bgm/funni.mid
Normal file
BIN
Music/bgm/funni.mid
Normal file
Binary file not shown.
BIN
Music/bgm/maniaStudiopolisZoneAct1.mid
Normal file
BIN
Music/bgm/maniaStudiopolisZoneAct1.mid
Normal file
Binary file not shown.
BIN
Music/bgm/maniaStudiopolisZoneAct2.mid
Normal file
BIN
Music/bgm/maniaStudiopolisZoneAct2.mid
Normal file
Binary file not shown.
BIN
Music/bgm/mk7_select_menu.mid
Normal file
BIN
Music/bgm/mk7_select_menu.mid
Normal file
Binary file not shown.
BIN
Music/bgm/portal.mid
Normal file
BIN
Music/bgm/portal.mid
Normal file
Binary file not shown.
BIN
Music/bgm/rhythmheaven4thmix.mid
Normal file
BIN
Music/bgm/rhythmheaven4thmix.mid
Normal file
Binary file not shown.
BIN
Music/bgm/utruins.mid
Normal file
BIN
Music/bgm/utruins.mid
Normal file
Binary file not shown.
BIN
Music/noway.mid
Normal file
BIN
Music/noway.mid
Normal file
Binary file not shown.
BIN
Music/vault1.mid
Normal file
BIN
Music/vault1.mid
Normal file
Binary file not shown.
BIN
Music/vault2.mid
Normal file
BIN
Music/vault2.mid
Normal file
Binary file not shown.
BIN
Music/vault3.mid
Normal file
BIN
Music/vault3.mid
Normal file
Binary file not shown.
12
SKILL.md
Normal file
12
SKILL.md
Normal file
@@ -0,0 +1,12 @@
|
||||
## What I do (Instructions in bullet points, excluding page specific logic)
|
||||
|
||||
### **Workflow Steps:**
|
||||
* **Dependencies Check:** Verify that `Music/bgm.js`, `BGMHUD.css`, MIDI.js, and `normalbordem.css` are loaded on the target page.
|
||||
* **Required HTML Elements:** The page must contain `<div id="bgm-title">` and `<div id="autoplay"></div>`.
|
||||
* **Manual Control:** For manual control, call `MIDIjs.play(urlOrId, true)` directly in your page's script block.
|
||||
|
||||
## What NOT to do
|
||||
* Do not modify the core logic within `Music/bgm.js`.
|
||||
|
||||
## When to use me (When the agent should execute this workflow, eg when asked to add BGM support to a page)
|
||||
* Use this guide when implementing or modifying BGM features on any page. The process involves updating the target page's HTML/JS.
|
||||
335
Vault/about.html
Normal file
335
Vault/about.html
Normal file
@@ -0,0 +1,335 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<!--<title>DOOFENSMIRTZ ONLINE</title>-->
|
||||
<title>the vault.</title>
|
||||
<!-- being lazy and re-using the same CSS > making a new one -->
|
||||
<link href="/eternalrain/bliss.css" rel="stylesheet" type="text/css" media="all">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Libre+Barcode+39+Extended+Text&display=swap" rel="stylesheet">
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Sono&display=swap" rel="stylesheet">
|
||||
<script type="text/javascript">
|
||||
// <![CDATA[
|
||||
var speed=33; // lower number for faster
|
||||
var drops=100; // number of 'drops'
|
||||
var colour="#999"; // colour of drops (generally grey!)
|
||||
|
||||
/***************************\
|
||||
* Rainy Afternoon Effect *
|
||||
*(c)2011-13 mf2fm web-design*
|
||||
* http://www.mf2fm.com/rv *
|
||||
* DON'T EDIT BELOW THIS BOX *
|
||||
\***************************/
|
||||
|
||||
var flks=new Array();
|
||||
var flkx=new Array();
|
||||
var flky=new Array();
|
||||
var fldy=new Array();
|
||||
var swide, shigh, boddie;
|
||||
var ie_version=(navigator.appVersion.indexOf("MSIE")!=-1)?parseFloat(navigator.appVersion.split("MSIE")[1]):false;
|
||||
|
||||
function addLoadEvent(funky) {
|
||||
var oldonload=window.onload;
|
||||
if (typeof(oldonload)!='function') window.onload=funky;
|
||||
else window.onload=function() {
|
||||
if (oldonload) oldonload();
|
||||
funky();
|
||||
}
|
||||
}
|
||||
|
||||
addLoadEvent(storm);
|
||||
|
||||
function storm() { if (document.getElementById) {
|
||||
var r1, r2;
|
||||
boddie=document.createElement("div");
|
||||
boddie.style.position="fixed";
|
||||
boddie.style.top="0px";
|
||||
boddie.style.left="0px";
|
||||
boddie.style.width="1px";
|
||||
boddie.style.height="1px";
|
||||
boddie.style.overflow="visible";
|
||||
boddie.style.backgroundColor="transparent";
|
||||
document.body.appendChild(boddie);
|
||||
set_width();
|
||||
for (var i=0; i<drops; i++) {
|
||||
flks[i]=createDiv(16, 2, "transparent");
|
||||
r1=createDiv(6, 2, colour);
|
||||
r1.style.top="10px";
|
||||
r1.style.left="0px";
|
||||
flks[i].appendChild(r1);
|
||||
r2=createDiv(10, 2, colour);
|
||||
r2.style.top="0px";
|
||||
r2.style.left="0px";
|
||||
if (ie_version && ie_version<10) r2.style.filter="alpha(opacity=25)";
|
||||
else r2.style.opacity=0.25;
|
||||
flks[i].appendChild(r2);
|
||||
flkx[i]=2*Math.floor(Math.random()*swide/2);
|
||||
flky[i]=Math.floor(Math.random()*shigh);
|
||||
fldy[i]=2+Math.floor(Math.random()*4);
|
||||
flks[i].style.left=flkx[i]+"px";
|
||||
flks[i].style.top=flky[i]+"px";
|
||||
boddie.appendChild(flks[i]);
|
||||
}
|
||||
setInterval("cats_and_dogs()", speed);
|
||||
}}
|
||||
|
||||
function createDiv(height, width, colour) {
|
||||
var div=document.createElement("div");
|
||||
div.style.position="absolute";
|
||||
div.style.height=height+"px";
|
||||
div.style.width=width+"px";
|
||||
div.style.overflow="hidden";
|
||||
div.style.backgroundColor=colour;
|
||||
return (div);
|
||||
}
|
||||
|
||||
window.onresize=set_width;
|
||||
function set_width() {
|
||||
var sw_min=999999;
|
||||
var sh_min=999999;
|
||||
if (document.documentElement && document.documentElement.clientWidth) {
|
||||
sw_min=document.documentElement.clientWidth;
|
||||
sh_min=document.documentElement.clientHeight;
|
||||
}
|
||||
if (typeof(self.innerWidth)!="undefined" && self.innerWidth) {
|
||||
if (self.innerWidth<sw_min) sw_min=self.innerWidth;
|
||||
if (self.innerHeight<sh_min) sh_min=self.innerHeight;
|
||||
}
|
||||
if (document.body.clientWidth) {
|
||||
if (document.body.clientWidth<sw_min) sw_min=document.body.clientWidth;
|
||||
if (document.body.clientHeight<sh_min) sh_min=document.body.clientHeight;
|
||||
}
|
||||
if (sw_min==999999 || sh_min==999999) {
|
||||
sw_min=800;
|
||||
sh_min=600;
|
||||
}
|
||||
swide=sw_min-2;
|
||||
shigh=sh_min;
|
||||
}
|
||||
|
||||
function cats_and_dogs(c) {
|
||||
var i, x, o=0;
|
||||
for (i=0; i<drops; i++) {
|
||||
flky[i]+=fldy[i];
|
||||
if (flky[i]>=shigh-16) {
|
||||
flky[i]=-16;
|
||||
fldy[i]=2+Math.floor(Math.random()*4);
|
||||
flkx[i]=2*Math.floor(Math.random()*swide/2);
|
||||
flks[i].style.left=flkx[i]+"px";
|
||||
}
|
||||
flks[i].style.top=flky[i]+"px";
|
||||
}
|
||||
}
|
||||
// ]]>
|
||||
</script>
|
||||
<!--mountains-->
|
||||
<script type="text/javascript">
|
||||
// <![CDATA[
|
||||
var ranges=4; // number of mountain ranges
|
||||
// all colours must be in format '#NNNNNN', not 'red' or 'rgb(7,8,9)'
|
||||
var height=160; // height in pixels of heighest mountains - ones nearer the front will be smaller
|
||||
var foreground='#001d41'; // purple
|
||||
var background='#00070d'; // grey
|
||||
|
||||
/****************************
|
||||
* Rolling Mountains Effect 2*
|
||||
* (c)2014+ mf2fm web-design *
|
||||
* http://www.mf2fm.com/rv *
|
||||
* DON'T EDIT BELOW THIS BOX *
|
||||
*****************************/
|
||||
var swide=800;
|
||||
var shigh=600;
|
||||
var sleft=0;
|
||||
var scwid=screen.width;
|
||||
var dx=0;
|
||||
var mranges=new Array();
|
||||
var mposit=new Array();
|
||||
var mlent=new Array();
|
||||
var moff=new Array();
|
||||
|
||||
if (typeof('addRVLoadEvent')!='function') function addRVLoadEvent(funky) {
|
||||
var oldonload=window.onload;
|
||||
if (typeof(oldonload)!='function') window.onload=funky;
|
||||
else window.onload=function() {
|
||||
if (oldonload) oldonload();
|
||||
funky();
|
||||
}
|
||||
}
|
||||
|
||||
addRVLoadEvent(climb_every_mountain);
|
||||
|
||||
function climb_every_mountain() {
|
||||
var c, i, j, k, l, t, x;
|
||||
set_width();
|
||||
for (i=0; i<ranges*2; i+=2) {
|
||||
still_is_the_night(i);
|
||||
still_is_the_night(i+1);
|
||||
j=0;
|
||||
k=Math.floor((0.4+Math.random()*0.6)*height*(ranges-i/2)/ranges);
|
||||
l=0;
|
||||
if (ranges>1) {
|
||||
c=Math.floor(ranges-i/2);
|
||||
c=colour_central((c-1)/(ranges-1));
|
||||
}
|
||||
else c=foreground;
|
||||
do {
|
||||
if (j<scwid) x=Math.floor((0.4+Math.random()*0.5)*height*(ranges-i/2)/ranges);
|
||||
else x=k;
|
||||
if (!j) l=x;
|
||||
t=createTriangle(x, c);
|
||||
t.style.left=j+"px";
|
||||
mranges[i].appendChild(t);
|
||||
t=createTriangle(x, c);
|
||||
t.style.left=k-j-2*x+"px";
|
||||
mranges[i+1].appendChild(t);
|
||||
j+=x;
|
||||
}
|
||||
while (j<=scwid+height);
|
||||
mlent[i]=mlent[i+1]=j-l;
|
||||
mposit[i]=0;
|
||||
mposit[i+1]=-mlent[i+1]-x+l;
|
||||
moff[i]=-l;
|
||||
moff[i+1]=2*j-mlent[i+1]-2*l;
|
||||
mranges[i].style.left=mposit[i]+moff[i]+"px";
|
||||
mranges[i+1].style.left=mposit[i+1]+moff[i+1]+"px";
|
||||
document.body.appendChild(mranges[i]);
|
||||
document.body.appendChild(mranges[i+1]);
|
||||
}
|
||||
setInterval("move_every_mountain()", 50);
|
||||
}
|
||||
|
||||
function colour_central(p) {
|
||||
var i, h1, h2, temp;
|
||||
temp="#";
|
||||
for (i=1; i<6; i+=2) {
|
||||
h1=parseInt(foreground.substring(i,i+2),16);
|
||||
h2=parseInt(background.substring(i,i+2),16);
|
||||
temp+=dechex(Math.floor(h1+(h2-h1)*p));
|
||||
}
|
||||
return (temp);
|
||||
}
|
||||
|
||||
function dechex(dec) { return ((dec<16)?"0":"")+dec.toString(16); }
|
||||
|
||||
function still_is_the_night(i) {
|
||||
mranges[i]=document.createElement('div');
|
||||
mranges[i].style.position='fixed';
|
||||
mranges[i].style.zIndex=i;
|
||||
mranges[i].style.left='0px';
|
||||
mranges[i].style.bottom='0px';
|
||||
mranges[i].style.width='100%';
|
||||
mranges[i].style.opacity=Math.floor(1+i/2)/ranges;
|
||||
}
|
||||
|
||||
function move_every_mountain() {
|
||||
var i;
|
||||
for (i=0; i<ranges*2; i++) {
|
||||
mposit[i]+=dx*(Math.floor(i/2)+1);
|
||||
if (mposit[i]>scwid) mposit[i]-=2*mlent[i];
|
||||
if (mposit[i]<-mlent[i]) mposit[i]+=2*mlent[i];
|
||||
mranges[i].style.left=mposit[i]+moff[i]+"px";
|
||||
}
|
||||
}
|
||||
|
||||
window.onresize=set_width;
|
||||
function set_width() {
|
||||
var sw_min=999999;
|
||||
var sh_min=999999;
|
||||
if (document.documentElement && document.documentElement.clientWidth) {
|
||||
if (document.documentElement.clientWidth>0) sw_min=document.documentElement.clientWidth;
|
||||
if (document.documentElement.clientHeight>0) sh_min=document.documentElement.clientHeight;
|
||||
}
|
||||
else if (typeof(self.innerWidth)=='number' && self.innerWidth) {
|
||||
if (self.innerWidth>0 && self.innerWidth<sw_min) sw_min=self.innerWidth;
|
||||
if (self.innerHeight>0 && self.innerHeight<sh_min) sh_min=self.innerHeight;
|
||||
}
|
||||
else if (document.body.clientWidth) {
|
||||
if (document.body.clientWidth>0 && document.body.clientWidth<sw_min) sw_min=document.body.clientWidth;
|
||||
if (document.body.clientHeight>0 && document.body.clientHeight<sh_min) sh_min=document.body.clientHeight;
|
||||
}
|
||||
if (sw_min==999999 || sh_min==999999) {
|
||||
sw_min=800;
|
||||
sh_min=600;
|
||||
}
|
||||
swide=sw_min;
|
||||
shigh=sh_min;
|
||||
}
|
||||
|
||||
function createTriangle(x, colour) {
|
||||
var div=document.createElement("div");
|
||||
div.style.position='absolute';
|
||||
div.style.left='0px';
|
||||
div.style.bottom='0px';
|
||||
div.style.height='0px';
|
||||
div.style.width='0px';
|
||||
div.style.borderStyle='solid';
|
||||
div.style.borderColor=colour+' transparent';
|
||||
div.style.borderWidth='0px '+x+'px '+x+'px '+x+'px';
|
||||
return (div);
|
||||
}
|
||||
|
||||
window.onscroll=set_scroll;
|
||||
function set_scroll() {
|
||||
if (typeof(self.pageYOffset)=='number') {
|
||||
sleft=self.pageXOffset;
|
||||
}
|
||||
else if (document.body && (document.body.scrollTop || document.body.scrollLeft)) {
|
||||
sleft=document.body.scrollLeft;
|
||||
}
|
||||
else if (document.documentElement && (document.documentElement.scrollTop || document.documentElement.scrollLeft)) {
|
||||
sleft=document.documentElement.scrollLeft;
|
||||
}
|
||||
else {
|
||||
sleft=0;
|
||||
}
|
||||
}
|
||||
|
||||
document.onmousemove=mouse;
|
||||
function mouse(e) {
|
||||
var x;
|
||||
if (e) x=e.pageX;
|
||||
else {
|
||||
x=event.x;
|
||||
set_scroll();
|
||||
x+=sleft;
|
||||
}
|
||||
dx=Math.floor(-1.5+4*(x-sleft)/swide);
|
||||
}
|
||||
// ]]>
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<script>NekoType="black"</script>
|
||||
<h1 id=nl><script src="https://webneko.net/n20171213.js"></script></h1>
|
||||
<!--<h1>Welcome to doofensmirtz</h1>-->
|
||||
<header>
|
||||
<h1>About DoofOnline</h1>
|
||||
<p>last updated 11/5/25</p>
|
||||
<h3 class="quote">"Why was any and everything alive?"</h3>
|
||||
<p>-Miracle Musical</p>
|
||||
<p>welcome to doofensmirtz online! i'm your host, <strong title="AKA Retro1080">unfunny</strong>. this is a small passion project of mine and <noscript>... what's this? you have javascript turned off? lame. go turn it on lol. uhhhh.... anyways, this was</noscript> my first HTML project that i actually published online :) <br> things have changed a lot in the almost 3 years since then, so here we are</p>
|
||||
<br>
|
||||
|
||||
<img src="/anibar.gif">
|
||||
<br>
|
||||
<h2>but why?</h2>
|
||||
<p>i wanted to try to teach myself (very basic, lol) HTML. it's also a place for me to publish and link to all of the other shenanigans i've been up to.</p>
|
||||
<p>there's a lot of unused content scattered around the site from various projects. i'll link you a couple.</p> <a href="/eternalrain/index.html" title="alt of eternal bliss"><p>Eternal Rain</p></a> <a href="/eternalbliss/" title="this was a chatroom, down for renovations rn but some day it will be back on the home page"><p>Eternal Bliss (Chatroom)</p></a> <a href="/staging/index.html" title="dunno"><p>Beta site warning (Unused)</p></a> <a href="/staging/conchkext.html" title="Page that a couple of my apps and scripts use to make sure that they have a functional connection."><p>Captive Portral Test Page</p></a>
|
||||
<h6><i>tip: hover over each link for some backstory!</i></h6>
|
||||
<h2>you know the name is misspelled, right?</h2>
|
||||
<p>yeah about that lol</p>
|
||||
<p>i forgot the "h" in the name when registering the site, and i just kinda ran with it ever since</p>
|
||||
<p>acutally there's a mirror i set up which is CORRECTLY spelled but it will auto redirect here if you don't specificaly go to like index2.html or something</p>
|
||||
<h2>the beta site is selfhosted?</h2>
|
||||
<p>correct! that's partially for storage and upload reasons but also because a lot of the more experimental branches <br>(for example, the MUSIC branch which is live on the beta site rn) contain file types that can't be uploaded to neocities (namely, MIDI and MP3))</p>
|
||||
<p>if you want to check it out, it's at <a href="https://evil.randomhack.com/">evil.randomhack.com</a></p>
|
||||
<h2>contact?</h2>
|
||||
<p>uhh i don't have an email setup for this yet BUT feel free to message me on discord: @unfunny_user</p>
|
||||
<iframe src="/buttons.html" height="125px" width="30%" frameborder="0"></iframe>
|
||||
|
||||
</header>
|
||||
@@ -8,6 +8,8 @@
|
||||
<!-- being lazy and re-using the same CSS > making a new one -->
|
||||
<link href="vault.css" rel="stylesheet" type="text/css" media="all">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<!--gotta remember to ALSO load midijs-->
|
||||
<script type='text/javascript' src='https://www.midijs.net/lib/midi.js'></script>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Libre+Barcode+39+Extended+Text&display=swap" rel="stylesheet">
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
@@ -15,13 +17,15 @@
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div class="autoplay-warning" id="autoplay">
|
||||
</div>
|
||||
<script>NekoType="black"</script>
|
||||
<h1 id=nl><script src="https://webneko.net/n20171213.js"></script></h1>
|
||||
<!--<h1>Welcome to doofensmirtz</h1>-->
|
||||
<header>
|
||||
<h1>Doofensmirtz Evil Incorperated Storage Services</h1>
|
||||
<h3 class="quote">"NOT open to the public, dont even ask."</h3>
|
||||
<p>-Dr. Heinz</p>
|
||||
<h3 class="quote">"Guarenteed to update some time in the next 9 quintillion years!"</h3>
|
||||
<p>-unfunny</p>
|
||||
</header>
|
||||
<p>mostly just random stuff and storage for neat things</p>
|
||||
<h2>links</h2>
|
||||
@@ -90,4 +94,53 @@
|
||||
<p class=quote>run by your cat overlords here at neocities.</p>
|
||||
<a href=/CAT.html> <img src="/cat overlord.png"> </a>
|
||||
</body>
|
||||
<script>
|
||||
function songmabober() {
|
||||
//this is actually code from minima and its absolutely NOT made for this BUT WHO CARES????
|
||||
//@ts-check
|
||||
randinte:
|
||||
console.log("yo whatap")
|
||||
console.log("picking a song...")
|
||||
let min = 0
|
||||
let max = 3
|
||||
let scarynumber = Math.random() * (max - min + 1) + min;
|
||||
let randint = Math.round(scarynumber)
|
||||
if (randint > max) {
|
||||
console.warn("number is bigger than ", max)
|
||||
console.warn("running it back")
|
||||
songmabober();
|
||||
}
|
||||
let song = "/Music/vault" + randint + ".mid"
|
||||
//randomize the songmabobers
|
||||
//just in case the user has autoplay disabled because they probably do
|
||||
MIDIjs.play(song, true);
|
||||
//idk if it's playing
|
||||
isplaying = "idk"
|
||||
//random ahh google code
|
||||
MIDIjs.player_callback = function(event) {
|
||||
// Check if event object contains time (indicating playback)
|
||||
if (event && event.time !== undefined) {
|
||||
isplaying = "true";
|
||||
} else {
|
||||
isplaying = "false";
|
||||
}
|
||||
};
|
||||
var apbox = document.getElementById("autoplay");
|
||||
console.log("waiting a bit for midijs")
|
||||
setTimeout(function(){
|
||||
checkAudio()
|
||||
}, 5000)
|
||||
function checkAudio() {
|
||||
if (isplaying == "false") {
|
||||
console.log("music isn't playing. i blame chrome")
|
||||
document.getElementById("autoplay").innerHTML = "<p>Music is playing, but your autoplay is turned off.</p><noscript>JS is off, MIDIjs won't be able to play audio anyways.</noscript> <button onclick=MIDIjs.play(song, true)>Play Music</button>"
|
||||
} else if (isplaying == "true"){
|
||||
console.log("music do be the playing")
|
||||
} else if (isplaying == "idk") {
|
||||
console.warn("idk if there be music")
|
||||
}
|
||||
}
|
||||
}
|
||||
songmabober()
|
||||
</script>
|
||||
</html>
|
||||
|
||||
@@ -21,7 +21,7 @@ href="https://webneko.net">Neko</a></h1>
|
||||
<header>
|
||||
<h1>Doofensmirtz Evil Incorperated Storage Services</h1>
|
||||
<h3 class="quote">"Futures, made of, virual insanity!"</h3>
|
||||
<p>-jamiroquai/p>
|
||||
<p>-jamiroquai</p>
|
||||
</header>
|
||||
<iframe width="100%" height="150" src="https://odesli.co/embed/?url=https%3A%2F%2Falbum.link%2Fi%2F1711512375&theme=dark" frameborder="0" allowfullscreen sandbox="allow-same-origin allow-scripts allow-presentation allow-popups allow-popups-to-escape-sandbox" allow="clipboard-read; clipboard-write"></iframe>
|
||||
<!--<iframe width="100%" height="150" src="https://odesli.co/embed/?url=https%3A%2F%2Fsong.link%2Fi%2F1636546199&theme=dark" frameborder="0" allowfullscreen sandbox="allow-same-origin allow-scripts allow-presentation allow-popups allow-popups-to-escape-sandbox" allow="clipboard-read; clipboard-write"></iframe>-->
|
||||
@@ -42,7 +42,13 @@ href="https://webneko.net">Neko</a></h1>
|
||||
<iframe width="100%" height="150" src="https://odesli.co/embed/?url=https%3A%2F%2Fsong.link%2Fi%2F1524983985&theme=dark" frameborder="0" allowfullscreen sandbox="allow-same-origin allow-scripts allow-presentation allow-popups allow-popups-to-escape-sandbox" allow="clipboard-read; clipboard-write"></iframe>
|
||||
<iframe width="100%" height="150" src="https://odesli.co/embed/?url=https%3A%2F%2Falbum.link%2Fi%2F299710177&theme=dark" frameborder="0" allowfullscreen sandbox="allow-same-origin allow-scripts allow-presentation allow-popups allow-popups-to-escape-sandbox" allow="clipboard-read; clipboard-write"></iframe>
|
||||
<iframe width="100%" height="150" src="https://odesli.co/embed/?url=https%3A%2F%2Falbum.link%2Fi%2F1546560761&theme=dark" frameborder="0" allowfullscreen sandbox="allow-same-origin allow-scripts allow-presentation allow-popups allow-popups-to-escape-sandbox" allow="clipboard-read; clipboard-write"></iframe>
|
||||
|
||||
<iframe width="100%" height="150" src="https://odesli.co/embed/?url=https%3A%2F%2Fsong.link%2Fi%2F1818714921&theme=dark" frameborder="0" allowfullscreen sandbox="allow-same-origin allow-scripts allow-presentation allow-popups allow-popups-to-escape-sandbox" allow="clipboard-read; clipboard-write"></iframe>
|
||||
<iframe width="100%" height="150" src="https://odesli.co/embed/?url=https%3A%2F%2Fsong.link%2Fi%2F1818714933&theme=dark" frameborder="0" allowfullscreen sandbox="allow-same-origin allow-scripts allow-presentation allow-popups allow-popups-to-escape-sandbox" allow="clipboard-read; clipboard-write"></iframe>
|
||||
<iframe width="100%" height="150" src="https://odesli.co/embed/?url=https%3A%2F%2Fsong.link%2Fi%2F1524983985&theme=dark" frameborder="0" allowfullscreen sandbox="allow-same-origin allow-scripts allow-presentation allow-popups allow-popups-to-escape-sandbox" allow="clipboard-read; clipboard-write"></iframe>
|
||||
<iframe width="100%" height="150" src="https://odesli.co/embed/?url=https%3A%2F%2Fsong.link%2Fi%2F1768087319&theme=dark" frameborder="0" allowfullscreen sandbox="allow-same-origin allow-scripts allow-presentation allow-popups allow-popups-to-escape-sandbox" allow="clipboard-read; clipboard-write"></iframe>
|
||||
<iframe width="100%" height="150" src="https://odesli.co/embed/?url=https%3A%2F%2Falbum.link%2Fi%2F1658279822&theme=dark" frameborder="0" allowfullscreen sandbox="allow-same-origin allow-scripts allow-presentation allow-popups allow-popups-to-escape-sandbox" allow="clipboard-read; clipboard-write"></iframe>
|
||||
<iframe width="100%" height="150" src="https://odesli.co/embed/?url=https%3A%2F%2Fsong.link%2Fi%2F282478837&theme=dark" frameborder="0" allowfullscreen sandbox="allow-same-origin allow-scripts allow-presentation allow-popups allow-popups-to-escape-sandbox" allow="clipboard-read; clipboard-write"></iframe>
|
||||
|
||||
|
||||
<!--new song uploads from share sheet go here-->
|
||||
<!--robots cant see?-->
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
name: Deploy to Neocities
|
||||
description: Deploys the site to Neocities on release events.
|
||||
on:
|
||||
release:
|
||||
types: [published]
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Deploy to Neocities
|
||||
env:
|
||||
NEOCITIES_USERNAME: ${{ secrets.NEOCITIES_USERNAME }}
|
||||
NEOCITIES_TOKEN: ${{ secrets.NEOCITIES_TOKEN }}
|
||||
run: |
|
||||
npx neocities-cli upload --site mysite.neocities.org . --exclude actions/ --exclude .git
|
||||
39
cdphx.js
39
cdphx.js
@@ -1,39 +0,0 @@
|
||||
// Set the date we're counting down to
|
||||
var countDownDate = new Date("Jun 6, 2025 03:00:00");
|
||||
|
||||
function getBusinessDays(startDate, endDate) {
|
||||
var day = startDate.getDay();
|
||||
var businessDays = 0;
|
||||
while (startDate <= endDate) {
|
||||
if (day !== 0 && day !== 6) { // Skip weekends (Sunday=0, Saturday=6)
|
||||
businessDays++;
|
||||
}
|
||||
startDate.setDate(startDate.getDate() + 1);
|
||||
day = startDate.getDay();
|
||||
}
|
||||
return businessDays;
|
||||
}
|
||||
|
||||
//Update the count down every 1 second
|
||||
var x = setInterval(function() {
|
||||
|
||||
//Get today's date and time
|
||||
var now = new Date();
|
||||
var distance = getBusinessDays(now, countDownDate);
|
||||
|
||||
// Time calculations for days, hours, minutes and seconds
|
||||
var days = Math.floor(distance);
|
||||
var hours = Math.floor((distance % 1) * 24);
|
||||
var minutes = Math.floor((hours % 1) * 60);
|
||||
var seconds = Math.floor((minutes % 1) * 60);
|
||||
|
||||
// Display the result in the element with id="demo"
|
||||
document.getElementById("demo").innerHTML = days + "d " + hours + "h "
|
||||
+ minutes + "m " + seconds + "s remain";
|
||||
|
||||
// If the count down is finished, write some text
|
||||
if (distance < 0) {
|
||||
clearInterval(x);
|
||||
document.getElementById("demop").innerHTML = "freedom, at last";
|
||||
}
|
||||
}, 1000);
|
||||
@@ -1,3 +1,4 @@
|
||||
// THIS SHOULD NOT BE LOADED - Legacy redirect script, remove from all pages
|
||||
function isMyAppUA(testUA)
|
||||
{
|
||||
if(testUA == undefined) return false;
|
||||
|
||||
@@ -7,6 +7,10 @@
|
||||
color:white;
|
||||
padding-bottom: 100px;
|
||||
}
|
||||
a {
|
||||
color: darkgreen;
|
||||
filter: drop-shadow(1 1 5 black);
|
||||
}
|
||||
.vapor {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
|
||||
47
index.html
47
index.html
@@ -15,33 +15,53 @@
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<script src=compat.js></script>
|
||||
<!--gotta remember to ALSO load midijs-->
|
||||
<script type='text/javascript' src='//www.midijs.net/lib/midi.js'></script>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Sono&display=swap" rel="stylesheet">
|
||||
<link href="/normalbordem.css" rel="stylesheet" type="text/css" media="all">
|
||||
<link href="/BGMHUD.css" rel="stylesheet" type="text/css">
|
||||
</head>
|
||||
<body>
|
||||
<!-- song title display in top-right corner -->
|
||||
<div id="bgm-title">
|
||||
<span id="bgm-title-content"></span>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- BGM.js loads and will add .visible class when text is set -->
|
||||
<script src="/Music/bgm.js"></script>
|
||||
|
||||
<div class="autoplay-warning" id="autoplay">
|
||||
</div>
|
||||
<!-- [FC2 Analyzer] //analyzer.fc2.com/ -->
|
||||
<script language="javascript" src="//analyzer54.fc2.com/ana/processor.php?uid=2906964" type="text/javascript"></script>
|
||||
<noscript><div align="right"><img src="//analyzer54.fc2.com/ana/icon.php?uid=2906964&ref=&href=&wid=0&hei=0&col=0" /></div></noscript>
|
||||
<!-- [FC2 Analyzer] -->
|
||||
<header>
|
||||
<!--<h1 class="neon">Doofensmirtz Evil Incorperated</h1>-->
|
||||
<iframe class="animlogo "src="newlogo.html" height="140" width="480" frameborder="0"></iframe>
|
||||
<h3>revamp coming whenever </h3>
|
||||
<p>-retro</p>
|
||||
<iframe class="animlogo"src="newlogo.html" height="140" width="480" frameborder="0"></iframe>
|
||||
<h3>What if the earth was purple?</h3>
|
||||
<h4>purble palace?</h4>
|
||||
<p>-unfunny</p>
|
||||
<iframe width="100%" height="52" src="https://odesli.co/embed/?url=https%3A%2F%2Fsong.link%2Fi%2F938232964&theme=dark" frameborder="0" allowfullscreen sandbox="allow-same-origin allow-scripts allow-presentation allow-popups allow-popups-to-escape-sandbox" allow="clipboard-read; clipboard-write"></iframe>
|
||||
<script>NekoType="black"</script>
|
||||
<h1 id=nl><script src="https://webneko.net/n20171213.js"></script><a
|
||||
href="https://webneko.net"></a></h1>
|
||||
<a href="javascript("history.back();")"><img src=/WebTV.gif alt="WebTV City"></a>
|
||||
<a href="javascript:history.back();"><img src=/WebTV.gif alt="WebTV City"></a>
|
||||
|
||||
|
||||
</header>
|
||||
<a href=/Vault/index.html>Vault</a>
|
||||
<a href=/Games/index.html>Game ratings</a>
|
||||
<a href=/eternalbliss/index.html>e t e r n a l b l i s s</a>
|
||||
<a href="https://vote.pollcode.com/89737624">Video Game OST Poll</a>
|
||||
<!--Coming back- probably never. IF i get the AI Infinite "Ikea" concept to work then it might.-->
|
||||
<!-- Don't get your hopes up, there's no way i'm going to be able to just *run* something like that.-->
|
||||
<!--<a href=/eternalbliss/index.html>e t e r n a l b l i s s</a> -->
|
||||
<a href="https://odysee.com/@DoofOnline:1?r=9SCGZfYk6mBWdud9NuYVcbUbUpzS4QhY"><p>Animation</p></a>
|
||||
<a href="https://doofensmirtzevil.blogspot.com/"><p>The Bloginator</p></a>
|
||||
<!--<a href="https://evil.randomhack.com/"><strong>New beta website</strong></a>-->
|
||||
<!--<a href="https://evil.randomhack.com/"><strong>Beta website</strong></a>-->
|
||||
<br>
|
||||
<!--Make it make senseeeeeee-->
|
||||
<a href="/Vault/about.html">About</a>
|
||||
<br>
|
||||
<img src=anibar.gif>
|
||||
<br>
|
||||
@@ -61,8 +81,12 @@ href="https://webneko.net"></a></h1>
|
||||
<a href="//clap.fc2.com/post/doofensmirtzonline/?url=https%3A%2F%2Fdoofensmirtzevil.neocities.org%2F&title=DOOFENSMIRTZ+ONLINE" target="_blank" title="Web Clap by FC2"><img src="//clap.fc2.com/images/button/black/doofensmirtzonline?url=https%3A%2F%2Fdoofensmirtzevil.neocities.org%2F&lang=en" alt="Web Clap by FC2" style="border:none;" /></a>
|
||||
<!-- FC2 Clap tag ends here -->
|
||||
<h6>although no-one is ever going to sign this thing</h6>
|
||||
<h6 style="color: grey;">it would be pretty cool though</h6>
|
||||
<h3>featured thingamabob</h3>
|
||||
<iframe width="100%" height="150" src="https://odesli.co/embed/?url=https%3A%2F%2Falbum.link%2Fi%2F1809298605&theme=dark" frameborder="0" allowfullscreen sandbox="allow-same-origin allow-scripts allow-presentation allow-popups allow-popups-to-escape-sandbox" allow="clipboard-read; clipboard-write"></iframe>
|
||||
<iframe width="100%" height="150" src="https://odesli.co/embed/?url=https%3A%2F%2Falbum.link%2Fi%2F938227937&theme=dark" frameborder="0" allowfullscreen sandbox="allow-same-origin allow-scripts allow-presentation allow-popups allow-popups-to-escape-sandbox" allow="clipboard-read; clipboard-write"></iframe>
|
||||
<br>
|
||||
<h6>Don't worry, the featured mabober gets changed at least once every cycle</h6>
|
||||
<h6>probably (Who Knows 😁)</h6>
|
||||
<br>
|
||||
<p class="normalvaporwave">mmm crunchy xen crystals</p>
|
||||
<br>
|
||||
@@ -79,3 +103,10 @@ Current Viewers:<script language="javascript" type="text/javascript" src="//coun
|
||||
<!--<h6 style="color: grey">psst. if you get tired of all the flashy stuff, <a href=index2.html style="color: grey;">checck out the lite version of this site</a>.</h6>-->
|
||||
<h6 style="color: grey">brb, lite mode site is broken rn</h6>
|
||||
</body>
|
||||
<!-- noscript fallback for BGM.js user -->
|
||||
<noscript>
|
||||
<div style="position:fixed;top:10px;right:10px;background:#111;color:#ffeb3b;padding:8px 12px;border:2px solid yellow;border-radius:5px;font-family:'Sono',sans-serif;font-weight:bold;z-index:1000;">
|
||||
MIDI music requires JavaScript. This song title display won't work without it.
|
||||
</div>
|
||||
</noscript>
|
||||
</body>
|
||||
|
||||
39
index2.html
39
index2.html
@@ -20,34 +20,9 @@
|
||||
<header>
|
||||
<!--<h1 class="neon">Doofensmirtz Evil Incorperated</h1>-->
|
||||
<img src="newlogo.png" height="140" width="480">
|
||||
|
||||
<iframe src="newlogo.html" height="140" width="480" frameborder="0"></iframe>
|
||||
<h3 id="intro">we're leaving 2025 haa</h3>
|
||||
<p id="demo"></p>
|
||||
<br>
|
||||
<a href="winterrunning.html"<h4>countdown room</h4></a>
|
||||
<!--Temp random gen "borrowed" from minima-->
|
||||
<script>
|
||||
//@ts-check
|
||||
console.log("yo whatap")
|
||||
function newLine() {
|
||||
|
||||
console.log("GENERATING NEW FUNNI")
|
||||
let min = 0
|
||||
let max = 32
|
||||
let scarynumber = Math.random() * (max - min + 1) + min;
|
||||
let randint = Math.round(scarynumber)
|
||||
let lines = ["vexbolts mass unfollowing spread the word", "we are leaving vexbolts in 2024", "2025 please be better", "2025 wooop", "go go go", "I JUST WANT THIS YEAR TO BE OVERR", "yipee 2025", "now nothing bad happen this year, ok?", "2025 here i come", "its almost that year where michealsoft make you buy a new copy of windows", "idek", "go check out the <a href='winterr.html'>thingymabober</a>", "nah 2025 microsoft bring back webTV", "CONNECTING TO WEBTV 2025", "2025 here we go", "listening to the balatro OST while writing all these was awesome lol", "nah webTV 2025 edition", "i was suposed to write somthing here, but i didn't", "BREAKING NEWS: console wars over, Wii declared best console", "Gordon dosent need to hear all this, he's a highly trained professional!", "we are going back to da future", "let's hope this year's better than the last", "genos ult tsb = PC crasher", "browse our warez", "its gaming time mortyyyy", "MORTY I'M A PICKLE","chromebook crashing simulator 2025","real","WE ARE LEAVING VEXBOLTSS","' Excuse me, I'm in need of medical attention! '","meeedic","zat was not medicine","yeah","2025!"]
|
||||
console.log("random number:", randint)
|
||||
//32 lines randomly picked, probably will sometimes return "undefined" i hate JS
|
||||
console.log("line:", lines[randint])
|
||||
document.getElementById("intro").innerHTML = lines[randint]
|
||||
|
||||
}
|
||||
window.addEventListener('DOMContentLoaded', newLine);
|
||||
|
||||
</script>
|
||||
<!--end-->
|
||||
<h3>What if the earth was purple?</h3>
|
||||
<h4>purble palace?</h4>
|
||||
<p>-unfunny</p>
|
||||
<br>
|
||||
<a href="javascript:(history.back();)"><img src=/firework.gif alt="Fireworks"></a>
|
||||
|
||||
@@ -55,9 +30,12 @@ window.addEventListener('DOMContentLoaded', newLine);
|
||||
</header>
|
||||
<a href=/Vault/index.html>Vault</a>
|
||||
<a href=/Games/index.html>Game ratings</a>
|
||||
<a href=/eternalbliss/index.html>e t e r n a l b l i s s</a>
|
||||
<a href="https://vote.pollcode.com/89737624">Video Game OST Poll</a>
|
||||
<!-- <a href=/eternalbliss/index.html>e t e r n a l b l i s s</a> -->
|
||||
<a href="https://odysee.com/@DoofOnline:1?r=9SCGZfYk6mBWdud9NuYVcbUbUpzS4QhY"><p>Animation</p></a>
|
||||
<a href="https://doofensmirtzevil.blogspot.com/"><p>The Bloginator</p></a>
|
||||
<!--<a href="https://evil.randomhack.com/"><strong>Beta website</strong></a>-->
|
||||
<br>
|
||||
<a href="/Vault/about.html">About</a>
|
||||
<br>
|
||||
<hr style="color: yellow;">
|
||||
<br>
|
||||
@@ -74,6 +52,7 @@ window.addEventListener('DOMContentLoaded', newLine);
|
||||
<a href="//clap.fc2.com/post/doofensmirtzonline/?url=https%3A%2F%2Fdoofensmirtzevil.neocities.org%2F&title=DOOFENSMIRTZ+ONLINE" target="_blank" title="Web Clap by FC2"><img src="//clap.fc2.com/images/button/black/doofensmirtzonline?url=https%3A%2F%2Fdoofensmirtzevil.neocities.org%2F&lang=en" alt="Sign the Guest-Loginator!" style="border:none;" /></a>
|
||||
<!-- FC2 Clap tag ends here -->
|
||||
<h6>although no-one is ever going to sign this thing</h6>
|
||||
<h6 style="color: grey;">it would be pretty cool though</h6>
|
||||
<p class="normalvaporwave">mmm crunchy xen crystals</p>
|
||||
<br>
|
||||
<hr style="color: yellow;">
|
||||
|
||||
BIN
newlogo.png
Normal file
BIN
newlogo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 91 KiB |
@@ -5,7 +5,10 @@
|
||||
<link>https://doofensmirtzevil.neocities.org</link>
|
||||
<description>check out some new stuff. or not.</description>
|
||||
<item>
|
||||
<title>link central is out!</title>
|
||||
<title>this feed is ancient. get out.</title>
|
||||
<description>seriously, get out. go to the rss linked on the homepage, looser</title>
|
||||
</item>
|
||||
<item>
|
||||
<description><h1>hello!</h1><p>the link central is finally a thing after forever.</p><h6>now go check it out or something</h6></description>
|
||||
</item>
|
||||
</channel>
|
||||
|
||||
9
nginx.conf
Normal file
9
nginx.conf
Normal file
@@ -0,0 +1,9 @@
|
||||
server {
|
||||
listen 80;
|
||||
server_name localhost;
|
||||
|
||||
location / {
|
||||
root /usr/share/nginx/html;
|
||||
index index.html;
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,24 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<!--No way? No way! No way! No way! No way? No way! No way! No way! No way!-->
|
||||
<script type='text/javascript' src='//www.midijs.net/lib/midi.js'></script>
|
||||
<style>
|
||||
@keyframes scrollText {
|
||||
0% { transform: translateX(100%); }
|
||||
100% { transform: translateX(-100%); }
|
||||
}
|
||||
.scrolling-text {
|
||||
white-space: nowrap;
|
||||
animation: scrollText 25s linear infinite;
|
||||
font-family: 'Sono', sans-serif;
|
||||
color: #ffffff;
|
||||
font-size: 18px;
|
||||
padding: 10px;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
<meta charset="UTF-8">
|
||||
@@ -17,13 +35,18 @@
|
||||
<body>
|
||||
<!-- fc2 analyzer here to let me know what page stuff broke at..-->
|
||||
<!-- [FC2 Analyzer] //analyzer.fc2.com/ -->
|
||||
<script language="javascript" src="//analyzer54.fc2.com/ana/processor.php?uid=2906964" type="text/javascript"></script>
|
||||
<noscript><div align="right"><img src="//analyzer54.fc2.com/ana/icon.php?uid=2906964&ref=&href=&wid=0&hei=0&col=0" /></div></noscript>
|
||||
<script language="javascript" src="https://analyzer54.fc2.com/ana/processor.php?uid=2906964" type="text/javascript"></script>
|
||||
<noscript><div align="right"><img src="https://analyzer54.fc2.com/ana/icon.php?uid=2906964&ref=&href=&wid=0&hei=0&col=0" /></div></noscript>
|
||||
<!-- [FC2 Analyzer] -->
|
||||
<script>NekoType="black"</script>
|
||||
<h1 id=nl><script src="https://webneko.net/n20171213.js"></script><a
|
||||
href="https://webneko.net">Neko</a></h1>
|
||||
<div class="autoplay-warning" id="autoplay">
|
||||
</div>
|
||||
<!--<div class="scrolling-text">No way? No way! No way! No way! No way? No way! No way! No way!</div> -->
|
||||
<h1>404</h1>
|
||||
<div class="scrolling-text">No way? No way! No way! No way! No way? No way! No way! No way! No way? No way! No way! No way! No way? No way! No way! No way! No way? No way! No way! No way! No way? No way! No way! No way! No way? No way! No way! No way! No way? No way! No way! No way! No way? No way! No way! No way! No way? No way! No way! No way! No way? No way! No way! No way! No way? No way! No way! No way!</div>
|
||||
<br>
|
||||
<h3>Page Not Exsistant At This Time</h3>
|
||||
<p class="blink">whatcha tryna do pardner</p>
|
||||
whoops counter
|
||||
@@ -31,5 +54,35 @@ href="https://webneko.net">Neko</a></h1>
|
||||
<!-- FC2 Counter Starts here -->
|
||||
<script language="javascript" type="text/javascript" src="//counter1.fc2.com/counter.php?id=89507858"></script><noscript><img src="//counter1.fc2.com/counter_img.php?id=89507858" /></noscript>
|
||||
<!-- FC2 Counter Ends here -->
|
||||
</body>
|
||||
<script>
|
||||
//just in case the user has autoplay disabled because they probably do
|
||||
MIDIjs.play('/Music/noway.mid', true);
|
||||
//idk if it's playing
|
||||
isplaying = "idk"
|
||||
//random ahh google code
|
||||
MIDIjs.player_callback = function(event) {
|
||||
// Check if event object contains time (indicating playback)
|
||||
if (event && event.time !== undefined) {
|
||||
isplaying = "true";
|
||||
} else {
|
||||
isplaying = "false";
|
||||
}
|
||||
};
|
||||
var apbox = document.getElementById("autoplay");
|
||||
console.log("waiting a bit for midijs")
|
||||
setTimeout(function(){
|
||||
checkAudio()
|
||||
}, 5000)
|
||||
function checkAudio() {
|
||||
if (isplaying == "false") {
|
||||
console.log("music isn't playing. i blame chrome")
|
||||
document.getElementById("autoplay").innerHTML = "<p>Music is playing, but your autoplay is turned off.</p><noscript>JS is off, MIDIjs won't be able to play audio anyways.</noscript> <button onclick=MIDIjs.play(`/Music/noway.mid`, true)>Play Music</button>"
|
||||
} else if (isplaying == "true"){
|
||||
console.log("music do be the playing")
|
||||
} else if (isplaying == "idk") {
|
||||
console.warn("idk if there be music")
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
|
||||
23
serve.py
Normal file
23
serve.py
Normal file
@@ -0,0 +1,23 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Simple HTTP server for testing - runs in background"""
|
||||
import http.server
|
||||
import socketserver
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
PORT = 8080
|
||||
|
||||
class Handler(http.server.SimpleHTTPRequestHandler):
|
||||
def log_message(self, format, *args):
|
||||
pass # Suppress logging
|
||||
|
||||
def end_headers(self):
|
||||
self.send_header('Cache-Control', 'no-store, no-cache, must-revalidate')
|
||||
self.send_header('Expires', '0')
|
||||
super().end_headers()
|
||||
|
||||
if __name__ == "__main__":
|
||||
with socketserver.TCPServer(("", PORT), Handler) as httpd:
|
||||
print(f"Server running at http://localhost:{PORT}")
|
||||
sys.stdout.flush()
|
||||
httpd.serve_forever()
|
||||
53
skypecd.js
53
skypecd.js
@@ -1,53 +0,0 @@
|
||||
//time since
|
||||
// Set the date we're counting from
|
||||
//var countFromDate = new Date("Jun 11, 2025 5:00:00").getTime();
|
||||
|
||||
// Update the count every 1 second
|
||||
//var x = setInterval(function() {
|
||||
|
||||
// Get today's date and time
|
||||
//var nowsk = new Date().getTime();
|
||||
|
||||
// Find the distanceSK between now and the count from date
|
||||
//var distanceSK = now - countFromDate;
|
||||
|
||||
// Time calculations for daysSK, hours, minutes and secondsSK
|
||||
//var daysSK = Math.floor(distanceSK / (1000 * 60 * 60 * 24));
|
||||
//var hours = Math.floor((distanceSK % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
|
||||
//var minutes = Math.floor((distanceSK % (1000 * 60 * 60)) / (1000 * 60));
|
||||
//var secondsSK = Math.floor((distanceSK % (1000 * 60)) / 1000);
|
||||
// Display the result in the element with id="skype"
|
||||
// document.getElementById("skype").innerHTML = "you have " + daysSK + "d " + hours + "h "
|
||||
// + minutes + "m " + secondsSK + " until your freedom";
|
||||
|
||||
//}, 1000);
|
||||
//this is a countdown untill school ends
|
||||
//count down
|
||||
// Set the date we're counting down to
|
||||
var countDownDateS = new Date("May 6, 2025 00:00:00").getTime();
|
||||
|
||||
//Update the count down every 1 second
|
||||
var x = setInterval(function() {
|
||||
|
||||
//Get today's date and time
|
||||
var nowsk = new Date().getTime();
|
||||
|
||||
// Find the distance between nowsk and the count down date
|
||||
var distanceSK = countDownDateS - nowsk;
|
||||
|
||||
// Time calculations for daysSK, hours, minutes and secondsSK
|
||||
var daysSK = Math.floor(distanceSK / (1000 * 60 * 60 * 24));
|
||||
var hoursSK = Math.floor((distanceSK % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
|
||||
var minutesSK = Math.floor((distanceSK % (1000 * 60 * 60)) / (1000 * 60));
|
||||
var secondsSK = Math.floor((distanceSK % (1000 * 60)) / 1000);
|
||||
|
||||
// Display the result in the element with id="skype"
|
||||
document.getElementById("skype").innerHTML = daysSK + "d " + hoursSK + "h "
|
||||
+ minutesSK + "m " + secondsSK + "s remain until doomsday.";
|
||||
|
||||
// If the count down is finished, write some text
|
||||
if (distanceSK < 0) {
|
||||
clearInterval(x);
|
||||
document.getElementById("skype").innerHTML = "ggs boys";
|
||||
}
|
||||
}, 1000);
|
||||
51
test-bgm.html
Normal file
51
test-bgm.html
Normal file
@@ -0,0 +1,51 @@
|
||||
<!DOCTYPE html>
|
||||
<head>
|
||||
<title>BGM.js Test - Song Title Display</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<!-- Google Fonts - Sono font family -->
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Sono&display=swap" rel="stylesheet">
|
||||
<!-- MIDI.js MUST load first - in head section -->
|
||||
<script type='text/javascript' src='//www.midijs.net/lib/midi.js'></script>
|
||||
<link href="/normalbordem.css" rel="stylesheet" type="text/css">
|
||||
<link href="/BGMHUD.css" rel="stylesheet" type="text/css">
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<h1>BGM.js Song Title Test</h1>
|
||||
<p>The song title should appear in the top-right corner immediately.</p>
|
||||
<a href="index.html">← Back to main site</a>
|
||||
</header>
|
||||
|
||||
<section>
|
||||
<h2>Test Checklist</h2>
|
||||
<ul>
|
||||
<li>✅ Song title appears in top-right corner</li>
|
||||
<li>✅ Title is readable (yellow text on dark background)</li>
|
||||
<li>✅ Title matches current song from randomizer</li>
|
||||
<li>✅ Loading order: MIDI.js → BGM.js → Title element</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<!-- Song title display element in top-right corner -->
|
||||
<div id="bgm-title">
|
||||
<span id="bgm-title-content"></span>
|
||||
</div>
|
||||
|
||||
<!-- BGM.js loads after MIDI.js and will add .visible class when text is set -->
|
||||
<script src="/Music/bgm.js"></script>
|
||||
|
||||
<!-- Change song every 30 seconds -->
|
||||
<script>
|
||||
setInterval(function() {
|
||||
SongRNG('30 second interval');
|
||||
}, 30000);
|
||||
</script>
|
||||
|
||||
<footer>
|
||||
<p><small>Auto-changes song every 30 seconds (inline script)</small></p>
|
||||
<p><small>Click refresh to stop auto-refresh</small></p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
147
test-debug.html
Normal file
147
test-debug.html
Normal file
@@ -0,0 +1,147 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>BGM.js Debug Test</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<style>
|
||||
body {
|
||||
font-family: monospace;
|
||||
background: #111;
|
||||
color: #0f0;
|
||||
padding: 20px;
|
||||
}
|
||||
.debug {
|
||||
background: #000;
|
||||
border: 2px solid #0f0;
|
||||
padding: 10px;
|
||||
margin: 10px 0;
|
||||
}
|
||||
.error { color: #f00; }
|
||||
.success { color: #0f0; }
|
||||
h1 { color: #ff0; }
|
||||
</style>
|
||||
<link href="/BGMHUD.css" rel="stylesheet" type="text/css">
|
||||
</head>
|
||||
<body>
|
||||
<h1>🎵 BGM.js Debug Test</h1>
|
||||
|
||||
<div class="debug">
|
||||
<h2>Debug Console</h2>
|
||||
<div id="debug-output"></div>
|
||||
</div>
|
||||
|
||||
<div class="debug">
|
||||
<h2>DOM Check</h2>
|
||||
<div id="dom-check"></div>
|
||||
</div>
|
||||
|
||||
<div class="debug">
|
||||
<h2>CSS Check</h2>
|
||||
<div id="css-check"></div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
function debugOutput(msg, type) {
|
||||
var output = document.getElementById('debug-output');
|
||||
var p = document.createElement('p');
|
||||
if (type === 'error') {
|
||||
p.className = 'error';
|
||||
} else if (type === 'success') {
|
||||
p.className = 'success';
|
||||
}
|
||||
p.textContent = '[' + new Date().toLocaleTimeString() + '] ' + msg;
|
||||
output.appendChild(p);
|
||||
console.log(msg);
|
||||
}
|
||||
|
||||
function checkDOM() {
|
||||
var output = document.getElementById('dom-check');
|
||||
var titleEl = document.getElementById('bgm-title');
|
||||
|
||||
if (titleEl) {
|
||||
output.innerHTML = '<p class="success">✅ #bgm-title element found</p>';
|
||||
output.innerHTML += '<p>Element content: "' + titleEl.textContent + '"</p>';
|
||||
output.innerHTML += '<p>Computed display: ' + getComputedStyle(titleEl).display + '</p>';
|
||||
output.innerHTML += '<p>Computed visibility: ' + getComputedStyle(titleEl).visibility + '</p>';
|
||||
output.innerHTML += '<p>Computed opacity: ' + getComputedStyle(titleEl).opacity + '</p>';
|
||||
output.innerHTML += '<p>Computed position: ' + getComputedStyle(titleEl).position + '</p>';
|
||||
output.innerHTML += '<p>Has .visible class: ' + titleEl.classList.contains('visible') + '</p>';
|
||||
|
||||
// Check computed styles
|
||||
var styles = getComputedStyle(titleEl);
|
||||
if (styles.top === 'auto' || styles.top === '0px') {
|
||||
output.innerHTML += '<p class="error">⚠️ WARNING: top position may be incorrect</p>';
|
||||
}
|
||||
} else {
|
||||
output.innerHTML = '<p class="error">❌ #bgm-title element NOT found in DOM</p>';
|
||||
}
|
||||
}
|
||||
|
||||
function checkCSS() {
|
||||
var output = document.getElementById('css-check');
|
||||
var titleEl = document.getElementById('bgm-title');
|
||||
|
||||
if (titleEl) {
|
||||
var styles = getComputedStyle(titleEl);
|
||||
output.innerHTML = '<p>Top: ' + styles.top + '</p>';
|
||||
output.innerHTML += '<p>Right: ' + styles.right + '</p>';
|
||||
output.innerHTML += '<p>Position: ' + styles.position + '</p>';
|
||||
output.innerHTML += '<p>Background: ' + styles.backgroundColor + '</p>';
|
||||
output.innerHTML += '<p>Color: ' + styles.color + '</p>';
|
||||
output.innerHTML += '<p>Border: ' + styles.border + '</p>';
|
||||
output.innerHTML += '<p>Border-radius: ' + styles.borderRadius + '</p>';
|
||||
|
||||
// Check if bgm-title is in normalbordem.css
|
||||
output.innerHTML += '<p>Font-family: ' + styles.fontFamily + '</p>';
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<!-- Song title display element -->
|
||||
<div id="bgm-title">Loading...</div>
|
||||
|
||||
<!-- Load MIDI.js first -->
|
||||
<script>
|
||||
debugOutput('Loading MIDI.js...');
|
||||
</script>
|
||||
<script type='text/javascript' src='//www.midijs.net/lib/midi.js'></script>
|
||||
|
||||
<!-- Show title visibility script -->
|
||||
<script>
|
||||
debugOutput('Running visibility script...');
|
||||
var titleEl = document.getElementById('bgm-title');
|
||||
if (titleEl) {
|
||||
titleEl.classList.add('visible');
|
||||
debugOutput('Added .visible class to #bgm-title');
|
||||
} else {
|
||||
debugOutput('ERROR: #bgm-title element not found!', 'error');
|
||||
}
|
||||
</script>
|
||||
|
||||
<!-- Load BGM.js after MIDI.js -->
|
||||
<script>
|
||||
debugOutput('Loading BGM.js...');
|
||||
</script>
|
||||
<script src="/Music/bgm.js"></script>
|
||||
|
||||
<!-- Final check -->
|
||||
<script>
|
||||
setTimeout(function() {
|
||||
debugOutput('Final check after 2 seconds...');
|
||||
checkDOM();
|
||||
checkCSS();
|
||||
}, 2000);
|
||||
</script>
|
||||
|
||||
<div class="debug">
|
||||
<h2>Instructions</h2>
|
||||
<p>1. Check the "Debug Console" above for loading messages</p>
|
||||
<p>2. Check "DOM Check" to see if #bgm-title exists and its properties</p>
|
||||
<p>3. Check "CSS Check" to see computed styles</p>
|
||||
<p>4. Look for a YELLOW BOX in the TOP-RIGHT CORNER of this page</p>
|
||||
<p>5. Open DevTools Console (F12) for more details</p>
|
||||
</div>
|
||||
|
||||
<p><a href="index.html">← Back to main site</a></p>
|
||||
</body>
|
||||
</html>
|
||||
28
test.py
Normal file
28
test.py
Normal file
@@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env python3
|
||||
# Simple HTTP Test Server
|
||||
# Run: python test.py [port]
|
||||
import http.server
|
||||
import socketserver
|
||||
|
||||
def main():
|
||||
PORT = int(sys.argv[1]) if len(sys.argv) > 1 else 8080
|
||||
print(f"Serving at http://localhost:{PORT}")
|
||||
print("Test pages:")
|
||||
print(" /test-bgm.html - BGM.js song title test")
|
||||
print()
|
||||
print("Available files at:")
|
||||
print(" /index.html")
|
||||
print(" /Music/bgm.js")
|
||||
print()
|
||||
|
||||
handler = http.server.SimpleHTTPRequestHandler
|
||||
httpd = socketserver.TCPServer(("", PORT), handler)
|
||||
|
||||
try:
|
||||
httpd.serve_forever()
|
||||
except KeyboardInterrupt:
|
||||
print("\nStopped.")
|
||||
|
||||
if __name__ == "__main__":
|
||||
import sys
|
||||
main()
|
||||
10
test.sh
Executable file
10
test.sh
Executable file
@@ -0,0 +1,10 @@
|
||||
#!/bin/bash
|
||||
echo "Bulding image..."
|
||||
docker build -t doof .
|
||||
echo "Running container. remember to delete unless you like your storage being used up"
|
||||
echo "Deleting old container if it exists..."
|
||||
docker rm -f doofonline_container
|
||||
echo "Starting new container..."
|
||||
docker run -d -p 80:80 --name doofonline_container doof
|
||||
echo "Live, opening browser..."
|
||||
xdg-open http://localhost
|
||||
Reference in New Issue
Block a user