summaryrefslogtreecommitdiff
path: root/lstwitchfollowers.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lstwitchfollowers.rb')
-rwxr-xr-xlstwitchfollowers.rb49
1 files changed, 49 insertions, 0 deletions
diff --git a/lstwitchfollowers.rb b/lstwitchfollowers.rb
new file mode 100755
index 0000000..bb762a3
--- /dev/null
+++ b/lstwitchfollowers.rb
@@ -0,0 +1,49 @@
+#!/usr/bin/ruby
+
+# the 'streams' api much more efficient but requires authentication
+
+require 'json'
+require 'net/http'
+
+user = String.new
+
+user = URI.escape(ARGV[0])
+
+http = Net::HTTP.new('api.twitch.tv', 443)
+http.use_ssl = true
+#http.verify_mode = OpenSSL::SSL::VERIFY_NONE
+http.read_timeout = 500
+
+width = `stty size`.split[1].to_i
+
+def followers(http, path, key, width)
+
+ followed = { '_total' => 0 }
+ offset = 0
+
+ while offset <= followed['_total']
+
+ for channel in JSON.parse(http.request(Net::HTTP::Get.new("#{path}?limit=100&offset=#{offset}")).body)['follows']
+ name = channel[key]['display_name']
+ stream = JSON.parse(http.request(Net::HTTP::Get.new("/kraken/streams/#{name}")).body)['stream']
+ if stream
+ printf( "%-45s %-36s %6i %-.#{width-46-37-7}s\n", stream['channel']['url'].to_s, stream['channel']['game'].to_s, stream['viewers'], stream['channel']['status'].to_s.gsub(/\n/,'') )
+# print(" #{stream['game']} #{stream['channel']['status']}")
+# Curses.cols
+ else
+ print("twitch.tv/#{name}\n")
+ end
+ end
+ offset += 100
+
+ end
+
+end
+
+print("Following:\n\n")
+
+followers(http, "/kraken/users/#{user}/follows/channels", 'channel', width)
+
+print("\nFollowed by:\n\n")
+
+followers(http, "/kraken/channels/#{user}/follows", 'user', width)