示例#1
0
        public void Start()
        {
            var allNum = dbcontext.Set <FileEntry>().Where(x => x.ActualPath.Contains("img.fox800.xyz")).Count();
            var wc     = new WebClient();

            for (int i = 0; i < allNum;)
            {
                var targetRow = dbcontext.Set <FileEntry>().Where(x => x.ActualPath.Contains("img.fox800.xyz")).Skip(i).Take(100).ToList();
                foreach (var item in targetRow)
                {
                    try
                    {
                        var imgBytes  = wc.DownloadData(item.ActualPath);
                        var imgStream = new MemoryStream(imgBytes);
                        var savekey   = item.ActualPath.Replace("img.fox800.xyz", "fox800/");
                        QiniuTool.UploadImage(imgStream, savekey).Wait();
                        item.ActualPath = "http://mioto.milbit.com/" + savekey;
                        item.Name       = "fox800";
                        dbcontext.SaveChanges();

                        Console.WriteLine("process :  " + i);
                    }
                    catch (Exception exc)
                    {
                        Console.WriteLine(exc.Message);
                    }
                }
                i += 100;
                if (i > allNum)
                {
                    i = allNum - 1;
                }
            }
        }
示例#2
0
        private static async Task prepareImage(CommonDbContext dbContext, ContentEntry chapterContent, Stream imgStream, string imgName)
        {
            var mediaImg = chapterContent.MediaResource?.FirstOrDefault(x => x.Name == imgName);

            if (mediaImg == null)
            {
                if (chapterContent.MediaResource == null)
                {
                    chapterContent.MediaResource = new List <FileEntry>();
                }
                //图片判重
                if (chapterContent.MediaResource.Any(x => x.Name == imgName))
                {
                    return;
                }
                imgStream.Position = 0;
                QiniuTool.UploadImage(imgStream, imgName).Wait();
                chapterContent.MediaResource.Add(new FileEntry
                {
                    ActualPath = "https://mioto.milbit.com/" + imgName,
                    Name       = imgName,
                    CreateTime = DateTime.Now,
                    Id         = Guid.NewGuid()
                });
                await dbContext.SaveChangesAsync();
            }
        }
示例#3
0
        private async Task <object> ListFile(string prefix = "image")
        {
            var start = int.Parse(Request.Query["start"].ToString());
            var size  = int.Parse(Request.Query["size"].ToString());

            //QiniuTool.GenerateToken();
            //var mgr = new Qiniu.RS.BucketManager(macKey);
            //await mgr.BatchDeleteAsync(bucket, saveKey);

            //var rsf = new RSFClient(bucket);
            //var files = await rsf.ListPrefixAsync(bucket, prefix);

            //var list = files.Items.Select(p => string.Format("{0}/{1}{2}", domain, p.Key, prefix == "image" ? suffix : "")).OrderByDescending(p => p).Skip(start).Take(size).ToList();

            var list = await QiniuTool.ListFile(prefix);

            return(new
            {
                state = "SUCCESS",
                list = list == null ? null : list.Select(x => new { url = x }),
                start = start,
                size = size,
                total = list.Count
            });
        }
示例#4
0
        static string ProcessFile(string filePath, string dirName)
        {
            var extention = Path.GetExtension(filePath);
            var fileName  = "cartoon/" + Path.GetRandomFileName();

            switch (extention)
            {
            case ".zip":
                var outpuDirPaht = ZipTool.Exact(filePath);
                AnalyseDic(outpuDirPaht, dirName);
                break;

            case ".pdf":
                var outpuStream = PDFTool.PDFToImage(filePath);
                //QiniuTool.UploadImage(outpuStream, fileName).Wait();
                break;

            case ".jpg":
            case ".jpeg":
                QiniuTool.UploadImage(filePath, fileName).Wait();
                break;
            }

            return(fileName);
        }
示例#5
0
        private async Task <string> UploadToQiniu(Stream stream, string fileType = "image", string ext = "")
        {
            var key = GetFileName(fileType, ext);

            await QiniuTool.UploadImage(stream, key);

            return(key);
        }
示例#6
0
 public UtilitiesModule()
 {
     Get("/Image/Token", async ctx =>
     {
         var token = QiniuTool.GenerateToken();
         await ctx.Ajax(new { token });
     });
 }
示例#7
0
        public IActionResult Token()
        {
            var token  = QiniuTool.GenerateToken();
            var result = new ApiMessage();

            result.Data    = token;
            result.Message = "success!";
            result.Success = true;
            return(Json(result));
        }
示例#8
0
        public IActionResult GetToken(string fileType)
        {
            var token = QiniuTool.GenerateToken();

            return(Json(new
            {
                token = token,
                suffix = suffix
            }));
        }
示例#9
0
 private static void RemoveContent(CommonDbContext dbcontext, Categories categories)
 {
     //dbcontext.Entry(contentList);
     foreach (var contentItem in categories.ContentList)
     {
         QiniuTool.DeleteImage(contentItem.MediaResource.Select(x => x.ActualPath.Replace("https://mioto.milbit.com/", "")).ToArray()).Wait();
         //dbcontext.Entry(contentItem.MediaResource);
         //dbcontext.Remove(contentItem.MediaResource);
     }
     dbcontext.RemoveRange(categories.ContentList);
     dbcontext.SaveChanges();
 }
示例#10
0
 public GameController(QiniuTool _qiniutool,
                       VoteAppDbContext _dbContext,
                       IMemoryCache _memoryCache,
                       OryxWebSocketPool _wsPool,
                       IDistributedCache _distributedCache,
                       RabbitMQClient _rabbitMqClient
                       )
 {
     qiniutool        = _qiniutool;
     dbContext        = _dbContext;
     memoryCache      = _memoryCache;
     wsPool           = _wsPool;
     distributedCache = _distributedCache;
     rabbitMqClient   = _rabbitMqClient;
 }
示例#11
0
        private void CreateContentAndUploadImage(string filePath, string cateName, List <Stream> streamList, int contentOrder)
        {
            var name = Path.GetFileNameWithoutExtension(filePath);

            //var cateName = Path.GetDirectoryName(filePath).Split('\\').Last();
            contentUploadCreator.CreateContent(name, cateName, contentOrder);
            var index = 0;

            streamList.ForEach(async imgStream =>
            {
                var fileName = "cartoon/toptoon/" + cateName + "/" + name + "_" + index + ".jpg";
                QiniuTool.UploadImage(imgStream, fileName).Wait();
                contentUploadCreator.SetContentIImg(name, cateName, fileName, index);
                index++;
            });
        }
示例#12
0
        private static void ProcessListPage(IWebElement obj, Dictionary <string, string> State)
        {
            var exuctor = TaskExutor.Instance;

            Console.WriteLine(obj.FindElement(By.CssSelector("body")).GetAttribute("innerHTML"));
            var categories        = obj.FindElements(By.CssSelector(".ajax-load-con.content"));
            var categoryDbContext = GetDbContext();

            foreach (var item in categories)
            {
                var nextUrl = item.FindElement(By.CssSelector("a")).GetAttribute("href");
                Console.WriteLine(item.GetAttribute("innerHTML"));
                var coverUrl      = item.FindElement(By.CssSelector("li .image-item img")).GetAttribute("src");
                var categoryTitle = item.FindElement(By.CssSelector(".posts-default-title a")).GetAttribute("title").Trim();
                var creatTime     = DateTime.Parse(item.FindElement(By.CssSelector(".ico-time")).GetAttribute("innerText"));

                var imgStream    = DownloadImg(coverUrl);
                var coverImgPath = "cartoon/" + categoryTitle + "/coverimg.jpg";
                QiniuTool.UploadImage(imgStream, coverImgPath).Wait();
                var dbCategory = categoryDbContext.Categories.FirstOrDefault(x => x.Name == categoryTitle);
                if (dbCategory == null)
                {
                    var categoryModel = CreateCategory(categoryTitle, creatTime, coverImgPath);
                    categoryDbContext.Add(categoryModel);
                }
                var dbContent = categoryDbContext.ContentEntry.FirstOrDefault(x => x.Title == categoryTitle);

                if (dbContent == null)
                {
                    dbContent = CreateContent(dbCategory, categoryTitle, creatTime);
                    categoryDbContext.Add(dbContent);
                }

                if (dbContent.Category == null)
                {
                    var subCate = categoryDbContext.Categories.FirstOrDefault(x => x.Name == categoryTitle);
                    dbContent.Category = subCate;
                }
                categoryDbContext.SaveChanges();
                if (!string.IsNullOrEmpty(nextUrl))
                {
                    var state = new Dictionary <string, string>();
                    var categoriesTaskSpider = new TaskSpider(nextUrl, state);
                    exuctor.SetTask(categoriesTaskSpider, ProcessImgPage);
                }
            }
        }
示例#13
0
        public async Task <IActionResult> AssetPost(string key)
        {
            var fileStream = HttpContext.Request.Body;
            var reader     = await HttpContext.Request.BodyReader.ReadAsync();

            var streamReader = new StreamReader(fileStream);
            var stream       = new MemoryStream();
            await fileStream.CopyToAsync(stream);

            await QiniuTool.UploadImage(stream, key);

            var jobj = JObject.Parse("{}");

            jobj.Add("content-name", key);
            jobj.Add("status", "ok");

            return(Content(jobj.ToString(), "application/json"));
        }
示例#14
0
        private void CreateContentAndUploadImage(string contentDir, string cateName, int contentOrder)
        {
            var name    = contentDir.Split('\\').Last();
            var imgList = Directory.GetFiles(contentDir);

            //var cateName = contentDir.Split('\\').Last();

            contentUploadCreator.CreateContent(name, cateName, contentOrder);
            var index = 0;

            foreach (var imgItem in imgList)
            {
                var fileName = "cartoon/toptoon/" + cateName + "/" + name + "_" + index + ".jpg";
                QiniuTool.UploadImage(imgItem, fileName).Wait();
                contentUploadCreator.SetContentIImg(name, cateName, fileName, index);
                index++;
            }
        }
示例#15
0
        public IActionResult Token()
        {
            var result = new ApiMessage();

            try
            {
                var token = QiniuTool.GenerateToken();
                result.Data    = token;
                result.Message = "success!";
                result.Success = true;
            }
            catch (Exception exc)
            {
                result.SetFault(exc);
            }

            return(Json(result));
        }
示例#16
0
        public async Task UpdateUserInfo(Guid userId, UpdateUserInfoViewModel updateModel)
        {
            var userInfoEntry = await userAccountAccessor.OneAsync <UserAccountEntry>(x => x.Id == userId);

            /*remove old img from qiniu */
            if (!string.IsNullOrEmpty(userInfoEntry.Avatar))
            {
                var avatarUri = new Uri(userInfoEntry.Avatar);
                var saveKey   = avatarUri.AbsolutePath.Remove(0);
                await QiniuTool.DeleteImage(new string[] { saveKey });
            }
            /*end */
            userInfoEntry.NickName = updateModel.NickName;
            userInfoEntry.Avatar   = updateModel.Avatar;
            if (userInfoEntry.Profile == null)
            {
                userInfoEntry.Profile = new UserAccountProfile {
                };
            }

            userInfoEntry.Profile.BirthDay = updateModel.BirthDay;
            userInfoEntry.Profile.Location = updateModel.Location;
            await userAccountAccessor.Update(userInfoEntry);
        }
示例#17
0
        public async Task SvaeChapterDetail(CommonDbContext dbCtx, string cateName, string contentName, string fileName, int order)
        {
            try
            {
                var content = await dbCtx.ContentEntry.Include(x => x.MediaResource).FirstOrDefaultAsync(x => x.Category.Name == cateName && x.Title == contentName);

                var category = await dbCtx.Categories.FirstOrDefaultAsync(x => x.Name == cateName);

                if (content.MediaResource == null)
                {
                    content.MediaResource = new List <FileEntry> {
                    };
                }
                var name = $"{cateName}/{contentName}/{order}img.jpg";

                if (!content.MediaResource.Any(x => x.Name == name))
                {
                    await QiniuTool.UploadImage(fileName, name);

                    content.MediaResource.Add(new FileEntry
                    {
                        Name       = name,
                        ActualPath = "https://mioto.milbit.com/" + name,
                        CreateTime = DateTime.Now,
                        Order      = order,
                        Tag        = cateName
                    });
                }

                await dbCtx.SaveChangesAsync();
            }
            catch (Exception exc)
            {
                Console.WriteLine(exc.Message);
            }
        }
示例#18
0
 public string TokenByKey(string fileName)
 {
     return(QiniuTool.GenerateToken(fileName));
 }
示例#19
0
        public string GenerateQiniu()
        {
            var qiniu = new QiniuTool(settingService.File.AppKey, settingService.File.AppSecret, settingService.File.Bucket, settingService.File.Zone);

            return(qiniu.GenerateToken());
        }
示例#20
0
 public static async Task UploadQiniu(string url, string key)
 {
     var imgStream    = DownloadImg(url);
     var coverImgPath = key;
     await QiniuTool.UploadImage(imgStream, coverImgPath);
 }
示例#21
0
        public void DeleteQIniu()
        {
            var imgKeyList = dbContext.FileEntry.Where(x => x.ActualPath.Contains("cartoon/toptoon/今天在哪嘞(无水印)")).Select(x => x.ActualPath.Replace("http://mioto.milbit.com/", "")).ToArray();

            QiniuTool.DeleteImage(imgKeyList).Wait();
        }
示例#22
0
        private static void AddCartoon()
        {
            var dbcontext = buildDbContext();

            Console.WriteLine("请输入路径, 并按回车: 然后等待程序退出;");
            var path = Console.ReadLine();

            //var path = @"C:\Users\v-huamli\Documents\WeChat Files\lihuaming4000\Files\花美男幼儿园1";
            //var path = @"G:\SystemDiretory\Downloads\1-22";
            var matchRegex       = new Regex(@"第(\d+)话");
            var topCategories    = Directory.EnumerateDirectories(path).ToList();
            var topCateEntryList = new List <Categories>();

            foreach (var topCate in topCategories)
            {
                var topCatTmpArr = topCate.Split("\\");
                var topCatName   = topCatTmpArr[topCatTmpArr.Length - 1];
                var topCateEntry = new Categories
                {
                    CreateTime         = DateTime.Now,
                    Id                 = Guid.NewGuid(),
                    ChildrenCategories = new List <Categories>(),
                    Name               = topCatName
                };
                dbcontext.Categories.AddAsync(topCateEntry).Wait();
                dbcontext.SaveChangesAsync().Wait();

                //漫画名
                var secPath = Path.Combine(path, topCate);

                //章节名
                var secondCategories = Directory.EnumerateDirectories(secPath).OrderBy(x =>
                {
                    var matchVal = matchRegex.Match(x);
                    var intVal   = matchVal.Groups[1].Value;
                    return(int.Parse(intVal));
                }).ToList();
                //var contentList = new List<ContentEntry>();
                var order = 0;
                foreach (var secCate in secondCategories)
                {
                    var secCateTmpArr = secCate.Split("\\");
                    var secCateName   = secCateTmpArr[secCateTmpArr.Length - 1];
                    //图片名
                    var thrPath            = Path.Combine(secPath, secCate);
                    var fileNameList       = Directory.EnumerateFiles(thrPath).ToList();
                    var fileEntryList      = new List <FileEntry>();
                    var fileUploadTaskList = new List <Task>();
                    var contentEntry       = new ContentEntry
                    {
                        Category   = topCateEntry,
                        CreateTime = DateTime.Now,
                        Id         = Guid.NewGuid(),
                        Title      = secCateName,
                        Order      = order++
                    };
                    foreach (var fileName in fileNameList)
                    {
                        var saveKey = "cartoon/" + topCatName
                                      + "-" + secCateName + "-" + Path.GetFileName(fileName);
                        var task = QiniuTool.UploadImage(fileName, saveKey);
                        fileEntryList.Add(new FileEntry
                        {
                            ActualPath = "https://mioto.milbit.com/" + saveKey,
                            CreateTime = DateTime.Now,
                            Name       = saveKey,
                            Tag        = saveKey
                        });
                        fileUploadTaskList.Add(task);
                    }
                    Task.WaitAll(fileUploadTaskList.ToArray());
                    contentEntry.MediaResource = fileEntryList;
                    dbcontext.ContentEntry.AddAsync(contentEntry).Wait();
                    dbcontext.SaveChangesAsync().Wait();
                }
            }

            dbcontext.SaveChangesAsync().Wait();
        }
示例#23
0
        public static void DeleteCartoon()
        {
            var dbcontext = buildDbContext();

            var targetCategoryList = dbcontext.Categories
                                     .Include(x => x.Tags)
                                     .Include(x => x.ChildrenCategories)
                                     .Include(x => x.MediaResource)
                                     .Include(x => x.ContentList)
                                     .Include("ChildrenCategories.ContentList")
                                     .Include("ContentList.MediaResource")
                                     .Include("ChildrenCategories.MediaResource").Where(x => x.Name == "h-mate 完结(不含外传)").ToList();

            //.Include("ChildrenCategories.MediaResource").Where(x => x.Tags.Any(c => c.Name == "新资源压缩")).ToList();
            //.Include("ChildrenCategories.MediaResource").Where(x => x.Name == "妹控进行时" || x.Name == "多重人格侦探").ToList();
            //.Include("ChildrenCategories.MediaResource").Where(x => x.Tags.Any(c => c.Name == "妖气漫画")).ToList();

            foreach (var topCategory in targetCategoryList)
            {
                if (topCategory.ChildrenCategories != null && topCategory.ChildrenCategories.Count > 0)
                {
                    foreach (var subCategory in topCategory.ChildrenCategories)
                    {
                        if (subCategory.ContentList != null && subCategory.ContentList.Count > 0)
                        {
                            foreach (var contentItem in subCategory.ContentList)
                            {
                                QiniuTool.DeleteImage(contentItem.MediaResource.Select(x => x.ActualPath.Replace("https://mioto.milbit.com/", "")).ToArray()).Wait();
                                dbcontext.Remove(contentItem.MediaResource);
                                dbcontext.SaveChanges();
                            }
                            dbcontext.RemoveRange(subCategory.ContentList);
                        }
                        dbcontext.SaveChanges();
                    }
                    dbcontext.RemoveRange(topCategory.ChildrenCategories);
                    dbcontext.SaveChanges();
                }
                else
                {
                    foreach (var contentItem in topCategory.ContentList)
                    {
                        if (contentItem.MediaResource != null && contentItem.MediaResource.Count > 0)
                        {
                            QiniuTool.DeleteImage(contentItem.MediaResource.Select(x => x.ActualPath.Replace("https://mioto.milbit.com/", "")).ToArray()).Wait();
                            dbcontext.RemoveRange(contentItem.MediaResource);
                            dbcontext.SaveChanges();
                        }
                    }

                    dbcontext.RemoveRange(topCategory.ContentList);
                }
                dbcontext.Remove(topCategory);
                if (topCategory.Tags != null && topCategory.Tags.Count > 0)
                {
                    dbcontext.RemoveRange(topCategory.Tags);
                }

                dbcontext.SaveChanges();
            }

            //foreach (var item in dbcontext.ContentEntry.Include(x => x.MediaResource))
            //{
            //    QiniuTool.DeleteImage(item.MediaResource.Select(x => x.ActualPath.Replace("https://mioto.milbit.com/", "")).ToArray()).Wait();
            //}
        }
示例#24
0
        private static void ProcessListPage(IWebElement webElement, Dictionary <string, string> state)
        {
            try
            {
                var body = webElement.FindElement(By.TagName("body")).GetAttribute("innerHTML");
                Console.WriteLine(body);
                var conentList = webElement.FindElements(By.CssSelector(".storyCell"));
                //漫画列表
                foreach (var contentItem in conentList)
                {
                    var categoryTitle = contentItem.FindElement(By.CssSelector(".rightInfo .title")).GetAttribute("innerText");
                    if (!zeroList.Any(x => x.Name == categoryTitle))
                    {
                        continue;
                    }

                    var coverUrl = contentItem.FindElement(By.CssSelector(".leftCover img")).GetAttribute("src");
                    var url      = contentItem.FindElement(By.CssSelector(".leftCover a")).GetAttribute("href");
                    var desc     = contentItem.FindElement(By.CssSelector(".rightInfo .intr")).GetAttribute("innerText");


                    TaskExutor exuctor = TaskExutor.Instance;
                    //var state = new Dictionary<string, string>();
                    var curState = new Dictionary <string, string>();
                    foreach (var item in state)
                    {
                        curState.Add(item.Key, item.Value);
                    }
                    curState.Add("cateTitle", categoryTitle);
                    var contentTaskSpider = new TaskSpider(url, curState);
                    contentTaskSpider.SetCookie(_cookie);
                    //Console.WriteLine(title);
                    //upload qiniu
                    var imgStream    = DownloadImg(coverUrl);
                    var coverImgPath = "cartoon/" + categoryTitle + "/coverimg.jpg";
                    QiniuTool.UploadImage(imgStream, coverImgPath).Wait();

                    var categoryDbContext = GetDbContext();
                    var hasCategory       = categoryDbContext.Categories.AnyAsync(x => x.Name == categoryTitle).Result;
                    if (!hasCategory)
                    {
                        categoryDbContext.Categories.Add(new Categories
                        {
                            Id            = Guid.NewGuid(),
                            CreateTime    = DateTime.Now,
                            Name          = categoryTitle,
                            Description   = desc.Trim(),
                            MediaResource = new List <FileEntry> {
                                new FileEntry {
                                    Id         = Guid.NewGuid(),
                                    ActualPath = "https://mioto.milbit.com/" + coverImgPath,
                                    CreateTime = DateTime.Now,
                                    Name       = coverImgPath
                                }
                            },
                            Tags = new List <Tags> {
                                new  Tags {
                                    Id   = Guid.NewGuid(),
                                    Name = "恋爱"
                                },
                                new  Tags {
                                    Id   = Guid.NewGuid(),
                                    Name = "都市"
                                },
                                new  Tags {
                                    Id   = Guid.NewGuid(),
                                    Name = "Sex"
                                },
                                new  Tags {
                                    Id   = Guid.NewGuid(),
                                    Name = "SpiderUplaod2"
                                }
                            }
                        });
                        categoryDbContext.SaveChanges();
                    }

                    processChapter(categoryTitle, contentTaskSpider);
                }
            }
            catch (Exception exc)
            {
                throw;
            }
        }
示例#25
0
 public string Token()
 {
     return(QiniuTool.GenerateToken());
 }
示例#26
0
 public string TokenByParam(string fileName, string bucket, ZoneID zoneID)
 {
     return(QiniuTool.GenerateToken(fileName, bucket, zoneID));
 }