private void Button_Click(object sender, RoutedEventArgs e) { try { uint appIDD = 7099217; Settings settings = Settings.All; vkApi.Authorize(new ApiAuthParams { ApplicationId = appIDD, Login = Login.Text, Password = PasswordBox.Password, Settings = settings, });; } catch (Exception) { MessageBox.Show("Введены неверные данные", "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } VkApi = vkApi; Window1 form1 = new Window1(); form1.Show(); Visibility = Visibility.Hidden; GC.Collect(); }
private void AccountList_SelectionChanged(object sender, SelectionChangedEventArgs e) { VkNet.VkApi api = new VkNet.VkApi(); var item = (UserData)AccountList.SelectedItem; api.Authorize(new VkNet.Model.ApiAuthParams { AccessToken = item.Token, UserId = (long)item.Id, }); try { api.Account.GetInfo(); if (api.IsAuthorized) { Tools.VkApi = api; } } catch (VkNet.Exception.UserAuthorizationFailException ex) { PreviewErrorBorder = this.AccountListPanelBorder; PreviewErrorBorder.Visibility = Visibility.Collapsed; this.AuthErrorBorder.Visibility = Visibility.Visible; this.AuthErrorCodeTextRun.Text = "Код:" + ex.ErrorCode; this.AuthErrorTextRun.Text = ex.Message; } }
public async Task <long> SendWallMessage(VkNet.VkApi vkApi, long idGroup, Guid idMessage, params long[] vkUserIds) { var message = await _context.Messages .Include(x => x.Files) .FirstOrDefaultAsync(x => x.Id == idMessage); var idFiles = message.Files.Select(x => x.IdFile).ToArray(); var attachments = await _context.Files .Where(x => idFiles.Contains(x.Id)) .Select(x => x.VkUrl) .Select(x => Newtonsoft.Json.JsonConvert.DeserializeObject <VkNet.Model.Attachments.Photo>(x)) .ToArrayAsync(); string text = await UpdateMessage(_context, message.Text, vkUserIds); var postId = await vkApi.Wall.PostAsync(new VkNet.Model.RequestParams.WallPostParams() { Attachments = (!attachments?.Any() ?? true) ? null : attachments, Message = text, OwnerId = -idGroup, FromGroup = true });// VkConnector.Methods.Wall.Post(userAccessToken, idGroup, text, attachments); await _context.WallPosts.AddAsync(new Models.Database.WallPosts() { DtAdd = DateTime.UtcNow, IdGroup = idGroup, IdVk = postId, Text = text }); await _context.SaveChangesAsync(); return(postId); }
public async Task <VkNet.VkApi> GetGroupVkApi(long idGroup) { if (GroupsVkApis.ContainsKey(idGroup)) { return(GroupsVkApis[idGroup]); } var groupAccessToken = await _context.Groups .Where(x => x.IdVk == idGroup) .Select(x => x.AccessToken) .FirstOrDefaultAsync(); if (string.IsNullOrWhiteSpace(groupAccessToken)) { return(null); } var groupVkApi = new VkNet.VkApi(); await groupVkApi.AuthorizeAsync(new VkNet.Model.ApiAuthParams() { AccessToken = groupAccessToken, ApplicationId = _configuration.GetValue <ulong>("VkApplicationId"), Settings = VkNet.Enums.Filters.Settings.All }); GroupsVkApis.TryAdd(idGroup, groupVkApi); return(groupVkApi); }
static void Main(string[] args) { VkApi.VkApi api = new VkApi.VkApi((int)_applicationId, "messages"); //api.Authorization("+79687361740", ",eheyler"); //Моя авторизация перестала работать VkNet.VkApi net = new VkNet.VkApi(); net.Authorize(new VkNet.ApiAuthParams //Авторизация работает, но апи слабое { Login = "******", ApplicationId = _applicationId, Password = "******", Settings = Settings.All }); VkApi.VkApi.Token = net.Token; //А токен пригодится :) int membersCount = GroupService.GetMembersCount(27794994); List <User> users = new List <User>(); for (int i = 0; membersCount > 0; membersCount -= 100, i++) { int count = membersCount >= 100 ? 100 : membersCount; IEnumerable <User> currentUsers = GroupService.GetMembers(27794994, (0 + i * 100), count, 10); currentUsers = currentUsers.Where(u => u.sex == Sex.Female && (u.relation != Relation.HaveFriend || u.relation != Relation.Engaged || u.relation != Relation.Married || u.relation != Relation.Love) && u.deactivated == null); users.AddRange(currentUsers); Console.WriteLine($"Добавлено {currentUsers.Count()} пользователей. Осталось {membersCount} пользователей. Осталось {TimeSpan.FromSeconds(membersCount/200)}"); } //IEnumerable<Item> UnreadMessages = messages.Where(message => message.ReadState == 1 && message.Attachments != null && message.Attachments.Where(attachment => attachment.Market != null).Count() != 0); //foreach (var message in UnreadMessages) //{ //} Console.ReadKey(); }
public HomeController() { VkApi.VkApi api = new VkApi.VkApi((int)_applicationId, "messages"); //api.Authorization("+79687361740", ",eheyler"); //Моя авторизация перестала работать VkNet.VkApi net = new VkNet.VkApi(); net.Authorize(new VkNet.ApiAuthParams //Авторизация работает, но апи слабое { Login = "******", ApplicationId = _applicationId, Password = "******", Settings = Settings.All }); VkApi.VkApi.Token = net.Token; //А токен пригодится :) int membersCount = GroupService.GetMembersCount(27794994); for (int i = 0; membersCount > 0; membersCount -= 100, i++) { int count = membersCount >= 100 ? 100 : membersCount; IEnumerable <User> currentUsers = GroupService.GetMembers(27794994, (0 + i * 100), count, 10); currentUsers = currentUsers.Where(u => u.sex == Sex.Female && (u.relation != Relation.HaveFriend || u.relation != Relation.Engaged || u.relation != Relation.Married || u.relation != Relation.Love) && u.deactivated == null); users.AddRange(currentUsers); Console.WriteLine($"Добавлено {currentUsers.Count()} пользователей. Осталось {membersCount} пользователей. Осталось {TimeSpan.FromSeconds(membersCount / 200)}"); } }
private void ShowActiveAccounts() { AccountList.Items.Clear(); List <long> Ids = new List <long>(); foreach (var account in GetSavedAuthData()) { long lgp = long.Parse(account["ID"].ToString()); Ids.Add(lgp); Debug.WriteLine(lgp); AccountList.Items.Add(new UserData { Id = lgp, Token = account["Token"].ToString(), Name = account["Name"].ToString(), }); } var api = new VkNet.VkApi(); api.Authorize(new VkNet.Model.ApiAuthParams() { AccessToken = "4b0168fd4b0168fd4b0168fd8f4b676c6744b014b0168fd1093d8fdf1e3c0017422a04c" }); var data = api.Users.Get(Ids, ProfileFields.Photo50); for (int i = 0; i < AccountList.Items.Count; i++) { if (data[i].Photo50 != null) { ((UserData)AccountList.Items[i]).AvatarUrl = data[i].Photo50.AbsoluteUri; } } Ids.Clear(); }
public bool Join_Groups(VkNet.VkApi vk, string href_) { long guest_gruopID = 0; try { guest_gruopID = vk.Utils.ResolveScreenName(href_.Substring(href_.LastIndexOf('/') + 1)).Id.Value; return(vk.Groups.Join(guest_gruopID)); } catch (VkNet.Exception.CaptchaNeededException ex) { MessageBox.Show("ВК требует капчу! К сожалению, Вам придется воити в ВК через браузер и " + "попробовать вступить в какое-нибудь сообщество, что бы ВК предложил ввести капчу, там ее и введите. " + "Затем можно вернуться в программу"); return(false); } catch (VkNet.Exception.VkApiException ex) { MessageBox.Show(string.Format("Ошибка: {0}" + Environment.NewLine + "Для продолжения нажмити ОК", ex.Message)); return(false); } // return false; }
private void dispatcherTimer_Tick(object sender, EventArgs e) { VkNet.VkApi api = new VkNet.VkApi(); int lastCount = 0; Train train = Train.GetAllTrainInfo("ЗАПОРІЖЖЯ 1", "КИЇВ", "2015-06-28", "072П", 3); int currentCount = train.GetCountPlacesByCarType(new List<CarType>(){CarType.ReservedSeat,CarType.ReservedSeatFirm}); if (currentCount > 0 && currentCount != lastCount) api.Messages.Send(162945005, false, "ЗАПОРІЖЖЯ 1 - КИЇВ 2015-06-28 072П місця - " + currentCount.ToString(), "Ticket reminder"); }
protected override void Act(VkNet.VkApi vk, ref User user, long sid = 0, string captchaInText = null) { vk.Messages.Send(new MessagesSendParams { UserId = Convert.ToInt64(user.Url), Message = ":)", CaptchaSid = sid, CaptchaKey = captchaInText }); }
private void AuthForm_Load(object sender, EventArgs e) { const string userRoot = "HKEY_CURRENT_USER"; const string subkey = "DefectorVK"; const string keyName = userRoot + "\\" + subkey; textBox1.Text = (string)Microsoft.Win32.Registry.GetValue(keyName, "key", "Введите ключ доступа"); int num_code_ = 12000; if (CheckCode(textBox1.Text, ref num_code_)) { numeric_of_code = num_code_; this.DialogResult = DialogResult.OK; } else { if (LoadSettingsFromReg() == 0) { VkNet.VkApi vk = new VkNet.VkApi(); var time = vk.Utils.GetServerTime(); SaveSettingsToReg(DateTimeToDenTime(time)); } else { VkNet.VkApi vk = new VkNet.VkApi(); var nowtime = vk.Utils.GetServerTime(); var start_time = ConvertFromDenTimestamp(LoadSettingsFromReg()); start_time = start_time.AddDays(3); if ((start_time - nowtime).TotalDays > 0 && (start_time - nowtime).TotalDays <= 3) { TimeSpan s = (start_time - nowtime); string mess = string.Format("{0} д. {1} ч. {2} мин.", (int)s.TotalDays, (int)s.Hours, (int)s.Minutes); label2.Text = mess; trial_code = true; numeric_of_code = 12001; //this.DialogResult = DialogResult.OK; } else { label2.Text = "Период бесплатного использования закончен"; textBox1.Visible = true; label4.Visible = true; linkLabel1.Visible = true; int num = 12000; if (CheckCode(textBox1.Text, ref num)) { numeric_of_code = num; check_code = true; // this.DialogResult = DialogResult.OK; } //this.DialogResult = DialogResult.Cancel; } } } }
public static void Init(int appId) { var services = new ServiceCollection(); services.AddAudioBypass(); VkApi = new Va(services); ImageCache.Init(); ApplicationId = (ulong)appId; }
public static void login() { ulong appId = 6236745; string email = "79166054162"; string password = "******"; VkNet.Enums.Filters.Settings settings = VkNet.Enums.Filters.Settings.All; api = new VkNet.VkApi(); api.Authorize(new VkNet.ApiAuthParams { ApplicationId = appId, Login = email, Password = password, Settings = settings }); }
private void SaveAuthData(VkNet.VkApi api) { var AccountInfo = api.Account.GetProfileInfo(); var data = new JObject { { "ID", api.UserId }, { "Name", AccountInfo.FirstName + " " + AccountInfo.LastName }, { "Token", api.Token } }; var kay = Registry.CurrentUser.OpenSubKey("SOFTWARE", true).CreateSubKey("VkPlayerByOneCellDM"); kay.SetValue(api.UserId.ToString(), data); kay.Close(); }
/// <summary> /// Произведение конкретного действия. /// </summary> /// <param name="vk">Экземпляр ВК-сущности</param> /// <param name="user">Пользователь, над которым производится действие.</param> /// <param name="sid">ID каптчи.</param> /// <param name="captchaInText">Текст разгаданной каптчи.</param> /// <returns>Возвращает пользователя типа UserData.</returns> public bool MakeAction(VkNet.VkApi vk, ref User user, long sid = 0, string captchaInText = null) { try { Logger.Log($"{ActionTypeEnum} {user.FullName}({user.Url})"); Act(vk, ref user, sid, captchaInText); ActionCommittedCount++; return(true); } catch (CaptchaNeededException ex) { Logger.Log(ex.Message); var solvedCaptcha = SolveCaptcha(ex.Img); return(!string.IsNullOrEmpty(solvedCaptcha) && MakeAction(vk, ref user, sid: ex.Sid, captchaInText: solvedCaptcha)); } catch (Exception ex) { Logger.ErrorLog(ex); //TODO to special typed Exceprion? if (ex.Message.Contains("Unknown error occurred") || ex.Message.Contains("Flood control") || ex.Message.Contains("Permission to perform this action is denied")) { IsActionLimitAchieved = true; } if (ex.Message.Contains("privacy settings") || ex.Message.Contains("user not found") || ex.Message.Contains("put you on their blacklist") || ex.Message.Contains("user deactivated") || ex.Message.Contains("Access denied")) { user.UserActions.Add(new VkApi.UserAction { ProfileId = Profile.Id, ActionTypeId = 0, UpdateDateTime = DateTime.Now }); } } return(false); }
private static void SetVkApiInstrumentProfile(object sender, KeyValuePair <string, string> e) { api = new VkNet.VkApi(); //6884639 api.Authorize(new ApiAuthParams { ApplicationId = 6884639, Login = "******", Password = "******", // Settings = Settings.Friends, TwoFactorAuthorization = () => { Console.WriteLine("Enter Code:"); return(Console.ReadLine()); } }); }
private static void SetVkApiInstrumentProfile(object sender, KeyValuePair <string, string> e) { api = new VkNet.VkApi(); api.Authorize(new ApiAuthParams { ApplicationId = 6394527, Login = e.Key, Password = e.Value, Settings = Settings.All, TwoFactorAuthorization = () => { Console.WriteLine("Enter Code:"); return(Console.ReadLine()); } }); }
public bool MakeAction(VkNet.VkApi vk, long groupId, string post, long sid = 0, string captchaInText = null) { try { Logger.Log($"{ActionType} {groupId}"); //var definedActionType = (GroupActionType) Enum.Parse(typeof (GroupActionType), actionType.ToString()); switch (ActionType) { case GroupActionType.Post: vk.Wall.Post(new WallPostParams { OwnerId = -groupId, Message = post, CaptchaSid = sid, CaptchaKey = captchaInText }); return(true); default: throw new WrongActionTypeException(ActionType.ToString()); } } catch (CaptchaNeededException ex) { Logger.Log(ex.Message); var solvedCaptcha = SolveCaptcha(ex.Img); if (!string.IsNullOrEmpty(solvedCaptcha)) { MakeAction(vk, groupId, post, sid: ex.Sid, captchaInText: solvedCaptcha); } else { return(false); } } catch (Exception ex) { Logger.ErrorLog(ex); } return(false); }
private async Task SendMessage(VkNet.VkApi vkApi, bool isImageFirst, string text, IEnumerable <VkNet.Model.Attachments.MediaAttachment> attachments, VkNet.Model.Keyboard.MessageKeyboard keyboard, long[] ids) { if (keyboard != null) { keyboard.OneTime = true; } string nbspString = new string(new char[] { (char)160 }); var mediaAttachments = (attachments != null && attachments.Any()) ? attachments : null; if (!isImageFirst || mediaAttachments == null) { await vkApi.Messages.SendToUserIdsAsync(new VkNet.Model.RequestParams.MessagesSendParams() { UserIds = ids, Message = string.IsNullOrEmpty(text) ? nbspString : text, Attachments = mediaAttachments, Keyboard = keyboard }); return; } await vkApi.Messages.SendToUserIdsAsync(new VkNet.Model.RequestParams.MessagesSendParams() { UserIds = ids, Message = nbspString, Attachments = attachments }); if (string.IsNullOrEmpty(text) && keyboard == null) { return; } await vkApi.Messages.SendToUserIdsAsync(new VkNet.Model.RequestParams.MessagesSendParams() { UserIds = ids, Message = string.IsNullOrEmpty(text) ? nbspString : text, Keyboard = keyboard }); }
protected override void Act(VkNet.VkApi vk, ref User user, long sid = 0, string captchaInText = null) { var profilePhotos = vk.Photo.Get(new PhotoGetParams { OwnerId = user.Url, AlbumId = PhotoAlbumType.Profile }); if (profilePhotos.Any()) { vk.Likes.Add(new LikesAddParams { Type = LikeObjectType.Photo, OwnerId = user.Url, ItemId = Convert.ToInt64(profilePhotos[0].Id), CaptchaSid = sid, CaptchaKey = captchaInText }); } }
public async Task <VkNet.VkApi> GetUserVkApi(long idVkUser) { if (UsersVkApis.ContainsKey(idVkUser)) { return(UsersVkApis[idVkUser]); } var idUser = await _context.Users .Where(x => x.IdVk == idVkUser) .Select(x => x.Id) .FirstOrDefaultAsync(); var userAccessToken = await _context.UserTokens .Where(x => x.LoginProvider == "Vkontakte") .Where(x => x.UserId == idUser) .Where(x => x.Name == "access_token") .Select(x => x.Value) .FirstOrDefaultAsync(); if (string.IsNullOrWhiteSpace(userAccessToken)) { return(null); } var userVkApi = new VkNet.VkApi(); try { await userVkApi.AuthorizeAsync(new VkNet.Model.ApiAuthParams() { AccessToken = userAccessToken, ApplicationId = _configuration.GetValue <ulong>("VkApplicationId"), Settings = VkNet.Enums.Filters.Settings.All }); } catch { } UsersVkApis.TryAdd(idVkUser, userVkApi); return(userVkApi); }
public async Task SendMessages(VkNet.VkApi vkApi, long idGroup, Guid idMessage, params long[] vkUserIds) { var message = await _context.Messages .Include(x => x.Files) .FirstOrDefaultAsync(x => x.Id == idMessage); var idFiles = message.Files.Select(x => x.IdFile).ToArray(); var attachments = await _context.Files .Where(x => idFiles.Contains(x.Id)) .Select(x => x.VkUrl) .ToArrayAsync(); var images = attachments.Select(x => { try { return(Newtonsoft.Json.JsonConvert.DeserializeObject <VkNet.Model.Attachments.Photo>(x)); } catch { return(null); } }).Where(x => x != null); var keyboard = string.IsNullOrWhiteSpace(message.Keyboard) ? null : Newtonsoft.Json.JsonConvert.DeserializeObject <VkNet.Model.Keyboard.MessageKeyboard>(message.Keyboard); if (HasAnyKeywords(message.Text)) { string siteUrl = _configuration.GetValue <string>("SiteUrl"); for (int idx = 0; idx < vkUserIds.Length; idx++) { string text = message.Text; var subscriber = await _context.Subscribers .Include(nameof(Models.Database.Subscribers.VkUser)) .FirstOrDefaultAsync(x => x.IdGroup == idGroup && x.IdVkUser == vkUserIds[idx]); if (subscriber != null) { text = UpdateMessageByVkUser(subscriber.VkUser, text); text = await UpdateMessageByShortUrls(_context, siteUrl, subscriber, text); } bool hasError = false; try { await SendMessage(vkApi, message.IsImageFirst, text, images, keyboard, new long[] { vkUserIds[idx] }); } catch (Exception ex) { Console.WriteLine($"MessageHelper.SendMessages (vkUserId={vkUserIds[idx]}) exception: {ex.Message}{Environment.NewLine}{ex.StackTrace}"); hasError = true; } if (!hasError) { OnMessageSent(idGroup, vkUserIds.Length, idx + 1); } } } else { int offset = 0; do { var currentUserIds = (Stepping > vkUserIds.Length - offset ? vkUserIds.Skip(offset) : vkUserIds.Skip(offset).Take(Stepping)).ToArray(); bool hasError = false; try { await SendMessage(vkApi, message.IsImageFirst, message.Text, images, keyboard, currentUserIds); } catch (Exception ex) { Console.WriteLine($"MessageHelper.SendMessages exception: {ex.Message}{Environment.NewLine}{ex.StackTrace}"); hasError = true; } offset += currentUserIds.Length; if (offset >= vkUserIds.Length) { break; } if (!hasError) { OnMessageSent(idGroup, vkUserIds.Length, offset); } } while (offset < vkUserIds.Length); } }
public User(VkNet.VkApi VkApi, Action <MessageStatus, string> Log) { this.VkApi = VkApi; this.Log = Log; }
protected abstract void Act(VkNet.VkApi vk, ref User user, long sid = 0, string captchaInText = null);
protected override void Act(VkNet.VkApi vk, ref User user, long sid = 0, string captchaInText = null) { vk.Friends.Add(user.Url, captchaSid: sid, captchaKey: captchaInText); }
private async Task <bool> GetVkontakteApiAsync() { bool result = false; if (!string.IsNullOrEmpty(UserAccessFlowApiKey) && !string.IsNullOrEmpty(ServiceApiKey)) { var userApi = new VkNet.VkApi(); try { await userApi.AuthorizeAsync(new ApiAuthParams { AccessToken = UserAccessFlowApiKey, Settings = Settings.All | Settings.Offline }); } catch (Exception e) { Console.WriteLine("Error authorizing vkontakte api via user access flow key: " + e); } if (userApi.IsAuthorized) { UserApi = userApi; UserApi.SetLanguage(Language.Ru); } var serviceApi = new VkNet.VkApi(); try { await serviceApi.AuthorizeAsync(new ApiAuthParams { AccessToken = ServiceApiKey, ApplicationId = AppId, Settings = Settings.All | Settings.Offline }); } catch (Exception e) { Console.WriteLine("Error authorizing vkontakte api via service key: " + e); } if (serviceApi.IsAuthorized) { ServiceApi = serviceApi; ServiceApi.SetLanguage(Language.Ru); } if (UserApi != null && ServiceApi != null) { ApiVersion = userApi.VkApiVersion.Version; result = true; } } else { Console.WriteLine("Error connecting to Vkontakte: no access keys available."); } return(result); }
private void TwoFactorAuth() { var api = new VkNet.VkApi(); if (twoAuthorize == false) { var Awaiter = api.AuthorizeAsync(new VkNet.Model.ApiAuthParams() { Password = PasswordTextbox.Text, Login = LoginTextBox.Text, TwoFactorSupported = true, ApplicationId = 6121396, Settings = Settings.Audio | Settings.Friends | Settings.Offline, TwoFactorAuthorization = () => { this.Dispatcher.Invoke(() => { ShowTwoAuthComponents(); }); string code = ""; try { twoAuthorize = true; while (codeSended != true) { Thread.Sleep(1000); } this.Dispatcher.Invoke(() => { codeSended = false; code = TwoFactorCodeTextBox.Text; TwoFactorCodeTextBox.Text = ""; }); } catch (Exception ex) { Debug.WriteLine(ex.Message); } return(code); } }).GetAwaiter(); Awaiter.OnCompleted(() => { try { Awaiter.GetResult(); if (api.IsAuthorized == true) { SaveAuthData(api); ShowActiveAccounts(); showAccountList(); } } catch (VkNet.Exception.VkAuthorizationException ex) { this.PreviewErrorBorder = LoginBorder; this.PreviewErrorBorder.Visibility = Visibility.Collapsed; this.AuthErrorBorder.Visibility = Visibility.Visible; this.AuthErrorTextRun.Text = ex.Message; Debug.WriteLine(ex.StackTrace); } catch (VkNet.Exception.UserAuthorizationFailException ex) { this.PreviewErrorBorder = LoginBorder; this.AuthErrorBorder.Visibility = Visibility.Visible; this.AuthErrorCodeTextRun.Text = "Код:" + ex.ErrorCode; this.AuthErrorTextRun.Text = ex.Message; Debug.WriteLine(ex.StackTrace); } }); } else { codeSended = true; } }
static void Main(string[] args) { Dictionary <string, int> words = new Dictionary <string, int>(); Dictionary <string, string> keys = new Dictionary <string, string>(); VkNet.VkApi vkApi = new VkNet.VkApi(); vkApi.Authorize(new ApiAuthParams { ApplicationId = 000000, Login = "******", Password = "******", Settings = VkNet.Enums.Filters.Settings.All }); Random r = new Random(); List <User> users = new List <User>(); List <long> aaa = new List <long>(); Test yyyy = Test.Load("msg_sc.json"); Regex rr = new Regex("\\)+"); // yyyy.i -= 101032;//Хомяки //ulong hor = (ulong)vkApi.Messages.GetHistory(new VkNet.Model.RequestParams.MessagesGetHistoryParams { PeerId = 2000000107 }).Messages[0].OutRead; List <Message> msg = new List <Message>(); MessageGetHistoryObject aa = new MessageGetHistoryObject(); while (yyyy.i < 50980) { try { int y = r.Next(21); aa = vkApi.Messages.GetHistory(new VkNet.Model.RequestParams.MessagesGetHistoryParams { PeerId = 2000000168, //для Аколитской флудилки цифра - 148, для студсовета - 168 Count = 180 + y, Offset = yyyy.i, Reversed = true }); yyyy.i += 180 + y; } catch (Exception e) { yyyy.i += 200; continue; } Thread.Sleep(250 + r.Next(750)); msg.AddRange(aa.Messages); } foreach (Message s in msg) { //int day = (((DateTime)s.Date).Year - 2016) * 365 + ((DateTime)s.Date).DayOfYear; if (yyyy.users.ContainsKey((long)s.FromId)) { yyyy.users[(long)s.FromId]++; } else { yyyy.users.Add((long)s.FromId, 1); } if (s.Emoji.HasValue || rr.Match(s.Text).Value == s.Text) { if (yyyy.smiles.ContainsKey((long)s.FromId)) { yyyy.smiles[(long)s.FromId]++; } else { yyyy.smiles.Add((long)s.FromId, 1); } } if (s.Attachments.Count > 0) { if (yyyy.pictures.ContainsKey((long)s.FromId)) { yyyy.pictures[(long)s.FromId]++; } else { yyyy.pictures.Add((long)s.FromId, 1); } } if (s.Attachments.Count > 0 || s.Emoji.HasValue || rr.Match(s.Text).Value == s.Text) { if (yyyy.flood.ContainsKey((long)s.FromId)) { yyyy.flood[(long)s.FromId]++; } else { yyyy.flood.Add((long)s.FromId, 1); } } /*if (yyyy.dates.ContainsKey(day)) * yyyy.dates[day]++; * else yyyy.dates.Add(day, 1);*/ } List <long> a = new List <long>(); foreach (var s in yyyy.users) { a.Add(s.Key); } var gusers = vkApi.Users.Get(a); var lusers = gusers.OrderBy(x => { return(yyyy.users[x.Id]); } ).Reverse(); int tst = 0; int flood = 0; // yyyy.i += 101032; foreach (var s in lusers) { string t = s.FirstName + " " + s.LastName; tst += yyyy.users[s.Id]; if (!yyyy.pictures.ContainsKey(s.Id)) { yyyy.pictures.Add(s.Id, 0); } if (!yyyy.smiles.ContainsKey(s.Id)) { yyyy.smiles.Add(s.Id, 0); } if (!yyyy.flood.ContainsKey(s.Id)) { yyyy.flood.Add(s.Id, 0); } flood += yyyy.flood[s.Id]; Console.WriteLine(t + " нафлудил: " + yyyy.users[s.Id].ToString() + " из них " + yyyy.pictures[s.Id].ToString() + " с картинками, и " + yyyy.smiles[s.Id].ToString() + " со смайлами"); } //Console.WriteLine("Сергей написал " + (ser + seroff).ToString() + " сообщений только из скобочек, из них " + seroff + " не из трех. Злых (><) смайлов было "+serang+". Эл написал "+l+" косящихся глаз."); yyyy.Save("msg_sc.json"); /*using (StreamWriter sw = new StreamWriter("int.txt", false)) * { * foreach (var t in yyyy.dates) * { * sw.Write(t.Value.ToString() + " "); * } * }*/ Console.ReadLine(); }
public async Task <IActionResult> ConnectCallback(string code) { string url = $"https://oauth.vk.com/access_token?" + $"client_id={_configuration.GetValue<long>("VkApplicationId")}" + $"&client_secret={_configuration.GetValue<string>("VkApplicationPassword")}" + $"&redirect_uri={$"{_configuration.GetValue<string>("SiteUrl")}/Groups/ConnectCallback"}" + $"&code={code}"; string result = null; using (var client = new HttpClient()) { var response = await client.PostAsync(url, null); result = await response.Content.ReadAsStringAsync(); Newtonsoft.Json.Linq.JObject obj = Newtonsoft.Json.Linq.JObject.Parse(result); //TODO: Добавить проверку на null у token var token = obj.Properties().FirstOrDefault(x => x.Name.StartsWith("access_token_")); var idGroup = long.Parse(token.Name.Split('_').Last()); string tokenValue = token.Value.ToString(); var group = await _context.Groups.Where(x => x.IdVk == idGroup).FirstOrDefaultAsync(); if (group == null) { group = new Groups() { IdVk = idGroup }; await _context.Groups.AddAsync(group); } group.AccessToken = tokenValue; using (var vkGroupApi = new VkNet.VkApi()) { await vkGroupApi.AuthorizeAsync(new VkNet.Model.ApiAuthParams() { AccessToken = tokenValue, Settings = VkNet.Enums.Filters.Settings.Groups }); group.CallbackConfirmationCode = await vkGroupApi.Groups.GetCallbackConfirmationCodeAsync((ulong)idGroup); var groups = await vkGroupApi.Groups.GetByIdAsync(null, idGroup.ToString(), VkNet.Enums.Filters.GroupsFields.Description); var groupInfo = groups.FirstOrDefault(); group.Name = groupInfo.Name; group.Photo = groupInfo.Photo50.ToString(); } await _context.SaveChangesAsync(); var idUser = _userHelperService.GetUserId(User); var groupAdmin = await _context.GroupAdmins.Where(x => x.IdUser == idUser && x.IdGroup == idGroup).FirstOrDefaultAsync(); if (groupAdmin == null) { groupAdmin = new GroupAdmins() { IdGroup = idGroup, IdUser = idUser, DtConnect = DateTime.UtcNow }; await _context.GroupAdmins.AddAsync(groupAdmin); } else { groupAdmin.DtConnect = DateTime.UtcNow; } await _context.SaveChangesAsync(); url = $"https://api.vk.com/method/groups.getCallbackServers?" + $"access_token={tokenValue}" + $"&group_id={idGroup}" + $"&v={AspNet.Security.OAuth.Vkontakte.VkontakteAuthenticationDefaults.ApiVersion}"; response = await client.PostAsync(url, null); result = await response.Content.ReadAsStringAsync(); var callbackServers = new VkResponse(result).ToVkCollectionOf <VkNet.Model.CallbackServerItem>(x => x); long idServer = -1; var callbackServerUrl = _configuration.GetValue <string>("CallbackServerUrl"); var callbackServerInfo = callbackServers.FirstOrDefault(x => x.Url == callbackServerUrl); if (callbackServerInfo == null) { url = $"https://api.vk.com/method/groups.addCallbackServer?" + $"access_token={tokenValue}" + $"&group_id={idGroup}" + $"&url={_configuration.GetValue<string>("SiteUrl")}{callbackServerUrl}" + $"&title={_configuration.GetValue<string>("CallbackServerName")}" + $"&v={AspNet.Security.OAuth.Vkontakte.VkontakteAuthenticationDefaults.ApiVersion}"; response = await client.PostAsync(url, null); result = await response.Content.ReadAsStringAsync(); var json = Newtonsoft.Json.Linq.JObject.Parse(result); idServer = new VkResponse(json[propertyName: "response"]) { RawJson = result }[key: "server_id"]; } else { idServer = callbackServerInfo.Id; } var callbackProperties = new VkNet.Model.CallbackSettings(); foreach (var property in callbackProperties.GetType().GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance)) { property.SetValue(callbackProperties, true); } var parameters = VkNet.Model.RequestParams.CallbackServerParams.ToVkParameters(new VkNet.Model.RequestParams.CallbackServerParams() { GroupId = (ulong)idGroup, ServerId = idServer, CallbackSettings = callbackProperties }); parameters.Add("access_token", tokenValue); parameters.Add("v", AspNet.Security.OAuth.Vkontakte.VkontakteAuthenticationDefaults.ApiVersion); url = "https://api.vk.com/method/groups.setCallbackSettings"; HttpContent content = new FormUrlEncodedContent(parameters); response = await client.PostAsync(url, content); result = await response.Content.ReadAsStringAsync(); } return(RedirectToAction(nameof(IndexConnected), "Groups")); }