ملاحظة: تم إنشاء المقال لأغراض تعليمية فقط ، ولا أشجعك على استخدام المنتج الذي تم الحصول عليه في نهاية الدرس ، لإحداث إزعاج أو منفعة خاصة
ماذا نفعل
بوت ل صناعة السيارات في نشر المشاركات على الحائط المجتمع أو صفحة كيه
لاجل ماذا
لأغراض إعلامية
ماذا نحتاج
- معرفة لغة البرمجة بايثون
- بايثون 3
- وحدة للعمل مع ملفات XML
- مكتبات Python: vk_api والوقت
لنبدأ
للعمل ، نحتاج إلى رمز مميز بأذونات حائط وغير متصلة بالإنترنت. لتلقي رمز مميز ، قم بإنشاء تطبيق Vk Standalone الخاص بك . وحفظ المعرف الخاص به.
ثم اتبع الرابط:
oauth.vk.com/authorize؟client_id=IDAPP&scope=wall ، offline & redirect_uri = http: //api.vk.com/blank.html&response_type=token
واستبدل معرف التطبيق الخاص بك بدلاً من IDAPP. أو استخدم الرابط الذي أعددته خصيصًا لك.
إذا تم كل شيء بشكل صحيح ، فسيتم نقلك إلى موقع آخر ، وفي صفحة URL في معلمة GET access_token ، سيكون هناك رمز نحتاجه ، احفظه.
عمل 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 ) صفحة المجتمع / المستخدم حيث سيتم النشر (يجب أن يكون الجدار مفتوحًا للنشر)
لنبدأ في كتابة الكود
نقوم باستيراد جميع المكتبات الضرورية ، وإنشاء مثيل من وحدتنا ، وتسجيل الدخول إلى فكونتاكتي نيابة عن المستخدم من خلال رمز مميز.
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)
لنشر منشور ، سوف نستدعي طريقة API "wall.post" ونمرر معلمات 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 .
ملاحظة: تم إنشاء المقال لأغراض تعليمية فقط ، ولا أشجعك على استخدام المنتج الذي تم الحصول عليه في نهاية الدرس ، لإحداث إزعاج أو منفعة خاصة