Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
        /// <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));
        }