Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // У вас должен быть установлен nodejs
- // Установите зависимости для скрипта командой npm install golos-js
- // =====================================================================
- // Автор https://golos.io/@djimirji/
- // =====================================================================
- const Trans = require("./cyr-to-lat")
- //Логины которые не будут учитываться
- const blacklistvoters = ['servobot','upit']
- // Логин аккаунта у которого ищем посты
- const mainBot = 'djimirji'
- //Теги для публикации поста
- const tags = ['апвот100','golos','голос','cashback','бот']
- //const TitlePost = 'Cashback или мутуализм. Выпуск - '
- const TitlePost = 'Еженедельный рейтинг постов от djimirji'
- //##################################################################
- // ======================= Коннект ==========================
- //const GOLOSNODE = "ws://localhost:9090"
- // Подключение JavaScript библиотеки для работы c API голоса
- const GOLOSNODE = "wss://ws.golos.io"
- //const GOLOSNODE = "wss://ws17.golos.io"; //нода @vik
- const golos = require('golos-js');
- golos.config.set('websocket', GOLOSNODE);
- // =====================================================================
- //#######################################################################
- const body_start = `
- Всем привет.
- > Мутуали́зм (от лат. mutual «взаимный») — широко распространённая форма взаимополезного сожительства, когда присутствие партнёра становится обязательным условием существования каждого из них; один из типов симбиоза — сосуществования различных биологических видов. Но в отличие от мутуализма, симбиоз может быть и не выгоден одному из партнёров, например, в случае комменсализма.
- `
- //#######################################################################
- function getblogs(author) {
- let d = new Date();
- let dt = d.toISOString().split('.')[0];
- let startPermlink = '';
- let beforeDate = dt;
- let limit = 50;
- return golos.api.getDiscussionsByAuthorBeforeDate(author, startPermlink, beforeDate, limit, async function(err, result) {
- if (err) { console.log(err) }
- });
- };
- //#######################################################################
- function getrewarddata (author,startsearch,limit) {
- return golos.api.getAccountHistory(author, startsearch, limit, function(err, result) {
- if (err) { console.log(err) }
- });
- }
- //#######################################################################
- const limit = 1999;
- var count = 2000;
- const getLastBlock = new Promise(function(resolve, reject) {
- async function CountAllOperationsForAccount () {
- let round = await getrewarddata (mainBot,count,limit);
- if (round[limit][0] == count) {
- count = count + round.length;
- CountAllOperationsForAccount (mainBot,count,limit);
- }
- else {
- resolve ( round[limit][0] );
- }
- }
- CountAllOperationsForAccount ()
- })
- const LastBlocksToSearch = 2000
- async function findreward (blog) {
- let LastBlock = await getLastBlock
- //let blog = findblog ()
- let permlink = blog.permlink
- let finded;
- let lastmove = await getrewarddata(mainBot,LastBlock,LastBlocksToSearch)
- for (let i of lastmove) {
- if ((i[1].op[0] == 'author_reward') && (i[1].op[1].permlink == permlink) ) {
- finded = i[1].op
- }
- }
- try {
- if (parseFloat(finded[1].sbd_payout) > parseFloat(finded[1].steem_payout)) {
- return [parseFloat(finded[1].sbd_payout) , ' GBG']
- }
- else {
- return [parseFloat(finded[1].steem_payout), ' GOLOS']
- }
- }
- catch(e) {
- console.log ("Не удалось вычеслить вознаграждение за пост")
- }
- }
- //#######################################################################
- //#######################################################################
- function findActiveVotes (author , permlink) {
- return golos.api.getActiveVotes(author, permlink, function(err, result) {
- if(err){console.log(err);}
- });
- }
- //#######################################################################
- async function findblog () {
- let blogs = await getblogs (mainBot)
- let WeekAgoStartDay = new Date(new Date(new Date().getTime() - 60 * 60 * 24 * 7 * 1000).setHours(0,0,0,1))
- let WeekAgoEndDay = new Date(new Date(new Date().getTime() - 60 * 60 * 24 * 6 * 1000).setHours(23,59,59,1))
- for (let k of blogs) {
- if ((k.title.search(TitlePost) != -1) && (new Date(k.created) > WeekAgoStartDay) && (new Date(k.created) < WeekAgoEndDay)){
- return k
- }
- }
- }
- //#######################################################################
- async function findLastCashoutNumber () {
- let blogs = await getblogs (mainBot)
- let cashbackblog = []
- for (let k of blogs) {
- if (k.title.search(TitlePost) != -1) {
- cashbackblog.push(k.title)
- }
- }
- }
- //#######################################################################
- const collectdata = new Promise(function(resolve, reject) {
- try {
- var data = []
- findblog ()
- .then ( function (result){
- if (result !== undefined) {
- console.log(result)
- data.push(result)
- findActiveVotes (result.author , result.permlink)
- .then (function (result){
- data.push(result)
- })
- findreward (result)
- .then (function (result){
- data.push(result)
- })
- .then (function (result){
- resolve (data)
- })
- }
- else {
- reject (console.log("Не удалось вычеслить пост"))
- }
- })
- }
- catch(e) {
- console.log (reject)
- }
- })
- //#######################################################################
- function getrewardforeach (allvoters,totalreward, TypeOfReward) {
- let reward = []
- let total_rshares = allvoters.map(a => parseInt(a.rshares))
- total_rshares = total_rshares.reduce((a, b) => a + b, 0)
- for (i=0;i < allvoters.length; i++) {
- let rwd = ((parseFloat(allvoters[i].rshares)/parseFloat(total_rshares)) * parseFloat(totalreward)).toFixed(3)
- if ((rwd > 0) && !(blacklistvoters.includes(allvoters[i].voter))) {
- fill = {
- voter: allvoters[i].voter,
- reward: rwd + TypeOfReward
- }
- reward.push(fill)
- }
- if (i == (allvoters.length - 1)) {
- return reward
- }
- }
- }
- //#######################################################################
- async function run () {
- let collectedData = await collectdata
- if (collectedData) {
- let eachreward = await getrewardforeach (collectedData[1], collectedData[2][0], collectedData[2][1])
- console.log(collectedData[2], eachreward )
- }
- else {
- console.log('невозможно собрать необходимые данные')
- }
- }
- run ()
Advertisement
Add Comment
Please, Sign In to add comment