public void Insert(SPList mediaList, MediaAsset asset, out int id, out string contentTypeId)
        {
            var item = mediaList.Items.Add();
            item["ContentTypeId"] = GetContentTypeId(mediaList, asset.MediaType.ToString());
            item["Title"] = asset.Title;
            item[new Guid(MediaAssetsColumns.TempLocation)] = asset.TempLocation;
            item[new Guid(MediaAssetsColumns.Format)] = asset.Format;
            item[new Guid(MediaAssetsColumns.ProcStatus)] = Enum.GetName(typeof(ProcessingStatus), asset.Status);
            if (!String.IsNullOrEmpty(asset.Location))
            {
                item[new Guid(MediaAssetsColumns.Location)] = asset.Location;
            }
            if (!String.IsNullOrEmpty(asset.Thumbnail))
            {
                item[new Guid(MediaAssetsColumns.Thumbnail)] = asset.Thumbnail;
            }
            if (!String.IsNullOrEmpty(asset.Poster))
            {
                item[new Guid(MediaAssetsColumns.Poster)] = asset.Poster;
            }
            if ((asset.MediaType == MediaType.Audio || asset.MediaType == MediaType.Video) && asset.Duration != TimeSpan.MinValue)
            {
                item[new Guid(MediaAssetsColumns.Length)] = asset.Duration.TotalSeconds;
            }
            item.Update();

            id = item.ID;
            contentTypeId = item.ContentTypeId.ToString();
        }
        public IEnumerable<MediaAsset> GetMediaToProcess()
        {
            ClientContext ctx = new ClientContext(webFullUrl);
            Web web = ctx.Web;

            List list = web.Lists.GetByTitle(mediaAssetsList);

            CamlQuery camlQuery = new CamlQuery();
            camlQuery.ViewXml =
                         @"<View>
                            <Query>
                              <Where>
                                <Eq>
                                    <FieldRef Name='MediaProcStatus'/>
                                    <Value Type='Text'>Pending</Value>
                                </Eq>
                              </Where>
                            </Query>
                            <RowLimit>100</RowLimit>
                          </View>";
            ListItemCollection listItems = list.GetItems(camlQuery);
            ctx.Load(
                    listItems,
                    items => items
                        .Include(
                            item => item.Id,
                            item => item["Title"],
                            item => item.ContentType,
                            item => item["MediaTempLocation"],
                            item => item["Author"]));
            ctx.ExecuteQuery();
            foreach (ListItem item in listItems)
            {
                MediaAsset asset = new MediaAsset();
                asset.Id = item.Id;
                asset.Title = item["Title"].ToString();
                asset.TempLocation = item["MediaTempLocation"] != null ? item["MediaTempLocation"].ToString() : String.Empty;
                if (item.ContentType.Name.Contains(MediaType.Audio.ToString()))
                {
                    asset.MediaType = MediaType.Audio;
                }
                else if (item.ContentType.Name.Contains(MediaType.Image.ToString()))
                {
                    asset.MediaType = MediaType.Image;
                }
                else
                {
                    asset.MediaType = MediaType.Video;
                }
                var user = item.FieldValues["Author"] as FieldUserValue;
                asset.UploaderEmail = GetUserEmail(user.LookupId);
                yield return asset;

            }
        }
 public static MediaAsset FromFile(FileInfo fileInfo, string originatingWeb, MediaConfig config)
 {
     MediaAsset item = new MediaAsset();
     item.MediaType = GetMediaTypeFromFileExtension(fileInfo, config);
     item.Title = Path.GetFileNameWithoutExtension(fileInfo.FullName);
     item.OriginatingWeb = originatingWeb;
     item.Format = GetMediaFormat(fileInfo);
     return item;
 }