Skip to content

Commit

Permalink
filter accounts in contest
Browse files Browse the repository at this point in the history
  • Loading branch information
AdamCox9 committed Feb 17, 2018
1 parent 1b16037 commit e7a3ae1
Show file tree
Hide file tree
Showing 3 changed files with 90 additions and 112 deletions.
136 changes: 76 additions & 60 deletions generate_contest_winners.js
@@ -1,17 +1,29 @@
var steem = require('steem');
var config = require('./config');
var library = require('./library');
var resteems = require('./resteems.temp.json')
steem.api.setOptions({ url: config.steem.url });
var followersArray = [];
var entries = [];
var authorArray = [];
var rebloggedByArray = [];
var entryArray = [];
var contestPost = {};

function filterByAuthor() {
let filtered_entries = [];
for (var i = authorArray.length - 1; i >= 0; i--) {
if( parseInt(authorArray[i].reputation) > parseInt(1000000) ) {
filtered_accounts.push( authorArray[i].name );
}
}
console.log( 'filtered by authors: '+filtered_entries.length );
return filtered_entries;
}

function filterByFollowers() {
var filtered_entries = [];
for (var i = entries.length - 1; i >= 0; i--) {
if( followersArray.indexOf( entries[i].author ) !== -1 ) {
filtered_entries.push( entries[i] );
for (var i = entryArray.length - 1; i >= 0; i--) {
if( followersArray.indexOf( entryArray[i].author ) !== -1 ) {
filtered_entries.push( entryArray[i] );
}
}
console.log( 'filtered by followers: '+filtered_entries.length );
Expand All @@ -20,9 +32,9 @@ function filterByFollowers() {

function filterByGraphic() {
var filtered_entries = [];
for (var i = entries.length - 1; i >= 0; i--) {
if( entries[i].body.indexOf('https://steemitimages.com/') !== -1 ) {
filtered_entries.push( entries[i] );
for (var i = entryArray.length - 1; i >= 0; i--) {
if( entryArray[i].body.indexOf('https://steemitimages.com/') !== -1 ) {
filtered_entries.push( entryArray[i] );
}
}
console.log( 'filtered by graphic: '+filtered_entries.length );
Expand All @@ -31,44 +43,42 @@ function filterByGraphic() {

function filterByLink() {
var filtered_entries = [];
for (var i = entries.length - 1; i >= 0; i--) {
if( entries[i].body.indexOf(config.steem.contest_sublink) !== -1 ) {
filtered_entries.push( entries[i] );
for (var i = entryArray.length - 1; i >= 0; i--) {
if( entryArray[i].body.indexOf(config.steem.contest_sublink) !== -1 ) {
filtered_entries.push( entryArray[i] );
}
}
console.log( 'filtered by link: '+filtered_entries.length );
return filtered_entries;
}

function filterByResteem() {

console.log( 'total resteems: '+resteems.RECORDS.length );

var filtered_entries = [];
for (var i = resteems.RECORDS.length - 1; i >= 0; i--) {
for (var j = entries.length - 1; j >= 0; j--) {
//console.log( 'record #'+i+': '+resteems.RECORDS[i].account );
//console.log( 'entry #'+j+': '+entries[j].author );
if( resteems.RECORDS[i].account == entries[j].author ) {
filtered_entries.push( entries[j] );
}
}
for (var i = rebloggedByArray.length - 1; i >= 0; i--) {
for (var j = entryArray.length - 1; j >= 0; j--) {
//console.log( 'result #'+i+': '+reblogged_by[i] );
//console.log( 'entry #'+j+': '+entryArray[j].author );
if( rebloggedByArray[i] == entryArray[j].author ) {
filtered_entries.push( entryArray[j] );
}
}
}

console.log( 'filtered by resteem: '+filtered_entries.length );

return filtered_entries;
}

function applyFilters() {
if( config.steem.require_follow )
entries = filterByFollowers();
entryArray = filterByFollowers();
if( config.steem.require_graphic )
entries = filterByGraphic();
entryArray = filterByGraphic();
if( config.steem.require_link )
entries = filterByLink();
if( config.steem.require_resteem )
entries = filterByResteem();
entryArray = filterByLink();
if( config.steem.filter_by_author )
entryArray = filterByAuthor();
if( config.steem.filter_by_resteem )
entryArray = filterByResteem();
applyOrdering();
}

function getContestPost() {
Expand All @@ -95,60 +105,66 @@ function applyOrdering() {
//Order replies by total number of replies/subreplies
//Order replies by account attributes such as reputation, followers/ing, activity, sp, balances, etc...
//Order replies by manual verification
printWinners();
}

function extractUrl(body,link) {
var regex = /(https?:\/\/[^\s]+)/g;
var regex = /(https?:\/\/[^\s]+)/g;
while((r = regex.exec(body)) !== null) {
if( r[0].indexOf(link) !== -1 ) {
if( r[0].indexOf("![") !== -1 ) {
let s = r[0].split("![");
return s[0];
}
if( r[0].indexOf(")") !== -1 ) {
let s = r[0].split(")");
return s[0];
}
return r[0];
}
if( r[0].indexOf(link) !== -1 ) {
if( r[0].indexOf("![") !== -1 ) {
let s = r[0].split("![");
return s[0];
}
if( r[0].indexOf(")") !== -1 ) {
let s = r[0].split(")");
return s[0];
}
return r[0];
}
}
}

function printWinners( ) {
for (var i = entries.length - 1; i >= 0; i--) {
let link = extractUrl( entries[i].body, config.steem.contest_sublink );
let image = extractUrl( entries[i].body, 'https://steemitimages.com/' );
for (var i = entryArray.length - 1; i >= 0; i--) {
let link = extractUrl( entryArray[i].body, config.steem.contest_sublink );
let image = extractUrl( entryArray[i].body, 'https://steemitimages.com/' );
console.log( '<hr/><img style="max-width:100;max-height:100;" src="'+image+'">' );
console.log( '<a href="'+link+'">overview</a> | <a href="https://steemit.com'+entries[i].url+'">entry</a> | <a href="https://steemit.com/@'+entries[i].author+'">'+entries[i].author+'</a><br><br><br>' )
console.log( '<a href="'+link+'">overview</a> | <a href="https://steemit.com'+entryArray[i].url+'">entry</a> | <a href="https://steemit.com/@'+entryArray[i].author+'">'+entryArray[i].author+'</a><br><br><br>' )
console.log("");
}
}

function dumpWinnerArray( ) {
var winners = [];
for (var i = entries.length - 1; i >= 0; i--)
winners.push( entries[i].author );
for (var i = entryArray.length - 1; i >= 0; i--)
winners.push( entryArray[i].author );
console.log( winners );
}

function getAuthors(reblogged_by=[]) {
console.log( 'Total Resteems: ' + reblogged_by.length );
rebloggedByArray = reblogged_by;
authors=[];
for (var i = entryArray.length - 1; i >= 0; i--) {
authors.push( entryArray[i].author );
}
library.getAccounts(authors,applyFilters);
}

//Get all 1st level replies
function getContestReplies() {
steem.api.getContentReplies(config.steem.username, config.steem.contest_permlink, function(err, result) {
entries = result;
console.log( 'potential entrants: '+entries.length );
applyFilters();
applyOrdering();
printWinners();
//dumpWinnerArray();
});
function getRebloggedBy(error, entries=[]) {
console.log( 'Total Entries: '+entries.length );
entryArray = entries;
library.getRebloggedBy(config.steem.username,config.steem.contest_permlink,getAuthors);
}

//Callback function for getFollowers
function finishGetFollowers(followers=[]) {
function getContestReplies(followers=[]) {
console.log( 'Total Followers: '+followers.length );
followersArray = followers;
console.log( 'finishGetFollowers: '+followersArray.length );
getContestReplies();
steem.api.getContentReplies(config.steem.username, config.steem.contest_permlink, getRebloggedBy);
}

//Get followers
library.getFollowers(config.steem.username,'',1000, finishGetFollowers);
library.getFollowers(config.steem.username,'',1000, getContestReplies);
16 changes: 14 additions & 2 deletions library.js
Expand Up @@ -8,7 +8,7 @@ var mTimeout = 0;
module.exports = {
getFollowing: function(username=config.steem.username,start=config.steem.start,count=100,callback) {
steem.api.getFollowing(username, start, 'blog', 100, function(err, result){
console.log( err, result );
//console.log( err, result );
start = '';
count = result.length;
for (let i = 1; i < count; i++) {
Expand All @@ -23,7 +23,7 @@ module.exports = {
},
getFollowers: function(username=config.steem.username,start=config.steem.start,count=1000,callback) {
steem.api.getFollowers(username, start, 'blog', 100, function(err, result){
console.log( err, result );
//console.log( err, result );
start = '';
count = result.length;
for (let i = 0; i < count-1; i) {
Expand All @@ -35,5 +35,17 @@ module.exports = {
else
callback(followersArray);
});
},
getRebloggedBy: function(username=config.steem.username,contest_permlink=config.steem.contest_permlink,callback) {
steem.api.getRebloggedBy(username,contest_permlink, function(err, result) {
//console.log( err, result );
callback( result );
});
},
getAccounts: function(accounts=null,callback) {
steem.api.getAccounts(accounts, function(err, result){
//console.log( err, result );
callback( result );
});
}
};
50 changes: 0 additions & 50 deletions send_memo.js
Expand Up @@ -11,56 +11,6 @@ function filterAccounts( accounts = [] ) {
let filtered_accounts = [];
for (var i = response.length - 1; i >= 0; i--) {
if( parseInt(response[i].reputation) > parseInt(1000000) ) {
if (
response[i].name.charAt(0) !== 'C' &&
response[i].name.charAt(0) !== 'c' &&
response[i].name.charAt(0) !== 'D' &&
response[i].name.charAt(0) !== 'd' &&
response[i].name.charAt(0) !== 'E' &&
response[i].name.charAt(0) !== 'e' &&
response[i].name.charAt(0) !== 'F' &&
response[i].name.charAt(0) !== 'f' &&
response[i].name.charAt(0) !== 'G' &&
response[i].name.charAt(0) !== 'g' &&
response[i].name.charAt(0) !== 'H' &&
response[i].name.charAt(0) !== 'h' &&
response[i].name.charAt(0) !== 'I' &&
response[i].name.charAt(0) !== 'i' &&
response[i].name.charAt(0) !== 'J' &&
response[i].name.charAt(0) !== 'j' &&
response[i].name.charAt(0) !== 'K' &&
response[i].name.charAt(0) !== 'k' &&
response[i].name.charAt(0) !== 'L' &&
response[i].name.charAt(0) !== 'l' &&
response[i].name.charAt(0) !== 'M' &&
response[i].name.charAt(0) !== 'm' &&
response[i].name.charAt(0) !== 'N' &&
response[i].name.charAt(0) !== 'n' &&
response[i].name.charAt(0) !== 'O' &&
response[i].name.charAt(0) !== 'o' &&
response[i].name.charAt(0) !== 'P' &&
response[i].name.charAt(0) !== 'p' &&
response[i].name.charAt(0) !== 'Q' &&
response[i].name.charAt(0) !== 'q' &&
response[i].name.charAt(0) !== 'R' &&
response[i].name.charAt(0) !== 'r' &&
response[i].name.charAt(0) !== 'S' &&
response[i].name.charAt(0) !== 's' &&
response[i].name.charAt(0) !== 'T' &&
response[i].name.charAt(0) !== 't' &&
response[i].name.charAt(0) !== 'U' &&
response[i].name.charAt(0) !== 'u' &&
response[i].name.charAt(0) !== 'V' &&
response[i].name.charAt(0) !== 'v' &&
response[i].name.charAt(0) !== 'W' &&
response[i].name.charAt(0) !== 'w' &&
response[i].name.charAt(0) !== 'X' &&
response[i].name.charAt(0) !== 'x' &&
response[i].name.charAt(0) !== 'Y' &&
response[i].name.charAt(0) !== 'y' &&
response[i].name.charAt(0) !== 'Z' &&
response[i].name.charAt(0) !== 'z'
) {
filtered_accounts.push( response[i].name );
}
}
Expand Down

0 comments on commit e7a3ae1

Please sign in to comment.