02.02.2017 Все о NewStage2VK - установка, запуск и работа
О причинах написания NewStage2VK
Как и всякая программа NewStage2VK была написана для распила бабла упрощения некоторых однообразных действий.
С некоторого времени я стал постоянным зрителем независимого молодежного театра "Новая Сцена-2" (г. Белгород).
Можно даже сказать, что это была любовь с первого спектакля ) Однако, вернемся к нашим баранам программе.
Основная жизнь театра НС2 в данный момент крутится в соц. сети ВКонтакте (Группа Театра и Театр Белгород) - здесь происходит запись зрителей на спектакли, размещение анонсов о предстоящих событиях, обмен впечатлениями и прочая бурная онлайн-жизнь. В связи с этим возникла необходимость рассылки уведомлений подписчикам группы и друзьям театра, а также отправка напоминаний зрителям о предстоящем спектакле. Решил помочь. К тому же и для меня будет опыт работы с VK-API.
Установка NewStage2VK
Программа работает под управлением операционной системы (ОС) Windows. Для ее успешной работы необходима установленная платформа .NET Framework 4.6.1 и выше, а также наличие базы данных (БД) MS SQL LocalDb 2012 и выше, куда сохраняется состояние рассылки, кешируются аватарки и т.д. Поэтому минимальные требования к версии ОС Windows и к железу определяются требованиями .NET Framework 4.6.1 и БД MS SQL LocalDb 2012.
Поддерживаемые операционные системы (.NET Framework 4.6.1 и MS SQL LocalDb 2012):
- Windows 7 с пакетом обновления 1 (SP1) (x86 и x64)
- Windows 8 (x86 и x64)
- Windows 8.1 (x86 и x64)
- Windows 10
- Windows Server 2008 R2 с пакетом обновления 1 (SP1) (x64)
- Windows Server 2012 (x64)
- Windows Server 2012 R2 (x64)
Дополнительные требования к программному обеспечению:
- Установленный в системе браузер Internet Explorer 9 и выше
Требования к оборудованию (.NET Framework 4.6.1 и MS SQL LocalDb 2012):
- для 32-разрядных систем - компьютер с процессором Intel или совместимым процессором с тактовой частотой 1 ГГц и выше
- для 64-разрядных систем - компьютер с процессором Intel или совместимым процессором с тактовой частотой 1,4 ГГц и выше
- минимум 512 МБ ОЗУ (рекомендуется 2 ГБ и выше)
О том, как узнать версию Windows и ее разрядность, может подсказать гугл или яндекс. А сейчас приступим к установке. Ссылка на последнюю версию программы опубликована в конце статьи. Распаковываем архив в любое место на диске. Для примера распакуем в папку D:\NewStage2VK\bin. Первым делом необходимо выяснить, установлен ли .NET Framework 4.6.1. Проще всего это сделать, запустив программу NewStage2VK.exe. Иконка программы имеет логотип театра. Если вы видите окно с ошибкой как на скриншоте ниже, то .NET Framework необходимой версии не установлен.
Можно согласиться, скачать онлайн-установщик и установить .NET Framework 4.6.1 (или даже еще лучше более позднюю версию). А можно загрузить с официального сайта Microsoft
оффлайн инсталлятор. Если компьютер будет просить перезагрузку,
то соглашаемся и перезагружаем. При установке желательно обеспечить надежное питание ПК или ноутбука от сети (чтобы не села батарея в "нужный момент"). А то может криво
стать .NET Framework 4.6.1, хотя зомби апокалипсис проблемы с Windows возникнуть не должны.
Далее, можно еще раз попробовать запустить программу. Если видим такую ошибку, как на изображении ниже, то БД MS SQL LocalDb 2012 не установлена.
Устраняем это досадное недоразумение, устанавливая SQL LocalDb 2012 с сайта Microsoft. Выбираем язык под установленную локализацию Windows и жмем "Скачать". Весь набор барахла нам не нужен. Выбираем только RUS\x64\SqlLocaLDB.MSI для 64-разрядной Windows ИЛИ RUS\x86\SqlLocaLDB.MSI для 32-разрядной Windows. О том, как узнать разрядность, я упоминал выше.
Установка очень простая: жмем "Далее", принимаем условия лицензионного соглашения и жмем "Установить". Дожидаемся окончания установки. Сейчас мы рассматриваем начальную установку, поэтому предполагаем, что файлов базы данных нет, т.е. в нашей папке с программой D:\NewStage2VK\bin отсутствуют файлы NewStage2Db.mdf и NewStage2Db_log.ldf. Это и есть файлы, с которыми будет работать наша программа посредством MS SQL LocalDb. Если же файлы присутствуют, т.е. выполняется перенос программы на другой компьютер, то следующий шаг можно пропустить. Итак, если этих файлов нет, то запускаем файл localdb_init.bat. Этот пакетный файл создаст базу данных для нашей программы. Если все прошло успешно, то в папке мы обнаружим вышеуказанные 2 файла, а в консоли мы увидим такие строки:
LocalDb init begin
LocalDb init done
Press [Enter] to exit...
Теперь можно запустить нашу программу NewStage2VK.exe и увидеть окно авторизации ВКонтакте:
NewStage2VK RTFM - Первый запуск и авторизация
Первым делом авторизуемся в сети ВКонтакте используя свои учетные данные. От имени авторизованного пользователя (далее - оператор) и будут рассылаться сообщения. В случае первого входа оператора в сеть ВКонтакте через приложение ему необходимо разрешить доступ к запрошенным ресурсам. Если разрешения получены, то далее происходит загрузка информации об операторе и сохранение ее в базу, чтобы при последующих запусках программы не грузить ее из Интерента. В случае успешной авторизации и после загрузки информации об операторе (аватарки, а также имени и фамилии), программа готова к работе. Скриншот программы в состоянии готовности показан на рисунке ниже:
Далее рассмотрим как работать с программой. При нажатии на кнопку "Выход" происходит выход из учетной записи в программе. Да, капитан очевидность рулит, но нужно отметить один момент. Для авторизации в ВК программа использует движок браузера Internet Explorer. Поэтому, вход в ВК осуществляется по факту через этот браузер. Нажатие же кнопки "Выход" завершает только текущую сессию в Internet Explorer. Поэтому, если вам необходимо полностью выйти из ВК на данном компьютере, то запустите Internet Explorer, зайдите на сайт ВКонтакте и нажмите кнопку "Выход" там.
Переходим к возможностям программы. Есть две вкладки - "Отправить приглашения" и "Напомнить о встрече"
Справка по NewStage2VK - Отправить приглашения
Отправка приглашений возможна пользователям, которые состоят в группе театра и/или являются друзьями театра. При нажатии на кнопку "Загрузить" происходит получение информации о членах группы и о друзьях. После загрузки программа должна иметь вид как на изображении ниже:
Рассмотрим поля таблицы:
- Флажок (чекбокс) - отмечает пользователей для рассылки сообщения. Если щелкнуть на чекбоксе в заголовке таблицы, то происходит установка или снятие отметки со всего списка.
- Аватар - все и так ясно, но не совсем. Если дважды щелкнуть на заголовке таблицы колонки "Аватар", то весь список отмечается серым цветом. Серым цветом отмечаются те пользователи, которым уже отправлено сообщение, и они исключаются из рассылки даже, если установлена отметка в первой колонке, сообщения "серым" пользователям отправлены не будут. Таким образом это действие помечает всех людей в списке как получившие сообщение. Еще один двойной клик по этому заголовку снимает выделение со всего списка и ко всем пользователям вновь может применяться отметка из первой колонки о включении в рассылку. Двойной клик по отдельной строке в любой ячейке выделяет серым / снимает выделение только с этого пользователя.
- Дата отправки сообщения - дата и время последнего отправленного сообщения пользователю.
- Состоит - поле указывает, где состоит пользователь (в друзьях и/или в группе).
- Пользователь - имя и фамилия пользователя.
Далее посмотрим на фильтр таблицы, который сделан в виде выпадающего списка. Он фильтрует список пользователей по предопределенным условиям. Думаю, здесь все ясно.
Кнопка "Сохранить в базу" производит сохранение в БД информации о всех пользователях и о состоянии рассылки: состояние флажка в первой колонке, признак отправки сообщения - "серый" (сообщение отправлено) или "белый" (сообщение не отправлено) пользователь, дату и время отправки сообщения (если было отправлено), имя и фамилию. При этом, если отмечен чекбокс "Обновить аватарки", то в БД дополнительно сохраняются аватарки пользователей или обновляются, если они уже были ранее загружены. В дальнейшем это немного сэкономит трафик, да и сами аватарки будут быстрее прорисовываться на экране. Первое сохранение всего списка людей может занять некоторое время (около минуты).
Теперь о рассылке. Сперва отмечаем необходимых людей, которым нужно доставить сообщение. Как говорилось ранее "серые" пользователи считаются уже получившими сообщение и не будут включены в список рассылки, даже если у них отмечен чекбокс в первой колонке. Текстовое поле "Ограничить кол-во людей" позволяет разослать сообщение только первым N пользователям, где N - число, указанное в данном поле. Если число не указано, то рассылка будет производиться по всем отмеченным людям (кроме "серых", конечно). Зачем это поле нужно, я расскажу чуть позже. Флажок (чекбокс) "Автосохранение" указывает, что после отправки сообщения данные о пользователе, а также информация о дате отправки сообщения будет сразу же сохранена в БД. А если отмечен чекбокс "Обновить аватарки", то сохранится или обновится изображение аватарки. Поле "Автосохранение" лучше оставлять его всегда отмеченным. Т.к. если в процессе рассылки произойдет ошибка, а оператор самостоятельно не сохранил состояние в БД, то данная информация будет потеряна. И при следующем сеансе работы с программой, если вы самостоятельно не снимите флажок или не выделите "серым" нужных пользователей, они опять попадут в рассылку и получат то же сообщение.
Если много сообщений отправляются очень часто, то в процессе рассылки можно наткнуться на необходимость ввода капчи - способ защиты ВК от спамерских действий. Пример окна с капчей показан ниже:
Вы можете попытаться ввести код с картинки, нажав кнопку "OK" или клавишу "Enter" или же пропустить отправку данного сообщения, нажав кнопку "Пропустить", клавишу "Escape" или закрыв окно. Если через определенное время код с картинки не будет введен, то отправка сообщения текущему пользователю пропускается. Оставшееся время до пропуска отправки сообщения отображается на кнопке "Пропустить". Время ожидания ввода капчи можно задать в конфигурационном файле программы. О нем пойдет речь позже. В процессе рассылки возможны некоторые ожидаемые ошибки - например, пользователь запретил отправку ему сообщений. О количестве ошибок во время рассылки можно узнать по строке статуса. Также ошибки фиксируется в лог-файле, который по умолчанию называется Log.txt. Его имя, при желании, может быть изменено в конфигурационном файле.
Осталось рассмотреть последний элемент - поле для ввода сообщения. Поле имеет специальное ключевое слово для подстановки, по умолчанию - это %user%. Это ключевое слово можно заменить на любое другое. О том, как это сделать я расскажу при рассмотрении конфигурационного файла программы. Если в тексте сообщения указано данное ключевое слово, то вместо него при отправке сообщения будет подставлены фамилия и имя того пользователя, кому адресовано сообщение. В сообщение можно также включать смайлики из ВК. Самый простой способ - набрать нужный текст со смайликами на сайте в ВК, а потом скопировать его в поле программы.
Справка по NewStage2VK - Напомнить о встрече
Данная вкладка служит для напоминания зрителям театра о предстоящем спектакле, на который они записались. Скриншот показан ниже:
Первым делом программе необходимо сообщить о том, какой спектакль нам нужен. Для этого открываем нужную встречу. В нашем случае - это спектакль "А рыбы спят?", находим нужную дату и нажимаем ссылку, отмеченную красным на рисунке ниже.
Видим картину, как на изображении ниже. Опять переходим по ссылке, отмеченной красным.
И копируем идентификатор поста в буфер обмена - выделенные цифры в адресной строке браузера.
Вставляем их в поле "Id события" и нажимаем "Загрузить". Получаем список всех комментариев (записей зрителей на спектакль) к данному посту.
Поля таблицы и ее поведение аналогично таблице во вкладке "Отправить приглашения". Можно отметить только наличие некоторых новых полей, название которых чуть более чем очевидно:
- Дата комментария
- Комментарий
Назначение и принцип работы остальных элементов управления аналогичен элементам вкладки "Отправить приглашения". Необходимо только отметить тот факт, что человек может написать более одного комментария, т.е. записать одного человека, затем записать второго и т.д. Если человек помечен в первой колонке как получатель сообщения более 1 раза (выбраны несколько его комментариев), то сообщение он получит только одно, поэтому можно не заморачиваться с поиском повторных комментариев пользователя и сбрасывание отметки о рассылке. Единственный важный момент: оператору нужно самостоятельно следить, не отказался ли пользователь от посещения спектакля, т.к. программа не анализирует семантику комментария. В случае, если человек не сможет прийти на спектакль, то нужно снять со всех его комментариев отметки о рассылке напоминания!
Справка по NewStage2VK - конфигурационный файл
Программа имеет файл настроек, которые определяют ее поведение и режим работы. Он называется NewStage2VK.exe.config и находится в одной папке с программой. Файл конфигурации - это обычный текстовый файл в формате xml, поэтому его можно открыть и редактировать в любом текстовом редакторе, который работает с "плоским" текстом - например "Блокнот" в Windiws, однако я рекомендую использовать Notepad++, т.к. в ней можно указать нужный тип файла (в нашем случае - это xml) и программа грамотно подсветит теги и атрибуты xml документа.
Итак, секция пользовательских настроек заключена в тег appSettings. Данный тег и его содержимое, которое определяет настройки приложения, показано ниже:
<appSettings>
<add key="vkUserId" value="259981103" />
<add key="vkGroupId" value="26396902" />
<add key="sendMessageDelay" value="10000" /> <!-- ms -->
<add key="captchaDelay" value="60" /> <!-- sec -->
<add key="debugMessageVkUserId" value="0" />
<add key="substUser" value="%user%" />
<add key="requestDelay" value="350" /> <!-- ms -->
<add key="requestTimeout" value="20000" /> <!-- ms -->
<add key="requestResourceTimeout" value="5000" /> <!-- ms -->
<add key="captchaErrorCode" value="14" />
<add key="logFileName" value="Log.txt" />
<add key="vkApiHost" value="https://api.vk.com/" />
<add key="loginUrl" value="https://oauth.vk.com/authorize?client_id=5794488&display=page&redirect_uri=https://oauth.vk.com/blank.html&scope=messages,offline&response_type=token&v=5.62" />
<add key="efMigrationDataDirectory" value="c:\stas\src\VS2012\NewStage2VK\NewStage2VK\bin\Debug\" />
<add key="ClientSettingsProvider.ServiceUri" value="" />
</appSettings>
Параметры, которые можно редактировать оператору:
- vkUserId - идентификатор пользователя "Театр Белгород" в ВК. Скорей всего редактирование не потребуется, т.к. идентификатор пользователя ВК не изменяется.
- vkGroupId - идентификатор группы "Новая Сцена-2" в ВК. Скорей всего редактирование не потребуется, т.к. идентификатор группы ВК не изменяется.
- sendMessageDelay - задержка между отправляемыми сообщениями, в миллисекундах (1 с = 1000 мс). Рекомендуется выбирать не менее 2 сек., иначе будет часто выскакивать окно с вводом капчи. Значение рекомендуется подкорректировать в процессе работы программы.
- captchaDelay - время ожидания ввода капчи оператором, в секундах. Если за указанное время код капчи не был указан, то происходит пропуск отправки сообщения данному пользователю. Значение рекомендуется подобрать в процессе использование программы.
- debugMessageVkUserId - идентификатор пользователя в ВК для "отладки" рассылки. Если указан "0", то рассылка сообщений будет происходить должным образом, т.е. те пользователи, которые отмечены для рассылки и получат сообщения. Если же значение содержит идентификатор пользователя ВК, то все сообщения будут отправляться ему. Оператор может использовать для проверки того, как будут выглядеть отправленные сообщения. Я этой возможностью пользовался при разработке и отладке программы.
- substUser - спец. символ для подстановки имени и фамилии пользователя ВК. При желании можно заменить на любой другой.
Параметры, которые не рекомендуется редактировать оператору:
- requestDelay - задержка между запросами к серверу ВК, в миллисекундах. Согласно документации VK-API, допустимо не более 3-х запросов в секунду к серверу, поэтому уменьшение этого значения может привести к ошибкам при запросах.
- requestTimeout - таймаут запроса, в миллисекундах. Время, за которое должен прийти ответ от сервера. Если за указанное время ответ не приходит, то генерируется исключение и прекращается выполняться текущее действие, например, прекращается процесс рассылки. Т.е. программа считает, что нет доступа к сети или же к серверу ВК.
- requestResourceTimeout - таймаут запроса на загрузку ресурсов (в нашем случае - аватарок), в миллисекундах. Время, за которое сервер должен вернуть данные (в нашем случае - изображение аватарки). Если за указанное время ответ не приходит, то программа просто игнорирует ошибку и продолжает свое выполнение. Т.е. этот параметр означает, сколько ждать ответа от сервера при загрузке аватарок. Не рекомендуется ставить большое значение при медленном интернете, т.к. при отмеченном чекбоксе "Обновить аватарки" сохранение информации о пользователях, инициированное нажатием кнопки "Сохранить в базу", может занять длительное время.
- captchaErrorCode - значение кода ошибки VK-API, которое сообщает программе, что необходимо ввести код капчи. Не трогать без необходимости!
- logFileName - имя файла, в который будут сохраняться сообщения об ошибках.
- vkApiHost - протокол и доменное имя (или IP-адрес) сервера, который обслуживает запросы VK-API. Не трогать без необходимости!
- loginUrl - адрес, на который перенаправляется оператор, если необходимо выполнить авторизацию в ВК. Не трогать без необходимости!
- efMigrationDataDirectory - служебный параметр, указывает путь к папке с программой. Используется на этапе разработки. Не трогать без необходимости!
- ClientSettingsProvider.ServiceUri - Не трогать без необходимости!
Справка по NewStage2VK - Обновление программы
Узнать текущую версию программы можно, если просмотреть свойства файла NewStage2VK.exe:
Последняя версия программы будет размещаться в конце этой статьи. Ее номер можно узнать по цифрам в названии архива с программой. В архиве также будет содержаться файл Readme.txt, который будет содержать инструкции по обновлению программы.
Файлы для загрузки:
- newstage2vk_bin_1.0.1.1.zip - последняя версия программы NewStage2VK
- Исходники NewStage2VK на github'е