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
|
# File 'lib/verb/clean.rb', line 3
def initialize
end
|
Instance Method Details
#clean(args) ⇒ Object
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
# File 'lib/verb/clean.rb', line 6
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
28
29
30
31
32
33
34
35
36
37
38
39
40
|
# File 'lib/verb/clean.rb', line 28
def open_podcast(podcast, max_pub)
begin
feed = Feedzirra::Feed.fetch_and_parse(podcast.uri.to_s)
unless feed.is_a? Fixnum
return parse_feed feed, max_pub
else
raise "Error #{podcast.title} returned #{feed}"
end
rescue StandardError => e
puts e
[]
end
end
|
#parse_feed(feed, max_pub) ⇒ Object
42
43
44
|
# File 'lib/verb/clean.rb', line 42
def parse_feed(feed, max_pub)
feed.entries.select { |item| item.respond_to? :enclosure_url}
end
|