Пример #1
0
        /// <summary>動画を検索する</summary>
        /// <param name="Keyword">検索キーワード</param>
        /// <param name="SearchPage">検索ページの指定、1~nの間の数値を指定する</param>
        /// <param name="SearchType">検索方法を指定する</param>
        /// <param name="SearchOption">検索オプションを指定する、Filterメンバは無効</param>
        public Session<Response<VideoInfo[]>> Search(
            string Keyword,
            int SearchPage,
            SearchType SearchType,
            SearchOption SearchOption)
        {
            var session = new Session<Response<VideoInfo[]>>();

            session.SetAccessers(new Func<byte[], APIs.IAccesser>[]
            {
                (data) =>
                {
                    var accesser = new APIs.search.Accesser();
                    accesser.Setting(
                        context.CookieContainer,
                        SearchType.ToKey(),
                        Keyword,
                        SearchPage.ToString(),
                        SearchOption.SortOrder.ToKey(),
                        SearchOption.SortTarget.ToKey());

                    return accesser;
                }
            },
            (data) =>
                Converter.VideoInfoResponse(context, new APIs.search.Parser().Parse(data)));

            return session;
        }
Пример #2
0
        /// <summary>動画を検索する</summary>
        /// <param name="Keyword">検索キーワード</param>
        /// <param name="SearchPage">検索ページの指定、1~nの間の数値を指定する</param>
        /// <param name="SearchType">検索方法を指定する</param>
        /// <param name="SearchOption">検索オプションを指定する、Filterメンバは無効</param>
        public Session <Response <VideoInfo[]> > Search(
            string Keyword,
            int SearchPage,
            SearchType SearchType,
            SearchOption SearchOption)
        {
            return(new Session <Response <VideoInfo[]> >((flow) =>
            {
                var accessor = new APIs.search_page_html.Accessor();
                accessor.Setting(
                    context.CookieContainer,
                    SearchType.ToKey(),
                    Keyword,
                    SearchPage.ToString(),
                    SearchOption.SortOrder.ToKey(),
                    SearchOption.SortTarget.ToKey());
                flow.Return(accessor);

                var parser = new APIs.search_page_html.Parser();
                return Converter.VideoInfoResponse(context, parser.Parse(parser.Parse(flow.GetResult())));
            }));
        }
Пример #3
0
        /// <summary>動画を検索するストリームを取得する</summary>
        /// <param name="Keyword">検索キーワード</param>
        /// <param name="SearchPage">検索ページの指定、1~nの間の数値を指定する</param>
        /// <param name="SearchType">検索方法を指定する</param>
        /// <param name="SearchOption">検索オプションを指定する</param>
        public Streams <Video.VideoInfoResponse> OpenSearchStreams(
            string Keyword,
            int SearchPage,
            SearchType SearchType,
            SearchOption SearchOption)
        {
            var serialize      = new DataContractJsonSerializer(typeof(Serial.Search.Contract));
            var streamDataList = new List <StreamData>();

            Video.VideoInfoResponse lastData = null;

            streamDataList.Add(
                new StreamData()
            {
                StreamType = StreamType.Read,
                GetStream  = () =>
                {
                    return(context.Client.OpenDownloadStream(
                               String.Format(
                                   ApiUrls.VideoSearch,
                                   SearchType.ToKey(),
                                   Keyword,
                                   SearchPage,
                                   SearchOption.ToKey())));
                },
                SetReadData = (data) =>
                {
                    lastData = converter.ConvertVideoInfoResponse(
                        (Serial.Search.Contract)serialize.ReadObject(new MemoryStream(data)));
                }
            });

            return(new Streams <Video.VideoInfoResponse>(
                       streamDataList.ToArray(),
                       () => lastData));
        }
Пример #4
0
        /// <summary>動画を検索するストリームを取得する</summary>
        /// <param name="Keyword">検索キーワード</param>
        /// <param name="SearchPage">検索ページの指定、1~nの間の数値を指定する</param>
        /// <param name="SearchType">検索方法を指定する</param>
        /// <param name="SearchOption">検索オプションを指定する</param>
        public Streams<Video.VideoInfoResponse> OpenSearchStreams(
            string          Keyword,
            int             SearchPage,
            SearchType      SearchType,
            SearchOption    SearchOption)
        {
            var serialize = new DataContractJsonSerializer(typeof(Serial.Search.Contract));
            var streamDataList = new List<StreamData>();
            Video.VideoInfoResponse lastData = null;

            streamDataList.Add(
                new StreamData()
                {
                    StreamType = StreamType.Read,
                    GetStream = () =>
                    {
                        return context.Client.OpenDownloadStream(
                            String.Format(
                                ApiUrls.VideoSearch,
                                SearchType.ToKey(),
                                Keyword,
                                SearchPage,
                                SearchOption.ToKey()));
                    },
                    SetReadData = (data) =>
                    {
                        lastData = converter.ConvertVideoInfoResponse(
                            (Serial.Search.Contract)serialize.ReadObject(new MemoryStream(data)));
                    }
                });

            return new Streams<Video.VideoInfoResponse>(
                streamDataList.ToArray(),
                () => lastData);
        }