private void SearchFromSodu(SearchResult searchResult, HttpContentDownloader downloader, Uri searchUri) { downloader.Download(searchUri, ar => { try { //At this step, we can get the index page in the search engine var state = (RequestState)ar.AsyncState; state.stopTimer = true; var response = (HttpWebResponse)state.Request.EndGetResponse(ar); response.GetResponseStream(); var parser = new SoduSearchResultPageParser(); SearchBookResult = parser.Parse(response.GetResponseStream(), searchResult) as List<SearchResult>; ProgressIndicatorHelper.StopProgressIndicator(); } catch (WebException e) { if (e.Status == WebExceptionStatus.RequestCanceled) { throw new TimeoutException("连接sodu.org超时,可尝试更换搜书引擎"); } } }); }
private void CallBookContentPage(object sender, RoutedEventArgs e) { var downloader = new HttpContentDownloader(); //var uri1 = new Uri(String.Format("http://www.opny.net/Html/Book/23/18992/4274362.html"), UriKind.Absolute); //var uri2 = new Uri(String.Format("http://www.qu24read.com/book/64/64383/5620931.html"), UriKind.Absolute); //var uri3 = new Uri(String.Format("http://www.wu69.org/files/article/html/4/4144/2111331.html"), UriKind.Absolute); //var uri4 = new Uri(String.Format("http://www.oaixs.org/files/article/html/5/5929/4478629.html"), UriKind.Absolute); //var uri5 = new Uri(String.Format("http://www.lwzw.com/files/article/html/5/5703/2274760.html"), UriKind.Absolute); //var uri6 = new Uri(String.Format("http://www.q520.org/1/1846/1061784.html"), UriKind.Absolute); //var uri7 = new Uri(String.Format("http://www.dazhouhuangzu.net/mulu/0/175/1789564.html"), UriKind.Absolute); //var uri8 = new Uri(String.Format("http://www.baihuawen.com/xiaoshuo/27/27183/9662281.html"), UriKind.Absolute); //var uri9 = new Uri(String.Format("http://www.xiaoshuoread.com/read/0/853/2119114.html"), UriKind.Absolute); var uri10 = new Uri(String.Format("http://www.wanshuba.com/Html/3/3833/2151249.html"), UriKind.Absolute); var dbHelpler = TestDBHelper.GetTestDBInstance(); dbHelpler.PrepareTempDB(); //downloader.Download(uri1, new Chapter { ChapterUri = uri1, ChapterName = "望河异论希(四)" }, new WebSiteBookContentPageParser()); //downloader.Download(uri2, new Chapter { ChapterUri = uri2, ChapterName = "望河异论希(四)" }, new WebSiteBookContentPageParser()); //downloader.Download(uri3, new Chapter { ChapterUri = uri3, ChapterName = "望河异论希(四)" }, new WebSiteBookContentPageParser()); //downloader.Download(uri4, new Chapter { ChapterUri = uri4, ChapterName = "望河异论希(四)" }, new WebSiteBookContentPageParser()); //downloader.Download(uri5, new Chapter { ChapterUri = uri5, ChapterName = "望河异论希(四)" }, new WebSiteBookContentPageParser()); //downloader.Download(uri6, new Chapter { ChapterUri = uri6, ChapterName = "望河异论希(四)" }, new WebSiteBookContentPageParser()); //downloader.Download(uri7, new Chapter { ChapterUri = uri7, ChapterName = "望河异论希(四)" }, new WebSiteBookContentPageParser()); //downloader.Download(uri8, new Chapter { ChapterUri = uri8, ChapterName = "望河异论希(四)" }, new WebSiteBookContentPageParser()); //downloader.Download(uri9, new Chapter { ChapterUri = uri9, ChapterName = "望河异论希(四)" }, new WebSiteBookContentPageParser()); downloader.Download(uri10, dbHelpler.TestTextChapter, new WebSiteBookContentPageParser()); }
private void CallWebSiteBookSearchPage(object sender, RoutedEventArgs e) { var downloader = new HttpContentDownloader(); var uri1 = new Uri(String.Format("http://www.xinduba.com/Html/Book/18/18798/"), UriKind.Absolute); // BookText var uri2 = new Uri(String.Format("http://www.xiaoshuo999.org/files/article/html/0/421/index.html"), UriKind.Absolute); //Id Content var uri3 = new Uri(String.Format("http://www.yjxs.net/files/article/html/92/92146/"), UriKind.Absolute); //Id Content var uri4 = new Uri(String.Format("http://www.geiliwx.com/GeiLi/4/4703/"), UriKind.Absolute); var uri5 = new Uri(String.Format("http://tieshu.net/lishi/25769/"), UriKind.Absolute); var uri6 = new Uri(String.Format("http://www.zhantianzw.com/mulu/0/431/"), UriKind.Absolute); var uri7 = new Uri(String.Format("http://www.du1du.com/book/71/70333/"), UriKind.Absolute); var uri8 = new Uri(String.Format("http://www.hxqwx.com/xiaoshuo/71/70757/"), UriKind.Absolute); var uri9 = new Uri(String.Format("http://www.06sk.com/xiaoshuo/0/9/"), UriKind.Absolute); var uri10 = new Uri(String.Format("http://www.qu24read.com/book/64/64383/index.html"), UriKind.Absolute); downloader.Download(uri1, new Book { Name = "宰执天下", IndexPage = uri1, RootUrl = "http://www.abc.com/"}, new WebsiteBookIndexPageParser()); downloader.Download(uri2, new Book { Name = "宰执天下", IndexPage = uri2, RootUrl = "http://www.abc.com/" }, new WebsiteBookIndexPageParser()); downloader.Download(uri3, new Book { Name = "宰执天下", IndexPage = uri3, RootUrl = "http://www.abc.com/" }, new WebsiteBookIndexPageParser()); downloader.Download(uri4, new Book { Name = "宰执天下", IndexPage = uri4, RootUrl = "http://www.abc.com/" }, new WebsiteBookIndexPageParser()); downloader.Download(uri5, new Book { Name = "宰执天下", IndexPage = uri5, RootUrl = "http://www.abc.com/" }, new WebsiteBookIndexPageParser()); downloader.Download(uri6, new Book { Name = "宰执天下", IndexPage = uri6, RootUrl = "http://www.abc.com/" }, new WebsiteBookIndexPageParser()); downloader.Download(uri7, new Book { Name = "宰执天下", IndexPage = uri7, RootUrl = "http://www.abc.com/" }, new WebsiteBookIndexPageParser()); downloader.Download(uri8, new Book { Name = "宰执天下", IndexPage = uri8, RootUrl = "http://www.abc.com/" }, new WebsiteBookIndexPageParser()); downloader.Download(uri9, new Book { Name = "宰执天下", IndexPage = uri9, RootUrl = "http://www.abc.com/" }, new WebsiteBookIndexPageParser()); downloader.Download(uri10, new Book { Name = "宰执天下", IndexPage = uri10, RootUrl = "http://www.abc.com/" }, new WebsiteBookIndexPageParser()); }
private void CallSearchPage(object sender, RoutedEventArgs e) { var keyword = "官神"; HttpContentDownloader downloader = new HttpContentDownloader(); var uri = new Uri(String.Format("http://search.sodu.org/searchname.aspx?wd={0}", HttpUtility.UrlEncode(keyword)), UriKind.Absolute); // downloader.Download(uri, keyword); }
private void SaveSingleChapter(object sender, RoutedEventArgs e) { var downloader = new HttpContentDownloader(); var uri1 = new Uri(String.Format("http://www.tianhen.com/tian/Book/0/547/3165604.shtml"), UriKind.Absolute); //downloader.Download(uri1, new Chapter { ChapterUri = uri1, ChapterName = "望河异论希(四)" }, new WebSiteBookContentPageParser()); //var uri10 = new Uri(String.Format("http://www.ruyu.org/bk/0/200/1821260.html"), UriKind.Absolute); //downloader.Download(uri10, new Chapter { ChapterUri = uri10, ChapterName = "望河异论希(四)" }, new WebSiteBookContentPageParser()); }
public void DownloadChapter(object s) { var cha = (BookIndexViewModel.DownloadTask) s; var downloader = new HttpContentDownloader(); downloader.Download(cha.TaskChapter.ChapterUri, ar => { //At this step, we can get the index page in the search engine var state = (RequestState) ar.AsyncState; var response = (HttpWebResponse) state.Request.EndGetResponse(ar); response.GetResponseStream(); var parser = new WebSiteBookContentPageParser(); parser.Parse(response.GetResponseStream(), cha.TaskChapter); CommonModels.TestChapter = chapter; }); }
public void Search(string keyword) { var searchEngine = GetSearchEngine(); var searchUri = new Uri(searchEngine.SearchUri, UriKind.Absolute); if (searchEngine.Type == SearchEngineType.Sodu) { searchUri = new Uri(String.Format(searchEngine.SearchUri, HttpUtility.UrlEncode(keyword)), UriKind.Absolute); } var downloader = new HttpContentDownloader(); DownloaderList.Add(downloader); var searchResult = new SearchResult(); if (searchEngine.Type == SearchEngineType.Sodu) { SearchFromSodu(searchResult, downloader, searchUri); } if (searchEngine.Type == SearchEngineType.Xiaoelang) { SearchFromXiaoelang(keyword, searchResult, downloader, searchUri); } }
/// <summary> /// Download single chapter, should be active from the ChapterView Page /// </summary> /// <param name="chapter"></param> /// <param name="callback"></param> public void DownloadSingleChapter(Chapter chapter, Action callback) { var downloader = new HttpContentDownloader(); downloader.Download(chapter.ChapterUri, ar => { try { //At this step, we can get the index page in the search engine var state = (RequestState)ar.AsyncState; state.stopTimer = true; var response = (HttpWebResponse)state.Request.EndGetResponse(ar); response.GetResponseStream(); var parser = new WebSiteBookContentPageParser(); parser.ParsingCompleted += ChapterContentParsingCompleted; chapter.Downloaded = true; parser.Parse(response.GetResponseStream(), chapter); if (callback != null) { callback(); } } catch (WebException e) { //TODO need to recover from exception ExceptionHandler.HandleException(e); } }); }
private void SearchFromXiaoelang(string keyword, SearchResult searchResult, HttpContentDownloader downloader, Uri searchUri) { downloader.DownloadPost(searchUri, "keyword", keyword, ar => { try { //At this step, we can get the index page in the search engine var state = (RequestState)ar.AsyncState; state.stopTimer = true; var response = (HttpWebResponse)state.Request.EndGetResponse(ar); response.GetResponseStream(); var parser = new XiaoelangSearchResultPageParser(); SearchBookResult = parser.Parse(response.GetResponseStream(), searchResult) as List<SearchResult>; } catch (WebException e) { if (e.Status == WebExceptionStatus.RequestCanceled) throw new TimeoutException("连接xiaoelang.com超时,请尝试更换搜书引擎"); } }); }
public void DownloadAndParseWebSiteBookIndexPage(Book book) { var downloader = new HttpContentDownloader(); downloader.Download(book.IndexPage, ar => { try { //At this step, we can get the index page in the search engine var state = (RequestState)ar.AsyncState; var response = (HttpWebResponse)state.Request.EndGetResponse(ar); response.GetResponseStream(); book.RootUrl = UrlHelper.GetRootUrlString(response.ResponseUri); var parser = new WebsiteBookIndexPageParser(); try { ProgressIndicatorHelper.CrossThreadStartProgressIndicator(true, "下载完成,解析目录中"); parser.Parse(response.GetResponseStream(), book); SelectedBook = book; ModelManager.GetBookIndexModel().Book = SelectedBook; if (GetBookIndexPageCompleted != null) { GetBookIndexPageCompleted(this, null); } } catch (Exception e) { ExceptionHandler.HandleException(e); } } catch (WebException e) { if (e.Status == WebExceptionStatus.RequestCanceled) { throw new TimeoutException(String.Format("连接{0}目录页超时", book.WebSite.WebSiteName)); } } }); }
public void GetBookSiteBookIndexPageLink(Book book) { var downloader = new HttpContentDownloader(); try { downloader.Download(book.IndexPage, ar => { try { //At this step, we can get the index page in the search engine var state = (RequestState)ar.AsyncState; var response = (HttpWebResponse)state.Request.EndGetResponse(ar); response.GetResponseStream(); book.RootUrl = UrlHelper.GetRootUrlString(response.ResponseUri); var parser = new WebSiteBookContentPageParser(); parser.Parse(response.GetResponseStream(), book); DownloadAndParseWebSiteBookIndexPage(book); } catch (WebException e) { if (e.Status == WebExceptionStatus.RequestCanceled) { throw new TimeoutException(String.Format("连接{0}超时", book.WebSite.WebSiteName)); } } }); } catch (WebException we) { ExceptionHandler.HandleException(we); } }
public void GetBookSiteLink(SearchResult searchResult) { var searchEngine = GetSearchEngine(); Uri soduBookLatestUpdatePage = searchResult.IndexPageUri; var downloader = new HttpContentDownloader(); DownloaderList.Add(downloader); downloader.Download(soduBookLatestUpdatePage, ar => { //At this step, we can get the index page in the search engine var state = (RequestState)ar.AsyncState; var response = (HttpWebResponse)state.Request.EndGetResponse(ar); response.GetResponseStream(); if (searchEngine.Type == SearchEngineType.Sodu) { var parser = new SoduBookLastestUpdatePageParser(); BookList = parser.Parse(response.GetResponseStream(), searchResult.Book) as List<Book>; } if (searchEngine.Type == SearchEngineType.Xiaoelang) { var parser = new XiaoelangBookLastestUpdatePageParser(); BookList = parser.Parse(response.GetResponseStream(), searchResult.Book) as List<Book>; } }); }
private void CallWebsiteSearchIndexPage(object sender, RoutedEventArgs e) { var downloader = new HttpContentDownloader(); var uri = new Uri(String.Format("http://go.sodu.tv/gogourl.aspx?obid=03g0q&cid=385&bid=1613&tid=1&zid=1713549"), UriKind.Absolute); downloader.Download(uri, null, new WebSiteBookContentPageParser()); }
private void CallSoduLatestUpdatePage(object sender, RoutedEventArgs e) { var downloader = new HttpContentDownloader(); var uri = new Uri(String.Format("http://www.sodu.org/mulu_160730.html"), UriKind.Absolute); downloader.Download(uri, null, new SoduBookLastestUpdatePageParser()); }
public void Refresh() { ProgressIndicatorHelper.StartProgressIndicator(true , "更新本书目录"); var downloader = new HttpContentDownloader(); DownloaderList.Add(downloader); downloader.Download(Book.IndexPage, ar => { //At this step, we can get the index page in the search engine var state = (RequestState)ar.AsyncState; state.stopTimer = true; var response = (HttpWebResponse)state.Request.EndGetResponse(ar); response.GetResponseStream(); Book.RootUrl = UrlHelper.GetRootUrlString(response.ResponseUri); var parser = new WebsiteBookIndexPageParser(); var temp = new Book {RootUrl = Book.RootUrl}; parser.Parse(response.GetResponseStream(), temp ); var newChapters = new List<Chapter>(); newChapters.AddRange( temp.Chapters.Where ( chapter => !Book.Chapters.Any(c => c.ChapterName == chapter.ChapterName) )); if (newChapters.Count > 0) { var totalChapters = new List<Chapter>(); totalChapters.AddRange(Book.Chapters); totalChapters.AddRange(newChapters); _storage.SaveChapters(newChapters); Book.Chapters = totalChapters.ToArray(); LastPage(); } else { CrossThreadHelper.CrossThreadMethodCall(() => MessageBox.Show("本书尚未有新的章节")); } ProgressIndicatorHelper.StopProgressIndicator(); }); }
public void DownloadChapter(object s) { var cha = (DownloadTask)s; var downloader = new HttpContentDownloader(); DownloaderList.Add(downloader); downloader.Download(cha.TaskChapter.ChapterUri, ar => { try { //At this step, we can get the index page in the search engine var state = (RequestState)ar.AsyncState; state.stopTimer = true; var response = (HttpWebResponse)state.Request.EndGetResponse(ar); response.GetResponseStream(); var parser = new WebSiteBookContentPageParser(); parser.Parse(response.GetResponseStream(), cha.TaskChapter); lock (_thisLock) { _batchCompleteCount++; } if (_batchCompleteCount == cha.BatchCount) { _batchCompleteCount = 0; ((ManualResetEvent) cha.ResetEvent).Set(); } }catch (WebException e) { ProgressIndicatorHelper.StopProgressIndicator(); if (e.Status == WebExceptionStatus.RequestCanceled) { throw new TimeoutException(String.Format("连接{0}超时", cha.TaskChapter.Book.WebSite.WebSiteName)); } //TODO need to recover from exception ExceptionHandler.HandleException(e); } }); }