use of com.cyl.musiclake.bean.Music in project MusicLake by caiyonglong.
the class XiamiServiceImpl method getMusicInfo.
@SuppressWarnings({ "unchecked", "varargs" })
public static Observable<Music> getMusicInfo(Music musicInfo) {
Map<String, String> params = new HashMap<>();
// page
params.put("v", "2.0");
// page
params.put("page", "1");
// limit
params.put("limit", "1");
// key
params.put("key", musicInfo.getTitle() + "-" + musicInfo.getArtist());
params.put("r", "search/songs");
params.put("app_key", "1");
params.put("format", "json");
return getApiService().searchByXiaMi(params).flatMap(xiaMiModel -> {
List<Music> musicList = new ArrayList<>();
List<XiamiModel.DataBean.SongsBean> songs = xiaMiModel.getData().getSongs();
for (int i = 0; i < songs.size(); i++) {
XiamiModel.DataBean.SongsBean song = songs.get(i);
Music music = new Music();
music.setType(Music.Type.XIAMI);
music.setOnline(true);
music.setId(String.valueOf(song.getSong_id()));
music.setTitle(song.getSong_name());
music.setArtist(song.getArtist_name());
music.setArtistId(String.valueOf(song.getArtist_id()));
music.setAlbum(song.getAlbum_name());
music.setAlbumId(song.getAlbum_id());
music.setUri(song.getListen_file());
String cover = song.getAlbum_logo() + "@1e_1c_0i_1o_100Q_250w_250h";
String coverBig = song.getAlbum_logo() + "@1e_1c_0i_1o_100Q_400w_400h";
String coverSmall = song.getAlbum_logo() + "@1e_1c_0i_1o_100Q_150w_150h";
music.setCoverUri(cover);
music.setCoverBig(coverBig);
music.setCoverSmall(coverSmall);
music.setLrcPath(song.getLyric());
musicList.add(music);
}
LogUtil.e("search", "xiami :" + musicList.size());
return Observable.fromArray(musicList.get(0));
});
}
use of com.cyl.musiclake.bean.Music in project MusicLake by caiyonglong.
the class BaiduApiServiceImpl method getTingSongInfo.
// {"errorCode":22232,"data":{"xcode":"","songList":""}}
public static Observable<Music> getTingSongInfo(String mid) {
Map<String, String> params = new HashMap<>();
String Url = "http://music.baidu.com/data/music/links?songIds=" + mid;
return getApiService().getTingSongInfo(Url, params).flatMap(baiduSongInfo -> {
Music music = new Music();
BaiduSongInfo.DataBean.SongListBean songInfo = baiduSongInfo.getData().getSongList().get(0);
music.setType(Music.Type.BAIDU);
music.setOnline(true);
music.setId(songInfo.getSongId());
music.setAlbum(songInfo.getAlbumName());
music.setAlbumId(songInfo.getAlbumId());
music.setArtistId(songInfo.getArtistId());
music.setArtist(songInfo.getArtistName());
music.setTitle(songInfo.getSongName());
music.setUri(songInfo.getSongLink());
music.setFileSize(songInfo.getSize());
music.setLrcPath(songInfo.getLrcLink());
music.setCoverSmall(songInfo.getSongPicSmall());
music.setCoverUri(songInfo.getSongPicBig());
music.setCoverBig(songInfo.getSongPicRadio());
return Observable.create((ObservableOnSubscribe<Music>) e -> {
if (music.getUri() != null) {
e.onNext(music);
e.onComplete();
} else {
e.onError(new Throwable());
}
});
});
}
use of com.cyl.musiclake.bean.Music in project MusicLake by caiyonglong.
the class NeteaseApiServiceImpl method search.
public static Observable<List<Music>> search(String key, int limit, int page) {
Map<String, String> params = new HashMap<>();
// page
params.put("offset", String.valueOf(page));
// limit
params.put("limit", String.valueOf(limit));
// key
params.put("keywords", key);
return getApiService().searchByNetease(params).flatMap(netease -> {
List<Music> musicList = new ArrayList<>();
List<NeteaseMusic> songList = netease.getResult().getSongs();
for (int i = 0; i < songList.size(); i++) {
NeteaseMusic song = songList.get(i);
Music music = new Music(song);
musicList.add(music);
}
LogUtil.e("search", page + "--" + limit + "qq :" + musicList.size());
return Observable.fromArray(musicList);
});
}
use of com.cyl.musiclake.bean.Music in project MusicLake by caiyonglong.
the class PlayFragment method download.
@OnClick(R.id.skip_download)
void download() {
Music music = PlayManager.getPlayingMusic();
MusicApiUtils.checkDownload((AppCompatActivity) getActivity(), music);
}
use of com.cyl.musiclake.bean.Music in project MusicLake by caiyonglong.
the class PlaylistDetailFragment method onOptionsItemSelected.
@SuppressLint("ResourceAsColor")
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch(id) {
case R.id.action_delete_playlist:
new MaterialDialog.Builder(getContext()).title("提示").content("是否删除这个歌单?").onPositive((dialog, which) -> {
mPresenter.deletePlaylist(mPlaylist);
// PlaylistLoader.deletePlaylist(getActivity(), mPlaylist.getId());
// RxBus.getInstance().post(new Playlist());
// onBackPress();
}).positiveText("确定").negativeText("取消").show();
break;
case R.id.action_rename_playlist:
new MaterialDialog.Builder(getActivity()).title("重命名歌单").positiveText("确定").negativeText("取消").inputRangeRes(2, 10, R.color.red).inputType(InputType.TYPE_CLASS_TEXT).input("输入歌单名", mPlaylist.getName(), false, (dialog, input) -> Log.e("=====", input.toString())).onPositive((dialog, which) -> {
String title = dialog.getInputEditText().getText().toString();
mPresenter.renamePlaylist(mPlaylist, title);
}).positiveText("确定").negativeText("取消").show();
break;
case R.id.action_share:
Intent intent3 = new Intent(getActivity(), EditActivity.class);
StringBuilder content = new StringBuilder();
if (musicList.size() > 0) {
content = new StringBuilder("分享歌单\n");
}
for (int i = 0; i < musicList.size(); i++) {
content.append(musicList.get(i).getTitle()).append("---").append(musicList.get(i).getArtist());
content.append("\n");
}
intent3.putExtra("content", content.toString());
startActivity(intent3);
break;
case R.id.action_add:
List<String> titles = new ArrayList<>();
List<Music> addMusicList = SongLoader.getSongsForDB(getContext());
for (Music music : addMusicList) {
titles.add(music.getTitle() + "-" + music.getArtist());
}
new MaterialDialog.Builder(getActivity()).title("新增歌曲").iconRes(R.drawable.ic_playlist_add).content("快速添加歌曲,更加方便地添加所需要的歌曲到当前目录").positiveText("确定").items(titles).itemsCallbackMultiChoice(null, (dialog, which, text) -> false).onPositive((dialog, which) -> {
dialog.dismiss();
int sum = dialog.getSelectedIndices().length, num = 0;
for (int i = 0; i < sum; i++) {
int index = dialog.getSelectedIndices()[i];
boolean success = PlaylistLoader.addToPlaylist(getContext(), mPlaylist.getId(), addMusicList.get(index).getId());
if (success) {
num++;
}
}
mPresenter.loadPlaylistSongs(mPlaylist.getId());
mPresenter.loadPlaylistArt(mPlaylist.getId());
ToastUtils.show(getContext(), num + "首添加成功," + (sum - num) + "首已存在此歌单添加失败");
RxBus.getInstance().post(new Playlist());
}).show();
break;
}
return super.onOptionsItemSelected(item);
}
Aggregations