Skip to content

Instantly share code, notes, and snippets.

@bvjebin
Created February 13, 2018 13:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bvjebin/96ade5deeb59d35a034143ab394e8796 to your computer and use it in GitHub Desktop.
Save bvjebin/96ade5deeb59d35a034143ab394e8796 to your computer and use it in GitHub Desktop.
//Login to your Uber and run the below code in your console.
//It will output how much have you spent from the given date to today on cabs.
//It excludes UberEATS
var result = [], total = 0, start_date = new Date("04-01-2017").getTime();
function url(page) {
return "https://riders.uber.com/trips?page="+page;
}
function Ajax(options) {
var url = options.url,
method = options.method || "GET",
headers = options.headers || {},
data = options.data;
return new Promise(function(resolve, reject) {
var req = new XMLHttpRequest();
req.onreadystatechange = function() {
if (this.readyState == 4) {
var responseText = this.responseText;
if (this.status === 200 || this.status === 201) {
resolve(responseText);
} else {
reject(responseText);
}
}
};
req.open(method, url);
for (var x in headers) {
if (headers.hasOwnProperty(x) === true) {
req.setRequestHeader(x, headers[x]);
}
}
req.send(data);
});
}
function getData(doc) {
var table = doc.querySelector("#trips-table");
var trs = Array.from(table.querySelectorAll(".trip-expand__origin"));
var cur_res = trs.map(item => {
return {
date: item.children[1].textContent,
timestamp: new Date(item.children[1].textContent).getTime(),
title: item.children[2].textContent.trim(),
amount: item.children[3].textContent.trim().replace("₹", ""),
}
});
result = result.concat(cur_res);
}
function getTable(page) {
var _url = url(page);
console.log(_url);
Ajax({url: _url, method: "GET"}).then(item => {
var div = document.createElement("div");
div.innerHTML = item;
getData(div);
page = page + 1;
if(div.querySelector(".pagination__next:not(.btn--inactive)")
&& result[result.length-1].timestamp > start_date) {
getTable(page++);
} else {
var res_len = result.length;
for(var i = 0; i < res_len; i++) {
let item = result[i];
if(item.amount.indexOf("Canceled") > 0) {
item.amount = item.amount.replace("Canceled", "");
}
if(item.timestamp < start_date) {
break;
}
let val = parseFloat(item.amount);
if(isNaN(val) || item.title === "UberEATS") {
continue;
}
total = val + total;
}
console.log(total);
}
});
}
getTable(1);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment