taglib-ruby 0.5.2-x86-mingw32 → 0.6.0-x86-mingw32
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/.yardopts +1 -1
- data/CHANGES.md +11 -0
- data/LICENSE.txt +0 -2
- data/README.md +7 -9
- data/docs/taglib/base.rb +35 -7
- data/docs/taglib/id3v2.rb +37 -5
- data/docs/taglib/mp4.rb +267 -0
- data/docs/taglib/mpeg.rb +23 -8
- data/ext/taglib_base/includes.i +2 -2
- data/ext/taglib_base/taglib_base.i +3 -0
- data/ext/taglib_base/taglib_base_wrap.cxx +11 -12
- data/ext/taglib_flac/extconf.rb +4 -0
- data/ext/taglib_flac/taglib_flac_wrap.cxx +21 -25
- data/ext/taglib_id3v1/taglib_id3v1_wrap.cxx +4 -8
- data/ext/taglib_id3v2/taglib_id3v2.i +3 -0
- data/ext/taglib_id3v2/taglib_id3v2_wrap.cxx +528 -69
- data/ext/taglib_mp4/extconf.rb +4 -0
- data/ext/taglib_mp4/taglib_mp4.i +225 -0
- data/ext/taglib_mp4/taglib_mp4_wrap.cxx +4830 -0
- data/ext/taglib_mpeg/taglib_mpeg.i +15 -0
- data/ext/taglib_mpeg/taglib_mpeg_wrap.cxx +174 -88
- data/ext/taglib_ogg/taglib_ogg_wrap.cxx +2 -6
- data/ext/taglib_vorbis/taglib_vorbis_wrap.cxx +8 -12
- data/lib/libtag.dll +0 -0
- data/lib/taglib.rb +1 -0
- data/lib/taglib/mp4.rb +33 -0
- data/lib/taglib/version.rb +2 -2
- data/lib/taglib_base.so +0 -0
- data/lib/taglib_flac.so +0 -0
- data/lib/taglib_id3v1.so +0 -0
- data/lib/taglib_id3v2.so +0 -0
- data/lib/taglib_mp4.so +0 -0
- data/lib/taglib_mpeg.so +0 -0
- data/lib/taglib_ogg.so +0 -0
- data/lib/taglib_vorbis.so +0 -0
- data/taglib-ruby.gemspec +19 -3
- data/tasks/ext.rake +3 -0
- data/tasks/swig.rake +6 -1
- data/test/base_test.rb +11 -0
- data/test/data/Makefile +5 -2
- data/test/data/flac-create.cpp +2 -22
- data/test/data/get_picture_data.cpp +22 -0
- data/test/data/mp4-create.cpp +38 -0
- data/test/data/mp4.m4a +0 -0
- data/test/fileref_write_test.rb +9 -0
- data/test/flac_file_test.rb +2 -1
- data/test/id3v2_header_test.rb +61 -0
- data/test/id3v2_write_test.rb +17 -0
- data/test/mp4_file_test.rb +51 -0
- data/test/mp4_file_write_test.rb +66 -0
- data/test/mp4_items_test.rb +183 -0
- metadata +84 -7
@@ -0,0 +1,61 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), 'helper')
|
2
|
+
|
3
|
+
class TestID3v2Header < Test::Unit::TestCase
|
4
|
+
context "The sample.mp3 file" do
|
5
|
+
setup do
|
6
|
+
read_properties = false
|
7
|
+
@file = TagLib::MPEG::File.new("test/data/sample.mp3", read_properties)
|
8
|
+
@tag = @file.id3v2_tag
|
9
|
+
end
|
10
|
+
|
11
|
+
should "have a ID3v2 header" do
|
12
|
+
assert_not_nil @tag.header
|
13
|
+
end
|
14
|
+
|
15
|
+
context "header" do
|
16
|
+
setup do
|
17
|
+
@header = @tag.header
|
18
|
+
end
|
19
|
+
|
20
|
+
should "have a major version" do
|
21
|
+
assert_equal 3, @header.major_version
|
22
|
+
end
|
23
|
+
|
24
|
+
should "have a revision number" do
|
25
|
+
assert_equal 0, @header.revision_number
|
26
|
+
end
|
27
|
+
|
28
|
+
should "have a tag size" do
|
29
|
+
assert_equal 63478, @header.tag_size
|
30
|
+
end
|
31
|
+
|
32
|
+
should "not have a footer" do
|
33
|
+
assert_equal false, @header.footer_present
|
34
|
+
end
|
35
|
+
|
36
|
+
should "not have an extended header" do
|
37
|
+
assert_equal false, @header.extended_header
|
38
|
+
end
|
39
|
+
|
40
|
+
context "changing the major version" do
|
41
|
+
|
42
|
+
setup do
|
43
|
+
@header.major_version = 4
|
44
|
+
end
|
45
|
+
|
46
|
+
should "have a different major verson" do
|
47
|
+
assert_equal 4, @header.major_version
|
48
|
+
end
|
49
|
+
|
50
|
+
teardown do
|
51
|
+
@header.major_version = 3
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
teardown do
|
57
|
+
@file.close
|
58
|
+
@file = nil
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
data/test/id3v2_write_test.rb
CHANGED
@@ -54,6 +54,23 @@ class TestID3v2Write < Test::Unit::TestCase
|
|
54
54
|
end
|
55
55
|
end
|
56
56
|
|
57
|
+
should "be able to save ID3v2.3 when compiled against TagLib >= 1.8" do
|
58
|
+
if TagLib::TAGLIB_MAJOR_VERSION > 1 ||
|
59
|
+
(TagLib::TAGLIB_MAJOR_VERSION == 1 && TagLib::TAGLIB_MINOR_VERSION >= 8)
|
60
|
+
success = @file.save(TagLib::MPEG::File::ID3v2, true, 3)
|
61
|
+
assert_equal true, success
|
62
|
+
@file.close
|
63
|
+
@file = nil
|
64
|
+
|
65
|
+
header = File.open(OUTPUT_FILE, 'rb') do |f|
|
66
|
+
f.read(5)
|
67
|
+
end
|
68
|
+
# 3 stands for v2.3
|
69
|
+
s = "ID3" + 3.chr + 0.chr
|
70
|
+
assert_equal s, header
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
57
74
|
should "be able to set fields to nil" do
|
58
75
|
tag = @file.id3v2_tag
|
59
76
|
tag.title = nil
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), 'helper')
|
2
|
+
|
3
|
+
class MP4FileTest < Test::Unit::TestCase
|
4
|
+
context "TagLib::MP4::File" do
|
5
|
+
setup do
|
6
|
+
@file = TagLib::MP4::File.new("test/data/mp4.m4a")
|
7
|
+
@tag = @file.tag
|
8
|
+
end
|
9
|
+
|
10
|
+
should "contain basic tag information" do
|
11
|
+
assert_equal "Title", @tag.title
|
12
|
+
assert_equal "Artist", @tag.artist
|
13
|
+
assert_equal "Album", @tag.album
|
14
|
+
assert_equal "Comment", @tag.comment
|
15
|
+
assert_equal "Pop", @tag.genre
|
16
|
+
assert_equal 2011, @tag.year
|
17
|
+
assert_equal 7, @tag.track
|
18
|
+
assert_equal false, @tag.empty?
|
19
|
+
end
|
20
|
+
|
21
|
+
context "audio properties" do
|
22
|
+
setup do
|
23
|
+
@properties = @file.audio_properties
|
24
|
+
end
|
25
|
+
|
26
|
+
should "exist" do
|
27
|
+
assert_not_nil @properties
|
28
|
+
end
|
29
|
+
|
30
|
+
should "contain basic information" do
|
31
|
+
assert_equal 1, @properties.length
|
32
|
+
assert_equal 54, @properties.bitrate
|
33
|
+
assert_equal 44100, @properties.sample_rate
|
34
|
+
# The test file is mono, this appears to be a TagLib bug
|
35
|
+
assert_equal 2, @properties.channels
|
36
|
+
end
|
37
|
+
|
38
|
+
should "contain mp4-specific information" do
|
39
|
+
assert_equal 16, @properties.bits_per_sample
|
40
|
+
# Properties#encrypted? raises a NoMethodError
|
41
|
+
# assert_equal false, @properties.encrypted?
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
teardown do
|
46
|
+
@file.close
|
47
|
+
@file = nil
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), 'helper')
|
2
|
+
|
3
|
+
class MP4FileWriteTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
SAMPLE_FILE = "test/data/mp4.m4a"
|
6
|
+
OUTPUT_FILE = "test/data/output.m4a"
|
7
|
+
PICTURE_FILE = "test/data/globe_east_540.jpg"
|
8
|
+
|
9
|
+
def reloaded
|
10
|
+
TagLib::MP4::File.open(OUTPUT_FILE, false) do |file|
|
11
|
+
yield file
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
context "TagLib::MP4::File" do
|
16
|
+
setup do
|
17
|
+
FileUtils.cp SAMPLE_FILE, OUTPUT_FILE
|
18
|
+
@file = TagLib::MP4::File.new(OUTPUT_FILE, false)
|
19
|
+
end
|
20
|
+
|
21
|
+
should "be able to save the title" do
|
22
|
+
tag = @file.tag
|
23
|
+
assert_not_nil tag
|
24
|
+
tag.title = "New Title"
|
25
|
+
success = @file.save
|
26
|
+
assert success
|
27
|
+
@file.close
|
28
|
+
@file = nil
|
29
|
+
|
30
|
+
written_title = reloaded do |file|
|
31
|
+
file.tag.title
|
32
|
+
end
|
33
|
+
assert_equal "New Title", written_title
|
34
|
+
end
|
35
|
+
|
36
|
+
should "be able to add and save new cover art" do
|
37
|
+
item_list_map = @file.tag.item_list_map
|
38
|
+
cover_art_list = item_list_map['covr'].to_cover_art_list
|
39
|
+
assert_equal 1, cover_art_list.size
|
40
|
+
|
41
|
+
data = File.open(PICTURE_FILE, 'rb') { |f| f.read }
|
42
|
+
new_cover_art = TagLib::MP4::CoverArt.new(TagLib::MP4::CoverArt::JPEG, data)
|
43
|
+
|
44
|
+
cover_art_list << new_cover_art
|
45
|
+
item_list_map.insert('covr', TagLib::MP4::Item.from_cover_art_list(cover_art_list))
|
46
|
+
assert_equal 2, item_list_map['covr'].to_cover_art_list.size
|
47
|
+
|
48
|
+
success = @file.save
|
49
|
+
assert success
|
50
|
+
|
51
|
+
reloaded do |file|
|
52
|
+
written_cover_art = file.tag.item_list_map['covr'].to_cover_art_list.last
|
53
|
+
assert_equal TagLib::MP4::CoverArt::JPEG, written_cover_art.format
|
54
|
+
assert_equal data, written_cover_art.data
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
teardown do
|
59
|
+
if @file
|
60
|
+
@file.close
|
61
|
+
@file = nil
|
62
|
+
end
|
63
|
+
FileUtils.rm OUTPUT_FILE
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,183 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require File.join(File.dirname(__FILE__), 'helper')
|
3
|
+
|
4
|
+
class MP4ItemsTest < Test::Unit::TestCase
|
5
|
+
ITUNES_LEADER = "\xC2\xA9"
|
6
|
+
|
7
|
+
context "The mp4.m4a file's items" do
|
8
|
+
setup do
|
9
|
+
@file = TagLib::MP4::File.new("test/data/mp4.m4a")
|
10
|
+
@tag = @file.tag
|
11
|
+
@item_list_map = @file.tag.item_list_map
|
12
|
+
@item_keys = [
|
13
|
+
"cover", "#{ITUNES_LEADER}nam", "#{ITUNES_LEADER}ART", "#{ITUNES_LEADER}alb",
|
14
|
+
"#{ITUNES_LEADER}cmt", "#{ITUNES_LEADER}gen", "#{ITUNES_LEADER}day",
|
15
|
+
"trkn", "#{ITUNES_LEADER}too", "#{ITUNES_LEADER}cpy"
|
16
|
+
]
|
17
|
+
end
|
18
|
+
|
19
|
+
context "item_list_map" do
|
20
|
+
should "exist" do
|
21
|
+
assert_not_nil @item_list_map
|
22
|
+
end
|
23
|
+
|
24
|
+
should "not be empty" do
|
25
|
+
assert_equal false, @item_list_map.empty?
|
26
|
+
end
|
27
|
+
|
28
|
+
should "contain 10 items" do
|
29
|
+
assert_equal @item_keys.count, @item_list_map.size
|
30
|
+
end
|
31
|
+
|
32
|
+
should "have keys" do
|
33
|
+
assert_equal true, @item_list_map.contains("trkn")
|
34
|
+
assert_equal true, @item_list_map.has_key?("#{ITUNES_LEADER}too")
|
35
|
+
assert_equal true, @item_list_map.include?("#{ITUNES_LEADER}cpy")
|
36
|
+
assert_equal false, @item_list_map.include?("none such key")
|
37
|
+
end
|
38
|
+
|
39
|
+
should "look up keys" do
|
40
|
+
assert_nil @item_list_map["none such key"]
|
41
|
+
assert_equal ["Title"], @item_list_map["#{ITUNES_LEADER}nam"].to_string_list
|
42
|
+
end
|
43
|
+
|
44
|
+
should "be clearable" do
|
45
|
+
assert_equal 10, @item_list_map.size
|
46
|
+
comment = @item_list_map["#{ITUNES_LEADER}cmt"]
|
47
|
+
@item_list_map.clear
|
48
|
+
assert_equal true, @item_list_map.empty?
|
49
|
+
begin
|
50
|
+
comment.to_string_list
|
51
|
+
flunk("Should have raised ObjectPreviouslyDeleted.")
|
52
|
+
rescue => e
|
53
|
+
assert_equal "ObjectPreviouslyDeleted", e.class.to_s
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
should "be convertable to an array" do
|
58
|
+
array = @item_list_map.to_a
|
59
|
+
assert_equal 10, array.count
|
60
|
+
array.each do |object|
|
61
|
+
assert_equal Array, object.class
|
62
|
+
assert_equal 2, object.count
|
63
|
+
assert_equal String, object.first.class
|
64
|
+
assert_equal TagLib::MP4::Item, object.last.class
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
should "be removable" do
|
70
|
+
assert_equal 10, @item_list_map.size
|
71
|
+
title = @item_list_map["#{ITUNES_LEADER}nam"]
|
72
|
+
@item_list_map.erase("#{ITUNES_LEADER}nam")
|
73
|
+
assert_equal 9, @item_list_map.size
|
74
|
+
begin
|
75
|
+
title.to_string_list
|
76
|
+
flunk("Should have raised ObjectPreviouslyDeleted.")
|
77
|
+
rescue => e
|
78
|
+
assert_equal "ObjectPreviouslyDeleted", e.class.to_s
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
context "inserting items" do
|
83
|
+
should "insert a new item" do
|
84
|
+
new_title = TagLib::MP4::Item.from_string_list(['new title'])
|
85
|
+
@item_list_map.insert("#{ITUNES_LEADER}nam", new_title)
|
86
|
+
new_title = nil
|
87
|
+
GC.start
|
88
|
+
assert_equal ['new title'], @item_list_map["#{ITUNES_LEADER}nam"].to_string_list
|
89
|
+
end
|
90
|
+
|
91
|
+
should "unlink items that get replaced" do
|
92
|
+
title = @item_list_map["#{ITUNES_LEADER}nam"]
|
93
|
+
@item_list_map.insert("#{ITUNES_LEADER}nam", TagLib::MP4::Item.from_int(1))
|
94
|
+
begin
|
95
|
+
title.to_string_list
|
96
|
+
flunk("Should have raised ObjectPreviouslyDeleted.")
|
97
|
+
rescue => e
|
98
|
+
assert_equal "ObjectPreviouslyDeleted", e.class.to_s
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
context "TagLib::MP4::Item" do
|
104
|
+
should "be creatable from an int" do
|
105
|
+
item = TagLib::MP4::Item.from_int(-42)
|
106
|
+
assert_equal TagLib::MP4::Item, item.class
|
107
|
+
assert_equal -42, item.to_int
|
108
|
+
end
|
109
|
+
|
110
|
+
should "be creatable from a boolean" do
|
111
|
+
item = TagLib::MP4::Item.from_bool(false)
|
112
|
+
assert_equal TagLib::MP4::Item, item.class
|
113
|
+
assert_equal false, item.to_bool
|
114
|
+
end
|
115
|
+
|
116
|
+
context ".from_int_pair" do
|
117
|
+
should "be creatable from a pair of ints" do
|
118
|
+
item = TagLib::MP4::Item.from_int_pair([123, 456])
|
119
|
+
assert_equal TagLib::MP4::Item, item.class
|
120
|
+
assert_equal [123, 456], item.to_int_pair
|
121
|
+
end
|
122
|
+
|
123
|
+
should "raise an error when passed something other than an Array" do
|
124
|
+
begin
|
125
|
+
TagLib::MP4::Item.from_int_pair(1)
|
126
|
+
flunk("Should have raised ArgumentError.")
|
127
|
+
rescue => e
|
128
|
+
assert_equal "ArgumentError", e.class.to_s
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
should "raise an error when passed an Array with more than two elements" do
|
133
|
+
begin
|
134
|
+
TagLib::MP4::Item.from_int_pair([1, 2, 3])
|
135
|
+
flunk("Should have raised ArgumentError.")
|
136
|
+
rescue => e
|
137
|
+
assert_equal "ArgumentError", e.class.to_s
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
should "raise an error when passed an Array with less than two elements" do
|
142
|
+
begin
|
143
|
+
TagLib::MP4::Item.from_int_pair([1])
|
144
|
+
flunk("Should have raised ArgumentError.")
|
145
|
+
rescue => e
|
146
|
+
assert_equal "ArgumentError", e.class.to_s
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
context "created from an array of strings" do
|
152
|
+
should "interpreted as strings with an encoding" do
|
153
|
+
item = TagLib::MP4::Item.from_string_list(["héllo"])
|
154
|
+
assert_equal TagLib::MP4::Item, item.class
|
155
|
+
assert_equal ["héllo"], item.to_string_list
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
should "be creatable from a CoverArt list" do
|
160
|
+
cover_art = TagLib::MP4::CoverArt.new(TagLib::MP4::CoverArt::JPEG, 'foo')
|
161
|
+
item = TagLib::MP4::Item.from_cover_art_list([cover_art])
|
162
|
+
assert_equal TagLib::MP4::Item, item.class
|
163
|
+
new_cover_art = item.to_cover_art_list.first
|
164
|
+
assert_equal 'foo', new_cover_art.data
|
165
|
+
assert_equal TagLib::MP4::CoverArt::JPEG, new_cover_art.format
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
169
|
+
context "TagLib::MP4::CoverArt" do
|
170
|
+
should "be creatable from a string" do
|
171
|
+
cover_art = TagLib::MP4::CoverArt.new(TagLib::MP4::CoverArt::JPEG, 'foo')
|
172
|
+
assert_equal TagLib::MP4::CoverArt::JPEG, cover_art.format
|
173
|
+
assert_equal 'foo', cover_art.data
|
174
|
+
end
|
175
|
+
end
|
176
|
+
|
177
|
+
teardown do
|
178
|
+
@file.close
|
179
|
+
@file = nil
|
180
|
+
end
|
181
|
+
end
|
182
|
+
|
183
|
+
end
|
metadata
CHANGED
@@ -1,15 +1,21 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: taglib-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 6
|
9
|
+
- 0
|
10
|
+
hash: -1624000421784734184
|
6
11
|
platform: x86-mingw32
|
7
12
|
authors:
|
8
13
|
- Robin Stocker
|
14
|
+
- Jacob Vosmaer
|
9
15
|
autorequire:
|
10
16
|
bindir: bin
|
11
17
|
cert_chain: []
|
12
|
-
date:
|
18
|
+
date: 2013-04-26 00:00:00.000000000 Z
|
13
19
|
dependencies:
|
14
20
|
- !ruby/object:Gem::Dependency
|
15
21
|
name: bundler
|
@@ -18,7 +24,11 @@ dependencies:
|
|
18
24
|
requirements:
|
19
25
|
- - ~>
|
20
26
|
- !ruby/object:Gem::Version
|
21
|
-
version: 1.
|
27
|
+
version: '1.2'
|
28
|
+
segments:
|
29
|
+
- 1
|
30
|
+
- 2
|
31
|
+
hash: 659333688826136466
|
22
32
|
type: :development
|
23
33
|
prerelease: false
|
24
34
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -26,7 +36,11 @@ dependencies:
|
|
26
36
|
requirements:
|
27
37
|
- - ~>
|
28
38
|
- !ruby/object:Gem::Version
|
29
|
-
version: 1.
|
39
|
+
version: '1.2'
|
40
|
+
segments:
|
41
|
+
- 1
|
42
|
+
- 2
|
43
|
+
hash: 659333688826136466
|
30
44
|
- !ruby/object:Gem::Dependency
|
31
45
|
name: rake-compiler
|
32
46
|
requirement: !ruby/object:Gem::Requirement
|
@@ -35,6 +49,10 @@ dependencies:
|
|
35
49
|
- - ~>
|
36
50
|
- !ruby/object:Gem::Version
|
37
51
|
version: '0.8'
|
52
|
+
segments:
|
53
|
+
- 0
|
54
|
+
- 8
|
55
|
+
hash: -182208375001009716
|
38
56
|
type: :development
|
39
57
|
prerelease: false
|
40
58
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -43,6 +61,10 @@ dependencies:
|
|
43
61
|
- - ~>
|
44
62
|
- !ruby/object:Gem::Version
|
45
63
|
version: '0.8'
|
64
|
+
segments:
|
65
|
+
- 0
|
66
|
+
- 8
|
67
|
+
hash: -182208375001009716
|
46
68
|
- !ruby/object:Gem::Dependency
|
47
69
|
name: shoulda-context
|
48
70
|
requirement: !ruby/object:Gem::Requirement
|
@@ -51,6 +73,10 @@ dependencies:
|
|
51
73
|
- - ~>
|
52
74
|
- !ruby/object:Gem::Version
|
53
75
|
version: '1.0'
|
76
|
+
segments:
|
77
|
+
- 1
|
78
|
+
- 0
|
79
|
+
hash: -1261716483015722782
|
54
80
|
type: :development
|
55
81
|
prerelease: false
|
56
82
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -59,6 +85,10 @@ dependencies:
|
|
59
85
|
- - ~>
|
60
86
|
- !ruby/object:Gem::Version
|
61
87
|
version: '1.0'
|
88
|
+
segments:
|
89
|
+
- 1
|
90
|
+
- 0
|
91
|
+
hash: -1261716483015722782
|
62
92
|
- !ruby/object:Gem::Dependency
|
63
93
|
name: yard
|
64
94
|
requirement: !ruby/object:Gem::Requirement
|
@@ -67,6 +97,10 @@ dependencies:
|
|
67
97
|
- - ~>
|
68
98
|
- !ruby/object:Gem::Version
|
69
99
|
version: '0.7'
|
100
|
+
segments:
|
101
|
+
- 0
|
102
|
+
- 7
|
103
|
+
hash: -2819999278125497282
|
70
104
|
type: :development
|
71
105
|
prerelease: false
|
72
106
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -75,6 +109,34 @@ dependencies:
|
|
75
109
|
- - ~>
|
76
110
|
- !ruby/object:Gem::Version
|
77
111
|
version: '0.7'
|
112
|
+
segments:
|
113
|
+
- 0
|
114
|
+
- 7
|
115
|
+
hash: -2819999278125497282
|
116
|
+
- !ruby/object:Gem::Dependency
|
117
|
+
name: kramdown
|
118
|
+
requirement: !ruby/object:Gem::Requirement
|
119
|
+
none: false
|
120
|
+
requirements:
|
121
|
+
- - ~>
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: '1.0'
|
124
|
+
segments:
|
125
|
+
- 1
|
126
|
+
- 0
|
127
|
+
hash: -1261716483015722782
|
128
|
+
type: :development
|
129
|
+
prerelease: false
|
130
|
+
version_requirements: !ruby/object:Gem::Requirement
|
131
|
+
none: false
|
132
|
+
requirements:
|
133
|
+
- - ~>
|
134
|
+
- !ruby/object:Gem::Version
|
135
|
+
version: '1.0'
|
136
|
+
segments:
|
137
|
+
- 1
|
138
|
+
- 0
|
139
|
+
hash: -1261716483015722782
|
78
140
|
description: ! 'Ruby interface for the taglib C++ library, for reading and writing
|
79
141
|
|
80
142
|
meta-data (tags) of many audio formats.
|
@@ -106,6 +168,7 @@ files:
|
|
106
168
|
- docs/taglib/flac.rb
|
107
169
|
- docs/taglib/id3v1.rb
|
108
170
|
- docs/taglib/id3v2.rb
|
171
|
+
- docs/taglib/mp4.rb
|
109
172
|
- docs/taglib/mpeg.rb
|
110
173
|
- docs/taglib/ogg.rb
|
111
174
|
- docs/taglib/vorbis.rb
|
@@ -114,6 +177,7 @@ files:
|
|
114
177
|
- ext/taglib_base/includes.i
|
115
178
|
- ext/taglib_base/taglib_base.i
|
116
179
|
- ext/taglib_base/taglib_base_wrap.cxx
|
180
|
+
- ext/taglib_flac/extconf.rb
|
117
181
|
- ext/taglib_flac/taglib_flac.i
|
118
182
|
- ext/taglib_flac/taglib_flac_wrap.cxx
|
119
183
|
- ext/taglib_id3v1/extconf.rb
|
@@ -123,6 +187,9 @@ files:
|
|
123
187
|
- ext/taglib_id3v2/relativevolumeframe.i
|
124
188
|
- ext/taglib_id3v2/taglib_id3v2.i
|
125
189
|
- ext/taglib_id3v2/taglib_id3v2_wrap.cxx
|
190
|
+
- ext/taglib_mp4/extconf.rb
|
191
|
+
- ext/taglib_mp4/taglib_mp4.i
|
192
|
+
- ext/taglib_mp4/taglib_mp4_wrap.cxx
|
126
193
|
- ext/taglib_mpeg/extconf.rb
|
127
194
|
- ext/taglib_mpeg/taglib_mpeg.i
|
128
195
|
- ext/taglib_mpeg/taglib_mpeg_wrap.cxx
|
@@ -139,6 +206,7 @@ files:
|
|
139
206
|
- lib/taglib/flac.rb
|
140
207
|
- lib/taglib/id3v1.rb
|
141
208
|
- lib/taglib/id3v2.rb
|
209
|
+
- lib/taglib/mp4.rb
|
142
210
|
- lib/taglib/mpeg.rb
|
143
211
|
- lib/taglib/ogg.rb
|
144
212
|
- lib/taglib/version.rb
|
@@ -148,15 +216,19 @@ files:
|
|
148
216
|
- tasks/ext.rake
|
149
217
|
- tasks/gemspec_check.rake
|
150
218
|
- tasks/swig.rake
|
219
|
+
- test/base_test.rb
|
151
220
|
- test/data/Makefile
|
152
221
|
- test/data/add-relative-volume.cpp
|
153
222
|
- test/data/crash.mp3
|
154
223
|
- test/data/flac-create.cpp
|
155
224
|
- test/data/flac.flac
|
225
|
+
- test/data/get_picture_data.cpp
|
156
226
|
- test/data/globe_east_540.jpg
|
157
227
|
- test/data/globe_east_90.jpg
|
158
228
|
- test/data/id3v1-create.cpp
|
159
229
|
- test/data/id3v1.mp3
|
230
|
+
- test/data/mp4-create.cpp
|
231
|
+
- test/data/mp4.m4a
|
160
232
|
- test/data/relative-volume.mp3
|
161
233
|
- test/data/sample.mp3
|
162
234
|
- test/data/unicode.mp3
|
@@ -170,11 +242,15 @@ files:
|
|
170
242
|
- test/flac_file_write_test.rb
|
171
243
|
- test/id3v1_tag_test.rb
|
172
244
|
- test/id3v2_frames_test.rb
|
245
|
+
- test/id3v2_header_test.rb
|
173
246
|
- test/id3v2_memory_test.rb
|
174
247
|
- test/id3v2_relative_volume_test.rb
|
175
248
|
- test/id3v2_tag_test.rb
|
176
249
|
- test/id3v2_unicode_test.rb
|
177
250
|
- test/id3v2_write_test.rb
|
251
|
+
- test/mp4_file_test.rb
|
252
|
+
- test/mp4_file_write_test.rb
|
253
|
+
- test/mp4_items_test.rb
|
178
254
|
- test/mpeg_file_test.rb
|
179
255
|
- test/tag_test.rb
|
180
256
|
- test/unicode_filename_test.rb
|
@@ -187,8 +263,9 @@ files:
|
|
187
263
|
- lib/taglib_ogg.so
|
188
264
|
- lib/taglib_vorbis.so
|
189
265
|
- lib/taglib_flac.so
|
266
|
+
- lib/taglib_mp4.so
|
190
267
|
- lib/libtag.dll
|
191
|
-
homepage: http://robinst.github.
|
268
|
+
homepage: http://robinst.github.io/taglib-ruby/
|
192
269
|
licenses:
|
193
270
|
- MIT
|
194
271
|
post_install_message:
|
@@ -203,7 +280,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
203
280
|
version: '0'
|
204
281
|
segments:
|
205
282
|
- 0
|
206
|
-
hash: -
|
283
|
+
hash: -2010148279711531746
|
207
284
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
208
285
|
none: false
|
209
286
|
requirements:
|
@@ -212,7 +289,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
212
289
|
version: '0'
|
213
290
|
segments:
|
214
291
|
- 0
|
215
|
-
hash: -
|
292
|
+
hash: -2010148279711531746
|
216
293
|
requirements:
|
217
294
|
- taglib (libtag1-dev in Debian/Ubuntu, taglib-devel in Fedora/RHEL)
|
218
295
|
rubyforge_project:
|