Test working scripts. Automation of analysis of active community members.

in Steem-BRU (BY-RU-UA)3 years ago (edited)

working scripts.png

Скрипт, который считает комментарии (в пределах 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); 
                          } 
                        }); 
}
        
});

Ближайшие задачи - это:

Сменить недельный подсчет на ежедневный. Почему-то сегодня этого не удалось сделать, хотя я занимался этим более двух часов.

Наладить телеграмм бот, чтобы он выдавал данные сразу же после запроса.

Sort:  

полезная вещь для статистики на Steemit @alexmove

 3 years ago 

Нужный скрипт, экономящий много времени!

 3 years ago 

Все, что ты пишешь, я оперативно тестирую. Сегодня у меня нет результата(

image.png

Или я что-то не то делаю? Успехов в разработке! Это по-настоящему ценный вклад!!!

 3 years ago 

Класс!
Сейчас доделал скрипт, который по дням считает - за вчера :)

Сейчас его запущу и опубликую результаты)
А затем займусь телеграмм ботов, пока он работает еще не очень.

 3 years ago 

Супер!) Воспитываешь телеграмм-бота:)

 3 years ago (edited)
 3 years ago 

Это хорошо) я стараюсь)

 3 years ago 

проверяю вручную, и что-то не сходится)
количество

Coin Marketplace

STEEM 0.16
TRX 0.16
JST 0.028
BTC 69517.21
ETH 2432.96
USDT 1.00
SBD 2.38