-
Notifications
You must be signed in to change notification settings - Fork 1
/
Song.java
167 lines (143 loc) · 3.43 KB
/
Song.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
import java.io.File;
import org.jaudiotagger.audio.AudioFileIO;
import org.jaudiotagger.audio.mp3.MP3AudioHeader;
import org.jaudiotagger.audio.mp3.MP3File;
/** COMMENTED OUT IMPORTS **/
//import org.jaudiotagger.tag.Tag;
//import org.jaudiotagger.tag.id3.AbstractID3v2Tag;
//import org.jaudiotagger.tag.id3.ID3v1Tag;
//import org.jaudiotagger.tag.id3.ID3v24Tag;
/**
* Stores the information about a particular song.
*
* @author Michael Nipper
*
*/
public class Song {
private String filePath = "";
private String length = "";
private String artistName = "";
private String title = "";
private int songLengthSeconds = 0;
/**
* Create a song object from a file path.
*
* @param file
* The file path of the song to create a song object.
*/
public Song(String file) {
filePath = file;
File songFile = new File(file);
try {
MP3File f = (MP3File) AudioFileIO.read(songFile);
MP3AudioHeader audioHeader = (MP3AudioHeader) f.getAudioHeader();
if (audioHeader != null) {
int secs = audioHeader.getTrackLength() % 60;
String secondLabel = "" + secs;
if (secs < 10) {
secondLabel = "0" + secs;
}
length = audioHeader.getTrackLength() / 60 + ":" + secondLabel;
songLengthSeconds = audioHeader.getTrackLength();
/*
* FOR READING ID INFO FROM MP3, not working correctly.
*
*
*
* Tag tag = f.getTag(); AbstractID3v2Tag v2tag =
* f.getID3v2Tag(); AbstractID3v2Tag v24tag =
* (AbstractID3v2Tag)f.getID3v2TagAsv24(); title =
* v1Tag.getTitle().get(0).toString();
*/
artistName = file.substring(file.lastIndexOf("\\") + 1,
file.lastIndexOf(".mp3"));
}
} catch (Exception e) {
}
}
/**
* Get the current file path.
*
* @return The filepath of the song object.
*/
public String getFilePath() {
return filePath;
}
/**
* Set the filepath for the song object.
*
* @param file
* The filepath.
*/
public void setFilePath(String file) {
this.filePath = file;
}
/**
* Get the length of the song.
*
* @return A length, formated mm:ss.
*/
public String getLength() {
return length;
}
/**
* Set the length of a song.
*
* @param length
* A length, formated mm:ss.
*/
public void setLength(String length) {
this.length = length;
}
/**
* Get the artist name.
*
* @return The artist name.
*/
public String getArtistName() {
return artistName;
}
/**
* Set the artist name.
*
* @param artistName
* The artist name.
*/
public void setArtistName(String artistName) {
this.artistName = artistName;
}
/**
* Get the title of the song.
*
* @return The title of the song.
*/
public String getTitle() {
return title;
}
/**
* Set the title of the song.
*
* @param title
* The title of the song.
*/
public void setTitle(String title) {
this.title = title;
}
/**
* Get the song length in seconds.
*
* @return The song length in seconds.
*/
public int getSongLengthSeconds() {
return songLengthSeconds;
}
/**
* Set the song length in seconds.
*
* @param songLengthSeconds
* The song length in seconds.
*/
public void setSongLengthSeconds(int songLengthSeconds) {
this.songLengthSeconds = songLengthSeconds;
}
}