#!/bin/env ruby
require 'rss'
require 'open-uri'
require 'youtube-dl'
require 'sequel'
require 'date'
require 'optparse'
options={}
OptionParser.new do |parser|
parser.on("-f", "--feed FEED", "Feed to download videos from") do |feed|
options[:feed]=feed
end
end.parse!
raise OptionParser::MissingArgument, "You must specify a feed (-f)" if options[:feed].nil?
DB = Sequel.connect('sqlite://videos.db')
DB.create_table? :videos do
primary_key :id
String :url
String :filename
Integer :filesize
DateTime :downloaded
videos=DB[:videos]
open(options[:feed]) do |rss|
feed=RSS::Parser.parse(rss)
feed.items.each do |item|
video=YoutubeDL.download "#{item.link}"
videos.insert(:url => "#{item.link}",
:filename => "#{video.filename}",
:filesize => File.size("#{video.filename}"),
:downloaded => DateTime.now)