public async Task SetSourcesToAllChannelsAsync(CancellationToken cancel = default) { // var pageSize = 500; // var channels = await _channelRepository.GetAsync(new ChannelQuery(0, pageSize), cancel); // var totalPages = (Int32) (Math.Ceiling(channels.TotalCount / (Double) pageSize)); // for (var i = 1; i < totalPages; i++) // { // } var allChannels = await _channelRepository.GetAsync(ChannelQuery.GetAll(), cancel); var allSourcesAggregated = await _sourceRepository.GetAggregationByTitleAsync(SourceQuery.GetAll(), cancel); var sources = allSourcesAggregated.Items.ToDictionary(x => x.Title, v => v.Sources); foreach (var channel in allChannels.Items) { if (channel.LockSourceUrl) { continue; } var titleLower = channel.Title.ToLowerInvariant(); List <Source> processingSources = new List <Source>(1); if (sources.ContainsKey(titleLower)) { processingSources = sources[titleLower]; } if (channel.AlternativeTitles.IsNotEmpty()) { foreach (var alternativeTitle in channel.AlternativeTitles) { var alternativeTitleLower = alternativeTitle.ToLowerInvariant(); { if (sources.ContainsKey(alternativeTitleLower)) { processingSources.AddRange(sources[alternativeTitleLower]); } } } } processingSources = processingSources.Where(x => x.FrameSize > 0).ToList(); if (processingSources.IsEmpty()) { continue; } var actualSource = processingSources.OrderBy(x => x.PriorityNumber) .ThenByDescending(x => x.LastScanDate) .ThenByDescending(x => x.FrameSize) .First(); channel.CurrentSourceUrl = actualSource.Url; await _channelRepository.UpdateAsync(channel, cancel); } }
public async Task HandleReply(Message message) { var replyMessage = message.ReplyToMessage.Text; if (replyMessage == MessageConstants.EnterQuery && message.Text != null) { var queryModel = new ChannelQuery(message.Text); var user = CurrentUser.Instance; if (user.Queries is null) { user.Queries = new List <ChannelQuery>(); } user.Queries.Add(queryModel); _serviceHelper .TryCatch(() => _userRepository.UpdateAsync(user)); await _parameterService.SendAsync(message.CurrentChatId(), queryModel.Name); } else { throw new ArgumentException(nameof(message)); } }
private async Task LoadData(bool isRefresh) { if (!NavigationService.IsNetworkAvailable || (_channelsLoaded && !isRefresh)) { return; } var query = new ChannelQuery { UserId = AuthenticationService.Current.LoggedInUserId }; try { SetProgressBar(AppResources.SysTrayGettingChannels); var items = await ApiClient.GetChannels(query); Channels = new ObservableCollection <BaseItemDto>(items.Items); _channelsLoaded = true; } catch (HttpException ex) { Utils.HandleHttpException(ex, "LoadData(" + isRefresh + ")", NavigationService, Log); } SetProgressBar(); }
public Task <QueryResult <BaseItemDto> > GetChannels(ChannelQuery query, CancellationToken cancellationToken) { var user = string.IsNullOrWhiteSpace(query.UserId) ? null : _userManager.GetUserById(new Guid(query.UserId)); var channels = _channelEntities.OrderBy(i => i.SortName).ToList(); if (user != null) { channels = channels.Where(i => GetChannelProvider(i).IsEnabledFor(user) && i.IsVisible(user)) .ToList(); } // Get everything var fields = Enum.GetNames(typeof(ItemFields)) .Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true)) .ToList(); var returnItems = channels.Select(i => _dtoService.GetBaseItemDto(i, fields, user)) .ToArray(); var result = new QueryResult <BaseItemDto> { Items = returnItems, TotalRecordCount = returnItems.Length }; return(Task.FromResult(result)); }
public async Task <SearchResponse> GetResults() { SearchResponse response = new SearchResponse(); List <SearchResult> result = await LoadItems(); List <string> videosId = new List <string>(); List <string> channelsId = new List <string>(); List <string> playlistsId = new List <string>(); result.ForEach(item => { switch (item.Id.Kind) { case "youtube#video": videosId.Add(item.Id.VideoId); break; case "youtube#channel": channelsId.Add(item.Id.ChannelId); break; case "youtube#playlist": playlistsId.Add(item.Id.PlaylistId); break; } }); VideoQuery videoQuery = new VideoQuery { Part = "snippet,contentDetails", Id = string.Join(",", videosId), MaxResults = this.Query.MaxResults }; VideoListResponse videoResponse = await service.GetVideoInfo(videoQuery); response.Videos.AddRange(videoResponse.Items); ChannelQuery channelQuery = new ChannelQuery { Part = "snippet,statistics", Id = string.Join(",", channelsId), MaxResults = this.Query.MaxResults }; ChannelListResponse channelResponse = await service.GetChannelInfo(channelQuery); response.Channels.AddRange(channelResponse.Items); PlaylistQuery playlistQuery = new PlaylistQuery { Part = "snippet,status,contentDetails", Id = string.Join(",", playlistsId), MaxResults = this.Query.MaxResults }; PlaylistListResponse playlistResponse = await service.GetPlaylistInfo(playlistQuery); response.Playlists.AddRange(playlistResponse.Items); return(response); }
public Task <QueryResult <Channel> > GetChannelsInternal(ChannelQuery query, CancellationToken cancellationToken) { var user = string.IsNullOrWhiteSpace(query.UserId) ? null : _userManager.GetUserById(new Guid(query.UserId)); var channels = GetAllChannels() .Select(GetChannelEntity) .OrderBy(i => i.SortName) .ToList(); if (query.SupportsLatestItems.HasValue) { var val = query.SupportsLatestItems.Value; channels = channels.Where(i => (GetChannelProvider(i) is ISupportsLatestMedia) == val) .ToList(); } if (query.IsFavorite.HasValue) { var val = query.IsFavorite.Value; channels = channels.Where(i => _userDataManager.GetUserData(user.Id, i.GetUserDataKey()).IsFavorite == val) .ToList(); } if (user != null) { channels = channels.Where(i => GetChannelProvider(i).IsEnabledFor(user.Id.ToString("N")) && i.IsVisible(user)) .ToList(); } var all = channels; var totalCount = all.Count; if (query.StartIndex.HasValue) { all = all.Skip(query.StartIndex.Value).ToList(); } if (query.Limit.HasValue) { all = all.Take(query.Limit.Value).ToList(); } var returnItems = all.ToArray(); var result = new QueryResult <Channel> { Items = returnItems, TotalRecordCount = totalCount }; return(Task.FromResult(result)); }
private async Task <ItemsResult> GetChannelsAsync(ItemListViewModel viewModel) { var query = new ChannelQuery { UserId = _sessionManager.CurrentUser.Id }; var result = await _apiClient.GetChannels(query, CancellationToken.None); return(new ItemsResult { Items = result.Items, TotalRecordCount = result.TotalRecordCount }); }
public async Task <Page <Channel> > GetAsync(ChannelQuery query, CancellationToken cancel = default) { var allChannels = await GetAllChannelsFromFileAsync(cancel); var page = new Page <Channel> { Items = allChannels.Skip(query.Offset) .Take(query.Limit) .Select(x => x.Value) .ToList(), TotalCount = allChannels.Count }; return(page); }
public async Task <List <Channel> > GetChannels(ChannelQuery query) { Func <Task <List <Channel> > > add = async() => { var p = new Dictionary <string, string>(); if (!query.IncludeArchived) { p.Add("exclude_archived", "1"); } var root = await _slackApiHelper.Get <ChannelsRoot>("channels.list", _settings.SlackApiAuthToken, p); return(query.MyChannelsOnly ? root.channels.Where(c => c.is_member).ToList() : root.channels.ToList()); }; return(await _cache.Get("Channels", add, TimeSpan.FromMinutes(3))); }
/// <summary> /// 获取子栏目列表 /// </summary> /// <returns>栏目列表</returns> protected List <Channel> GetChannels() { ChannelQuery query = new ChannelQuery(); if (OrderFields == null || OrderFields == string.Empty) { OrderFields = "Index|Asc"; } query.OrderKeys = OrderFields; query.State = ArticleStates.Started; if (ParentID != null && ParentID.Length > 0) { query.ParentID = ParentID; } else if (Level != null && Level.Length > 0 & We7Helper.IsNumber(Level)) { query.ParentID = GetParentIDByLevel((int.Parse(Level) - 1).ToString()); } else { if (CurrentChannel == null) { query.ParentID = We7.We7Helper.EmptyGUID; } else { query.ParentID = CurrentChannel.ID; } } if (Tag != null && Tag.Length > 0) { query.Tag = Tag; } List <Channel> list = ChannelHelper.QueryChannels(query); if (list == null) { list = new List <Channel>(); } list = FormatChannelsData(list); return(list); }
public QueryResult <BaseItemDto> GetChannels(ChannelQuery query) { var user = query.UserId.Equals(Guid.Empty) ? null : _userManager.GetUserById(query.UserId); var internalResult = GetChannelsInternal(query); var dtoOptions = new DtoOptions(); // TODO Fix The co-variant conversion (internalResult.Items) between Folder[] and BaseItem[], this can generate runtime issues. var returnItems = _dtoService.GetBaseItemDtos(internalResult.Items, dtoOptions, user); var result = new QueryResult <BaseItemDto>( query.StartIndex, internalResult.TotalRecordCount, returnItems); return(result); }
public async Task <QueryResult <BaseItemDto> > GetChannels(ChannelQuery query, CancellationToken cancellationToken) { var user = string.IsNullOrEmpty(query.UserId) ? null : _userManager.GetUserById(query.UserId); var internalResult = await GetChannelsInternal(query, cancellationToken).ConfigureAwait(false); var dtoOptions = new DtoOptions() { }; var returnItems = _dtoService.GetBaseItemDtos(internalResult.Items, dtoOptions, user); var result = new QueryResult <BaseItemDto> { Items = returnItems, TotalRecordCount = internalResult.TotalRecordCount }; return(result); }
public QueryResult <BaseItemDto> GetChannels(ChannelQuery query) { var user = query.UserId.Equals(Guid.Empty) ? null : _userManager.GetUserById(query.UserId); var internalResult = GetChannelsInternal(query); var dtoOptions = new DtoOptions() { }; var returnItems = _dtoService.GetBaseItemDtos(internalResult.Items, dtoOptions, user); var result = new QueryResult <BaseItemDto> { Items = returnItems, TotalRecordCount = internalResult.TotalRecordCount }; return(result); }
public async Task <QueryResult <BaseItemDto> > GetChannels(ChannelQuery query, CancellationToken cancellationToken) { var user = string.IsNullOrWhiteSpace(query.UserId) ? null : _userManager.GetUserById(new Guid(query.UserId)); var internalResult = await GetChannelsInternal(query, cancellationToken).ConfigureAwait(false); // Get everything var fields = Enum.GetNames(typeof(ItemFields)) .Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true)) .ToList(); var returnItems = internalResult.Items.Select(i => _dtoService.GetBaseItemDto(i, fields, user)) .ToArray(); var result = new QueryResult <BaseItemDto> { Items = returnItems, TotalRecordCount = internalResult.TotalRecordCount }; return(result); }
public QueryResult <Channel> GetChannelsInternal(ChannelQuery query) { var user = query.UserId.Equals(Guid.Empty) ? null : _userManager.GetUserById(query.UserId); var channels = GetAllChannels() .Select(GetChannelEntity) .OrderBy(i => i.SortName) .ToList(); if (query.IsRecordingsFolder.HasValue) { var val = query.IsRecordingsFolder.Value; channels = channels.Where(i => { try { var hasAttributes = GetChannelProvider(i) as IHasFolderAttributes; return((hasAttributes != null && hasAttributes.Attributes.Contains("Recordings", StringComparer.OrdinalIgnoreCase)) == val); } catch { return(false); } }).ToList(); } if (query.SupportsLatestItems.HasValue) { var val = query.SupportsLatestItems.Value; channels = channels.Where(i => { try { return(GetChannelProvider(i) is ISupportsLatestMedia == val); } catch { return(false); } }).ToList(); } if (query.SupportsMediaDeletion.HasValue) { var val = query.SupportsMediaDeletion.Value; channels = channels.Where(i => { try { return(GetChannelProvider(i) is ISupportsDelete == val); } catch { return(false); } }).ToList(); } if (query.IsFavorite.HasValue) { var val = query.IsFavorite.Value; channels = channels.Where(i => _userDataManager.GetUserData(user, i).IsFavorite == val) .ToList(); } if (user != null) { channels = channels.Where(i => { if (!i.IsVisible(user)) { return(false); } try { return(GetChannelProvider(i).IsEnabledFor(user.Id.ToString("N", CultureInfo.InvariantCulture))); } catch { return(false); } }).ToList(); } var all = channels; var totalCount = all.Count; if (query.StartIndex.HasValue) { all = all.Skip(query.StartIndex.Value).ToList(); } if (query.Limit.HasValue) { all = all.Take(query.Limit.Value).ToList(); } var returnItems = all.ToArray(); if (query.RefreshLatestChannelItems) { foreach (var item in returnItems) { RefreshLatestChannelItems(GetChannelProvider(item), CancellationToken.None).GetAwaiter().GetResult(); } } return(new QueryResult <Channel> { Items = returnItems, TotalRecordCount = totalCount }); }
public Task <Page <Channel> > GetAsync(ChannelQuery query, CancellationToken cancel = default) { return(_channelRepository.GetAsync(query, cancel)); }
/// <summary> /// 获取子栏目列表 /// </summary> /// <returns>栏目列表</returns> protected List <Channel> GetChannels() { List <Channel> list = new List <Channel>(); if (DesignHelper.IsDesigning) { list = DesignRecords; } else { StringBuilder sb = new StringBuilder(); sb.Append("ChannelDataProvider$GetChannels$"); sb.AppendFormat("ID:{0}$Url:{1}$", ID, We7Helper.GetChannelUrlFromUrl(Request.RawUrl)); list = CacheRecord.Create("channel").GetInstance <List <Channel> >(sb.ToString(), delegate() { ChannelQuery query = new ChannelQuery(); if (OrderFields == null || OrderFields == string.Empty) { OrderFields = "Index|Asc"; } query.OrderKeys = OrderFields; query.State = ArticleStates.Started; if (ParentID != null && ParentID.Length > 0) { query.ParentID = ParentID; } else if (Level != null && Level.Length > 0 & We7Helper.IsNumber(Level)) { query.ParentID = GetParentIDByLevel((int.Parse(Level) - 1).ToString()); } else { query.ParentID = ChannelID; } if (Tag != null && Tag.Length > 0) { query.Tag = Tag; } if (IncludeAllSons) { query.IncludeAllSons = true; } if (channelFlag && string.IsNullOrEmpty(level)) { if (ThisChannel == null) { ThisChannel = new Channel(); } ThisChannel.HaveSon = ChannelHelper.HasChild(ChannelID); if (!ThisChannel.HaveSon && noChildsDisplay) { query.ParentID = ThisChannel.ParentID; } } return(ChannelHelper.QueryChannels(query)); }); } return(list != null?FormatChannelsData(list) : new List <Channel>()); }
public async Task <List <Channel> > GetChannels(ChannelQuery query) { var channels = await GetJson <ChannelsRoot>("channels"); return(channels.channels.ToList()); }
public QueryResult <Channel> GetChannelsInternal(ChannelQuery query) { var user = query.UserId.Equals(default)