public (UploadResult Result, Response Response) Upload(Core.Services.UploadRequest request) { try { var client = new VimeoClient(config.VideoSettings.Token); var ticket = client.GetUploadTicketAsync().Result; IBinaryContent file = new BinaryContent(request.Stream, request.ContentType); var uploadRequest = client.UploadEntireFileAsync(file).Result; var verificationResult = client.VerifyUploadFileAsync(uploadRequest).Result; Task.WaitAll(client.UpdateVideoMetadataAsync(uploadRequest.ClipId.Value, new VideoUpdateMetadata { Description = request.Description, Name = request.Title, Privacy = VideoPrivacyEnum.Password, AllowDownloadVideo = false, Password = config.VideoSettings.Password }) ); var albumResult = client.AddToAlbumAsync(4877366, uploadRequest.ClipId.Value).Result; Task.WaitAll(client.CompleteFileUploadAsync(uploadRequest)); var video = client.GetVideoAsync(uploadRequest.ClipId.Value).Result; string thumbnailUrl = null; if (video?.pictures?.sizes != null && video.pictures.sizes.Count > 0) { thumbnailUrl = video.pictures.sizes[0].link; } return(new UploadResult(uploadRequest.ClipId.ToString(), video.StandardVideoLink, thumbnailUrl), Response.CreateSuccessResponse()); }catch (Exception ex) { return(null, Response.CreateResponse(ex)); } }
/// <summary> /// Returns a VideoInfo object with video info. /// </summary> /// <param name="client">The VimeoClient to use.</param> /// <param name="videoId">The Vimeo Id of the video.</param> /// <param name="width">The closest width of the image url to return. Default is 1920px.</param> public VideoInfo GetVideoInfo(VimeoClient client, long videoId, int width = 1920) { var videoInfo = new VideoInfo(); var task = Task.Run(async() => { var video = await client.GetVideoAsync(videoId); videoInfo.vimeoId = videoId; videoInfo.name = video.name; if (!string.IsNullOrWhiteSpace(video.description)) { videoInfo.description = string.Format("<p>{0}</p>", video.description.Replace("\n", "<br>")); } else { videoInfo.description = ""; } videoInfo.duration = video.duration; videoInfo.hdLink = video.HighDefinitionVideoSecureLink; videoInfo.sdLink = video.StandardVideoSecureLink; videoInfo.hlsLink = video.StreamingVideoSecureLink; // // for 0.8.x vimeo dot net structure // var pictures = video.pictures.ToList(); var picSizes = pictures.FirstOrDefault(p => p.active == true).sizes.ToList(); // // for > 0.8.x vimeo dot net structure // //var picSizes = video.pictures.sizes.ToList(); if (picSizes.Count > 0) { videoInfo.imageUrl = picSizes.Aggregate((x, y) => Math.Abs(x.width - width) < Math.Abs(y.width - width) ? x : y).link; } }); task.Wait(); return(videoInfo); }
public (Metadata Metadata, Response Response) GetMetaData(TrainingMaterial trainingMaterial) { long clipId = 0; var client = new VimeoClient(config.VideoSettings.Token); if (!long.TryParse(trainingMaterial.ExternalId, out clipId)) { return(null, Response.CreateResponse(new IllegalOperationException("The training material id could not be converted into the desired format (string to long)"))); } try { var video = client.GetVideoAsync(clipId).Result; if (video == null || video.id != clipId) { return(null, Response.CreateResponse(new EntityNotFoundException("The desired video could not be retrieved from the host service (Vimeo)"))); } return(new Metadata { Status = video.status, Thumbnail = (video.pictures?.sizes?.Count > 0 ? video.pictures.sizes[0].link : string.Empty), Url = video.StandardVideoLink }, Response.CreateSuccessResponse()); } catch (Exception ex) { return(null, Response.CreateResponse(ex)); } }