Hive Developers logo

Portail de Développeurs Hive

Obtenir la liste des votants sur la publication

À la fin de ce tutoriel, vous sauriez comment obtenir une liste d’électeurs sur n’importe quel contenu.

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