public async Task <int> Like() { int counter = 0; // Счётчик для подсчета поставленных лайков foreach (string group in Groups) { WallGet posts = await getPosts(group, rand.Next(postsOffset), postsCount); // получаем рандомные postsCount постов foreach (var post in posts.response.items) { if (commentsCount > post.comments.count) { commentsCount = post.comments.count; } // Получаем рандомные комментарии поста WallGetComments comments = await getComments(group, post.id.ToString(), commentsCount); foreach (var item in comments.response.items) { if (await pressLike(group, item.id.ToString())) // Жмакаем "лайк" { counter++; } await Task.Delay(350); // "Too many requests per second ©" } } } return(counter); }
public void addPosts() { int loaded = 0; List <Item> items = new List <Item>(); if (postCapasity <= 99) { WallGet response = WallGet.FromJson(API.getResponse("wall.get", "owner_id=-" + id + ",offset=2" + ",count=" + postCapasity.ToString())); foreach (Item item in response.Response.Items) { items.Add(item); } } else { while (postCapasity - loaded > 99) { WallGet response1 = WallGet.FromJson(API.getResponse("wall.get", "owner_id=-" + id + ",offset=" + loaded.ToString() + ",count=99")); loaded = loaded + 99; foreach (Item item in response1.Response.Items) { items.Add(item); } if (response1.Response.Items.Length < 99) { goto GA; } } WallGet response = WallGet.FromJson(API.getResponse("wall.get", "owner_id=-" + id + ",offset=" + loaded.ToString() + ",count=" + (postCapasity - loaded).ToString())); foreach (Item item in response.Response.Items) { items.Add(item); } } GA: foreach (Item item in items) { try { Post post = new Post(); post.id = item.Id.ToString(); post.item = item; post.already_posted = false; post.hist = new Queue <HistoryPoint>(historyVolume); HistoryPoint point = new HistoryPoint(); point.likes = Convert.ToInt32(item.Likes.Count); point.reposts = Convert.ToInt32(item.Reposts.Count); point.views = Convert.ToInt32(item.Views.Count); point.time = Convert.ToInt32(item.Date); post.hist.Enqueue(point); post = setFirstPoints(post); post.domain = domain; post.groupId = id; posts.Enqueue(post); } catch { } } }
public bool check_for_repeat(Post post) { if (post.item.PostType.ToString() == "Photo") { string url = post.item.getImageUrl(); pictureBox1.Load(url); using (WebClient client = new WebClient()) { client.DownloadFile(url, "temp1.jpg"); } Image img1 = Image.FromFile("temp1.jpg"); try { WallGet response = WallGet.FromJson(API.getResponse("wall.get", "owner_id=-165233859" + ",count=20")); foreach (Item item in response.Response.Items) { if (post.item.PostType == item.PostType) { url = item.getImageUrl(); using (WebClient client = new WebClient()) { client.DownloadFile(url, "temp2.jpg"); } Image img2 = Image.FromFile("temp2.jpg"); var points = new Color[3, 3]; int count = 0; Bitmap BM1 = new Bitmap(img1); Bitmap BM2 = new Bitmap(img2); int incI = 0; int incJ = 0; for (int i = BM1.Width / 6; i < BM1.Width; i = i + BM1.Width / 3) { incJ = 0; for (int j = BM1.Height / 6; j < BM1.Height; j = j + BM1.Height / 3) { if (BM1.GetPixel(i, j) == BM2.GetPixel(i, j)) { count++; } incJ++; } incI++; } if (count > 8) { return(true); } } } } catch { } } return(false); }
public string getGroupIdByDomain(string domain) { WallGet WallGet; if (domain.Contains("public")) { WallGet = WallGet.FromJson(getResponse("wall.get", "owner_id=-" + domain.Replace("public", "") + ",count=2")); } else { WallGet = WallGet.FromJson(getResponse("wall.get", "domain=" + domain + ",count=2")); } return(WallGet.Response.Items[0].FromId.ToString().Remove(0, 1)); }
public VkPostponedContentPullerStrategy(WallGet wallGet) { _wallGet = wallGet; }
public void updatePosts() { try { WallGet response = WallGet.FromJson(API.getResponse("wall.get", "owner_id=-" + id + ",count=" + postCapasity.ToString())); foreach (Item item in response.Response.Items) { for (int i = 0; i < posts.Count; i++) { if (posts.ElementAt(i).id == item.Id.ToString()) { HistoryPoint point = new HistoryPoint(); point.likes = Convert.ToInt32(item.Likes.Count); point.reposts = Convert.ToInt32(item.Reposts.Count); if (item.Views == null) { point.views = 0; } else { point.views = Convert.ToInt32(item.Views.Count); } point.time = Convert.ToInt32(item.Date); posts.ElementAt(i).hist.Enqueue(point); setFirstPoints(posts.ElementAt(i)); if (posts.ElementAt(i).hist.Count > historyVolume) { posts.ElementAt(i).hist.Dequeue(); } } } } foreach (Item item in response.Response.Items) { bool is_new = true; for (int i = 0; i < posts.Count; i++) { if (posts.ElementAt(i).id == item.Id.ToString()) { is_new = false; } } if (is_new) { new_post = true; Post post = new Post(); post.id = item.Id.ToString(); post.item = item; post.already_posted = false; HistoryPoint point = new HistoryPoint(); point.likes = Convert.ToInt32(item.Likes.Count); point.reposts = Convert.ToInt32(item.Reposts.Count); if (item.Views == null) { point.views = 0; } else { point.views = Convert.ToInt32(item.Views.Count); } point.time = Convert.ToInt32(item.Date); post.hist = new Queue <HistoryPoint>(historyVolume); post.hist.Enqueue(point); post = setFirstPoints(post); post.domain = domain; post.groupId = id; posts.Enqueue(post); posts.Dequeue(); } } } catch { } }
private async Task <IViewComponentResult> VkLoadAsync(VkUser vkUser, VkGroup vkGroup, Models.User user, Models.Order order, string photo, bool isPremium, string groupId, string isLoad) { try { var toLoad = true; if (!isPremium) { var firstId = (await _context.VkGroupSet .FirstOrDefaultAsync(id => id.VkUserId == vkUser.VkUserId)).VkGroupId; toLoad = vkGroup.VkGroupId == firstId; } // Не грузить левые группы, для непремиум if (toLoad) { var vkGroupFrom = await _context.VkGroupFromSet .Include(inf => inf.GroupInfo) .Include(set => set.Filter) .Where(g => g.VkGroupId == vkGroup.VkGroupId) .Take(isPremium ? 20 : 10) .AsNoTracking() .ToListAsync(); if (isLoad == "true" && vkGroupFrom != null && vkGroupFrom.Count > 0) { Stopwatch sw = Stopwatch.StartNew(); var oldItem = await _context.VkGroupSet .Where(g => g.VkGroupId == groupId) .SelectMany(g => g.VkGroupsFrom .SelectMany(gr => gr.WallGets .SelectMany(wall => wall.Items.Select(item => new VkItemViewModel { Text = item.Text, Date = item.Date })))) .AsNoTracking() .ToListAsync(); var count = vkGroup.MaxFrom ?? (TAKE / vkGroupFrom.Count) * 2; var responses = new List <WallGet>(vkGroupFrom.Count); if (vkUser != null) { foreach (var group in vkGroupFrom) { var onlyGroup = vkGroup.Filter?.GetOnlyGroupPost == true || group.Filter?.GetOnlyGroupPost == true; var result = await _vkService.WallGetAsync(vkUser.AccessToken, $"{count}", "0", $"-{group.GroupId}", group.Domain, onlyGroup); if (!result.Contains("error_code")) { WallGet wallGetResponse = _jsonService.JsonConvertDeserializeObject <WallGetResponse>(result)? .Response; if (wallGetResponse != null) { wallGetResponse = await _textService.SortedTextAsync(wallGetResponse, oldItem); for (int i = 0; i < wallGetResponse.Items.Count; i++) { var item = wallGetResponse.Items[i]; var tag = $"{group.Atribute} {vkGroup.Atribute}".Trim(' '); item.Text = await _textService.TextFilterAsync(item.Text, vkGroup.Filter, group.Filter); item.Text = _textService.AddTag(item.Text, tag); } wallGetResponse.VkGroupFromId = group.VkGroupFromId; responses.Add(wallGetResponse); } } else { await _telegramService.SendMessage(result); } } } await _context.AddRangeAsync(responses); await _context.SaveChangesAsync(); sw.Stop(); await _telegramService.SendMessage($"time1: {sw.Elapsed.TotalMilliseconds}"); sw = Stopwatch.StartNew(); DateTime dateNow = DateTime.Now; long unixTime = ((DateTimeOffset)dateNow).ToUnixTimeSeconds() - 30 * 60; var date = DateTime.Now; var take = vkGroup.MaxLoad ?? TAKE; var vkItem = (await _context.VkGroupSet .Where(g => g.VkGroupId == groupId) .SelectMany(g => g.VkGroupsFrom .SelectMany(gr => gr.WallGets .SelectMany(wall => wall.Items .Where(st => string.IsNullOrWhiteSpace(st.Statuse) || (st.Statuse == "Selected" && st.AddedTime < unixTime) )))) .OrderByDescending(ch => ch.Statuse == "Selected") .Take(take) .Select(item => new { Filter = item.WallGet.VkGroupFrom.Filter, Atribute = item.WallGet.VkGroupFrom.Atribute, Statuse = item.Statuse, GroupInfo = item.WallGet.VkGroupFrom.GroupInfo, ItemId = item.ItemId, Likes = item.Likes.Count, Reposts = item.Reposts.Count, Views = item.Views.Count, Date = item.Date, GifPrew = item.Attachments.Select(doc => new { Gif = doc.Doc.Url, DocExt = doc.Doc.Ext, Preview = doc.Doc.Preview.Photo.Sizes }), Photo = item.Attachments.Select(ph => ph.Photo.Photo604), Text = item.Text }) .AsNoTracking() .ToListAsync()) .Select(item => new VkItemViewModel { Filter = item.Filter, Atribute = item.Atribute, Statuse = item.Statuse, GroupInfo = item.GroupInfo, ItemId = item.ItemId, Likes = item.Likes, Reposts = item.Reposts, Views = item.Views, Date = item.Date, GifPrew = item.GifPrew.Select(doc => new GifPreviewViewModel { Gif = doc.Gif, DocExt = doc.DocExt, PreviewPhoto = doc.Preview.ToList() }).ToList(), Photo = item.Photo.ToList(), Text = item.Text }); vkItem = await _textService.SortingItemAsync(vkItem, vkGroup.Filter); sw.Stop(); await _telegramService.SendMessage($"time2: {sw.Elapsed.TotalMilliseconds}"); return(View(new VkResponseAndGroupVk { Responses = vkItem.OrderByDescending(ch => Tuple.Create(ch.Statuse == "Selected", ch.Likes + ch.Reposts, ch.Likes, ch.Reposts, ch.Views)), VkGroupViewModel = new VkGroupViewModel { VkGroupId = groupId, VkGroupsFrom = vkGroupFrom, Photo = photo, Domain = vkGroup?.GroupInfo?.ScreenName ?? vkGroup?.Domain, GroupName = vkGroup?.GroupInfo.Name }, AttributeAll = vkGroup.Atribute, })); } return(View(new VkResponseAndGroupVk { VkGroupViewModel = new VkGroupViewModel { VkGroupId = groupId, VkGroupsFrom = vkGroupFrom, Photo = photo, Domain = vkGroup?.GroupInfo?.ScreenName ?? vkGroup?.Domain, GroupName = vkGroup?.GroupInfo.Name }, AttributeAll = vkGroup.Atribute })); } } catch (Exception ex) { await _telegramService.SendMessageExceptionAsync(ex); } return(View()); }
public VkActualTimePeriodContentPullerStrategy(WallGet wallGet) { _wallGet = wallGet; }
public VkActualContentPullerStrategy(WallGet wallGet) { _wallGet = wallGet; }
/* void updateGraphs(Post post) * { * var points = post.hist; * * GraphPane likesPane = graf.GraphPane; * GraphPane repostsPane = zedGraphControl1.GraphPane; * GraphPane viewsPane = zedGraphControl2.GraphPane; * PointPairList likesList = new PointPairList(); * PointPairList repostsList = new PointPairList(); * PointPairList viewsList = new PointPairList(); * likesPane.CurveList.Clear(); * repostsPane.CurveList.Clear(); * viewsPane.CurveList.Clear(); * int inc = 0; * for (int i = 0; i < points.Count; i++) * { * likesList.Add(inc, points.ElementAt(i).likes); * repostsList.Add(inc, points.ElementAt(i).reposts); * viewsList.Add(inc, points.ElementAt(i).views); * inc++; * } * * LineItem myCurve = likesPane.AddCurve("likes", likesList, Color.Green, SymbolType.None); * LineItem myCurve1 = repostsPane.AddCurve("reposts", repostsList, Color.Red, SymbolType.None); * LineItem myCurve2 = viewsPane.AddCurve("views", viewsList, Color.Blue, SymbolType.None); * graf.AxisChange(); * graf.Invalidate(); * zedGraphControl1.AxisChange(); * zedGraphControl1.Invalidate(); * zedGraphControl2.AxisChange(); * zedGraphControl2.Invalidate(); * } */ private void set_Wl(object sender, EventArgs e) { delegatelog("SET Wl...", Color.Cyan); WallGet response = WallGet.FromJson(API.getResponse("wall.get", "owner_id=-165233859" + ",count=10")); int max = 0; int min = 999999; var now = new DateTimeOffset(DateTime.Now); foreach (Item item in response.Response.Items) { if (now.ToUnixTimeSeconds() - item.Date < 60 * 60 * 24 * 7) { if (item.Likes.Count < min) { min = Convert.ToInt32(item.Likes.Count); } if (item.Likes.Count > max) { max = Convert.ToInt32(item.Likes.Count); } } } foreach (Item item in response.Response.Items) { if (now.ToUnixTimeSeconds() - item.Date < 60 * 60 * 24) { foreach (string line in API.alredyPosted) { if (line.Split('=')[1] == item.Id.ToString()) { for (int i = 0; i < groupList.Count; i++) { if (line.Split('=')[0].Split('_')[0] == groupList[i].id) { double old = groupList[i].Wl; double G; if (min == max && max == 0) { G = 0.25; } else if (min == max && max != 0) { G = 0.5; } else { G = (Convert.ToDouble(item.Likes.Count) - Convert.ToDouble(min)) / (Convert.ToDouble(max) - Convert.ToDouble(min)); } if (G > 0.5) { G = G + (G - 0.5) / 2; } if (groupList[i].Wl <= 1) { if (!(groupList[i].Wl + (G - 0.5) / Kgi < 0.5)) { double mew = groupList[i].Wl + (G - 0.5) / Kgi; groupList[i].Wl = groupList[i].Wl + (G - 0.5) / Kgi; } } else { if (!(groupList[i].Wl + (G - 0.5) * 2 / Kgi > 2)) { double mew = groupList[i].Wl + (G - 0.5) * 2 / Kgi; groupList[i].Wl = groupList[i].Wl + (G - 0.5) * 2 / Kgi; } } if (item.Likes.Count > 0) { old = groupList[i].Wl; } else { old = groupList[i].Wl; } } } } } } } //write Wl changing /* string s = ""; * if (File.ReadAllLines("Gl.txt").Length == 0) * { * s = ""; * for (int i = 0; i < groupList.Count; i++) * { s = s + groupList[i].domain + ';'; } * File.WriteAllText("Gl.txt", s + '\r' + '\n'); * } * s = ""; * for (int i = 0; i < groupList.Count; i++) * { * s = s + groupList[i].Wl + ';'; * } * File.AppendAllText("Gl.txt", s + '\r' + '\n'); * delegatelog("Success", Color.Cyan); */ string[] s = new string[groupList.Count]; var file = File.ReadAllLines(pathPrefics + "Gl.txt"); if (file.Length == 0) { for (int i = 0; i < groupList.Count; i++) { s[i] = groupList[i].domain + ';'; } File.WriteAllLines(pathPrefics + "Gl.txt", s); for (int i = 0; i < groupList.Count; i++) { s[i] = s[i] + groupList[i].Wl + ';'; } File.WriteAllLines(pathPrefics + "Gl.txt", s); } else { for (int j = 0; j < file.Length; j++) { for (int i = 0; i < groupList.Count; i++) { if (file[j].Split(';')[0] == groupList[i].domain) { file[j] = file[j] + groupList[i].Wl + ';'; break; } } } File.WriteAllLines(pathPrefics + "Gl.txt", file); } delegatelog("Success", Color.Cyan); }
/// <summary> /// Сравнение текстов /// </summary> /// <param name="wallGetResponse"></param> /// <param name="getKey"></param> async Task<WallGet> ITextService.SortedTextAsync(WallGet wallGetResponse, List<VkItemViewModel> oldItems) { try { if (wallGetResponse != null && oldItems != null) { var itemCount = wallGetResponse.Items.Count; List<Item> newItems = new List<Item>(itemCount); for (int i = 0; i < itemCount; i++) { var item = wallGetResponse.Items[i]; var itemDate = item.Date; var isContains = false; for (int j = 0; j < oldItems.Count; j++) { var oldItemDate = oldItems[j].Date; if (oldItemDate - 120 < itemDate && itemDate < oldItemDate + 120) { isContains = true; break; } } if (!isContains) { var itemKey = GetKey(item.Text ?? string.Empty); if (itemKey.Length > 2) { for (int j = 0; j < oldItems.Count; j++) { var oldKey = GetKey(oldItems[j].Text ?? string.Empty); var exNOCount = itemKey.Except(oldKey).Count(); var exONCount = oldKey.Except(itemKey).Count(); var newLength = itemKey.Length; var oldLength = oldKey.Length; double middle = 0d; if (newLength != 0 && oldLength != 0) { middle = (double)(exNOCount / newLength + exONCount / oldLength) / 2; } var add = false; if (itemKey.Length < 5) { add = oldItems[j].Text != item.Text; if (!add) { add = (1 - middle) < 0.95; } } else { add = (1 - middle) < 0.85; } if (add) { newItems.Add(item); break; } } } else { newItems.Add(item); } } } wallGetResponse.Items = newItems; } } catch (Exception ex) { await _telegramService.SendMessageExceptionAsync(ex); } return wallGetResponse; }