注:教育目的でのみ作成された記事です。不便や自己利益をもたらすために、レッスンの最後に取得した製品を使用することはお勧めしません。
私たちは何をしますか
コミュニティウォールまたはVkページに投稿を自動投稿するためのボット
何のために
情報提供の目的で
私たちは何が必要なのか
- プログラミング言語Pythonの知識
- Python3
- XMLファイルを操作するためのモジュール
- Pythonライブラリ:vk_apiとtime
はじめましょう
動作するには、壁とオフラインの権限を持つトークンが必要です。トークンを受け取るには、Vkスタンドアロンアプリケーションを作成します。そして、そのIDを保存します。
次に、次のリンクをたどり ます。oauth.vk.com/ authorize?client_id =
IDAPP&scope = wall、offline&redirect_uri = http://api.vk.com/blank.html&response_type=token
そして、IDAPPの代わりにアプリケーションIDを使用します。または、私があなたのために特別に用意したリンクを使用してください。
すべてが正しく行われると、別のサイトに移動し、GETパラメーターaccess_tokenのURLページに、必要なトークンがあり、それを保存します。
XML作業
設定を保存するために、次の内容の.xmlファイルを作成します。
<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>
交換:
- 上記で受け取ったトークンの「トークン」
- 投稿に含めるべきメッセージの「テキスト投稿」
- ポストに取り付けるオブジェクトへの「アタッチメント」
- ソースリンクへの「著作権」
- 「ショートネームグループ」からショートネーム(vk.comなし)への公開が行われるコミュニティ/ユーザーページ(公開のために壁が開いている必要があります)
コードを書き始めましょう
必要なすべてのライブラリをインポートし、モジュールのインスタンスを作成して、トークンを介してユーザーに代わってVKontakteにログインします。
import vk_api
import time
from modules import XML as moduleXml
XML = moduleXml.XML("settings")
VK = vk_api.VkApi(token=XML.parsingFile("token"))
次に、投稿が公開されるすべての短いアドレスを取得します。
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
これで、投稿に含まれるメッセージ、投稿が公開される間隔、および投稿のソースが表示されます。
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"))
これで、投稿に添付されるすべてのオブジェクトを取得できます。
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")
公開する必要のあるすべてのデータはすでにあります。あとは、公開用の関数と、公開用の関数を呼び出すループを作成するだけです。
まず、ループして関数を空のままにします。同じコードは、コンソールから実行された場合にのみ機能します。
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)
投稿を公開するには、「wall.post」APIメソッドを呼び出し、getパラメーターを先に渡します。すべてが正常に機能すると、対応するメッセージがコンソールに表示されます。
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)
結論
これで、すべてのコードの準備が整いました。私は13歳です。そして、自分に何ができるかを伝え、共有し、他の人にとって面白いと思っています。ですから、私の最後の出版物は2k人以上の人に読まれ、40人がブックマークされましたが、改善すべき点はあります。これが私を動機づけました、どうもありがとうございました。
gitHubのプロジェクト。
注:教育目的でのみ作成された記事です。不便や自己利益をもたらすために、レッスンの最後に取得した製品を使用することはお勧めしません。