/*
TradeMe PhotoView
//Shows thumbnails for all listings in TradeMe
Version 0.37.14 (07 August 2018)
Author: tbird81 / JimBob Baggins
Licence: Will be free to edit as you choose, but i'd like to sort it out a bit first
Gui: {333eb056-63c4-4e4b-9589-85a0d46d22b0}
// Future improvements
For me to think about:
- DieNicelies for GM functions.
- Convert to normal xmlhttprequest
- More resilience
Fix the pop ups since TradeMe's changes.
// Risks
Risks of using this software:
- Your incoming traffic may slightly increase because more pictures are loaded.
- This software may slow down the loading of TradeMe listings pages.
- You might forget that other people don't have this script, so may under-promote your auction.
- TradeMe may change its site without notice, rendering this script useless.
Changes:
- v0.37.14 Let's put the flags back
- v0.37.11 TM have switched to a peculiar list layout
- v0.37 Switched to https
- v0.36.1 Grr...
- v0.36 Bug fix...
- v0.35 Pop-ups in gallery view of clothing/home & living fixed.
- v0.32 New asynchronous clothing not showing pop-ups. Had to finally use jquery...
- v0.30 Obvious speed fix made. Property slowness should be eliminated.
- v0.29 Big changes people!
- v0.28.3 Chrome strikes again...
- v0.28.2 Double D'oh!
- v0.28.1 D'oh!
- v0.28 Property and Flatmates were causing issues. Should be good now.
- v0.27 Fixed my shennanigans.
- v0.26 Fixed TradeMe shennanigans.
- v0.25 Fixed clothing issue.
- v0.23 Open homes bug fixed.
- v0.22 Big Zooms!
- v0.21 TM Server change...
- v0.20 Chrome's GM_xmlhttpRequest issue bypassed (will probably be resolved by them in due course)...
- v0.15 Stuffed up the href link on the image brought forward.
- v0.08 Sorry about the vary slow update!!! Should work with new trademe. I'm not sure what I was doing wrong.
- v0.07 Fixed snippets.
- v0.06 Updated image folder. Prior versions will not work.
- v0.05 Displays an enlarged image when the mouse hovers over a thumbnail
- v0.04 Now adds snippets of information about items.
- v0.04 Uses maxHeight and maxWidth styles to confine picture to 85x64px
- v0.03 Remove an unneeded loop!
- v0.02 Made the User-agent the same as the browser.
- v0.02 Exits search for images once first thumbnail has been found .
- v0.02 Exits search for images once matching icon is found.
- v0.02 Changed some variable names to make more sense.
*/
// ==UserScript==
// @name TradeMe PhotoView
// @namespace http://www.girlza.com/
// @include https://www.trademe.co.nz/*
// @description Show thumbnails for all listings in TradeMe
// @grant metadata
// @version 0.37.14
// @downloadURL https://update.greasyfork.icu/scripts/1090/TradeMe%20PhotoView.user.js
// @updateURL https://update.greasyfork.icu/scripts/1090/TradeMe%20PhotoView.meta.js
// ==/UserScript==
//This allows you to turn off unnecessary features
var showThumbs = true;
var showSnippets = true;
var showZoom = true;
function addCustomSearchResult (jNode) {
//Open Homes were bugging out
var z = document.getElementsByClassName('openhomes')
for (var i = 0; i < z.length; i++) {
if (z[i].tagName == "LI") {
z[i].style.width = '170px';
z[i].style.textAlign = 'center';
z[i].childNodes[1].style.width = '170px';
z[i].childNodes[1].style.textAlign = 'center';
}
}
//The prototype for the callback function that allows me to remember what link I was loading!
Function.prototype.bind = function(thisObject) {
var method = this;
var oldargs = [].slice.call(arguments, 1);
return function() {
var newargs = [].slice.call(arguments);
return method.apply(thisObject, oldargs.concat(newargs));
};
}
var allImgs, thisImg;
var globalTimer;
//First we load all the images of that little camera
allImgs = document.evaluate(
"//img | //div[@class='image'] | //div[@class='image ']", //the name of the little camera icon
document,
null,
XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
null);
//Then we go through them one-by-one
for (var i = 0; i < allImgs.snapshotLength; i++) {
var n = allImgs.snapshotItem(i).src;
var bgIm = false
if(typeof n === 'undefined'){n = allImgs.snapshotItem(i).style.backgroundImage;
n = n.substring(4,n.length-1).replace(/["']/g, "");
//console.log(n)
//n = n.substring(5,n.length-2);
bgIm = true;
}
if (n.indexOf('hasPhoto_160x120.png') > -1) {
thisImg = allImgs.snapshotItem(i); //the photos exist but no thumbnail
thisImg.setAttribute('thumbnailnumber', i);
//We need to request the page that the icon links to, to get it's thumbnail
if (thisImg.parentNode.href) {
var oReq = new XMLHttpRequest();
oReq.open("GET", thisImg.parentNode.href);
oReq.addEventListener("load", cbReplaceWithPhoto.bind({
specificIcon: thisImg.parentNode
}), false);
oReq.send();
}
} else if (n.indexOf('/lv2/') > -1 || n.indexOf('/gv/') > -1 || n.indexOf('/med/') > -1 || n.indexOf('/tq/') > -1 || bgIm){
thisImg = allImgs.snapshotItem(i);
thisImg.setAttribute('thumbnailnumber', i);
addHover(thisImg, bgIm)
}
}
//Curious design decision from TM in getting rid of the flag, so we've added the flags back... this is just for me really, so if you don't like it then tough! :-)
allImgs = document.evaluate("//div[@class='reserve-text']/../..",document,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null);
for (var i = 0; i < allImgs.snapshotLength; i++) {
if (allImgs.snapshotItem(i).querySelector(".icon").innerText.trim() == "Reserve Met"){
//reserve met
var current = allImgs.snapshotItem(i).querySelector(".listingBidPrice").innerText;
allImgs.snapshotItem(i).querySelector(".listingBidPrice").innerHTML = current + "
"
} else {
//reserve not met
var current = allImgs.snapshotItem(i).querySelector(".listingBidPrice").innerText;
allImgs.snapshotItem(i).querySelector(".listingBidPrice").innerHTML = current + "
"
}
};
/*
//the original buy now colours, switched off for the time being
allImgs = document.evaluate("//div[@class='listingBuyNowPrice'] | //div[@class='listingBuyNowText']",document,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null);
for (var i = 0; i < allImgs.snapshotLength; i++) {
allImgs.snapshotItem(i).style.color = "#cc6600";
};*/
//Set the style up in the