Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const channel = require('./general.csv.json');
- const fs = require('fs');
- var start_date = new Date(channel.messages[0].timestamp);
- var date = new Date(start_date);
- var now = new Date();
- var incrementDate = function(date) {
- return new Date(date.getTime() + (86400 * 1000))
- }
- var decrementDate = function(date) {
- return new Date(date.getTime() - (86400 * 1000))
- }
- var indices = {};
- var totaledits = {};
- var users = [];
- var addUser = function(name) {
- for (var i = 0; i < users.length; i++) {
- if (users[i] == name) {
- return;
- }
- }
- users.push(name);
- }
- for (m in channel.messages) {
- addUser(channel.messages[m].author.name);
- }
- for (var u = 0; u < users.length; u++) {
- totaledits[users[u]] = {};
- indices[users[u]] = 0;
- }
- var dateString = function(date) {
- var months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
- return date.getDate()+"/"+(date.getMonth()+1)+"/"+date.getFullYear();
- }
- var editsBeforeDate = function(date, user) {
- if(!totaledits[user].hasOwnProperty(dateString(decrementDate(date)))) {
- totaledits[user][dateString(decrementDate(date))] = 0;
- }
- var count = totaledits[user][dateString(decrementDate(date))];
- for (var m = indices[user]; m < channel.messages.length; m++) {
- if(channel.messages[m].author.name == user) {
- if(m%1000 == 0) {
- console.log(m + ": "+ user);
- }
- var message_date = new Date(channel.messages[m].timestamp);
- if (message_date.getTime() > date.getTime()) {
- indices[user] = m;
- return count;
- }
- count++;
- }
- }
- indices[user] = m;
- return count;
- }
- var csv = "date,";
- var headerDate = new Date(start_date);
- while (headerDate.getTime() < now.getTime()) {
- csv += dateString(headerDate) +",";
- headerDate=incrementDate(headerDate);
- }
- csv = csv.slice(0,csv.length-1)+"\n";
- function writeCsvLine(user) {
- var line = user + ",";
- for (day in totaledits[user]) {
- line += totaledits[user][day]+",";
- }
- line = line.slice(0,line.length-1) + "\n";
- return line;
- }
- while (date.getTime() < now.getTime()) {
- for (var u = 0; u < users.length; u++) {
- totaledits[users[u]][dateString(date)] = editsBeforeDate(date, users[u]);
- }
- date = incrementDate(date);
- }
- for (var u = 0; u < users.length; u++) {
- csv += writeCsvLine(users[u]);
- }
- fs.writeFileSync("edits_by_day.csv", csv);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement