public IAsyncAction FreshRadio(RadioService radio) { return Run(async token => { try { LogService.DebugWrite($"Fresh Radio Songlist {radio.Radio.ToString()}", nameof(WebApi)); var gettask = HttpHelper.GetAsync($"http://www.xiami.com/radio/xml/type/{(int)(radio.Radio.Type)}/id/{radio.Radio.OID}"); token.Register(() => gettask.Cancel()); var content = await gettask; XmlDocument doc = new XmlDocument(); doc.LoadXml(content); radio.Clear(); foreach (var item in doc.DocumentElement.SelectNodes(".//track")) { SongModel song = SongModel.GetNew(uint.Parse(item.ElementText("song_id"))); song.Name = item.Element("title").InnerText; if (song.Album == null) { AlbumModel am = AlbumModel.GetNew(uint.Parse(item.ElementText("album_id"))); am.Name = item.ElementText("album_name"); if (am.Artist == null) { ArtistModel ar = ArtistModel.GetNew(uint.Parse(item.ElementText("artist_id"))); ar.Name = item.ElementText("artist"); am.Artist = ar; } var image = item.ElementText("pic"); am.Art = new Uri(image.Replace("_1", "_2")); am.ArtFull = new Uri(image.Replace("_1", "")); song.Album = am; var encry = item.ElementText("location"); var decry = DataApi.ParseDownloadLink(int.Parse(encry[0].ToString()), encry.Substring(1)); song.MediaUri = new Uri(System.Net.WebUtility.UrlDecode(decry).Replace('^', '0')); song.Duration = TimeSpan.FromSeconds(double.Parse(item.ElementText("length")) * 1000 + 1); } radio.Enqueue(song); } } catch (Exception e) { LogService.ErrorWrite(e, nameof(WebApi)); throw e; } }); }