Example #1
0
        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++;
            }
        }
Example #2
0
        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++;
            }
        }
Example #3
0
        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.");
            }
        }
Example #4
0
        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;
        }