Add YouTube Music now-playing server, OBS overlay, and browser extension
Node.js server on port 9095 receives now-playing data via POST and broadcasts to connected WebSocket clients. Includes a Firefox/Chrome extension that scrapes YouTube Music's player bar every 3s, an OBS-ready transparent overlay with animated equalizer bars, and an image proxy to bypass CDN restrictions in OBS. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
// YTMusic Now Playing - Popup Script
|
||||
|
||||
(function () {
|
||||
"use strict";
|
||||
|
||||
const DEFAULT_SERVER_URL = "http://localhost:9095";
|
||||
const serverUrlInput = document.getElementById("serverUrl");
|
||||
const saveBtn = document.getElementById("save");
|
||||
const statusEl = document.getElementById("status");
|
||||
|
||||
function setStatus(message, type) {
|
||||
statusEl.textContent = message;
|
||||
statusEl.className = `status-${type}`;
|
||||
}
|
||||
|
||||
// Load saved URL on popup open
|
||||
chrome.storage.sync.get({ serverUrl: DEFAULT_SERVER_URL }, (result) => {
|
||||
serverUrlInput.value = result.serverUrl;
|
||||
checkConnection(result.serverUrl);
|
||||
});
|
||||
|
||||
// Save button handler
|
||||
saveBtn.addEventListener("click", () => {
|
||||
const url = serverUrlInput.value.trim().replace(/\/+$/, "");
|
||||
if (!url) {
|
||||
setStatus("Please enter a valid URL.", "err");
|
||||
return;
|
||||
}
|
||||
chrome.storage.sync.set({ serverUrl: url }, () => {
|
||||
setStatus("Saved!", "ok");
|
||||
checkConnection(url);
|
||||
});
|
||||
});
|
||||
|
||||
// Check connection to the server
|
||||
async function checkConnection(url) {
|
||||
try {
|
||||
const response = await fetch(`${url}/api/now-playing`, {
|
||||
method: "GET",
|
||||
});
|
||||
if (response.ok) {
|
||||
setStatus("Connected to server.", "ok");
|
||||
} else {
|
||||
setStatus(`Server returned ${response.status}.`, "err");
|
||||
}
|
||||
} catch (err) {
|
||||
setStatus("Cannot reach server.", "err");
|
||||
}
|
||||
}
|
||||
})();
|
||||
Reference in New Issue
Block a user