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
# 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