Hive Developer Portal
Get Follower And Following List
Get the followers of a user/author & the authors that user is following.
Full, runnable src of Get Follower And Following List can be downloaded as part of: tutorials/ruby (or download just this tutorial: devportal-master-tutorials-ruby-19_get_follower_and_following_list.zip).
This tutorial will take you through the process of requesting either the follower or following list for an account on the blockchain.
Intro
In radiator, we can request follow results using condenser_api.get_following or condenser_api.get_follows methods. These methods take the following arguments:
account- The account for which the follower/following process will be executed.start- Where in the list to begin getting results.type- We are going to passblogfor all requests to only request follow results (as opposed to mute results, which takes the value:ignore).limit- The number of lines to be returned by the query (limit, maximum 1000 per call)
Also see:
Steps
- Configure connection Configuration of
radiatorto communicate with the Hive blockchain - Input variables Collecting the required inputs via command line arguments
- Get followers/following Get the followers or accounts being followed
- Display Return the array of results to the console
1. Configure connection
In the first few lines we initialize the configured library and packages (libraries are described in Gemfile):
require 'rubygems'
require 'bundler/setup'
Bundler.require
api = Radiator::Api.new
Above, we have radiator pointing to the production network. To specify a different full node, e.g.:
api = Radiator::Api.new(url: 'https://api.hive.blog')
2. Input variables
Capture the arguments from the command line.
type = 'blog' # use 'ignore' to get mutes
account = ARGV[0]
what = ARGV[1] || 'following'
limit = (ARGV[2] || '-1').to_i
result = []
count = -1
3. Get followers/following
Depending on the arguments passed, we call the corresponding method and the element name of what we are requesting:
method = "get_#{what}"
elem = what.sub(/s/, '').to_sym
The name of the elem value stored corresponds with the result elements we’re interested in. For method calls on get_following, we want the following elements. For method calls on get_followers, we want follower elements.
4. Display
Iterate multiple calls to capture all of the results.
until count >= result.size
count = result.size
response = api.send(method, account, result.last, type, [limit, 1000].max)
abort response.error.message if !!response.error
result += response.result.map(&elem)
result = result.uniq
end
Final code:
require 'rubygems'
require 'bundler/setup'
Bundler.require
api = Radiator::Api.new
if ARGV.size < 1
puts "Usage:"
puts "ruby #{__FILE__} <account> [following|followers] [limit]"
exit
end
type = 'blog' # use 'ignore' to get mutes
account = ARGV[0]
what = ARGV[1] || 'following'
limit = (ARGV[2] || '-1').to_i
result = []
count = -1
method = "get_#{what}"
elem = what.sub(/s/, '').to_sym
until count >= result.size
count = result.size
response = api.send(method, account, result.last, type, [limit, 1000].max)
abort response.error.message if !!response.error
result += response.result.map(&elem)
result = result.uniq
end
puts result[0..limit]
puts "#{account} #{what}: #{result.size}"
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/19_get_follower_and_following_list
bundle install
ruby get_follow.rb