اینک سال 2019 فرا رسیده است و همه جا صحبت از ربات‌ها است. برای نمونه چت‌بات‌ها، ایمیل بات‌ها، ربات‌های وب اسکرپینگ و ربات‌های شبکه‌های اجتماعی همه اطراف ما را احاطه کرده‌اند. آیا تاکنون یک ربات ساخته‌اید؟ این کار فوق‌العاده آسان است. احتمالاً به همین دلیل است که آن‌ها همه جا گسترش یافته‌اند. در این مقاله نشان می‌دهیم که چگونه می‌توان با بهره‌گیری از پایتون اقدام به ساخت ربات پایتون برای توییتر، اینستاگرام و Reddit کرده و تعامل خودکار با حساب‌های کاربری این رسانه‌های اجتماعی داشت.

کار با پایتون

در این راهنمای عملی از پایتون به عنوان زبان برنامه‌نویسی استفاده خواهیم کرد. مزیت سهولت استفاده از پایتون باعث شده است که هرگونه کندی آن در مقایسه با زبان‌های دیگر به چشم نیاید. شما می‌تواند پایتون را تقریباً برای هر سیستم عاملی دانلود کنید. همچنین می‌توانید از ویرایشگر مورد علاقه خود استفاده کنید.

توزیع‌های پایتون به همراه ابزاری به نام pip ارائه می‌شوند. در زمان نگارش این مقاله بیش از 168000 کتابخانه وجود داشته‌اند که امکان دانلود از طریق pip برای آن‌ها وجود داشته است. ما برای ربات‌هایی که می‌خواهیم در این نوشته ایجاد کنیم، تنها به سه مورد از این کتابخانه‌ها نیاز داریم.

در خط فرمان، می‌توانید کتابخانه‌های مورد نیاز خود را با استفاده از خطوط دستور زیر نصب کنید:

اینک می‌توانید این کتابخانه‌ها را در موارد نیاز ایمپورت کنید.

دریافت کلیدها و رمزهای اپلیکیشن

یک فیلسوف مشهور زمانی گفته است: «رمزها، رمزها هیچ جنبه سرگرمی ندارند. رمزها، رمزها به افراد صدمه می‌زنند». با این حال ربات‌ها به رمز نیاز دارند. در مرحله بعدی که می‌خواهیم ربات‌ها را راه‌اندازی کنیم، به کمک رمز می‌توانیم به آن‌ها امکان دسترسی به API هر سایت را بدهیم. به این منظور باید یک کلید و یک رمز اپلیکیشن داشته باشیم.

زمانی که همه کلیدها، رمزها، توکن‌ها و موارد دیگر را جمع‌آوری کردیم، همه آن‌ها را داخل یک فایل قرار می‌دهیم و نام آن را «credentials.py» می‌گذاریم. این فایل چیزی مانند زیر خواهد بود:

پیشنهاد مهمی که در خصوص حریم خصوصی داریم این است که این فایل را در هیچ سیستم کنترل نسخه مانند Git و غیره کامیت نکنید، چون هیچ کس دیگری جز شما نباید به این کلیدها و رمزها دسترسی داشته باشد. به همین دلیل است که رمز نام دارند.

راه‌اندازی دسترسی توییتر

در مورد توییتر ابتدا باید یک حساب خاص برای ربات بسازید. دقت کنید که مدت زمانی طول می‌کشد تا توییتر به درخواست شما پاسخ دهد. سپس می‌توانید با استفاده از Node.js یک ربات توییتر راه‌اندازی کنید. توضیح مراحل ایجاد این ربات خارج از حوصله این مقاله است و پیشنهاد می‌کنیم به این منظور به آموزش‌های Node.js مراجعه کنید.

پس از آن باید موارد زیر را در فایل credentials.py کپی کنید:

  • consumer key
  • consumer secret
  • access token
  • access token secret

تنظیم دسترسی به Reddit

دریافت ID و رمز کلاینت Reddit تا حدود زیادی شبیه به توییتر است. شما باید یک اپلیکیشن به صورت Reddit User Agent ثبت کنید. پس از انجام این کار باید وارد حساب Reddit خود شوید. به صفحه «ترجیح‌های اپلیکیشن‌ها» (apps preferences) بروید و روی create another app کلیک کنید. نام User Agent خود را چیز معنی‌داری بگذارید. اسکریپت مناسب اپلیکیشن خود را نیز انتخاب کنید. URL مربوط به about می‌تواند خالی باشد. در کادر redirect نیز هر آدرسی را می‌توانید وارد کنید.

ساخت ربات پایتون

پس از کلیک روی create app صفحه زیر را می‌بینید که لیستی از اپلیکیشن‌های شما را نمایش می‌دهد. رقم‌های زیر نام اپلیکیشن نشان دهنده ID کلاینت است و رمز کلاینت نیز زیر آن قرار دارد. این مقادیر را در فایل credentials.py کپی کنید.

ساخت ربات پایتون

راه‌اندازی دسترسی اینستاگرام

دسترسی اینستاگرام تا حدودی متفاوت از توییتر و ردیت است. به جای ثبت کردن یک اپلیکیشن، شما از یک نام کاربری و رمز عبور استفاده می‌کنید. بدین منظور توصیه می‌کنیم که از یک حساب عمومی استفاده کنید و جزییات ربات خود را در آن وارد نمایید.

دسترسی به Reddit با Praw

Praw یک کتابخانه پوششی API مربوط به Reddit برای پایتون است. استفاده از آن دو مرحله دارد. ابتدا باید دسترسی را به صورت یک فراخوانی تابع منفرد به متد praw در Reddit راه‌اندازی کنید. سپس با استفاده از مقداردهی شیء می‌توانید با بهره‌گیری از متد ()new به دنبال subreddit بگردید.

متغیر sub_name را تغییر دهید تا پست‌ها را از subreddit-های دیگر نیز بگیرد. به جای ()new از متدهای دیگر مانند ()hot برای دریافت پست‌ها استفاده کنید.

جستجوی هشتگ‌های اینستاگرام از طریق API آن

نخستین گام برای استفاده از API اینستاگرام، راه‌اندازی یک شیء با ID و رمز کلاینت است. درست پس از آن می‌توانید متد ()login را فراخوانی کرده و این فرایند را تکمیل کنید.

استفاده از API اینستاگرام نسبت به همتای Reddit آن کمی پیچیده‌تر است. در این مثال، اسکریپت از getHashtagFeed برای دریافت شیء پاسخ JSON بزرگی از اینستاگرام استفاده می‌کند.

اسکریپت در پاسخ به دنبال متن caption جستجو کرده و سپس آن را روی صفحه نمایش می‌دهد.

افزودن تصاویر به رسانه‌های اجتماعی

در مراحل پیشرفته‌تر ممکن است بخواهید اسکریپت شما تصاویری را از فید هشتگ دریافت کند. به این منظور روی پاسخ JSON حلقه‌ای تعریف کرده و رسانه مرتبط با هر پست را می‌یابد. در ادامه یک پیاده‌سازی برای استخراج اطلاعات از پاسخ JSON را مشاهده می‌کنید:

دو تابع کمکی در این تابع استفاده شده‌اند. اینستاگرام لیستی از «تصاویر احتمالی» را در پاسخ JSON بازگشت می‌دهد. بزرگ‌ترین اندازه را انتخاب کنید تا عکسی که بالاترین وضوح تصویر را دارد نمایش یابد:

در وهله دوم زمانی که لینک یک تصویر یافت شد، می‌توانید تصویر را با نوشتن محتوای فایل روی دیسک به صورت محلی ذخیره کنید. با استفاده از کتابخانه requests این کار بسیار سرراست خواهد بود.

توییت کردن رسانه (Media) با استفاده از Tweepy

ابتدا باید دسترسی به توییتر را با استفاده از رمزها و کلیدها راه‌اندازی کنید.

ایجاد یک ربات ریتوییت عمومی با چند خط کد ساده زیر ممکن است:

کارهای زیاد دیگری نیز می‌توان با این کتابخانه انجام داد. برای خاتمه این راهنما می‌توانید تابع get_images_from_hashtag را از ربات اینستاگرام که قبلاً ساختیم انتخاب کنید و تصاویر و کپشن‌ها را توییت کنید.

به علاوه ربات توییت می‌تواند در Reddit به دنبال پست‌های جدید، جستجو کرده و آن‌ها را نیز توییت کند. در مثال زیر این دو کارکرد در کنار هم قرار گرفته‌اند:

سخن پایانی

بدین ترتیب اینک می‌توانید کدهایی بنویسید که رسانه‌ها را از یک سایت می‌گیرد و به سایت دیگر ارسال می‌کند و شما می‌توانید این کارکردها را با هم ترکیب نیز بکنید. مثلاً توییت‌ها را از یک پست بگیرید و در Reddit منتشر کنید. تصاویر اینستاگرام را برای ارسال در subreddit-ها گرداوری کنید و یک بات بسازید که واقعاً بخشی از اینترنت باشد.

در نهایت برای خودکار سازی کامل این فرایند باید کاری کنید که ربات‌ها روی سرور در یک چرخه زمانی مشخص عمل کنند. این کار روی رایانه به وسیله یک ابزار زمان‌بندی میسر است. همچنین می‌توانید از یک برد کوچک رزبری پای برای ارسال این توییت ها استفاده کنید.

اگر این مطلب برای شما مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

==

telegram
twitter

میثم لطفی

«میثم لطفی» دانش‌آموخته ریاضیات و شیفته فناوری به خصوص در حوزه رایانه است. وی در حال حاضر علاوه بر پیگیری همه علاقه‌مندی‌های خود در رشته‌های برنامه‌نویسی، کپی‌رایتینگ و تولید محتوای چندرسانه‌ای، در زمینه نگارش مقالاتی با محوریت نرم‌افزار نیز با مجله فرادرس همکاری دارد.

بر اساس رای 2 نفر

آیا این مطلب برای شما مفید بود؟

نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *