VK بوت للنشر التلقائي

ملاحظة: تم إنشاء المقال لأغراض تعليمية فقط ، ولا أشجعك على استخدام المنتج الذي تم الحصول عليه في نهاية الدرس ، لإحداث إزعاج أو منفعة خاصة


ماذا نفعل



بوت ل صناعة السيارات في نشر المشاركات على الحائط المجتمع أو صفحة كيه



لاجل ماذا



لأغراض إعلامية



ماذا نحتاج





لنبدأ



للعمل ، نحتاج إلى رمز مميز بأذونات حائط وغير متصلة بالإنترنت. لتلقي رمز مميز ، قم بإنشاء تطبيق 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 .



ملاحظة: تم إنشاء المقال لأغراض تعليمية فقط ، ولا أشجعك على استخدام المنتج الذي تم الحصول عليه في نهاية الدرس ، لإحداث إزعاج أو منفعة خاصة



All Articles