View Javadoc

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *     http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  package org.apache.tika.parser.mp3;
18  
19  
20  /**
21   * Interface that defines the common interface for ID3 tag parsers,
22   *  such as ID3v1 and ID3v2.3.
23   * Implementations should return NULL if the file lacks a given
24   *  tag, or if the tag isn't defined for the version.
25   *  
26   * Note that so far, only the ID3v1 core tags are listed here. In
27   *  future, we may wish to add more to cover the extra tags that
28   *  our ID3v2 handlers can produce.
29   */
30  public interface ID3Tags {
31      /**
32       * List of predefined genres.
33       *
34       * @see http://www.id3.org/id3v2-00
35       */
36      String[] GENRES = new String[] {
37          /*  0 */ "Blues",
38          /*  1 */ "Classic Rock",
39          /*  2 */ "Country",
40          /*  3 */ "Dance",
41          /*  4 */ "Disco",
42          /*  5 */ "Funk",
43          /*  6 */ "Grunge",
44          /*  7 */ "Hip-Hop",
45          /*  8 */ "Jazz",
46          /*  9 */ "Metal",
47          /* 10 */ "New Age",
48          /* 11 */ "Oldies",
49          /* 12 */ "Other",
50          /* 13 */ "Pop",
51          /* 14 */ "R&B",
52          /* 15 */ "Rap",
53          /* 16 */ "Reggae",
54          /* 17 */ "Rock",
55          /* 18 */ "Techno",
56          /* 19 */ "Industrial",
57          /* 20 */ "Alternative",
58          /* 21 */ "Ska",
59          /* 22 */ "Death Metal",
60          /* 23 */ "Pranks",
61          /* 24 */ "Soundtrack",
62          /* 25 */ "Euro-Techno",
63          /* 26 */ "Ambient",
64          /* 27 */ "Trip-Hop",
65          /* 28 */ "Vocal",
66          /* 29 */ "Jazz+Funk",
67          /* 30 */ "Fusion",
68          /* 31 */ "Trance",
69          /* 32 */ "Classical",
70          /* 33 */ "Instrumental",
71          /* 34 */ "Acid",
72          /* 35 */ "House",
73          /* 36 */ "Game",
74          /* 37 */ "Sound Clip",
75          /* 38 */ "Gospel",
76          /* 39 */ "Noise",
77          /* 40 */ "AlternRock",
78          /* 41 */ "Bass",
79          /* 42 */ "Soul",
80          /* 43 */ "Punk",
81          /* 44 */ "Space",
82          /* 45 */ "Meditative",
83          /* 46 */ "Instrumental Pop",
84          /* 47 */ "Instrumental Rock",
85          /* 48 */ "Ethnic",
86          /* 49 */ "Gothic",
87          /* 50 */ "Darkwave",
88          /* 51 */ "Techno-Industrial",
89          /* 52 */ "Electronic",
90          /* 53 */ "Pop-Folk",
91          /* 54 */ "Eurodance",
92          /* 55 */ "Dream",
93          /* 56 */ "Southern Rock",
94          /* 57 */ "Comedy",
95          /* 58 */ "Cult",
96          /* 59 */ "Gangsta",
97          /* 60 */ "Top 40",
98          /* 61 */ "Christian Rap",
99          /* 62 */ "Pop/Funk",
100         /* 63 */ "Jungle",
101         /* 64 */ "Native American",
102         /* 65 */ "Cabaret",
103         /* 66 */ "New Wave",
104         /* 67 */ "Psychadelic",
105         /* 68 */ "Rave",
106         /* 69 */ "Showtunes",
107         /* 70 */ "Trailer",
108         /* 71 */ "Lo-Fi",
109         /* 72 */ "Tribal",
110         /* 73 */ "Acid Punk",
111         /* 74 */ "Acid Jazz",
112         /* 75 */ "Polka",
113         /* 76 */ "Retro",
114         /* 77 */ "Musical",
115         /* 78 */ "Rock & Roll",
116         /* 79 */ "Hard Rock",
117         /* 80 */ "Folk",
118         /* 81 */ "Folk-Rock",
119         /* 82 */ "National Folk",
120         /* 83 */ "Swing",
121         /* 84 */ "Fast Fusion",
122         /* 85 */ "Bebob",
123         /* 86 */ "Latin",
124         /* 87 */ "Revival",
125         /* 88 */ "Celtic",
126         /* 89 */ "Bluegrass",
127         /* 90 */ "Avantgarde",
128         /* 91 */ "Gothic Rock",
129         /* 92 */ "Progressive Rock",
130         /* 93 */ "Psychedelic Rock",
131         /* 94 */ "Symphonic Rock",
132         /* 95 */ "Slow Rock",
133         /* 96 */ "Big Band",
134         /* 97 */ "Chorus",
135         /* 98 */ "Easy Listening",
136         /* 99 */ "Acoustic",
137         /* 100 */ "Humour",
138         /* 101 */ "Speech",
139         /* 102 */ "Chanson",
140         /* 103 */ "Opera",
141         /* 104 */ "Chamber Music",
142         /* 105 */ "Sonata",
143         /* 106 */ "Symphony",
144         /* 107 */ "Booty Bass",
145         /* 108 */ "Primus",
146         /* 109 */ "Porn Groove",
147         /* 110 */ "Satire",
148         /* 111 */ "Slow Jam",
149         /* 112 */ "Club",
150         /* 113 */ "Tango",
151         /* 114 */ "Samba",
152         /* 115 */ "Folklore",
153         /* 116 */ "Ballad",
154         /* 117 */ "Power Ballad",
155         /* 118 */ "Rhythmic Soul",
156         /* 119 */ "Freestyle",
157         /* 120 */ "Duet",
158         /* 121 */ "Punk Rock",
159         /* 122 */ "Drum Solo",
160         /* 123 */ "A capella",
161         /* 124 */ "Euro-House",
162         /* 125 */ "Dance Hall",
163         /* sentinel */ ""
164     };
165 
166     /**
167      * Does the file contain this kind of tags?
168      */
169     boolean getTagsPresent();
170 
171     String getTitle();
172 
173     String getArtist();
174 
175     String getAlbum();
176 
177     String getComment();
178 
179     String getGenre();
180 
181     String getYear();
182 
183     String getTrackNumber();
184 
185 }