Esempio n. 1
0
        private async Task <List <Dto.ThreadDto.Post> > ExtractPostsAsync(IDvachApi api, EndpointOptions endpointOptions, IList <string> threadIdentifiers, CancellationToken cancellationToken)
        {
            var result = new List <Dto.ThreadDto.Post>();

            foreach (var threadId in threadIdentifiers)
            {
                var threadDto = await api.GetThread(endpointOptions.BoardId, threadId, cancellationToken);

                var posts = threadDto?.Threads?.FirstOrDefault()?.Posts ??
                            new List <Dto.ThreadDto.Post>();
                result.AddRange(posts);
            }
            result.ForEach(p => p.Comment = StripHtml(p.Comment));
            return(result.OrderBy(p => p.Timestamp).ToList());
        }
Esempio n. 2
0
        public async Task <List <Dto.ThreadDto.Post> > ExtractAsync(IDvachApi api, State state, EndpointOptions endpointOptions, CancellationToken cancellationToken)
        {
            var dvachBoard = await api.GetBoard(endpointOptions.BoardId, cancellationToken);

            var extractedThreads = ExtractThreads(dvachBoard);

            _logger.LogInformation($"{extractedThreads.Count} threads total in {endpointOptions.BoardId}");

            var filteredThreads = FilterThreads(extractedThreads, state, endpointOptions);

            _logger.LogInformation($"{filteredThreads.Count} relevant threads in {endpointOptions.BoardId}");

            var extractedPosts = await ExtractPostsAsync(api, endpointOptions, filteredThreads.Select(p => p.Num).ToList(), cancellationToken);

            _logger.LogInformation($"{extractedPosts.Count} posts extracted from {endpointOptions.BoardId} threads");

            return(extractedPosts);
        }