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)); }
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)); }
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")); } }
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); }
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)); }
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)); }
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); }
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)); }
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)); }
public VideoTitleParseResult GetTitle(string id) { YoutubeVideoResponse result; try { result = service.Video(id); } catch (WebException x) { return(VideoTitleParseResult.CreateError(x.Message)); } return(GetTitle(result)); }
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)); } }
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)); }
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)); }
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); }