Vkinviter - priglashatel помощник администратори Vkontakte групи

Развитие → VkInviter - priglashatel помощник администратори Vkontakte групи

Всички добри дни!

Аз съм администратор на една музикална група VKontakte (по-нататък - ЕК). Музиканти често отиват на турне в различни градове в България и страните от ОНД. Един от начините за информиране на феновете на групата за предстоящия концерт в техния град - изпрати покани за участие в съответното заседание на VC.






В тази статия искам да покажа едно от възможните решения на този проблем.

На първо място, трябва да сте администратор на групата и тази група VC трябва да е организатор на срещата в ВХ.

Решение "Всичко е готово на ръка"


Съществуващата интерфейс ви позволява да направите такъв пощенски списък ръчно чрез менюто на срещата:
"Покани приятели" - "Поканете членовете на групата":

Недостатъците на това решение са очевидни:
  • За дълго време, тъй като в някои градове, броят на участниците повече от няколко хиляди
  • Невъзможно е да се изпълни по покана на участници, които живеят в даден град
Решение "за автоматизиране на процеса"


Има два подхода: Напишете някое приложение, използващо VC API, или чрез самостоятелен публикувайте-получават искания.

След анализ, аз осъзнах, че VC API не се вписва. В описанието на метода не е потребителски покани за среща, а не наистина искате да се забъркваш с молбата за регистрация и други вътрешни правила на ЕО.

Поради това е необходимо да се анализира след получи искания и напишете "симулатор" потребител.

Фенове от N


За списък на членовете на групата от всеки град, ще се използва стандартен търсене vk.com/search, това е особено важно, този набор от филтри:

Как да изпратите покана за група

Направете търсене на членовете на групата може да бъде група от страници, искането ще бъде под формата на:
al_search.php? ал = 1в [група] = 6206c [раздел] = хора

където групата - ID група.

След добавяне филтриране по държави и искане град е под формата:
al_search.php? Ал = 1в [град] = 1в [държава] = 1в [група] = 6206c [точка] = хора

където съответно град - ID на града, държавата - страна номер







Отговорът на заявката е списък на потребителите.
Отговор Header носи две важни последици:
"Has_more": вярно, "компенсира": 200

has_more - определя дали повече потребители да се издават
офсет - «отстъп" или премине от първия потребител

Информацията за блок за даден потребител има следния вид:


В този блок са интересни данни:
  • идентификатор
  • име
  • HREF страница

Разбор отговорът е много удобно с регулярни изрази.
За номер ли да използвам този израз:
"] * Поставяне на показалеца = "Searcher.bigphOver \\ (тази, (\\ г +) \\)"> "

За да се получи името и HREF:
"

([^<]+)<";

При този подход, има една синтетична ограничение - контакт не произвежда повече от 1000 резултати от търсенето. Това е от решаващо значение, тъй като например, в Москва, група от 3000 + членове. За да се избегне това ограничение ще трябва да добавите допълнителни функции за филтриране на потребителите, а след това се комбинират резултатите от всички филтри.

Наличен е необходимо да изберете само тези филтри, чиито стойности са фиксирани и не са толкова много.
За тази задача, се вписват:
Пол - [секса], стойност: 0-2
Ред на сортиране - [sortId], стойностите 0-1
Социален статус - [statusId], стойностите на 0-7.

Руби на бюста изглежда по следния начин:


Това ще предостави списък на всички потребители в града.

Ако можем да се изпратят покани на ръка, забелязваме, че той да бъде изпратен по пощата:
действа = a_inviteal = 1gid = 65898108hash = 99247d766b77d7a584mid = 22935

където GID - ID на срещата, по средата - ID на потребителя, хашиш - диез, носещ информация за приканващата. И това е този хеш сега е необходимо да стигнем до всички потребители на нашия списък.

Първи хашиш


За хеша ще трябва да се направи разбор на списъка с "приятели", мога да поканя на среща. Приятели са изброени в кавички, защото тук под това понятие са всички членове на Организационния.

C #, тази проверка е както следва:


След обработката на списъка "приятели" и да го слее с списъка на потребителите от всички готови за изпращане на покани.

програма VkInviter


За автоматизиране на тези действия, написани VkInviter програма.
Основният прозорец е показано на екранната снимка:

Как да изпратите покана за група

В допълнение към този алгоритъм, програмата ви позволява да направите избор в няколко града, което е важно, когато се изпращат покани не само в града, но и околностите.

Изходният код публикуван на GitHub. Също така е публикувал сценария на Ruby. които могат да бъдат полезни за разбирането на цялостната логика.

заключение


В заключение искам да кажа няколко думи за ефективност.
Аз забелязах, че около 60% от всички хора, е забранено да се поканят на среща.
Прие поканата на срещата идва някъде 10%.
Аз не знам колко време ще остане функционална в ВХ и защо възможност да поканим всички изпил преди няколко години.

Източник може да използвате някой по някаква причина.