-
-
Save alexeichemenda/f58b653518abafcb5e33 to your computer and use it in GitHub Desktop.
Uber Rating
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
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(" ", ""); | |
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