Last active
September 25, 2020 07:06
-
-
Save Dan6erbond/a4a7a33956bbb44a58fa5c1722d2b930 to your computer and use it in GitHub Desktop.
Tampermonkey user scripts to convert car listings to Sheets columns.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @name Autolina | |
// @namespace http://tampermonkey.net/ | |
// @version 0.1 | |
// @description Convert Autolina car listings to Sheets columns. | |
// @author Dan6erbond | |
// @match https://www.autolina.ch*auto/* | |
// @grant none | |
// ==/UserScript== | |
window.addEventListener( | |
"load", | |
function () { | |
function stripHtml(html) { | |
var tmp = document.createElement("DIV"); | |
tmp.innerHTML = html; | |
return tmp.textContent || tmp.innerText || ""; | |
} | |
function getNumbers(txt) { | |
var numb = txt.match(/\d/g); | |
return numb ? numb.join("") : ""; | |
} | |
function getElementByXpath(path) { | |
return document.evaluate( | |
path, | |
document, | |
null, | |
XPathResult.FIRST_ORDERED_NODE_TYPE, | |
null | |
).singleNodeValue; | |
} | |
function copyToClipboard(text) { | |
var input = document.createElement("textarea"); | |
input.innerHTML = text; | |
document.body.appendChild(input); | |
input.select(); | |
var result = document.execCommand("copy"); | |
document.body.removeChild(input); | |
return result; | |
} | |
// model | |
var out = stripHtml( | |
getElementByXpath(`//*[@id="breadcrumb"]/li[2]/a/span`).innerHTML | |
).trim(); | |
// make | |
out += "\t"; | |
out += stripHtml( | |
getElementByXpath(`//*[@id="breadcrumb"]/li[4]/a/span`).innerHTML | |
).trim(); | |
// price | |
var elm = document.querySelector( | |
"div.al-car-details-left > div > div.al-car-details-price.al-car-details-price-desktop" | |
); | |
out += "\t"; | |
out += getNumbers(stripHtml(elm.innerHTML).trim()); | |
// km | |
var elm = document.querySelector( | |
"div.al-car-details-left > div.al-car-details-top-details > div:nth-child(2) > p:nth-child(1) > span" | |
); | |
out += "\t"; | |
out += getNumbers(stripHtml(elm.innerHTML).trim()); | |
// hp | |
var elm = document.querySelector( | |
"div.al-car-details-left > div.al-car-details-top-details > div:nth-child(4) > p:nth-child(1) > span" | |
); | |
out += "\t"; | |
out += getNumbers(stripHtml(elm.innerHTML).trim()); | |
// fuel type | |
var elm = document.querySelector( | |
"div.al-car-details-left > div.al-car-details-top-details > div:nth-child(2) > p:nth-child(2) > span" | |
); | |
out += "\t"; | |
var fuelType = stripHtml(elm.innerHTML).trim(); | |
if (!document.location.href.includes("/en/")) { | |
fuelType = fuelType == "Benzin" ? "Petrol" : "Diesel"; | |
} | |
out += fuelType; | |
// empty insurance field | |
out += "\t"; | |
out += ""; | |
// fuel usage | |
out += "\t"; | |
var elm = document.querySelector( | |
"div.al-car-details-left > div.al-car-details-info-energy > ul:nth-child(2) > li:nth-child(2)" | |
); | |
var usage = stripHtml(elm.textContent) | |
.trim() | |
.match(/(\d+(\.\d+)?)/); | |
out += usage ? usage[0] : ""; | |
// dealer | |
out += "\t"; | |
var elm = document.querySelector( | |
"div.al-car-details-right > aside > div.al-car-details-contact-form-container > div > div.panel-body > div:nth-child(1) > b" | |
); | |
out += elm ? stripHtml(elm.innerHTML).trim() : ""; | |
// empty interior type | |
out += "\t"; | |
out += ""; | |
out += "\t"; | |
out += window.location.href; | |
// location | |
out += "\t"; | |
var elm = document.querySelector( | |
"div.al-car-details-right > aside > div.al-car-details-contact-form-container > div > div.panel-body > div:nth-child(1) > p" | |
); | |
var match = elm && elm.innerHTML.match(/(\d{4} ([a-zA-Zöäü]+))/); | |
out += match | |
? stripHtml(match[0]).trim() | |
: ""; | |
copyToClipboard(out); | |
console.log(out); | |
}, | |
false | |
); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @name AutoScout24 | |
// @namespace http://tampermonkey.net/ | |
// @version 0.1 | |
// @description Convert AutoScout24 car listings to Sheets columns. | |
// @author Dan6erbond | |
// @match https://www.autoscout24.ch/de/d/* | |
// @grant none | |
// ==/UserScript== | |
window.addEventListener( | |
"load", | |
function () { | |
function stripHtml(html) { | |
var tmp = document.createElement("DIV"); | |
tmp.innerHTML = html; | |
return tmp.textContent || tmp.innerText || ""; | |
} | |
function getNumbers(txt) { | |
var numb = txt.match(/\d/g); | |
return numb ? numb.join("") : ""; | |
} | |
function getElementByXpath(path) { | |
return document.evaluate( | |
path, | |
document, | |
null, | |
XPathResult.FIRST_ORDERED_NODE_TYPE, | |
null | |
).singleNodeValue; | |
} | |
function copyToClipboard(text) { | |
var input = document.createElement("textarea"); | |
input.innerHTML = text; | |
document.body.appendChild(input); | |
input.select(); | |
var result = document.execCommand("copy"); | |
document.body.removeChild(input); | |
return result; | |
} | |
// make | |
var [make, ...model] = stripHtml( | |
getElementByXpath(`//*[@id="analytics-intersect-observer-3"]/div/h1`) | |
.innerHTML | |
) | |
.trim() | |
.split(" "); | |
var out = make; | |
// model | |
out += "\t"; | |
out += model.join(" "); | |
// price | |
var elm = getElementByXpath( | |
`//*[@id="app"]/div[1]/main/section/div/div/div/div/div[6]/div[2]/div[1]/span` | |
); | |
out += "\t"; | |
out += getNumbers(stripHtml(elm.innerHTML).trim()); | |
// km | |
var elm = getElementByXpath( | |
`//*[@id="app"]/div[1]/main/section/div/div/div/div/section[2]/div[1]/div[1]/div/div[2]/div/span` | |
); | |
out += "\t"; | |
out += getNumbers(stripHtml(elm.innerHTML).trim()); | |
// hp | |
var elm = getElementByXpath( | |
`//*[@id="app"]/div[1]/main/section/div/div/div/div/section[2]/div[1]/div[1]/div/div[3]/div/span` | |
); | |
out += "\t"; | |
out += getNumbers(stripHtml(elm.innerHTML).trim()); | |
// fuel type | |
var elm = getElementByXpath( | |
`//*[@id="app"]/div[1]/main/section/div/div/div/div/section[2]/div[1]/div[1]/div/div[4]/div/span` | |
); | |
out += "\t"; | |
out += stripHtml(elm.innerHTML).trim() == "Benzin" ? "Petrol" : "Diesel"; | |
// empty insurance field | |
out += "\t"; | |
out += ""; | |
// fuel usage | |
out += "\t"; | |
var elm = getElementByXpath( | |
`//*[@id="app"]/div[1]/main/section/div/div/div/div/section[6]/div/div/div[1]/span/span[1]/b` | |
); | |
var usage = stripHtml(elm.textContent) | |
.trim() | |
.match(/(\d+(\.\d+)?)/); | |
out += usage ? usage[0] : ""; | |
// dealer | |
out += "\t"; | |
var elm = getElementByXpath( | |
`//*[@id="app"]/div[1]/main/section/div/div/div/div/section[7]/div[1]/div/div[1]/span[1]` | |
); | |
out += elm ? stripHtml(elm.innerHTML).trim() : ""; | |
// empty interior type | |
out += "\t"; | |
out += ""; | |
out += "\t"; | |
out += window.location.href; | |
// location | |
out += "\t"; | |
var elm = getElementByXpath( | |
`//*[@id="app"]/div[1]/main/section/div/div/div/div/section[7]/div[1]/div/div[2]/div[2]` | |
); | |
out += elm ? stripHtml(elm.innerHTML).trim() : ""; | |
copyToClipboard(out); | |
console.log(out); | |
}, | |
false | |
); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @name Car For You | |
// @namespace http://tampermonkey.net/ | |
// @version 0.1 | |
// @description Convert CarForYou car listings to Sheets columns. | |
// @author Dan6erbond | |
// @match https://www.carforyou.ch/de/auto/* | |
// @grant none | |
// ==/UserScript== | |
window.addEventListener( | |
"load", | |
function () { | |
function stripHtml(html) { | |
var tmp = document.createElement("DIV"); | |
tmp.innerHTML = html; | |
return tmp.textContent || tmp.innerText || ""; | |
} | |
function getNumbers(txt) { | |
var numb = txt.match(/\d/g); | |
return numb ? numb.join("") : ""; | |
} | |
function getElementByXpath(path) { | |
return document.evaluate( | |
path, | |
document, | |
null, | |
XPathResult.FIRST_ORDERED_NODE_TYPE, | |
null | |
).singleNodeValue; | |
} | |
function copyToClipboard(text) { | |
var input = document.createElement("textarea"); | |
input.innerHTML = text; | |
document.body.appendChild(input); | |
input.select(); | |
var result = document.execCommand("copy"); | |
document.body.removeChild(input); | |
return result; | |
} | |
// model | |
var out = stripHtml(document.getElementsByTagName("h1")[0].innerHTML); | |
// make | |
out += "\t"; | |
out += stripHtml(document.getElementsByTagName("h2")[0].innerHTML); | |
// price | |
var txt = document.querySelector( | |
"#__next > main > article > div.flex.flex-wrap.max-w-searchContainer.mx-auto.md\\:px-20.lg\\:pb-50 > div.w-12\\/12.lg\\:w-5\\/12.xl\\:w-4\\/12.px-15.md\\:px-20.lg\\:pl-40 > div.flex.flex-wrap.pb-16 > div.w-12\\/12.text-grey-dark.font-bold.text-xl.md\\:text-2xl.mb-4" | |
).innerHTML; | |
out += "\t"; | |
out += getNumbers(stripHtml(txt)); | |
// km | |
var txt = getElementByXpath( | |
`//*[@id="__next"]/main/article/div[3]/div[1]/div/div/div/div/div/div[1]/div[1]/div/p[2]` | |
).innerHTML; | |
out += "\t"; | |
out += getNumbers(stripHtml(txt)); | |
// hp | |
var txt = getElementByXpath( | |
`//*[@id="__next"]/main/article/div[3]/div[1]/div/div/div/div/div/div[3]/div[1]/div/p[1]` | |
).innerHTML; | |
out += "\t"; | |
out += getNumbers(stripHtml(txt)); | |
// fuel type | |
var txt = getElementByXpath( | |
`//*[@id="__next"]/main/article/div[2]/div[1]/div[3]/section/div[6]` | |
).innerHTML; | |
out += "\t"; | |
out += stripHtml(txt) == "Benzin" ? "Petrol" : "Diesel"; | |
// empty insurance field | |
out += "\t"; | |
out += ""; | |
// fuel usage | |
out += "\t"; | |
var txt = getElementByXpath( | |
`//*[@id="__next"]/main/article/div[3]/div[1]/div/div/div/div/div/div[4]/div[1]/div/p[1]/text()[1]` | |
).textContent; | |
var usage = stripHtml(txt).match(/(\d+(\.\d+)?)/); | |
out += usage ? usage[0] : ""; | |
// dealer | |
out += "\t"; | |
var elm = document.querySelector( | |
"#__next > main > article > div.flex.flex-wrap.max-w-searchContainer.mx-auto.md\\:px-20.lg\\:pb-50 > div.w-12\\/12.lg\\:w-5\\/12.xl\\:w-4\\/12.px-15.md\\:px-20.lg\\:pl-40 > div.w-12\\/12.flex.flex-wrap > div > div.font-bold.mb-4.text-grey-dark.w-12\\/12.leading-sm" | |
); | |
out += elm ? stripHtml(elm.innerHTML) : ""; | |
// empty interior type | |
out += "\t"; | |
out += ""; | |
out += "\t"; | |
out += window.location.href; | |
// location | |
out += "\t"; | |
var elm = document.querySelector( | |
"#__next > main > article > div.flex.flex-wrap.max-w-searchContainer.mx-auto.md\\:px-20.lg\\:pb-50 > div.w-12\\/12.lg\\:w-5\\/12.xl\\:w-4\\/12.px-15.md\\:px-20.lg\\:pl-40 > div.w-12\\/12.flex.flex-wrap > div > div.text-grey-dark-opaque.text-sm.mb-16.w-12\\/12.leading-xs" | |
); | |
out += elm ? stripHtml(elm.innerHTML.match(/(\d{4} (.+))/)[0]) : ""; | |
copyToClipboard(out); | |
console.log(out); | |
}, | |
false | |
); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment