Scripts for Witness: autocashback

in SteemFamily3 years ago

8 Марта (2).png

Приветствую всех!
Продолжаю формировать удобные инструменты для работы 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
И установить его.

image.png

А также открываем удаленный доступ на сервере для MySQL

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

  1. Закоментируем следующую строку:
    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);
})  




```
Sort:  

Upvoted! Thank you for supporting witness @jswit.
Please check my new project, STEEM.NFT. Thank you!
default.jpg

 3 years ago 

Здравствуйте, добрый вечер, спасибо, что поделились этой ценной информацией....