public static IObservable <Uri> GetTrackAddressAsync(TrackContract track)
        {
            var remoteTrackUrl = new Uri(track.TrackUrl, UriKind.Absolute);
            var localFileName  = "Track-" + track.Id + Path.GetExtension(track.TrackUrl);
            var localFullPath  = "Audio/" + localFileName;

            if (Storage.Exists(localFullPath))
            {
                return(Observable.Return(new Uri(localFullPath, UriKind.Relative)));
            }

            ////return Downloader.GetAndSaveFile(remoteTrackUrl, localFullPath).Select(_ => new Uri(localFullPath, UriKind.Relative));
            return(Observable.Return(remoteTrackUrl));
        }
        public void Load(TrackContract track, bool censor)
        {
            if (track == null)
            {
                return;
            }
            this.title  = (track.Name ?? string.Empty).Trim();
            this.artist = (track.Artist ?? string.Empty).Trim();
            this.Id     = track.Id;
            const string Pattern = @"\((.|\n)*?\)";

            var simplifiedArtistName = Regex.Replace(this.artist, Pattern, string.Empty);
            var simplifiedTrackName  = Regex.Replace(this.title, Pattern, string.Empty);

            this.NavigationUrl = new Uri("music://zune?" + simplifiedArtistName + " " + simplifiedTrackName, UriKind.Absolute);
            this.IsFavourite   = track.IsFavourite;
        }
 /// <summary>
 /// Initializes a new instance of the TrackViewModel class.
 /// </summary>
 /// <param name="track">
 /// </param>
 public TrackViewModel(TrackContract track, bool censor)
     : this()
 {
     this.Load(track, censor);
 }