Greasy Fork is available in English.

View Twitter Origin Images

將新版推特的圖片轉為原畫質版本,並可以從右鍵取得圖片網址

Versione datata 29/07/2019. Vedi la nuova versione l'ultima versione.

  1. // ==UserScript==
  2. // @name View Twitter Origin Images
  3. // @namespace https://greasyfork.org
  4. // @version 0.0.2
  5. // @description 將新版推特的圖片轉為原畫質版本,並可以從右鍵取得圖片網址
  6. // @author Pixmi
  7. // @icon https://i.imgur.com/AmUaAWh.png
  8. // @include https://twitter.com/*
  9. // @include https://pbs.twimg.com/media/*
  10. // @run-at document-end
  11. // @grant none
  12. // ==/UserScript==
  13.  
  14. /* jshint esversion: 6 */
  15.  
  16. (function () {
  17. "use strict";
  18.  
  19. if (window.location.href.includes('pbs.twimg.com/media')) {
  20. const twimg_URL = /https:\/\/pbs\.twimg\.com\/media\/([a-zA-Z0-9\-]+)\.(jpg|jpeg|png)\?name\=orig/;
  21. let imgHref = location.href;
  22. if (!twimg_URL.test(imgHref)) {
  23. let url = imgHref.replace('?format=','.').replace(/\&name=(\w+)/g,'?name=orig');
  24. window.location.replace(url);
  25. }
  26. } else {
  27. let rootmatch = document.evaluate("//div[@id='react-root']", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
  28. let rootnode = rootmatch.singleNodeValue;
  29.  
  30. //new Twitter UI
  31. if (rootnode) {
  32. let imgSet;
  33. var callback = function (mutationsList, observer) {
  34. for (let mutation of mutationsList) {
  35. if (mutation.target.className.includes("css-1dbjc4n")) {
  36. imgSet = mutation.target.getElementsByTagName('img');
  37. let i;
  38. for (i = 0; i < imgSet.length; i++) {
  39. let imgSrc = imgSet[i].src;
  40. if (imgSrc.includes("https://pbs.twimg.com/media/") && !imgSrc.match(/name=orig/)) {
  41. console.log(imgSrc);
  42. imgSet[i].src = imgSrc.replace('?format=','.').replace(/&name=(\w+)/g,'?name=orig');
  43. }
  44. }
  45. }
  46. }
  47. };
  48. const observeConfig = {
  49. attributes: true,
  50. childList: true,
  51. subtree: true
  52. };
  53. const observer = new MutationObserver(callback);
  54.  
  55. observer.observe(document.body, observeConfig);
  56. }
  57. }
  58. });