public IEnumerable <SongModel> InitPlaylistE() { //以下为测试代码 for (int i = 0; i < 6; i++) { SongModel sm = SongModel.GetNew(1775616994); if (i == 0) { sm.Name = $"Foundations (Original Mix)"; sm.Album = AlbumModel.GetNew(2100274906); //sm.MediaUri = new Uri(@"ms-appx:///Assets/Ring01.wma"); ExtensionMethods.InvokeAndWait(async() => sm.MediaUri = new Uri(await Net.DataApi.GetDownloadLink(sm, false))); sm.Album.Art = new Uri("http://img.xiami.net/images/album/img35/105735/21002749061455506376_2.jpg"); sm.Album.ArtFull = new Uri("http://img.xiami.net/images/album/img35/105735/21002749061455506376.jpg"); } yield return(sm); sm = SongModel.GetNew(1771503325); if (i == 0) { sm.Name = $"Give My Regards"; sm.Album = AlbumModel.GetNew(504506); //sm.MediaUri = new Uri(@"ms-appx:///Assets/Ring02.wma"); ExtensionMethods.InvokeAndWait(async() => sm.MediaUri = new Uri(await Net.DataApi.GetDownloadLink(sm, false))); sm.Album.Art = new Uri("http://img.xiami.net/images/album/img35/105735/5045061333262175_2.jpg"); sm.Album.ArtFull = new Uri("http://img.xiami.net/images/album/img35/105735/5045061333262175.jpg"); } yield return(sm); } }
public override async Task OnNavigatedToAsync(object parameter, NavigationMode mode, IDictionary <string, object> state) { uint id = 0; if (!uint.TryParse(parameter.ToString(), out id)) { NavigationService.Navigate(typeof(Views.LibraryPage)); } Album = AlbumModel.GetNew(id); if (Album.Introduction == null) { await Net.WebApi.Instance.GetAlbumInfo(Album); } }
internal IEnumerable <AlbumModel> ParseRelateAlbums(HtmlNode listnode) { foreach (var node in listnode.ChildNodes) { if (node.NodeType != HtmlNodeType.Element) { continue; } AlbumModel album = AlbumModel.GetNew(uint.Parse(node.GetAttributeValue("rel", "0"))); album.Name = node.SelectSingleNode("./div/a").InnerText; album.Rating = node.SelectSingleNode(".//em").InnerText; if (album.Art.Host == "") { var art = node.SelectSingleNode(".//img").GetAttributeValue("src", AlbumModel.SmallDefaultUri); album.Art = new Uri(art); album.ArtFull = new Uri(art.Replace("_1", "")); } yield return(album); } }
internal IEnumerable <AlbumModel> ParseArtistAlbums(HtmlNode listnode) { foreach (var item in listnode.ChildNodes) { if (item.NodeType != HtmlNodeType.Element) { continue; } var id = uint.Parse(item.GetAttributeValue("rel", "0")); AlbumModel album = AlbumModel.GetNew(id); var imagenode = item.SelectSingleNode(".//img"); album.Name = imagenode.GetAttributeValue("alt", null); if (album.Art.Host == "") { var art = imagenode.GetAttributeValue("src", AlbumModel.SmallDefaultUri); album.Art = new Uri(art); album.ArtFull = new Uri(art.Replace("_1", "")); } album.Rating = item.SelectSingleNode(".//em").InnerText; yield return(album); } }
//TODO: 判断歌曲是否被喜爱 /// <summary> /// 通过SongId获取歌曲的信息(不含取媒体地址) /// </summary> /// <param name="cover">是否覆盖已存在的Album和Artist信息</param> public IAsyncAction GetSongInfo(SongModel song, bool cover = false) { if (song.XiamiID == 0) { throw new ArgumentException("SongModel未设置ID"); } return(Run(async token => { try { LogService.DebugWrite($"Get info of Song {song.XiamiID}", nameof(WapApi)); var gettask = HttpHelper.GetAsync($"http://www.xiami.com/app/xiating/song?id={song.XiamiID}"); token.Register(() => gettask.Cancel()); var content = await gettask; HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(content); HtmlNode root = doc.DocumentNode; var logo = root.SelectSingleNode("//img[1]"); var detail = root.SelectSingleNode("//ul[1]"); var detailgrade = root.SelectSingleNode("//div[1]/ul[1]"); if (song.Name == null) { song.Name = logo.GetAttributeValue("title", "UnKnown"); } song.PlayCount = int.Parse(detailgrade.SelectSingleNode(".//span[1]").InnerText); song.ShareCount = int.Parse(detailgrade.SelectSingleNode("./li[3]/span[1]").InnerText); var additionnodes = detail.SelectNodes("./li[position()>2]"); foreach (var node in additionnodes) { switch (node.FirstChild.InnerText) { case "作词:": song.Lyricist = node.LastChild.InnerText; break; case "作曲:": song.Composer = node.LastChild.InnerText; break; case "编曲:": song.Arranger = node.LastChild.InnerText; break; } } if ((song.Album == null) || cover) { var albumtag = detail.SelectSingleNode("./li[1]/a[1]"); var idtext = albumtag.GetAttributeValue("href", "/app/xiating/album?id=0"); var addrlength = "/app/xiating/album?id=".Length; uint albumID = uint.Parse(idtext.Substring(addrlength, idtext.IndexOf("&", addrlength) - addrlength)); AlbumModel album = song.Album ?? AlbumModel.GetNew(albumID); if (album.Art.Host == "") { var art = logo.GetAttributeValue("src", AlbumModel.SmallDefaultUri); album.Art = new Uri(art.Replace("_2", "_1")); album.ArtFull = new Uri(art.Replace("_2", "")); } album.Name = albumtag.InnerText; song.Album = album; } if ((song.Album?.Artist == null) || cover) { var artisttag = detail.SelectSingleNode("./li[2]/a[1]"); var idtext = artisttag.GetAttributeValue("href", "/app/xiating/artist?id=0"); var addrlength = "/app/xiating/artist?id=".Length; uint artistID = uint.Parse(idtext.Substring(addrlength, idtext.IndexOf("&", addrlength) - addrlength)); ArtistModel artist = song.Album?.Artist ?? ArtistModel.GetNew(artistID); artist.Name = artisttag.InnerText; song.Album.Artist = artist; } LogService.DebugWrite($"Finish Getting info of Song {song.Name}", nameof(WapApi)); } catch (Exception e) { LogService.ErrorWrite(e, nameof(WapApi)); throw e; } })); }