Greasy Fork

Greasy Fork is available in English.

Audio Tab Title

Change the window title on YouTube based on the channel name and video title, and append "- Spotify" to the title on Spotify pages.

当前为 2025-02-02 提交的版本,查看 最新版本

// ==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
// ==/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 <title> 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
    }*/
})();