Greasy Fork is available in English.

Remplacement des liens et des intégrations YouTube par des liens Piped sur tous les sites web

Remplace les liens et les intégrations YouTube par des liens Piped.video dans le HTML sur tous les sites web.

// ==UserScript==
// @name            YouTube to Piped Links and Embeds Replacer on all websites
// @description     Replaces YouTube links and embeds with Piped.video links in the HTML on all websites.
// @name:af         YouTube na Piped skakels en ingebedde vervanger op alle webwerwe
// @description:af  Vervang YouTube-skakels en ingebedde met Piped.video-skakels in die HTML op alle webwerwe.
// @name:ar         استبدال روابط وتضمينات YouTube بـ Piped على جميع المواقع الإلكترونية
// @description:ar  يستبدل روابط YouTube والتضمينات بروابط Piped.video في HTML على جميع المواقع الإلكترونية.
// @name:az         Bütün veb saytlarda YouTube bağlantılarını və yerləşdirmələri Piped bağlantıları ilə əvəz edir
// @description:az  Bütün veb saytlarda HTML-də YouTube bağlantılarını və yerləşdirmələri Piped.video bağlantıları ilə əvəz edir.
// @name:bg         Замяна на YouTube връзки и вградени с Piped връзки на всички уебсайтове
// @description:bg  Замества YouTube връзки и вградени с Piped.video връзки в HTML на всички уебсайтове.
// @name:bn         সমস্ত ওয়েবসাইটে YouTube লিঙ্ক এবং এমবেড প্রতিস্থাপন Piped লিঙ্ক দিয়ে
// @description:bn  সমস্ত ওয়েবসাইটের HTML-এ YouTube লিঙ্ক এবং এমবেডগুলি Piped.video লিঙ্ক দিয়ে প্রতিস্থাপন করে।
// @name:ca         Substitució d'enllaços i incrustacions de YouTube per enllaços de Piped a tots els llocs web
// @description:ca  Substitueix els enllaços i incrustacions de YouTube per enllaços de Piped.video en el HTML de tots els llocs web.
// @name:cs         Nahrazení odkazů a vložení YouTube za odkazy Piped na všech webových stránkách
// @description:cs  Nahrazuje odkazy a vložení YouTube za odkazy Piped.video v HTML na všech webových stránkách.
// @name:da         Udskiftning af YouTube-links og indlejringer med Piped-links på alle websteder
// @description:da  Erstatter YouTube-links og indlejringer med Piped.video-links i HTML på alle websteder.
// @name:de         Ersetzen von YouTube-Links und Einbettungen durch Piped-Links auf allen Websites
// @description:de  Ersetzt YouTube-Links und Einbettungen durch Piped.video-Links im HTML auf allen Websites.
// @name:el         Αντικατάσταση συνδέσμων και ενσωματώσεων YouTube με συνδέσμους Piped σε όλους τους ιστότοπους
// @description:el  Αντικαθιστά τους συνδέσμους και τις ενσωματώσεις YouTube με συνδέσμους Piped.video στο HTML σε όλους τους ιστότοπους.
// @name:eo         Anstataŭigo de YouTube-ligoj kaj enkorpigoj per Piped-ligoj sur ĉiuj retejoj
// @description:eo  Anstataŭigas YouTube-ligojn kaj enkorpigojn per Piped.video-ligoj en la HTML sur ĉiuj retejoj.
// @name:es         Reemplazo de enlaces y incrustaciones de YouTube por enlaces de Piped en todos los sitios web
// @description:es  Reemplaza los enlaces y las incrustaciones de YouTube por enlaces de Piped.video en el HTML de todos los sitios web.
// @name:fi         YouTube-linkkien ja upotusten korvaaminen Piped-linkeillä kaikilla verkkosivustoilla
// @description:fi  Korvaa YouTube-linkit ja upotukset Piped.video-linkeillä HTML:ssä kaikilla verkkosivustoilla.
// @name:fr         Remplacement des liens et des intégrations YouTube par des liens Piped sur tous les sites web
// @description:fr  Remplace les liens et les intégrations YouTube par des liens Piped.video dans le HTML sur tous les sites web.
// @name:gl         Substitución de ligazóns e insercións de YouTube por ligazóns de Piped en todos os sitios web
// @description:gl  Substitúe as ligazóns e insercións de YouTube por ligazóns de Piped.video no HTML de todos os sitios web.
// @name:he         החלפת קישורים והטמעות של YouTube בקישורי Piped בכל האתרים
// @description:he  מחליף את קישורי YouTube וההטמעות בקישורי Piped.video ב-HTML בכל האתרים.
// @name:hi         सभी वेबसाइटों पर YouTube लिंक और एंबेड को Piped लिंक से बदलें
// @description:hi  सभी वेबसाइटों पर HTML में YouTube लिंक और एंबेड को Piped.video लिंक से बदलता है।
// @name:hu         YouTube-hivatkozások és beágyazások cseréje Piped-hivatkozásokra minden webhelyen
// @description:hu  YouTube-hivatkozások és beágyazások cseréje Piped.video-hivatkozásokra a HTML-ben minden webhelyen.
// @name:id         Pengganti tautan dan sematan YouTube dengan tautan Piped di semua situs web
// @description:id  Mengganti tautan dan sematan YouTube dengan tautan Piped.video di HTML di semua situs web.
// @name:is         Skipta út YouTube tenglum og ívafi með Piped tenglum á öllum vefsíðum
// @description:is  Skipta út YouTube tenglum og ívafi með Piped.video tenglum í HTML á öllum vefsíðum.
// @name:it         Sostituzione dei collegamenti e incorporamenti di YouTube con collegamenti Piped su tutti i siti web
// @description:it  Sostituisce i collegamenti e gli incorporamenti di YouTube con collegamenti Piped.video nell'HTML su tutti i siti web.
// @name:ja         すべてのウェブサイトでYouTubeリンクと埋め込みをPipedリンクに置き換えます
// @description:ja  すべてのウェブサイトでHTML内のYouTubeリンクと埋め込みをPiped.videoリンクに置き換えます。
// @name:km         ប្តូរតំណ និងបង្កប់ YouTube ជា Piped លើគេហទំព័រទាំងអស់
// @description:km  ប្តូរតំណ និងបង្កប់ YouTube ជាតំណ Piped.video ក្នុង HTML នៅលើគេហទំព័រទាំងអស់។
// @name:ko         모든 웹사이트에서 YouTube 링크와 임베드를 Piped 링크로 대체
// @description:ko  모든 웹사이트의 HTML에서 YouTube 링크와 임베드를 Piped.video 링크로 대체합니다.
// @name:ms         Gantikan pautan dan sematan YouTube dengan pautan Piped di semua laman web
// @description:ms  Menggantikan pautan dan sematan YouTube dengan pautan Piped.video dalam HTML di semua laman web.
// @name:mt         Sostituzzjoni ta' links u embeds ta' YouTube b'links ta' Piped fuq il-websajts kollha
// @description:mt  Jissostitwixxi links u embeds ta' YouTube b'links ta' Piped.video fil-HTML fuq il-websajts kollha.
// @name:nb         Erstatte YouTube-lenker og innebygginger med Piped-lenker på alle nettsteder
// @description:nb  Erstatter YouTube-lenker og innebygginger med Piped.video-lenker i HTML på alle nettsteder.
// @name:nl         Vervang YouTube-links en ingesloten inhoud door Piped-links op alle websites
// @description:nl  Vervangt YouTube-links en ingesloten inhoud door Piped.video-links in de HTML op alle websites.
// @name:pl         Zamiana linków i osadzonych treści YouTube na linki Piped na wszystkich stronach internetowych
// @description:pl  Zamienia linki i osadzone treści YouTube na linki Piped.video w HTML na wszystkich stronach internetowych.
// @name:pt         Substituição de links e incorporações do YouTube por links do Piped em todos os sites
// @description:pt  Substitui links e incorporações do YouTube por links do Piped.video no HTML em todos os sites.
// @name:ro         Înlocuirea linkurilor și încorporărilor YouTube cu linkuri Piped pe toate site-urile web
// @description:ro  Înlocuiește linkurile și încorporările YouTube cu linkuri Piped.video în HTML pe toate site-urile web.
// @name:ru         Замена ссылок и встраиваний YouTube на ссылки Piped на всех веб-сайтах
// @description:ru  Заменяет ссылки и встраивания YouTube на ссылки Piped.video в HTML на всех веб-сайтах.
// @name:sr         Замена линкова и уградње YouTube са Piped линковима на свим веб сајтовима
// @description:sr  Замењује линкове и уградње YouTube са Piped.video линковима у HTML на свим веб сајтовима.
// @name:sv         Ersätt YouTube-länkar och inbäddningar med Piped-länkar på alla webbplatser
// @description:sv  Ersätter YouTube-länkar och inbäddningar med Piped.video-länkar i HTML på alla webbplatser.
// @name:th         แทนที่ลิงก์และการฝัง YouTube ด้วยลิงก์ Piped บนเว็บไซต์ทั้งหมด
// @description:th  แทนที่ลิงก์และการฝัง YouTube ด้วยลิงก์ Piped.video ใน HTML บนเว็บไซต์ทั้งหมด
// @name:tl         Palitan ang mga link at embed ng YouTube ng mga link ng Piped sa lahat ng mga website
// @description:tl  Pinapalitan ang mga link at embed ng YouTube ng mga link ng Piped.video sa HTML sa lahat ng mga website.
// @name:tr         Tüm web sitelerinde YouTube bağlantılarını ve gömme kodlarını Piped bağlantılarıyla değiştirir
// @description:tr  Tüm web sitelerinde YouTube bağlantılarını ve gömme kodlarını HTML'de Piped.video bağlantılarıyla değiştirir.
// @name:uk         Заміна посилань і вбудовувань YouTube на посилання Piped на всіх веб-сайтах
// @description:uk  Заміщує посилання та вбудовування YouTube на посилання Piped.video в HTML на всіх веб-сайтах.
// @name:vi         Thay thế các liên kết và nhúng YouTube bằng liên kết Piped trên tất cả các trang web
// @description:vi  Thay thế các liên kết và nhúng YouTube bằng liên kết Piped.video trong HTML trên tất cả các trang web.
// @name:zh         将所有网站上的YouTube链接和嵌入替换为Piped链接
// @description:zh  将所有网站上的HTML中的YouTube链接和嵌入替换为Piped.video链接。
// @match           *://*/*
// @exclude         *://*.youtube.com/*
// @icon            https://gitlab.com/uploads/-/system/project/avatar/59164083/youtube-to-piped.jpg
// @version         1.1.2
// @author          BreatFR
// @copyright       2024, BreatFR (https://breat.fr)
// @grant           none
// @namespace       https://gitlab.com/breatfr
// @homepageURL     https://gitlab.com/breatfr/youtube-to-piped-links-and-embeds-replacer-on-all-websites
// @supportURL      https://discord.gg/Q8KSHzdBxs
// @license         AGPL-3.0-or-later; https://www.gnu.org/licenses/agpl-3.0.txt
// ==/UserScript==

(function() {
    'use strict';

    // Fonction pour remplacer les liens YouTube par des liens Piped.video dans le HTML
    function replaceYouTubeLinks() {
        var links = document.getElementsByTagName('a');
        for (var i = 0; i < links.length; i++) {
            var link = links[i];
            if (link.href.includes('youtube.com/watch?v=')) {
                var videoId = link.href.split('v=')[1];
                var ampersandPosition = videoId.indexOf('&');
                if (ampersandPosition !== -1) {
                    videoId = videoId.substring(0, ampersandPosition);
                }
                link.href = 'https://piped.video/watch?v=' + videoId;
                fetchMetadata(link, videoId);
            }
        }
    }

    // Fonction pour remplacer les embeds YouTube par des embeds Piped dans le HTML
    function replaceYouTubeEmbeds() {
        var iframes = document.getElementsByTagName('iframe');
        for (var i = 0; i < iframes.length; i++) {
            var iframe = iframes[i];
            if (iframe.src.includes('youtube.com/embed/')) {
                var videoId = iframe.src.split('embed/')[1];
                var ampersandPosition = videoId.indexOf('?');
                if (ampersandPosition !== -1) {
                    videoId = videoId.substring(0, ampersandPosition);
                }
                iframe.src = 'https://piped.video/embed/' + videoId;
                fetchMetadata(iframe, videoId);
            }
        }
    }

    // Fonction pour récupérer les métadonnées de Piped.video
    function fetchMetadata(element, videoId) {
        var apiUrl = 'https://pipedapi.kavin.rocks/streams/' + videoId;

        fetch(apiUrl)
            .then(response => response.json())
            .then(data => {
                if (data.title) {
                    element.title = data.title;
                }
                if (data.thumbnailUrl) {
                    var img = document.createElement('img');
                    img.src = data.thumbnailUrl;
                    img.alt = data.title;
                    img.style.maxWidth = '100px'; // Ajustez la taille selon vos besoins
                    element.parentNode.insertBefore(img, element);
                }
            })
            .catch(error => {
                console.error('Erreur lors de la récupération des métadonnées :', error);
            });
    }

    // Exécuter les fonctions lors du chargement de la page et lors des changements dans le DOM
    document.addEventListener('DOMContentLoaded', function() {
        replaceYouTubeLinks();
        replaceYouTubeEmbeds();
    });

    var observer = new MutationObserver(function(mutations) {
        replaceYouTubeLinks();
        replaceYouTubeEmbeds();
    });

    observer.observe(document.body, {
        childList: true,
        subtree: true
    });
})();