Example #1
0
        public async Task RemovePlaylist(int id)
        {
            Configuration configuration = await dataService.Get <Configuration>(item => item.Type == nameof(MediaPages.Playlist));

            await dataService.Delete <Playlist>(id);

            if (configuration != null)
            {
                PlaylistConfiguration playlistConfiguration = JsonConvert.DeserializeObject <PlaylistConfiguration>(configuration.JsonData);

                playlistConfiguration.SelectedPlaylistPage = PlaylistPages.Index;
                configuration.JsonData = JsonConvert.SerializeObject(playlistConfiguration);
                await dataService.Update(configuration);
            }
        }
        public PlaylistConfigurationBuilder()
        {
            _instance = new PlaylistConfiguration
            {
                MaxVideos = int.MaxValue,
                BlackListPath = string.Empty,
                PlaylistGeneratorSettings = MockRepository.GenerateStub<IPlaylistGeneratorSettings>(),
                Sequence = new List<SequenceItemConfiguration>(),
                PoolConfigurations = new List<PoolConfiguration>(),
                PlaylistGuid = Guid.NewGuid(),
                Title = "Default Title"
            };

            _instance.PlaylistGeneratorSettings.Stub(x => x.EligibleFileTypes).Return(new List<string> {"mp4", "avi", "test"});
            _instance.PlaylistGeneratorSettings.Stub(x => x.BlacklistPath).Return(string.Empty);
        }
        public Playlist Build(PlaylistConfiguration playlistConfiguration)
        {
            var videoScannerOptions = new VideoScannerOptions
            {
                Blacklist = _blacklistStore.Load(GetBlacklistPath(playlistConfiguration)),
                EligibleFileTypes = playlistConfiguration.PlaylistGeneratorSettings.EligibleFileTypes
            };

            var videoScanner = _videoScannerProvider.GetVideoScanner(videoScannerOptions);

            var videoPoolsByName = playlistConfiguration
                .PoolConfigurations
                .ToDictionary(configuration => configuration.Name, configuration => new Pool(configuration, videoScanner, _randomProvider));

            var playlist = new Playlist();

            while (playlist.Videos.Count < playlistConfiguration.MaxVideos && videoPoolsByName.Any(x => x.Value.HasVideosRemaining))
            {
                foreach (var poolName in playlistConfiguration.Sequence)
                {
                    if (playlist.Videos.Count >= playlistConfiguration.MaxVideos)
                        break;

                    var pool = videoPoolsByName[poolName.Name];
                    if (!pool.HasVideosRemaining)
                    {
                        if(pool.ShouldReload)
                            pool.ReinitializePool();
                        else
                            continue;
                    }

                    playlist.Videos.Add(pool.GetNextVideoDirectory().GetNextVideo());
                }
            }

            return playlist;
        }
 public async Task <IEnumerable <IGrouping <string, Playlist> > > GetPlaylistGroups(PlaylistConfiguration configuration)
 {
     IEnumerable <IGrouping <string, Playlist> > groups = Enumerable.Empty <IGrouping <string, Playlist> >();
     IEnumerable <Playlist> playlists = await dataService.GetList <Playlist>(default, default, playlist => playlist.PlaylistTracks,
 private static string GetBlacklistPath(PlaylistConfiguration playlistConfiguration)
 {
     return playlistConfiguration.BlackListPath ?? playlistConfiguration.PlaylistGeneratorSettings.BlacklistPath;
 }