// how_much_netflix.js // A script that looks through your Netflix viewing activity and // tallys up how much time you've spent watching Netflix // // INSTRUCTIONS TO USE: // Open https://www.netflix.com/WiViewingActivity and the developer console // Copy and paste this script into the developer console and press enter // (function() { var fetchAllViewedItems = function() { var deferred = jQuery.Deferred(); var viewedItems = []; (function fetchPage(page) { data = netflix.reactContext.models.serverDefs.data; url = data.SHAKTI_API_ROOT + '/' + data.BUILD_IDENTIFIER; jQuery.getJSON(url + '/viewingactivity?pg=' + page).done(function(json) { viewedItems = viewedItems.concat(json.viewedItems); console.log('Fetched %s viewed items', viewedItems.length); if (json.viewedItems.length == json.size) { fetchPage(++page); } else { deferred.resolve(viewedItems); } }).fail(deferred.reject); })(0); return deferred.promise(); }; var getDays = function(time) { return Math.floor(time / 60 / 60 / 24); }; var getHours = function(time) { return Math.floor((time / 60 / 60) % 24); }; var getMinutes = function(time) { return Math.round((time / 60) % 60); }; fetchAllViewedItems().then(function(viewedItems) { var days = [ {name: 'Sunday', daysWatched: 0, totalTime: 0}, {name: 'Monday', daysWatched: 0, totalTime: 0}, {name: 'Tuesday', daysWatched: 0, totalTime: 0}, {name: 'Wednesday', daysWatched: 0, totalTime: 0}, {name: 'Thursday', daysWatched: 0, totalTime: 0}, {name: 'Friday', daysWatched: 0, totalTime: 0}, {name: 'Saturday', daysWatched: 0, totalTime: 0}, {name: 'Sunday', daysWatched: 0, totalTime: 0} ]; var totalMovieTime = 0; var totalTvTime = 0; var currentDay = ''; var currentDayTime = 0; var longestDay = ''; var longestDayTime = 0; var totalTime = viewedItems.reduce(function(runningTotal, viewedItem) { var itemDate = new Date(viewedItem.dateStr); days[itemDate.getDay()].totalTime += viewedItem.bookmark; if (viewedItem.dateStr == currentDay) { currentDayTime += viewedItem.bookmark; } else { if (currentDayTime > longestDayTime) { longestDay = currentDay + ''; longestDayTime = currentDayTime + 0; } days[itemDate.getDay()].daysWatched += 1; currentDay = viewedItem.dateStr; currentDayTime = viewedItem.bookmark; } // record movie and tv times separately if (viewedItem.series === undefined) { totalMovieTime += viewedItem.bookmark; } else { totalTvTime += viewedItem.bookmark; } return runningTotal + viewedItem.bookmark; }, 0); for (var i=0; i