#!/usr/bin/env ruby # Copyright (c) 2010, 2011 Timothy Redaelli # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. require 'socket' require 'timeout' 1100.upto(1600) do |i| begin timeout(2) do begin streamSock = TCPSocket.new("shoutcast.unitedradio.it", i) streamSock.write("GET / HTTP/1.0\r\n\r\n") while (line = streamSock.readline) line.chomp if line[0..8] == "icy-name:" puts "http://shoutcast.unitedradio.it:#{i} #{line[9..-1]}" break end end rescue #EOFError ensure streamSock.close unless streamSock.nil? end end rescue Timeout::Error $stderr.puts "#{i} Timed out!" end end