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