Общая информация о пользователе

Начнём с организационных вопросов, так как прежде чем начать сохранять информацию о каком либо пользователе с сайта ВКонтакте, надо создать какую-то файловую структуру, которая будет находится в папке Accounts. А так как это первое действие программы по сбору информации, то в этой статье в коде программы добавится создание различных папок, для того что бы в последствии программа сохраняла в них файлы с различной информацией, которая будет собрана.

Допустим мы собираем информацию по аккаунту id1, значит программа в папке Accounts создаёт папку с названием id1. В дальнейшем при любом сборе информации по этому аккаунту, программа всё будет сохранять в этой папке. Внутри этой папки будут создаваться временные папки, название которых будет указывать время сбора информации. Структура названия этих временных папок будет выглядеть примерно вот так: 2019-10-22_024453. То есть год, месяц, число, часы, минуты и секунды. Чем удобно такое название? Тем что при открытии папки id1, эти папки будут находится в порядке их создания и если убрать между цифрами разделяющие дефисы и нижний прочерк, то получится цифра, которая при каждом создании папки будет идти на увеличение. В последствии будем называть эти папки временными, от слова время или дата.

Теперь дальше. Как уже говорилось выше, программа создаёт папку id1, в ней создаёт временную папку, запоминает путь к этой папке и в неё сохраняет информацию которая будет собираться в данный момент. Допустим если мы захотим через какое-то время собрать ещё раз информацию по этому аккаунту, то тогда программа создаст ещё одну временную папку в папке id1 и сохранит в неё информацию, которая будет уже актуальна на данный момент.

И допустим в дальнейшем мы научим программу обнаруживать предыдущую папку сохранения и сравнивать её с уже обновлённой информацией. Это даст нам возможность например находить новых добавившихся друзей или удалившихся друзей. Или точно так же насчёт подписчиков, находить новых или удалившихся и т. д. и т. д. В дальнейшем мы постараемся научить нашу программу не просто собирать информацию, а ещё и сравнивать, анализировать её. То есть постараемся извлечь всю выгоду из данной ситуации. Но это конечно всё будет потом, это как бы мысли на будущее, а сейчас давайте вернёмся к тому на чём мы остановились.

Внутри временной папки для дальнейшего сбора информации создаются папки с такими названиями:
GEN - Папка в которой будут сохраняться файлы содержащие общее количество пользователей, которые будут задействованы по аккаунту в котором ведётся сбор информации. Или эти пользователи в друзьях или в подписчиках или просто где-то что-то лайкнули или например прокомментировали фотографию или новость. Говоря простым языком, все они будут собраны в общую кучу и сохраниться всё это в файлах, вот в этой папке GEN.
groups - папка для сбора информации по группам, пабликам и тех на кого пользователь подписался (То есть те пользователи которые отображаются в разделе подписки)
news - папка для сбора информации по новостям.
photos - папка для сбора информации по фотографиям.
wjsoncontents - папка для скачивания и сохранения новостей, фотографий, комментариев, видео и всего остального в json формате.

Вот примерно и всё насчёт того, что касается файловой структуры которая будет находится во временной папке и непосредственно касаться сбора информации о каком либо аккаунте.

Теперь поговорим о программах. Давайте возьмём первую Visual Studio Community на языке C Sharp или c#. Смотрим на фото этой программы и на новые элементы, которые появились в этой программе:
Фотопрограммы ВК
Кликните по фото и оно откроется в натуральную величину в соседней вкладке. Обратите внимание, что бы имена созданных вами элементов в ваших программах, были точно такими же как на фото. Так как код написан под эти элементы.

Так же добавляем на Form1 такие элементы как toolTip1 для подсказок и timer1, который переименовываем в timerPause. По умолчанию интервал таймера в Visual Studio стоит на 100 микросекунд, так и оставляем. Таймер нам нужен для того, что бы программа при работе не постоянно клинила, а периодически между процессами сбора выходила из клина и выдавала нам информацию о собранном процессе в текстовом окне richTextBox1. Кстати насчёт клина или подвисания программы, это касается и Visual Studio и DevelStudio. Насчёт этого можно не беспокоится, программа выполняет свои задачи на все сто процентов, просто запросы в интернет делаются настолько быстро, что программа между ними не успевает прийти в себя, если можно так выразиться. Если быть точнее это происходит из за цикла for или допустим из за оператора goto, которые по кругу с очень большой скоростью выполняют поставленные им задачи и пока они их не выполнят, программа находится в клине или подвисает. Конечно же речь не идёт о подвисании всей операционной системы и при работе программы, мы можем делать в компьютере всё что угодно. В дальнейшем мы постараемся сделать так, что бы не наблюдалось никаких подвисаний или клинов и что бы наша программа при работе выглядела более менее цивилизованно, скажем так. Ну а сейчас мы программу только пишем и что есть то есть, хотя в работе программы важно не то как она выглядит, а то что бы она выполняла на все сто процентов поставленные перед собой задачи, как было уже сказано выше.

Насчёт обновлённого кода для проекта к Visual Studio: cod3vk_csharp.txt. Копируем его и заменяем полностью весь код во вкладке Form1.cs. И вот здесь можно посмотреть код с объяснениями в дописанных частях кода: cod4vk_csharp.txt.

И для DevelStudio смотрим на фото программы:

Фотопрограммы ВК
. Нажимаем на фото и оно так же откроется в соседней вкладке в натуральную величину. Так же обращаем внимание на все новые добавленные компоненты и добавляем себе точно такие же, с такими же именами как на фото. Только на фото не видно таймера timerPause, добавляем его в любое место Form1, переименовываем в timerPause, ставим интервал 100 микросекунд и добавляем событие Таймер, в которое добавляем код, приведённый ниже в файле cod_vk_php_Components.txt

Дальше для DevelStudio новый код который вставляем в событие создание Form1: cod3vk_php.txt. И код с пояснениями: cod4vk_php.txt. Так же для DevelStudio добавим файл в котором будут прописаны коды для событий компонентов, этот файл будет один общий, не только для этой статьи, а и для других. Просто будем дописывать по мере необходимости: cod_vk_php_Components.txt.

Вот примерно и всё что по программам, можно только добавить про ещё одну файловую структуру которая будет создаваться в папке temp рядом с папкой Accounts по указанному нами пути в файле PathBase.txt, который указывает программе где будет находится наша база с сайта ВКонтакте. Вспоминаем из предыдущих статей, что если этот файл пустой, то тогда наша база ВК будет находится в корне программы в папке GENRES, но так же мы можем указать свой путь к папке в любом месте нашего компьютера.
Теперь давайте поговорим о новых созданных папках в папке temp и для чего они:
account lists - в этой папке будут находится файлы со списками всех собираемых нами аккаунтов с сайта ВКонтакте. То есть допустим мы собрали информацию по аккаунту id1, это значит что программа в папке account lists запишет в файле идентификатор, имя и фамилию с этого аккаунта. Запись эта будет выглядеть примерно вот так: 1 Павел Дуров.
deactivated - в этой папке будут находится файлы со списками деактивированных аккаунтов, то есть либо забаненных администрацией с сайта ВКонтакте или либо удалённые по каким-то причинам самими пользователями. За такими аккаунтами в папке Accounts ничего создаваться не будет, так как собирать нечего, но учёт мы им будем вести и он будет расположен вот в этой папке. Запись мы сделаем примерно вот так: 1 : banned или 1 : deleted, то есть первым будет идти идентификатор, а после двоеточия или аккаунт забанен или удалён.
private - в этой папке будут находится файлы со списками всех аккаунтов которые приватные или скрытые. В такие аккаунты надо добавиться в друзья, для того что бы увидеть новости, фотографии и т. д.. По таким аккаунтам в папке Accounts будет создана папка с идентификатором, потом в ней временная папка и вся структура папок которая создаётся во временной папке для сохранения информации, но записан или сохранён будет только файл usersget.txt в папке wjsoncontents, то есть общая информация об аккаунте и всё, так как в таких аккаунтах больше нечего собирать, кроме как только общую информацию. Но учёт этим аккаунтам мы тоже будем вести, так как пользователь в дальнейшем может открыть свой аккаунт и мы тогда сняв отметку в чекбоксе Не собирать новых данных, укажем программе собрать всю информацию за этот аккаунт и программа создав ещё одну временную папку, соберёт уже полностью всю информацию по этому аккаунту.

Конечно мы не будем сутками следить за этими аккаунтами, когда они там разбанятся при возможности или допустим были удалены, а потом появятся или были закрытыми, а потом откроются. В дальнейшем мы постараемся научить нашу программу работать со списками идентификаторов и допустим задав программе список всех скрытых или удалённых или забаненных аккаунтов, программа пробежится по этим аккаунтам и будет сама смотреть, если аккаунт допустим был закрыт, а потом открылся, значит программа автоматически соберёт и сохранит всю информацию за этот аккаунт и где-то там поставит отметочку, что этот аккаунт был закрытым, а теперь открылся. То есть нашей задачей будет только периодически запускать программу, задавать ей списки и она всё будет делать за нас. И ещё насчёт deactivated, слово banned выдаётся сайтом ВКонтакте в двух случаях, то ли этот аккаунт забанен полностью и безповоротно или есть такие аккаунты в которых пишется: аккаунт пытались взломать злоумышленники и закрывают его на время, а хозяин аккаунта если имеет телефон на который зарегестрирован этот аккаунт, может его восстановить. Это значит что списки аккаунтов из папки deactivated, тоже стоит прериодически проверять.

Для этой статьи я думаю достаточно, в следующей статье будем собирать друзей и подписчиков.
Программы
infgo.ru