Exemple #1
0
        public async Task <FileInfo> Write(InternalVideo internalVideo, string content)
        {
            var fileInfo = await _srtFileWriter.Write(internalVideo, content);

            _logger.Information($"Wrote SRT file to {fileInfo.FullName}.");
            return(fileInfo);
        }
        public async Task Write(InternalVideo internalVideo)
        {
            _logger.Information($"Saving video {internalVideo.Name}.");
            await _videoWriter.Write(internalVideo);

            _logger.Information("Done saving video chat.");
        }
 public async Task Write(InternalVideo video, IEnumerable <InternalComment> comments)
 {
     var srtLines = _srtLineWriter.Write(comments);
     var content  = string.Join("",
                                srtLines.Select((srtLine, index) =>
                                                $"{index + 1}\n{srtLine.StartTime:hh\\:mm\\:ss\\,fff} --> {srtLine.EndTime:hh\\:mm\\:ss\\,fff}\n{srtLine.Message}\n"));
     await _srtFileWriter.Write(video, content);
 }
Exemple #4
0
        public async Task <FileInfo> Write(InternalVideo internalVideo, string content)
        {
            var safeName = string.Concat(internalVideo.Name.Split(Path.GetInvalidFileNameChars()));
            var path     = Path.Combine(_srtFileSettings.OutputDirectory.FullName, $"{safeName}-v{internalVideo.Id}.srt");
            await File.WriteAllTextAsync(path, content);

            return(new FileInfo(path));
        }
        public async Task <IEnumerable <InternalComment> > GetComments(InternalVideo video)
        {
            var comments = await _twitchApi.Undocumented.GetAllCommentsAsync(video.Id.ToString());

            return(comments
                   .SelectMany(page => page.Comments)
                   .Select(comment =>
                           new InternalComment(
                               comment.Commenter.DisplayName ?? comment.Commenter.Name,
                               comment.Message.UserColor,
                               comment.Message.Body,
                               TimeSpan.FromSeconds(comment.ContentOffsetSeconds))));
        }
        public async Task <IEnumerable <InternalComment> > GetComments(InternalVideo video)
        {
            _logger.Information($"Getting comments for video {video.Name}, ID {video.Id}.");
            var comments = (await _commentsRetriever.GetComments(video)).ToList();

            if (comments.Count == 0)
            {
                _logger.Warning("No comments found for video.");
            }
            else
            {
                _logger.Information($"Got {comments.Count} comments for video.");
            }
            return(comments);
        }
Exemple #7
0
        public async Task <IEnumerable <InternalComment> > GetComments(InternalVideo video)
        {
            var cachePath = GetCachePath(video);

            if (File.Exists(cachePath))
            {
                var text = await File.ReadAllTextAsync(cachePath);

                return(JsonConvert.DeserializeObject <IEnumerable <InternalComment> >(text));
            }

            var comments = await _commentsRetriever.GetComments(video);

            await File.WriteAllTextAsync(cachePath, JsonConvert.SerializeObject(comments));

            return(comments);
        }
Exemple #8
0
        public async Task Write(InternalVideo internalVideo)
        {
            var comments = await _commentsRetriever.GetComments(internalVideo);

            await _srtWriter.Write(internalVideo, comments);
        }
Exemple #9
0
 private string GetCachePath(InternalVideo internalVideo) =>
 Path.Combine(_commentsCacheSettings.CacheDirectory.FullName, $"{internalVideo.Id}.json");