Skip to content

Instantly share code, notes, and snippets.

@anuragajwani
Last active April 26, 2020 20:36
Show Gist options
  • Save anuragajwani/897a995f9566e87a4dfa4c8c3d413b3b to your computer and use it in GitHub Desktop.
Save anuragajwani/897a995f9566e87a4dfa4c8c3d413b3b to your computer and use it in GitHub Desktop.
// Run in chrome console whilst on the stats page
function download(filename, text) {
var pom = document.createElement('a');
pom.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
pom.setAttribute('download', filename);
if (document.createEvent) {
var event = document.createEvent('MouseEvents');
event.initEvent('click', true, true);
pom.dispatchEvent(event);
}
else {
pom.click();
}
}
function dateToString(date) {
return date.getDate() +'/' + (date.getMonth() + 1) + '/' + date.getFullYear();
}
function getViewsPerDay() {
return Array.from(document.getElementsByClassName("bargraph-bar"))
.map(bar => bar.getAttribute("data-tooltip"))
.map((barText) => {
var viewsRe = /^([0-9]+)/
var views = viewsRe.exec(barText)[0];
var dateRe = /\w+\s([0-9]){1,2}$/
var dateString = dateRe.exec(barText)[0];
var dateWithCurrentYear = new Date(dateString + ' ' + new Date().getFullYear());
var currentDate = new Date();
if (dateWithCurrentYear > currentDate) {
var lastYear = new Date().getFullYear() - 1;
var date = dateToString(new Date(dateString + ' ' + lastYear));
} else {
var date = dateToString(dateWithCurrentYear);
}
return {
views: views,
date: date
}
});
}
function getViewsPerDayText() {
var viewsPerDay = getViewsPerDay()
var content = ""
viewsPerDay.forEach((row, i) => {
content += row.date + "," + row.views + "\n"
});
return content;
}
download("medium-metrics-" + new Date().toISOString().slice(0, 10) + ".csv", getViewsPerDayText());
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment