Ejemplo n.º 1
0
        public void SaveMemas(MemasAnalyzeResultModel result, string userId)
        {
            using (var ms = new MemoryStream())
            {
                var binaryFormatter = new BinaryFormatter();
                binaryFormatter.Serialize(ms, result);
                byte[] rr = ms.GetBuffer();

                var cntx = new BaseDb();
                cntx.VkMemasAnalyzeResults.Add(new VkMemasAnalyzeResult
                {
                    UserId         = userId,
                    Name           = string.Format("Анализатор мемасов за {0}", DateTime.Now),
                    CollectionDate = DateTime.Now,
                    Result         = rr
                });
                cntx.SaveChanges();
            }
        }
Ejemplo n.º 2
0
        public ActionResult Result(int id)
        {
            var resultDb = _dbContext.VkMemasAnalyzeResults.FirstOrDefault(rest => rest.Id == id);
            var result   = new MemasAnalyzeResultModel();

            try
            {
                var formatter = new BinaryFormatter();
                using (var ms = new MemoryStream(resultDb.Result))
                {
                    result = (MemasAnalyzeResultModel)formatter.Deserialize(ms);
                }
            }
            catch (Exception ex)
            {
                Logger.Error(string.Format("Error: {0}", ex));
            }

            return(View("~/Views/Memology/Result.cshtml", result));
        }
Ejemplo n.º 3
0
        public MemasAnalyzeResultModel Analyze(string accessToken)
        {
            var result   = new MemasAnalyzeResultModel();
            var groups   = DbService.GetListOfGroups();
            var rawPosts = new List <XDocument>();

            var memasPosts = new List <MemasPost>();

            try
            {
                foreach (var group in groups)
                {
                    var toAdd = GetGroupPosts(group, accessToken);
                    rawPosts.Add(toAdd);
                }
            }
            catch (Exception exception)
            {
                Logger.Error(string.Format("Ошибка во время скачивания постов из групп: {0}", exception.InnerException));
            }

            try
            {
                foreach (var rawPost in rawPosts)
                {
                    var toAdd = CreateModelPosts(rawPost);
                    memasPosts.AddRange(toAdd);
                }
            }
            catch (Exception exception)
            {
                Logger.Error(string.Format("Ошибка во время создания моделей для групп: {0}", exception.InnerException));
            }

            result.TopByLikes = memasPosts.OrderByDescending(p => p.Likes).Take(10).ToList();

            try
            {
                foreach (var likes in result.TopByLikes)
                {
                    Thread.Sleep(1000);
                    var likeIds = GetUsersIds(likes.OwnerId, likes.Id, likes.Likes).ToList();
                    var path    = string.Format(@"{0}\Results\Memas\{1}_{2}_{3}_{4}.txt", AppDomain.CurrentDomain.BaseDirectory, accessToken, DateTime.Now.ToString("yyyy.MM.dd.mm.ss"), likes.OwnerId, likes.Id);
                    using (var sw = File.AppendText(path))
                    {
                        foreach (var like in likeIds)
                        {
                            sw.WriteLine("{0};", like);
                        }
                    }

                    likes.ListOfLikeIds = path;
                }
            }
            catch (Exception exception)
            {
                Logger.Error(string.Format("Ошибка во время анализа поство и получения лайкнувших пользователей: {0}", exception.InnerException));
            }

            result.TopByComments = memasPosts.OrderByDescending(p => p.Comments).Take(10).ToList();

            result.TopByReposts = memasPosts.OrderByDescending(p => p.Reposts).Take(10).ToList();

            return(result);
        }