Scripts for Witness: autocashback
Приветствую всех!
Продолжаю формировать удобные инструменты для работы Witness. Выкладываю их в GitHub, а в этом посте опишу инструкцию по установки и настройки данного скрипта. А также сдублирую в посты сам программный код.
Итак, в первую очередь необходимо установить на сервере MySql. Я использую Ubuntu, поэтому инструкция будет для этой операционной системы. Пожалуйста, убедитесь, что вы используете именно Ubuntu
Вы можете проверить командой lsb_release -a
lsb_release -a
~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.4 LTS
Release: 20.04
Codename: focal
Устанавливаем MySql на Ubuntu
Вначале "обновить индекс тегов":
sudo apt update
Затем начать установку:
sudo apt install mysql-server
Нам понадобится удаленный доступ.
Вам нужно на компьютер скачать Mysql Workbench
И установить его.
А также открываем удаленный доступ на сервере для MySQL
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
- Закоментируем следующую строку:
bind-address = 127.0.0.1
меняем на:
bind-address = 0.0.0.0
Если есть строка, содержащая skip-networking, удалите ее или закомментируйте, добавив # в начале строки.
Перезагрузить MySql
sudo systemctl restart mysql
Создаем базу данных.
CREATE DATABASE witness;
Создаем пользователя
CREATE USER 'имяпользователя'@'xx.xx.xx.xx' IDENTIFIED BY 'пароль';
Далее предоставляем права.
GRANT ALL PRIVILEGES ON имя базы данных.* TO 'имя пользователя'@'xx.xx.xx.xx';
FLUSH PRIVILEGES;
Где "xx.xx.xx.xx" - это айпи.
Отлично, MySQL настроили.
Теперь необходимо загрузить и настроить скрипт.
https://github.com/Alexmovelove/Autovote.git
mkdir vote
cd vote
git clone https://github.com/Alexmovelove/Autovote.git
nano vote/Autovote/config.js
Вписываем нужные данные.
И, запускаем.
node getlistforcashback.js
node cashback.js
Однако, скрипт пока не прописывает автоматом MV, поэтому мы сделаем вручную (да-да) экспорт всего списка в базу MySql
Для этого идем на https://steemworld.org/witnesses
Копируем список в таблицу.
Экспортируем в csv
Ипортируем в mySql
sudo apt update
apt install npm
npm i mysql
npm i steem
И наконец, настраиваем планировщик.
crontab -e
0 4 * * * node /vote/Autovote/cashback.js
Написано на основе моего поста: https://steemit.com/hive-153018/@alexmove/instruction-how-to-set-user-activity-rating-kak-ustanovit-reiting
Всем хорошего дня!
Дополнение. скрипты:
cashback.jjs
const = 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 = "steemit-market";
//let fullbase = "alexmove.witness";
//let fullbase = "вboylikegirl.wit";
let fullbase = "alexmove.witness";
let table = "cashback";
//let sql = "create table if not exists `"+fullbase+"`(id int primary key auto_increment, account varchar(255) UNIQUE KEY, ofme varchar(255), lastget varchar(255))";
let sql = "create table if not exists `"+table+"`(id int primary key auto_increment, mv float, account varchar(255) UNIQUE KEY, ofme varchar(255), lastget varchar(255),lastsend varchar(255))";
connection.query(sql, function(err, results) {
if(err) console.log(err);
else console.log("Таблица создана");
});
steem.api.call('database_api.list_witness_votes',{start:[fullbase,""], limit:200, order:"by_witness_account"},function(err, result){
const myObjStr = JSON.stringify(result);
let what = JSON.parse(myObjStr);
const users = result;
let aaa=0;
function replacer(key, value) {
if (aaa < 111)
{
if (key === 'witness')
if (value > fullbase)
aaa = 111;
if (key === 'account')
{
console.log(value);
console.log(d);
console.log(d);
console.log(d);
const sql4 = "INSERT INTO `"+table+"`(mv,account, ofme, lastget,lastsend) VALUES('0','"+value+"','0',"+d+",'0')";
connection.query(sql4, function(err, results) {
if(err) console.log(err);
else console.log("добавлена запись", value);
});
}
}
return value;
}
const userStr = JSON.stringify(result, replacer);
})
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 = "steemit-market";
//let fullbase = "alexmove.witness";
//let fullbase = "вboylikegirl.wit";
let fullbase = "alexmove.witness";
let table = "cashback";
//let sql = "create table if not exists `"+fullbase+"`(id int primary key auto_increment, account varchar(255) UNIQUE KEY, ofme varchar(255), lastget varchar(255))";
let sql = "create table if not exists `"+table+"`(id int primary key auto_increment, mv float, account varchar(255) UNIQUE KEY, ofme varchar(255), lastget varchar(255),lastsend varchar(255))";
connection.query(sql, function(err, results) {
if(err) console.log(err);
else console.log("Таблица создана");
});
steem.api.call('database_api.list_witness_votes',{start:[fullbase,""], limit:200, order:"by_witness_account"},function(err, result){
const myObjStr = JSON.stringify(result);
let what = JSON.parse(myObjStr);
const users = result;
let aaa=0;
function replacer(key, value) {
if (aaa < 111)
{
if (key === 'witness')
if (value > fullbase)
aaa = 111;
if (key === 'account')
{
console.log(value);
console.log(d);
console.log(d);
console.log(d);
const sql4 = "INSERT INTO `"+table+"`(mv,account, ofme, lastget,lastsend) VALUES('0','"+value+"','0',"+d+",'0')";
connection.query(sql4, function(err, results) {
if(err) console.log(err);
else console.log("добавлена запись", value);
});
}
}
return value;
}
const userStr = JSON.stringify(result, replacer);
})
getlistforcashback.js
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 = "steemit-market";
//let fullbase = "alexmove.witness";
//let fullbase = "вboylikegirl.wit";
let fullbase = "alexmove.witness";
let table = "cashback";
//let sql = "create table if not exists `"+fullbase+"`(id int primary key auto_increment, account varchar(255) UNIQUE KEY, ofme varchar(255), lastget varchar(255))";
let sql = "create table if not exists `"+table+"`(id int primary key auto_increment, mv float, account varchar(255) UNIQUE KEY, ofme varchar(255), lastget varchar(255),lastsend varchar(255))";
connection.query(sql, function(err, results) {
if(err) console.log(err);
else console.log("Таблица создана");
});
steem.api.call('database_api.list_witness_votes',{start:[fullbase,""], limit:200, order:"by_witness_account"},function(err, result){
const myObjStr = JSON.stringify(result);
let what = JSON.parse(myObjStr);
const users = result;
let aaa=0;
function replacer(key, value) {
if (aaa < 111)
{
if (key === 'witness')
if (value > fullbase)
aaa = 111;
if (key === 'account')
{
console.log(value);
console.log(d);
console.log(d);
console.log(d);
const sql4 = "INSERT INTO `"+table+"`(mv,account, ofme, lastget,lastsend) VALUES('0','"+value+"','0',"+d+",'0')";
connection.query(sql4, function(err, results) {
if(err) console.log(err);
else console.log("добавлена запись", value);
});
}
}
return value;
}
const userStr = JSON.stringify(result, replacer);
})
```
Upvoted! Thank you for supporting witness @jswit.
Please check my new project, STEEM.NFT. Thank you!
Здравствуйте, добрый вечер, спасибо, что поделились этой ценной информацией....