public async Task RunAsync() { await zhWarriorsSite.Initialization; var gen = new CategoryMembersGenerator(zhWarriorsSite, "没有图片的猫物") { PaginationSize = 50, MemberTypes = CategoryMemberTypes.Page, }; var enu = gen.EnumPagesAsync(PageQueryOptions.FetchContent); var fixedPages = @" 焦风 微光毛_(黑莓星的风暴) ".Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries).Select(t => new WikiPage(zhWarriorsSite, t)).ToList(); await fixedPages.RefreshAsync(PageQueryOptions.FetchContent | PageQueryOptions.ResolveRedirects); enu = fixedPages.ToAsyncEnumerable(); var counter = 0; await foreach (var page in enu) { counter++; var query = CPRepository.CreateQuery(@" SELECT ?link { ?link schema:isPartOf <https://warriors.huijiwiki.com/>; schema:name @title. }"); query.SetLiteral("title", page.Title, "zh"); if (CPRepository.ExecuteQuery(query).Any()) { Logger.LogWarning("Exists {}", page); continue; } Logger.LogInformation("[{}] Processing {}", counter, page); RETRY: try { await ExportEntityAsync(page); } catch (WikiClientException ex) { Console.WriteLine(ex); Console.ReadKey(); await page.RefreshAsync(PageQueryOptions.FetchContent); goto RETRY; } } }
public async Task RunAsync() { await zhWarriorsSite.Initialization; var gen = new CategoryMembersGenerator(zhWarriorsSite, "猫物") { PaginationSize = 50, MemberTypes = CategoryMemberTypes.Page, }; var counter = 0; using (var ie = gen.EnumPagesAsync(PageQueryOptions.FetchContent).GetEnumerator()) { while (await ie.MoveNext()) { counter++; var page = ie.Current; var query = CPRepository.CreateQuery(@" SELECT ?link { ?link schema:isPartOf <https://warriors.huijiwiki.com/>; schema:name @title. }"); query.SetLiteral("title", page.Title, "zh"); if (CPRepository.ExecuteQuery(query).Any()) { Logger.LogWarning("Exists {}", page); continue; } Logger.LogInformation("[{}] Processing {}", counter, page); RETRY: try { await ExportEntityAsync(page); } catch (WikiClientException ex) { Console.WriteLine(ex); Console.ReadKey(); await page.RefreshAsync(PageQueryOptions.FetchContent); goto RETRY; } } } }