epodder 0.0.9 → 0.0.10

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d3e6c2fa3630be50d6529e958889d1033e7bbefe
4
- data.tar.gz: b08d84f6d0b89c8983b92f554350de0f7bf46c81
3
+ metadata.gz: 4bea1932278738114b2e24bc872f9b0deee91132
4
+ data.tar.gz: 717b6c65da3663b6137cf8fec0c870d887b72b21
5
5
  SHA512:
6
- metadata.gz: 9327a39d1905c3fae8d7a96bb81af8691b9783dba48cb9c165dec2ab1c8b57669a499225ec42892c6a580b435254cc534550cff3e6cff5db9d4cd467b343cc4d
7
- data.tar.gz: 28f535afc6306d253cd5888cb72d4d28c2d7b2a7628014869f29e01270b9a3e7f19e50bad9f35eac271c8be63292d633032c064cd6f624608009a5962d1dc103
6
+ metadata.gz: e1cf85fed5a7f82b90c12bb3fc65fc2b5f041a982fe0f3676bd6a6a2e260a8c1e4d7929568a75e269a8dbd7410d682f9d50ccfc3673834433408b673db3ab83a
7
+ data.tar.gz: 100b30c91da8eeb9c32e61b5d937551cc37e512931c0c4eabfc25dd62c439bac416be7eeca145356a8d544a655f55a7ea00c5325b9ed0a111ce8b17073c4b4d3
data/bin/epodder CHANGED
@@ -1,9 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
  require 'rubygems'
3
3
  require 'bundler/setup'
4
- require 'require_all'
5
- require 'cmdparse'
6
- require 'yell'
7
4
 
8
5
  require_relative '../lib/epodder'
9
6
 
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] = '~/.epodder'
25
- cmd = CmdParse::CommandParser.new(true, true)
26
- cmd.program_name = 'ePodder'
27
- cmd.program_version = [0, 0, 8]
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 }
@@ -1,6 +1,6 @@
1
- require 'data_mapper'
2
1
  module Epodder
3
2
  class Episode < Eclass
3
+ require 'data_mapper'
4
4
  include DataMapper::Resource
5
5
 
6
6
  property :id, Serial
@@ -1,5 +1,6 @@
1
1
  module Epodder
2
2
  class Podcast < Eclass
3
+ require 'data_mapper'
3
4
  include DataMapper::Resource
4
5
  property :id, Serial
5
6
  property :title, String, length: 500
data/lib/epodder.rb CHANGED
@@ -1,5 +1,20 @@
1
1
  module Epodder
2
- require_all File.dirname(File.dirname(__FILE__)) << '/lib'
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
@@ -1,8 +1,8 @@
1
- require 'highline/import'
2
1
  module Epodder
3
2
  class Remove < Verb
4
- def initialize
5
3
 
4
+ def initialize
5
+ require 'highline/import'
6
6
  end
7
7
 
8
8
  def remove(args)
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
- @log.info "Maximum pubdate for #{podcast.title} - #{podcast.id} is #{max_pub}"
28
- parse_feed podcast.uri, podcast, max_pub
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 = Feedzirra::Feed.fetch_and_parse(feed.to_s)
36
- unless podcast.is_a? Fixnum
37
- pending_episodes = podcast.entries.select {|item| is_valid? item, max_pub}
38
- else
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 = item.respond_to? :enclosure_url
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.enclosure_url,
57
- pub_date: item.published.to_date,
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.9
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: 2013-08-11 00:00:00.000000000 Z
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: require_all
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: curb
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: downspout
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: home_run
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: feedzirra
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.0
321
+ rubygems_version: 2.2.2
308
322
  signing_key:
309
323
  specification_version: 4
310
324
  summary: Ruby re-do of hpodder