Tuesday, July 21, 2015

Create Embedded Video / External Link Video using managed CSOM

We have been introduced to two new ways of adding videos to SharePoint in the latest version of SP i.e. SP 2013:
1. Embedded videos
2. Link to video.
Following is the code to add these videos programmatically using CSOM(client side object model)


using Microsoft.SharePoint.Client;
using Microsoft.SharePoint.Client.Video;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
namespace Upload_Videos
{
  class Program
  {
     static void Main(string[] args)
     {
        string _siteUrl = ""// url of site
        string _videoTitle = ""// title of video
        string _embeddedCode = ""// embedded code for video
        string _externalLink = ""// link for video
        using (ClientContext context = new ClientContext(_siteUrl))
        {
           try
           {
               Web _web = context.Web; // gets web object of current context
               List _videoList = _web.Lists.GetByTitle("Assets"); // gets object of library where we need to add video , make sure that this library has option to add video content type
               context.Load(_videoList.RootFolder); 
               context.ExecuteQuery();
               var _contentType = GetContentType(context, _videoList, "Video");// gets content type ID for video 
               var _contentTypeId = _contentType.Id;
               VideoSet.CreateVideo(context, _videoList.RootFolder, _videoTitle, _contentTypeId); // creates video with the name stored in _videoTitle
               context.ExecuteQuery();
               Microsoft.SharePoint.Client.Folder Ofile = context.Web.GetFolderByServerRelativeUrl(_videoList.RootFolder.ServerRelativeUrl + "/" + _videoTitle);
               context.Load(Ofile.ListItemAllFields);
               context.ExecuteQuery();
               Ofile.ListItemAllFields["Title"] = _videoTitle;
               Ofile.ListItemAllFields["VideoSetEmbedCode"] =_embeddedCode;
               //Ofile.ListItemAllFields["VideoSetExternalLink"] = _externalLink; //to set link for video
               Ofile.ListItemAllFields.Update();
               context.ExecuteQuery();
               Console.WriteLine("Video created!");
           }
           catch (Exception ex)
           {
              Console.WriteLine(ex.ToString());
           }
           Console.ReadLine();
        }
   }
   static private ContentType GetContentType(ClientContext ctx, List lst, string contentType)
   {
       ContentTypeCollection listContentTypes = lst.ContentTypes;
       ctx.Load(listContentTypes, types => types.Include(type => type.Id, type => type.Name,type => type.Parent));
       var result = ctx.LoadQuery(listContentTypes.Where(c => c.Name == contentType));
       ctx.ExecuteQuery();
       ContentType targetContentType = result.FirstOrDefault(); 
       return targetContentType;
   }
  }
}

No comments:

Post a Comment