Class: Epodder::Clean

Inherits:
Verb show all
Defined in:
lib/verb/clean.rb

Instance Method Summary collapse

Methods inherited from Verb

#add_command, #each_argument, #lookup_args, #verb_struct

Constructor Details

#initializeClean

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
28
# 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|
    count = 0
    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



30
31
32
33
34
35
36
37
38
# File 'lib/verb/clean.rb', line 30

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



40
41
42
43
44
45
# File 'lib/verb/clean.rb', line 40

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