This is script which I wrote for testing if file exist on rapidshare hosting service, it use Rapidshare API
require 'net/http' require 'uri' require 'optparse' class FalseException < Exception end def check(file, quiet=nil) file.each_line {|url| begin url = url.stript #skip blank lines, comments and invalid urls if url =~ /^\s*$/ or url =~ /^\s*#/ or not url =~ /^http:\/\// or not url =~ /files\/([0-9]*)\/(.*)/ next else fileid = $1 filename = $2 query = "?sub=download_v1&fileid=#{fileid}&filename=#{filename}" apiurl = URI.parse('http://api.rapidshare.com/cgi-bin/rsapi.cgi') page = Net::HTTP.new(apiurl.host).get(apiurl.path + query).body if page =~ /File deleted/ or page =~ /This file is marked as illegal/ or page =~ /Filename invalid./ or page =~ /File not found/ if quiet raise FalseException end if RUBY_PLATFORM =~ /(:?mswin|mingw)/i puts "#{url} [FAIL]" else #display red FAIL on n*ix system system("echo \"#{url} [\x1b[31m\x1b[1m\"FAIL\"\x1b[0m]\"") end else if quiet == nil if RUBY_PLATFORM =~ /(:?mswin|mingw)/i puts "#{url} [OK]" else #display green OK on *nix system system("echo \"#{url} [\x1b[32m\x1b[1m\"OK\"\x1b[0m]\"") end end end end rescue Timeout::Error, Errno::ETIMEDOUT puts "Timeout Error, try again" redo end } end def usage() puts "rapidtest.rb [-f (filename | - )] [-h]" end opts = ARGV.getopts('f:hq') if opts['h'] usage exit(0) end filename = opts['f'] if filename begin if filename == '-' check(ARGF) else File.open(filename) {|file| check(file, opts['q']) } end rescue Interrupt, Errno::EINTR exit(1) rescue FalseException exit(1) end end exit(0)
It will display url and [FAIL] or [OK] (on unix like system it display in color), or return true or false when used with -q option.
You can use it with -f option which must be filename with urls or – to read from stdin
If you using linux you can use xclip
program to get data from clipboard.
If you have some urls in clipboard you can use:
xclip -o -sel clip | rapidtest.rb -f -
You can download it from here.
you can test if all files are valid with:
xclip -o -sel clip | rapidtest -f- && echo 'all fine' || echo 'some are invalid'
You can put this script in panel and display GUI message dialogs with zenity
function ok() { zenity --info --title "rapidtest" --text "all links are valid" } function error() { zenity --error --title "rapidtest" --text "some links are invalid" } xclip -o -sel clip | rapidtest.rb -q -f- && ok || eror