private string GetPlaylistName(string smartPlaylistPath) { var decoder = new SmartPlaylistdecoder(); DecodeSmartPlaylistResult result = decoder.DecodePlaylist(smartPlaylistPath); return(result.DecodeResult.Result ? result.PlaylistName : string.Empty); }
public override async Task <IList <TrackViewModel> > GetTracksAsync(PlaylistViewModel playlist) { if (playlist == null) { return(new List <TrackViewModel>()); } string whereClause = string.Empty; await Task.Run(() => { var decoder = new SmartPlaylistdecoder(); DecodeSmartPlaylistResult result = decoder.DecodePlaylist(playlist.Path); string sqlWhereOperator = this.GetWhereOperator(result.Match); string sqlLimit = this.GetLimit(result.Limit); string sqlOrder = this.GetOrder(result.Order); IList <string> whereClauseParts = new List <string>(); foreach (Rule rule in result.Rules) { string whereClausePart = this.GetWhereClausePart(rule); if (!string.IsNullOrWhiteSpace(whereClausePart)) { whereClauseParts.Add(whereClausePart); } } // TODO: orderby whereClause = string.Join($" {sqlWhereOperator} ", whereClauseParts.ToArray()); whereClause = $"({whereClause}) {sqlLimit}"; }); if (string.IsNullOrWhiteSpace(whereClause)) { return(new List <TrackViewModel>()); } var tracks = await this.trackRepository.GetTracksAsync(whereClause); IList <TrackViewModel> trackViewModels = new List <TrackViewModel>(); try { trackViewModels = await this.container.ResolveTrackViewModelsAsync(tracks); } catch (Exception ex) { LogClient.Error($"Unable to resolve TrackViewModels. Exception: {ex.Message}"); return(new List <TrackViewModel>()); } return(trackViewModels); }