Greasy Fork

eBay Seller Location Fork

Displays the registration location of eBay sellers on search results and product pages.

目前为 2023-06-28 提交的版本。查看 最新版本

// ==UserScript==
// @name         eBay Seller Location Fork
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Displays the registration location of eBay sellers on search results and product pages.
// @icon         https://raw.githubusercontent.com/sonofevil/eBaySellerLocationFork/main/ebaysellerlocationicon64.png
// @author       sonofevil, master131
// @match        https://www.ebay.*.*/sch/*
// @match        https://www.ebay.*/sch/*
// @match        https://www.ebay.*.*/itm/*
// @match        https://www.ebay.*/itm/*
// @grant        GM_xmlhttpRequest
// @run-at       document-end
// @license      MIT
// ==/UserScript==

(function() {
  'use strict';

  //HTTP request headers
  const reqhead = {
    'Accept': 'application/json, text/javascript, */*; q=0.01',
    'X-Requested-With': 'XMLHttpRequest',
    'User-Agent': 'Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Mobile Safari/537.36'
  }

  //Inserts location info element into page
  function insertLocInfo(target, info) {
    var data = JSON.parse(JSON.parse(info.responseText));
    if (target) {
      console.log("Inserting seller location...");
      var loc = document.createElement("div");
      loc.innerText = 'Registration ' + data.registrationSite.replace("HongKong", "Hong Kong");
      target.insertAdjacentElement('afterend', loc);
    }
  }

  //Search results:
  if (document.URL.includes("/sch/")) {

    //Saves all seller info rows to array
    var usrs = document.querySelectorAll('span[class="s-item__seller-info-text"]');

    //Iterates through sellers
    usrs.forEach(function(usr,i) {
      //Inserts delay to avoid IP blocking for excessive requests
      setTimeout(() => {
        //Checks if element is empty
        if (usr) {
          //Constructs seller info URL
          var dat = "https://" + window.location.hostname + "/itm/sellerInfoV2?sid=" + usr.innerText.split(" ")[0] + "&itemId=" + window.location.pathname.split("/").pop();
          console.log("Seller info url:" + dat);
          //Load info from URL
          GM_xmlhttpRequest({
            method: 'GET',
            url: dat,
            headers: reqhead,
            onload: function(response) {
              insertLocInfo(usr,response);
            }
          });
        } //if (usr)
      }, i * 500); //setTimeout
    }); //usrs.forEach

  //Item pages
  } else if (document.URL.includes("/itm/") ) {

    //Selects element with username
    var usr = document.querySelector('a[href*="/usr/"] span');
    if (!usr) {
      var usr = document.querySelector('a[href*="/str/"] span');
    }

    //Checks if element is empty
    if (usr) {
      //Constructs seller info URL
      var dat = "https://" + window.location.hostname + "/itm/sellerInfoV2?sid=" + usr.innerText + "&itemId=" + window.location.pathname.split("/").pop();
      //Load info from URL
      GM_xmlhttpRequest({
        method: 'GET',
        url: dat,
        headers: reqhead,
        onload: function(response) {
          //German eBay
          var section = document.querySelector(".ux-seller-section__content");
          if (section) {
            insertLocInfo(section,response);
          } else {
            //ebay.com
            var section_alt = document.querySelector(".x-sellercard-atf__info");
            if (section_alt) {
              insertLocInfo(section_alt,response);
            }
          }
        } //onload: function(response)
      }); //GM_xmlhttpRequest
    } //if (usr)
  }

})();