Revert X to Twitter Embed

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

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

  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.11
  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-6zzn7w r-19fsva8 r-dnmrzs r-bnwqim r-1plcrui r-lrvibr r-q1j0wu")[0].querySelector('g').querySelector('path');
  41.  
  42. if (SVG.getAttribute('d') == xPath) {
  43. SVG.setAttribute('d', birdPath);
  44. }
  45. }
  46.  
  47. function revertHover() {
  48. var Text = document.getElementById("layers").getElementsByClassName("css-901oao css-16my406 r-poiln3 r-bcqeeo r-qvutc0")[0];
  49.  
  50. if (Text) { Text.innerHTML = revertString(Text.innerHTML); }
  51. }
  52.  
  53.  
  54. // Revert all strings
  55. function revertStrings() {
  56.  
  57. // "Share this post"
  58. var items = document.getElementsByClassName("css-901oao css-1hf3ou5 r-14j79pv r-1qd0xha r-1b43r93 r-b88u0q r-1cwl3u0 r-13hce6t r-bcqeeo r-qvutc0");
  59.  
  60. for (itemX of items) {
  61. item = itemX.getElementsByClassName("css-901oao css-16my406 r-poiln3 r-bcqeeo r-qvutc0")[0];
  62. if (item) { item.innerHTML = revertString(item.innerHTML); }
  63. }
  64.  
  65. // "Read more on X"
  66. items = document.getElementsByClassName("css-901oao css-16my406 css-1hf3ou5 r-poiln3 r-1b43r93 r-1cwl3u0 r-bcqeeo r-qvutc0");
  67.  
  68. for (itemX of items) {
  69. item = itemX.getElementsByClassName("css-901oao css-16my406 r-poiln3 r-bcqeeo r-qvutc0")[0];
  70. if (item) { item.innerHTML = revertString(item.innerHTML); }
  71. }
  72.  
  73. // Same for Accessibility Labels
  74. // NOTE: Not fully working at the present moment
  75. /* items = document.querySelectorAll('body *');
  76.  
  77. for (item of items) {
  78. if (item.getAttribute('aria-label').includes(" X") || item.getAttribute('aria-label').includes(" post"))
  79. {
  80. string = item.getAttribute('aria-label');
  81. window.alert(string);
  82. item.setAttribute('aria-label', revertString(string));
  83. }
  84. } */
  85. }
  86.  
  87. setInterval(revertXLogo, 1);
  88. setInterval(revertHover, 1);
  89. setInterval(revertStrings, 5);