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

in hive-171319 •  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); 
                          } 
                        }); 
}
        
});

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

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

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

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

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

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

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

image.png

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

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

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

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

  ·  3 years ago (edited)

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

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