public override void readMetadata_URLock(MetadataFactory.ReadOptions options, System.Threading.CancellationToken token) { String mimeType; try { ItemState = MediaItemState.LOADING; YoutubeItemMetadata metaData = new YoutubeItemMetadata(); SearchResult searchInfo = Info as SearchResult; metaData.Thumbnail = new MediaViewer.MediaDatabase.Thumbnail(loadThumbnail(out mimeType, token)); metaData.CreationDate = PublishedAt; metaData.Title = Name; metaData.Description = String.IsNullOrEmpty(Description) ? Name : Description; Metadata = metaData; ItemState = MediaItemState.LOADED; } catch (Exception e) { if (e is System.Net.WebException && ((System.Net.WebException)e).Status == WebExceptionStatus.Timeout) { ItemState = MediaItemState.TIMED_OUT; } else { ItemState = MediaItemState.ERROR; } } }
public override void readMetadata_URLock(MetadataFactory.ReadOptions options, System.Threading.CancellationToken token) { String mimeType; try { ItemState = MediaItemState.LOADING; YoutubeItemMetadata metaData = new YoutubeItemMetadata(); SearchResult searchInfo = Info as SearchResult; metaData.Thumbnail = new MediaViewer.MediaDatabase.Thumbnail(loadThumbnail(out mimeType, token)); metaData.CreationDate = PublishedAt; metaData.Title = Name; metaData.Description = String.IsNullOrEmpty(Description) ? Name : Description; Metadata = metaData; ItemState = MediaItemState.LOADED; } catch (Exception e) { if (e is System.Net.WebException && ((System.Net.WebException)e).Status == WebExceptionStatus.Timeout) { ItemState = MediaItemState.TIMED_OUT; } else { ItemState = MediaItemState.ERROR; } } }
public override void readMetadata_URLock(MetadataFactory.ReadOptions options, System.Threading.CancellationToken token) { String thumbnailMimeType; try { ItemState = MediaItemState.LOADING; YoutubeItemMetadata metaData = new YoutubeItemMetadata(); metaData.Thumbnail = new MediaViewer.MediaDatabase.Thumbnail(loadThumbnail(out thumbnailMimeType, token)); metaData.CreationDate = PublishedAt; metaData.Title = Title; metaData.Description = String.IsNullOrEmpty(Description) ? Title : Description; metaData.SupportsXMPMetadata = true; NameValueCollection videoInfo; IsEmbeddedOnly = !getVideoInfo(VideoId, out videoInfo, token); if (!IsEmbeddedOnly) { YoutubeVideoStreamedItem video, audio; getStreams(out video, out audio); VideoMetadata videoMetadata = video == null ? null : video.Metadata as VideoMetadata; VideoMetadata audioMetadata = audio == null ? null : audio.Metadata as VideoMetadata; if (videoMetadata != null) { metaData.Width = videoMetadata.Width; metaData.Height = videoMetadata.Height; metaData.MimeType = videoMetadata.MimeType; metaData.FramesPerSecond = videoMetadata.FramesPerSecond == 0 ? null : new Nullable<double>(videoMetadata.FramesPerSecond); metaData.SizeBytes = videoMetadata.SizeBytes; } if (audioMetadata != null) { metaData.SizeBytes += audioMetadata.SizeBytes; } if (videoMetadata == null && audioMetadata == null) { HasPlayableStreams = false; } else { HasPlayableStreams = true; } } long durationSeconds; if (long.TryParse(videoInfo["length_seconds"], out durationSeconds)) { metaData.DurationSeconds = durationSeconds; } long viewCount; if (long.TryParse(videoInfo["view_count"], out viewCount)) { metaData.ViewCount = viewCount; } double rating; if (double.TryParse(videoInfo["avg_rating"], NumberStyles.Float, new CultureInfo("en-US"), out rating)) { metaData.Rating = rating; } metaData.Author = videoInfo["author"]; String tags = videoInfo["keywords"]; if (tags != null) { string[] tagNames = tags.Split(new char[] { ',' }); foreach (string tagName in tagNames) { if (String.IsNullOrEmpty(tagName) || String.IsNullOrWhiteSpace(tagName)) continue; Tag newTag = new Tag(); newTag.Name = tagName; metaData.Tags.Add(newTag); } } Metadata = metaData; ItemState = MediaItemState.LOADED; } catch (Exception e) { if (e is System.Net.WebException && ((System.Net.WebException)e).Status == WebExceptionStatus.Timeout) { ItemState = MediaItemState.TIMED_OUT; } else { ItemState = MediaItemState.ERROR; } } }
public override void readMetadata_URLock(MetadataFactory.ReadOptions options, System.Threading.CancellationToken token) { String thumbnailMimeType; try { ItemState = MediaItemState.LOADING; YoutubeItemMetadata metaData = new YoutubeItemMetadata(); metaData.Thumbnail = new MediaViewer.MediaDatabase.Thumbnail(loadThumbnail(out thumbnailMimeType, token)); metaData.CreationDate = PublishedAt; metaData.Title = Title; metaData.Description = String.IsNullOrEmpty(Description) ? Title : Description; metaData.SupportsXMPMetadata = true; NameValueCollection videoInfo; IsEmbeddedOnly = !getVideoInfo(VideoId, out videoInfo, token); if (!IsEmbeddedOnly) { YoutubeVideoStreamedItem video, audio; getStreams(out video, out audio); VideoMetadata videoMetadata = video == null ? null : video.Metadata as VideoMetadata; VideoMetadata audioMetadata = audio == null ? null : audio.Metadata as VideoMetadata; if (videoMetadata != null) { metaData.Width = videoMetadata.Width; metaData.Height = videoMetadata.Height; metaData.MimeType = videoMetadata.MimeType; metaData.FramesPerSecond = videoMetadata.FramesPerSecond == 0 ? null : new Nullable <double>(videoMetadata.FramesPerSecond); metaData.SizeBytes = videoMetadata.SizeBytes; } if (audioMetadata != null) { metaData.SizeBytes += audioMetadata.SizeBytes; } if (videoMetadata == null && audioMetadata == null) { HasPlayableStreams = false; } else { HasPlayableStreams = true; } } long durationSeconds; if (long.TryParse(videoInfo["length_seconds"], out durationSeconds)) { metaData.DurationSeconds = durationSeconds; } long viewCount; if (long.TryParse(videoInfo["view_count"], out viewCount)) { metaData.ViewCount = viewCount; } double rating; if (double.TryParse(videoInfo["avg_rating"], NumberStyles.Float, new CultureInfo("en-US"), out rating)) { metaData.Rating = rating; } metaData.Author = videoInfo["author"]; String tags = videoInfo["keywords"]; if (tags != null) { string[] tagNames = tags.Split(new char[] { ',' }); foreach (string tagName in tagNames) { if (String.IsNullOrEmpty(tagName) || String.IsNullOrWhiteSpace(tagName)) { continue; } Tag newTag = new Tag(); newTag.Name = tagName; metaData.Tags.Add(newTag); } } Metadata = metaData; ItemState = MediaItemState.LOADED; } catch (Exception e) { if (e is System.Net.WebException && ((System.Net.WebException)e).Status == WebExceptionStatus.Timeout) { ItemState = MediaItemState.TIMED_OUT; } else { ItemState = MediaItemState.ERROR; } } }