Google Image Direct Link Patch

Readd Google Image search result entry's image bottom panel as bottom-right image size information and link it to the direct image resource.

目前为 2022-09-11 提交的版本。查看 最新版本

// ==UserScript==
// @name        Google Image Direct Link Patch
// @namespace   GoogleImageDirectLinkPatch
// @version     1.2.10
// @license     AGPL v3
// @author      jcunews
// @description Readd Google Image search result entry's image bottom panel as bottom-right image size information and link it to the direct image resource.
// @website     https://gf.qytechs.cn/en/users/85671-jcunews
// @include     /^https:\/\/www\.google\.(co\.)?[a-z]{2,3}\/search.*tbm=isch/
// @include     /^https:\/\/www\.google\.com(\.[a-z]{2,3})?\/search.*tbm=isch/
// @grant       none
// @run-at      document-start
// ==/UserScript==

((idat, ap, xo) => {
  function processEntries() {
    if (!idat) return;
    document.querySelectorAll("div.isv-r[data-ow]:not(.paneled_gidlp)").forEach((e, a, id, d) => {
      e.classList.add("paneled_gidlp");
      e.insertBefore(a = document.createElement("A"), e.firstChild).className = "panel_gidlp";
      a.dataset.ow = e.dataset.ow;
      a.dataset.oh = e.dataset.oh;
      a.rel = "nofollow noopener noreferrer";
      id = e.dataset.id;
      if (!idat.some((d, i) => {
        if (d[7] === id) {
          a.href = (d[1].Ve && d[1].Ve[3] && d[1].Ve[3][0]) || (d[1][3] && d[1][3][0]);
          idat.splice(i, 1);
          return true
        }
      })) a.href = 'javascript:void("Image URL is not found")';
    })
  }

  function getArr(v) {
    if (v[2]) {
      return v[2].slice()
    } else return Object.values(v).reduce((r, v) => {
      if (Array.isArray(v) && v[2]) r = v[2].slice();
      return r
    }, null)
  }

  function getData(v) {
    if (v.key && v.hash && v.sideChannel && v.data && v.data[31] && v.data[31][0] && (v = v.data[31][0][12])) return !!(idat = getArr(v))
  }

  ap = Array.prototype.push;
  Array.prototype.push = function(v) {
    if (!idat) getData(v);
    return ap.apply(this, arguments);
  };

  xo = XMLHttpRequest.prototype.open;
  XMLHttpRequest.prototype.open = function(mtd, url) {
    if (/\/_\/VisualFrontendUi\/data\/batchexecute/.test(url)) {
      this.addEventListener("load", (v, z) => {
        if (v = this.responseText.split("\n")[3]) try {
          if (v = JSON.parse(JSON.parse(v)[0][2])[31][0][12]) ap.apply(idat, getArr(v));
        } catch(z) {}
      })
    }
    return xo.apply(this, arguments);
  };

  addEventListener("load", (a, mo, ht) => {
    if (a = wiz_jd.previousElementSibling.text.match(/AF_initDataCallback\((.*?)\);/)) getData((new Function("return " + a[1]))());
    if ((a = document.querySelectorAll(".islrc,.islrh")).length) {
      document.documentElement.appendChild(b = document.createElement("STYLE")).id = "css_gidpl";
      b.innerHTML = `
.isv-r.paneled_gidlp>.panel_gidlp {
 position: absolute; z-index: 1; right: 0; bottom: 3.1em; font-size: 10pt; line-height: normal;
}
.isv-r.paneled_gidlp>.panel_gidlp:before {
  border-radius: .2em; padding: 0 .3ex; background-color: #444; color: #fff; content: attr(data-ow) "x" attr(data-oh);
}`;
      mo = new MutationObserver(recs => {
        clearTimeout(ht);
        ht = setTimeout(processEntries, 500);
      });
      a.forEach(e => mo.observe(e, {childList: true}));
      processEntries();
    }
  });
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址