/// <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); }
/// <summary>動画を検索する</summary> /// <param name="Keyword">検索キーワード</param> /// <param name="SearchPage">検索ページの指定、1~nの間の数値を指定する</param> /// <param name="SearchType">検索方法を指定する</param> /// <param name="SearchOption">検索オプションを指定する</param> public Video.VideoInfoResponse Search( string Keyword, int SearchPage, SearchType SearchType, SearchOption SearchOption) { var streams = OpenSearchStreams(Keyword, SearchPage, SearchType, SearchOption); return streams.Run(streams.UntreatedCount); }