Revert X to Twitter Embed

Replaces X references in the Twitter/X embed with the original Twitter ones.

当前为 2023-12-11 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @license GNU GPLv3
  3. // @name Revert X to Twitter Embed
  4. // @name:fr Nom et logo originaux de Twitter sur les embeds (contenus externes embarqués)
  5. // @name:es Revertir X a Twitter en los Tweets insertados
  6. // @namespace https://github.com/CatmanFan/Revert-X-to-Twitter-Embed/
  7. // @icon https://www.iconarchive.com/download/i76545/xenatt/minimalism/App-Twitter.256.png
  8. // @author Mr._Lechkar / CatmanFan
  9. // @description Replaces X references in the Twitter/X embed with the original Twitter ones.
  10. // @description:fr Modifier les embeds (contenus externes embarqués) de Twitter/X en replaçant les références à X par les originales de Twitter (par exemple, « Poster sur X » devient désormais « Tweeter sur Twitter »).
  11. // @description:es Reemplazar el logotipo de X y sus otras referencias en los Tweets insertados (embeds) por las originales de Twitter.
  12. // @version 0.12
  13. // @match https://platform.twitter.com/embed/Tweet.html
  14. // @run-at document-start
  15. // @grant GM_addStyle
  16. // ==/UserScript==
  17.  
  18. // Original color (copied from Yakisova's X to Twitter userscript)
  19. GM_addStyle(`
  20. svg.r-18jsvk2 {
  21. color: rgb(29, 155, 240);
  22. }
  23. `);
  24.  
  25. // Original bird (copied from Yakisova's X to Twitter userscript)
  26. var birdPath = 'M23.643 4.937c-.835.37-1.732.62-2.675.733.962-.576 1.7-1.49 2.048-2.578-.9.534-1.897.922-2.958 1.13-.85-.904-2.06-1.47-3.4-1.47-2.572 0-4.658 2.086-4.658 4.66 0 .364.042.718.12 1.06-3.873-.195-7.304-2.05-9.602-4.868-.4.69-.63 1.49-.63 2.342 0 1.616.823 3.043 2.072 3.878-.764-.025-1.482-.234-2.11-.583v.06c0 2.257 1.605 4.14 3.737 4.568-.392.106-.803.162-1.227.162-.3 0-.593-.028-.877-.082.593 1.85 2.313 3.198 4.352 3.234-1.595 1.25-3.604 1.995-5.786 1.995-.376 0-.747-.022-1.112-.065 2.062 1.323 4.51 2.093 7.14 2.093 8.57 0 13.255-7.098 13.255-13.254 0-.2-.005-.402-.014-.602.91-.658 1.7-1.477 2.323-2.41z';
  27. var xPath = 'M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z'
  28.  
  29. // Check for "X"/"post" string and return reverted, function
  30. function revertString(item) {
  31. var string = item;
  32.  
  33. if (string.includes("post")) { string = string.replace("post", "Tweet"); }
  34. if (string.includes(" X")) { string = string.replace(" X", " Twitter"); }
  35.  
  36. return string;
  37. }
  38.  
  39. function revertXLogo() {
  40. SVG = document.getElementsByClassName("r-18jsvk2 r-4qtqp9 r-yyyyoo r-dnmrzs r-bnwqim r-1plcrui r-lrvibr")[0].querySelector('g').querySelector('path');
  41.  
  42. SVG.setAttribute('d', birdPath);
  43. }
  44.  
  45. function revertHover() {
  46. var Text = document.getElementById("layers").getElementsByClassName("css-901oao css-16my406 r-poiln3 r-bcqeeo r-qvutc0")[0];
  47.  
  48. if (Text) { Text.innerHTML = revertString(Text.innerHTML); }
  49. }
  50.  
  51.  
  52. // Revert all strings
  53. function revertStrings() {
  54.  
  55. // "Share this post"
  56. var items = document.getElementsByClassName("css-901oao css-1hf3ou5 r-14j79pv r-1qd0xha r-1b43r93 r-b88u0q r-1cwl3u0 r-13hce6t r-bcqeeo r-qvutc0");
  57.  
  58. for (itemX of items) {
  59. item = itemX.getElementsByClassName("css-901oao css-16my406 r-poiln3 r-bcqeeo r-qvutc0")[0];
  60. if (item) { item.innerHTML = revertString(item.innerHTML); }
  61. }
  62.  
  63. // "Read more on X"
  64. items = document.getElementsByClassName("css-901oao css-16my406 css-1hf3ou5 r-poiln3 r-1b43r93 r-1cwl3u0 r-bcqeeo r-qvutc0");
  65.  
  66. for (itemX of items) {
  67. item = itemX.getElementsByClassName("css-901oao css-16my406 r-poiln3 r-bcqeeo r-qvutc0")[0];
  68. if (item) { item.innerHTML = revertString(item.innerHTML); }
  69. }
  70.  
  71. // Same for Accessibility Labels
  72. // NOTE: Not fully working at the present moment
  73. /* items = document.querySelectorAll('body *');
  74.  
  75. for (item of items) {
  76. if (item.getAttribute('aria-label').includes(" X") || item.getAttribute('aria-label').includes(" post"))
  77. {
  78. string = item.getAttribute('aria-label');
  79. window.alert(string);
  80. item.setAttribute('aria-label', revertString(string));
  81. }
  82. } */
  83. }
  84.  
  85. setInterval(revertXLogo, 1);
  86. setInterval(revertHover, 1);
  87. setInterval(revertStrings, 5);