epodder 0.0.7 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/arguments.rb +1 -1
- data/lib/verb/download.rb +4 -3
- data/lib/verb/update.rb +55 -55
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 21e023301a7f8229e28c7d39d02a389e72091bdf
|
4
|
+
data.tar.gz: 6aea7f349ead1585e114be3ef6592923924198ed
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d01f7f2fcaeb061b369cf8d37b8ab1c447c330d2029dab4bc142030493bd9df0cf858e95ea3f9018a71cdd5e31629a57eb1ea1eb556e89cb0b441ef917a7343b
|
7
|
+
data.tar.gz: 91fc8461eefa3b03e0263d4eef576b08587b5860344e23cae3298185a40b5a2dffbdd2a46cc8725cb9a744f43c322c88744ec33018e544d5082fd4873f2a2224
|
data/lib/arguments.rb
CHANGED
@@ -24,7 +24,7 @@ module Epodder
|
|
24
24
|
@args[:path] = "~/.epodder"
|
25
25
|
cmd = CmdParse::CommandParser.new( true, true )
|
26
26
|
cmd.program_name = "ePodder"
|
27
|
-
cmd.program_version = [0, 0,
|
27
|
+
cmd.program_version = [0, 0, 8]
|
28
28
|
cmd.options = CmdParse::OptionParserWrapper.new do |opt|
|
29
29
|
opt.separator "Global options:"
|
30
30
|
opt.on("-v", "--verbose", "Be verbose when outputting info") {|t| @args[:verbose] = true }
|
data/lib/verb/download.rb
CHANGED
@@ -2,9 +2,6 @@ require 'downspout'
|
|
2
2
|
module Epodder
|
3
3
|
class Download < Verb
|
4
4
|
|
5
|
-
def initialize
|
6
|
-
end
|
7
|
-
|
8
5
|
def download args
|
9
6
|
each_argument(args) do |podcast|
|
10
7
|
look_for_episodes podcast
|
@@ -25,10 +22,14 @@ module Epodder
|
|
25
22
|
def download_episode episode
|
26
23
|
begin
|
27
24
|
Downspout::Config.max_redirects = 100
|
25
|
+
Downspout::Config.enable_curb! if Downspout::Config.curb_available?
|
28
26
|
Downspout.download_url_to_path(episode.url, "download/#{episode.podcast.title.strip}/#{episode.url.to_s.match('((?!\/).)*$')}")
|
29
27
|
episode.mark_as_downloaded
|
30
28
|
rescue StandardError => e
|
31
29
|
puts e
|
30
|
+
puts e.backtrace
|
31
|
+
ensure
|
32
|
+
episode.mark_as_downloaded if File.exists? "download/#{episode.podcast.title.strip}/#{episode.url.to_s.match('((?!\/).)*$')}"
|
32
33
|
end
|
33
34
|
end
|
34
35
|
|
data/lib/verb/update.rb
CHANGED
@@ -3,70 +3,70 @@ require 'feedme'
|
|
3
3
|
require 'mechanize'
|
4
4
|
#require 'progress'
|
5
5
|
module Epodder
|
6
|
-
|
6
|
+
class Update < Verb
|
7
7
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
def update args
|
14
|
-
each_argument(args) do |podcast|
|
15
|
-
check_for_new_episodes podcast
|
16
|
-
end
|
17
|
-
end
|
8
|
+
def initialize
|
9
|
+
super
|
10
|
+
@mechanize = Mechanize.new
|
11
|
+
end
|
18
12
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
13
|
+
def update args
|
14
|
+
each_argument(args) do |podcast|
|
15
|
+
check_for_new_episodes podcast
|
16
|
+
end
|
17
|
+
end
|
23
18
|
|
24
|
-
|
25
|
-
|
26
|
-
|
19
|
+
def check_for_new_episodes podcast
|
20
|
+
max_pub = get_max_pubdate podcast
|
21
|
+
open_podcast podcast, max_pub
|
22
|
+
end
|
27
23
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
@log.info "Maximum pubdate for #{podcast.title} - #{podcast.id} is #{max_pub}"
|
32
|
-
parse_feed feed, podcast, max_pub
|
33
|
-
end
|
34
|
-
rescue StandardError => e
|
35
|
-
puts "#{podcast.title} - #{e}"
|
36
|
-
end
|
37
|
-
end
|
24
|
+
def get_max_pubdate podcast
|
25
|
+
Episode.max(:pub_date, :conditions => { :podcast => podcast }) || Time.at(0).to_date
|
26
|
+
end
|
38
27
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
length = pending_episodes.length
|
45
|
-
puts "#{database_podcast.title} has #{length} new episodes" if length > 0
|
28
|
+
def open_podcast podcast, max_pub
|
29
|
+
begin
|
30
|
+
@mechanize.get(podcast.uri) do |feed|
|
31
|
+
@log.info "Maximum pubdate for #{podcast.title} - #{podcast.id} is #{max_pub}"
|
32
|
+
parse_feed feed, podcast, max_pub
|
46
33
|
end
|
34
|
+
rescue StandardError => e
|
35
|
+
puts "#{podcast.title} - #{e}"
|
36
|
+
end
|
37
|
+
end
|
47
38
|
|
48
|
-
|
49
|
-
|
50
|
-
|
39
|
+
def parse_feed feed, database_podcast, max_pub
|
40
|
+
podcast = FeedMe.parse feed.body
|
41
|
+
podcast.emulate_atom!
|
42
|
+
pending_episodes = podcast.items.select {|item| is_valid? item, max_pub}
|
43
|
+
pending_episodes.each {|pending_episode| add_eligible_episode database_podcast, pending_episode }
|
44
|
+
length = pending_episodes.length
|
45
|
+
puts "#{database_podcast.title} has #{length} new episodes" if length > 0
|
46
|
+
end
|
47
|
+
|
48
|
+
def is_valid? item, max_pub
|
49
|
+
item.enclosure && item.pubdate.to_date > max_pub.to_date
|
50
|
+
end
|
51
51
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
52
|
+
def add_eligible_episode podcast, item
|
53
|
+
begin
|
54
|
+
ep = Episode.first_or_create(
|
55
|
+
:title => item.title,
|
56
|
+
:url => item.enclosure.url,
|
57
|
+
:pub_date => item.pubdate.to_date,
|
58
|
+
:downloaded => false,
|
59
|
+
:podcast => podcast
|
60
|
+
)
|
61
|
+
ep.errors.each do |error|
|
62
|
+
@log.error error
|
63
|
+
end
|
64
64
|
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
end
|
65
|
+
rescue Exception => e
|
66
|
+
@log.error e
|
67
|
+
raise e
|
69
68
|
end
|
70
|
-
|
71
69
|
end
|
70
|
+
|
71
|
+
end
|
72
72
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: epodder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eric Bergstrom
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-08-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -332,7 +332,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
332
332
|
version: '0'
|
333
333
|
requirements: []
|
334
334
|
rubyforge_project:
|
335
|
-
rubygems_version: 2.0.
|
335
|
+
rubygems_version: 2.0.6
|
336
336
|
signing_key:
|
337
337
|
specification_version: 4
|
338
338
|
summary: Ruby re-do of hpodder
|