Итак, продолжаем.
Еше раз подзадачи:
- Необходимо получить список всех комментариев нужного пользователя.
- Определение нужной даты. Проверка даты комментария с нужным нам диапазоном.
- Подсчет нужного аккаунта
- Заведение рейтинга - сохранение данных для определения рейтинга.
- Проделывание для всего списка сообщества.
- Вызов данных по комментарию (затем в иделает сделать в боте)
Сейчас нужно сделать получения списка всех активных пользователей.
Взял из поста со списком курирования: https://steemit.com/hive-171319/@steem-bru/spisok-kurirovaniya-s-akkaunta-steem-bru-or-ot-16-08-2021
Там наиболее активные, после добавлю других.
Помещаем в текстовый файл spisok.txt
Считываем в скрипте
const fs = require("fs");
let array = fs.readFileSync('spisok.txt').toString().split("\n");
И теперь добавляем цикл, чтобы обработать все данные из файла:
var i;
for (i = 0; i < 56; i++) {
console.log(array[i]);
}
Получилось.
Прикручиваем к основному скрипту.
Внимание! Тут я прочел комментарий от @greatketty
Ой-вей, а ведь телеграмм бот не запущен, даже прототип.
Срочно нужно разобраться, где взять бесплатный сервер для телеграмм-бота. Гуглю...
Так, для сервера есть определенные сложности. Запущу просто на своем ноуте, и продолжу работать над самим скриптом. Возвращаюсь к процессу.
Соединяю скрипты:
const fs = require("fs");
var y;
let array = fs.readFileSync('spisok.txt').toString().split("\n");
//let fileContent = fs.readFileSync("spisok.txt", "utf8");
for (y = 0; y < 4; y++) {
//console.log(array[y]);
const steem = require('steem');
let stat;
test = array[y].split();
console.log(test);
steem.api.getDiscussionsByComments({
"start_author": test,
"limit": 10
}, 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(array[y]);
console.log(stat);
console.log(array[y]);
}
//console.log('alexmove: ', stat);
}
);
}
Итак, новый затык - почему не срабатывает из данных скрипта.
array[y].trim()
Функция trim - и все заработало!
const fs = require("fs");
var y;
let array = fs.readFileSync('spisok.txt').toString().split("\n");
//let fileContent = fs.readFileSync("spisok.txt", "utf8");
for (y = 0; y < 4; y++) {
//console.log(array[y]);
const steem = require('steem');
let stat;
steem.api.getDiscussionsByComments({
"start_author": array[y].trim(),
"limit": 10
}, 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(array[y]);
console.log(stat);
console.log(array[y]);
}
//console.log('alexmove: ', stat);
}
);
}
Новый мощнейший тупик, с которым я сталкивался и раньше, когда себе писал скрипты. Сначала обрабатывается первая часть, а уже потом обрабатывается часть, которая работает с блокчейном.
Из-за этого обрабатывается лишь 1 участник, вместо 56. Что с этим делать - я тогда так и не смог понять. Если сейчас будет также, то я упрусь в очень трудную стену.
//отвлекся вдруг на пару часов//
Продолжим! На чем мы остановились? Ах да... кручу верчу, чтобы добится работы скрипта :)
Придумал забавный вариант с удалением по одному элементу из файлика.
тестовый скрипт
const fs = require("fs");
let array = fs.readFileSync('spisok.txt').toString().split("\r");
const steem = require('steem');
//let popped = array.shift();
//console.log(array);
let test_a = array[0].split(' ');
//console.log(test2[0]);
let popped = test_a.shift();
console.log(popped);
// console.log(test_a);
fs.writeFile("spisok.txt", test_a.join(' '), (err) => {
if (err) {
console.log(err);
}
});
Рабочий вариант - промежуточный
const fs = require("fs");
const steem = require('steem');
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);
}
});
Приходится 56 раз запускать скрипт... :)
Хм... )
Впрочем, пока и так неплохо!
Не правда ли?
Запустил 56 раз.
Барабанная дробь!
olesia 100
sergeyk 2
dmitrik 5
slon21veka 76
antikus369 4
strecoza 100
olga.maslievich 0
notannov 100
may2015 100
milakz 39
greatketty 75
apnigrich 19
veta-less 0
qwerrie 33
eternaldreamer 88
yura77 25
thimalteb 23
steemit-bank 0
maxer27 0
nesmeliy 85
yetaras 0
strawberrry 100
soulwind 25
alexmove 14
danny.green 0
way-out 82
darina14 90
slem 28
allfabeta 0
vlad26 90
solox 7
daybook 9
mamamasha 100
gkriptonec 0
aniqamashkoor 54
shahariar1 52
nhockij 0
cryplatinum 2
tinochka2 64
dimok1983 0
ludmila.kyriakou 34
vlad2004 0
nastena09 63
stickmans 20
chinaprofitpro 1
viria7 0
chillipepper 4
liutik2 0
datych 6
rupok 5
municorn 14
ir3k 57
Вот статистика на данный момент :)
Пока еще в ручном режиме нужно обновлять.
И телеграмм бот не прикручен к скрипту.
Но статистика получена!
Проверяем!
Спасибо всем за внимание!
Дальше будет улучшение и доработка всех моментов.
Внимание, есть множество моментов.
Например, сейчас скрипт считает только 100 последних комментариев, если участник пишет больше 100 комментариев, то там все равно будет 100.
Какая огромная работа! Огромнейшая)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Спасибо! Я очень вдохновился :)
Это же идея Димы, а в комментариях кто-то меня тегнул, сейчас уже не помню кто, надо глянуть )
И я вдохновился и за три дня сделал.
Так что сработали командно
Но вот эти моменты будет трудно доделывать
То, что только 100 считает, например.
Хотя.... можно каждый день считать, и затем суммировать.... Это идея :)
Хорошая идея...
Спасибо за поддержку!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Идея, но а попробуй посчитать в ручную, это трудно
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Да, каждый день также автоматом.
Вручную трудоемко, я попробовал, титанический труд.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Хорошо бы такую программу запустить и никаких ручных подсчётов
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
ну ты и голова, Лешка) молодец!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Спасибо за поддержку!! Ты 85 комментариев написал за неделю, как думаешь верное?)
Я придумал что считать подневно, а затем суммировать, возможно так будет технически удобнее... Хотя не факт)
Еще есть что дорабатывать
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
ого! 85 - это маловато думаю) не знаю, не считал))))
считать подневно и суммировать - хорошая идея
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Своих героев надо знать в лицо, это я тебя отметила:) изначально эта идея обсуждалась не раз, она просто витала в воздухе!)
А ты большой молодец!!! Отличные результаты:)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Хорошо получилось!)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit