コード例 #1
0
        public async Task<ChannelItemResult> GetAllMedia(InternalAllChannelMediaQuery query, CancellationToken cancellationToken)
        {
            if (query.ContentTypes.Length > 0 && !query.ContentTypes.Contains(ChannelMediaContentType.Podcast))
            {
                return new ChannelItemResult();
            }

            var tasks = Plugin.Instance.Configuration.Feeds.Select(async i =>
            {
                try
                {
                    return await GetChannelItemsInternal(i, cancellationToken).ConfigureAwait(false);
                }
                catch (Exception ex)
                {
                    _notificationManager.SendNotification(new NotificationRequest
                    {
                        Description = "Error getting channel items" + ex,
                        Date = DateTime.Now,
                        Level = NotificationLevel.Error,
                        SendToUserMode = SendToUserType.Admins
                    }, cancellationToken);

                    Plugin.Logger.ErrorException("Error getting channel items", ex);

                    return new List<ChannelItemInfo>();
                }
            });

            var items = (await Task.WhenAll(tasks).ConfigureAwait(false))
                .SelectMany(i => i);

            if (query.ContentTypes.Length > 0)
            {
                items = items.Where(i => query.ContentTypes.Contains(i.ContentType));
            }

            var all = items.ToList();

            return new ChannelItemResult
            {
                Items = all,
                TotalRecordCount = all.Count
            };
        }
コード例 #2
0
        public Task<ChannelItemResult> GetAllMedia(InternalAllChannelMediaQuery query, CancellationToken cancellationToken)
        {
            return GetChannelItems(new InternalChannelItemQuery
            {
                UserId = query.UserId

            }, cancellationToken);
        }
コード例 #3
0
ファイル: TrailerChannel.cs プロジェクト: algel/Emby.Channels
        public async Task<ChannelItemResult> GetAllMedia(InternalAllChannelMediaQuery query, CancellationToken cancellationToken)
        {
            var items = await GetAllItems(false, cancellationToken).ConfigureAwait(false);

            if (query.ContentTypes.Length > 0)
            {
                items = items.Where(i => query.ContentTypes.Contains(i.ContentType));
            }
            if (query.ExtraTypes.Length > 0)
            {
                items = items.Where(i => query.ExtraTypes.Contains(i.ExtraType));
            }
            if (query.TrailerTypes.Length > 0)
            {
                items = items.Where(i => i.TrailerTypes.Any(t => query.TrailerTypes.Contains(t)));
            }

            var list = items.ToList();

            return new ChannelItemResult
            {
                Items = list,
                TotalRecordCount = list.Count
            };
        }
コード例 #4
0
        public async Task<ChannelItemResult> GetAllMedia(InternalAllChannelMediaQuery query, CancellationToken cancellationToken)
        {
            var tasks = Plugin.Instance.Configuration.Feeds.Select(async i =>
            {

                try
                {
                    return await GetChannelItemsInternal(i, cancellationToken).ConfigureAwait(false);
                }
                catch (Exception ex)
                {
                    Plugin.Logger.ErrorException("Error getting channel items", ex);

                    return new List<ChannelItemInfo>();
                }
            });

            var items = await Task.WhenAll(tasks).ConfigureAwait(false);

            var all = items.SelectMany(i => i).ToList();

            return new ChannelItemResult
            {
                Items = all,
                TotalRecordCount = all.Count
            };
        }