flacinfo-rb 0.4 → 1.0
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 +7 -0
- data/README +8 -4
- data/lib/flacinfo.rb +13 -21
- data/test/test-flacinfo.rb +0 -0
- metadata +44 -39
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: d9267dacbedb7bac4eb13df1bb8c119bbbac61e2
|
4
|
+
data.tar.gz: e1c40dd876b865c06c454b3d0ce686072128a255
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: e264c66fd251c141c1acd991aee4c397708356147839e62c71cb02d3cab16dc5e91d5c0b425ea15cee7ace367069fc224f4c914209dadabff9759df30f1a5844
|
7
|
+
data.tar.gz: 4653e488863c184a0117f8bb6b90cbf2e5571ecc96a3ba3ee10c37ce85e0a30fce1ca0b333f6325f5faca86a9ab273ba10e472bdfccce3e44d4d3ff4f25dbbc0
|
data/README
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
::
|
1
|
+
:: flacinfo-rb ::
|
2
2
|
Author: Darren Kirby
|
3
|
-
mailto:bulliver@
|
4
|
-
License:
|
3
|
+
mailto:bulliver@gmail.com
|
4
|
+
License: GPL3
|
5
5
|
|
6
6
|
= Quick API docs =
|
7
7
|
|
@@ -39,5 +39,9 @@ raw_data_dump(?) :: if passed a filename it will dump flac_file['raw_data'] to
|
|
39
39
|
update! :: writes comment changes to disk
|
40
40
|
write_picture(?) :: write image from PICTURE block(s) to optional file
|
41
41
|
|
42
|
-
|
42
|
+
The public methods and attributes are very well documented in the source itself. Please read
|
43
|
+
there if you don't understand any of this. You can also use Rdoc to generate HTML documentation.
|
43
44
|
|
45
|
+
HELP: flacinfo-rb still does not parse cuesheets, as I have never encountered a flac file
|
46
|
+
that contains one. If you have a flac file with a cuesheet please consider emailing it to
|
47
|
+
me so I can add this remaining bit of code.
|
data/lib/flacinfo.rb
CHANGED
@@ -11,24 +11,22 @@
|
|
11
11
|
# * It parses zero or more picture blocks (METADATA_BLOCK_PICTURE)
|
12
12
|
# * It allows you to write the embedded images to a file.
|
13
13
|
#
|
14
|
-
# My
|
14
|
+
# My goal is to create a nice native Ruby library interface which will allow
|
15
15
|
# the user to mimic most functionality of the 'metaflac' binary programmatically.
|
16
16
|
#
|
17
17
|
# = Copyright and Disclaimer
|
18
18
|
#
|
19
|
-
# Copyright:: (
|
19
|
+
# Copyright:: (C) 2006 - 2014 Darren Kirby
|
20
20
|
#
|
21
21
|
# FlacInfo is free software. No warranty is provided and the author
|
22
22
|
# cannot accept responsibility for lost or damaged files.
|
23
23
|
#
|
24
|
-
# License::
|
25
|
-
# Author:: Darren Kirby (mailto:bulliver@
|
26
|
-
# Website::
|
24
|
+
# License:: GPL3
|
25
|
+
# Author:: Darren Kirby (mailto:bulliver@gmail.com)
|
26
|
+
# Website:: https://github.com/DarrenKirby/flacinfo-rb
|
27
27
|
#
|
28
28
|
# = More information
|
29
29
|
#
|
30
|
-
# * There is an example irb session that shows typical usage at
|
31
|
-
# http://badcomputer.org/unix/code/flacinfo/index.bot
|
32
30
|
# * The Flac spec is at:
|
33
31
|
# http://flac.sourceforge.net/format.html
|
34
32
|
# * The Vorbis Comment spec is at:
|
@@ -37,18 +35,15 @@
|
|
37
35
|
|
38
36
|
# FlacInfoError is raised for general user errors.
|
39
37
|
# It will print a string that describes the problem.
|
40
|
-
|
41
|
-
end
|
38
|
+
FlacInfoError = Class.new(StandardError)
|
42
39
|
|
43
40
|
# FlacInfoReadError is raised when an error occurs parsing the Flac file.
|
44
41
|
# It will print a string that describes in which block the error occured.
|
45
|
-
|
46
|
-
end
|
42
|
+
FlacInfoReadError = Class.new(StandardError)
|
47
43
|
|
48
44
|
# FlacInfoWriteError is raised when an error occurs writing the Flac file.
|
49
45
|
# It will print a string that describes where the error occured.
|
50
|
-
|
51
|
-
end
|
46
|
+
FlacInfoWriteError = Class.new(StandardError)
|
52
47
|
|
53
48
|
# Note: STREAMINFO is the only block guaranteed to be present in the Flac file.
|
54
49
|
# All attributes will be present but empty if the associated block is not present in the Flac file,
|
@@ -347,7 +342,7 @@ class FlacInfo
|
|
347
342
|
raise FlacInfoError, "comments must be in the form 'name=value'"
|
348
343
|
end
|
349
344
|
begin
|
350
|
-
@comment
|
345
|
+
@comment << name
|
351
346
|
@comments_changed = 1
|
352
347
|
rescue
|
353
348
|
return false
|
@@ -363,7 +358,7 @@ class FlacInfo
|
|
363
358
|
# If 'str' is in the form 'name=value' only exact matches
|
364
359
|
# will be deleted. If 'str' is in the form 'name' any and all
|
365
360
|
# comments named 'name' will be deleted. Returns 'true' if a
|
366
|
-
# comment was deleted, false otherwise. Remember to call
|
361
|
+
# comment was deleted, false otherwise. Remember to call
|
367
362
|
# 'update!' to write changes to the file.
|
368
363
|
#
|
369
364
|
def comment_del(name)
|
@@ -542,13 +537,11 @@ class FlacInfo
|
|
542
537
|
|
543
538
|
@metadata_blocks = []
|
544
539
|
lastheader = 0
|
545
|
-
pos = 1
|
546
540
|
|
547
541
|
until lastheader == 1
|
548
542
|
# first bit = Last-metadata-block flag
|
549
543
|
# bits 2-8 = BLOCK_TYPE. See typetable above
|
550
544
|
block_header = @fp.read(1).unpack("B*")[0]
|
551
|
-
#puts block_header
|
552
545
|
lastheader = block_header[0].to_i & 1
|
553
546
|
type = sprintf("%u", "0b#{block_header[1..7]}").to_i
|
554
547
|
@metadata_blocks << [typetable[type], type, lastheader]
|
@@ -557,7 +550,6 @@ class FlacInfo
|
|
557
550
|
raise FlacInfoReadError, "Invalid block header type"
|
558
551
|
end
|
559
552
|
|
560
|
-
pos += 1
|
561
553
|
self.send "parse_#{typetable[type]}"
|
562
554
|
end
|
563
555
|
|
@@ -613,7 +605,7 @@ class FlacInfo
|
|
613
605
|
picture_type = ["Other", "32x32 pixels file icon", "Other file icon", "Cover (front)", "Cover (back)",
|
614
606
|
"Leaflet page", "Media", "Lead artist/lead performer/soloist", "Artist/performer",
|
615
607
|
"Conductor", "Band/Orchestra", "Composer", "Lyricist/text writer", "Recording Location",
|
616
|
-
"During recording", "During performance", "Movie/video screen capture", "A bright
|
608
|
+
"During recording", "During performance", "Movie/video screen capture", "A bright
|
617
609
|
coloured fish", "Illustration", "Band/artist logotype", "Publisher/Studio logotype"]
|
618
610
|
|
619
611
|
begin
|
@@ -668,7 +660,7 @@ class FlacInfo
|
|
668
660
|
@application['raw_data'] = @fp.read(@application['block_size'] - 4)
|
669
661
|
end
|
670
662
|
rescue
|
671
|
-
raise FlacInfoReadError, "Could not parse METADATA_BLOCK_APPLICATION"
|
663
|
+
raise FlacInfoReadError, "Could not parse METADATA_BLOCK_APPLICATION"
|
672
664
|
end
|
673
665
|
end
|
674
666
|
|
@@ -798,7 +790,7 @@ class FlacInfo
|
|
798
790
|
vorbis_comm_s += [@tags["vendor_tag"]].pack("A*")
|
799
791
|
vorbis_comm_s += [@comment.length].pack("V")
|
800
792
|
@comment.each do |c|
|
801
|
-
vorbis_comm_s += [c.
|
793
|
+
vorbis_comm_s += [c.bytesize].pack("V")
|
802
794
|
vorbis_comm_s += [c].pack("A*")
|
803
795
|
end
|
804
796
|
vorbis_comm_s
|
data/test/test-flacinfo.rb
CHANGED
File without changes
|
metadata
CHANGED
@@ -1,48 +1,53 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.9.4
|
3
|
-
specification_version: 1
|
1
|
+
--- !ruby/object:Gem::Specification
|
4
2
|
name: flacinfo-rb
|
5
|
-
version: !ruby/object:Gem::Version
|
6
|
-
version:
|
7
|
-
date: 2007-09-08 00:00:00 -06:00
|
8
|
-
summary: Pure Ruby library for accessing metadata from Flac files
|
9
|
-
require_paths:
|
10
|
-
- lib
|
11
|
-
email: bulliver@badcomputer.org
|
12
|
-
homepage: http://badcomputer.org/unix/code/flacinfo/
|
13
|
-
rubyforge_project: flacinfo-rb
|
14
|
-
description:
|
15
|
-
autorequire: flacinfo
|
16
|
-
default_executable:
|
17
|
-
bindir: bin
|
18
|
-
has_rdoc: true
|
19
|
-
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
|
-
requirements:
|
21
|
-
- - ">"
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 0.0.0
|
24
|
-
version:
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '1.0'
|
25
5
|
platform: ruby
|
26
|
-
|
27
|
-
cert_chain:
|
28
|
-
post_install_message:
|
29
|
-
authors:
|
6
|
+
authors:
|
30
7
|
- Darren Kirby
|
31
|
-
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-08-29 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: |2
|
14
|
+
flacinfo-rb is a pure Ruby library for low-level access to Flac files.
|
15
|
+
You can use it to read, set, or delete 'id3' like data (Vorbis comments),
|
16
|
+
delete, add, or resize padding blocks, and so on.
|
17
|
+
email: bulliver@gmail.com
|
18
|
+
executables: []
|
19
|
+
extensions: []
|
20
|
+
extra_rdoc_files:
|
21
|
+
- README
|
22
|
+
files:
|
32
23
|
- README
|
33
24
|
- lib/flacinfo.rb
|
34
|
-
test_files:
|
35
25
|
- test/test-flacinfo.rb
|
36
26
|
- test/test.flac
|
27
|
+
homepage: https://github.com/DarrenKirby/flacinfo-rb
|
28
|
+
licenses:
|
29
|
+
- GPL-3.0
|
30
|
+
metadata: {}
|
31
|
+
post_install_message:
|
37
32
|
rdoc_options: []
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
33
|
+
require_paths:
|
34
|
+
- lib
|
35
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - '>='
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0'
|
40
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
41
|
+
requirements:
|
42
|
+
- - '>='
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: '0'
|
45
45
|
requirements: []
|
46
|
-
|
47
|
-
|
48
|
-
|
46
|
+
rubyforge_project:
|
47
|
+
rubygems_version: 2.0.14
|
48
|
+
signing_key:
|
49
|
+
specification_version: 4
|
50
|
+
summary: Pure Ruby library for accessing metadata from Flac files
|
51
|
+
test_files:
|
52
|
+
- test/test-flacinfo.rb
|
53
|
+
- test/test.flac
|