Exemplo n.º 1
0
    public async Task SyncAsync(string folderToUpload)
    {
        _logger.LogInformation("SyncAsync Started");

        _logger.LogDebug($"Getting existing videos from devBetter API");
        var allExistingVideos = await GetExistingVideosAsync();

        _logger.LogDebug($"Found {allExistingVideos.Count} videos in devBetter API.");

        // TODO: Change this to use an async enumerable or yield return pattern
        var videosToUpload = GetVideos(folderToUpload, allExistingVideos);

        _logger.LogInformation($"Found {videosToUpload.Count} videos in {folderToUpload}.");
        foreach (var video in videosToUpload)
        {
            var vimeoVideo = allExistingVideos.FirstOrDefault(x => x.Name.ToLower() == video.Name.ToLower());
            // TODO: Why doesn't this work with some videos like 2022-05-09 and 2022-04-08 Afternoon which are re-uploaded every time?
            if (vimeoVideo != null)
            {
                _logger.LogWarning($"{video.Name} already exists on vimeo.");
                _logger.LogInformation($"{video.Name} updating video info.");
                await UpdateVideoInfoAsync(video, long.Parse(vimeoVideo.Id), false);

                var uploadSubtitleToVideoRequest = new UploadSubtitleToVideoRequest(vimeoVideo.Id, video.Subtitle, "en");
                _ = await _uploadSubtitleToVideoService.ExecuteAsync(uploadSubtitleToVideoRequest);

                continue;
            }

            _logger.LogInformation($"Starting Uploading {video.Name}");
            // TODO: Would be good to have some progress indicator here...
            await UploadVideoAsync(video);
        }
    }
Exemplo n.º 2
0
    public async Task SyncAsync(string folderToUpload)
    {
        _logger.LogInformation("SyncAsync Started");

        _logger.LogDebug($"Getting existing videos from devBetter API");
        var allExistingVideos = await GetExistingVideosAsync();

        _logger.LogDebug($"Found {allExistingVideos.Count} videos in devBetter API.");

        var videosToUpload = GetVideos(folderToUpload, allExistingVideos);

        _logger.LogInformation($"Found {videosToUpload.Count} videos in {folderToUpload}.");
        foreach (var video in videosToUpload)
        {
            var vimeoVideo = allExistingVideos.FirstOrDefault(x => x.Name.ToLower() == video.Name.ToLower());
            if (vimeoVideo != null)
            {
                _logger.LogWarning($"{video.Name} already exists on vimeo.");
                _logger.LogInformation($"{video.Name} updating video info.");
                await UpdateVideoInfoAsync(video, long.Parse(vimeoVideo.Id), false);

                var uploadSubtitleToVideoRequest = new UploadSubtitleToVideoRequest(vimeoVideo.Id, video.Subtitle, "en");
                _ = await _uploadSubtitleToVideoService.ExecuteAsync(uploadSubtitleToVideoRequest);

                continue;
            }

            _logger.LogInformation($"Starting Uploading {video.Name}");
            // TODO: Would be good to have some progress indicator here...
            await UploadVideoAsync(video);
        }
    }
Exemplo n.º 3
0
    public async Task <IActionResult> UploadSubtitleAsync([FromForm] UploadSubtitleRequest request)
    {
        var uploadSubtitleToVideoRequest = new UploadSubtitleToVideoRequest(request.VideoId, request.Subtitle, request.Language);
        var response = await _uploadSubtitleToVideoService.ExecuteAsync(uploadSubtitleToVideoRequest);

        if (!response.Data || response.Code != System.Net.HttpStatusCode.OK)
        {
            return(NotFound($"Subtitle Not Found {request.VideoId}"));
        }

        return(Ok());
    }
Exemplo n.º 4
0
    private async Task UploadVideoAsync(Video video)
    {
        if (string.IsNullOrEmpty(video.Description))
        {
            _logger.LogWarning($"{video.Name} has no associated MD file(s)...");
        }
        var request = new UploadVideoRequest(ServiceConstants.ME, video.Data, video, _configInfo.ApiLink
                                             .Replace("https://", string.Empty)
                                             .Replace("http://", string.Empty)
                                             .Replace("/", string.Empty));

        request.FileData = video.Data;

        var response = await _uploadVideoService.ExecuteAsync(request);

        var videoId = response.Data;

        if (videoId > 0)
        {
            if (string.IsNullOrEmpty(video.Subtitle))
            {
                _logger.LogWarning($"{video.Name} has no associated Subtitle file(s)...");
            }
            else
            {
                var uploadSubtitleToVideoRequest = new UploadSubtitleToVideoRequest(videoId.ToString(), video.Subtitle, "en");
                _ = await _uploadSubtitleToVideoService.ExecuteAsync(uploadSubtitleToVideoRequest);
            }

            _logger.LogInformation($"{video.Name} Uploaded!");

            await UpdateVideoInfoAsync(video, videoId, false);
        }
        else
        {
            _logger.LogError($"{video.Name} Upload Error!");
        }
    }