From 9b8462a5e7bca371f34747fea853c380c945c0f9 Mon Sep 17 00:00:00 2001 From: spx Date: Thu, 9 Jul 2015 08:16:48 +0900 Subject: [PATCH] =?utf8?q?YouTube=E3=81=AE=E3=82=B5=E3=83=A0=E3=83=8D?= =?utf8?q?=E3=82=A4=E3=83=AB=E6=83=85=E5=A0=B1=E3=82=92=E5=8F=96=E5=BE=97?= =?utf8?q?=E3=81=99=E3=82=8B=E5=87=A6=E7=90=86=E3=82=92=E5=89=8A=E9=99=A4?= =?utf8?q?=20Data=20API=20v2=E3=81=8C=E5=BB=83=E6=AD=A2=E3=81=95=E3=82=8C?= =?utf8?q?=E3=81=9F=E3=81=9F=E3=82=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- OpenTween/Thumbnail/Services/Youtube.cs | 144 ++------------------------------ 1 file changed, 7 insertions(+), 137 deletions(-) diff --git a/OpenTween/Thumbnail/Services/Youtube.cs b/OpenTween/Thumbnail/Services/Youtube.cs index dc6b1adc..4cb2ee8e 100644 --- a/OpenTween/Thumbnail/Services/Youtube.cs +++ b/OpenTween/Thumbnail/Services/Youtube.cs @@ -49,145 +49,15 @@ namespace OpenTween.Thumbnail.Services return null; var videoId = match.Groups["videoid"].Value; - var imgUrl = "http://i.ytimg.com/vi/" + videoId + "/default.jpg"; + var imgUrl = "http://i.ytimg.com/vi/" + videoId + "/hqdefault.jpg"; - // 参考 - // http://code.google.com/intl/ja/apis/youtube/2.0/developers_guide_protocol_video_entries.html - // デベロッパー ガイド: Data API プロトコル - 単独の動画情報の取得 - YouTube の API とツール - Google Code - // http://code.google.com/intl/ja/apis/youtube/2.0/developers_guide_protocol_understanding_video_feeds.html#Understanding_Feeds_and_Entries - // デベロッパー ガイド: Data API プロトコル - 動画のフィードとエントリについて - YouTube の API とツール - Google Code - var videourl = (new HttpVarious()).GetRedirectTo(url); - Match mc; - if (videourl.StartsWith("http://www.youtube.com/index?ytsession=")) + return new ThumbnailInfo { - videourl = url; - mc = match; - } - else - { - mc = Youtube.UrlPatternRegex.Match(videourl); - } - if (mc.Success) - { - var apiurl = "http://gdata.youtube.com/feeds/api/videos/" + mc.Groups["videoid"].Value; - var src = ""; - if ((new HttpVarious()).GetData(apiurl, null, out src, 5000)) - { - var sb = new StringBuilder(); - var xdoc = new XmlDocument(); - try - { - xdoc.LoadXml(src); - var nsmgr = new XmlNamespaceManager(xdoc.NameTable); - nsmgr.AddNamespace("root", "http://www.w3.org/2005/Atom"); - nsmgr.AddNamespace("app", "http://purl.org/atom/app#"); - nsmgr.AddNamespace("media", "http://search.yahoo.com/mrss/"); - - var xentryNode = xdoc.DocumentElement.SelectSingleNode("/root:entry/media:group", nsmgr); - var xentry = (XmlElement)xentryNode; - var tmp = ""; - try - { - tmp = xentry["media:title"].InnerText; - if (!string.IsNullOrEmpty(tmp)) - { - sb.Append(Properties.Resources.YouTubeInfoText1); - sb.Append(tmp); - sb.AppendLine(); - } - } - catch (Exception) - { - } - - try - { - var sec = 0; - if (int.TryParse(xentry["yt:duration"].Attributes["seconds"].Value, out sec)) - { - sb.Append(Properties.Resources.YouTubeInfoText2); - sb.AppendFormat("{0:d}:{1:d2}", sec / 60, sec % 60); - sb.AppendLine(); - } - } - catch (Exception) - { - } - - try - { - var tmpdate = new DateTime(); - xentry = (XmlElement)xdoc.DocumentElement.SelectSingleNode("/root:entry", nsmgr); - if (DateTime.TryParse(xentry["published"].InnerText, out tmpdate)) - { - sb.Append(Properties.Resources.YouTubeInfoText3); - sb.Append(tmpdate); - sb.AppendLine(); - } - } - catch (Exception) - { - } - - try - { - var count = 0; - xentry = (XmlElement)xdoc.DocumentElement.SelectSingleNode("/root:entry", nsmgr); - tmp = xentry["yt:statistics"].Attributes["viewCount"].Value; - if (int.TryParse(tmp, out count)) - { - sb.Append(Properties.Resources.YouTubeInfoText4); - sb.Append(tmp); - sb.AppendLine(); - } - } - catch (Exception) - { - } - - try - { - xentry = (XmlElement)xdoc.DocumentElement.SelectSingleNode("/root:entry/app:control", nsmgr); - if (xentry != null) - { - sb.Append(xentry["yt:state"].Attributes["name"].Value); - sb.Append(":"); - sb.Append(xentry["yt:state"].InnerText); - sb.AppendLine(); - } - } - catch (Exception) - { - } - - //mc = Regex.Match(videourl, @"^http://www\.youtube\.com/watch\?v=([\w\-]+)", RegexOptions.IgnoreCase) - //if (mc.Success) - //{ - // imgurl = mc.Result("http://i.ytimg.com/vi/${1}/default.jpg"); - //} - //mc = Regex.Match(videourl, @"^http://youtu\.be/([\w\-]+)", RegexOptions.IgnoreCase) - //if (mc.Success) - //{ - // imgurl = mc.Result("http://i.ytimg.com/vi/${1}/default.jpg"); - //} - - } - catch (Exception) - { - - } - - return new ThumbnailInfo - { - ImageUrl = url, - ThumbnailUrl = imgUrl, - TooltipText = sb.ToString().Trim(), - IsPlayable = true, - }; - } - - } - return null; + ImageUrl = url, + ThumbnailUrl = imgUrl, + TooltipText = null, + IsPlayable = true, + }; }, token); } } -- 2.11.0