#!/usr/bin/env ruby # Author - Bill Stilwell (bill@marginalia.org) # Use at your own risk; let me know if you have probs # for xosd bindings see http://djur.desperance.net/ruby/ruby-xosd-1.1.0.tar.bz2 # $Id: bloglinesosd.rb 28 2005-04-05 05:49:56Z was $ require 'net/http' require 'uri' require 'xosd' require 'optparse' @osd = XOSD::Xosd.new(1) @osd.font = "-microsoft-trebuchet ms-medium-r-normal-*-48-*-*-*-p-*-*" @osd.color = "green" @osd.outline_color = "black" @osd.outline_offset = 1 @osd.position = XOSD::MIDDLE @osd.align = XOSD::CENTER @osd.timeout = 5 def checkBloglines(user) begin Net::HTTP.start('rpc.bloglines.com') do |http| http.open_timeout = 10 http.read_timeout = 10 response = http.get("/update?user=" + user + "&ver=1") parts = response.body.split('|') if parts[1].to_i >= 0 return parts[1].to_i else return -1 end end rescue Timeout::Error return -1 end end def display(msg) @osd.display_message(0, msg) end ARGV.options do |opts| opts.on("-uUSER", "--user USER", "Bloglines username/email") { |@user| } opts.on("-dDELAY", "--delay DELAY", Integer, "Delay between checking") { |@delay| } opts.banner = "Usage: bloglinesosd.rb [options]" opts.on_tail("-h", "--help", "Show this message") do puts opts exit end opts.parse! end if !@user raise "username must be specified with -u option!" end @delay = 30 if @delay.nil? || @delay < 30 count = 0 loop do cur = checkBloglines(@user) if cur != count display("bloglines count: " << (cur >= 0 ? cur.to_s : "ERROR!")) count = cur end sleep(@delay) end