Hive Developers logo

Hive Developer Portal

Get Voters List On Post

By the end of this tutorial you would know how to get voters list on any content.

Full, runnable src of Get Voters List On Post can be downloaded as part of: tutorials/ruby (or download just this tutorial: devportal-master-tutorials-ruby-06_get_voters_list_on_post.zip).

Also see:

Script

voter_list.rb

First, we ask the blockchain for the active votes on a post or comment. Then, we count the upvotes, downvotes, and unvotes (which are votes that have been removed after being cast in a previous transaction).

Then, we sort the votes by rshares to find the top voter.

Final code:

require 'rubygems'
require 'bundler/setup'

Bundler.require

url = ARGV[0]
slug = url.split('@').last
author, permlink = slug.split('/')
api = Radiator::Api.new

api.get_active_votes(author, permlink) do |votes|
  upvotes = votes.select { |v| v.percent > 0 }.size
  downvotes = votes.select { |v| v.percent < 0 }.size
  unvotes = votes.select { |v| v.percent == 0 }.size
  top_voter = votes.sort_by { |v| v.rshares.to_i }.last.voter
  
  puts "Upvotes: #{upvotes}"
  puts "Downvotes: #{downvotes}"
  puts "Unvotes: #{unvotes}"
  puts "Total: #{votes.size}"
  puts "Top Voter: #{top_voter}"
end

To Run

First, set up your workstation using the steps provided in Getting Started. Then you can create and execute the script (or clone from this repository):

git clone https://gitlab.syncad.com/hive/devportal.git
cd devportal/tutorials/ruby/06_get_voters_list_on_post
bundle install
ruby voter_list.rb https://hive.blog/communityfork/@hiveio/announcing-the-launch-of-hive-blockchain

Example Output

Upvotes: 997
Downvotes: 3
Unvotes: 0
Total: 1000
Top Voter: blocktrades