// Token check with direct parsing public static int TokenCheckDirectVoid( int i, string[] tokens, RequestParams parameters, int bdayDay, VkUsers users) { // First tokens selecting if (i < tokens.Length) { parameters.Token = tokens[i]; Console.WriteLine("\nToken are blocked. Selected next {0} token\n", i); Console.WriteLine("Lets try again parsing {0} day\n", bdayDay); return(1); } // If all tokens in list are lock - check token list again else { i = 0; Console.WriteLine("\n.Start again from 0 token\n"); try { while (users.response.Count == 0 && i < tokens.Length) { Console.WriteLine("\n.Try token: {0} \n", i); parameters.Token = tokens[i]; var response = VkRequest.VkSearchResponse(parameters); users = VkUsers.VkDeserealiseResponse(response); i++; // No more working tokens -> exit if (i == tokens.Length) { Console.WriteLine("\nTokens are ended. Parsing is finished!\n"); return(2); } } } catch (Exception ex) { Console.WriteLine("\nWhile cycle exception:\n{0}", ex); return(3); } Console.WriteLine("\nTokens are ended. Try start from {0} token again\n", i); Console.WriteLine("Lets try again parsing {0} day\n", bdayDay); return(4); } }
// Get users from Vk (isWriteInFile == false), Get users and write id into file (isWriteInFile == true) public static VkUsers GetWriteUsers(RequestParams parameters, int delayFrom, int delayTo, string outputFile, bool isWriteInFile) { var randomGen = new Random(); Thread.Sleep(randomGen.Next(delayFrom, delayTo)); var response = VkRequest.VkSearchResponse(parameters); var users = VkUsers.VkDeserealiseResponse(response); if (isWriteInFile) { WriteInFile(users, outputFile, parameters.City); } return(users); }
// Token checking for Name parsing :: Find one Ivan in Moscow public static bool TokenCheck(RequestParams parameters, int delayFrom) { Thread.Sleep(delayFrom); VkUsers.RequestParamsInit(parameters); parameters.Name = "Иван"; parameters.City = 1; parameters.Count = 1; var response = VkRequest.VkSearchResponse(parameters); var users = VkUsers.VkDeserealiseResponse(response); if (users == null || users.response.Count == 0) { return(false); } return(users.response.Count > 0); }
// Token checking for Random parsing :: Check nearest day public static bool TokenCheckRandom(RequestParams parameters, int delayFrom) { Thread.Sleep(delayFrom); // Check for start or end of month: if (parameters.BirthDay < Month.DaysInMonth[parameters.BirthMonth]) { ++parameters.BirthDay; } else { --parameters.BirthDay; } var response = VkRequest.VkSearchResponse(parameters); var users = VkUsers.VkDeserealiseResponse(response); if (users == null || users.response.Count == 0) { return(true); } return(users.response.Count == 0); }
// ------------------------------------------------------- // // PARSING methods (requests, checking and othrz) // // ------------------------------------------------------- // // // Parsing functions :: Only by Birthday :: Random token & date from list at each parsing public static void ParsingUsersByExecuteRandom( out int usersFound, out string parsingStatus, RequestParams parameters, int birthYearFrom, int birthYearTo, int delayFrom, int delayTo, string outputFile) { usersFound = 0; var randomGen = new Random(); var tokens = File.ReadAllLines(TokensFile); var qtyTokens = File.ReadAllLines(TokensFile).Length; var allDates = Month.SetAllDatesFromTo(birthYearFrom, birthYearTo); var countOfDates = Month.SetAllDatesFromTo(birthYearFrom, birthYearTo).Length; var countOfRequests = 1; var requestData = ""; var currentNumOfDate = Randomizer.SetRandomDateNums(birthYearFrom, birthYearTo); const char delimeter = '.'; // Generate random array numbers of tokens for Token Checking var rndTokenArray = new int[qtyTokens]; var rndTokenArrayNums = new Randomizer(0, qtyTokens); for (var rnd = 0; rnd < rndTokenArrayNums.Count; rnd++) { rndTokenArray[rnd] = rndTokenArrayNums.Next(); } #region Parsing cycle with random date & token for (var date = 0; date < countOfDates; date++) { #region Checking all tokens if (rndTokenArray.Length == 0) { Console.WriteLine("\nTokens are ended. Parsing is finished!\n"); Console.WriteLine("You want to continue parsing? Y/N?"); RndFull : var a = Console.ReadLine(); if (a == "Y" || a == "y") { // Re-init array of random tokens qtyTokens = File.ReadAllLines(TokensFile).Length; rndTokenArray = new int[qtyTokens]; rndTokenArrayNums = new Randomizer(0, qtyTokens); for (var rnd = 0; rnd < rndTokenArrayNums.Count; rnd++) { rndTokenArray[rnd] = rndTokenArrayNums.Next(); } date = date + 24; } else if (a == "N" || a == "n") { parsingStatus = "Parsing not full completed!"; return; } else { Console.WriteLine("Please enter correct answer (Y or N)"); goto RndFull; } } #endregion var splitDate = allDates[currentNumOfDate[date]].Split(delimeter); parameters.BirthDay = Convert.ToInt32(splitDate[0]); parameters.BirthMonth = Convert.ToInt32(splitDate[1]); parameters.BirthYear = Convert.ToInt32(splitDate[2]); requestData += string.Format("var%20result{0}%3DAPI.users.search%28%7B%22count%22%3A1000%2C%22city%22%3A{1}%2C%22country%22%3A{2}%2C%22sex%22%3A{3}%2C%22status%22%3A{4}%2C%22birth_day%22%3A{5}%2C%22birth_month%22%3A{6}%2C%22birth_year%22%3A{7}%2C%22online%22%3A{8}%2C%22interests%22%3A%22{9}%22%2C%22position%22%3A%22{10}%22%7D%[email protected]%3B", countOfRequests, parameters.City, parameters.Country, parameters.Sex, parameters.Status, parameters.BirthDay, parameters.BirthMonth, parameters.BirthYear, parameters.Online, parameters.Interests, parameters.Position); countOfRequests++; if (countOfRequests == 25 || date == countOfDates - 1) { var rndToken = randomGen.Next(0, qtyTokens); // Generate rnd number of token parameters.Token = tokens[rndTokenArray[rndToken]]; var answer = VkRequest.VkExecuteResponse(parameters, countOfRequests, requestData); var usersId = JsonConvert.DeserializeObject <VkId>(answer); Utils.WriteIdInFile(usersId, outputFile, parameters.City); Console.WriteLine("-- Parsing with {0} token:", rndTokenArray[rndToken]); Console.WriteLine("Current Date number is: {0} ", date); Console.WriteLine("Users founded : {0}", usersId.response.Length); usersFound = usersFound + usersId.response.Length; Thread.Sleep(randomGen.Next(delayFrom, delayTo)); #region Random token checking (simple edition): if (usersId.response.Length == 0) { Thread.Sleep(delayTo * 2); Console.WriteLine("----------------------------------------------------------------"); Console.WriteLine("Token with number {0} are banned & deleted from current session!", rndTokenArray[rndToken]); Console.WriteLine("----------------------------------------------------------------"); rndTokenArray = Randomizer.RemoveValue(rndTokenArray, rndTokenArray[rndToken]); qtyTokens--; date = date - 24; } #endregion countOfRequests = 1; requestData = ""; } } #endregion parsingStatus = "Parsing succesufully completed!"; }