public async Task UpdateUserImages(PixelUser pixelUser, int page = 1) { while (true) { _logger.Info($"Page: {page}"); var list = await _imagesParser.LoadImagesByUser(pixelUser.NickName, page); if (list is null || list.Count == 0) { _logger.Info("No images."); return; } _logger.Info($"Images loaded: {list.Count}"); using (var pixelContext = new PixelContext(_dbContextOptions)) { foreach (var item in list) { var entity = await pixelContext.PixelImage .Include(x => x.PixelUser) .SingleOrDefaultAsync(x => x.Url == item.imgUrl); if (entity == null) { await pixelContext.PixelImage.AddAsync(new PixelImage { PixelImageId = Guid.NewGuid(), Url = item.imgUrl, MetaUrl = item.metaUrl, Title = item.title, PixelUserId = pixelUser.PixelUserId }); } else { entity.Title = item.title; entity.MetaUrl = item.metaUrl; pixelContext.PixelImage.Update(entity); } } await pixelContext.SaveChangesAsync(); } page++; } }
public async Task UpdateUsers(int page = 1) { while (true) { _logger.Info($"Page: {page}"); var list = await _usersParser.LoadUsersByPage(page); if (list is null || list.Count == 0) { return; } _logger.Info($"Users loaded: {list.Count}"); using (var pixelContext = new PixelContext(_dbContextOptions)) { foreach (var item in list) { var entity = await pixelContext.PixelUser.SingleOrDefaultAsync(x => x.NickName == item.nickName); if (entity == null) { await pixelContext.PixelUser.AddAsync(new PixelUser() { NickName = item.nickName, PixelUserId = Guid.NewGuid(), UserName = item.userName }); } else { entity.UserName = entity.UserName; pixelContext.PixelUser.Update(entity); } } await pixelContext.SaveChangesAsync(); } page++; } }
public async Task UpdateImageMeta(PixelImage pixelImage) { _logger.Info($"metaurl: {pixelImage.MetaUrl}"); var list = await _imageMetaParser.LoadImageTags(pixelImage.MetaUrl); if (list != null && list.Count > 0) { _logger.Info($"Tags loaded: {list.Count}"); var keywords = string.Join(',', list); using (var pixelContext = new PixelContext(_dbContextOptions)) { pixelImage.Keywords = keywords; pixelContext.PixelImage.Update(pixelImage); await pixelContext.SaveChangesAsync(); } } else { _logger.Info("No tags."); } }
public async Task PixelImageToGoogle(PixelImage pixelImage) { _logger.Info($"url: {pixelImage.Url}"); var arr = await _fileLoader.GetByteArrayAsync(pixelImage.Url); if (arr == null || arr.Length == 0) { _logger.Error("arr is null"); using (var pixelContext = new PixelContext(_dbContextOptions)) { pixelImage.ProcessState = PixelImageProcessState.ImageNotFound; pixelContext.Update(pixelImage); await pixelContext.SaveChangesAsync(); } return; } int width = 0; int height = 0; //string phashStr = null; using (var stream = new MemoryStream()) { try { using (var im = new MagickImage(arr)) { im.Strip(); im.Format = MagickFormat.Jpeg; im.Quality = 85; im.Interlace = Interlace.Jpeg; im.ColorSpace = ColorSpace.sRGB; im.Settings.SetDefines(new JpegWriteDefines() { SamplingFactors = new MagickGeometry[] { new MagickGeometry(4, 2) } }); width = im.Width; height = im.Height; im.Write(stream); //im.Grayscale(); //var phash = im.PerceptualHash(); //phashStr = phash.ToString(); } } catch (ImageMagick.MagickErrorException ex) { _logger.Error(ex); using (var pixelContext = new PixelContext(_dbContextOptions)) { pixelImage.ProcessState = PixelImageProcessState.ImgFormatNotValid; pixelContext.Update(pixelImage); await pixelContext.SaveChangesAsync(); } return; } catch (Exception ex) { _logger.Error(ex); throw ex; } stream.Position = 0; try { var name = string.IsNullOrEmpty(pixelImage.Title) ? "image" : pixelImage.Title; var id = await _googleService.Upload(stream, $"{name}.jpg"); using (var pixelContext = new PixelContext(_dbContextOptions)) { pixelImage.GoogleId = id; //pixelImage.GrayscalePerceptualHash = phashStr; pixelImage.Width = width; pixelImage.Height = height; pixelContext.Update(pixelImage); await pixelContext.SaveChangesAsync(); } } catch (Exception ex) { _logger.Error(ex); throw ex; } } return; }