//たまに失敗するから注意 public List <NicoNicoHistoryData> GetHistroyData() { History.Status = "視聴履歴取得中"; int retry = 1; start: //たまに失敗する HttpResponseMessage result = NicoNicoWrapperMain.GetSession().GetResponseAsync(HistoryUrl).Result; //失敗 if (result.StatusCode == HttpStatusCode.ServiceUnavailable) { History.Status = "視聴履歴取得失敗(" + retry++ + "回)"; goto start; } HtmlDocument doc = new HtmlDocument(); doc.LoadHtml2(result.Content.ReadAsStringAsync().Result); var info = doc.DocumentNode.SelectNodes(GetVideoInfoXPath); List <NicoNicoHistoryData> ret = new List <NicoNicoHistoryData>(); if (info == null) { History.Status = "視聴履歴はありません。"; return(ret); } foreach (HtmlNode node in info) { NicoNicoHistoryData data = new NicoNicoHistoryData(); //---各種情報取得--- data.ThumbnailUrl = node.SelectSingleNode("child::div[@class='thumbContainer']/a/img").Attributes["src"].Value; //削除されていない動画だったら if (!data.ThumbnailUrl.Contains("deleted")) { data.Length = node.SelectSingleNode("child::div[@class='thumbContainer']/span").InnerText; } else { data.ThumbnailUrl = "http://www.nicovideo.jp/" + data.ThumbnailUrl; } data.WatchDate = node.SelectSingleNode("child::div[@class='section']/p").ChildNodes["#text"].InnerText; data.WatchCount = node.SelectSingleNode("child::div[@class='section']/p/span").InnerText; data.Title = HttpUtility.HtmlDecode(node.SelectSingleNode("child::div[@class='section']/h5/a").InnerText); data.Id = node.SelectSingleNode("child::div[@class='section']/h5/a").Attributes["href"].Value.Substring(6); data.ViewCounter = node.SelectSingleNode("child::div[@class='section']/ul[@class='metadata']/li[@class='play']").InnerText; data.CommentCounter = node.SelectSingleNode("child::div[@class='section']/ul[@class='metadata']/li[@class='comment']").InnerText; data.MylistCounter = node.SelectSingleNode("child::div[@class='section']/ul[@class='metadata']/li[@class='mylist']/a").InnerText; data.PostDate = node.SelectSingleNode("child::div[@class='section']/ul[@class='metadata']/li[@class='posttime']").InnerText; ret.Add(data); } History.Status = "視聴履歴取得完了"; return(ret); }
//たまに失敗するから注意 public List<NicoNicoHistoryData> GetHistroyData() { History.Status = "視聴履歴取得中"; int retry = 1; start: //たまに失敗する HttpResponseMessage result = NicoNicoWrapperMain.Session.GetResponseAsync(HistoryUrl).Result; //失敗 if(result.StatusCode == HttpStatusCode.ServiceUnavailable) { History.Status = "視聴履歴取得失敗(" + retry++ + "回)"; goto start; } HtmlDocument doc = new HtmlDocument(); doc.LoadHtml2(result.Content.ReadAsStringAsync().Result); var info = doc.DocumentNode.SelectNodes(GetVideoInfoXPath); List<NicoNicoHistoryData> ret = new List<NicoNicoHistoryData>(); if(info == null) { History.Status = "視聴履歴はありません。"; return ret; } foreach(HtmlNode node in info) { NicoNicoHistoryData data = new NicoNicoHistoryData(); //---各種情報取得--- data.ThumbnailUrl = node.SelectSingleNode("child::div[@class='thumbContainer']/a/img").Attributes["data-original"].Value; //削除されていない動画だったら if(!data.ThumbnailUrl.Contains("deleted")) { data.Length = node.SelectSingleNode("child::div[@class='thumbContainer']/span").InnerText; } else { data.ThumbnailUrl = "http://www.nicovideo.jp/" + data.ThumbnailUrl; } data.WatchDate = node.SelectSingleNode("child::div[@class='section']/p").ChildNodes["#text"].InnerText; data.WatchCount = node.SelectSingleNode("child::div[@class='section']/p/span").InnerText; data.Title = HttpUtility.HtmlDecode(node.SelectSingleNode("child::div[@class='section']/h5/a").InnerText); data.Id = node.SelectSingleNode("child::div[@class='section']/h5/a").Attributes["href"].Value.Substring(6); data.ViewCounter = node.SelectSingleNode("child::div[@class='section']/ul[@class='metadata']/li[@class='play']").InnerText; data.CommentCounter = node.SelectSingleNode("child::div[@class='section']/ul[@class='metadata']/li[@class='comment']").InnerText; data.MylistCounter = node.SelectSingleNode("child::div[@class='section']/ul[@class='metadata']/li[@class='mylist']/a").InnerText; data.PostDate = node.SelectSingleNode("child::div[@class='section']/ul[@class='metadata']/li[@class='posttime']").InnerText; ret.Add(data); } History.Status = "視聴履歴取得完了"; return ret; }