Vkinviter - administratori asistenți priglashatel grupuri Vkontakte

Dezvoltare → VkInviter - administratori asistenți priglashatel grupuri Vkontakte

Toate zilele bune!

Sunt administratorul unuia dintre grupul muzical VKontakte (în continuare - CE). Muzicieni de multe ori merge in turneu la diferite orașe din România și țările CSI. O modalitate de a informa fanii grupului despre concertul viitoare în orașul lor - trimite invitații la reuniunea relevantă a VC.






În acest articol vreau să arăt una dintre soluțiile posibile pentru această problemă.

În primul rând, trebuie să fiți un administrator al grupului, iar acest grup VC trebuie să fie organizatorul întâlnirii în VC.

Decizia „Toate făcut de mână“


Interfața existentă vă permite să efectuați manual o astfel de listă de corespondență prin meniul reuniunii:
„Invită-ți prietenii“ - „Invitați membri ai grupului“:

Dezavantajele acestei soluții sunt evidente:
  • Pentru o lungă perioadă de timp, deoarece în unele orașe, numărul de participanți mai mult de câteva mii
  • Este imposibil să-și îndeplinească invitația participanților care trăiesc într-un anumit oraș
Soluția „pentru a automatiza procesul“


Există două abordări: a scrie o aplicație utilizând VC API, sau printr-un standalone-get posta cereri.

După analiză, am realizat că API VC nu este potrivit. În descrierea metodei nu este invitații de utilizator la o întâlnire, și nu a vrut cu adevărat să te pui cu cererea de înregistrare și alte reguli interne ale CE.

Prin urmare, este necesar să se analizeze post-get cereri, și scrie „simulator de“ utilizator.

Fanii din N


Pentru o listă a membrilor grupului din fiecare oraș va folosi un vk.com/search standard de căutare, este deosebit de important acest set de filtre:

Cum de a trimite o invitație la un grup

Efectuați o căutare pe membrii grupului poate fi un grup de pagini, cererea va lua forma de:
al_search.php? Al = 1c [grup] = 6206c [secțiunea] = persoane

în cazul în care grupul - grupul id.

După adăugarea de filtrare în funcție de țară și cererea de oraș ia forma:
al_search.php? Al = 1c [oraș] = 1c [țară] = 1c [grup] = 6206c [secțiunea] = persoane

în cazul în care, respectiv, un oraș - ID al orașului, țară - țară id







Răspunsul la interogarea este o listă de utilizatori.
Răspuns Antet poartă două implicații importante:
"Has_more": true, "compensate": 200

has_more - determină dacă mai mulți utilizatori să emită
compensare - «indentare“ sau trecerea de la primul utilizator

Informațiile despre un bloc de utilizator are forma:


În acest bloc sunt date interesante:
  • id
  • nume
  • pagina href

Parse răspunsul este destul de confortabil cu expresii regulate.
Pentru ID-ul Eu folosesc această expresie:
"] * OnMouseover = "Searcher.bigphOver \\ (aceasta, (\\ d +) \\)"> "

Pentru a obține numele și href:
"

([^<]+)<";

În această abordare, există o restricție sintetică - de contact nu produce mai mult de 1000 de rezultate ale căutării. Acest lucru este critic, deoarece de exemplu, la Moscova, un grup de 3000+ membri. Pentru a lucra în jurul valorii de această limitare ar trebui să adăugați filtrarea suplimentară asupra utilizatorilor, iar apoi se combină rezultatele tuturor filtrelor.

Disponibilă este necesar să se selecteze numai acele filtre ale căror valori sunt fixe și nu sunt atât de mult.
Pentru această sarcină, se potrivesc:
Sex - [sex], valoare: 0-2
Ordine de sortare - [sortId], valori 0-1
Starea civilă - [statusId], valorile 0-7.

Ruby pe bust arată astfel:


Acest lucru va oferi o listă a tuturor utilizatorilor din oraș.

Dacă ne trimitem invitații de mână, observăm că acesta este trimis prin poștă:
acționează = a_inviteal = 1gid = 65898108hash = 99247d766b77d7a584mid = 22935

în cazul în care GID - ID-ul reuniunii, la mijlocul - ID utilizator, hash - un hash, care să conțină informații despre îmbietoare. Și este acest hash este acum necesar pentru a ajunge la toți utilizatorii din lista noastră.

Obținerea hash


Pentru hash va trebui să analizeze lista de „prieteni“ pe care le pot invita la întâlnire. Prietenii sunt enumerate în ghilimele, deoarece aici, sub acest concept sunt toți membrii de organizare.

C #, această verificare este după cum urmează:


După tratament, lista „prieteni“ și îmbinați cu lista de utilizatori din toate gata pentru a trimite invitații.

programul VkInviter


Pentru a automatiza aceste acțiuni programul VkInviter scrise.
Fereastra principală este prezentat în captura de ecran:

Cum de a trimite o invitație la un grup

În plus față de acest algoritm, programul vă permite să faceți o selecție în mai multe orașe, ceea ce este important atunci când se trimit invitații nu numai în oraș, ci și zona înconjurătoare.

Codul sursă postat pe GitHub. postat, de asemenea, script-ul pentru rubin. care pot fi utile pentru înțelegerea logica generală.

concluzie


În concluzie, aș dori să spun câteva cuvinte despre eficiența.
Am observat că aproximativ 60% din totalul oamenilor le este interzis să vă invite la întâlnire.
A acceptat invitația reuniunii vine undeva la 10%.
Nu știu cât timp va rămâne funcțional în VC și de ce posibilitatea de a invita toți au băut în urmă cu câțiva ani.

Sursa poate folosi oricine pentru orice motiv.