// ==UserScript== // @name Audio Tab Title // @description Change the window title on YouTube based on the channel name and video title, and append "- Spotify" to the title on Spotify pages. // @version 0.2.1 // @namespace itsafeature.org // @author Geoffrey De Belie (Smile4ever) // @license Unlicense // @match https://www.youtube.com/watch?v=* // @match https://open.spotify.com/* // @grant none // @downloadURL none // ==/UserScript== (function() { 'use strict'; // Function to update the title on YouTube function updateYouTubeTitle() { const channelElement = document.querySelector('a.yt-simple-endpoint.style-scope.yt-formatted-string'); const videoTitleElement = document.querySelector('#above-the-fold #title'); if (channelElement && videoTitleElement) { const channelName = channelElement.innerText.split(' - ')[0]; const videoTitle = videoTitleElement.innerText; if(videoTitle.includes(" - ")) return; // Set the window title for YouTube document.title = `${channelName} - ${videoTitle} - YouTube`; } } // Function to update the title on Spotify function updateSpotifyTitle() { const titleElement = document.querySelector('title'); // Get the element if (titleElement.innerText.includes(" - Spotify") == false) { titleElement.innerText = `${titleElement.innerText} - Spotify`; // Set the title's innerText for Spotify } } // Function to check for the current platform (YouTube or Spotify) function updateTitle() { if (window.location.hostname.includes('youtube.com')) { updateYouTubeTitle(); } else if (window.location.hostname.includes('spotify.com')) { updateSpotifyTitle(); } } // Optionally, observe changes in the page if the title might update after load const observer = new MutationObserver(updateTitle); observer.observe(document.body, { childList: true, subtree: true }); // Wait for the page content to load before running the updateTitle function window.addEventListener('load', updateTitle); // Set an interval to check the title every second on Spotify pages only /*if (window.location.hostname.includes('spotify.com')) { setInterval(() => { updateSpotifyTitle(); // Update the title every second on Spotify }, 1000); // 1 second interval }*/ })();