/// <summary> /// チャンネルツール上の探索結果から、動画情報を作成します。 /// </summary> private static ChannelVideoData FromSearchResult(string text) { var result = new ChannelVideoData { Timestamp = DateTime.Now, }; // 動画ID var m = IdRegex.Match(text); if (!m.Success) { return(null); } result.Id = m.Groups[1].Value; // スレッドID m = ThreadRegex.Match(text); if (!m.Success) { return(null); } var value = int.Parse(m.Groups[1].Value); result.ThreadId = value.ToString(); // 動画タイトル m = TitleRegex.Match(text); if (!m.Success) { return(null); } result.Title = m.Groups[1].Value; // 動画の公開日時 m = DataRegex.Match(text); if (!m.Success) { return(null); } result.StartTime = DateTime.Parse(m.Groups[1].Value); // 表示/非表示 var hidden = "<span class=\"label hide_flag hide_flag_1\">非公開</span>"; result.IsVisible = !text.Contains(hidden); // 会員限定/全員公開 var memberOnly = "<span class=\"label permission_4\">会員限定</span>"; result.IsMemberOnly = text.Contains(memberOnly); return(result); }
/// <summary> /// チャンネルツールのHTML情報から、動画情報を作成します。 /// </summary> private static ChannelVideoData ParseVideoData(string htmlContent) { var result = new ChannelVideoData { Timestamp = DateTime.Now, }; var m = IdRegex.Match(htmlContent); if (!m.Success) { return(null); } result.Id = m.Groups[1].Value; m = ThreadIdRegex.Match(htmlContent); if (!m.Success) { return(null); } result.ThreadId = m.Groups[1].Value; m = TitleRegex.Match(htmlContent); if (!m.Success) { return(null); } result.Title = m.Groups[1].Value; // 動画の公開日時 m = DataRegex.Match(htmlContent); if (!m.Success) { return(null); } result.StartTime = DateTime.Parse(m.Groups[1].Value); // 表示/非表示 var hidden = "isPrivate"; result.IsVisible = !htmlContent.Contains(hidden); // 会員限定/全員公開 var memberOnly = "isMemberOnly"; result.IsMemberOnly = htmlContent.Contains(memberOnly); return(result); }
/// <summary> /// チャンネルページ上から動画の検索を行います。 /// </summary> public static IEnumerable <ChannelVideoData> Search(CookieContainer cc, int channelId, string keyword, SearchOrder order = SearchOrder.NewerVisibleStartTime, int pageId = 1, int limit = 20) { if (cc == null) { throw new ArgumentNullException("cc"); } var text = ChannelTool.RequestSearch( cc, channelId, keyword, order, pageId, limit); if (string.IsNullOrEmpty(text)) { return(new List <ChannelVideoData>()); } return(ChannelVideoData.FromSearchResults(text)); }