كيفية إنشاء روبوتات Twitter و Instagram و Reddit باستخدام Python

كيفية إنشاء روبوتات Twitter و Instagram و Reddit باستخدام Python

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





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





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

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





تأتي توزيعات بايثون مرتبطة بالأداة المسماة

لماذا لا يستخدم الأميش الكهرباء
pip

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



pip

. بالنسبة إلى الروبوتات التي ستقوم بإنشائها اليوم ، هناك حاجة لثلاثة فقط.

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





pip install --upgrade InstagramAPI
pip install --upgrade tweepy pip install --upgrade praw

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

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

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





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

# 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

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

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

إعداد وصول Reddit

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

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

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

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

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

الوصول إلى Reddit With Praw

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

import praw
from credentials import *
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
for submission in my_reddit.subreddit(sub_name).new(limit=max_posts):
print(submission.title)

غير ال

sub_name

متغير للحصول على مشاركات من subreddits مختلفة. بدلا من

new()

، طرق أخرى مثل

hot()

متاحة للحصول على المشاركات.

البحث في Instagram Hashtags عبر InstagramAPI

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

from InstagramAPI import InstagramAPI
from credentials import instagram_client_id, instagram_client_secret
my_insta_api = InstagramAPI(instagram_client_id,instagram_client_secret)
my_insta_api.login()

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

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

get_hashtag = my_insta_api.getHashtagFeed(hashtag)
if get_hashtag != False:
for item in my_insta_api.LastJson['items']:
if 'caption' in item.keys() and 'text' in item['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)
if get_hashtag == False:
return images
for item in my_insta_api.LastJson['items']:
if item['media_type'] == 1 and 'image_versions2' in item.keys():
candidate = get_largest_image(item['image_versions2']['candidates'])
# get image
filename = self.save_image_from_candidate(candidate['url'])
if filename != '':
# get status, save as tuple
caption = get_caption(item)
images.append((filename, caption))
if len(images) >= num_images:
break
return images

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

def get_largest_image(candidates):
candidate = {}
pixels = 0
for cand in candidates:
# pick the highest resolution one
res = cand['height']*cand['width']
if res > pixels:
pixels = res
candidate = cand
return candidate

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

requests

مكتبة تجعل هذا واضحًا.

def save_image_from_candidate(url):
filename = ''
response = requests.get(url)
# check the response status code, 200 means good
if response.status_code == 200:
filename = url.split('/')[-1].split('?')[0]
with open(filename, 'wb') as f:
f.write(response.content)
return filename

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

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

import tweepy
from credentials import *
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)

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

for tweet in tweepy.Cursor(tw_api.search,q='MakeUseOf').items(10):
try:
tweet.favorite()
tweet.retweet()
time.sleep(2)
except tweepy.TweepError as e:
print(e.reason)
except StopIteration:
break

يمكن عمل العديد من الأشياء الأخرى بهذه المكتبة. لاختتام هذا الدليل الإرشادي ، يمكنك استخدام ملف

get_images_from_hashtag

وظيفة من روبوت Instagram الذي تم إنشاؤه مسبقًا لتغريد الصور والتعليقات التوضيحية.

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

# use r/ for reddit search
# and # for instagram search
hashtag = 'technology'
num_posts = 5
# tweet reddit info
reddit_posts = my_reddit.subreddit(hashtag).new(limit=num_posts)
for submission in reddit_posts:
title = submission.title
url = 'www.reddit.com{}'.format(submission.permalink)
tweet_str = f'Reddit r/{sub} update:
{title} #{sub} {url}'
tweet_str = trim_to_280(tweet_str)
tw_api.update(tweet_str)
# tweet instagram media
media_info = get_images_from_hashtag(hashtag, num_posts)
for (filename, message) in media_info:
try:
tweet_str = trim_to_280(message)
tw_api.update_with_media(filename, status=tweet_str)
except tweepy.TweepError as e:
print(e.reason)
except StopIteration:
break

روبوت الوسائط الاجتماعية المدعوم من Python جاهز!

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

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

يشارك يشارك سقسقة بريد الالكتروني إليك سبب إصدار مكتب التحقيقات الفيدرالي (FBI) تحذيرًا بشأن Hive Ransomware

أصدر مكتب التحقيقات الفيدرالي (FBI) تحذيرًا بشأن سلالة سيئة للغاية من برامج الفدية الضارة. إليك سبب حاجتك إلى توخي الحذر بشكل خاص من Hive ransomware.

اقرأ التالي
مواضيع ذات صلة
  • برمجة
  • بايثون
  • روبوتات وسائل التواصل الاجتماعي
  • دروس الترميز
نبذة عن الكاتب توم جونسن(3 مقالات منشورة)

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

المزيد من Tom Johnsen

اشترك في نشرتنا الإخبارية

انضم إلى النشرة الإخبارية لدينا للحصول على نصائح تقنية ومراجعات وكتب إلكترونية مجانية وصفقات حصرية!

انقر هنا للاشتراك