Пример #1
0
        private string GetPlaylistName(string smartPlaylistPath)
        {
            var decoder = new SmartPlaylistdecoder();
            DecodeSmartPlaylistResult result = decoder.DecodePlaylist(smartPlaylistPath);

            return(result.DecodeResult.Result ? result.PlaylistName : string.Empty);
        }
Пример #2
0
        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);
        }