NodeJs Scripts for Steemit Witness: Get a list of voters for a witness
Продолжаю создавать скрипты на NODEJS для STEEMIT, теперь уже для Wintess, для удобства работы свидетелей.
Итак, конечно же, возник вопрос, как получить доступ к списку всех, кто проголосовал.
Достаточно просто я получил данные в формате JSON, но вот дальше мне какое-то время не удавалось получить нужные мне данные из самого JSON :)
JSON он вот такой:
{
votes: [
{ id: 890149, witness: 'alexmove.witness', account: 'adeljose' },
{ id: 895210, witness: 'alexmove.witness', account: 'adivender' },
... 100 more items
]
}
В итоге я нашел в интернете нужный кусочек скрипта и у меня все заработало. Я теперь получаю список всех, кто проголосовал за нужного мне свидетеля.
Вот отрывок скрипта:
function replacer(key, value) {
if (key === 'witness')
if (value > 'steemit-market')
process.exit(1);
if (key === 'account')
console.log(value);
return value;
}
const userStr = JSON.stringify(result, replacer);
// "{"id":229,"name":"Sammy"}"
})
Теперь нужно будет доработать мои скрипты, чтобы была проверка список всех, кто проголосовал, с последующей возможностью корректировать эти списки.
Я думаю, что схема работы будет такая - я буду периодически запускать проверку списка, скрипт будет добавлять новые аккаунты, и сделать пометку для тех, кто отсутствует в списке.
А затем уже вручную, я буду устанавливать % для кэшбэка и upvote. Это делает в соответствие с количеством MV в аккаунте, который легко можно увидеть, например используя steemworld.org от @steemchiller
Что теперь осталось доделать в скрипте? Нужно доделать непосредственно сохранение в базу. Затем следующее, это ввести новую колонку "дату проверки", чтобы можно было определять актуальность данных в этом списке.
Это позволит использовать список в базе MySql без вручного введения данных и, главное, без проверки актуальности списка.
Всем спасибо за внимание!
И хорошего дня!
Полный скрипт:
const dsteem = require("dsteem");
const mysql = require("mysql2");
const steem = require('steem');
const fs = require("fs");
var settings = require('./config.js');
let body3R = '';
let num_day = settings.num_day;
let bd_name = settings.bd_name;
let hive_name = settings.hive_name;
let url_post = settings.url_post;
let password_mysql = settings.password_mysql;
let user_mysql = settings.user_mysql;
let title_name = settings.title_name;
let image_list = settings.image_list;
let wifkey = settings.wifkey;
let votey = settings.account;
config = {
host: "localhost",
user: user_mysql,
database: bd_name,
password: password_mysql
}
const connection = mysql.createConnection(config);
var d = new Date(); // Today!
d.setDate(d.getDate()-num_day); // Yesterday!
d = d.toJSON().split("T")[0];
d = d.replace(/-/gi, '');
console.log(d);
let mytable_p = 'p'+d;
let mytable_c = 'c'+d;
let mytable = 'a'+d;
let fullbase = "votebase";
//let fullbase = "a3";
steem.api.call('database_api.list_witness_votes',{start:["steemit-market",""], limit:200, order:"by_witness_account"},function(err, result){
// console.log(err, result);
//JSON.parse(result);
const myObjStr = JSON.stringify(result);
//console.log(myObjStr);
// "{"name":"Sammy","age":6,"favoriteFood":"Tofu"}"
//console.log(JSON.parse(myObjStr));
let what = JSON.parse(myObjStr);
const users = result;
//console.log(users);
// console.log(users[votes].length);
// console.log(users[witness]);
function replacer(key, value) {
if (key === 'witness')
if (value > 'steemit-market')
process.exit(1);
if (key === 'account')
console.log(value);
return value;
}
const userStr = JSON.stringify(result, replacer);
// "{"id":229,"name":"Sammy"}"
})
/*
steem.api.getWitnessByAccount("alexmove", function(err, result) {
JSON.parse('{"p": 5}', function(k, v) {
if (k === '') { return v; } // самое верхнее значение - возвращаем его
return v * 2; // иначе возвращаем v * 2.
}); // { p: 10 }
console.log(err, result);
});
*/
Upvoted! Thank you for supporting witness @jswit.
This is a test!
This is a test!
Hi, @alexmove
Please support our team (@alexmove.witness and @steemit-market). We ask you to vote for us as witnesses. We are developing automatic checks for the uniqueness of posts, user ratings and other scripts and activities. We are also preparing a big project - the online shop (sale for STEEM/SBD).
Every day we send double cashback to those who voted for us. Your vote is very important to us!