реклама

2019 г. Чували сте за ботове. Има ботове за чат, ботове за електронна поща, ботове за изстъргване в мрежата и ботове в социалните медии. Създали ли сте бот още? Учудващо е лесно. Вероятно затова са навсякъде. Прегърнете нашия бот-господари, като се присъедините към ранга им.

В тази статия ще ви покажа как можете да използвате Python да взаимодейства автоматично с вашите акаунти в Twitter, Reddit и Instagram.

Работа с Python

Тази употреба използва Python като език за избор 6 причини защо Python е езикът за програмиране на бъдещетоИскате ли да научите или да разширите уменията си по програмиране? Ето защо Python е най-добрият език за програмиране, който се изучава тази година. Прочетете още . Предимствата на Python за лекота на използване превишават всички недостатъци на скоростта, които има в сравнение с други езици. Можете да изтеглите Python за почти всяка ОС. Използвайте редактора по ваш избор.

Разпределенията на Python идват свързани с помощната програма наречена пиукане. Към момента на написването има над 168 000 библиотеки, достъпни за изтегляне чрез използване

пиукане. За ботовете, които ще създадете днес, са необходими само три.

От командния ред можете да инсталирате необходимите библиотеки, като използвате тези три реда.

pip install - надстройте InstagramAPI. pip install --upgrade tweepy pip install --upgrade praw

Сега ще можете да импортирате тези библиотеки, където е необходимо.

Получаване на ключове и тайни на приложението

Един мъдър философ каза веднъж: „Тайните, тайните не са забавление. Тайните, тайните нараняват някого. " С уважение, ботовете се нуждаят от тайни. Следващата стъпка в настройката на вашите ботове е да им разрешите достъп до API на всеки сайт. За да направите това, ще ви трябва ключ за приложение или секрет.

Докато събирате ключове, тайни, маркери и много други (звучи като забавна игра!), Поставете всичките им в един файл, наречен „credentials.py.“ Този файл ще изглежда така:

# клавиши 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 Как да изградим снимка с туитър Bot With Raspberry Pi и Node.jsЗапочнете с Node.js и създайте бот в Twitter, който туитва снимки и информация, използвайки само Raspberry Pi! Прочетете още . Обърнете внимание, че на Twitter ще ви отнеме известно време, за да потвърди вашия акаунт и да гарантира, че не създавате спам акаунт.

След като изпълните следните стъпки, копирайте потребителския ключ, потребителската тайна, маркера за достъп и тайната за достъп до вашия таен файл.

Настройване на Reddit Access

Получаването на вашия идентификационен номер и секрет на Reddit е много подобно на Twitter. Ще трябва да регистрирате приложение като Reddit потребителски агент. След като направите това, трябва абсолютно да поставите „Reddit User Agent“ в автобиографията си.

Впиши се към акаунта Reddit по ваш избор. Навигирайте до страница с предпочитания за приложения и Кликнете върху създаване на друго приложение. Назовете вашия потребителски агент нещо полезно. Изберете скрипт за целта на приложението ви. URL адресът за около може да се остави празен. Попълнете всеки адрес за полето за пренасочване.

Reddit App Bot Python

След теб Натиснете създаване на приложение, следният екран ще ви бъде представен със списък на вашите приложения. Цифрите под името на приложението ви представляват идентификационния номер на клиента, а клиентската тайна се намира под това. Копирайте тези стойности във вашия файл.

Reddit App API Secret Python

Настройване на достъп до Instagram

Достъпът до Instagram се различава от Twitter и Reddit. Вместо да регистрирате приложение, използвате потребителското име и паролата си. Предлагам да създадете отделен публичен акаунт и да използвате тези подробности за вашия бот.

Достъп до Reddit с Praw

Използването на praw е процес в две стъпки. Първо, настройването на достъпа е еднократно извикване на функция към метода Reddit на praw. След това с помощта на инициализирания обект търсенето на subreddit се извършва с помощта на метода new ().

внос praw от идентификационни данни import * my_reddit = praw. Reddit (client_id = reddit_client_id, client_secret = reddit_client_secret, user_agent = reddit_user_agent) sub_name = 'технология' max_posts = 10 за изпращане в my_reddit.subreddit (под_име) .new (ограничение = max_posts): печат (submit.title)

Промяна на sub_name променлива, за да получавате публикации от различни подреди. Вместо нов (), други методи като гореща () са достъпни за получаване на публикации.

Търсене на Hashtags на Instagram чрез InstagramAPI

Първата стъпка в използването на Instagram API е настройка на обект с идентификатор и секрет на клиента. Непосредствено след това се обадете на метода login (), за да завършите настройката.

от InstagramAPI внася Instagram. от идентификационни данни импортиране 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! = False: за елемент в my_insta_api. LastJson ['items']: ако 'caption' в item.keys () и 'text' в item ['caption']. Key (): caption = item ['caption'] ['text'] print (надпис)

Добавете изображения към социалните медии

Движейки се напред, може да искате скриптът ви да получи изображенията в тази емисия с хештег. За да направите това, прегледайте 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']: ако item ['media_type'] == 1 и 'image_versions2' в item.keys (): kandidat = get_largest_image (item ['image_versions2'] ['кандидати']) # get image filename = self.save_image_from_candidate (kandidat ['url']), ако името на файла! = '': # получи статус, запишете като tuple caption = get_caption (item) images.append ((име на файл, надпис)) if len (images)> = num_images: прекъснете обратни изображения. 

Има две помощни функции, използвани в тази функция. Instagram изпраща списък с изображения „кандидати“ в отговора на JSON. Изберете най-голямото от тези изображения, така че медията да се показва в най-високата разделителна способност.

def get_largest_image (кандидати): kandidat = {} пиксели = 0 за кандида в кандидатите: # изберете най-високия резолюция един res = cand ['височина'] * cand ['width'] ако res> pixels: pixels = res kandidat = cand return кандидат. 

Второ, след като се намери връзката към изображението, можете да запазите изображението локално, като напишете съдържанието във файл. Използвайки искания библиотеката прави това направо.

def save_image_from_candidate (url): filename = '' response = questions.get (url) # проверете кода на състоянието на отговора, 200 означава добре, ако response.status_code == 200: име на файл = url.split ("/") [- 1] .split ('?') [0] с отворен (име на файл, 'wb') като f: f.write (response.content ) връщане име на файл. 

Туит Out Media с Tweepy

Първо, ще трябва да настроите достъп до Twitter чрез вашите тайни и ключове.

импортиране на туит. от идентификационни данни 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)

Създаването на общ ретвит бот се извършва само в няколко реда.

за туит в туип. Курсор (tw_api.search, q = 'MakeUseOf'). Елементи (10): опитайте: tweet.favorite () tweet.retweet () time.sleep (2) с изключение на tweepy. TweepError като e: print (напр. Причина) с изключение на StopIteration: break. 

Много други неща могат да се направят с тази библиотека. За да завършите това разглеждане, можете да използвате get_images_from_hashtag функция от Instagram бота, направена по-рано, за да туитвате изображения и надписи.

Освен това вашият Twitter бот може да търси Reddit за нови публикации и да туитира тези. За да се съберат и двете функции, изглежда така:

# употреба r / за reddit търсене. # и #за търсене в instagram. hashtag = 'технология' num_posts = 5 # tweet reddit информация. reddit_posts = my_reddit.subreddit (hashtag) .new (limit = num_posts) за изпращане в reddit_posts: title = submit.title url = 'www.reddit.com {}'. формат (submit.permalink) tweet_str = f'Reddit r / {sub} update: \ 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 (hashtag, num_posts) за (име на файл, съобщение) в media_info: опитайте: tweet_str = trim_to_280 (съобщение) tw_api.update_with_media (име на файл, статус = tweet_str) с изключение на tweepy. TweepError като e: print (напр. Причина) с изключение на StopIteration: break.

Вашият бот за социални медии с Python е готов!

И така, сега имате куп код, който дърпа медии от един сайт и публикува в друг. Можете също да смесвате и да съвпадате. Издърпайте туитове и публикувайте в Reddit. Събирайте Instagram изображения за публикуване в subreddits. Направете бот и бъдете част от истинския интернет.

И накрая, за да автоматизирате напълно този процес, ще искате вашите ботове да работят в цикъл на сървър. Това може да е на вашия собствен компютър с график за време. Или прах от онзи стар Raspberry Pi, който е бил в гардероба ви, и вижте тези сладки Twitter бот проекти за Pi 10 най-добри проекти за Twitter Bot за Raspberry Pi Прочетете още .

Том е софтуерен инженер от Флорида (вика на Флорида Ман) със страст към писането, колежа футбол (отидете Gators!), CrossFit и Оксфорд запетайки.