id3 0.4.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/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>
|