rtaglib 0.2.3 → 0.3.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.
- data/History.txt +4 -0
- data/Manifest.txt +84 -9
- data/README.txt +0 -0
- data/Rakefile +30 -27
- data/{test/data → data}/440Hz-5sec.flac +0 -0
- data/{test/data → data}/440Hz-5sec.mp3 +0 -0
- data/{test/data → data}/440Hz-5sec.mpc +0 -0
- data/{test/data → data}/440Hz-5sec.ogg +0 -0
- data/{test/data → data}/440Hz-5sec.wv +0 -0
- data/data/test_jason.mp3 +0 -0
- data/data/test_jason.ogg +0 -0
- data/ext/Rakefile +10 -0
- data/ext/tagfile/Rakefile.rb +42 -0
- data/ext/tagfile/rake_ext_conf.rb +29 -0
- data/ext/tagfile/tagfile.c +11 -7
- data/ext/taglib/Rakefile.rb +48 -0
- data/ext/taglib/rake_ext_conf.rb +33 -0
- data/ext/taglib/taglib-mswin32/bin/tag.dll +0 -0
- data/ext/taglib/taglib-mswin32/bin/tag_c.dll +0 -0
- data/ext/taglib/taglib-mswin32/bin/tag_cd.dll +0 -0
- data/ext/taglib/taglib-mswin32/bin/tagd.dll +0 -0
- data/ext/taglib/taglib-mswin32/bin/taglib-config +55 -0
- data/ext/taglib/taglib-mswin32/include/taglib/apefooter.h +173 -0
- data/ext/taglib/taglib-mswin32/include/taglib/apeitem.h +204 -0
- data/ext/taglib/taglib-mswin32/include/taglib/apetag.h +162 -0
- data/ext/taglib/taglib-mswin32/include/taglib/attachedpictureframe.h +220 -0
- data/ext/taglib/taglib-mswin32/include/taglib/audioproperties.h +110 -0
- data/ext/taglib/taglib-mswin32/include/taglib/commentsframe.h +168 -0
- data/ext/taglib/taglib-mswin32/include/taglib/fileref.h +262 -0
- data/ext/taglib/taglib-mswin32/include/taglib/flacfile.h +201 -0
- data/ext/taglib/taglib-mswin32/include/taglib/flacproperties.h +92 -0
- data/ext/taglib/taglib-mswin32/include/taglib/generalencapsulatedobjectframe.h +174 -0
- data/ext/taglib/taglib-mswin32/include/taglib/id3v1genres.h +66 -0
- data/ext/taglib/taglib-mswin32/include/taglib/id3v1tag.h +180 -0
- data/ext/taglib/taglib-mswin32/include/taglib/id3v2extendedheader.h +93 -0
- data/ext/taglib/taglib-mswin32/include/taglib/id3v2footer.h +82 -0
- data/ext/taglib/taglib-mswin32/include/taglib/id3v2frame.h +414 -0
- data/ext/taglib/taglib-mswin32/include/taglib/id3v2framefactory.h +167 -0
- data/ext/taglib/taglib-mswin32/include/taglib/id3v2header.h +175 -0
- data/ext/taglib/taglib-mswin32/include/taglib/id3v2synchdata.h +70 -0
- data/ext/taglib/taglib-mswin32/include/taglib/id3v2tag.h +300 -0
- data/ext/taglib/taglib-mswin32/include/taglib/mpcfile.h +175 -0
- data/ext/taglib/taglib-mswin32/include/taglib/mpcproperties.h +85 -0
- data/ext/taglib/taglib-mswin32/include/taglib/mpegfile.h +277 -0
- data/ext/taglib/taglib-mswin32/include/taglib/mpegheader.h +166 -0
- data/ext/taglib/taglib-mswin32/include/taglib/mpegproperties.h +118 -0
- data/ext/taglib/taglib-mswin32/include/taglib/oggfile.h +112 -0
- data/ext/taglib/taglib-mswin32/include/taglib/oggflacfile.h +118 -0
- data/ext/taglib/taglib-mswin32/include/taglib/oggpage.h +203 -0
- data/ext/taglib/taglib-mswin32/include/taglib/oggpageheader.h +232 -0
- data/ext/taglib/taglib-mswin32/include/taglib/relativevolumeframe.h +274 -0
- data/ext/taglib/taglib-mswin32/include/taglib/speexfile.h +99 -0
- data/ext/taglib/taglib-mswin32/include/taglib/speexproperties.h +89 -0
- data/ext/taglib/taglib-mswin32/include/taglib/tag.h +173 -0
- data/ext/taglib/taglib-mswin32/include/taglib/tag_c.h +288 -0
- data/ext/taglib/taglib-mswin32/include/taglib/taglib.h +177 -0
- data/ext/taglib/taglib-mswin32/include/taglib/taglib_export.h +39 -0
- data/ext/taglib/taglib-mswin32/include/taglib/tbytevector.h +409 -0
- data/ext/taglib/taglib-mswin32/include/taglib/tbytevectorlist.h +91 -0
- data/ext/taglib/taglib-mswin32/include/taglib/textidentificationframe.h +258 -0
- data/ext/taglib/taglib-mswin32/include/taglib/tfile.h +271 -0
- data/ext/taglib/taglib-mswin32/include/taglib/tlist.h +252 -0
- data/ext/taglib/taglib-mswin32/include/taglib/tlist.tcc +316 -0
- data/ext/taglib/taglib-mswin32/include/taglib/tmap.h +200 -0
- data/ext/taglib/taglib-mswin32/include/taglib/tmap.tcc +196 -0
- data/ext/taglib/taglib-mswin32/include/taglib/trueaudiofile.h +180 -0
- data/ext/taglib/taglib-mswin32/include/taglib/trueaudioproperties.h +93 -0
- data/ext/taglib/taglib-mswin32/include/taglib/tstring.h +456 -0
- data/ext/taglib/taglib-mswin32/include/taglib/tstringlist.h +115 -0
- data/ext/taglib/taglib-mswin32/include/taglib/uniquefileidentifierframe.h +113 -0
- data/ext/taglib/taglib-mswin32/include/taglib/unknownframe.h +79 -0
- data/ext/taglib/taglib-mswin32/include/taglib/unsynchronizedlyricsframe.h +157 -0
- data/ext/taglib/taglib-mswin32/include/taglib/urllinkframe.h +172 -0
- data/ext/taglib/taglib-mswin32/include/taglib/vorbisfile.h +118 -0
- data/ext/taglib/taglib-mswin32/include/taglib/vorbisproperties.h +125 -0
- data/ext/taglib/taglib-mswin32/include/taglib/wavpackfile.h +164 -0
- data/ext/taglib/taglib-mswin32/include/taglib/wavpackproperties.h +94 -0
- data/ext/taglib/taglib-mswin32/include/taglib/xingheader.h +100 -0
- data/ext/taglib/taglib-mswin32/include/taglib/xiphcomment.h +202 -0
- data/ext/taglib/taglib-mswin32/lib/pkgconfig/taglib_c.pc +12 -0
- data/ext/taglib/taglib-mswin32/lib/tag.lib +0 -0
- data/ext/taglib/taglib-mswin32/lib/tag_c.lib +0 -0
- data/ext/taglib/taglib_i386-mingw32.source +22645 -0
- data/ext/taglib/taglib_i386-mswin32.source +22645 -0
- data/ext/taglib/{taglib.cxx → taglib_x86_64-linux.source} +508 -75
- data/lib/TagLib.rb +3 -2
- data/lib/TagLib_doc.rb +1532 -1526
- data/lib/rtaglib_mswin32.rb +4 -0
- data/lib/tagfile.rb +6 -0
- data/swig/Doxyfile +0 -0
- data/swig/Rakefile +44 -19
- data/swig/TagLib_doc.rb +2755 -0
- data/swig/make_doc.rb +5 -4
- data/swig/process_cxx.rb +2 -2
- data/swig/rake_ext_conf.rb +33 -0
- data/swig/taglib.i +8 -5
- data/swig/test.rb +47 -39
- data/test/test_read.rb +4 -3
- data/test/test_taglib.rb +47 -39
- data/test/test_write.rb +4 -3
- metadata +96 -20
- data/ext/tagfile/extconf.rb +0 -14
- data/ext/taglib/extconf.rb +0 -22
- data/swig/extconf.rb +0 -22
data/swig/make_doc.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
#!/usr/bin/ruby
|
2
2
|
#### Make docs
|
3
|
+
require '../lib/rtaglib_mswin32'
|
4
|
+
|
3
5
|
require 'rexml/document'
|
4
6
|
require 'TagLib'
|
5
7
|
require 'rbconfig'
|
@@ -9,6 +11,7 @@ if !fm.nil?
|
|
9
11
|
brief_desc=fm[:brief_desc].gsub(/\s+/im,"").size>0 ? "<b>#{fm[:brief_desc]}</b>\n":""
|
10
12
|
desc=(" # "+brief_desc+fm[:long_desc]+"\n").gsub("\n","\n # ")+"\n"
|
11
13
|
params=fm[:param].join(",")
|
14
|
+
#p params
|
12
15
|
else
|
13
16
|
desc=""
|
14
17
|
params=""
|
@@ -30,7 +33,6 @@ def print_methods(klass,functions,indent)
|
|
30
33
|
methods=klass.instance_methods-Object.instance_methods
|
31
34
|
methods.each{|m|
|
32
35
|
dm=data_method(functions[m])
|
33
|
-
|
34
36
|
out << dm[:desc]+indent+"def #{m}(#{dm[:params]})\n"+indent+"end\n"
|
35
37
|
}
|
36
38
|
out
|
@@ -53,11 +55,10 @@ def get_doxygen_description(xml_file)
|
|
53
55
|
|
54
56
|
param=[]
|
55
57
|
func.elements.each("param") {|xpar|
|
56
|
-
type=xpar.elements["type"].to_s.gsub(/<.+?>|const|\*|String|StringList|&/,"").chomp
|
57
58
|
if xpar.elements["defval"]
|
58
|
-
param.push(
|
59
|
+
param.push(xpar.elements["declname"].text+" = "+xpar.elements["defval"].to_s.gsub(/<.+?>/,""))
|
59
60
|
else
|
60
|
-
param.push(
|
61
|
+
param.push(xpar.elements["declname"].text)
|
61
62
|
end
|
62
63
|
}
|
63
64
|
funcs[name]={:param=>param,:brief_desc=>brief,:long_desc=>long}
|
data/swig/process_cxx.rb
CHANGED
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'mkmf'
|
2
|
+
if(PLATFORM=~/mswin32/)
|
3
|
+
if(File.expand_path(File.dirname(__FILE__))=~/swig/)
|
4
|
+
package_dir=File.expand_path(File.dirname(__FILE__)+"/..")
|
5
|
+
prefix=package_dir+"/ext/taglib/taglib-mswin32"
|
6
|
+
else
|
7
|
+
prefix="./taglib-mswin32"
|
8
|
+
end
|
9
|
+
puts "Building for MsWin32"
|
10
|
+
$CFLAGS+= " -I\"#{prefix}\\include\" -I\"#{prefix}\\include\\taglib\""
|
11
|
+
$LDFLAGS += " -link -libpath:\"#{prefix}\\lib\" "
|
12
|
+
|
13
|
+
elsif(PLATFORM=~/mingw/)
|
14
|
+
puts "Building for MinGW"
|
15
|
+
$libs = append_library($libs, "stdc++")
|
16
|
+
$libs = append_library($libs, "supc++")
|
17
|
+
$CFLAGS= " -I/mingw/include/taglib"
|
18
|
+
else
|
19
|
+
puts "Building for other architecture"
|
20
|
+
taglib_config = find_executable("taglib-config")
|
21
|
+
if taglib_config
|
22
|
+
prefix = `#{taglib_config} --prefix`.strip
|
23
|
+
$CFLAGS += " -I#{prefix}/include"
|
24
|
+
$LDFLAGS += " -L#{prefix}/lib"
|
25
|
+
else
|
26
|
+
prefix = "/usr"
|
27
|
+
end
|
28
|
+
$libs = append_library($libs, "supc++")
|
29
|
+
$CFLAGS += " -I#{prefix}/include/taglib"
|
30
|
+
end
|
31
|
+
if have_library("tag")
|
32
|
+
create_makefile("TagLib")
|
33
|
+
end
|
data/swig/taglib.i
CHANGED
@@ -198,11 +198,11 @@ namespace TagLib {
|
|
198
198
|
%typemap(out) String {
|
199
199
|
$result = String2Ruby(&$1);
|
200
200
|
};
|
201
|
-
|
201
|
+
/**
|
202
202
|
%typemap(in) String {
|
203
|
-
$1=new TagLib::String(StringValuePtr($input));
|
203
|
+
$1=new TagLib::String(StringValuePtr($input), TagLib::String::UTF8);
|
204
204
|
};
|
205
|
-
|
205
|
+
*/
|
206
206
|
|
207
207
|
%apply String {String &, const String &};
|
208
208
|
%typemap(in) ByteVector {
|
@@ -233,12 +233,12 @@ class AudioProperties {
|
|
233
233
|
PROPERTIES_VIRTUALS()
|
234
234
|
};
|
235
235
|
class String {
|
236
|
-
|
236
|
+
public:
|
237
237
|
enum Type {
|
238
238
|
Latin1 = 0, UTF16 = 1, UTF16BE = 2, UTF8 = 3,
|
239
239
|
UTF16LE = 4
|
240
240
|
};
|
241
|
-
|
241
|
+
|
242
242
|
String();
|
243
243
|
String(const char *s, Type t=Latin1);
|
244
244
|
~String();
|
@@ -739,6 +739,9 @@ class File {
|
|
739
739
|
|
740
740
|
const FrameListMap& frameListMap() const;
|
741
741
|
const FrameList& frameList() const;
|
742
|
+
void removeFrame(Frame * frame, bool del = true);
|
743
|
+
|
744
|
+
|
742
745
|
};
|
743
746
|
};
|
744
747
|
|
data/swig/test.rb
CHANGED
@@ -1,17 +1,12 @@
|
|
1
1
|
#!/usr/bin/ruby
|
2
|
+
$:.unshift(File.dirname(__FILE__)+"/../lib")
|
3
|
+
require 'TagLib'
|
2
4
|
require 'tmpdir'
|
3
|
-
if File.exists? File.dirname(__FILE__)+"/TagLib.so"
|
4
|
-
require File.dirname(__FILE__)+'/TagLib'
|
5
|
-
BASE_DATA=File.dirname(__FILE__)+"/../test/data/"
|
6
|
-
else
|
7
|
-
require File.dirname(__FILE__)+'/../ext/taglib/TagLib'
|
8
|
-
BASE_DATA=File.dirname(__FILE__)+"/data/"
|
9
|
-
end
|
10
5
|
require 'fileutils'
|
11
6
|
require 'test/unit'
|
12
7
|
class RtaglibReadTestCase < Test::Unit::TestCase
|
13
8
|
def setup
|
14
|
-
@data_dir=
|
9
|
+
@data_dir=File.dirname(__FILE__)+"/../data/"
|
15
10
|
@temp_dir=Dir::tmpdir+"/rtaglib"
|
16
11
|
FileUtils.mkdir(@temp_dir) if !File.exists? @temp_dir
|
17
12
|
FileUtils.chmod(0777, @temp_dir)
|
@@ -80,7 +75,6 @@ class RtaglibReadTestCase < Test::Unit::TestCase
|
|
80
75
|
# - audioproperties: bitrate,channels,sampleRate and channels
|
81
76
|
# - isNull (null?)
|
82
77
|
def test_fileref
|
83
|
-
|
84
78
|
assert_equal(%w{ogg flac oga mp3 mpc wv spx tta}, TagLib::FileRef.defaultFileExtensions())
|
85
79
|
bitrate={'flac'=>168,'wv'=>235,'mp3'=>48,'mpc'=>41,'ogg'=>80}
|
86
80
|
channels={'flac'=>1,'wv'=>1,'mp3'=>1,'mpc'=>2,'ogg'=>1}
|
@@ -107,17 +101,17 @@ class RtaglibReadTestCase < Test::Unit::TestCase
|
|
107
101
|
mp3=@data_dir+"440Hz-5sec.mp3"
|
108
102
|
copy=get_copy(mp3)
|
109
103
|
fr2=TagLib::FileRef.new(copy)
|
110
|
-
fr2.tag().title="new title";
|
111
|
-
fr2.tag().artist="new artist";
|
112
|
-
fr2.tag().album="new album";
|
104
|
+
fr2.tag().title=TagLib::String.new("new title");
|
105
|
+
fr2.tag().artist=TagLib::String.new("new artist");
|
106
|
+
fr2.tag().album=TagLib::String.new("new album");
|
113
107
|
fr2.tag().year=2000;
|
114
108
|
fr2.tag().track=10;
|
115
|
-
fr2.tag().genre="Rock";
|
116
|
-
fr2.tag().comment="new comment";
|
109
|
+
fr2.tag().genre=TagLib::String.new("Rock");
|
110
|
+
fr2.tag().comment=TagLib::String.new("new comment");
|
117
111
|
|
118
112
|
fr2.save()
|
119
113
|
copy2=get_copy(copy)
|
120
|
-
fr2.tag().title="sfsd"
|
114
|
+
fr2.tag().title=TagLib::String.new("sfsd")
|
121
115
|
fr2.save()
|
122
116
|
fr3=TagLib::FileRef.new(copy2)
|
123
117
|
assert_equal("new title",fr3.tag.title)
|
@@ -139,7 +133,7 @@ class RtaglibReadTestCase < Test::Unit::TestCase
|
|
139
133
|
fr=TagLib::FileRef.new(copy)
|
140
134
|
utf8_string="大塚愛"
|
141
135
|
expected="\345\244\247\345\241\232\346\204\233"
|
142
|
-
fr.tag().title=utf8_string
|
136
|
+
fr.tag().title=TagLib::String.new(utf8_string)
|
143
137
|
fr.save
|
144
138
|
fr=nil
|
145
139
|
fr=TagLib::FileRef.new(copy)
|
@@ -149,18 +143,25 @@ class RtaglibReadTestCase < Test::Unit::TestCase
|
|
149
143
|
s=get_copy(mp3)
|
150
144
|
d=get_copy(mp3)
|
151
145
|
s_tag=TagLib::FileRef.new(s)
|
152
|
-
d_tag=TagLib::
|
146
|
+
d_tag=TagLib::MPEG::File.new(d)
|
153
147
|
artist="大塚愛"
|
154
148
|
# puts "artist = #{artist} => #{artist.inspect}"
|
155
149
|
assert_equal(artist,s_tag.tag.artist)
|
156
|
-
assert_equal(artist,d_tag.
|
157
|
-
d_tag.
|
158
|
-
assert_equal(d_tag.
|
150
|
+
assert_equal(artist,d_tag.ID3v2Tag.artist)
|
151
|
+
d_tag.ID3v2Tag.artist=TagLib::String.new(s_tag.tag.artist)
|
152
|
+
assert_equal(d_tag.ID3v2Tag.artist, s_tag.tag.artist)
|
159
153
|
d_tag.save
|
154
|
+
d_tag=nil
|
160
155
|
d_tag=TagLib::FileRef.new(d)
|
156
|
+
assert_equal(artist, d_tag.tag.artist)
|
161
157
|
assert_equal(d_tag.tag.artist, s_tag.tag.artist)
|
162
|
-
|
163
|
-
|
158
|
+
=begin
|
159
|
+
if(`which id3info`)
|
160
|
+
`id3info #{s}` =~ /^=== TPE1.+: (.+)$/
|
161
|
+
vc_out=$1
|
162
|
+
assert_equal(artist,vc_out,"id3info output (#{vc_out}) not equal to #{artist}")
|
163
|
+
end
|
164
|
+
=end
|
164
165
|
|
165
166
|
ogg=@data_dir+"test_jason.ogg"
|
166
167
|
s=get_copy(ogg)
|
@@ -168,15 +169,22 @@ class RtaglibReadTestCase < Test::Unit::TestCase
|
|
168
169
|
s_tag=TagLib::FileRef.new(s)
|
169
170
|
d_tag=TagLib::FileRef.new(d)
|
170
171
|
artist="大塚愛"
|
171
|
-
# puts "artist = #{artist} => #{artist.inspect}"
|
172
172
|
assert_equal(artist,s_tag.tag.artist)
|
173
173
|
assert_equal(artist,d_tag.tag.artist)
|
174
|
-
d_tag.tag.artist=s_tag.tag.artist
|
174
|
+
d_tag.tag.artist=TagLib::String.new(s_tag.tag.artist,TagLib::String::UTF8)
|
175
175
|
assert_equal(d_tag.tag.artist, s_tag.tag.artist)
|
176
176
|
d_tag.save
|
177
177
|
d_tag=TagLib::FileRef.new(d)
|
178
178
|
assert_equal(d_tag.tag.artist, s_tag.tag.artist)
|
179
|
-
|
179
|
+
if PLATFORM=~/mswin/
|
180
|
+
else
|
181
|
+
if(`which vorbiscomment`)
|
182
|
+
`vorbiscomment #{d}` =~ /^ARTIST=(.+)$/
|
183
|
+
vc_out=$1
|
184
|
+
assert_equal(artist,vc_out,"vorbiscomment output (#{vc_out}) not equal to #{artist}")
|
185
|
+
end
|
186
|
+
end
|
187
|
+
|
180
188
|
end
|
181
189
|
def test_flac
|
182
190
|
original=@data_dir+"440Hz-5sec.flac"
|
@@ -199,7 +207,7 @@ class RtaglibReadTestCase < Test::Unit::TestCase
|
|
199
207
|
assert_equal(16,ap.sampleWidth)
|
200
208
|
# comments
|
201
209
|
xiph=flac_xiph.xiphComment()
|
202
|
-
xiph.setTitle("xiph")
|
210
|
+
xiph.setTitle(TagLib::String.new("xiph"))
|
203
211
|
flac_xiph.save()
|
204
212
|
assert_equal("xiph",flac_xiph.tag().title)
|
205
213
|
assert_nil(flac_xiph.ID3v1Tag())
|
@@ -207,7 +215,7 @@ class RtaglibReadTestCase < Test::Unit::TestCase
|
|
207
215
|
|
208
216
|
id1=flac_id1.ID3v1Tag(true)
|
209
217
|
|
210
|
-
id1.setTitle("id1")
|
218
|
+
id1.setTitle(TagLib::String.new("id1"))
|
211
219
|
flac_id1.save()
|
212
220
|
assert_equal("id1",id1.title)
|
213
221
|
|
@@ -216,7 +224,7 @@ class RtaglibReadTestCase < Test::Unit::TestCase
|
|
216
224
|
|
217
225
|
|
218
226
|
id2=flac_id2.ID3v2Tag(true)
|
219
|
-
id2.setTitle("id2")
|
227
|
+
id2.setTitle(TagLib::String.new("id2"))
|
220
228
|
flac_id2.save()
|
221
229
|
assert_equal("id2",id2.title)
|
222
230
|
|
@@ -260,14 +268,14 @@ class RtaglibReadTestCase < Test::Unit::TestCase
|
|
260
268
|
original=@data_dir+"440Hz-5sec.mpc"
|
261
269
|
copy=get_copy(original)
|
262
270
|
fr=TagLib::FileRef.new(copy)
|
263
|
-
fr.tag.title="440Hz Sine Wave"
|
271
|
+
fr.tag.title=TagLib::String.new("440Hz Sine Wave")
|
264
272
|
fr.save
|
265
273
|
mpc=TagLib::MPC::File.new(copy)
|
266
274
|
%w{tag APETag}.each {|f|
|
267
275
|
assert_equal("440Hz Sine Wave",mpc.send(f).title, "#{f} tag")
|
268
276
|
}
|
269
277
|
mpc=TagLib::MPC::File.new(copy)
|
270
|
-
mpc.ID3v1Tag(true).title="440Hz Sine Wave - id3"
|
278
|
+
mpc.ID3v1Tag(true).title=TagLib::String.new("440Hz Sine Wave - id3")
|
271
279
|
mpc.save
|
272
280
|
mpc=nil
|
273
281
|
mpc=TagLib::MPC::File.new(copy)
|
@@ -303,10 +311,10 @@ class RtaglibReadTestCase < Test::Unit::TestCase
|
|
303
311
|
|
304
312
|
def test_fieldmap
|
305
313
|
fl=TagLib::FieldListMap.new()
|
306
|
-
fl.insert("key",["val1","val2"])
|
307
|
-
assert_equal(["val1","val2"],fl["key"])
|
308
|
-
assert_nil(fl["2"])
|
309
|
-
fl.insert("key2",["val3","val4"])
|
314
|
+
fl.insert(TagLib::String.new("key"),["val1","val2"])
|
315
|
+
assert_equal(["val1","val2"],fl[TagLib::String.new("key")])
|
316
|
+
assert_nil(fl[TagLib::String.new("2")])
|
317
|
+
fl.insert(TagLib::String.new("key2"),["val3","val4"])
|
310
318
|
assert_equal({'key'=>["val1","val2"],"key2"=>["val3","val4"]}, fl.hash)
|
311
319
|
assert_equal(fl.size,fl.length)
|
312
320
|
end
|
@@ -317,13 +325,13 @@ class RtaglibReadTestCase < Test::Unit::TestCase
|
|
317
325
|
xc=flac_xiph.xiphComment
|
318
326
|
fl=xc.fieldListMap
|
319
327
|
fl.hash.each {|k,v|
|
320
|
-
xc.removeField(k)
|
328
|
+
xc.removeField(TagLib::String.new(k))
|
321
329
|
}
|
322
330
|
assert(xc.empty?)
|
323
|
-
xc.setTitle("T")
|
324
|
-
xc.setArtist("A")
|
325
|
-
xc.addField("c","C1",false)
|
326
|
-
xc.addField("c","C2",false)
|
331
|
+
xc.setTitle(TagLib::String.new("T"))
|
332
|
+
xc.setArtist(TagLib::String.new("A"))
|
333
|
+
xc.addField(TagLib::String.new("c"),TagLib::String.new("C1"),false)
|
334
|
+
xc.addField(TagLib::String.new("c"),TagLib::String.new("C2"),false)
|
327
335
|
expected={"TITLE"=>["T"],"ARTIST"=>["A"],"C"=>["C1","C2"]}
|
328
336
|
assert_equal(expected,fl.hash)
|
329
337
|
end
|
data/test/test_read.rb
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
|
2
|
+
$:.unshift(File.dirname(__FILE__)+"/../lib")
|
3
|
+
$:.unshift(File.dirname(__FILE__)+"/../ext")
|
4
|
+
require 'tagfile'
|
4
5
|
require 'test/unit'
|
5
6
|
class RTagFileReadTestCase < Test::Unit::TestCase
|
6
7
|
def setup
|
7
8
|
|
8
|
-
@file=::TagFile::File.new(File.dirname(__FILE__)+"
|
9
|
+
@file=::TagFile::File.new(File.dirname(__FILE__)+"/../data/440Hz-5sec.mp3")
|
9
10
|
end
|
10
11
|
def test_title()
|
11
12
|
assert_equal("440Hz Sine Wave",@file.title)
|
data/test/test_taglib.rb
CHANGED
@@ -1,17 +1,12 @@
|
|
1
1
|
#!/usr/bin/ruby
|
2
|
+
$:.unshift(File.dirname(__FILE__)+"/../lib")
|
3
|
+
require 'TagLib'
|
2
4
|
require 'tmpdir'
|
3
|
-
if File.exists? File.dirname(__FILE__)+"/TagLib.so"
|
4
|
-
require File.dirname(__FILE__)+'/TagLib'
|
5
|
-
BASE_DATA=File.dirname(__FILE__)+"/../test/data/"
|
6
|
-
else
|
7
|
-
require File.dirname(__FILE__)+'/../ext/taglib/TagLib'
|
8
|
-
BASE_DATA=File.dirname(__FILE__)+"/data/"
|
9
|
-
end
|
10
5
|
require 'fileutils'
|
11
6
|
require 'test/unit'
|
12
7
|
class RtaglibReadTestCase < Test::Unit::TestCase
|
13
8
|
def setup
|
14
|
-
@data_dir=
|
9
|
+
@data_dir=File.dirname(__FILE__)+"/../data/"
|
15
10
|
@temp_dir=Dir::tmpdir+"/rtaglib"
|
16
11
|
FileUtils.mkdir(@temp_dir) if !File.exists? @temp_dir
|
17
12
|
FileUtils.chmod(0777, @temp_dir)
|
@@ -80,7 +75,6 @@ class RtaglibReadTestCase < Test::Unit::TestCase
|
|
80
75
|
# - audioproperties: bitrate,channels,sampleRate and channels
|
81
76
|
# - isNull (null?)
|
82
77
|
def test_fileref
|
83
|
-
|
84
78
|
assert_equal(%w{ogg flac oga mp3 mpc wv spx tta}, TagLib::FileRef.defaultFileExtensions())
|
85
79
|
bitrate={'flac'=>168,'wv'=>235,'mp3'=>48,'mpc'=>41,'ogg'=>80}
|
86
80
|
channels={'flac'=>1,'wv'=>1,'mp3'=>1,'mpc'=>2,'ogg'=>1}
|
@@ -107,17 +101,17 @@ class RtaglibReadTestCase < Test::Unit::TestCase
|
|
107
101
|
mp3=@data_dir+"440Hz-5sec.mp3"
|
108
102
|
copy=get_copy(mp3)
|
109
103
|
fr2=TagLib::FileRef.new(copy)
|
110
|
-
fr2.tag().title="new title";
|
111
|
-
fr2.tag().artist="new artist";
|
112
|
-
fr2.tag().album="new album";
|
104
|
+
fr2.tag().title=TagLib::String.new("new title");
|
105
|
+
fr2.tag().artist=TagLib::String.new("new artist");
|
106
|
+
fr2.tag().album=TagLib::String.new("new album");
|
113
107
|
fr2.tag().year=2000;
|
114
108
|
fr2.tag().track=10;
|
115
|
-
fr2.tag().genre="Rock";
|
116
|
-
fr2.tag().comment="new comment";
|
109
|
+
fr2.tag().genre=TagLib::String.new("Rock");
|
110
|
+
fr2.tag().comment=TagLib::String.new("new comment");
|
117
111
|
|
118
112
|
fr2.save()
|
119
113
|
copy2=get_copy(copy)
|
120
|
-
fr2.tag().title="sfsd"
|
114
|
+
fr2.tag().title=TagLib::String.new("sfsd")
|
121
115
|
fr2.save()
|
122
116
|
fr3=TagLib::FileRef.new(copy2)
|
123
117
|
assert_equal("new title",fr3.tag.title)
|
@@ -139,7 +133,7 @@ class RtaglibReadTestCase < Test::Unit::TestCase
|
|
139
133
|
fr=TagLib::FileRef.new(copy)
|
140
134
|
utf8_string="大塚愛"
|
141
135
|
expected="\345\244\247\345\241\232\346\204\233"
|
142
|
-
fr.tag().title=utf8_string
|
136
|
+
fr.tag().title=TagLib::String.new(utf8_string)
|
143
137
|
fr.save
|
144
138
|
fr=nil
|
145
139
|
fr=TagLib::FileRef.new(copy)
|
@@ -149,18 +143,25 @@ class RtaglibReadTestCase < Test::Unit::TestCase
|
|
149
143
|
s=get_copy(mp3)
|
150
144
|
d=get_copy(mp3)
|
151
145
|
s_tag=TagLib::FileRef.new(s)
|
152
|
-
d_tag=TagLib::
|
146
|
+
d_tag=TagLib::MPEG::File.new(d)
|
153
147
|
artist="大塚愛"
|
154
148
|
# puts "artist = #{artist} => #{artist.inspect}"
|
155
149
|
assert_equal(artist,s_tag.tag.artist)
|
156
|
-
assert_equal(artist,d_tag.
|
157
|
-
d_tag.
|
158
|
-
assert_equal(d_tag.
|
150
|
+
assert_equal(artist,d_tag.ID3v2Tag.artist)
|
151
|
+
d_tag.ID3v2Tag.artist=TagLib::String.new(s_tag.tag.artist)
|
152
|
+
assert_equal(d_tag.ID3v2Tag.artist, s_tag.tag.artist)
|
159
153
|
d_tag.save
|
154
|
+
d_tag=nil
|
160
155
|
d_tag=TagLib::FileRef.new(d)
|
156
|
+
assert_equal(artist, d_tag.tag.artist)
|
161
157
|
assert_equal(d_tag.tag.artist, s_tag.tag.artist)
|
162
|
-
|
163
|
-
|
158
|
+
=begin
|
159
|
+
if(`which id3info`)
|
160
|
+
`id3info #{s}` =~ /^=== TPE1.+: (.+)$/
|
161
|
+
vc_out=$1
|
162
|
+
assert_equal(artist,vc_out,"id3info output (#{vc_out}) not equal to #{artist}")
|
163
|
+
end
|
164
|
+
=end
|
164
165
|
|
165
166
|
ogg=@data_dir+"test_jason.ogg"
|
166
167
|
s=get_copy(ogg)
|
@@ -168,15 +169,22 @@ class RtaglibReadTestCase < Test::Unit::TestCase
|
|
168
169
|
s_tag=TagLib::FileRef.new(s)
|
169
170
|
d_tag=TagLib::FileRef.new(d)
|
170
171
|
artist="大塚愛"
|
171
|
-
# puts "artist = #{artist} => #{artist.inspect}"
|
172
172
|
assert_equal(artist,s_tag.tag.artist)
|
173
173
|
assert_equal(artist,d_tag.tag.artist)
|
174
|
-
d_tag.tag.artist=s_tag.tag.artist
|
174
|
+
d_tag.tag.artist=TagLib::String.new(s_tag.tag.artist,TagLib::String::UTF8)
|
175
175
|
assert_equal(d_tag.tag.artist, s_tag.tag.artist)
|
176
176
|
d_tag.save
|
177
177
|
d_tag=TagLib::FileRef.new(d)
|
178
178
|
assert_equal(d_tag.tag.artist, s_tag.tag.artist)
|
179
|
-
|
179
|
+
if PLATFORM=~/mswin/
|
180
|
+
else
|
181
|
+
if(`which vorbiscomment`)
|
182
|
+
`vorbiscomment #{d}` =~ /^ARTIST=(.+)$/
|
183
|
+
vc_out=$1
|
184
|
+
assert_equal(artist,vc_out,"vorbiscomment output (#{vc_out}) not equal to #{artist}")
|
185
|
+
end
|
186
|
+
end
|
187
|
+
|
180
188
|
end
|
181
189
|
def test_flac
|
182
190
|
original=@data_dir+"440Hz-5sec.flac"
|
@@ -199,7 +207,7 @@ class RtaglibReadTestCase < Test::Unit::TestCase
|
|
199
207
|
assert_equal(16,ap.sampleWidth)
|
200
208
|
# comments
|
201
209
|
xiph=flac_xiph.xiphComment()
|
202
|
-
xiph.setTitle("xiph")
|
210
|
+
xiph.setTitle(TagLib::String.new("xiph"))
|
203
211
|
flac_xiph.save()
|
204
212
|
assert_equal("xiph",flac_xiph.tag().title)
|
205
213
|
assert_nil(flac_xiph.ID3v1Tag())
|
@@ -207,7 +215,7 @@ class RtaglibReadTestCase < Test::Unit::TestCase
|
|
207
215
|
|
208
216
|
id1=flac_id1.ID3v1Tag(true)
|
209
217
|
|
210
|
-
id1.setTitle("id1")
|
218
|
+
id1.setTitle(TagLib::String.new("id1"))
|
211
219
|
flac_id1.save()
|
212
220
|
assert_equal("id1",id1.title)
|
213
221
|
|
@@ -216,7 +224,7 @@ class RtaglibReadTestCase < Test::Unit::TestCase
|
|
216
224
|
|
217
225
|
|
218
226
|
id2=flac_id2.ID3v2Tag(true)
|
219
|
-
id2.setTitle("id2")
|
227
|
+
id2.setTitle(TagLib::String.new("id2"))
|
220
228
|
flac_id2.save()
|
221
229
|
assert_equal("id2",id2.title)
|
222
230
|
|
@@ -260,14 +268,14 @@ class RtaglibReadTestCase < Test::Unit::TestCase
|
|
260
268
|
original=@data_dir+"440Hz-5sec.mpc"
|
261
269
|
copy=get_copy(original)
|
262
270
|
fr=TagLib::FileRef.new(copy)
|
263
|
-
fr.tag.title="440Hz Sine Wave"
|
271
|
+
fr.tag.title=TagLib::String.new("440Hz Sine Wave")
|
264
272
|
fr.save
|
265
273
|
mpc=TagLib::MPC::File.new(copy)
|
266
274
|
%w{tag APETag}.each {|f|
|
267
275
|
assert_equal("440Hz Sine Wave",mpc.send(f).title, "#{f} tag")
|
268
276
|
}
|
269
277
|
mpc=TagLib::MPC::File.new(copy)
|
270
|
-
mpc.ID3v1Tag(true).title="440Hz Sine Wave - id3"
|
278
|
+
mpc.ID3v1Tag(true).title=TagLib::String.new("440Hz Sine Wave - id3")
|
271
279
|
mpc.save
|
272
280
|
mpc=nil
|
273
281
|
mpc=TagLib::MPC::File.new(copy)
|
@@ -303,10 +311,10 @@ class RtaglibReadTestCase < Test::Unit::TestCase
|
|
303
311
|
|
304
312
|
def test_fieldmap
|
305
313
|
fl=TagLib::FieldListMap.new()
|
306
|
-
fl.insert("key",["val1","val2"])
|
307
|
-
assert_equal(["val1","val2"],fl["key"])
|
308
|
-
assert_nil(fl["2"])
|
309
|
-
fl.insert("key2",["val3","val4"])
|
314
|
+
fl.insert(TagLib::String.new("key"),["val1","val2"])
|
315
|
+
assert_equal(["val1","val2"],fl[TagLib::String.new("key")])
|
316
|
+
assert_nil(fl[TagLib::String.new("2")])
|
317
|
+
fl.insert(TagLib::String.new("key2"),["val3","val4"])
|
310
318
|
assert_equal({'key'=>["val1","val2"],"key2"=>["val3","val4"]}, fl.hash)
|
311
319
|
assert_equal(fl.size,fl.length)
|
312
320
|
end
|
@@ -317,13 +325,13 @@ class RtaglibReadTestCase < Test::Unit::TestCase
|
|
317
325
|
xc=flac_xiph.xiphComment
|
318
326
|
fl=xc.fieldListMap
|
319
327
|
fl.hash.each {|k,v|
|
320
|
-
xc.removeField(k)
|
328
|
+
xc.removeField(TagLib::String.new(k))
|
321
329
|
}
|
322
330
|
assert(xc.empty?)
|
323
|
-
xc.setTitle("T")
|
324
|
-
xc.setArtist("A")
|
325
|
-
xc.addField("c","C1",false)
|
326
|
-
xc.addField("c","C2",false)
|
331
|
+
xc.setTitle(TagLib::String.new("T"))
|
332
|
+
xc.setArtist(TagLib::String.new("A"))
|
333
|
+
xc.addField(TagLib::String.new("c"),TagLib::String.new("C1"),false)
|
334
|
+
xc.addField(TagLib::String.new("c"),TagLib::String.new("C2"),false)
|
327
335
|
expected={"TITLE"=>["T"],"ARTIST"=>["A"],"C"=>["C1","C2"]}
|
328
336
|
assert_equal(expected,fl.hash)
|
329
337
|
end
|