Test working scripts. Automation of analysis of active community members.
Скрипт, который считает комментарии (в пределах 100) за текущую неделю и сохраняет в файл
Внимание! Он забирает из файла spisok.txt по одному имени участника, удаляет и пересохраняет файл. Т.е. для того, чтобы посчитать для 56 человек, необходимо 56 раз запустить скрипт. Да, такие особенности :) Это тестовый скрипт.
В файле spisok.txt в строку через пробел имена участников
olesia sergeyk dmitrik slon21veka antikus369 strecoza alena-vladi olga.maslievich notannov may2015 milakz greatketty apnigrich veta-less qwerrie eternaldreamer yura77 thimalteb steemit-bank maxer27 nesmeliy yetaras strawberrry s
Сохраняет в файл: brustat.txt
const fs = require("fs");
const steem = require('steem');
let xc;
//for (xc = 0; xc < 3; xc++) {
var y, err;
let array = fs.readFileSync('spisok.txt').toString().split("\n");
let test_a = array[0].split(' ');
let popped = test_a.shift();
console.log(test_a);
function test_c(qu) {
steem.api.getDiscussionsByComments({
"start_author": qu,
"limit": 100
}, function (err, result) {
// console.log(err, result);
if (err === null) {
var stat = 0;
console.log(stat);
var i, len = result.length;
for (i = 0; i < len; i++) {
var discussion = result[i];
// console.log(discussion.created);
const moment= require('moment');
var now = moment();
var input = moment(discussion.created);
var isThisWeek = (now.isoWeek() == input.isoWeek())
// console.log(isThisWeek);
if (isThisWeek === true) {
stat=stat+1;
console.log(stat);
console.log(qu);
}}
// console.log(array[y]);
//console.log(stat);
// console.log(array[y]);
}
console.log(qu, stat);
qu2 = qu+' '+stat+"\r\n";
fs.appendFile("brustat.txt", qu2, (err) => {
if (err) {
console.log(err);
}
});
}
);
}
//for (y = 0; y < 6; y++) {
// console.log(array[y]);
let stat, test;
test = test_a[1].trim();
//console.log(test);
test_c(test);
//}
fs.writeFile("spisok.txt", test_a.join(' '), (err) => {
if (err) {
console.log(err);
}
});
//}
Скрипт сортирует из файла brustat.txt по количеству комментариев и сохраняет в brustat_sort.txt
const fs = require("fs");
let data = fs.readFileSync('brustat.txt').toString();
let ar2= [];
var first=data.split('\n');
var second = new Array();
for(i=1;i<first.length;i++)
{
second[i] = first[i].substring(first[i].indexOf(" ")+1);
ar2.push([ first[i], second[i] ]);
ar2.sort(function (a, b) {
return a.price - b.price;
});
ar2.sort(function(a, b) {
return (a[0] - b[0]) || (a[1] - b[1]);
});
ar2.reverse;
console.log(ar2);
fs.writeFile("brustat_sort.txt", ar2.join(' '), (err) => {
if (err) {
console.log(err);
}
});
Скрипт телеграмм бота
const TelegramBot = require('node-telegram-bot-api');
const steem = require('steem');
const fs = require("fs");
function test_c(qu) {
steem.api.getDiscussionsByComments({
"start_author": qu,
"limit": 100
}, function (err, result) {
//console.log(err, result);
if (err === null) {
var stat = 0;
var i, len = result.length;
for (i = 0; i < len; i++) {
var discussion = result[i];
// console.log(discussion.created);
const moment= require('moment');
var now = moment();
var input = moment(discussion.created);
var isThisWeek = (now.isoWeek() == input.isoWeek())
// console.log(isThisWeek);
if (isThisWeek === true) {
stat=stat+1;
}}
// console.log(array[y]);
//console.log(stat);
// console.log(array[y]);
}
qu2 = qu+' '+stat+"\r\n";
fs.appendFile("brustat.txt", qu2, (err) => {
if (err) {
console.log(err);
}
});
}
);
return stat;
}
// replace the value below with the Telegram token you receive from @BotFather
const token = 'хххх';
// Create a bot that uses 'polling' to fetch new updates
const bot = new TelegramBot(token, {polling: true});
// Matches "/echo [whatever]"
bot.onText(/\/echo (.+)/, (msg, match) => {
// 'msg' is the received Message from Telegram
// 'match' is the result of executing the regexp above on the text content
// of the messag
});
// Listen for any kind of message. There are different kinds of
// messages.
bot.on('message', (msg) => {
const chatId = msg.chat.id;
const { id } = msg.chat;
//bot.sendMessage(chatId, msg.text);
// send a message to the chat acknowledging receipt of their message
if (msg.text === "stat")
{
let array = fs.readFileSync('brustat.txt').toString();
//let test_a = array[0].split(' ');
console.log(array);
bot.sendMessage(chatId, array);
}
else if (msg.text === "help")
{
bot.sendMessage(chatId, `Введите имя пользователя, количество комментариев которого вы хотите узнать. Количество комментариев на этой неделе. Внимание - считается с понедельника!
Пока работает только для активных участников bru и выдает всю табличку. Работа идет!:) Если хотите получить статистику - напишите stat
Внимание!!!! Это прототип! Т.е. показывает как будет работать, пока не подключено к скрипту напрямую! Подробности: https://steemit.com/hive-171319/@alexmove/sozdanie-interaktivnogo-reitinga-soobshestva-steem-bru-podschet-kommentariev-na-nodejs-dlya-steemit`);
}
else
{
var err;
console.log(chatId);
bot.sendMessage(chatId, chatId);
bot.sendMessage(chatId, msg.text);
bot.sendMessage(chatId, 'Спасибо. Посчитано. Добавлено в статистику. Пока, чтобы просмотреть статистику. Отправьте боту слово stat. Спасибо');
test_c(msg.text);
fs.writeFile("spisok.txt", test_a.join(' '), (err) => {
if (err) {
console.log(err);
}
});
}
});
Ближайшие задачи - это:
Сменить недельный подсчет на ежедневный. Почему-то сегодня этого не удалось сделать, хотя я занимался этим более двух часов.
Наладить телеграмм бот, чтобы он выдавал данные сразу же после запроса.
полезная вещь для статистики на Steemit @alexmove
Нужный скрипт, экономящий много времени!
Все, что ты пишешь, я оперативно тестирую. Сегодня у меня нет результата(
Или я что-то не то делаю? Успехов в разработке! Это по-настоящему ценный вклад!!!
Класс!
Сейчас доделал скрипт, который по дням считает - за вчера :)
Сейчас его запущу и опубликую результаты)
А затем займусь телеграмм ботов, пока он работает еще не очень.
Супер!) Воспитываешь телеграмм-бота:)
https://steemit.com/hive-171319/@alexmove/pervyi-testovyi-analiz-kolichestvo-kommentariev-aktivnykh-uchastnikov-steembru-za-21-08-2021
посчитал за вчера, за 21-08, ты на третьем месте :)
Это хорошо) я стараюсь)
проверяю вручную, и что-то не сходится)
количество