الإعلانات

إنه 2019. كنت قد سمعت من السير. هناك روبوتات الدردشة ، روبوتات البريد الإلكتروني ، روبوتات تجريد الويب ، وروبوتات الوسائط الاجتماعية. هل قمت بإنشاء الروبوت حتى الآن؟ إنه أمر سهل للغاية. ربما لماذا هم في كل مكان. احتضان أسلافنا الروبوتات من خلال الانضمام إلى رتبتهم.

في هذه المقالة ، سأوضح لك كيف يمكنك الاستفادة من بيثون للتفاعل مع حسابات Twitter و Reddit و Instagram تلقائيًا.

العمل مع بيثون

هذا المشي من خلال الاستخدامات بيثون كلغة الاختيار 6 أسباب لماذا بيثون هي لغة البرمجة في المستقبلتريد أن تتعلم أو توسيع مهارات البرمجة الخاصة بك؟ إليكم السبب في أن Python هي أفضل لغة برمجة لتعلم هذا العام. اقرأ أكثر . تتفوق مزايا Python في سهولة الاستخدام على أي قصور في السرعة مقارنةً باللغات الأخرى. يمكنك تنزيل Python لأي نظام تشغيل تقريبًا. استخدم المحرر الذي تختاره.

توزيعات بيثون تأتي مرتبطة مع الأداة المساعدة المسماة بذرة. في وقت كتابة هذا التقرير ، كان هناك أكثر من 168000 مكتبة متاحة للتنزيل باستخدام بذرة. بالنسبة للبوتات التي ستقوم بإنشائها اليوم ، هناك حاجة إلى ثلاثة فقط.

من سطر الأوامر ، يمكنك تثبيت المكتبات اللازمة باستخدام هذه الأسطر الثلاثة.

تثبيت نقطة - ترقية InstagramAPI. تثبيت نقطة - ترقية tweepy تثبيت نقطة - ترقية praw

الآن ستتمكن من استيراد هذه المكتبات عند الحاجة.

الحصول على مفاتيح التطبيق والأسرار

قال فيلسوف حكيم ذات مرة "الأسرار والأسرار ليست متعة. أسرار ، أسرار تؤذي شخص ما. " بكل احترام ، تحتاج الروبوتات إلى أسرار. الخطوة التالية في إعداد روبوتاتك هي السماح لها بالوصول إلى واجهة برمجة التطبيقات لكل موقع. للقيام بذلك ، ستحتاج إلى مفتاح تطبيق أو سر.

أثناء قيامك بتجميع المفاتيح والأسرار والرموز والمزيد (يبدو أنها لعبة ممتعة!) ، ضعها جميعًا في ملف واحد باسم "credentials.py". سيبدو هذا الملف مثل هذا:

# keys twitter_consumer_key = '' twitter_consumer_secret = '' twitter_access_token = '' twitter_access_token_secret = '' reddit_client_id = '' reddit_client_secret = '' reddit_user_agent = '' instagram_client_id = '' instagram_client_secret = ''

اقتراح خصوصية مهم للغاية: لا تلتزم بهذا الملف بأي عنصر تحكم مصدر (على سبيل المثال Git). لا تريد أن يمتلك أي شخص آخر هذه المفاتيح والأسرار. يطلق عليهم أسرار لسبب ما.

إعداد وصول تويتر

تحقق من دليلنا لإعداد روبوت Twitter مع Node.js سوف يُظهر لك كيفية القيام بذلك قم بإنشاء تطبيق Twitter الخاص بك كيفية بناء صورة التغريد بوت مع التوت بي و Node.jsابدأ مع Node.js وقم بإنشاء روبوت Twitter الذي يحذف الصور والمعلومات باستخدام Raspberry Pi! اقرأ أكثر . لاحظ أن Twitter سيستغرق بعض الوقت للتحقق من حسابك والتأكد من أنك لا تنشئ حساب بريد مزعج.

بعد اتباع هذه الخطوات ، انسخ مفتاح العميل ، وسر العميل ، ورمز الوصول ، وسر الرمز المميز للوصول إلى ملف بيانات الاعتماد.

إعداد وصول رديت

الحصول على معرف عميل Reddit الخاص بك وسر يشبه إلى حد كبير تويتر. ستحتاج إلى تسجيل تطبيق كعامل مستخدم Reddit. بعد القيام بذلك ، يجب وضع "وكيل مستخدم Reddit" على سيرتك الذاتية.

تسجيل الدخول لحساب رديت من اختيارك. انتقل إلى صفحة تفضيلات التطبيقات و انقر فوق إنشاء تطبيق آخر. اسم وكيل المستخدم الخاص بك شيء مفيد. حدد البرنامج النصي لغرض التطبيق الخاص بك. يمكن ترك عنوان URL فارغًا. املأ أي عنوان لمربع إعادة التوجيه.

رديت التطبيقات بوت بيثون

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

رديت التطبيقات API سر بيثون

إعداد الوصول إلى Instagram

يختلف الوصول إلى Instagram عن Twitter و Reddit. بدلاً من تسجيل تطبيق ، يمكنك استخدام اسم المستخدم وكلمة المرور الخاصة بك. أقترح إنشاء حساب عام منفصل واستخدام هذه التفاصيل لبوتك.

الوصول إلى رديت مع براو

باستخدام قش هو عملية من خطوتين. أولاً ، إعداد الوصول هو استدعاء دالة واحدة لطريقة Reddit من praw. ثم ، باستخدام الكائن الذي تمت تهيئته ، يتم البحث عن روتين فرعي باستخدام الطريقة الجديدة ().

استيراد قش. من بيانات الاعتماد استيراد * my_reddit = praw. Reddit (client_id = reddit_client_id، client_secret = reddit_client_secret، user_agent = reddit_user_agent) sub_name = 'technology' max_posts = 10 للتقديم في my_reddit.subreddit (sub_name) .new (الحد = max_posts): print (submit.title)

غير ال sub_name متغير للحصول على وظائف من subreddits مختلفة. بدلا من جديد()، طرق أخرى مثل الحار() متاحة للحصول على المشاركات.

البحث في علامات التصنيف على Instagram عبر InstagramAPI

تتمثل الخطوة الأولى في استخدام Instagram API في إعداد كائن بهوية العميل وسريته. مباشرة بعد ذلك ، استدعاء طريقة تسجيل الدخول () لإكمال الإعداد.

من InstagramAPI استيراد InstagramAPI. من بيانات الاعتماد ، قم باستيراد instagram_client_id و instagram_client_secret my_insta_api = InstagramAPI (instagram_client_id، instagram_client_secret) my_insta_api.login ()

استخدام API أكثر تعقيدًا من نظيره في Reddit. في هذا المثال ، يستخدم البرنامج النصي getHashtagFeed للحصول على كائن استجابة JSON كبير جدًا من Instagram.

بالبحث من خلال الاستجابة ، يبحث البرنامج النصي عن نص التسمية التوضيحية ثم يطبع إلى الشاشة لمشاهدته.

get_hashtag = my_insta_api.getHashtagFeed (hashtag) إذا get_hashtag! = خطأ: للعنصر في my_insta_api. LastJson ['items']: if 'caption' في item.keys () و 'text' في العنصر ['caption']. keys (): caption = item ['caption'] ['text'] print (caption)

إضافة الصور إلى وسائل التواصل الاجتماعي

للمضي قدمًا ، قد ترغب في الحصول على الصور في خلاصة علامة التصنيف هذه. للقيام بذلك ، قم بإجراء حلقة من استجابة JSON وابحث عن الوسائط المرتبطة بكل منشور. إليك تطبيق لاستخراج المعلومات من استجابة JSON:

def get_images_from_hashtag (hashtag، num_images): images = [] get_hashtag = my_insta_api.getHashtagFeed (hashtag) إذا get_hashtag == False: إرجاع صور للعنصر في my_insta_api. LastJson ['items']: إذا كان العنصر ['media_type'] == 1 و 'image_versions2' في item.keys (): candidate = get_largest_image (item ['image_versions2'] ['المرشحين']) # get filename = self.save_image_from_candidate (مرشح ['url']) إذا كان اسم الملف! = '': # get status ، احفظ كـ tuple caption = get_caption (item) images.append ((اسم الملف ، التسمية التوضيحية)) إذا len (صور)> = num_images: كسر عودة الصور. 

هناك نوعان من الوظائف المساعدة المستخدمة في هذه الوظيفة. يرسل Instagram قائمة "المرشحين" للصور في استجابة JSON. اختر أكبر هذه الصور بحيث يتم عرض الوسائط بأعلى دقة.

def get_largest_image (المرشحين): مرشح = {} البكسل = 0 للحلوى في المرشحين: # اختر أعلى دقة واحدة res = cand ['height'] * cand ['width'] if res> بكسل: pixels = res مرشح = cand return مرشح. 

ثانياً ، بمجرد العثور على الرابط الخاص بالصورة ، يمكنك حفظ الصورة محليًا عن طريق كتابة المحتوى في ملف. باستخدام طلبات مكتبة يجعل هذا واضح.

def save_image_from_candidate (url): filename = '' response = applications.get (url) # تحقق من رمز حالة الاستجابة ، 200 يعني جيدة إذا response.status_code == 200: filename = url.split ("/") [- 1] .split ('؟') [0] مع open (اسم الملف ، 'wb') كـ f: f.write (response.content ) إرجاع اسم الملف. 

التغريد خارج وسائل الإعلام مع Tweepy

أولاً ، ستحتاج إلى إعداد وصول إلى Twitter باستخدام أسرارك ومفاتيحك.

استيراد tweepy. من بيانات الاعتماد استيراد * tw_auth = tweepy. OAuthHandler (twitter_consumer_key ، twitter_consumer_secret) tw_auth.set_access_token (twitter_access_token ، twitter_access_token_secret) tw_api = tweepy. API (tw_auth)

يتم إنشاء روبوت إعادة تغريد عام في بضعة أسطر.

للتغريد في tweepy. المؤشر (tw_api.search، q = 'MakeUseOf'). العناصر (10): try: tweet.favorite () tweet.retweet () time.sleep (2) باستثناء tweepy. TweepError كـ e: print (e.reason) باستثناء StopIteration: break. 

يمكن القيام بالعديد من الأشياء الأخرى مع هذه المكتبة. لإنهاء هذا التمرين ، يمكنك استخدام get_images_from_hashtag وظيفة من روبوت Instagram الذي تم إجراؤه مسبقًا لتغريد الصور والتعليقات التوضيحية.

بالإضافة إلى ذلك ، يمكن أن يقوم برنامج روبوت Twitter الخاص بك بالبحث عن Reddit بحثًا عن منشورات جديدة وتغريدها أيضًا. لوضع كل من هذه الوظائف معًا يبدو كالتالي:

# المستعمل/ للبحث reddit. # و #للبحث instagram. الهاشتاج = 'التكنولوجيا' num_posts = 5 # tweet reddit info. reddit_posts = my_reddit.subreddit (hashtag) .new (حد = num_posts) للتقديم في reddit_posts: title = submit.title url = 'www.reddit.com {}'. format (submit.permalink) tweet_str = تحديث f'Reddit r / {sub}: \ n \ n {title} # {sub} {url} 'tweet_str = trim_to_280 (tweet_str) tw_api.update (tweet_str) # tweet instagram وسائل الإعلام. media_info = get_images_from_hashtag (علامة التصنيف ، num_posts) لـ (اسم الملف ، الرسالة) في media_info: try: tweet_str = trim_to_280 (message) tw_api.update_with_media (اسم الملف ، الحالة = tweet_str) باستثناء tweepy. TweepError كـ e: print (e.reason) باستثناء StopIteration: break.

بوت الإعلام الاجتماعي المدعوم من بيثون جاهز!

إذن ، لديك الآن مجموعة من التعليمات البرمجية التي تسحب الوسائط من موقع وتنشرها إلى موقع آخر. يمكنك المزج والمطابقة أيضًا. سحب التغريدات ونشر إلى رديت. جمع صور Instagram لنشرها على subreddits. اصنع روبوتًا وكن جزءًا من الإنترنت الحقيقي.

أخيرًا ، لأتمتة هذه العملية بالكامل ، ستحتاج إلى تشغيل روبوتاتك في حلقة على الخادم. هذا يمكن أن يكون على جهاز الكمبيوتر الخاص بك مع جدولة الوقت. أو تخلص من توت العليق القديم الذي كان في خزانتك ، واطلع على هذه الحلوة مشاريع الروبوت بوت ل Pi أفضل 10 مشاريع تويتر بوت ل Raspberry Pi اقرأ أكثر .

توم هو مهندس برمجيات من ولاية فلوريدا (يصرخ إلى رجل فلوريدا) ولديه شغف بالكتابة وكرة القدم الجامعية (اذهب إلى Gators!) و CrossFit و Oxford.