/// <summary> /// Парсинг релиза /// </summary> /// <param name="setting">Настройки парсера</param> /// <param name="resourceLink">Ссылка на ресурс</param> /// <param name="releaseLink">Ссылка на релиз</param> /// <param name="resourceItemsBc">Потокобезопасная коллекция элементов ресурса</param> /// <param name="releasesBc">Потокобезопасная коллекция релизов сайта</param> /// <returns>Task</returns> private async Task ParseReleasInfo(ParserSettingsEntity setting, string resourceLink, string releaseLink, BlockingCollection <ResourceItemEntity> resourceItemsBc, BlockingCollection <AlbumInfoRelease> releasesBc) { var releaseUrl = resourceLink + releaseLink; var resourceInternalId = releaseLink.Replace(Resources.AlbumInfoInternalPrefixId, ""); resourceItemsBc.Add(new ResourceItemEntity { ResourceId = setting.ResourceId, ResourceInternalId = resourceInternalId, ResourceItemLink = releaseLink }); //парсим страницу релиза var releaseHtmlDoc = await _loadHtmlService.GetHtmlDocumentByUrlAsync(releaseUrl).ConfigureAwait(false); var release = ParseRelease(releaseHtmlDoc); if (release != null) { release.ResourceInternalId = resourceInternalId; //загружаем обложку релиза await LoadAndSaveReleaseCover(release, resourceLink, setting.ResourceId).ConfigureAwait(false); releasesBc.Add(release); } }
/// <summary> /// Парсинг сайта /// </summary> /// <param name="setting">Настройки парсера</param> /// <param name="resourceLink">Ссылка на ресурс</param> /// <param name="index">Текущая страница со списком релизов</param> /// <param name="resourceItemsBc">Потокобезопасная коллекция элементов ресурса</param> /// <param name="releasesBc">Потокобезопасная коллекция релизов сайта</param> /// <returns>Task</returns> private async Task ParseAlbumInfo( ParserSettingsEntity setting, string resourceLink, int index, BlockingCollection <ResourceItemEntity> resourceItemsBc, BlockingCollection <AlbumInfoRelease> releasesBc) { var linksPageUrl = $"{setting.BaseUrl}{setting.Prefix}{index}"; var linksPageHtmlDoc = await _loadHtmlService.GetHtmlDocumentByUrlAsync(linksPageUrl). ConfigureAwait(false); var releaseLinkList = ParseAlbumlist(linksPageHtmlDoc); await Task.WhenAll(releaseLinkList.Select(releaseLink => ParseReleasInfo(setting, resourceLink, releaseLink, resourceItemsBc, releasesBc)).ToArray()).ConfigureAwait(false); }