HINWEIS: Artikel, die nur zu Bildungszwecken erstellt wurden. Ich empfehle Ihnen nicht, das am Ende der Lektion erhaltene Produkt zu verwenden, um Unannehmlichkeiten oder eigenen Nutzen zu bringen
Was machen wir
Bot zum automatischen Posten von Posts auf der Community-Pinnwand oder der Vk-Seite
Wozu
Zu Informationszwecken
Was brauchen wir
- Kenntnisse in der Java-Programmierung Python
- Python3
- Modul zum Arbeiten mit XML-Dateien
- Python-Bibliotheken: vk_api und Zeit
Lasst uns beginnen
Zum Arbeiten benötigen wir ein Token mit Wall- und Offline-Berechtigungen. Um ein Token zu erhalten, erstellen Sie Ihre Vk Standalone-Anwendung . Und speichern Sie die ID. Folgen Sie
dann dem Link:
oauth.vk.com/authorize?client_id=IDAPP&scope=wall , offline & redirect_uri = http: //api.vk.com/blank.html&response_type=token
und ersetzen Sie Ihre Anwendungs-ID anstelle von IDAPP. Oder nutzen Sie den Link , den ich speziell für Sie vorbereitet habe.
Wenn alles richtig gemacht wurde, werden Sie zu einer anderen Site weitergeleitet, und auf der URL-Seite im GET-Parameter access_token befindet sich ein Token, das wir benötigen. Speichern Sie es.
XML-Arbeit
Um die Einstellungen zu speichern, erstellen wir eine XML-Datei mit folgendem Inhalt:
<settings>
<token>token</token>
<textPost>Text post</textPost>
<interval>120</interval>
<post>
<attachments>
<attachment>attachment</attachment>
</attachments>
<copyright>copyright</copyright>
<v>5.122</v>
</post>
<groups>
<group>short name group</group>
</groups>
</settings>
Ersetzen:
- "Token" für das Token, das wir oben erhalten haben
- "Textpost" für die Nachricht, die in der Post sein soll
- "Anhang" zu dem Objekt, das an den Pfosten angehängt werden soll
- "Copyright" zum Quelllink
- "Kurznamengruppe" zum Kurznamen (ohne vk.com ) der Community- / Benutzerseite, auf der die Veröffentlichung stattfinden soll (die Wand muss zur Veröffentlichung geöffnet sein).
Beginnen wir mit dem Schreiben von Code
Wir importieren alle erforderlichen Bibliotheken, erstellen eine Instanz unseres Moduls und melden uns im Namen des Benutzers über ein Token bei VKontakte an.
import vk_api
import time
from modules import XML as moduleXml
XML = moduleXml.XML("settings")
VK = vk_api.VkApi(token=XML.parsingFile("token"))
Als nächstes erhalten wir alle Kurzadressen, an denen die Beiträge veröffentlicht werden.
import vk_api
import time
from modules import XML as moduleXml
XML = moduleXml.XML("settings")
VK = vk_api.VkApi(token=XML.parsingFile("token"))
groupsId = []
groupsShortName = ""
for child in XML.parsingFile("groups", False):
groupsShortName += child.text + ","
for group in VK.method("groups.getById", {"group_ids": groupsShortName}):
groupsId.append(group["id"] * -1)
del groupsShortName
Jetzt erhalten wir die Nachricht, die im Beitrag enthalten sein wird, das Intervall, in dem die Beiträge veröffentlicht werden, und die Quelle des Beitrags.
import vk_api
import time
from modules import XML as moduleXml
XML = moduleXml.XML("settings")
VK = vk_api.VkApi(token=XML.parsingFile("token"))
groupsId = []
groupsShortName = ""
for child in XML.parsingFile("groups", False):
groupsShortName += child.text + ","
for group in VK.method("groups.getById", {"group_ids": groupsShortName}):
groupsId.append(group["id"] * -1)
del groupsShortName
textPost = XML.parsingFile("textPost")
intervalPost = int(XML.parsingFile("interval"))
Jetzt erhalten wir alle Objekte, die an den Beitrag angehängt werden.
import vk_api
import time
from modules import XML as moduleXml
XML = moduleXml.XML("settings")
VK = vk_api.VkApi(token=XML.parsingFile("token"))
groupsId = []
groupsShortName = ""
for child in XML.parsingFile("groups", False):
groupsShortName += child.text + ","
for group in VK.method("groups.getById", {"group_ids": groupsShortName}):
groupsId.append(group["id"] * -1)
del groupsShortName
textPost = XML.parsingFile("textPost")
intervalPost = int(XML.parsingFile("interval"))
attachments = [attachment.text for attachment in XML.parsingFile("attachments", False)]
copyright = XML.parsingFile("copyright")
v = XML.parsingFile("v")
Wir haben bereits alle Daten, die wir veröffentlichen müssen. Sie müssen lediglich eine Funktion zum Veröffentlichen und eine Schleife erstellen, die die Funktion zum Veröffentlichen aufruft.
Lassen Sie uns zunächst eine Schleife ausführen und die Funktion leer lassen. Der gleiche Code funktioniert nur, wenn er von der Konsole ausgeführt wird.
import vk_api
import time
from modules import XML as moduleXml
XML = moduleXml.XML("settings")
VK = vk_api.VkApi(token=XML.parsingFile("token"))
groupsId = []
groupsShortName = ""
for child in XML.parsingFile("groups", False):
groupsShortName += child.text + ","
for group in VK.method("groups.getById", {"group_ids": groupsShortName}):
groupsId.append(group["id"] * -1)
del groupsShortName
textPost = XML.parsingFile("textPost")
intervalPost = int(XML.parsingFile("interval"))
attachments = [attachment.text for attachment in XML.parsingFile("attachments", False)]
copyright = XML.parsingFile("copyright")
v = XML.parsingFile("v")
done = False
def publicPosts():
pass
if __name__ == "__main__":
done = True
while done:
publicPosts()
time.sleep(intervalPost)
Um einen Beitrag zu veröffentlichen, rufen wir die API-Methode "wall.post" auf und übergeben die get-Parameter früher. Wenn alles richtig funktioniert, wird eine entsprechende Meldung in der Konsole angezeigt.
import vk_api
import time
from modules import XML as moduleXml
XML = moduleXml.XML("settings")
VK = vk_api.VkApi(token=XML.parsingFile("token"))
groupsId = []
groupsShortName = ""
for child in XML.parsingFile("groups", False):
groupsShortName += child.text + ","
for group in VK.method("groups.getById", {"group_ids": groupsShortName}):
groupsId.append(group["id"] * -1)
del groupsShortName
textPost = XML.parsingFile("textPost")
intervalPost = int(XML.parsingFile("interval"))
attachments = [attachment.text for attachment in XML.parsingFile("attachments", False)]
copyright = XML.parsingFile("copyright")
v = XML.parsingFile("v")
done = False
def publicPosts():
for groupId in groupsId:
for i in range(1, 5):
result = VK.method("wall.post", {
"owner_id": groupId,
"message": textPost,
"attachments": attachments,
"copyright": copyright,
"v": v
})
if result["post_id"]:
print("Good post, id post - " + str(result["post_id"]))
else:
print("Error posting")
if __name__ == "__main__":
done = True
while done:
publicPosts()
time.sleep(intervalPost)
Fazit
Das war's, der ganze Code ist fertig. Ich werde Ihnen sofort sagen, dass ich 13 Jahre alt bin. Und ich möchte erzählen und teilen, was ich tun und für andere interessant finden kann. Meine letzte Veröffentlichung wurde von mehr als 2.000 Personen gelesen, und 40 Personen wurden mit Lesezeichen versehen, obwohl es etwas zu verbessern gibt. Das hat mich motiviert, vielen Dank.
Projekt auf gitHub .
HINWEIS: Artikel, die nur zu Bildungszwecken erstellt wurden. Ich empfehle Ihnen nicht, das am Ende der Lektion erhaltene Produkt zu verwenden, um Unannehmlichkeiten oder eigenen Nutzen zu bringen