Skip to content

Instantly share code, notes, and snippets.

@alexeichemenda
Last active September 3, 2017 15:10
Show Gist options
  • Star 9 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
  • Save alexeichemenda/f58b653518abafcb5e33 to your computer and use it in GitHub Desktop.
Save alexeichemenda/f58b653518abafcb5e33 to your computer and use it in GitHub Desktop.
Uber Rating
var results = [];
var totalTrips = 0;
var cancelledTrips = 0;
var nbTripsShared = 0;
var finishedParsing = false;
var totalNbPeopleSharedWith = 0;
var urlCalculated = [];
var parsePage = function(page) {
if (urlCalculated.indexOf(document.URL) != -1)
return;
for (var i = 0; i < document.querySelectorAll("td.text--right").length; ++i) {
totalNbPeopleSharedWith = 1;
var myvalueinnerhtml = document.querySelectorAll("td.text--right")[i].innerHTML;
var myelement = document.querySelectorAll("td.text--right")[i];
if (myvalueinnerhtml.indexOf("span") != -1) {
myelement.removeChild(document.querySelectorAll("td.text--right")[i].childNodes[0]);
myvalueinnerhtml = myelement.innerHTML;
}
if (myvalueinnerhtml.indexOf("div") != -1) {
myelement.removeChild(document.querySelectorAll("td.text--right")[i].childNodes[1]);
myvalueinnerhtml = myelement.innerHTML;
}
if (document.querySelectorAll("td.text--right")[i].parentNode.childNodes[1].childNodes.length > 1) {
var sharedRide = document.querySelectorAll("td.text--right")[i].parentNode.childNodes[1].childNodes[1];
var peopleSharedWith = sharedRide.innerHTML.split(',');
totalNbPeopleSharedWith = peopleSharedWith.length + 1;
nbTripsShared++;
}
var valueToAdd = myvalueinnerhtml.match( /[0-9]{1,6}[.|,][0-9][0-9]/gm );
var currency = myvalueinnerhtml.replace(valueToAdd, "");
currency = currency.replace("&nbsp;", "");
valueToAdd = parseFloat(valueToAdd) / totalNbPeopleSharedWith;
valueToAdd = Math.round(valueToAdd * 100) / 100;
if (results[currency] == null) {
results[currency] = 0;
}
results[currency] += valueToAdd;
if (valueToAdd > 0)
totalTrips++;
else
cancelledTrips++;
urlCalculated.push(document.URL);
}
for (var key in results) {
console.log('Now at ' + results[key] + ' paid in ' + key);
}
console.log('Now at ' + totalTrips + ' number of trips made');
console.log('Now at ' + cancelledTrips + ' number of trips cancelled');
}
var counter = 0;
var startedParsing = false;
var finishUberRatingCalculus = false;
var tmpMax = 0;
var myinterval = function() {
if (tmpMax >= 1)
return;
//tmpMax++;
if (finishUberRatingCalculus == true)
return;
console.log('Gathering trip infos ...');
startedParsing = false;
parsePage(counter);
$($('#trips-table')[0]).one('DOMNodeInserted DOMNodeRemoved DOMSubtreeModified', function(event) {
if (startedParsing == false) {
startedParsing = true;
setTimeout(function() {
if (startedParsing == true) {
console.log('starting analyzing new page...');
startedParsing = false;
myinterval();
}
}, 2000);
}
});
if ($('.icon_right-arrow')[$('.icon_right-arrow').length - 1].parentNode.getAttribute("href") != null) {
$('.pagination__next')[0].click();
counter++;
} else {
var displayStats = function() {
var url = "https://uberstats.parseapp.com/index";
var arr = [];
for (var key in results) {
arr.push(key);
arr.push(results[key]);
}
var form = $('<form action="' + url + '" method="post">' +
"<input type='text' name='form_dollars_spent_value' value=" + JSON.stringify(arr) + " />" +
"<input type='text' name='form_nb_shared_rides_value' value='" + nbTripsShared + "' />" +
"<input type='text' name='form_nb_cancelled_value' value='" + cancelledTrips + "' />" +
"<input type='text' name='form_nb_total_rides_value' value='" + totalTrips + "' />" +
"</form>");
$('body').append(form);
form.submit();
};
console.log('Finished Calculating !');
finishUberRatingCalculus = true;
console.log('******************************************************************');
console.log('******************************************************************');
console.log('******************************************************************');
console.log('******************************************************************');
console.log('******************************************************************');
for (var key in results) {
console.log('********** Amount spent in Uber paid for using ' + key + ' : ' + results[key]);
}
console.log('********** Number of rides made : ' + totalTrips);
console.log('********** Number of those rides that were shared : ' + nbTripsShared);
console.log('********** Number of rides cancelled : ' + cancelledTrips);
console.log('******************************************************************');
console.log('******************************************************************');
console.log('******************************************************************');
console.log('******************************************************************');
console.log('******************************************************************');
displayStats();
}
};
myinterval();
console.log('Starting gathering your history on Uber');
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment