Перенос на сервер NodeJs скриптов.

in SteemFamily2 years ago

NodeJS for ubuntu.png

Скрипт - голосование за посты тех, кто проголосовал за свидетеля.

  1. Необходимо подготовить сами скрипты.
  2. Затем через FTP перенести их. Да, это одиниз простых вариантов.
  3. Лучше загрузить, безусловно, на гитхаб. И сейчас я это и сделаю. Часть приватных скриптов загружу с помощью FTP, а публичную часть - через GitHub.

https://github.com/Alexmovelove/vote.git

Готово!

Загружаю скрипты на сервер.
git clone https://github.com/Alexmovelove/vote.git

Конечно же, устанавливаю библиотеки.
npm i steem
npm i mysql2

Заполняю базу данных.

Создаю список постов по списку аккаунтов, кто проголосовал за свидетеля.

node postlist-vote.js

Проверяю работу

node vote.js

Конечно же, crontab

crontab -e

5 * * * * node /root/vote/vote/vote.js
0 5 * * * node /root/vote/vote/postlist-vote.js

Каждые пять минут запуск.
И каждый день в пять утра запуск.

vote.js

const dsteem = require("dsteem");
const mysql = require("mysql2");
const steem = require('steem');
const fs = require("fs");            
 
var settings = require('./config.js');

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;
let post_number; 
    
config = {
  host: "localhost",
  user: user_mysql,
  database: bd_name,
  password: password_mysql
}

const connection = mysql.createConnection(config);

    let sql = `SELECT * FROM vote_number WHERE id='1'`   ;
    connection.query(sql,  function(err, results) 
    {
        if(err) console.log(err);
        const users2 = results;

        post_number = users2[0].number;
    });


    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 = 'votepost';
let mytable_c = 'c'+d;
let mytable = 'a'+d;

let fullbase = "test";

//var wif = steem.auth.toWif(username, password, 'posting');

sql = `SELECT * FROM ${mytable_p}`;
console.log(sql);

connection.query(sql,  function(err, results) {
    if(err) console.log(err);
    
    const users = results;
   // console.log(users);
 //  console.log(users.length);

console.log(post_number);
console.log(post_number);
console.log(post_number);
console.log(post_number);
console.log(post_number);
console.log(post_number);
        post_number++;
        
                        const sql8 = `UPDATE vote_number SET number='${post_number}' WHERE id='1' LIMIT 1000`;
          
                        connection.query(sql8,function(err, results) {
                        if(err) console.log(err);
                        console.log(results);
                });
                
   for(let i=0; i < post_number; i++)
    {
        if ((users[i].comments == "0"))
        {
            let author = users[i].author;
            let lastsend = users[i].lastsend;
            console.log(author);
            console.log(author);
            console.log(author);
            console.log(lastsend);
            console.log(users[i].lastsend);

        if (lastsend == d) 
            
            {
    
                console.log('d');
                console.log('d');
                console.log('d');
                console.log('d');
            }
            let mv_coint = users[i].mv;
            let permlink = users[i].url;
            let weight = users[i].weight;
    let url = users[i].url;
    permlink = permlink.split("/")
    //console.log(permlink[3]);

    permlink = permlink[3];

        //  mv_coint = mv_coint.replace(/,/gi, '.');

            lastsend = users[i].lastsend;
            let mypermlink = new Date().toISOString().replace(/[^a-zA-Z0-9]+/g, '').toLowerCase();

    steem.broadcast.vote(wifkey, votey, author, permlink, 1000,function(err, result) 
            {
                
                                    if(err) 
                { 
                    console.log(err)
                } else {
                    
                        console.log(err, result);
                    
                    const sql12 = `UPDATE ${mytable_p} SET comments="1" WHERE url='${url}'`;
                    
                    connection.query(sql12, function(err, results) {
                    if(err) console.log(err);
                    //console.log(results);
                    });
                    
            }   
        
            });
            
/*

steem.broadcast.comment(votey, wifkey, 
 author, 
 permlink,
 votey, 
 mypermlink, 
 'hi', 
 'supertext', 
 {tags: ['steemjs', 'alexmovewitness']}, 
 function(err, result) {
    console.log(err, result);
});

*/
    }
        else 
        console.log("Already voted");
    }
});
 

postlist-vote.js

const fs = require("fs");
const steem = require('steem');
//let accounts = fs.readFileSync('spisok.txt').toString().split(" ");
//console.log(accounts);
accounts = 0;
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;

config = {
  host: "localhost",
  user: user_mysql,
  database: bd_name,
  password: password_mysql
}


    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;


//accounts.forEach(function (element,i,array){
    
      const mysql = require("mysql2");

const connection = mysql.createConnection(config);

let fullbase = "vote";
let table = "vote";

  const sql = `SELECT * FROM `+table;
    //const sql = `SELECT * FROM p0111 ORDER BY length DESC`;
       //  console.log(sql);   

  connection.query(sql,  function(err, results) {
      
      //         console.log(results);   


        if(err) console.log(err);
             console.log(results[1]['account']);   

        users = results;
        accounts = users;
//console.log(accounts);


len = accounts.length;
 for (yyy = 0; yyy < len; yyy++) 
 //for (yyy = 0; yyy < 20; yyy++) 

{
      console.log('yyy');
    //  console.log(yyy);
      console.log(accounts[yyy]);
     // console.log(accounts[yyy]['ofme']);
   //   console.log(accounts[yyy]['ofme']);
    //  console.log(accounts[yyy]['ofme']);
      let mv = accounts[yyy]['mv'];
      let weight=100;
            console.log('mv');
            console.log(mv);

      if (mv > 1000000) { weight = 10000 }
      else if (mv > 900000) { weight = 9500 } else if (mv > 800000) { weight = 9000 }   else if (mv > 700000) 
        { 
            weight = 8500;
        } else if (mv > 600000) 
        {
            weight = 8000;
        };
        
      if ((mv > 500000) && (mv < 600000)) weight = 7500;
      if ((mv > 400000)&& (mv < 500000)) weight = 7000;
      if ((mv > 300000)&& (mv < 400000)) weight = 6500;
      if ((mv > 200000)&& (mv < 300000)) weight = 6000;
      if ((mv > 100000)&& (mv < 200000)) weight = 5500;
      if ((mv > 90000)&& (mv < 100000)) weight = 4900;
      if ((mv > 80000)&& (mv < 90000)) weight = 4800;
      if ((mv > 70000)&& (mv < 80000)) weight = 4700;
      if ((mv > 60000)&& (mv < 70000)) weight = 4600;
      if ((mv > 50  )&& (mv < 60000)) weight = 3500;
      if ((mv > 40000)&& (mv < 50000)) weight = 3400;
      if ((mv > 30000)&& (mv < 40000)) weight = 3300;
      if ((mv > 20000)&& (mv < 30000)) weight = 3200;
      if ((mv > 10000)&& (mv < 20000)) weight = 3100;
      if ((mv > 9000)&& (mv < 10000)) weight = 1900;
      if ((mv > 5000)&& (mv < 9000)) weight = 1500;
      if ((mv > 1000)&& (mv < 5000)) weight = 1000;

              console.log('weight');
            console.log(weight);
     // let weight = accounts[yyy]['mv'];
      
 //if (accounts[yyy]['ofme'] === 'no')
 {
    steem.api.getDiscussionsByAuthorBeforeDate(accounts[yyy]['account'],null, new Date().toISOString().split('.')[0],50 , function(err, result) {
     if (result)
     {      // console.log(result);
       



        var i, len = result.length;
                    for (i = 0; i < len; i++) 
                    {
                                                    
                       var raw = result[i];
                       console.log('Автор');
                       console.log(raw.author);
                       console.log('Заголовок');
                       console.log(raw.author);
                     console.log('Сообщество');

                       console.log(raw.category);
                         console.log('Длина поста');
                       console.log(raw.body_length);
                         console.log('Количество ожидаемого вознаграждения');
                       console.log(raw.pending_payout_value);
     console.log('Количество комментариев');                     
                     console.log(raw.replies.length);
                         console.log('Количество upvote');
                        let upvote = raw.active_votes.length-1;
                       console.log(raw.active_votes.length-1);
     console.log('Дата создания');                   
                       console.log(raw.created);
    let input = raw.created;
    var d = new Date(); // Today!

                        d.setDate(d.getDate() - num_day); // Yesterday!
                        d = d.toJSON().split("T")[0];
            let title = raw.title;

    title = title.replace(/[^a-zа-яё0-9\s]/gi, ' ');
            
    if ((input.indexOf(d) !== -1))

    {
    body3R =  `| `+raw.author + `| <a href="`+raw.url+`">` + title + `</a>| `+ upvote + `| ` +  `????`  + `| ` + raw.children+`| ` + raw.body_length+ ' | \n';
    console.log(body3R);
    
            const mysql = require("mysql2");
  
const connection = mysql.createConnection(config);

connection.on('error', function() {});


let sql44 =  `create table if not exists ${table}post( id int primary key auto_increment, author varchar(255) not null, title varchar(255) not null, created varchar(255) not null, length int not null, url varchar(255) UNIQUE KEY, comments int not null, upvotes int not null, points float not null, lastsend varchar(255), weight int not null)`;
 
  
         connection.query(sql44, function(err, results) {
                    if(err) console.log(err);
                    console.log(results);
                    });     

                    const sql = `INSERT INTO ${table}post(author, title, created, length, url, comments, upvotes, points,lastsend,weight) VALUES('${raw.author}','${title}', '${raw.created}', '${raw.body_length}', '${raw.url}', '0', '${upvote}','0','',${weight})`;

                    connection.query(sql, function(err, results) {
                    if(err) console.log(err);
                    console.log(results);
                    });     

connection.end();

        console.log(raw.created);
            fs.appendFileSync("rank.txt",body3R);

    }
}
     }


    });
 }
}

});

    /*
    
    let post_number=70;
        
    const sql8 = `UPDATE vote_number SET number='${post_number}' LIMIT 1000`;

    connection.query(sql8,function(err, results) {
    if(err) console.log(err);
    console.log(results);
        connection.end();
    });

*/

create-vote-number.js

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";

let sql = `create table if not exists vote_number( id int primary key auto_increment, number int)`;

//let sql = `create table if not exists post_number( id int primary key auto_increment, number int)`;

connection.query(sql, function(err, results) {
if(err) console.log(err);
else console.log("Таблица создана");
});


config-sample.js

exports.num_day = 2;
exports.wifkey = "ыы";
exports.account = "чч.witness";

    var d = new Date(); // Today!
    d.setDate(d.getDate()-exports.num_day); // Yesterday!
    d = d.toJSON().split("T")[0];
    d = d.replace(/-/gi, '');
    
exports.bd_name = "witness";
exports.password_mysql = "root";
exports.user_mysql = "root";
exports.hive_name = "hive-153018";
exports.image_list = `![`+d+`.png](https://cdn.steemitimages.com/DQmbXSrdwm2MntCHrKSyfhAgNtQhMXNdUXK7zv8ztYAHzCV/`+d+`.png)`;
exports.title_name = "SteemFamily";
exports.url_post = `
![Checking The Uniqueness SteemFamily (1).png](https://cdn.steemitimages.com/DQmVKcXUyc38bw7P9cCfARZwZbtVXwUhjYF2K1bNnK6BXHF/Checking%20The%20Uniqueness%20SteemFamily%20(1).png)
`;



getlistvotes.js

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 = "votebase";


//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, account varchar(255) UNIQUE KEY, mv int, ofme varchar(255), lastget 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:1000, 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]);
let aaa=0;

function replacer(key, value) {
 if (aaa < 111)
    {
     if (key === 'witness')
        if (value > fullbase)
            aaa = 111;
      if (key === 'account')
      {
             console.log(value);

          //const sql4 = "INSERT INTO `"+fullbase+"`(account, ofme, lastget) VALUES('"+value+"','yes', '"+d+"')";
          const sql4 = "INSERT INTO `"+table+"`(account, mv, ofme, lastget) VALUES('"+value+"','0','yes', '"+d+"')";
          
          connection.query(sql4, function(err, results) {
            if(err) console.log(err);
            else 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);


});

*/

list.bat

cmd /c node postlist-vote.js
exit

Good Like!
Have a nice day!

Sort:  

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