package org.music.cs.util;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
/**
* �������ļ�����
*/
public class LrcProcess {
private List<LrcContent> LrcList;
private LrcContent mLrcContent;
public LrcProcess() {
mLrcContent = new LrcContent();
LrcList = new ArrayList<LrcContent>();
}
/**
* ��ȡ����ļ�������
*/
public String readLRC(String song_path) {
// public void Read(String file){
StringBuilder stringBuilder = new StringBuilder();
File f = new File(song_path.replace(".mp3", ".lrc"));
try {
FileInputStream fis = new FileInputStream(f);
InputStreamReader isr = new InputStreamReader(fis, "GB2312");
BufferedReader br = new BufferedReader(isr);
String s = "";
while ((s = br.readLine()) != null) {
// if ((s.indexOf("[ar:") != -1) || (s.indexOf("[ti:") != -1)
// || (s.indexOf("[by:") != -1)) {
// s = s.substring(s.indexOf(":") + 1, s.indexOf("]"));
// } else {
// try {
// String ss = s.substring(s.indexOf("["),
// s.indexOf("]") + 1);
// s = s.replace(ss, "");
// } catch (Exception e) {
// s = " ";
// }
// }
// stringBuilder.append(s + "\n");
if (s.contains("[ar:") || s.contains("[ti:") || s.contains("[by:")) {
//�˾���Ϊ�˶㿪��Щ����ʱ��ı�ǩ
//TODO doNothing
} else {
// �滻�ַ�
s = s.replace("[", "");
s = s.replace("]", "@");
// ����"@"�ַ�
String splitLrc_data[] = s.split("@");
if (splitLrc_data.length > 1) {
mLrcContent.setLrc(splitLrc_data[1]);
// ������ȡ�ø���ʱ��
int LrcTime = TimeStr(splitLrc_data[0]);
mLrcContent.setLrc_time(LrcTime);
// ��ӽ��б�����
LrcList.add(mLrcContent);
// ��������
mLrcContent = new LrcContent();
}
}
}
br.close();
isr.close();
fis.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
stringBuilder.append("ľ�и���ļ����Ͻ�ȥ���أ�...");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
stringBuilder.append("ľ�ж�ȡ����ʰ���");
}
return stringBuilder.toString();
}
/**
* ��������ʱ�䴦����
*/
public int TimeStr(String timeStr) {
timeStr = timeStr.replace(":", ".");
timeStr = timeStr.replace(".", "@");
String timeData[] = timeStr.split("@");
// ������֡��벢ת��Ϊ����
int minute = Integer.parseInt(timeData[0]);
int second = Integer.parseInt(timeData[1]);
int millisecond = Integer.parseInt(timeData[2]);
// ������һ������һ�е�ʱ��ת��Ϊ������
int currentTime = (minute * 60 + second) * 1000 + millisecond * 10;
return currentTime;
}
public List<LrcContent> getLrcContent() {
return LrcList;
}
/**
* ��ø�ʺ�ʱ�䲢���ص���
*/
public class LrcContent {
private String Lrc;
private int Lrc_time;
public String getLrc() {
return Lrc;
}
public void setLrc(String lrc) {
Lrc = lrc;
}
public int getLrc_time() {
return Lrc_time;
}
public void setLrc_time(int lrc_time) {
Lrc_time = lrc_time;
}
}
}