$.get('/users/daily-site-access/' + StackExchange.options.user.userId, t => { eval(t.match(/var visited = {.+};/)[0]); const firstYear = Object.keys(visited)[0], firstMonth = Object.keys(visited[firstYear])[0], firstDay = Object.keys(visited[firstYear][firstMonth])[0], date = new Date(firstYear, firstMonth - 1, firstDay), today = Date.now(); let days = [], seq = 0, streaks = [0], fewest = 100, fewestDate; do { days[++seq] = !!visited[date.getFullYear()][date.getMonth() + 1][date.getDate()]; if (days[seq]) { streaks[streaks.length - 1]++; } else if (streaks[streaks.length - 1]) { streaks.push(0); } if (days.length >= 100) { // find 100-day period with fewest non-visits let missing = days.slice(-100).filter(v => v === false).length; if (missing <= fewest) { fewest = missing; fewestDate = new Date(date); } } date.setDate(date.getDate() + 1); } while (date < today); console.log(Math.max(...streaks), streaks, fewest, fewestDate); });