shows the date the ad was originally posted
// ==UserScript==
// @name KijijiAutos Ad Date
// @namespace http://localhost
// @version 1.5
// @description shows the date the ad was originally posted
// @author Kronzky
// @include https://www.kijiji.*/*
// @include https://www.kijijiautos.*/*
// @include https://www.autotrader.*/*
// @run-at document-end
// @grant none
// ==/UserScript==
function getDate(path) {
// dealer: https://tdrpmimages.azureedge.net/photos/import/202003/0303/2531/0245a01b-dd96-4600-bc21-59480a7c5d9b.jpg-1024x786
// private: https://tdrpmimages.azureedge.net/private/2020/1/22/a80010d7-72c1-4eb2-a5a4-d84ed8c7e71a.jpg-1024x786
var metaParts = path.split('/');
var ml=metaParts.length;
var mY,mM,mD;
for (var i=0; i<ml; i++) {
var m=metaParts[i];
if ((m.substr(0,3)=="201") || (m.substr(0,3)=="202")) {
if (m.length==6) {
mY = m.substr(0,4);
mM = m.substr(4,2);
mD = metaParts[i+1].substr(0,2);
} else {
mY = m;
mM = metaParts[i+1];
mD = metaParts[i+2];
};
break;
};
};
return (new Date(mY,mM-1,mD).getTime()/1000);
}
(function() {
'use strict';
var unsafeWindow = window.wrappedJSObject;
var pos = "top:120px; left:30px;"
var posted = Date.now();
var modified = Date.now();
var where = document.body;
var href = window.location.host;
var pics;
var valid = true;
if ((href.indexOf("autotrader.com"))!=-1) {
pos = "top:120px; right:245px;"
pics = unsafeWindow.__BONNET_DATA__.props.vdp.images.sources;
for (var p=0; p<pics.length-1; p++) {
var imgdate = getDate(pics[p].src);
posted = Math.min(imgdate,posted);
};
} else if ((href.indexOf("autotrader.ca"))!=-1) {
pics = unsafeWindow.ngVdpModel.gallery.items;
if (pics.length<2) {
var meta = document.querySelector("meta[property='og:image']").getAttribute('content');
posted = getDate(meta);
} else {
for (p=0; p<pics.length-1; p++) {
imgdate = getDate(pics[p].galleryUrl);
posted = Math.min(imgdate,posted);
};
};
} else if ((href.indexOf("kijijiautos"))!=-1) {
var vipidx = window.location.href.indexOf('vip='); // https://www.kijijiautos.ca/cars/chevrolet/impala/used/#vip=34811523
var vipnum = window.location.href.substr(vipidx+4);
var adidx = -1;
for (var i=0; i<unsafeWindow.INITIAL_STATE.pages.srp.items.length; i++) {
if (unsafeWindow.INITIAL_STATE.pages.srp.items[i].id == vipnum) {
adidx = i;
break;
}
}
if (adidx != -1) {
//posted = unsafeWindow.INITIAL_STATE.pages.vip.listing.created; // old
posted = unsafeWindow.INITIAL_STATE.pages.srp.items[adidx].created;
var datePosted = new Date(posted*1000);
//console.log(unsafeWindow.INITIAL_STATE.pages.srp.items[adidx].title + ": " + posted + ', ' + (datePosted.toLocaleString('default', { month: 'short' })) + " " + datePosted.getDate());
//modified = unsafeWindow.INITIAL_STATE.pages.srp.items[adidx].modified;
//var dateModded = new Date(modified*1000);
//console.log(modified + ', ' + (dateModded.toLocaleString('default', { month: 'short' })) + " " + dateModded.getDate());
} else {
posted = "xxx";
}
} else {
if (typeof unsafeWindow.dataLayer[0].a == 'undefined') {
valid = false;
} else {
posted = unsafeWindow.dataLayer[0].a.cdt;
pos = "right:60px; top:-180px;"
where = document.getElementById('vip-body');
};
};
if (valid) {
var dateInfo = 'no posted date found';
if (!isNaN(posted.valueOf())) {
var created = new Date(posted*1000);
var dateStr = (created.toLocaleString('default', { month: 'short' })) + " " + created.getDate();
var diffDays = Math.floor((Date.now()-created)/(1000*60*60*24));
var diffStr = "today";
if (diffDays>1) {
diffStr = diffDays + ' days ago';
} else if (diffDays==1) {
diffStr = 'yesterday';
};
dateInfo = 'posted: ' + dateStr + ' (' + diffStr + ')';
};
var newHTML = document.createElement ('div');
newHTML.innerHTML = '<h3 style="background-color:#fff; padding:4px; border:1px solid #333; position:absolute; ' + pos + ' color:#333">' + dateInfo + '</h3>';
where.appendChild(newHTML);
};
})();