YouTube Links Preview

Umożliwia podgląd linków do YT. W przeciwieństwie do rozszerzenia na embedy pokazuje jedynie tytuł i przenosi na YT po kliknięciu.

  1. // ==UserScript==
  2. // @name YouTube Links Preview
  3. // @namespace https://wilchan.org
  4. // @version 1.0
  5. // @description Umożliwia podgląd linków do YT. W przeciwieństwie do rozszerzenia na embedy pokazuje jedynie tytuł i przenosi na YT po kliknięciu.
  6. // @author Anonimas
  7. // @match https://wilchan.org/*
  8. // @icon https://www.google.com/s2/favicons?sz=64&domain=wilchan.org
  9. // @grant none
  10. // @license MIT
  11. // ==/UserScript==
  12.  
  13. let iconCss = document.createElement("style");
  14. iconCss.innerHTML = `a.yt-link::before { content: ""; background: transparent url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAMCAYAAABr5z2BAAABIklEQVQoz53LvUrDUBjG8bOoOammSf1IoBSvoCB4JeIqOHgBLt6AIMRBBQelWurQ2kERnMRBsBUcIp5FJSBI5oQsJVkkUHh8W0o5nhaFHvjBgef/Mq+Q46RJBMkI/vE+aOus956tnEswIZe1LV0QyJ5sE2GzgZfVMtRNIdiDpccEssdlB1mW4bvTwdvWJtRdErM7U+8S/FJykCRJX5qm+KpVce8UMNLRLbulz4iSjTAMh6Iowsd5BeNadp3nUF0VlxAEwZBotXC0Usa4ll3meZdA1iguwvf9vpvDA2wvmKgYGtSud8suDB4TyGr2PF49D/vra9jRZ1BVdknMzgwuCGSnZEObwu6sBnVTCHZiaC7BhFx2PKdxUidiAH/4lLo9Mv0DELVs9qsOHXwAAAAASUVORK5CYII=') center left no-repeat!important; padding-left: 18px; }`;
  15. document.head.appendChild(iconCss);
  16.  
  17. async function replaceLink(element) {
  18. if (element.href.search(/youtube\.com|youtu\.be/i) > -1) {
  19. let response = await fetch(`https://www.youtube.com/oembed?url=${element.href}&format=json`);
  20. if (response.ok) {
  21. let json = await response.json();
  22. element.textContent = json.title;
  23. element.classList.add("yt-link");
  24. }
  25. }
  26. }
  27.  
  28. document.querySelectorAll(".message a[href]:not(.outcoming-post-mention)").forEach(a => {
  29. replaceLink(a);
  30. })
  31.  
  32.  
  33. window.addEventListener("after-create-post-section-element-event", function (event) {
  34. let section = event.detail.element;
  35. section.querySelectorAll(".message a[href]:not(.outcoming-post-mention)").forEach(a => {
  36. replaceLink(a);
  37. })
  38. }, false);
  39.