mediafile 0.1.0 → 0.1.2

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: 1fc4745ca61d0c560a088540bdc2c915883595f8
4
- data.tar.gz: 6513da12413d7191bf965d6221ba262ef21f9498
3
+ metadata.gz: 58cdd80b30a31b58efb8d9c89adab411a37ce313
4
+ data.tar.gz: 5ec9d81b1de89e060007a34fe1cdc7b81b4dc7cf
5
5
  SHA512:
6
- metadata.gz: 9ccbebb876f2dfa7335dddb456635475cc725614be46e8a351eb7c086122d087104eec53bd3e68ed17096dc20f07e99eb11b580adb9b7523c594c2af966e7e40
7
- data.tar.gz: b3922fbb97e6fc38d076dc89a337e2d1a2a969f3eb2ee0847fb99f5a5ddf9911de08cd38d1a91ddc7c7ea79e8049fcd4eba426095b2599f6bb6da47f34124971
6
+ metadata.gz: 14def08f1e8b54336384d47f94eda7f090b23be67fbe05d04dfc791db4845b97410cdb25f0a5e8f022b6ccd0691eb1ae23484e63feab3a1a0f27eba17f8534ef
7
+ data.tar.gz: 5ba30cc867c70413d1ed33312041250e401a68da69281d175e91d788d360b7218b7b45c1eb0a8289d545c1cf2d42e592d247767342d00721d197e219302566ec
data/bin/music_cp CHANGED
@@ -61,6 +61,10 @@ opts = OptionParser.new do |opt|
61
61
  "Number of threads to spawn, useful for transcoding. Default: #{count}" ) do |n|
62
62
  count = n.to_i
63
63
  end
64
+ opt.on("-V", "--version", "Disply the version and exit") do
65
+ puts MediaFile::VERSION
66
+ exit 0
67
+ end
64
68
  opt.on_tail("-h", "--help", "Show this message") do
65
69
  warn opt
66
70
  exit
@@ -17,7 +17,6 @@ module MediaFile; class BulkMediaCopy
17
17
  MediaFile.new(s,
18
18
  base_dir: @destination_root,
19
19
  verbose: @verbose,
20
-
21
20
  printer: proc{ |msg| self.safe_print( msg ) }
22
21
  )
23
22
  }
@@ -56,7 +55,7 @@ module MediaFile; class BulkMediaCopy
56
55
 
57
56
  def safe_print(message='')
58
57
  locked {
59
- puts block_given? ? yield : message
58
+ print block_given? ? yield : message
60
59
  }
61
60
  end
62
61
 
@@ -33,11 +33,9 @@ module MediaFile; class MediaFile
33
33
  unless File.exists? destination
34
34
  FileUtils.mkdir_p File.dirname destination
35
35
  begin
36
- if transcode_table.has_key? @type
37
- transcode transcode_table, temp_dest
38
- else
39
- FileUtils.cp @source, temp_dest
40
- end
36
+ transcode_table.has_key?(@type) ?
37
+ transcode(transcode_table, temp_dest) :
38
+ FileUtils.cp(@source, temp_dest)
41
39
  FileUtils.mv temp_dest, destination
42
40
  rescue => e
43
41
  FileUtils.rm temp_dest if File.exists? temp_dest
@@ -91,7 +89,7 @@ module MediaFile; class MediaFile
91
89
  when :flac
92
90
  raise "Please don't transcode to flac. It is broken right now"
93
91
  %W{flac -7 -V -s -o #{destination}} +
94
- (@artist ? ["-T", "artist=#{@artist}"] : [] ) +
92
+ (@artist ? ["-T", "artist=#{@artist}"] : [] ) +
95
93
  (@title ? ["-T", "title=#{@title}"] : [] ) +
96
94
  (@album ? ["-T", "album=#{@album}"] : [] ) +
97
95
  (@track > 0 ? ["-T", "tracknumber=#{@track}"] : [] ) +
@@ -157,19 +155,19 @@ module MediaFile; class MediaFile
157
155
  ret
158
156
  end
159
157
  end
160
- }
158
+ }
161
159
  rescue Timeout::Error
162
- printit "Timeout exceeded!\n" << tpids.map { |p|
160
+ printit "Timeout exceeded!\n" << tpids.map { |p|
163
161
  Process.kill 15, p
164
162
  Process.kill 9, p
165
163
  "#{p} #{Process.wait2( p )[1]}"
166
164
  }.join(", ")
167
165
  FileUtils.rm [destination]
168
- raise
166
+ raise
169
167
  end
170
168
  if err.any?
171
- printit "Error with #{err.map{|it,stat| "#{it} EOT:#{stat.exitstatus} #{stat}" }.join(" and ")}"
172
- #raise "Error #{@source} #{err}"
169
+ printit "###\nError transcoding #{@source}: #{err.map{|it,stat| "#{it} EOT:#{stat.exitstatus} #{stat}" }.join(" and ")}\n###\n"
170
+ exit 1
173
171
  end
174
172
  end
175
173
 
@@ -185,7 +183,7 @@ module MediaFile; class MediaFile
185
183
  }
186
184
  )
187
185
  bool=true
188
- @relpath = dest.gsub(/\s/,"_").gsub(/[,:)\]\[('"@$^*<>?!]/,"").gsub(/_[&]_/,"_and_").split('').map{ |c|
186
+ @relpath = dest.gsub(/\s/,"_").gsub(/[,:)\]\[('"@$^*<>?!]/,"").gsub(/_[&]_/,"_and_").split('').map{ |c|
189
187
  b = bool; bool = c.match('/|_'); b ? c.capitalize : c
190
188
  }.join('').gsub(/__+/,'_')
191
189
  end
@@ -194,27 +192,29 @@ module MediaFile; class MediaFile
194
192
  # this doesn't include the extension.
195
193
  @newname ||= (
196
194
  read_tags
197
- bool=true
198
- file= ( case
199
- when (@disc_number && (@track > 0) && @title) && !(@disc_total && @disc_total == 1)
200
- "%1d_%02d-" % [@disc_number, @track] + @title
201
- when (@track > 0 && @title)
202
- "%02d-" % @track + @title
203
- when @title
204
- @title
205
- else
206
- @name
207
- end).gsub(
208
- /^\.+|\.+$/,""
209
- ).gsub(
210
- /\//,"_"
211
- ).gsub(
212
- /\s/,"_"
213
- ).gsub(
214
- /[,:)\]\[('"@$^*<>?!]/,""
215
- ).gsub(
216
- /_[&]_/,"_and_"
217
- ).split('').map{ |c|
195
+ bool = true
196
+ file = (
197
+ case
198
+ when (@disc_number && (@track > 0) && @title) && !(@disc_total && @disc_total == 1)
199
+ "%1d_%02d-" % [@disc_number, @track] + @title
200
+ when (@track > 0 && @title)
201
+ "%02d-" % @track + @title
202
+ when @title
203
+ @title
204
+ else
205
+ @name
206
+ end
207
+ ).gsub(
208
+ /^\.+|\.+$/,""
209
+ ).gsub(
210
+ /\//,"_"
211
+ ).gsub(
212
+ /\s/,"_"
213
+ ).gsub(
214
+ /[,:)\]\[('"@$^*<>?!]/,""
215
+ ).gsub(
216
+ /_[&]_/,"_and_"
217
+ ).split('').map{ |c|
218
218
  b = bool; bool = c.match('/|_'); b ? c.capitalize : c
219
219
  }.join('')
220
220
  )
@@ -242,8 +242,8 @@ module MediaFile; class MediaFile
242
242
  tag = file.tag
243
243
  @album = tag.album if tag.album
244
244
  @artist = tag.artist if tag.artist
245
- @title = tag.title if tag.title
246
- @genre = tag.genre if tag.genre
245
+ @title = tag.title if tag.title
246
+ @genre = tag.genre if tag.genre
247
247
  @comment= tag.comment if tag.comment
248
248
  @track = tag.track if tag.track
249
249
  @year = tag.year if tag.year
@@ -253,18 +253,23 @@ module MediaFile; class MediaFile
253
253
  case @type
254
254
  when :m4a
255
255
  TagLib::MP4::File.open(@source) do |file|
256
- @disc_number = file.tag.item_list_map["disk"].to_int_pair[0]
256
+ @disc_number = file.tag.item_list_map["disk"] ?
257
+ file.tag.item_list_map["disk"].to_int_pair[0] :
258
+ nil
259
+ @album_artist = file.tag.item_list_map["aART"] ?
260
+ file.tag.item_list_map["aART"].to_string_list[0]
261
+ : @album_artist
257
262
  end
258
263
  when :flac
259
264
  TagLib::FLAC::File.open(@source) do |file|
260
265
  if tag = file.xiph_comment
261
266
  [
262
- [:album_artist, ['ALBUMARTIST', 'ALBUM ARTIST', 'ALBUM_ARTIST'], :to_s ],
263
- [:disc_number, ['DISCNUMBER'], :to_i ],
264
- [:disc_total, ['DISCTOTAL'], :to_i ]
267
+ [:@album_artist, ['ALBUMARTIST', 'ALBUM ARTIST', 'ALBUM_ARTIST'], :to_s ],
268
+ [:@disc_number, ['DISCNUMBER'], :to_i ],
269
+ [:@disc_total, ['DISCTOTAL'], :to_i ]
265
270
  ].each do |field,list,func|
266
271
  val = list.collect{ |i| tag.field_list_map[i] }.select{|i| i }.first
267
- instance_variable_set("@#{field}", val[0].send(func)) if val
272
+ instance_variable_set(field, val[0].send(func)) if val
268
273
  end
269
274
  end
270
275
  end
@@ -272,9 +277,9 @@ module MediaFile; class MediaFile
272
277
  TagLib::MPEG::File.open(@source) do |file|
273
278
  tag = file.id3v2_tag
274
279
  if tag
275
- [['TPE2', :@album_artist, :to_s], ['TPOS', :@disc_number, :to_i]].each do |t,v,m|
276
- if tag.frame_list(t).first and tag.frame_list(t).first.to_s.size > 0
277
- instance_variable_set( v, "#{tag.frame_list(t).first}".send( m.to_sym) )
280
+ [[:@album_artist, 'TPE2', :to_s], [:@disc_number, 'TPOS', :to_i]].each do |field,list,func|
281
+ if tag.frame_list(list).first and tag.frame_list(list).first.to_s.size > 0
282
+ instance_variable_set(field, "#{tag.frame_list(list).first}".send(func) )
278
283
  end
279
284
  end
280
285
  end
@@ -1,3 +1,3 @@
1
1
  module MediaFile
2
- VERSION = "0.1.0" unless defined?(::MediaFile::VERSION)
2
+ VERSION = "0.1.2" unless defined?(::MediaFile::VERSION)
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mediafile
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeff Harvey-Smith
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-19 00:00:00.000000000 Z
11
+ date: 2015-04-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: taglib-ruby
@@ -38,11 +38,11 @@ executables:
38
38
  extensions: []
39
39
  extra_rdoc_files: []
40
40
  files:
41
+ - "./bin/music_cp"
42
+ - "./lib/mediafile.rb"
43
+ - "./lib/mediafile/bulkmediacopy.rb"
41
44
  - "./lib/mediafile/mediafile.rb"
42
45
  - "./lib/mediafile/version.rb"
43
- - "./lib/mediafile/bulkmediacopy.rb"
44
- - "./lib/mediafile.rb"
45
- - "./bin/music_cp"
46
46
  - bin/music_cp
47
47
  homepage: https://github.com/seginoviax/mediafile
48
48
  licenses:
@@ -64,7 +64,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
64
64
  version: '0'
65
65
  requirements: []
66
66
  rubyforge_project:
67
- rubygems_version: 2.0.14
67
+ rubygems_version: 2.4.6
68
68
  signing_key:
69
69
  specification_version: 4
70
70
  summary: Parse media file metadata.