/// <summary> /// 获取在线所有目录数据具体实现方法 /// </summary> /// <param name="url"></param> /// <param name="retryCount"></param> private async void SetOnlineBookCatalogsData(string url, int retryCount = 3) { try { if (string.IsNullOrEmpty(url)) { return; } IsLoadingCatalogData = true; var i = 0; Tuple <List <BookCatalog>, string, string, string> value = null; while (i <= retryCount) { value = await AnalisysSourceHelper.GetCatalogPageData(url, CurrentBook.BookId); if (value != null) { break; } Debug.WriteLine($"加载目录失败,第{i + 1}次尝试"); i++; } if (value == null) { Debug.WriteLine("加载目录失败,不再次尝试"); return; } DispatcherHelper.CheckBeginInvokeOnUI(() => { if (value.Item1 != null) { if (CurrentBook == null) { return; } CurrentBook.CatalogList = new List <BookCatalog>(); foreach (var bookCatalog in value.Item1) { CurrentBook.CatalogList.Add(bookCatalog); } CatalogCount = CurrentBook.CatalogList.Count; var temp = CurrentBook.CatalogList.FirstOrDefault(p => p.CatalogUrl == CurrentCatalog.CatalogUrl); if (temp != null) { CurrentCatalog = temp; // PreLoadPreAndNextCatalog(); } } CurrentBook.Description = value.Item2; CurrentBook.Cover = value.Item3; CurrentBook.AuthorName = value.Item4; }); } catch (Exception ex) { Debug.WriteLine(ex.Message + "\n" + ex.StackTrace); } finally { IsLoadingCatalogData = false; } }
public void CheckUpdate() { if (CurrentBook.IsTxt) { return; } if (CurrentBook.IsOnline) { Task.Run(async() => { try { var catalogPageUrl = AnalisysSourceHelper.GetCatalogPageUrl(CurrentBook.NewestChapterUrl); var catalogData = await AnalisysSourceHelper.GetCatalogPageData(catalogPageUrl, CurrentBook.BookId); var lastWebCatalog = catalogData?.Item1?.LastOrDefault(); if (lastWebCatalog == null) { return; } if (lastWebCatalog.CatalogUrl == CurrentBook.NewestChapterUrl) { return; } DispatcherHelper.CheckBeginInvokeOnUI(() => { CurrentBook.IsNew = true; CurrentBook.NewestChapterName = lastWebCatalog.CatalogName; CurrentBook.NewestChapterUrl = lastWebCatalog.CatalogUrl; ViewModelInstance.Instance.LocalBookPage.InserOrUpdateBook(CurrentBook); }); } catch (Exception e) { Console.WriteLine(e); } }).ContinueWith((result) => { if (IsDeleted) { return; } }); } else if (CurrentBook.IsLocal) { Task.Run(async() => { try { var localCatalogs = DbLocalBook.SelectBookCatalogsByBookId(AppDataPath.GetLocalBookDbPath(), CurrentBook.BookId); var localLastCatalog = localCatalogs.LastOrDefault(); if (localLastCatalog != null) { DispatcherHelper.CheckBeginInvokeOnUI(() => { CurrentBook.NewestChapterName = localLastCatalog.CatalogName; CurrentBook.NewestChapterUrl = localLastCatalog.CatalogUrl; }); } var catalogPageUrl = AnalisysSourceHelper.GetCatalogPageUrl(CurrentBook.NewestChapterUrl); var catalogData = await AnalisysSourceHelper.GetCatalogPageData(catalogPageUrl, CurrentBook.BookId); var lastWebCatalog = catalogData?.Item1?.LastOrDefault(); if (lastWebCatalog == null) { return; } if (localCatalogs == null || localCatalogs.Count == 0) { NeedUpdateCatalogs = catalogData.Item1; } if (localLastCatalog == null) { return; } if (lastWebCatalog.CatalogUrl == localLastCatalog.CatalogUrl) { return; } var tempCatalog = catalogData.Item1.LastOrDefault(p => p.CatalogUrl == localLastCatalog.CatalogUrl); var tempList = catalogData.Item1.Skip(tempCatalog.Index).ToList(); NeedUpdateCatalogs = tempList; } catch (Exception e) { Console.WriteLine(e); } finally { DispatcherHelper.CheckBeginInvokeOnUI(() => { NeedUpdateCount = NeedUpdateCatalogs == null ? "" : NeedUpdateCatalogs?.Count.ToString(); }); } }).ContinueWith((result) => { if (IsDeleted) { return; } if (NeedUpdateCatalogs == null || NeedUpdateCatalogs.Count == 0) { return; } DispatcherHelper.CheckBeginInvokeOnUI(() => { NeedUpdateCount = NeedUpdateCatalogs.Count.ToString(); CurrentBook.IsNew = true; CurrentBook.NewestChapterName = NeedUpdateCatalogs.LastOrDefault()?.CatalogName; CurrentBook.NewestChapterUrl = NeedUpdateCatalogs.LastOrDefault()?.CatalogUrl; DbLocalBook.InsertOrUpdatBook(AppDataPath.GetLocalBookDbPath(), CurrentBook); }); StartUpdate(); }); } }