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 ADDED
@@ -0,0 +1,146 @@
1
+ <!doctype HTML public "-//W3O//DTD W3 HTML 3.2//EN">
2
+ <HTML>
3
+ <HEAD>
4
+ <TITLE>The Artistic License</TITLE>
5
+ </HEAD>
6
+ <BODY TEXT="#000000" BACKGROUND="osbak.png" BGCOLOR="#FFFFFF">
7
+ <TABLE WIDTH=100% HEIGHT=100% cellpadding=0 border=0>
8
+ <tr>
9
+ <td width=50 valign=top align=left>
10
+ <IMG src="osside.png">
11
+ </td>
12
+ <td>
13
+
14
+ <H1 ALIGN=CENTER><FONT COLOR=#ff0000>Artistic License plus Addendum A</FONT></H1>
15
+
16
+ <center>The "Artistic License"</center><p>
17
+ <center>Preamble</center><p>
18
+
19
+ The intent of this document is to state the conditions under which a
20
+ Package may be copied, such that the Copyright Holder maintains some
21
+ semblance of artistic control over the development of the package,
22
+ while giving the users of the package the right to use and distribute
23
+ the Package in a more-or-less customary fashion, plus the right to make
24
+ reasonable modifications.<p>
25
+
26
+ Definitions:<P>
27
+
28
+ <UL>
29
+ <LI> "Package" refers to the collection of files distributed by the
30
+ Copyright Holder, and derivatives of that collection of files
31
+ created through textual modification.<P>
32
+
33
+ <LI> "Standard Version" refers to such a Package if it has not been
34
+ modified, or has been modified in accordance with the wishes
35
+ of the Copyright Holder.<P>
36
+
37
+ <LI> "Copyright Holder" is whoever is named in the copyright or
38
+ copyrights for the package.<P>
39
+
40
+ <LI> "You" is you, if you're thinking about copying or distributing
41
+ this Package.<P>
42
+
43
+ <LI> "Reasonable copying fee" is whatever you can justify on the
44
+ basis of media cost, duplication charges, time of people involved,
45
+ and so on. (You will not be required to justify it to the
46
+ Copyright Holder, but only to the computing community at large
47
+ as a market that must bear the fee.)<P>
48
+
49
+ <LI> "Freely Available" means that no fee is charged for the item
50
+ itself, though there may be fees involved in handling the item.
51
+ It also means that recipients of the item may redistribute it
52
+ under the same conditions they received it.<P>
53
+ </UL>
54
+
55
+ 1. You may make and give away verbatim copies of the source form of the
56
+ Standard Version of this Package without restriction, provided that you
57
+ duplicate all of the original copyright notices and associated disclaimers.<P>
58
+
59
+ 2. You may apply bug fixes, portability fixes and other modifications
60
+ derived from the Public Domain or from the Copyright Holder. A Package
61
+ modified in such a way shall still be considered the Standard Version.<P>
62
+
63
+ 3. You may otherwise modify your copy of this Package in any way, provided
64
+ that you insert a prominent notice in each changed file stating how and
65
+ when you changed that file, and provided that you do at least ONE of the
66
+ following:<P>
67
+
68
+ <BLOCKQUOTE>
69
+ a) place your modifications in the Public Domain or otherwise make them
70
+ Freely Available, such as by posting said modifications to Usenet or
71
+ an equivalent medium, or placing the modifications on a major archive
72
+ site such as ftp.uu.net, or by allowing the Copyright Holder to include
73
+ your modifications in the Standard Version of the Package.<P>
74
+
75
+ b) use the modified Package only within your corporation or organization.<P>
76
+
77
+ c) rename any non-standard executables so the names do not conflict
78
+ with standard executables, which must also be provided, and provide
79
+ a separate manual page for each non-standard executable that clearly
80
+ documents how it differs from the Standard Version.<P>
81
+
82
+ d) make other distribution arrangements with the Copyright Holder.<P>
83
+ </BLOCKQUOTE>
84
+
85
+ 4. You may distribute the programs of this Package in object code or
86
+ executable form, provided that you do at least ONE of the following:<P>
87
+
88
+ <BLOCKQUOTE>
89
+ a) distribute a Standard Version of the executables and library files,
90
+ together with instructions (in the manual page or equivalent) on where
91
+ to get the Standard Version.<P>
92
+
93
+ b) accompany the distribution with the machine-readable source of
94
+ the Package with your modifications.<P>
95
+
96
+ c) accompany any non-standard executables with their corresponding
97
+ Standard Version executables, giving the non-standard executables
98
+ non-standard names, and clearly documenting the differences in manual
99
+ pages (or equivalent), together with instructions on where to get
100
+ the Standard Version.<P>
101
+
102
+ d) make other distribution arrangements with the Copyright Holder.<P>
103
+ </BLOCKQUOTE>
104
+
105
+ 5. You may charge a reasonable copying fee for any distribution of this
106
+ Package. You may charge any fee you choose for support of this Package.
107
+ You may not charge a fee for this Package itself. However,
108
+ you may distribute this Package in aggregate with other (possibly
109
+ commercial) programs as part of a larger (possibly commercial) software
110
+ distribution provided that you do not advertise this Package as a
111
+ product of your own.<P>
112
+
113
+ 6. The scripts and library files supplied as input to or produced as
114
+ output from the programs of this Package do not automatically fall
115
+ under the copyright of this Package, but belong to whomever generated
116
+ them, and may be sold commercially, and may be aggregated with this
117
+ Package.<P>
118
+
119
+ 7. C or perl subroutines supplied by you and linked into this Package
120
+ shall not be considered part of this Package.<P>
121
+
122
+ 8. The name of the Copyright Holder may not be used to endorse or promote
123
+ products derived from this software without specific prior written permission.<P>
124
+
125
+ 9. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
126
+ IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
127
+ WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.<P>
128
+
129
+ <font color=red>
130
+ Addendum A. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE
131
+ DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
132
+ <P>
133
+ IN NO EVENT WILL THE COPYRIGHT HOLDERS BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
134
+ CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO
135
+ LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR USELESS OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF
136
+ THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF THE COPYRIGHT HOLDERS OR OTHER PARTY HAS BEEN ADVISED OF
137
+ THE POSSIBILITY OF SUCH DAMAGES.
138
+ </font>
139
+
140
+ <center>The End</center>
141
+ </table>
142
+ </td>
143
+ </table>
144
+ </BODY>
145
+ </HTML>
146
+
data/README ADDED
@@ -0,0 +1,23 @@
1
+
2
+ This is a BETA-RELEASE of a native Ruby ID3-library.
3
+
4
+ Author: Tilo Sloboda <tools-NOSPAM@unixgods.org>
5
+
6
+ Home Page: http://www.unixgods.org/~tilo/Ruby/ID3
7
+
8
+ License: http://www.unixgods.org/~tilo/artistic-license.html
9
+
10
+ MD5 Sums:
11
+
12
+ 400ccf29d29da1d203f38657a18fca3e id3-0.4.0.gem
13
+ 0ce2f2e3a2e57aba92ce72ec300ffa76 id3-0.4.0.tar.gz
14
+
15
+
16
+ NOTE:
17
+
18
+ This is a beta release.. so, if you think there are some problems,
19
+ errors, inconsistencies, or there is something missing, please contact
20
+ the author - THANK YOU! :-)
21
+
22
+
23
+
@@ -0,0 +1,110 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
+ <html><head>
3
+
4
+
5
+
6
+ <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
7
+ <title>Class AudioFile</title>
8
+
9
+
10
+
11
+ </head><body><br>
12
+
13
+
14
+
15
+
16
+ <br>
17
+
18
+
19
+
20
+
21
+ <br>
22
+
23
+
24
+
25
+
26
+ <h3>class ID3::AudioFile</h3>
27
+
28
+
29
+
30
+ ID3-tags can be attached to more than just MP3-files, that's why
31
+ AudioFile has no knowledge about the MP3-standard.&nbsp; If you want to
32
+ include it, you can derive your own class and add that functionality.<br>
33
+
34
+
35
+
36
+ <br>
37
+
38
+
39
+
40
+ <h4>
41
+ Provided Functionality:
42
+ </h4>
43
+
44
+
45
+
46
+ <ul>
47
+
48
+
49
+
50
+
51
+ <li>Reads and parses audio files for ID3-tags</li>
52
+ <li>Writes audio files and attaches ID3-tags to them</li><li>Keeps track of complete path name to audio file</li><li>Keeps track of where the raw audio portion of an audio-file is<br>
53
+ </li>
54
+
55
+
56
+ <li>Top-level interface to ID3-tags</li>
57
+ </ul>
58
+
59
+
60
+
61
+ <h4>Instance Variables:</h4>
62
+
63
+
64
+
65
+ <ul>
66
+
67
+
68
+
69
+ <li>pwd , filename&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #
70
+ working directory and path/name of the file when it was opened..</li>
71
+ <li>dirname, basename&nbsp;&nbsp;&nbsp; # absolute dirname and basename of the file<br>
72
+ </li>
73
+ <li>tagID3v1 , tagID3v2&nbsp;&nbsp;&nbsp;&nbsp; # the ID3-tags , if not present these are nil<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
74
+ # should they be renamed to tag1 and tag2 ? <br>
75
+ </li>
76
+ </ul>
77
+
78
+
79
+
80
+ <br>
81
+
82
+
83
+
84
+ <h4>Instance Methods:</h4>
85
+
86
+
87
+ <ul>
88
+
89
+
90
+ <li>new</li>
91
+ <li>audioMD5sum</li>
92
+ <li>writeMD5sum</li><li>verifyMD5sum<br>
93
+ </li>
94
+ <li>version / versions<br>
95
+ </li>
96
+
97
+ </ul>
98
+
99
+
100
+ <br>
101
+
102
+
103
+ <h4>Examples:</h4>
104
+
105
+ <pre><br> &gt; a = ID3::AudioFile.new("mp3/a.mp3")<br> =&gt; #&lt;ID3::AudioFile:0x402714ec @pwd="/home/tilo/Ruby/ID3", @tagID3v1={"ARTIST"=&gt;"Wolfsheim", "ALBUM"=&gt;"", "TITLE"=&gt;"Sleep Somehow", "YEAR"=&gt;"", "GENREID"=&gt;"255", "COMMENT"=&gt;""}, @audioMD5sum=nil, @filename="mp3/a.mp3", @basename="a.mp3", @audioEndX=1433600, @dirname="/home/tilo/Ruby/ID3/mp3", @audioStartX=1418, @tagID3v2={"ARTIST"=&gt;{"encoding"=&gt;0, "text"=&gt;"Wolfsheim"}, "SONGLEN"=&gt;{"encoding"=&gt;0, "text"=&gt;"193567"}, "CONTENTTYPE"=&gt;{"encoding"=&gt;0, "text"=&gt;"newage"}, "ALBUM"=&gt;{"encoding"=&gt;0, "text"=&gt;"Spectators"}, "TRACKNUM"=&gt;{"encoding"=&gt;0, "text"=&gt;"6"}, "TITLE"=&gt;{"encoding"=&gt;0, "text"=&gt;"Sleep Somehow"}, "MEDIATYPE"=&gt;{"encoding"=&gt;0, "text"=&gt;"DIG"}}&gt;<br><br> &gt; a.version<br> =&gt; "1.0 2.3.0"<br><br> &gt; a.tagID3v1<br> =&gt; {"ARTIST"=&gt;"Wolfsheim", "ALBUM"=&gt;"", "TITLE"=&gt;"Sleep Somehow", "YEAR"=&gt;"", "GENREID"=&gt;"255", "COMMENT"=&gt;""}<br><br> &gt; a.tagID3v2<br> =&gt; {"ARTIST"=&gt;{"encoding"=&gt;0, "text"=&gt;"Wolfsheim"}, "SONGLEN"=&gt;{"encoding"=&gt;0, "text"=&gt;"193567"}, "CONTENTTYPE"=&gt;{"encoding"=&gt;0, "text"=&gt;"newage"}, "ALBUM"=&gt;{"encoding"=&gt;0, "text"=&gt;"Spectators"}, "TRACKNUM"=&gt;{"encoding"=&gt;0, "text"=&gt;"6"}, "TITLE"=&gt;{"encoding"=&gt;0, "text"=&gt;"Sleep Somehow"}, "MEDIATYPE"=&gt;{"encoding"=&gt;0, "text"=&gt;"DIG"}}<br><br><br></pre>
106
+
107
+
108
+
109
+
110
+ </body></html>
@@ -0,0 +1,125 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
+ <html><head>
3
+
4
+
5
+
6
+ <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
7
+ <title>Class ID3::Frame</title>
8
+
9
+ </head>
10
+ <body><br>
11
+
12
+
13
+
14
+
15
+ <br>
16
+
17
+
18
+
19
+
20
+ <br>
21
+
22
+
23
+
24
+
25
+ <h3>class ID3::Frame</h3>
26
+
27
+ This class models ID3-Frames independent of
28
+ the D3-version, e.g. 2.2.0, 2.3.0, 2.4.0&nbsp;&nbsp;&nbsp; This module
29
+ tries to hide all the ugly details about the Frame-internals and how to
30
+ parse each Frame-type for each ID3-version.<br>
31
+
32
+
33
+ <br>
34
+
35
+
36
+ The user doesn't need to use any of the methods provided by this
37
+ module, but s/he can access the Instance Variables to examine each
38
+ Frame.<br>
39
+
40
+
41
+ <br>
42
+
43
+
44
+ Each Frame is organized as a "ordered Hash" , to preserve the order of it's fields, as they are defined by the ID3-standard<br>
45
+
46
+ <br>
47
+
48
+ Because the names of the ID3-Frames vary between the ID3-versions, we are using a <a href="ID3_comparison.html">symbolic name to reference the Frame</a>, not it's real (short) name.<br>
49
+
50
+
51
+
52
+ <h4>
53
+ Provided Functionality:
54
+ </h4>
55
+
56
+
57
+
58
+ <ul>
59
+
60
+
61
+
62
+
63
+ <li>Reads and parses a frame upon initialization<br>
64
+ </li>
65
+ <li>Dumps a frame raw into a string</li><li>Low-level interface to ID3-Frames</li>
66
+ <li>Not all Frame-types are fully parsed, but can be accessed/copied/dumped as raw<br>
67
+ </li>
68
+ </ul>
69
+
70
+
71
+
72
+ <h4>Instance Variables:</h4>
73
+
74
+
75
+ <ul>
76
+
77
+
78
+ <li>name</li>
79
+ <li>version</li>
80
+ <li>raw<br>
81
+ </li>
82
+ <li>rawdata</li>
83
+ <li>rawheader</li>
84
+ <li>rawflags&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # if version is larger than 2.2.x</li>
85
+ <li>flags&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
86
+ # Hash with the parsed flags, if version &gt; 2.2.x<br>
87
+ </li>
88
+ <li>headerStartX</li>
89
+ <li>dataStartX</li>
90
+ </ul>
91
+
92
+
93
+ <br>
94
+
95
+
96
+
97
+
98
+ <h4>Instance Methods:</h4>
99
+
100
+
101
+ <ul>
102
+
103
+
104
+ <li>initialize&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
105
+ # does all the hard work.. parses the Frame, defines parse/dump-methods<br>
106
+ </li><li>parse&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
107
+ # defined during run-time, depending on the particular Frame-Type<br>
108
+ </li>
109
+ <li>dump&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
110
+ # defined during run-time, depending on the particular Frame-Type<br>
111
+ </li>
112
+ </ul>
113
+
114
+ <br>
115
+
116
+
117
+ <h4>Examples:</h4>
118
+
119
+
120
+ <pre> &gt; require 'id3'<br> =&gt; true<br><br> # here we're just creating an ID3::Tag2 object and read-in an mp3-file<br><br> &gt; t = ID3::Tag2.new<br> =&gt; {}<br> &gt; t.read("mp3/b.mp3")<br> =&gt; true<br> &gt; t.version<br> =&gt; "2.2.0"<br> &gt; t.keys<br> =&gt; ["ARTIST", "SONGLEN", "CONTENTTYPE", "ALBUM", "ENCODEDBY", "TRACKNUM", "TITLE", "YEAR", "PICTURE", "MEDIATYPE", "COMMENT"]<br><br> # NOW let's look at the internals of a Frame:<br><br> &gt; t['ARTIST']<br> =&gt; {"encoding"=&gt;0, "text"=&gt;"Juno reactor"}<br><br> &gt; t['ARTIST'].keys<br> =&gt; ["encoding", "text"]<br><br> &gt; t['ARTIST'].order<br> =&gt; ["encoding", "text"]<br><br> # PLEASE NOTE that the author does not have expertise with other than western character encodings..<br> # I'd like to hear some input how this can be implemented better.. and if/how Ruby can detect<br> # the character encoding of a string which was provided by the user<br><br> &gt; t['ARTIST']['text'] = "Juno Reactor"<br> =&gt; "Juno Reactor"<br><br> &gt; t['ARTIST'].raw<br> =&gt; "TP1\000\000\016\000Juno reactor\000"<br><br> &gt; t['ARTIST'].rawheader<br> =&gt; "TP1\000\000\016"<br><br> &gt; t['ARTIST'].rawdata<br> =&gt; "\000Juno reactor\000"<br><br> # a lot of the really useful Frame types are text frames..<br><br> &gt; t['CONTENTTYPE']<br> =&gt; {"encoding"=&gt;0, "text"=&gt;"Electronica/Dance"}<br><br> &gt; t['YEAR']<br> =&gt; {"encoding"=&gt;0, "text"=&gt;"1997"}<br><br> &gt; t['SONGLEN']<br> =&gt; {"encoding"=&gt;0, "text"=&gt;"258847"}<br><br><br></pre>
121
+
122
+
123
+
124
+
125
+ </body></html>
@@ -0,0 +1,121 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
+ <html><head>
3
+
4
+
5
+
6
+ <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
7
+ <title>Class ID3::Tag1</title>
8
+
9
+ </head>
10
+ <body><br>
11
+
12
+
13
+
14
+
15
+ <br>
16
+
17
+
18
+
19
+
20
+ <br>
21
+
22
+
23
+
24
+
25
+ <h3>class ID3::Tag1</h3>
26
+
27
+
28
+ This class models version 1.x ID3-tags, and is mostly for backwards
29
+ compatibility.&nbsp;&nbsp; It's recommended to use version 2.x
30
+ ID3-tags, because they don't truncate the values, and give more
31
+ flexibility.<br>
32
+
33
+
34
+
35
+ <br>
36
+
37
+
38
+
39
+ <h4>
40
+ Provided Functionality:
41
+ </h4>
42
+
43
+
44
+
45
+ <ul>
46
+
47
+
48
+
49
+
50
+ <li>Reads and parses audio files for ID3-tags</li>
51
+ <li>Writes audio files and attaches ID3-tags to them&nbsp;&nbsp;&nbsp; # not yet implemented<br>
52
+ </li>
53
+
54
+
55
+ <li>Low-level interface to ID3-tags</li>
56
+ </ul>
57
+
58
+
59
+
60
+ <h4>Instance Variables:</h4>
61
+
62
+
63
+
64
+ <ul>
65
+
66
+
67
+
68
+
69
+
70
+ <li>version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # either nil, or a string wtih the version number</li><li>raw&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
71
+ # string containing the raw ID3 version 1 tag<br>
72
+ </li>
73
+
74
+ </ul>
75
+
76
+
77
+
78
+
79
+
80
+ <h4>Instance Methods:</h4>
81
+
82
+
83
+ <ul>
84
+
85
+
86
+ <li>new</li>
87
+ <li>read<br>
88
+ </li>
89
+ <li>write&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # not yet implemented..</li>
90
+ <li>dump<br>
91
+ </li>
92
+
93
+ </ul>
94
+
95
+
96
+ <br>
97
+
98
+
99
+
100
+
101
+ <h4>Hash-like Access:</h4>
102
+
103
+
104
+ When accessing a Tag1 object wtih the Hash syntax, you can access the
105
+ actual data in the tag. Please note that there is only a very limited
106
+ number of valid keys, and that the class does not allow "inventing" new
107
+ keys (as those would not be defined in the ID3 definition)<br>
108
+
109
+
110
+ <br>
111
+
112
+
113
+ <h4>Examples:</h4>
114
+
115
+
116
+ <pre> &gt; require 'id3'<br> =&gt; true<br><br> &gt; t = ID3::Tag1.new<br> =&gt; {}<br><br> &gt; t.read('mp3/d.mp3')<br> =&gt; true<br><br> &gt; t.version<br> =&gt; "1.1"<br><br> &gt; t<br> =&gt; {"ARTIST"=&gt;"Beatles, The", "ALBUM"=&gt;"Abbey Road", "TRACKNUM"=&gt;"1", "TITLE"=&gt;"Come Together", "YEAR"=&gt;"2002", "GENREID"=&gt;"12", "COMMENT"=&gt;"Provided by Vlet"}<br><br> &gt; &gt; t['ALBUM']<br> =&gt; "Abbey Road"<br><br> &gt; t['ARTIST']<br> =&gt; "Beatles, The"<br><br> &gt; t['ARTIST'] = "The Beatles"<br> =&gt; "The Beatles"<br><br> <b># PLEASE NOTE that the raw tag is read only, and reflects the data that was read from the file!</b><br> <br> &gt; t.raw<br> =&gt; "TAGCome Together\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000Beatles, The\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000Abbey Road\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0002002Provided by Vlet\000\000\000\000\000\000\000\000\000\000\000\000\000\001\f"<br><br> &gt; t.raw.hexdump<br><br> index 0 1 2 3 4 5 6 7 8 9 A B C D E F<br><br> 00000000 54414743 6f6d6520 546f6765 74686572 TAGCome Together<br> 00000010 00000000 00000000 00000000 00000000 ................<br> 00000020 00426561 746c6573 2c205468 65000000 .Beatles, The...<br> 00000030 00000000 00000000 00000000 00000041 ...............A<br> 00000040 62626579 20526f61 64000000 00000000 bbey Road.......<br> 00000050 00000000 00000000 00000000 00323030 .............200<br> 00000060 3250726f 76696465 64206279 20566c65 2Provided by Vle<br> 00000070 74000000 00000000 00000000 0000010c t...............<br> =&gt; nil<br><br><b> # PLEASE NOTE that the the dump method dumps a new raw tag into a string, and reflects <br> # the current data of the Tag1 object (with the changes you might have made)<br><br> </b>&gt; t.dump<br> =&gt; "TAGCome Together\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000The Beatles\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000Abbey Road\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0002002Provided by Vlet\000\000\000\000\000\000\000\000\000\000\000\000\000\001\f"<br><br> &gt; t.dump.hexdump<br><br> index 0 1 2 3 4 5 6 7 8 9 A B C D E F<br><br> 00000000 54414743 6f6d6520 546f6765 74686572 TAGCome Together<br> 00000010 00000000 00000000 00000000 00000000 ................<br> 00000020 00546865 20426561 746c6573 00000000 .The Beatles....<br> 00000030 00000000 00000000 00000000 00000041 ...............A<br> 00000040 62626579 20526f61 64000000 00000000 bbey Road.......<br> 00000050 00000000 00000000 00000000 00323030 .............200<br> 00000060 3250726f 76696465 64206279 20566c65 2Provided by Vle<br> 00000070 74000000 00000000 00000000 0000010c t...............<br> =&gt; nil<br><br> <br><b> # PLEASE NOTE that you can not just "make up" new field names<br><br></b> &gt; t['something']<br> =&gt; nil<br><br> &gt; t['something'] = 'is not allowed!!'<br> ArgumentError: Incorrect ID3-field "something" for ID3 version 1.1<br> valid fields are: ARTIST,ALBUM,TRACKNUM,TITLE,YEAR,GENREID,COMMENT<br><br> from ./id3.rb:636:in `[]='<br> from (irb):25<br> from :0<br><br></pre>
117
+
118
+
119
+
120
+
121
+ </body></html>