Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function prettify_seconds(seconds) {
- return (seconds / 60).toFixed(1) + "min";
- }
- function compute_statistics_for_user(user) {
- user.large_pauses = [];
- user.max_pause = 0;
- last_active = user.posts[0];
- total_pause_time = 0;
- total_accounted_pauses = 1;
- user.posts.slice(1).forEach(function(post_time) {
- pause = post_time.getTime() - last_active.getTime();
- pause = pause / 1000; // from milliseconds to seconds
- user.max_pause = Math.max(user.max_pause, pause);
- if (pause <= 1 * 60 * 60) {
- total_pause_time += pause;
- total_accounted_pauses += 1;
- } else {
- user.large_pauses.push({
- begin: last_active,
- end: post_time,
- duration: prettify_seconds(pause)
- });
- }
- last_active = post_time;
- });
- user.average_pause = prettify_seconds(total_pause_time / total_accounted_pauses);
- user.max_pause = prettify_seconds(user.max_pause);
- user.posts = user.posts.length;
- return user;
- }
- function compute_statistics_for_all() {
- var regex_pattern = /(\d\d)\/(\d\d)\/(\d\d) [А-Яа-я]{2,4} (\d\d)\:(\d\d)\:(\d\d)/;
- users_by_name = {}
- posts = Array.from(document.querySelectorAll('.post'))
- .map(value => {
- var result = new Object();
- result.name = value.querySelector("[id^=id_tag_]");
- result.name = (result.name != null) ? result.name.innerText : "# OP"
- result.date = value.querySelector("[class^=post__time]").innerText;
- return result;
- })
- .map( post => {
- match = regex_pattern.exec(post.date);
- post.date = (new Date(Date.UTC("20" + match[3], match[2], match[1], parseInt(match[4]), match[5], match[6])));
- return post;
- })
- .forEach(post => {
- user = users_by_name[post.name] || {name: post.name, posts: []};
- user.posts.push(post.date);
- users_by_name[post.name] = user;
- })
- users = Object.entries(users_by_name)
- .map(entry => entry[1])
- .map(compute_statistics_for_user)
- .sort((a, b) => b.posts - a.posts);
- return users;
- }
- compute_statistics_for_all();
Advertisement
Add Comment
Please, Sign In to add comment