epodder 0.0.9 → 0.0.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/epodder +0 -3
- data/lib/arguments.rb +5 -4
- data/lib/database/episode.rb +1 -1
- data/lib/database/podcast.rb +1 -0
- data/lib/epodder.rb +16 -1
- data/lib/verb/download.rb +4 -6
- data/lib/verb/remove.rb +2 -2
- data/lib/verb/update.rb +15 -16
- metadata +22 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4bea1932278738114b2e24bc872f9b0deee91132
|
4
|
+
data.tar.gz: 717b6c65da3663b6137cf8fec0c870d887b72b21
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e1cf85fed5a7f82b90c12bb3fc65fc2b5f041a982fe0f3676bd6a6a2e260a8c1e4d7929568a75e269a8dbd7410d682f9d50ccfc3673834433408b673db3ab83a
|
7
|
+
data.tar.gz: 100b30c91da8eeb9c32e61b5d937551cc37e512931c0c4eabfc25dd62c439bac416be7eeca145356a8d544a655f55a7ea00c5325b9ed0a111ce8b17073c4b4d3
|
data/bin/epodder
CHANGED
data/lib/arguments.rb
CHANGED
@@ -3,6 +3,7 @@ module Epodder
|
|
3
3
|
attr_accessor :args
|
4
4
|
|
5
5
|
def initialize
|
6
|
+
require 'cmdparse'
|
6
7
|
@args = {}
|
7
8
|
@args[:arguments] = []
|
8
9
|
verb = Struct.new(:name, :desc, :block)
|
@@ -21,10 +22,10 @@ module Epodder
|
|
21
22
|
end
|
22
23
|
|
23
24
|
def get_args
|
24
|
-
@args[:path] =
|
25
|
-
cmd = CmdParse::CommandParser.new(true, true)
|
26
|
-
cmd.program_name =
|
27
|
-
cmd.program_version = [0, 0,
|
25
|
+
@args[:path] = "~/.epodder"
|
26
|
+
cmd = CmdParse::CommandParser.new( true, true )
|
27
|
+
cmd.program_name = "ePodder"
|
28
|
+
cmd.program_version = [0, 0, 10]
|
28
29
|
cmd.options = CmdParse::OptionParserWrapper.new do |opt|
|
29
30
|
opt.separator 'Global options:'
|
30
31
|
opt.on('-v', '--verbose', 'Be verbose when outputting info') { |t| @args[:verbose] = true }
|
data/lib/database/episode.rb
CHANGED
data/lib/database/podcast.rb
CHANGED
data/lib/epodder.rb
CHANGED
@@ -1,5 +1,20 @@
|
|
1
1
|
module Epodder
|
2
|
-
|
2
|
+
require 'yell'
|
3
|
+
require_relative 'arguments'
|
4
|
+
require_relative 'eclass'
|
5
|
+
require_relative 'arguments'
|
6
|
+
require_relative 'configuration/configurator'
|
7
|
+
require_relative 'database/episode'
|
8
|
+
require_relative 'database/podcast'
|
9
|
+
require_relative 'verb/verb'
|
10
|
+
require_relative 'verb/add'
|
11
|
+
require_relative 'verb/catchup'
|
12
|
+
require_relative 'verb/clean'
|
13
|
+
require_relative 'verb/download'
|
14
|
+
require_relative 'verb/fetch'
|
15
|
+
require_relative 'verb/list'
|
16
|
+
require_relative 'verb/remove'
|
17
|
+
require_relative 'verb/update'
|
3
18
|
|
4
19
|
@@verbose = false
|
5
20
|
|
data/lib/verb/download.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
require 'downspout'
|
2
1
|
module Epodder
|
3
2
|
class Download < Verb
|
4
3
|
|
4
|
+
require 'downspout'
|
5
5
|
def download(args)
|
6
6
|
each_argument(args) do |podcast|
|
7
7
|
look_for_episodes podcast
|
@@ -23,13 +23,11 @@ module Epodder
|
|
23
23
|
begin
|
24
24
|
Downspout::Config.max_redirects = 100
|
25
25
|
Downspout::Config.enable_curb! if Downspout::Config.curb_available?
|
26
|
-
Downspout.download_url_to_path(episode.url, "download/#{episode.podcast.title.strip}/#{episode.url.to_s.match('((?!\/).)*$')}")
|
26
|
+
download = Downspout.download_url_to_path(episode.url, "download/#{episode.podcast.title.strip}/#{episode.url.to_s.match('((?!\/).)*$')}")
|
27
|
+
puts download
|
27
28
|
episode.mark_as_downloaded
|
28
29
|
rescue StandardError => e
|
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('((?!\/).)*$')}"
|
30
|
+
puts "#{episode.url} generated #{e}"
|
33
31
|
end
|
34
32
|
end
|
35
33
|
|
data/lib/verb/remove.rb
CHANGED
data/lib/verb/update.rb
CHANGED
@@ -1,10 +1,12 @@
|
|
1
|
-
require 'date'
|
2
|
-
require 'feedzirra'
|
3
1
|
module Epodder
|
4
2
|
class Update < Verb
|
5
3
|
|
6
4
|
def initialize
|
7
5
|
super
|
6
|
+
require 'date'
|
7
|
+
require 'feedme'
|
8
|
+
require 'mechanize'
|
9
|
+
@mechanize = Mechanize.new
|
8
10
|
end
|
9
11
|
|
10
12
|
def update(args)
|
@@ -24,37 +26,34 @@ module Epodder
|
|
24
26
|
|
25
27
|
def open_podcast(podcast, max_pub)
|
26
28
|
begin
|
27
|
-
@
|
28
|
-
|
29
|
+
@mechanize.get(podcast.uri) do |feed|
|
30
|
+
@log.info "Maximum pubdate for #{podcast.title} - #{podcast.id} is #{max_pub}"
|
31
|
+
parse_feed feed, podcast, max_pub
|
32
|
+
end
|
29
33
|
rescue StandardError => e
|
30
34
|
puts "#{podcast.title} - #{e}"
|
31
35
|
end
|
32
36
|
end
|
33
37
|
|
34
38
|
def parse_feed(feed, database_podcast, max_pub)
|
35
|
-
podcast =
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
raise "HTTP Error #{podcast}"
|
40
|
-
end
|
41
|
-
pending_episodes.each {|episode| add_eligible_episode database_podcast, episode }
|
39
|
+
podcast = FeedMe.parse feed.body
|
40
|
+
podcast.emulate_atom!
|
41
|
+
pending_episodes = podcast.items.select { |item| is_valid? item, max_pub }
|
42
|
+
pending_episodes.each { |pending_episode| add_eligible_episode database_podcast, pending_episode }
|
42
43
|
length = pending_episodes.length
|
43
44
|
puts "#{database_podcast.title} has #{length} new episodes" if length > 0
|
44
45
|
end
|
45
46
|
|
46
47
|
def is_valid?(item, max_pub)
|
47
|
-
enclosure
|
48
|
-
published = item.published.to_date
|
49
|
-
enclosure && (published > max_pub.to_date)
|
48
|
+
item.enclosure && item.pubdate.to_date > max_pub.to_date
|
50
49
|
end
|
51
50
|
|
52
51
|
def add_eligible_episode(podcast, item)
|
53
52
|
begin
|
54
53
|
ep = Episode.first_or_create(
|
55
54
|
title: item.title,
|
56
|
-
url: item.
|
57
|
-
pub_date: item.
|
55
|
+
url: item.enclosure.url,
|
56
|
+
pub_date: item.pubdate.to_date,
|
58
57
|
downloaded: false,
|
59
58
|
podcast: podcast
|
60
59
|
)
|
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.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eric Bergstrom
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-03-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -95,7 +95,7 @@ dependencies:
|
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
98
|
+
name: curb
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - ">="
|
@@ -109,7 +109,7 @@ dependencies:
|
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
112
|
+
name: downspout
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
115
|
- - ">="
|
@@ -123,7 +123,7 @@ dependencies:
|
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '0'
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
126
|
+
name: home_run
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
129
|
- - ">="
|
@@ -137,7 +137,7 @@ dependencies:
|
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '0'
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
|
-
name:
|
140
|
+
name: feedme
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
143
|
- - ">="
|
@@ -151,7 +151,7 @@ dependencies:
|
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '0'
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
154
|
+
name: mechanize
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
156
156
|
requirements:
|
157
157
|
- - ">="
|
@@ -262,6 +262,20 @@ dependencies:
|
|
262
262
|
- - ">="
|
263
263
|
- !ruby/object:Gem::Version
|
264
264
|
version: '0'
|
265
|
+
- !ruby/object:Gem::Dependency
|
266
|
+
name: ruby-prof
|
267
|
+
requirement: !ruby/object:Gem::Requirement
|
268
|
+
requirements:
|
269
|
+
- - ">="
|
270
|
+
- !ruby/object:Gem::Version
|
271
|
+
version: '0'
|
272
|
+
type: :development
|
273
|
+
prerelease: false
|
274
|
+
version_requirements: !ruby/object:Gem::Requirement
|
275
|
+
requirements:
|
276
|
+
- - ">="
|
277
|
+
- !ruby/object:Gem::Version
|
278
|
+
version: '0'
|
265
279
|
description:
|
266
280
|
email: bandwidthoracle@gmail.com
|
267
281
|
executables:
|
@@ -304,7 +318,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
304
318
|
version: '0'
|
305
319
|
requirements: []
|
306
320
|
rubyforge_project:
|
307
|
-
rubygems_version: 2.2.
|
321
|
+
rubygems_version: 2.2.2
|
308
322
|
signing_key:
|
309
323
|
specification_version: 4
|
310
324
|
summary: Ruby re-do of hpodder
|