ipod_db 0.2.9 → 0.2.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.
data/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
  NAME
5
5
  ====
6
6
 
7
- ipod_db v0.2.9
7
+ ipod_db v0.2.10
8
8
 
9
9
  SYNOPSIS
10
10
  ========
data/bin/ipod CHANGED
@@ -87,7 +87,8 @@ Main {
87
87
  track numbers to delete from device (ranges like
88
88
  2-5 are accepted too). As a special case, the word
89
89
  'done' means all finished tracks, i.e. with play count
90
- above zero or progress above #{ (100*Ipod::Track::FinishedProgress).floor }%
90
+ above zero or progress above
91
+ #{ (100*Ipod::Track::FinishedProgress).floor }%
91
92
  __
92
93
  }
93
94
  option('pretend','n') {
@@ -115,7 +116,7 @@ Main {
115
116
 
116
117
  def ls
117
118
  @ipod_db.each_track_with_index do |track,i|
118
- list_track i, Ipod::Track.new(track.merge(ipod_root: @ipod_root))
119
+ list_track i, wrapped_track(track)
119
120
  end
120
121
  end
121
122
 
@@ -223,13 +224,18 @@ Main {
223
224
  end
224
225
  when 'done'
225
226
  @ipod_db.each_track_with_index do |track,n|
226
- tracks[n] = track if finished? track
227
+ tracks[n] = track if wrapped_track(track).finished?
227
228
  end
228
229
  end
229
230
  end
230
231
  tracks
231
232
  end
232
233
 
234
+ def wrapped_track record
235
+ @wrapped_tracks ||= Map.new
236
+ @wrapped_tracks[record[:filename]] ||= Ipod::Track.new( record.merge(ipod_root: @ipod_root) )
237
+ end
238
+
233
239
  def spread paths, group_lambda = lambda {|path| track_group(path)}
234
240
  bins = paths.group_by &group_lambda
235
241
  bins.each do |key, bin|
data/lib/ipod/track.rb CHANGED
@@ -16,7 +16,7 @@ module Ipod
16
16
  end
17
17
 
18
18
  def finished?
19
- playcount > 0 or progress > FinishedProgress
19
+ (playcount and playcount > 0) or progress > FinishedProgress
20
20
  end
21
21
 
22
22
  def progress
@@ -28,7 +28,7 @@ module Ipod
28
28
  end
29
29
 
30
30
  def length
31
- #
31
+ return @length if @length
32
32
  # if file is writable TagLib opens it read-write and appears to write something when the file
33
33
  # gets closed, or in any case closing a file open read-write is slow on slow media.
34
34
  #
@@ -37,7 +37,7 @@ module Ipod
37
37
  old_stat = File::Stat.new(absolute_path)
38
38
  begin
39
39
  FileUtils.chmod('a-w', absolute_path)
40
- TagLib::FileRef.open(absolute_path){|file| file.audio_properties.length}
40
+ return @length = TagLib::FileRef.open(absolute_path){|file| file.audio_properties.length}
41
41
  ensure
42
42
  FileUtils.chmod(old_stat.mode, absolute_path)
43
43
  end
@@ -1,3 +1,3 @@
1
1
  class IpodDB
2
- VERSION = '0.2.9'
2
+ VERSION = '0.2.10'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ipod_db
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.9
4
+ version: 0.2.10
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-04-13 00:00:00.000000000 Z
12
+ date: 2013-04-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bindata
@@ -332,18 +332,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
332
332
  - - ! '>='
333
333
  - !ruby/object:Gem::Version
334
334
  version: '0'
335
- segments:
336
- - 0
337
- hash: 4257127508463692162
338
335
  required_rubygems_version: !ruby/object:Gem::Requirement
339
336
  none: false
340
337
  requirements:
341
338
  - - ! '>='
342
339
  - !ruby/object:Gem::Version
343
340
  version: '0'
344
- segments:
345
- - 0
346
- hash: 4257127508463692162
347
341
  requirements: []
348
342
  rubyforge_project:
349
343
  rubygems_version: 1.8.23