Beispiel #1
0
        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;
                }
            }
        }
Beispiel #2
0
        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;
                }
            }
            
        }
Beispiel #4
0
        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;
                }
            }
        }