Example #1
0
        public VideoDetails GetDetails()
        {
            VideoDetails details = IMDbAPI.GetVideo(this.session, this.ID);

            if (details.Image == null)
            {
                details.Image = this.Image;
            }

            return(details);
        }
Example #2
0
        /// <summary>
        /// Gets the IMDb video
        /// </summary>
        /// <param name="session">Session instance.</param>
        /// <param name="imdbID">IMDb ID</param>
        /// <returns></returns>
        public static VideoDetails GetVideo(Session session, string imdbID)
        {
            VideoDetails details = new VideoDetails();
            details.session = session;
            details.ID = imdbID;

            string url = string.Format(session.Settings.VideoInfo, imdbID);
            string data = session.MakeRequest(url);
            HtmlNode root = Utility.ToHtmlNode(data);

            if (root == null)
            {
                return details;
            }

            HtmlNode titleNode = root.SelectSingleNode("//title");
            string title = titleNode.InnerText;
            title = title.Substring(title.IndexOf(':') + 1).Trim();

            details.Title = HttpUtility.HtmlDecode(title);

            HtmlNode descNode = root.SelectSingleNode("//table[@id='video-details']/tr[1]/td[2]");
            details.Description = HttpUtility.HtmlDecode(descNode.InnerText);

            string[] formats = null;
            
            MatchCollection matches = videoFormatExpression.Matches(data);
            foreach (Match m in matches)
            {
                string format = m.Groups["format"].Value;
                string video = m.Groups["video"].Value;

				if (formats == null)
				{
					string videoPlayerHtml = session.MakeRequest(session.Settings.BaseUri + video);
					var json = GetJsonForVideo(videoPlayerHtml);
					if (json != null)
					{
						formats = json["titleObject"]["encoding"].Select(q => (q as JProperty).Name).Where(q => q != "selected").ToArray();
					}
				}

				if (formats != null)
                {
                    switch (format)
                    {
						case "SD":
							if (formats.Contains("240p"))
								details.Files[VideoFormat.SD] = video;
                            break;
                        case "480p":
							if (formats.Contains("480p"))
								details.Files[VideoFormat.HD480] = video;
                            break;
                        case "720p":
							if (formats.Contains("720p"))
								details.Files[VideoFormat.HD720] = video;
                            break;
                    }

                    
                }
                else
                {
                    details.Files[VideoFormat.SD] = video;
                    break;
                }
            }

            if (details.Files.Count == 0)
            {
                details.Files.Add(VideoFormat.SD, "/video/screenplay/" + imdbID + "/player");
            }

            return details;
        }