I have a netbook, and I really enjoy watching La7.tv (also because Rai has an idiotic policy for people like me living abroad: only RaiNews24 is available for us emigrants).
However, things being what they are, I am not always connected to the Internet. Therefore, I’d like to download some replicas of TV shows they air (like news, or the incomparable Crozza’s Italialand!) on my hard disk, and watch them while waiting (say) at the airport or in the train.
So, I wrote a script to download videos from www.la7.tv directly. Just go there, open the episode you’d like to download, and run this Ruby script passing it the URL:
#!/usr/bin/env ruby require 'uri' require 'net/http' require 'rexml/document' # Constants LA7TV_URL = 'www.la7.tv' DESCRIPTOR_URL = 'http://www.la7.tv/repliche/content/index.php?contentId=%s' ARCHIVE_URL = 'rtmp://yalpvod.alice.cdn.interbusiness.it:1935/vod/%s' if ARGV.empty? or not ARGV[0].include? LA7TV_URL $stderr.puts <<-EOD This script downloads videos from www.la7.it, for your personal use only. The idea is that you can watch what you see online for free, but offline too. Please be sensible and don't use this method for breaking the law. Please make sure rtmpdump is installed. Usage: #{$0} <http://www.la7.tv/richplayer/?assetid=#######> EOD exit -1 end asset_number = ARGV[0].split('assetid=')[1] xmldoc = Net::HTTP.get URI.parse(sprintf DESCRIPTOR_URL, asset_number) xml = REXML::Document.new xmldoc videos = REXML::XPath.match(xml, '*/videos/video') video = videos.max_by { |video| video.elements['quality'].text.to_i } local_filename = video.elements['originalName'].text remote_filename = video.elements['fms'].text.gsub(/^mp4:\//, '') remote_url = sprintf ARCHIVE_URL, remote_filename puts "Downloading #{local_filename}\n\tfrom #{remote_url}" Kernel.exec "rtmpdump -e -o '#{local_filename}' -r '#{remote_url}'"
It’s maaagiiiic! 🙂 Remember to install rtmpdump (available in most distros), and of course Ruby.
PLEASE USE THIS RESPONSIBLY. You are consuming a lot of bandwidth in a short timeframe on their server by downloading things instead of streaming them, so: a) do it only for personal use, and b) don’t do it for things you will not watch.
Cheers,
Matteo