internal static void Remove(this SongItem songItem, ObservableCollection <SongItem> songList, Downloader downloader, Player player) { switch (songItem.Status) { case SongStatus.WaitingDownload: songList.Remove(songItem); break; case SongStatus.Downloading: downloader.CancelDownload(); break; case SongStatus.WaitingPlay: songList.Remove(songItem); try { File.Delete(songItem.FilePath); } catch (Exception) { } break; case SongStatus.Playing: player.Next(); break; default: break; } }
/// <summary> /// 主插件调用用 /// </summary> /// <param name="item">要下载的歌曲信息</param> /// <returns>下载是否成功</returns> internal DownloadStatus SafeDownload(SongItem item) { try { return(Download(item)); } catch (Exception ex) { WriteError(ex, "参数:filepath=" + item.FilePath + " id=" + item.SongId); return(DownloadStatus.Failed); } }
internal string SafeGetDownloadUrl(SongItem songInfo) { try { return(GetDownloadUrl(songInfo)); } catch (Exception ex) { WriteError(ex, "SongId: " + songInfo.SongId); return(null); } }
internal static string GetDownloadUrl(this SongItem songItem) => songItem.Module.SafeGetDownloadUrl(songItem);
/// <summary> /// 请在不能使用普通方式下载歌曲文件的情况下重写替代下载 /// </summary> /// <param name="item">要下载的歌曲信息</param> /// <returns>下载是否成功</returns> protected abstract DownloadStatus Download(SongItem item);
protected abstract string GetLyric(SongItem songInfo);
protected abstract string GetDownloadUrl(SongItem songInfo);