Skip to content

Instantly share code, notes, and snippets.

@jackm
Last active July 31, 2017 03:27
Show Gist options
  • Select an option

  • Save jackm/c0e4b3e6b2d3965f21387e00a0068c7b to your computer and use it in GitHub Desktop.

Select an option

Save jackm/c0e4b3e6b2d3965f21387e00a0068c7b to your computer and use it in GitHub Desktop.
Greasemonkey/Tampermonkey script for simple ad re-posting on Kijiji.ca
// ==UserScript==
// @name Kijiji Repost Ad Simple
// @namespace KijijiScripts
// @version 0.3.1
// @description Allows for easy and free ad reposting on Kijiji when managing your ads. A new link named "Repost Ad" will appear in the ad manage widget as well as on the My Kijiji page for each ad.
// @match http://www.kijiji.ca/v-view-details.html?*
// @match https://www.kijiji.ca/v-view-details.html?*
// @match https://www.kijiji.ca/m-my-ads.html*
// @grant none
// ==/UserScript==
(function() {
'use strict';
// Add link to the page if the ad manage widget exists
// (ie. they are viewing their own ad under their control)
if (document.querySelector('#ManageAdWidget') && Kj.extVars.adId) {
var li = document.createElement('li');
li.className = "divider";
li.innerHTML = "|";
var a = document.createElement('a');
a.href = "p-edit-ad.html?submitType=repostAd&adId=" + Kj.extVars.adId;
a.innerHTML = "Repost Ad";
document.querySelector('#ManageAdWidget ul.vertical-ul').appendChild(li);
document.querySelector('#ManageAdWidget ul.vertical-ul').appendChild(document.createElement('li').appendChild(a));
}
// Add link to "My Kijiji" ad management page for each ad listed
else if (document.querySelector('#PageMyKijiji > div.ng-scope')) {
// Must wait for page to load first otherwise querySelector won't find any of the ads
// For some reason adding an event listener for the window "load" event doesn't work, so we have to use a hackish timeout instead
setTimeout(function() {
var adIds = document.querySelectorAll('div.item-enabled.ResultAdRow.table-row.ng-scope');
for (var i = 0; i < adIds.length; i++) {
var a = document.createElement('a');
a.href = "p-edit-ad.html?submitType=repostAd&adId=" + adIds[i].getAttribute('data-ad-id');
a.setAttribute('data-ng-click', "repostItem(item)");
a.innerHTML = "Repost";
adIds[i].querySelector('div.cta-other').appendChild(a);
}
}, 1000);
}
})();
@TWDickson
Copy link
Copy Markdown

This works great, thanks for making this!

@sallyyollande
Copy link
Copy Markdown

Hi,
Kijiji updated their site and this repost gist doesn't work anymore. Too bad , it was very helpfull. Will there be an update?

thanks

@MichaelSingh24
Copy link
Copy Markdown

Any chance for an update ? :)

@jackm
Copy link
Copy Markdown
Author

jackm commented Apr 1, 2017

I spent a short amount of time attempting to fix this, but the solution seems to be much more complex than before. It isn't as simple as crafting a regular html link anymore.
Based on some of the html tag attribute names, the Kijiji site appears to use AngularJS (this isn't a new change), which I am not that familiar with. Something on the back-end must tell the AngularJS front-end when to show a real "repost ad" link, otherwise it is normally hidden. I don't know if it would be possible to fake this behaviour, or if it's something that gets checked and verified by the back-end before the site would allow a free ad repost.

@sallyyollande
Copy link
Copy Markdown

thanks for you answer, if this is too complicated, maybe try to include the repost of the picture in the other script for easy ad re-posting ?
thanks

@cerberii
Copy link
Copy Markdown

cerberii commented Jul 29, 2017

any chance for update? Here is a chrome extention that seems to be doing the same thing as this script, but with a little more stolen code from others. He charges 30$ for this, what a rip

https://chrome.google.com/webstore/detail/kijiji-repost-now-%20-tweak/dbgajgfeeckpidddhbdocoeifppmfldi?hl=en

@jackm
Copy link
Copy Markdown
Author

jackm commented Jul 29, 2017

@cerberii

If you are comfortable with running a Python script (Python is available on both Linux and windows), then I would suggest using the Kijiji-Repost-Headless project.

This is what I use now to repost my Kijiji ads, and it is being actively developed. Unfortunately it is not quite as simple to use as clicking a button in your browser, but it does work. Perhaps someday it could be developed into a real browser extension to make it easier to use.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment