twitter_to_nitter.user.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. // ==UserScript==
  2. // @name Twitter to Nitter
  3. // @author Jesús E.
  4. // @namespace NitterRedirect
  5. // @description Scan page for Twitter and urls replace with Nitter
  6. // @homepageURL https://git.sr.ht/~heckyel/book/blob/master/scripts-greasemonkey
  7. // @include *
  8. // @exclude /^http(s|)://(www[.]|)nitter[.]net/.*$/
  9. // @exclude /^http(s|)://(www[.]|)nitter[.]pro/.*$/
  10. // @exclude /^http(s|)://(www[.]|)nitter[.]snopyta[.]org/.*$/
  11. // @exclude /^http(s|)://(www[.]|)nitter[.]42l[.]fr/.*$/
  12. // @exclude /^http(s|)://(www[.]|)nitter[.]13ad[.]de/.*$/
  13. // @exclude /^http(s|)://(www[.]|)nitter[.]nixnet[.]xyz/.*$/
  14. // @exclude /^http(s|)://(www[.]|)nitter[.]drycat[.]fr/.*$/
  15. // @exclude /^http(s|)://(www[.]|)tw[.]openalgeria[.]org/.*$/
  16. // @version 0.1.4
  17. // @grant none
  18. // @license GPL version 3 or any later version::: https://www.gnu.org/licenses/gpl-3.0.html
  19. // ==/UserScript==
  20. /* jshint esversion: 6 */
  21. // Set you favorite Nitter instance! (https://github.com/zedeus/nitter/wiki/Instances)
  22. let instance = 'nitter.net';
  23. // Console Style - Debug
  24. const consoleCSS = 'background: #000; color: #00FF00; padding: 0px 7px; border: 1px solid #00FF00; line-height: 16px;';
  25. const name = GM_info.script.name;
  26. const version = GM_info.script.version;
  27. const log = (...args) => console.log('%cUSERSCRIPT | %s %s | %s', consoleCSS, name, version, ...args);
  28. // Do the actual rewrite
  29. function rewriteLinks() {
  30. for (let i = 0; i < document.links.length; i++) {
  31. let elem = document.links[i];
  32. if (elem.href.match(/http(s|):\/\/(mobile[.]|www[.]|)twitter[.]com\/(#!\/)?(.*$)/i)) {
  33. elem.href='https://' + instance + '/' + RegExp.$4;
  34. }
  35. }
  36. log('successfully initialized');
  37. }
  38. window.addEventListener('load', () => {
  39. rewriteLinks();
  40. });