Skip to content

Commit

Permalink
Correct vote counting metrics to up and down versions, instead of tog…
Browse files Browse the repository at this point in the history
…ether: split; modify counting code to use both up and down votes, add to docs, add to edit-algo page; add .gitignore to ignore .idea folder
  • Loading branch information
thrize committed Jan 23, 2017
1 parent e6b607f commit 963faa1
Show file tree
Hide file tree
Showing 4 changed files with 199 additions and 72 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/.idea
30 changes: 20 additions & 10 deletions docs/algorithm.md
Original file line number Diff line number Diff line change
Expand Up @@ -109,19 +109,29 @@ _Note: we'll skip the minnows when testing votes!_

##### Numeric

1. ```post_voted_num_dolphin```: Number of voters with captial category _dolphin_ who voted on post
2. ```post_voted_num_whale```: Number of voters with captial category _whale_ who voted on post
3. ```post_voted_num_followed```: Number of followed voters who voted on post
4. ```post_voted_num_whitelisted```: Number of whitelisted voters who voted on post
5. ```post_voted_num_blacklisted```: Number of blacklisted voters who voted on post
1. ```post_up_voted_num_dolphin```: Number of voters with captial category _dolphin_ who **up** voted on post
2. ```post_up_voted_num_whale```: Number of voters with captial category _whale_ who **up** voted on post
3. ```post_up_voted_num_followed```: Number of followed voters who **up** voted on post
4. ```post_up_voted_num_whitelisted```: Number of whitelisted voters who **up** voted on post
5. ```post_up_voted_num_blacklisted```: Number of blacklisted voters who **up** voted on post
6. ```post_down_voted_num_dolphin```: Number of voters with captial category _dolphin_ who **down** voted on post
7. ```post_down_voted_num_whale```: Number of voters with captial category _whale_ who **down** voted on post
8. ```post_down_voted_num_followed```: Number of followed voters who **down** voted on post
9. ```post_down_voted_num_whitelisted```: Number of whitelisted voters who **down** voted on post
10. ```post_down_voted_num_blacklisted```: Number of blacklisted voters who **down** voted on post

##### Boolean

1. ```post_voted_any_dolphin```: At least one voter with captial category _dolphin_ as voted on post
2. ```post_voted_any_whale```: At least one voter with captial category _whale_ as voted on post
3. ```post_voted_any_followed```: At least one followed voter voted on post
4. ```post_voted_any_whitelisted```: At least one whitelist voter voted on post
5. ```post_voted_any_blacklisted```: At least one blacklist voter voted on post
1. ```post_up_voted_any_dolphin```: At least one voter with captial category _dolphin_ **up** voted on post
2. ```post_up_voted_any_whale```: At least one voter with captial category _whale_ **up** voted on post
3. ```post_up_voted_any_followed```: At least one followed voter **up** voted on post
4. ```post_up_voted_any_whitelisted```: At least one whitelist voter **up** voted on post
5. ```post_up_voted_any_blacklisted```: At least one blacklist voter **up** voted on post
6. ```post_down_voted_any_dolphin```: At least one voter with captial category _dolphin_ **down** voted on post
7. ```post_down_voted_any_whale```: At least one voter with captial category _whale_ **down** voted on post
8. ```post_down_voted_any_followed```: At least one followed voter **down** voted on post
9. ```post_down_voted_any_whitelisted```: At least one whitelist voter **down** voted on post
10. ```post_down_voted_any_blacklisted```: At least one blacklist voter **down** voted on post

#### Author of Post

Expand Down
130 changes: 88 additions & 42 deletions lib.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,26 @@ const
"post_est_payout",
"post_num_upvotes",
"post_num_downvotes",
"post_voted_num_dolphin",
"post_voted_num_whale",
"post_voted_num_followed",
"post_voted_num_whitelisted",
"post_voted_num_blacklisted",
"post_voted_any_dolphin",
"post_voted_any_whale",
"post_voted_any_followed",
"post_voted_any_whitelisted",
"post_voted_any_blacklisted",
"post_up_voted_num_dolphin",
"post_up_voted_num_whale",
"post_up_voted_num_followed",
"post_up_voted_num_whitelisted",
"post_up_voted_num_blacklisted",
"post_down_voted_num_dolphin",
"post_down_voted_num_whale",
"post_down_voted_num_followed",
"post_down_voted_num_whitelisted",
"post_down_voted_num_blacklisted",
"post_up_voted_any_dolphin",
"post_up_voted_any_whale",
"post_up_voted_any_followed",
"post_up_voted_any_whitelisted",
"post_up_voted_any_blacklisted",
"post_down_voted_any_dolphin",
"post_down_voted_any_whale",
"post_down_voted_any_followed",
"post_down_voted_any_whitelisted",
"post_down_voted_any_blacklisted",
"author_capital_val",
"author_is_minnow",
"author_is_dolphin",
Expand Down Expand Up @@ -76,11 +86,6 @@ const
wait = require('wait.for'),
extra = require('./extra.js');

const
MINNOW = 0,
DOLPHIN = 1,
WHALE = 2;

const
MILLIS_IN_DAY = 86400000;

Expand Down Expand Up @@ -351,15 +356,17 @@ function runBot(callback, options) {
persistentLog(" - - metrics.post.est_payout: "+metric.post_est_payout);
//post_num_upvotes: Number of up votes (normal votes for a post)
//post_num_downvotes: Number of flags / downvotes
metric.post_num_upvotes = 0;
metric.post_num_downvotes = 0;
posts[i].up_votes = [];
posts[i].down_votes = [];
for (var j = 0 ; j < posts[i].active_votes.length ; j++) {
if (posts[i].active_votes[j].percent < 0) {
metric.post_num_downvotes++;
posts[i].down_votes.push(posts[i].active_votes[j]);
} else {
metric.post_num_upvotes++;
posts[i].up_votes.push(posts[i].active_votes[j]);
}
}
metric.post_num_upvotes = posts[i].up_votes.length;
metric.post_num_downvotes = posts[i].down_votes.length;
persistentLog(" - - metrics.post.post_num_upvotes: "+metric.post_num_upvotes);
persistentLog(" - - metrics.post.post_num_downvotes: "+metric.post_num_downvotes);
// add author and voters to user fetch list
Expand Down Expand Up @@ -410,55 +417,94 @@ function runBot(callback, options) {
// *** VOTES IN DETAIL
// note, should do this last, has complex nesting that we need to use Q to sort out
//persistentLog(" - - * VOTES IN DETAIL");
var numDolphins = 0;
var numWhales = 0;
var numFollowed = 0;
var numWhitelisted = 0;
var numBlacklisted = 0;
for (var j = 0 ; j < posts[i].active_votes.length ; j++) {
// up votes
postsMetrics[i].post_up_voted_num_dolphin = 0;
postsMetrics[i].post_up_voted_num_whale = 0;
postsMetrics[i].post_up_voted_num_followed = 0;
postsMetrics[i].post_up_voted_num_whitelisted = 0;
postsMetrics[i].post_up_voted_num_blacklisted = 0;
for (var j = 0 ; j < posts[i].up_votes.length ; j++) {
//persistentLog(" - - - ["+j+"]: "+JSON.stringify(posts[i].active_votes[j]));
var voter = posts[i].active_votes[j].voter;
var voter = posts[i].up_votes[j].voter;
if (voter.localeCompare(process.env.STEEM_USER) != 0
&& users[voter]) {
var voterAccount = users[voter];
// determine if dolphin or whale, count
var steemPower = getSteemPowerFromVest(voterAccount.vesting_shares);
if (steemPower >= CAPITAL_WHALE_MIN) {
numWhales++;
postsMetrics[i].post_up_voted_num_whale++;
} else if (steemPower >= CAPITAL_DOLPHIN_MIN) {
postsMetrics[i].post_up_voted_num_dolphin++;
}
// determine if followed, count
for (var k = 0 ; k < following.length ; k++) {
if (following[k] && following[k].localeCompare(voter) == 0) {
postsMetrics[i].post_up_voted_num_followed++;
}
}
// determine if white / blacklisted, count
for (var k = 0 ; k < algorithm.authorWhitelist.length ; k++) {
if (algorithm.authorWhitelist[k] && algorithm.authorWhitelist[k].localeCompare(voter) == 0) {
postsMetrics[i].post_up_voted_num_whitelisted++;
}
}
for (var k = 0 ; k < algorithm.authorBlacklist.length ; k++) {
if (algorithm.authorBlacklist[k] && algorithm.authorBlacklist[k].localeCompare(voter) == 0) {
postsMetrics[i].post_up_voted_num_blacklisted++;
}
}
}
}
// boolean
postsMetrics[i].post_up_voted_any_dolphin = (postsMetrics[i].post_up_voted_num_dolphin > 0) ? 1 : 0;
postsMetrics[i].post_up_voted_any_whale = (postsMetrics[i].post_up_voted_num_whale > 0) ? 1 : 0;
postsMetrics[i].post_up_voted_any_followed = (postsMetrics[i].post_up_voted_num_followed > 0) ? 1 : 0;
postsMetrics[i].post_up_voted_any_whitelisted = (postsMetrics[i].post_up_voted_num_whitelisted > 0) ? 1 : 0;
postsMetrics[i].post_up_voted_any_blacklisted = (postsMetrics[i].post_up_voted_num_blacklisted > 0) ? 1 : 0;
// down votes
postsMetrics[i].post_down_voted_num_dolphin = 0;
postsMetrics[i].post_down_voted_num_whale = 0;
postsMetrics[i].post_down_voted_num_followed = 0;
postsMetrics[i].post_down_voted_num_whitelisted = 0;
postsMetrics[i].post_down_voted_num_blacklisted = 0;
for (var j = 0 ; j < posts[i].down_votes.length ; j++) {
//persistentLog(" - - - ["+j+"]: "+JSON.stringify(posts[i].active_votes[j]));
var voter = posts[i].down_votes[j].voter;
if (voter.localeCompare(process.env.STEEM_USER) != 0
&& users[voter]) {
var voterAccount = users[voter];
// determine if dolphin or whale, count
var steemPower = getSteemPowerFromVest(voterAccount.vesting_shares);
if (steemPower >= CAPITAL_WHALE_MIN) {
postsMetrics[i].post_down_voted_num_whale++;
} else if (steemPower >= CAPITAL_DOLPHIN_MIN) {
numDolphins++;
postsMetrics[i].post_down_voted_num_dolphin++;
}
// determine if followed, count
for (var k = 0 ; k < following.length ; k++) {
if (following[k] && following[k].localeCompare(voter) == 0) {
numFollowed++;
postsMetrics[i].post_down_voted_num_followed++;
}
}
// determine if white / blacklisted, count
for (var k = 0 ; k < algorithm.authorWhitelist.length ; k++) {
if (algorithm.authorWhitelist[k] && algorithm.authorWhitelist[k].localeCompare(voter) == 0) {
numWhitelisted++;
postsMetrics[i].post_down_voted_num_whitelisted++;
}
}
for (var k = 0 ; k < algorithm.authorBlacklist.length ; k++) {
if (algorithm.authorBlacklist[k] && algorithm.authorBlacklist[k].localeCompare(voter) == 0) {
numBlacklisted++;
postsMetrics[i].post_down_voted_num_blacklisted++;
}
}
}
}
// numeric
postsMetrics[i].post_voted_num_dolphin = numDolphins;
postsMetrics[i].post_voted_num_whale = numWhales;
postsMetrics[i].post_voted_num_followed = numFollowed;
postsMetrics[i].post_voted_num_whitelisted = numWhitelisted;
postsMetrics[i].post_voted_num_blacklisted = numBlacklisted;
// boolean
postsMetrics[i].post_voted_any_dolphin = (numDolphins > 0) ? 1 : 0;
postsMetrics[i].post_voted_any_whale = (numWhales > 0) ? 1 : 0;
postsMetrics[i].post_voted_any_followed = (numFollowed > 0) ? 1 : 0;
postsMetrics[i].post_voted_any_whitelisted = (numWhitelisted > 0) ? 1 : 0;
postsMetrics[i].post_voted_any_blacklisted = (numBlacklisted > 0) ? 1 : 0;
postsMetrics[i].post_down_voted_any_dolphin = (postsMetrics[i].post_down_voted_num_dolphin > 0) ? 1 : 0;
postsMetrics[i].post_down_voted_any_whale = (postsMetrics[i].post_down_voted_num_whale > 0) ? 1 : 0;
postsMetrics[i].post_down_voted_any_followed = (postsMetrics[i].post_down_voted_num_followed > 0) ? 1 : 0;
postsMetrics[i].post_down_voted_any_whitelisted = (postsMetrics[i].post_down_voted_num_whitelisted > 0) ? 1 : 0;
postsMetrics[i].post_down_voted_any_blacklisted = (postsMetrics[i].post_down_voted_num_blacklisted > 0) ? 1 : 0;
}
// finish
deferred.resolve(true);
Expand Down
Loading

0 comments on commit 963faa1

Please sign in to comment.