Class: Epodder::Clean
Instance Method Summary
collapse
Methods inherited from Verb
#add_command, #each_argument, #lookup_args, #verb_struct
Constructor Details
#initialize ⇒ Clean
Returns a new instance of Clean.
3
4
5
|
# File 'lib/verb/clean.rb', line 3
def initialize
@mechanize = @mechanize = Mechanize.new
end
|
Instance Method Details
#clean(args) ⇒ Object
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
# File 'lib/verb/clean.rb', line 7
def clean args
if args.empty?
podcasts = Podcast.all
else
podcasts = args.map{|podcast| Podcast.get(podcast.to_i)}
end
podcasts.each do |podcast|
known_episodes = Episode.all(:downloaded => true, :podcast => podcast)
feed_episodes = open_podcast podcast, DateTime.now
known_episodes = known_episodes.map{|episode| episode.url.to_s}
feed_episodes = feed_episodes.map{|episode|@episode = episode; episode.enclosure.url}
episodes = (known_episodes - feed_episodes)
episodes_length = episodes.length
episodes.map{|episode| Episode.all(:url => episode)}.each do |episode|
if !episode.destroy
episode.errors.each {|error| puts error}
end
end
puts "#{podcast.title} -- cleaned #{episodes_length} episodes"
end
end
|
#open_podcast(podcast, max_pub) ⇒ Object
29
30
31
32
33
34
35
36
37
|
# File 'lib/verb/clean.rb', line 29
def open_podcast podcast, max_pub
begin
@mechanize.get(podcast.uri) do |feed|
return parse_feed feed, max_pub
end
rescue Exception => e
puts e
end
end
|
#parse_feed(feed, max_pub) ⇒ Object
39
40
41
42
43
44
|
# File 'lib/verb/clean.rb', line 39
def parse_feed feed, max_pub
podcast = FeedMe.parse feed.body
podcast.emulate_atom!
temp = podcast.items.select {|item| !item.enclosure.nil?}
temp.select {|item| !item.enclosure.empty?}
end
|