wahwah 1.6.1 → 1.6.3

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
  SHA256:
3
- metadata.gz: d366d9e5b09b02f94de258c09e03b9d107dda83fe31052bf9b93696e669aac08
4
- data.tar.gz: 5a6cc11a98174b658d2b35d3440940023e7aec4a2cb964636c58930d9690338a
3
+ metadata.gz: 6fed1451a524177200ca3ccdb13b6cc809fdc9f4913ed613f5cceb29ac316380
4
+ data.tar.gz: ab6aac50fa7b73c55843a722ac0e34cd77da57f5a2b968a4ccf9491c53196743
5
5
  SHA512:
6
- metadata.gz: 47ad25531fe9835c08f0db10ca919cb73f5688237d19586e7b4f0b7cfacd85c176d2e6555243a1ed566c092dcfea83f39fd9f5c9869240f9a0f3b4b2c056bd64
7
- data.tar.gz: 8284a87d145252d60146f5bf2a2fa42c0201422b72ecc4755388a65ff6d2e890b2d029059d9c5d7199b9dd7f873309e38b0890faeae8a3910b960e38556f4c53
6
+ metadata.gz: 70edb86e41aad8f729d186d6f90c54c2e834528b6a0b3570f8ff3b15270d87e12df906a9d2e14d57f70349efe975cb61074591d2f8787f64285b06b7eb1a3a2e
7
+ data.tar.gz: 1629bb5729a89dd1088d1b4601e549ed5b53a45fa5d25fe286b24aab760bb7b81da8f56476a90d39a66e6b883200d504a2c4c0270f170e7df89999fd20d3770d
@@ -44,7 +44,6 @@ module WahWah
44
44
  # This can often be usefully treated as a four-character field with a mnemonic value .
45
45
  def initialize
46
46
  @size, @type = @file_io.read(HEADER_SIZE)&.unpack("Na4")
47
- return unless valid?
48
47
 
49
48
  # If the size field of an atom is set to 1, the type field is followed by a 64-bit extended size field,
50
49
  # which contains the actual size of the atom as a 64-bit unsigned integer.
@@ -53,6 +52,8 @@ module WahWah
53
52
  # If the size field of an atom is set to 0, which is allowed only for a top-level atom,
54
53
  # designates the last atom in the file and indicates that the atom extends to the end of the file.
55
54
  @size = @file_io.size if @size == 0
55
+ return unless valid?
56
+
56
57
  @size -= HEADER_SIZE
57
58
  end
58
59
 
@@ -55,6 +55,12 @@ module WahWah
55
55
  Ogg::FlacTag.new(identification_packet, comment_packet)
56
56
  end
57
57
 
58
+ # Eagerly calculate duration and bitrate when open from path
59
+ if from_path
60
+ @duration = parse_duration
61
+ @bitrate = parse_bitrate
62
+ end
63
+
58
64
  @bit_depth = parse_bit_depth
59
65
  end
60
66
 
data/lib/wahwah/tag.rb CHANGED
@@ -3,30 +3,31 @@
3
3
  module WahWah
4
4
  class Tag
5
5
  INTEGER_ATTRIBUTES = %i[disc disc_total track track_total]
6
- INSPECT_ATTRIBUTES = %i[title artist album albumartist composer track track_total genre year disc disc_total]
6
+ INSPECT_ATTRIBUTES = %i[
7
+ title
8
+ artist
9
+ album
10
+ albumartist
11
+ composer
12
+ comments
13
+ track
14
+ track_total
15
+ genre
16
+ year
17
+ disc
18
+ disc_total
19
+ lyrics
20
+ duration
21
+ bitrate
22
+ sample_rate
23
+ bit_depth
24
+ file_size
25
+ ]
7
26
 
8
- attr_reader(
9
- :title,
10
- :artist,
11
- :album,
12
- :albumartist,
13
- :composer,
14
- :comments,
15
- :track,
16
- :track_total,
17
- :genre,
18
- :year,
19
- :disc,
20
- :disc_total,
21
- :lyrics,
22
- :duration,
23
- :bitrate,
24
- :sample_rate,
25
- :bit_depth,
26
- :file_size
27
- )
27
+ attr_reader(*INSPECT_ATTRIBUTES)
28
28
 
29
- def initialize(io)
29
+ def initialize(io, from_path: false)
30
+ @from_path = from_path
30
31
  @file_size = io.size
31
32
  @file_io = io
32
33
 
@@ -43,7 +44,7 @@ module WahWah
43
44
 
44
45
  def inspect
45
46
  inspect_id = ::Kernel.format "%x", (object_id * 2)
46
- inspect_attributes_values = INSPECT_ATTRIBUTES.map { |attr_name| "#{attr_name}=#{send(attr_name)}" }.join(" ")
47
+ inspect_attributes_values = INSPECT_ATTRIBUTES.map { |attr_name| "#{attr_name}: #{send(attr_name).inspect}" }.join(", ")
47
48
 
48
49
  "<#{self.class.name}:0x#{inspect_id} #{inspect_attributes_values}>"
49
50
  end
@@ -58,6 +59,8 @@ module WahWah
58
59
 
59
60
  private
60
61
 
62
+ attr_accessor :from_path
63
+
61
64
  def parse
62
65
  raise WahWahNotImplementedError, "The parse method is not implemented"
63
66
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module WahWah
4
- VERSION = "1.6.1"
4
+ VERSION = "1.6.3"
5
5
  end
data/lib/wahwah.rb CHANGED
@@ -61,13 +61,13 @@ module WahWah
61
61
  }.freeze
62
62
 
63
63
  def self.open(path_or_io)
64
- with_io path_or_io do |io|
64
+ with_io path_or_io do |io, from_path|
65
65
  file_format = Helper.file_format io
66
66
 
67
67
  raise WahWahArgumentError, "No supported format found" unless support_formats.include? file_format
68
68
 
69
69
  FORMATE_MAPPING.each do |tag, formats|
70
- break const_get(tag).new(io) if formats.include?(file_format)
70
+ break const_get(tag).new(io, **from_path) if formats.include?(file_format)
71
71
  end
72
72
  end
73
73
  end
@@ -84,10 +84,11 @@ module WahWah
84
84
  raise WahWahArgumentError, "File is unreadable" unless File.readable? path_or_io
85
85
  raise WahWahArgumentError, "File is empty" unless File.size(path_or_io) > 0
86
86
 
87
- path_or_io.open(&block)
87
+ path_or_io.open do |io|
88
+ block.call(io, from_path: true)
89
+ end
88
90
  else
89
-
90
- block.call path_or_io
91
+ block.call(path_or_io, from_path: false)
91
92
  end
92
93
  end
93
94
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wahwah
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.1
4
+ version: 1.6.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - aidewoode
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-06-07 00:00:00.000000000 Z
11
+ date: 2024-08-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -175,7 +175,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
175
175
  - !ruby/object:Gem::Version
176
176
  version: '0'
177
177
  requirements: []
178
- rubygems_version: 3.3.27
178
+ rubygems_version: 3.4.19
179
179
  signing_key:
180
180
  specification_version: 4
181
181
  summary: Audio metadata reader ruby gem