package me.wcy.music.executor;
import android.app.Activity;
import android.text.TextUtils;
import java.io.File;
import me.wcy.music.http.HttpCallback;
import me.wcy.music.http.HttpClient;
import me.wcy.music.model.DownloadInfo;
import me.wcy.music.model.OnlineMusic;
import me.wcy.music.utils.FileUtils;
/**
* 下载音乐
* Created by wcy on 2016/1/3.
*/
public abstract class DownloadOnlineMusic extends DownloadMusic {
private OnlineMusic mOnlineMusic;
public DownloadOnlineMusic(Activity activity, OnlineMusic onlineMusic) {
super(activity);
mOnlineMusic = onlineMusic;
}
@Override
protected void download() {
final String artist = mOnlineMusic.getArtist_name();
final String title = mOnlineMusic.getTitle();
// 获取歌曲下载链接
HttpClient.getMusicDownloadInfo(mOnlineMusic.getSong_id(), new HttpCallback<DownloadInfo>() {
@Override
public void onSuccess(DownloadInfo response) {
if (response == null || response.getBitrate() == null) {
onFail(null);
return;
}
downloadMusic(response.getBitrate().getFile_link(), artist, title);
onExecuteSuccess(null);
}
@Override
public void onFail(Exception e) {
onExecuteFail(e);
}
});
// 下载歌词
String lrcFileName = FileUtils.getLrcFileName(artist, title);
File lrcFile = new File(FileUtils.getLrcDir() + lrcFileName);
if (!TextUtils.isEmpty(mOnlineMusic.getLrclink()) && !lrcFile.exists()) {
downloadLrc(mOnlineMusic.getLrclink(), lrcFileName);
}
// 下载封面
String albumFileName = FileUtils.getAlbumFileName(artist, title);
File albumFile = new File(FileUtils.getAlbumDir(), albumFileName);
String picUrl = mOnlineMusic.getPic_big();
if (TextUtils.isEmpty(picUrl)) {
picUrl = mOnlineMusic.getPic_small();
}
if (!albumFile.exists() && !TextUtils.isEmpty(picUrl)) {
downloadAlbum(picUrl, albumFileName);
}
}
private void downloadLrc(String url, String fileName) {
HttpClient.downloadFile(url, FileUtils.getLrcDir(), fileName, new HttpCallback<File>() {
@Override
public void onSuccess(File file) {
}
@Override
public void onFail(Exception e) {
}
});
}
private void downloadAlbum(String picUrl, String fileName) {
HttpClient.downloadFile(picUrl, FileUtils.getAlbumDir(), fileName, new HttpCallback<File>() {
@Override
public void onSuccess(File file) {
}
@Override
public void onFail(Exception e) {
}
});
}
}