id3 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE.html +146 -0
- data/README +23 -0
- data/docs/Class_AudioFile.html +110 -0
- data/docs/Class_Frame.html +125 -0
- data/docs/Class_Tag1.html +121 -0
- data/docs/Class_Tag2.html +167 -0
- data/docs/ID3-Standards/id3v2-00.html +1669 -0
- data/docs/ID3-Standards/id3v2-00.txt +1660 -0
- data/docs/ID3-Standards/id3v2.3.0.html +2033 -0
- data/docs/ID3-Standards/id3v2.3.0.txt +2025 -0
- data/docs/ID3-Standards/id3v2.4.0-changes.html +159 -0
- data/docs/ID3-Standards/id3v2.4.0-changes.txt +149 -0
- data/docs/ID3-Standards/id3v2.4.0-frames.html +1743 -0
- data/docs/ID3-Standards/id3v2.4.0-frames.txt +1732 -0
- data/docs/ID3-Standards/id3v2.4.0-structure.html +742 -0
- data/docs/ID3-Standards/id3v2.4.0-structure.txt +732 -0
- data/docs/ID3_comparison.html +2121 -0
- data/docs/ID3_comparison2.html +2043 -0
- data/docs/ID3v2_frames_comparison.html +2121 -0
- data/docs/ID3v2_frames_comparison.txt +197 -0
- data/docs/ID3v2_frames_overview.txt +60 -0
- data/docs/Module_ID3.html +146 -0
- data/docs/id3.html +245 -0
- data/docs/index.html +252 -0
- data/index.html +8 -0
- data/lib/hexdump.rb +113 -0
- data/lib/id3.rb +1177 -0
- data/lib/invert_hash.rb +105 -0
- metadata +75 -0
@@ -0,0 +1,197 @@
|
|
1
|
+
|
2
|
+
===========================
|
3
|
+
Comparison of ID3v2 Frames:
|
4
|
+
===========================
|
5
|
+
|
6
|
+
This document contains a side-by-side comparison over the frames used
|
7
|
+
in the 3 different versions of the informal ID3v2 standard:
|
8
|
+
v2.2.0, v2.3.0 and v2.4.0
|
9
|
+
|
10
|
+
This document is a compilation of information which is available in the
|
11
|
+
documents listed below. The original documents Copyright notices apply.
|
12
|
+
|
13
|
+
ID3 v1.0 : http://www.id3.org/id3v1.html
|
14
|
+
ID3 v1.1 : http://www.egr.uri.edu/~kovacsp/mp3/ID3-Tag.html
|
15
|
+
|
16
|
+
|
17
|
+
ID3v2 2.0: http://www.id3.org/id3v2-00.txt
|
18
|
+
ID3v2 3.0: http://www.id3.org/id3v2.3.0.txt
|
19
|
+
ID3v2 4.0: http://www.id3.org/id3v2.4.0-changes.txt
|
20
|
+
http://www.id3.org/id3v2.4.0-structure.txt
|
21
|
+
http://www.id3.org/id3v2.4.0-frames.txt
|
22
|
+
|
23
|
+
Please refer to the original documents listed above, for any information
|
24
|
+
regarding the ID3v2 standards.
|
25
|
+
|
26
|
+
|
27
|
+
Author: Tilo Sloboda, Thu, 17 Oct 2002 00:26:54 -0700
|
28
|
+
|
29
|
+
|
30
|
+
References:
|
31
|
+
id3lib-3.8.0 id3lib-3.8.0/include/id3/globals.h
|
32
|
+
|
33
|
+
NOTE: the symbolic names used in the leftmost column are derived
|
34
|
+
from the names used in id3lib-3.8.0
|
35
|
+
The symbolic name CRYPTEDMETA is not part of id3lib-3.8.0
|
36
|
+
|
37
|
+
Legend:
|
38
|
+
|
39
|
+
-- : depreciated frame
|
40
|
+
|
41
|
+
-> : replaced by (all frames listed before this one are replaced)
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
================================================================================
|
46
|
+
ID3v2 version
|
47
|
+
symbolic names 2.0 3.0 4.0 comments
|
48
|
+
================================================================================
|
49
|
+
|
50
|
+
CONTENTGROUP TT1 TIT1 TIT1 content group description
|
51
|
+
TITLE TT2 TIT2 TIT2 title/songname/content description
|
52
|
+
SUBTITLE TT3 TIT3 TIT3 subtitle/description refinement
|
53
|
+
|
54
|
+
LEADARTIST TP1 TPE1 TPE1 lead performer(s)/soloist(s)
|
55
|
+
BAND TP2 TPE2 TPE2 band/orchestra/accompaniment
|
56
|
+
CONDUCTOR TP3 TPE3 TPE3 conductor/performer refinement
|
57
|
+
MIXARTIST TP4 TPE4 TPE4 interpreted, remixed, modified by
|
58
|
+
|
59
|
+
COMPOSER TCM TCOM TCOM composer
|
60
|
+
LYRICIST TXT` TEXT TEXT lyricist/text writer
|
61
|
+
|
62
|
+
LANGUAGE TLA TLAN TLAN language(s)
|
63
|
+
CONTENTTYPE TCO TCON TCON content type
|
64
|
+
|
65
|
+
ALBUM TAL TALB TALB album/movie/show title
|
66
|
+
|
67
|
+
TRACKNUM TRK TRCK TRCK track number/position in set
|
68
|
+
PARTINSET TPA TPOS TPOS part of set
|
69
|
+
|
70
|
+
ISRC TRC TSRC TSRC international standard recording code
|
71
|
+
|
72
|
+
--------------------------------------------------------------------------------
|
73
|
+
DATE TDA TDAT date
|
74
|
+
YEAR TYE TYER year
|
75
|
+
TIME TIM TIME time
|
76
|
+
RECORDINGDATES TRD TRDA recording dates
|
77
|
+
RECORDINGTIME -> TDRC recording time
|
78
|
+
--------------------------------------------------------------------------------
|
79
|
+
ORIGYEAR TOR TORY original release year
|
80
|
+
ORIGRELEASETIME -> TDOR original release time
|
81
|
+
--------------------------------------------------------------------------------
|
82
|
+
|
83
|
+
BPM TBP TBPM TBPM beats per minute
|
84
|
+
|
85
|
+
MEDIATYPE TMT TMED TMED media type
|
86
|
+
FILETYPE TFT TFLT TFLT file type
|
87
|
+
COPYRIGHT TCR TCOP TCOP copyright message
|
88
|
+
|
89
|
+
PUBLISHER TPB TPUB TPUB pblisher
|
90
|
+
ENCODEDBY TEN TENC TENC encoded by
|
91
|
+
ENCODERSETTINGS TSS TSSE TSSE software/hardware + settings for encoding
|
92
|
+
|
93
|
+
SONGLEN TLE TLEN TLEN length (ms)
|
94
|
+
--------------------------------------------------------------------------------
|
95
|
+
SIZE TSI TSIZ -- size (bytes)
|
96
|
+
--------------------------------------------------------------------------------
|
97
|
+
|
98
|
+
PLAYLISTDELAY TDY TDLY TDLY playlist delay
|
99
|
+
INITIALKEY TKE TKEY TKEY initial key
|
100
|
+
|
101
|
+
ORIGALBUM TOT TOAL TOAL original album/movie/show title
|
102
|
+
ORIGFILENAME TOF TOFN TOFN original filename
|
103
|
+
ORIGARTIST TOA TOPE TOPE original artist(s)/performer(s)
|
104
|
+
ORIGLYRICIST TOL TOLY TOLY original lyricist(s)/text writer(s)
|
105
|
+
|
106
|
+
FILEOWNER TOWN TOWN file owner/licensee
|
107
|
+
NETRADIOSTATION TRSN TRSN internet radio station name
|
108
|
+
NETRADIOOWNER TRSO TRSO internet radio station owner
|
109
|
+
|
110
|
+
SETSUBTITLE TSST set subtitle
|
111
|
+
MOOD TMOO mood
|
112
|
+
PRODUCEDNOTICE TPRO produced notice
|
113
|
+
ENCODINGTIME TDEN encoding time
|
114
|
+
RELEASETIME TDRL release time
|
115
|
+
TAGGINGTIME TDTG tagging time
|
116
|
+
|
117
|
+
ALBUMSORTORDER TSOA album sort order
|
118
|
+
PERFORMERSORTORDER TSOP performer sort order
|
119
|
+
TITLESORTORDER TSOT title sort order
|
120
|
+
|
121
|
+
USERTEXT TXX TXXX TXXX user defined text information frame
|
122
|
+
|
123
|
+
|
124
|
+
WWWAUDIOFILE WAF WOAF WOAF official audio file webpage
|
125
|
+
WWWARTIST WAR WOAR WOAR official artist/performer webpage
|
126
|
+
WWWAUDIOSOURCE WAS WOAS WOAS official audion source webpage
|
127
|
+
WWWCOMMERCIALINFO WCM WCOM WCOM commercial information
|
128
|
+
WWWCOPYRIGHT WCP WCOP WCOP copyright/legal information
|
129
|
+
WWWPUBLISHER WPB WPUB WPUB publishers official webpage
|
130
|
+
|
131
|
+
WWWRADIOPAGE WORS WORS official internet radio station homepage
|
132
|
+
WWWPAYMENT WPAY WPAY payment
|
133
|
+
|
134
|
+
WWWUSER WXX WXXX WXXX user defined URL link frame
|
135
|
+
|
136
|
+
--------------------------------------------------------------------------------
|
137
|
+
INVOLVEDPEOPLE IPL IPLS involved people list
|
138
|
+
MUSICIANCREDITLIST -> TMCL musician credits list
|
139
|
+
INVOLVEDPEOPLE2 -> TIPL involved people list
|
140
|
+
--------------------------------------------------------------------------------
|
141
|
+
|
142
|
+
UNSYNCEDLYRICS ULT USLT USLT unsynchronised lyrics/text transcription
|
143
|
+
COMMENT COM COMM COMM comments
|
144
|
+
|
145
|
+
TERMSOFUSE USER USER terms of use
|
146
|
+
|
147
|
+
|
148
|
+
================================================================================
|
149
|
+
ID3v2 version
|
150
|
+
symbolic names 2.0 3.0 4.0 comments
|
151
|
+
================================================================================
|
152
|
+
|
153
|
+
CDID MCI MCDI MCDI music CD identifier
|
154
|
+
EVENTTIMING ETC ETCO ETCO event timing codes
|
155
|
+
MPEGLOOKUP MLL MLLT MLLT MPEG location lookup table
|
156
|
+
|
157
|
+
SYNCEDTEMPO STC SYTC SYTC synchronised tempo codes
|
158
|
+
SYNCEDLYRICS SLT SYLT SYLT synchronised lyrics/text
|
159
|
+
|
160
|
+
--------------------------------------------------------------------------------
|
161
|
+
VOLUMEADJ RVA RVAD relative volume adjustment
|
162
|
+
VOLUMEADJ2 -> RVA2 relative volume adjustment (2)
|
163
|
+
--------------------------------------------------------------------------------
|
164
|
+
EQUALIZATION EQU EQUA equalization
|
165
|
+
EQUALIZATION2 -> EQU2 equalization (2)
|
166
|
+
--------------------------------------------------------------------------------
|
167
|
+
|
168
|
+
REVERB REV RVRB RVRB reverb
|
169
|
+
PICTURE PIC APIC APIC attached picture
|
170
|
+
GENERALOBJECT GEO GEOB GEOB general encapsulated object
|
171
|
+
|
172
|
+
PLAYCOUNTER CNT PCNT PCNT play counter
|
173
|
+
POPULARIMETER POP POPM POPM popularimeter
|
174
|
+
|
175
|
+
BUFFERSIZE BUF RBUF RBUF recommended buffer size
|
176
|
+
|
177
|
+
CRYPTEDMETA CRM encrypted meta frame
|
178
|
+
AUDIOCRYPTO CRA AENC AENC audio encryption
|
179
|
+
|
180
|
+
LINKEDINFO LNK LINK LINK linked information
|
181
|
+
|
182
|
+
POSITIONSYNC POSS POSS position synchronisation frame
|
183
|
+
|
184
|
+
COMMERCIAL COMR COMR commercial frame
|
185
|
+
CRYPTOREG ENCR ENCR encryption method registration
|
186
|
+
GROUPINGREG GRID GRID group indentification registration
|
187
|
+
PRIVATE PRIV PRIV private frame
|
188
|
+
|
189
|
+
OWNERSHIP OWNE ownership frame
|
190
|
+
SIGNATURE SIGN signature frame
|
191
|
+
SEEKFRAME SEEK seek frame
|
192
|
+
AUDIOSEEKPOINT ASPI audio seek point index
|
193
|
+
|
194
|
+
================================================================================
|
195
|
+
ID3v2 version
|
196
|
+
symbolic names 2.0 3.0 4.0 comments
|
197
|
+
================================================================================
|
@@ -0,0 +1,60 @@
|
|
1
|
+
===========================
|
2
|
+
Overview of ID3v2 Frames:
|
3
|
+
===========================
|
4
|
+
|
5
|
+
|
6
|
+
This document contains a comparison over the frames used in the 3 different
|
7
|
+
versions of the informal ID3v2 standard: v2.2.0, v2.3.0 and v2.4.0
|
8
|
+
|
9
|
+
This document is a compilation of information which is available in the
|
10
|
+
documents listed below, and therefore does not have a Copyright by itself.
|
11
|
+
The original documents Copyright notices apply.
|
12
|
+
|
13
|
+
Content: Copyright (C) Martin Nilsson 1998, 2000
|
14
|
+
|
15
|
+
Please refer to the original documents listed below, for any information
|
16
|
+
regarding the ID3v2 standards.
|
17
|
+
|
18
|
+
|
19
|
+
|
20
|
+
Compiled by: Tilo Sloboda, Thu, 17 Oct 2002 00:26:54 -0700
|
21
|
+
|
22
|
+
|
23
|
+
Sources:
|
24
|
+
ID3v2 2.0: http://www.id3.org/id3v2-00.txt
|
25
|
+
ID3v2 3.0: http://www.id3.org/id3v2.3.0.txt
|
26
|
+
ID3v2 4.0: http://www.id3.org/id3v2.4.0-changes.txt
|
27
|
+
http://www.id3.org/id3v2.4.0-structure.txt
|
28
|
+
http://www.id3.org/id3v2.4.0-frames.txt
|
29
|
+
|
30
|
+
|
31
|
+
================================================================================
|
32
|
+
ID3V22_HEADER: "ID3" $02 $00 $C0 $7F $7F $7F $7F
|
33
|
+
|
34
|
+
ID3V22_FRAME_HEADER: "XXX" $SS $SS $SS
|
35
|
+
|
36
|
+
ID3V22_TEXT_FRAME1: $01 <textstring> ($00 (00))
|
37
|
+
|
38
|
+
ID3V22_TEXT_FRAME2: <textstring> ($00 (00))
|
39
|
+
|
40
|
+
ID3V22_TEXT_FRAME3: $01 <textstring> ($00 (00))
|
41
|
+
<textstring> ($00 (00))
|
42
|
+
|
43
|
+
ID3V22_BINARY_FRAME1: <binary data>
|
44
|
+
|
45
|
+
|
46
|
+
================================================================================
|
47
|
+
ID3V23_HEADER: "ID3" $03 $00 $C0 $7F $7F $7F $7F
|
48
|
+
|
49
|
+
ID3V23_FRAME_HEADER: "XXXX" $SS $SS $SS $SS $FF $FF
|
50
|
+
|
51
|
+
|
52
|
+
================================================================================
|
53
|
+
ID3V24_HEADER: "ID3" $04 $00 $F0 $7F $7F $7F $7F
|
54
|
+
|
55
|
+
ID3V24_FRAME_HEADER: "XXXX" $7F $7F $7F $7F $FF $FF
|
56
|
+
|
57
|
+
|
58
|
+
================================================================================
|
59
|
+
|
60
|
+
|
@@ -0,0 +1,146 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
2
|
+
<html><head>
|
3
|
+
|
4
|
+
|
5
|
+
|
6
|
+
|
7
|
+
|
8
|
+
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
|
9
|
+
<title>Module ID3</title>
|
10
|
+
|
11
|
+
</head>
|
12
|
+
<body><br>
|
13
|
+
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
<br>
|
20
|
+
|
21
|
+
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
|
26
|
+
<br>
|
27
|
+
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
<h3>Module ID3</h3>
|
34
|
+
|
35
|
+
|
36
|
+
This module models provides methods, constants and classes to handle
|
37
|
+
ID3 version 1.x and version 2.x tags for audio files.
|
38
|
+
<P>
|
39
|
+
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
<br>
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
|
50
|
+
|
51
|
+
<h4>
|
52
|
+
Provided Functionality:
|
53
|
+
</h4>
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
<ul>
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
|
64
|
+
|
65
|
+
|
66
|
+
<li>Reads and parses audio files for ID3-tags</li>
|
67
|
+
<li>Writes audio files and attaches ID3-tags to them # not yet implemented<br>
|
68
|
+
</li>
|
69
|
+
|
70
|
+
|
71
|
+
<li>Provides both high-level and low-level classes for handling files with ID3-tags<br>
|
72
|
+
</li>
|
73
|
+
</ul>
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
<h4><br>
|
80
|
+
</h4>
|
81
|
+
<h4>Module Constants:</h4>
|
82
|
+
|
83
|
+
<ul>
|
84
|
+
|
85
|
+
<li>
|
86
|
+
ID3::SUPPORTED_SYMBOLS[version]</li>
|
87
|
+
</ul>
|
88
|
+
|
89
|
+
|
90
|
+
<h4>Module Methods:</h4>
|
91
|
+
|
92
|
+
<ul>
|
93
|
+
|
94
|
+
<li>ID3.hasID3v1tag?(filename)</li>
|
95
|
+
<li>ID3.hasID3v2tag?(filename)</li>
|
96
|
+
<li>ID3.hasID3tag?(filename)</li>
|
97
|
+
<li>ID3.removeID3v1tag(filename)
|
98
|
+
# ID3v1 tags aren't really very useful - that's why there is a special
|
99
|
+
method to remove them<br>
|
100
|
+
</li>
|
101
|
+
</ul>
|
102
|
+
|
103
|
+
|
104
|
+
|
105
|
+
|
106
|
+
<h4>Classes:</h4>
|
107
|
+
|
108
|
+
|
109
|
+
|
110
|
+
|
111
|
+
|
112
|
+
|
113
|
+
<ul>
|
114
|
+
|
115
|
+
|
116
|
+
|
117
|
+
|
118
|
+
|
119
|
+
|
120
|
+
|
121
|
+
<li><a href="Class_AudioFile.html">ID3::AudioFile</a><br>
|
122
|
+
</li><li><a href="Class_Tag1.html">ID3::Tag1</a></li><li><a href="Class_Tag2.html">ID3::Tag2</a></li>
|
123
|
+
<li><a href="Class_Frame.html">ID3::Frame</a><br>
|
124
|
+
</li>
|
125
|
+
|
126
|
+
|
127
|
+
</ul>
|
128
|
+
|
129
|
+
<br>
|
130
|
+
|
131
|
+
|
132
|
+
|
133
|
+
|
134
|
+
<h4>Examples:</h4>
|
135
|
+
|
136
|
+
|
137
|
+
|
138
|
+
|
139
|
+
<pre> > require 'id3'<br> => true<br><br> > ID3.hasID3tag?("mp3/a.mp3")<br> => "1.0 2.3.0"<br><br> > ID3.hasID3tag?("mp3/b.mp3")<br> => "2.2.0"<br><br> > ID3.hasID3tag?("mp3/c.mp3")<br> => "1.1"<br><br> > ID3.hasID3tag?("mp3/d.mp3")<br> => "1.1 2.3.0"<br><br> > `cp mp3/d.mp3 mp3/delete.mp3`<br> => true<br><br> > ID3.hasID3tag?("mp3/delete.mp3")<br> => "1.1 2.3.0"<br> > ID3.removeID3v1tag("mp3/delete.mp3")<br> => true<br> > ID3.hasID3tag?("mp3/delete.mp3")<br> => "2.3.0"<br><br> > version = ID3.hasID3v2tag?("mp3/b.mp3")<br> => "2.3.0"<br><br> > ID3::SUPPORTED_SYMBOLS[version].keys<br> => ["PICTURE", "FILEOWNER", "CONDUCTOR", "EVENTTIMING", "DATE", "CRYPTOREG", "COMMENT", "POPULARIMETER", "GROUPINGREG", "PUBLISHER", "COPYRIGHT", "EQUALIZATION", "NETRADIOSTATION", "ORIGFILENAME", "WWWPUBLISHER", "BUFFERSIZE", "PLAYCOUNTER", "ISRC", "LYRICIST", "RECORDINGDATES", "SIZE", "INVOLVEDPEOPLE", "POSITIONSYNC", "WWWCOMMERCIALINFO", "PLAYLISTDELAY", "ORIGLYRICIST", "ALBUM", "SYNCEDLYRICS", "CONTENTTYPE", "SONGLEN", "MEDIATYPE", "WWWPAYMENT", "REVERB", "COMPOSER", "LINKEDINFO", "CONTENTGROUP", "BPM", "ORIGYEAR", "ORIGARTIST", "UNIQUEFILEID", "USERTEXT", "FILETYPE", "TIME", "PRIVATE", "SUBTITLE", "TERMSOFUSE", "BAND", "WWWCOPYRIGHT", "YEAR", "INITIALKEY", "SYNCEDTEMPO", "PARTINSET", "WWWUSER", "AUDIOCRYPTO", "MPEGLOOKUP", "VOLUMEADJ", "ORIGALBUM", "CDID", "ENCODEDBY", "WWWAUDIOFILE", "COMMERCIAL", "TITLE", "MIXARTIST", "NETRADIOOWNER", "TRACKNUM", "WWWAUDIOSOURCE", "GENERALOBJECT", "WWWRADIOPAGE", "LANGUAGE", "ENCODERSETTINGS", "WWWARTIST", "ARTIST", "UNSYNCEDLYRICS"]<br><br><br><br></pre>
|
140
|
+
|
141
|
+
|
142
|
+
|
143
|
+
|
144
|
+
|
145
|
+
|
146
|
+
</body></html>
|
data/docs/id3.html
ADDED
@@ -0,0 +1,245 @@
|
|
1
|
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
2
|
+
<html><head>
|
3
|
+
<title>id3.rb - ID3 Library for Ruby</title>
|
4
|
+
|
5
|
+
|
6
|
+
|
7
|
+
</head>
|
8
|
+
<body><br>
|
9
|
+
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
|
16
|
+
<center>
|
17
|
+
<h1><font color="#ff0000">Pre-Beta Release</font><br>
|
18
|
+
</h1>
|
19
|
+
<h1>id3.rb - ID3 Library for Ruby<br><font size="-3">by Tilo Sloboda <tools-NOSPAM@unixgods.org><br>
|
20
|
+
</font></h1>
|
21
|
+
|
22
|
+
</center>
|
23
|
+
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
|
28
|
+
<h3><font color="#ff0000">Feedback Needed</font></h3>
|
29
|
+
|
30
|
+
|
31
|
+
|
32
|
+
Currently I would like to get feedback on the interface, classes, methods provided by the ID3-library.
|
33
|
+
<p>
|
34
|
+
Please send me <a href="mailto:tools-NOSPAM@unixgods.org">email</a> and let me know what you think..<br>
|
35
|
+
</p>
|
36
|
+
|
37
|
+
<p><br>
|
38
|
+
<br>
|
39
|
+
</p>
|
40
|
+
|
41
|
+
<h3>Introduction</h3>
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
|
48
|
+
The aim of this ID3 library for Ruby is to do a full <b>native Ruby
|
49
|
+
implementation </b>of ID3 version 1.x and version 2.x , without any use of
|
50
|
+
binary libraries, which other implementations need to have installed
|
51
|
+
separately. e.g. other implementations just act as a
|
52
|
+
wrapper around a binary library - I beleive that this is not as
|
53
|
+
portable as a Ruby library should be.<br>
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
Another aim of this implementation is to provide the user with a
|
60
|
+
uniform API, which tries to hide the details of the different ID3 standards,
|
61
|
+
therefore making it (hopefully) easier to use.<br>
|
62
|
+
|
63
|
+
<br>
|
64
|
+
|
65
|
+
|
66
|
+
<h3>Supported Versions</h3>
|
67
|
+
|
68
|
+
|
69
|
+
ID3 v1.0 , v1.1 , v2.2.x , v2.3.x and v2.4.x<br>
|
70
|
+
|
71
|
+
|
72
|
+
<br>
|
73
|
+
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
|
78
|
+
<h3>ID3 Library Overview</h3>
|
79
|
+
|
80
|
+
|
81
|
+
|
82
|
+
|
83
|
+
|
84
|
+
The library provides the <a href="Module_ID3.html">Module ID3</a> , which provides some module methods, as well as three simple classes to the user:
|
85
|
+
<a href="Class_AudioFile.html">AudioFile</a>, <a href="Class_Tag1.html">Tag1</a> and <a href="Class_Tag2.html">Tag2</a>, to handle files which contain ID3-tags.<br>
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
<br>
|
90
|
+
|
91
|
+
|
92
|
+
|
93
|
+
The ID3-standards are overloaded with specially coded frames, which are different for each of the binary frames<font color="#ff0000"><sup>1</sup></font>.This
|
94
|
+
library does not attempt to fully decode each and every frame type, but
|
95
|
+
rather deals with the main frame types, such as text and web-frames,
|
96
|
+
and in case of the binary frames hands the contents of the frames to
|
97
|
+
the user verbatim. If the user chooses to modify or write any of
|
98
|
+
those binary frames, the user is expected to know what s/he is doing,
|
99
|
+
and how to code/de-code the binary contents, otherwise expect:
|
100
|
+
"garbage in --> crash!" of the application which tries to make
|
101
|
+
sense of such frames later.. However, if an ID3-tag contains
|
102
|
+
binary frames, the user can expect that those are handed verbatim to
|
103
|
+
the user and that it is safe to write them back 'as is' to a
|
104
|
+
new/modified ID3-tag of the same audio file. In some cases the user may
|
105
|
+
choose to delete some of the binary frames, that should be possible
|
106
|
+
without problems. <br>
|
107
|
+
|
108
|
+
|
109
|
+
|
110
|
+
|
111
|
+
|
112
|
+
<br>
|
113
|
+
|
114
|
+
|
115
|
+
|
116
|
+
|
117
|
+
<h3>Download</h3>
|
118
|
+
|
119
|
+
|
120
|
+
<br>
|
121
|
+
|
122
|
+
|
123
|
+
<br>
|
124
|
+
|
125
|
+
|
126
|
+
<h3>Known Problems</h3>
|
127
|
+
|
128
|
+
|
129
|
+
Some ID3v2 frames may appear more than once in an ID3-tag! e.g.
|
130
|
+
TXXX and WXXX. I haven't come across any actual examples for this,
|
131
|
+
therefore didn't see the necessity to implement this.
|
132
|
+
Currently there is no support for this. If you come across such
|
133
|
+
cases, please let me know.. <br>
|
134
|
+
|
135
|
+
|
136
|
+
<br>
|
137
|
+
|
138
|
+
|
139
|
+
|
140
|
+
|
141
|
+
|
142
|
+
|
143
|
+
<h3>
|
144
|
+
|
145
|
+
|
146
|
+
Documentation</h3>
|
147
|
+
|
148
|
+
The main id3.rb documentation is here.<br>
|
149
|
+
|
150
|
+
|
151
|
+
<br>
|
152
|
+
|
153
|
+
|
154
|
+
I complied a comparison between the different <a href="http://www.unixgods.org/%7Etilo/ID3/docs/ID3_comparison.html">ID3-versions</a>, I hope it's helpful.<br>
|
155
|
+
|
156
|
+
|
157
|
+
<br>
|
158
|
+
|
159
|
+
|
160
|
+
<h3>Disclaimer / Author's Rant</h3>
|
161
|
+
|
162
|
+
|
163
|
+
Please feel free to send me "constructive feedback"
|
164
|
+
anytime. If you're missing functionality, or you think
|
165
|
+
something should be done different, please let me know! I'm always open
|
166
|
+
for suggestions. Thank you!<br>
|
167
|
+
|
168
|
+
|
169
|
+
<br>
|
170
|
+
|
171
|
+
|
172
|
+
IMHO the ID3 version2.x standards are pretty pretty messy... they are
|
173
|
+
bloated and overloaded with useless frame-types and
|
174
|
+
side-effects... The worst is ID3 v2.4.0! I haven't
|
175
|
+
seen any actual v2.4.x tags yet, if you have examples, please send them
|
176
|
+
to me. I suspect that the reason why I didn't find any v2.4.x tags
|
177
|
+
anywhere is because the "2.4.x standard" is just too complicated, so
|
178
|
+
nobody is using it.. proove me wrong and email examples to me ;-)<br>
|
179
|
+
|
180
|
+
|
181
|
+
<br>
|
182
|
+
|
183
|
+
|
184
|
+
Last not least: Please don't complain about the "quality" of the
|
185
|
+
ID3-standard to me.. I'm certainly most sympathetic with your pain, but
|
186
|
+
not the right person to complain to.. ;-)<br>
|
187
|
+
|
188
|
+
|
189
|
+
|
190
|
+
|
191
|
+
<br>
|
192
|
+
|
193
|
+
|
194
|
+
|
195
|
+
|
196
|
+
<h3>License</h3>
|
197
|
+
|
198
|
+
|
199
|
+
|
200
|
+
|
201
|
+
Freely available under the terms of the OpenSource "Artistic License" in combination with the Addendum A (below)<br>
|
202
|
+
|
203
|
+
|
204
|
+
|
205
|
+
|
206
|
+
In case you did not get a copy of the license along with the software,
|
207
|
+
it is also available at:
|
208
|
+
http://www.unixgods.org/~tilo/artistic-license.html<br>
|
209
|
+
|
210
|
+
|
211
|
+
|
212
|
+
|
213
|
+
<p>
|
214
|
+
<font color="red">
|
215
|
+
|
216
|
+
Addendum A. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE
|
217
|
+
DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
218
|
+
</font></p>
|
219
|
+
|
220
|
+
|
221
|
+
|
222
|
+
<p>
|
223
|
+
<font color="red">IN NO EVENT WILL THE COPYRIGHT HOLDERS BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
|
224
|
+
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO
|
225
|
+
LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR USELESS OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF
|
226
|
+
THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF THE COPYRIGHT HOLDERS OR OTHER PARTY HAS BEEN ADVISED OF
|
227
|
+
THE POSSIBILITY OF SUCH DAMAGES.<br>
|
228
|
+
</font></p>
|
229
|
+
|
230
|
+
|
231
|
+
|
232
|
+
<p>_________<br><font color="#ff0000">
|
233
|
+
1</font>: who came up with all those special frame types? Cheez! KISS! (Keep It Simple, Stupid!)<br>
|
234
|
+
|
235
|
+
</p>
|
236
|
+
|
237
|
+
|
238
|
+
|
239
|
+
<p>
|
240
|
+
|
241
|
+
</p>
|
242
|
+
|
243
|
+
|
244
|
+
|
245
|
+
</body></html>
|