Exemple #1
0
        public VideoTitleParseResult GetTitle(string id)
        {
            var service = new YoutubeService(AppConfig.YoutubeApiKey);

            YoutubeVideoResponse result;

            try {
                result = service.Video(id);
            } catch (WebException x) {
                return(VideoTitleParseResult.CreateError(x.Message));
            }

            if (!result.Items.Any())
            {
                return(VideoTitleParseResult.Empty);
            }

            var video       = result.Items.First();
            var thumbUrl    = video.Snippet.Thumbnails.Default != null ? video.Snippet.Thumbnails.Default.Url : string.Empty;
            var length      = GetLength(video);
            var author      = video.Snippet.ChannelTitle;
            var publishDate = GetPublishDate(video);

            return(VideoTitleParseResult.CreateSuccess(video.Snippet.Title, author, thumbUrl, length, uploadDate: publishDate));
        }
Exemple #2
0
        private VideoTitleParseResult GetTitle(string id)
        {
            var url = string.Format("http://vimeo.com/api/v2/video/{0}.xml", id);

            var         request    = WebRequest.Create(url);
            var         serializer = new XmlSerializer(typeof(VimeoResult));
            VimeoResult result;

            try {
                using (var response = request.GetResponse())
                    using (var stream = response.GetResponseStream()) {
                        result = (VimeoResult)serializer.Deserialize(stream);
                    }
            } catch (WebException x) {
                return(VideoTitleParseResult.CreateError("Vimeo (error): " + x.Message));
            }

            if (result == null || result.Video == null || string.IsNullOrEmpty(result.Video.Title))
            {
                return(VideoTitleParseResult.CreateError("Vimeo (error): title element not found"));
            }

            var author   = result.Video.User_Name;
            var thumbUrl = result.Video.Thumbnail_Small;
            var length   = result.Video.Duration;
            var date     = Convert.ToDateTime(result.Video.Upload_Date);         // xmlserializer can't parse the date

            return(VideoTitleParseResult.CreateSuccess(result.Video.Title, author, null, thumbUrl, length, uploadDate: date));
        }
Exemple #3
0
        public static VideoTitleParseResult GetTitleHtml(string id)
        {
            var url = string.Format("http://nicovideo.jp/watch/{0}", id);

            string      videoTitle = null;
            var         request    = WebRequest.Create(url);
            WebResponse response;

            try {
                response = request.GetResponse();
            } catch (WebException x) {
                return(VideoTitleParseResult.CreateError("NicoVideo (error): " + x.Message));
            }

            var enc = GetEncoding(response.Headers[HttpResponseHeader.ContentEncoding]);

            try {
                using (var stream = response.GetResponseStream()) {
                    videoTitle = GetVideoTitle(stream, enc);
                }
            } finally {
                response.Close();
            }

            if (!string.IsNullOrEmpty(videoTitle))
            {
                return(VideoTitleParseResult.CreateSuccess(videoTitle, null, null));
            }
            else
            {
                return(VideoTitleParseResult.CreateError("Title element not found"));
            }
        }
Exemple #4
0
        public static VideoTitleParseResult ParseResponse(NicoResponse nicoResponse)
        {
            if (nicoResponse.Status == "fail")
            {
                var err = (nicoResponse.Error != null ? nicoResponse.Error.Description : "empty response");
                return(VideoTitleParseResult.CreateError("NicoVideo (error): " + err));
            }

            var title       = HtmlEntity.DeEntitize(nicoResponse.Thumb.Title);
            var thumbUrl    = UrlHelper.UpgradeToHttps(nicoResponse.Thumb.Thumbnail_Url) ?? string.Empty;
            var userId      = nicoResponse.Thumb.User_Id ?? string.Empty;
            var length      = ParseLength(nicoResponse.Thumb.Length);
            var author      = nicoResponse.Thumb.User_Nickname;
            var publishDate = DateTimeHelper.ParseDateTimeOffsetAsDate(nicoResponse.Thumb.First_Retrieve);

            if (string.IsNullOrEmpty(author))
            {
                author = GetUserName(userId);
            }

            var result = VideoTitleParseResult.CreateSuccess(title, author, userId, thumbUrl, length, uploadDate: publishDate);

            result.Tags = nicoResponse.Thumb.Tags;

            return(result);
        }
Exemple #5
0
        public VideoTitleParseResult GetTitle(string id)
        {
            var url = string.Format("http://vimeo.com/api/v2/video/{0}.xml", id);

            var         request = WebRequest.Create(url);
            WebResponse response;

            try {
                response = request.GetResponse();
            } catch (WebException x) {
                return(VideoTitleParseResult.CreateError("Vimeo (error): " + x.Message));
            }

            XDocument doc;

            try {
                doc = XDocument.Load(response.GetResponseStream());
            } catch (XmlException x) {
                return(VideoTitleParseResult.CreateError("Vimeo (error): " + x.Message));
            }

            var titleElem = doc.XPathSelectElement("videos/video/title");

            if (titleElem == null)
            {
                return(VideoTitleParseResult.CreateError("Vimeo (error): title element not found"));
            }

            var author   = XmlHelper.GetNodeTextOrEmpty(doc, "videos/video/user_name");
            var thumbUrl = XmlHelper.GetNodeTextOrEmpty(doc, "videos/video/thumbnail_small");

            return(VideoTitleParseResult.CreateSuccess(titleElem.Value, author, thumbUrl));
        }
Exemple #6
0
        public static VideoTitleParseResult GetTitleAPI(string id)
        {
            var url = string.Format("https://ext.nicovideo.jp/api/getthumbinfo/{0}", id);

            var request = WebRequest.Create(url);

            request.Timeout = 10000;

            NicoResponse nicoResponse;

            try {
                using (var response = request.GetResponse())
                    using (var stream = response.GetResponseStream()) {
                        nicoResponse = GetResponse(stream);
                    }
            } catch (WebException x) {
                return(VideoTitleParseResult.CreateError("NicoVideo (error): " + x.Message));
            } catch (XmlException x) {
                return(VideoTitleParseResult.CreateError("NicoVideo (error): " + x.Message));
            } catch (IOException x) {
                return(VideoTitleParseResult.CreateError("NicoVideo (error): " + x.Message));
            }

            return(ParseResponse(nicoResponse));
        }
Exemple #7
0
        public static VideoTitleParseResult ParseResponse(NicoResponse nicoResponse)
        {
            if (nicoResponse.Status == "fail")
            {
                var err = (nicoResponse.Error != null ? nicoResponse.Error.Description : "empty response");
                return(VideoTitleParseResult.CreateError("NicoVideo (error): " + err));
            }

            var title       = HtmlEntity.DeEntitize(nicoResponse.Thumb.Title);
            var thumbUrl    = nicoResponse.Thumb.Thumbnail_Url ?? string.Empty;
            var userId      = nicoResponse.Thumb.User_Id ?? string.Empty;
            var length      = ParseLength(nicoResponse.Thumb.Length);
            var author      = nicoResponse.Thumb.User_Nickname;
            var publishDate = DateTimeHelper.ParseDateTimeOffsetAsDate(nicoResponse.Thumb.First_Retrieve);

            if (string.IsNullOrEmpty(author))
            {
                author = GetUserName(userId);
            }

            var tagMapping  = nicoTagMappingFactory.GetMappings();
            var matchedTags = nicoResponse.Thumb.Tags
                              .Where(e => tagMapping.ContainsKey(e))
                              .Select(e => tagMapping[e])
                              .ToArray();

            var result = VideoTitleParseResult.CreateSuccess(title, author, thumbUrl, length, uploadDate: publishDate);

            result.AuthorId = userId;
            result.Tags     = matchedTags;

            return(result);
        }
Exemple #8
0
        public static async Task <VideoTitleParseResult> GetTitleAPIAsync(string id)
        {
            VideoDataResult result;

            try {
                result = await new NicoApiClient(HtmlEntity.DeEntitize).GetTitleAPIAsync(id);
            } catch (NicoApiException x) {
                return(VideoTitleParseResult.CreateError("NicoVideo (error): " + x.Message));
            }
            return(ParseResponse(result));
        }
Exemple #9
0
        public async Task <VideoTitleParseResult> GetTitleAsync(string id)
        {
            YoutubeVideoResponse result;

            try {
                result = await service.VideoAsync(id);
            } catch (HttpRequestException x) {
                return(VideoTitleParseResult.CreateError(x.Message));
            }

            return(GetTitle(result));
        }
Exemple #10
0
        public VideoTitleParseResult GetTitle(string id)
        {
            YoutubeVideoResponse result;

            try {
                result = service.Video(id);
            } catch (WebException x) {
                return(VideoTitleParseResult.CreateError(x.Message));
            }

            return(GetTitle(result));
        }
Exemple #11
0
        public VideoTitleParseResult GetTitle(string id)
        {
            var settings      = new YouTubeRequestSettings("VocaDB", null);
            var request       = new YouTubeRequest(settings);
            var videoEntryUrl = new Uri(string.Format("http://gdata.youtube.com/feeds/api/videos/{0}", id));

            try {
                var video    = request.Retrieve <Video>(videoEntryUrl);
                var thumbUrl = video.Thumbnails.Count > 0 ? video.Thumbnails[0].Url : string.Empty;
                return(VideoTitleParseResult.CreateSuccess(video.Title, video.Author, thumbUrl));
            } catch (Exception x) {
                return(VideoTitleParseResult.CreateError(x.Message));
            }
        }
Exemple #12
0
        public static async Task <VideoTitleParseResult> GetTitleAPIAsync(string id)
        {
            var url = string.Format("https://ext.nicovideo.jp/api/getthumbinfo/{0}", id);

            NicoResponse nicoResponse;

            try {
                nicoResponse = await XmlRequest.GetXmlObjectAsync <NicoResponse>(url);
            } catch (HttpRequestException x) {
                return(VideoTitleParseResult.CreateError("NicoVideo (error): " + x.Message));
            }

            return(ParseResponse(nicoResponse));
        }
Exemple #13
0
        public static VideoTitleParseResult GetTitleAPI(string id)
        {
            var url = string.Format("http://ext.nicovideo.jp/api/getthumbinfo/{0}", id);

            var         request = WebRequest.Create(url);
            WebResponse response;

            try {
                response = request.GetResponse();
            } catch (WebException x) {
                return(VideoTitleParseResult.CreateError("NicoVideo (error): " + x.Message));
            }

            XDocument doc;

            try {
                using (var stream = response.GetResponseStream()) {
                    doc = XDocument.Load(stream);
                }
            } catch (XmlException x) {
                return(VideoTitleParseResult.CreateError("NicoVideo (error): " + x.Message));
            }

            var res = doc.Element("nicovideo_thumb_response");

            if (res == null || res.Attribute("status") == null || res.Attribute("status").Value == "fail")
            {
                var err = (res != null ? res.XPathSelectElement("//nicovideo_thumb_response/error/description").Value : "empty response");
                return(VideoTitleParseResult.CreateError("NicoVideo (error): " + err));
            }

            var titleElem = doc.XPathSelectElement("//nicovideo_thumb_response/thumb/title");

            if (titleElem == null)
            {
                return(VideoTitleParseResult.CreateError("NicoVideo (error): title element not found"));
            }

            var title    = HtmlEntity.DeEntitize(titleElem.Value);
            var thumbUrl = XmlHelper.GetNodeTextOrEmpty(doc, "//nicovideo_thumb_response/thumb/thumbnail_url");
            var userId   = XmlHelper.GetNodeTextOrEmpty(doc, "//nicovideo_thumb_response/thumb/user_id");
            var author   = GetUserName(userId);

            return(VideoTitleParseResult.CreateSuccess(title, author, thumbUrl));
        }
Exemple #14
0
        public static VideoTitleParseResult GetTitleAPI(string id)
        {
            var url = string.Format("http://ext.nicovideo.jp/api/getthumbinfo/{0}", id);

            var request = WebRequest.Create(url);

            request.Timeout = 10000;

            XDocument doc;

            try {
                using (var response = request.GetResponse())
                    using (var stream = response.GetResponseStream()) {
                        doc = XDocument.Load(stream);
                    }
            } catch (WebException x) {
                return(VideoTitleParseResult.CreateError("NicoVideo (error): " + x.Message));
            } catch (XmlException x) {
                return(VideoTitleParseResult.CreateError("NicoVideo (error): " + x.Message));
            } catch (IOException x) {
                return(VideoTitleParseResult.CreateError("NicoVideo (error): " + x.Message));
            }

            var res = doc.Element("nicovideo_thumb_response");

            if (res == null || res.Attribute("status") == null || res.Attribute("status").Value == "fail")
            {
                var err = (res != null ? res.XPathSelectElement("//nicovideo_thumb_response/error/description").Value : "empty response");
                return(VideoTitleParseResult.CreateError("NicoVideo (error): " + err));
            }

            var titleElem = doc.XPathSelectElement("//nicovideo_thumb_response/thumb/title");

            if (titleElem == null)
            {
                return(VideoTitleParseResult.CreateError("NicoVideo (error): title element not found"));
            }

            var title    = HtmlEntity.DeEntitize(titleElem.Value);
            var thumbUrl = XmlHelper.GetNodeTextOrEmpty(doc, "//nicovideo_thumb_response/thumb/thumbnail_url");
            var userId   = XmlHelper.GetNodeTextOrEmpty(doc, "//nicovideo_thumb_response/thumb/user_id");
            var length   = ParseLength(XmlHelper.GetNodeTextOrEmpty(doc, "//nicovideo_thumb_response/thumb/length"));
            var author   = XmlHelper.GetNodeTextOrEmpty(doc, "//nicovideo_thumb_response/thumb/user_nickname");

            if (string.IsNullOrEmpty(author))
            {
                author = GetUserName(userId);
            }

            var tagMapping   = nicoTagMappingFactory.GetMappings();
            var nodeElements = doc.XPathSelectElements("//nicovideo_thumb_response/thumb/tags/tag");
            var matchedTags  = nodeElements
                               .Where(e => tagMapping.ContainsKey(e.Value))
                               .Select(e => tagMapping[e.Value])
                               .ToArray();

            var result = VideoTitleParseResult.CreateSuccess(title, author, thumbUrl, length);

            result.AuthorId = userId;
            result.Tags     = matchedTags;

            return(result);
        }