public static HyPlayItem AppendNCPlayItem(NCPlayItem ncp) { AudioInfo ai = new AudioInfo() { Album = ncp.Album.name, ArtistArr = ncp.Artist.Select((artist => artist.name)).ToArray(), Artist = string.Join(" / ", ncp.Artist.Select((artist => artist.name))), LengthInMilliseconds = ncp.LengthInMilliseconds, Picture = ncp.Album.cover, SongName = ncp.songname, tag = ncp.tag }; HyPlayItem hpi = new HyPlayItem() { AudioInfo = ai, isOnline = true, ItemType = HyPlayItemType.Netease, Name = ncp.songname, NcPlayItem = ncp, Path = ncp.url }; List.Add(hpi); return(hpi); }
public static HyPlayItem AppendNCPlayItem(NCPlayItem ncp) { var hpi = LoadNCPlayItem(ncp); List.Add(hpi); return(hpi); }
private void ButtonPlayAll_OnClick(object sender, RoutedEventArgs e) { Task.Run((() => { Common.Invoke((async() => { HyPlayList.RemoveAllSong(); (bool isok, JObject json) = await Common.ncapi.RequestAsync(CloudMusicApiProviders.SongUrl, new Dictionary <string, object>() { { "id", string.Join(',', songs.Select(t => t.sid)) }, { "br", Common.Setting.audioRate } }); if (isok) { List <JToken> arr = json["data"].ToList(); for (int i = 0; i < songs.Count; i++) { JToken token = arr.Find(jt => jt["id"].ToString() == songs[i].sid); if (!token.HasValues) { continue; } NCSong ncSong = songs[i]; string tag = ""; if (token["type"].ToString().ToLowerInvariant() == "flac") { tag = "SQ"; } else { tag = (token["br"].ToObject <int>() / 1000).ToString() + "k"; } NCPlayItem ncp = new NCPlayItem() { tag = tag, Album = ncSong.Album, Artist = ncSong.Artist, subext = token["type"].ToString(), sid = ncSong.sid, songname = ncSong.songname, url = token["url"].ToString(), LengthInMilliseconds = ncSong.LengthInMilliseconds, size = token["size"].ToString(), md5 = token["md5"].ToString() }; HyPlayList.AppendNCPlayItem(ncp); } HyPlayList.SongAppendDone(); HyPlayList.SongMoveTo(0); } })); })); }
public static async Task <HyPlayItem> LoadNCSong(NCSong ncSong) { (bool isOk, Newtonsoft.Json.Linq.JObject json) = await Common.ncapi.RequestAsync( CloudMusicApiProviders.SongUrl, new Dictionary <string, object>() { { "id", ncSong.sid }, { "br", Common.Setting.audioRate } }); if (isOk) { try { if (json["data"][0]["code"].ToString() != "200") { return(null); //未获取到 } string tag = ""; if (json["data"][0]["type"].ToString().ToLowerInvariant() == "flac") { tag = "SQ"; } else { tag = (json["data"][0]["br"].ToObject <int>() / 1000).ToString() + "k"; } NCPlayItem ncp = new NCPlayItem() { bitrate = json["data"][0]["br"].ToObject <int>(), tag = tag, Album = ncSong.Album, Artist = ncSong.Artist, subext = json["data"][0]["type"].ToString().ToLowerInvariant(), sid = ncSong.sid, songname = ncSong.songname, url = json["data"][0]["url"].ToString(), LengthInMilliseconds = ncSong.LengthInMilliseconds, size = json["data"][0]["size"].ToString(), md5 = json["data"][0]["md5"].ToString() }; return(LoadNCPlayItem(ncp)); } catch { return(null); } } else { return(null); } }
private void ButtonPlayAll_OnClick(object sender, RoutedEventArgs e) { Task.Run((() => { Invoke((async() => { HyPlayList.List.Clear(); HyPlayList.RequestSyncPlayList(); (bool isok, JObject json) = await Common.ncapi.RequestAsync(CloudMusicApiProviders.SongUrl, new Dictionary <string, object>() { { "id", string.Join(',', songs.Select(t => t.sid)) } }); if (isok) { List <JToken> arr = json["data"].ToList(); for (int i = 0; i < songs.Count; i++) { JToken token = arr.Find(jt => jt["id"].ToString() == songs[i].sid); if (!token.HasValues) { continue; } NCSong ncSong = songs[i]; NCPlayItem ncp = new NCPlayItem() { Album = ncSong.Album, Artist = ncSong.Artist, subext = token["type"].ToString(), sid = ncSong.sid, songname = ncSong.songname, url = token["url"].ToString(), LengthInMilliseconds = ncSong.LengthInMilliseconds, size = token["size"].ToString(), md5 = token["md5"].ToString() }; HyPlayList.AppendNCPlayItem(ncp); } } HyPlayList.RequestSyncPlayList(); })); })); }
public static async void AddDownload(List <NCSong> songs) { if (!CheckDownloadAbilityAndToast()) { return; } var(isok, json) = await Common.ncapi.RequestAsync(CloudMusicApiProviders.SongUrl, new Dictionary <string, object>() { { "id", string.Join(',', songs.Select(t => t.sid)) } }); if (isok) { if (json["data"][0]["code"].ToString() != "200") { return; //未获取到 } int i = 0; string FileName = ""; foreach (JToken jToken in json["data"]) { var song = songs.Find(t => t.sid == jToken["id"].ToString()); FileName = string.Join(';', song.Artist.Select(t => t.name)) + " - " + song.songname + "." + jToken["type"].ToString().ToLowerInvariant(); var dop = Downloader.CreateDownload(new Uri(jToken["url"].ToString()), await(await StorageFolder.GetFolderFromPathAsync(Common.Setting.downloadDir)).CreateFileAsync(FileName, CreationCollisionOption.ReplaceExisting)); NCPlayItem ncp = new NCPlayItem() { bitrate = jToken["br"].ToObject <int>(), tag = "下载", Album = song.Album, Artist = song.Artist, subext = jToken["type"].ToString().ToLowerInvariant(), sid = song.sid, songname = song.songname, url = jToken["url"].ToString(), LengthInMilliseconds = song.LengthInMilliseconds, size = jToken["size"].ToString(), md5 = jToken["md5"].ToString() }; DownloadLists[dop] = ncp; var process = new Progress <DownloadOperation>(ProgressCallback); _ = dop.StartAsync().AsTask(process); i++; } DownloadStartToast(FileName + " 等 " + i.ToString() + " 个文件"); } }
/******** 播放文件相关 ********/ public static async Task <HyPlayItem> AppendNCSong(NCSong ncSong) { (bool isOk, Newtonsoft.Json.Linq.JObject json) = await Common.ncapi.RequestAsync(CloudMusicApiProviders.SongUrl, new Dictionary <string, object>() { { "id", ncSong.sid }, { "br", 320000 } }); if (isOk) { try { if (json["data"][0]["code"].ToString() != "200") { return(null); //未获取到 } NCPlayItem ncp = new NCPlayItem() { Album = ncSong.Album, Artist = ncSong.Artist, subext = json["data"][0]["type"].ToString(), sid = ncSong.sid, songname = ncSong.songname, url = json["data"][0]["url"].ToString(), LengthInMilliseconds = ncSong.LengthInMilliseconds, size = json["data"][0]["size"].ToString(), md5 = json["data"][0]["md5"].ToString() }; return(AppendNCPlayItem(ncp)); } catch { return(null); } } else { return(null); } }
private async void ButtonHeartBeat_OnClick(object sender, RoutedEventArgs e) { HyPlayList.RemoveAllSong(); (bool isOk, JObject jsona) = await Common.ncapi.RequestAsync(CloudMusicApiProviders.PlaymodeIntelligenceList, new Dictionary <string, object>() { { "pid", playList.plid }, { "id", intelsong } }); if (isOk) { List <NCSong> Songs = new List <NCSong>(); foreach (JToken token in jsona["data"]) { NCSong ncSong = new NCSong() { Album = new NCAlbum() { cover = token["songInfo"]["al"]["picUrl"].ToString(), id = token["songInfo"]["al"]["id"].ToString(), name = token["songInfo"]["al"]["name"].ToString() }, Artist = new List <NCArtist>(), LengthInMilliseconds = double.Parse(token["songInfo"]["dt"].ToString()), sid = token["songInfo"]["id"].ToString(), songname = token["songInfo"]["name"].ToString() }; token["songInfo"]["ar"].ToList().ForEach(t => { ncSong.Artist.Add(new NCArtist() { id = t["id"].ToString(), name = t["name"].ToString() }); }); Songs.Add(ncSong); } (bool isok, JObject json) = await Common.ncapi.RequestAsync(CloudMusicApiProviders.SongUrl, new Dictionary <string, object>() { { "id", string.Join(",", Songs.Select(t => t.sid)) }, { "br", Common.Setting.audioRate } }); ; if (isok) { List <JToken> arr = json["data"].ToList(); for (int i = 0; i < Songs.Count; i++) { JToken token = arr.Find(jt => jt["id"].ToString() == Songs[i].sid); if (!token.HasValues) { continue; } NCSong ncSong = Songs[i]; string tag = ""; if (token["type"].ToString().ToLowerInvariant() == "flac") { tag = "SQ"; } else { tag = (token["br"].ToObject <int>() / 1000).ToString() + "k"; } NCPlayItem ncp = new NCPlayItem() { tag = tag, Album = ncSong.Album, Artist = ncSong.Artist, subext = token["type"].ToString(), sid = ncSong.sid, songname = ncSong.songname, url = token["url"].ToString(), LengthInMilliseconds = ncSong.LengthInMilliseconds, size = token["size"].ToString(), md5 = token["md5"].ToString() }; HyPlayList.AppendNCPlayItem(ncp); } HyPlayList.SongAppendDone(); HyPlayList.SongMoveTo(0); } } }
public static async Task <bool> AppendFile(StorageFile sf, bool nocheck163 = false) { The163KeyStruct mi; if (nocheck163 || !The163KeyHelper.TryGetMusicInfo(TagLib.File.Create(new UwpStorageFileAbstraction(sf)).Tag, out mi)) { //TagLib.File afi = TagLib.File.Create(new UwpStorageFileAbstraction(sf), ReadStyle.Average); var mdp = await sf.Properties.GetMusicPropertiesAsync(); string[] contributingArtistsKey = { "System.Music.Artist" }; IDictionary <string, object> contributingArtistsProperty = await mdp.RetrievePropertiesAsync(contributingArtistsKey); string[] contributingArtists = contributingArtistsProperty["System.Music.Artist"] as string[]; if (contributingArtists is null) { contributingArtists = new[] { "未知歌手" }; } AudioInfo ai = new AudioInfo() { tag = "本地", Album = string.IsNullOrEmpty(mdp.Album) ? "未知专辑" : mdp.Album, ArtistArr = contributingArtists, Artist = string.IsNullOrEmpty(string.Join('/', contributingArtists)) ? "未知歌手" : string.Join('/', contributingArtists), LengthInMilliseconds = mdp.Duration.TotalMilliseconds, SongName = string.IsNullOrEmpty(mdp.Title) ? sf.DisplayName : mdp.Title, LocalSongFile = sf }; //记载歌词 try { StorageFile lrcfile = await(await sf.GetParentAsync()).GetFileAsync(Path.ChangeExtension(sf.Name, "lrc")); ai.Lyric = await FileIO.ReadTextAsync(lrcfile); } catch (Exception) { } HyPlayItem hyPlayItem = new HyPlayItem() { AudioInfo = ai, isOnline = false, ItemType = HyPlayItemType.Local, Name = ai.SongName, Path = sf.Path }; List.Add(hyPlayItem); return(true); } else { if (string.IsNullOrEmpty(mi.musicName)) { return(await AppendFile(sf, true)); } NCPlayItem hpi = new NCPlayItem() { Album = new NCAlbum() { name = mi.album, id = mi.albumId.ToString(), cover = mi.albumPic }, bitrate = mi.bitrate, hasLocalFile = true, LocalStorageFile = sf, LengthInMilliseconds = mi.duration, sid = mi.musicId.ToString(), Artist = null, md5 = null, size = sf.GetBasicPropertiesAsync().GetAwaiter().GetResult().Size.ToString(), songname = mi.musicName, tag = "本地" }; hpi.Artist = mi.artist.Select(t => new NCArtist() { name = t[0].ToString(), id = t[1].ToString() }) .ToList(); AppendNCPlayItem(hpi); return(true); } }