如何使用python構建twitter、instagram和reddit機器人程式

想建立自己的社交媒體機器人嗎?下面介紹如何使用Python將更新自動釋出到Twitter、Instagram和Reddit。...

現在是2019年。你聽說過機器人。有聊天機器人、電子郵件機器人、網絡抓取機器人和社交媒體機器人。你創建機器人了嗎?這非常容易。可能是它們到處都是的原因。加入機器人霸主的行列,擁抱他們。

build-bots-python

在本文中,我將向您展示如何利用Python自動與Twitter、Reddit和Instagram帳戶交互。

使用python

本演練使用Python作為其首選語言。與其他語言相比,Python的易用性優勢超過了它的任何速度缺陷。幾乎可以為任何操作系統下載Python。使用您選擇的編輯器。

Python發行版與名為

pip

. 在撰寫本文時,有超過168000個庫可以使用

pip

. 對於您今天將創建的機器人程序,只需要三個。

從命令行,您可以使用這三行安裝所需的庫。

pip install --upgrade InstagramAPIpip install --upgrade tweepy pip install --upgrade praw

現在您可以在需要的地方導入這些庫。

獲取應用程序密鑰和機密

一位聰明的哲學家曾經說過:“祕密,祕密是沒有樂趣的。祕密,祕密會傷害別人。“尊重地說,機器人需要祕密。設置bot的下一步是允許它們訪問每個站點的API。為此,您需要一個應用程序密鑰或密碼。

當你收集鑰匙,祕密,代幣,和更多(聽起來像一個有趣的遊戲!),將它們全部放入一個名為憑證.py“此文件看起來如下所示:

# keystwitter_c***umer_key = ''twitter_c***umer_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機器人節點.js將向您展示如何創建您的Twitter應用程序。請注意,Twitter將需要一些時間來驗證您的帳戶,並確保您沒有創建垃圾郵件帳戶。

完成這些步驟後,將使用者密鑰、使用者機密、訪問令牌和訪問令牌機密複製到憑證.py文件。

設置reddit訪問

獲取Reddit客戶端ID和secret與Twitter非常相似。您需要將應用程序註冊為Reddit用戶代理。做完這些之後,你絕對應該在簡歷上寫上“Reddit用戶代理”。

登錄您選擇的Reddit帳戶。導航到“應用程序首選項”頁,然後單擊“創建其他應用程序”。給你的用戶代理起個有用的名字。為應用程序選擇腳本。關於URL可以留空。填寫重定向框的任何地址。

Reddit App Bot Python

按“創建應用程序”後,以下屏幕將顯示應用程序列表。應用程序名稱下的數字表示客戶機ID,客戶機機密位於該ID下面。將這些值複製到憑證.py文件。

Reddit App API Secret Python

設置instagram訪問

Instagram訪問不同於Twitter和Reddit。你不用註冊應用程序,而是使用用戶名和密碼。我建議創建一個單獨的公共帳戶,並將這些詳細信息用於您的bot。

用praw訪問reddit

使用praw需要兩個步驟。首先,設置訪問權限是對praw的Reddit方法的單個函數調用。然後,使用初始化對象,使用new()方法搜索子reddit。

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

更改

sub_name

變量從不同的子站點獲取帖子。而不是

new()

,其他方法,如

hot()

可以獲得職位。

通過instagramapi搜索instagram標籤

使用Instagram API的第一步是使用客戶機ID和密碼設置對象。之後,直接調用login()方法完成設置。

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

使用API要比Reddit複雜一些。在本例中,腳本使用getHashtagFeed從Instagram獲取非常大的JSON響應對象。

通過搜索響應,腳本尋找標題文本,然後打印到屏幕上查看。

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響應循環並找到與每個post相關聯的媒體。下面是一個從JSON響應中提取信息的實現:

def get_images_from_hashtag(hashtag, num_images):images = []get_hashtag = my_insta_api.getHashtagFeed(hashtag)if get_hashtag == False:return imagesfor item in my_insta_api.LastJson['items']:if item['media_type'] == 1 and 'image_versi***2' in item.keys():candidate = get_largest_image(item['image_versi***2']['candidates'])# get image filename = self.save_image_from_candidate(candidate['url'])if filename != '':# get status, save as tuplecaption = get_caption(item)images.append((filename, caption))if len(images) >= num_images:break return images

此函數中使用了兩個助手函數。Instagram在JSON響應中發送一個圖像“候選者”列表。選擇這些圖像中最大的一個,以便以最高分辨率顯示媒體。

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

其次,一旦找到指向圖像的鏈接,您就可以通過將內容寫入文件來本地保存圖像。使用

requests

圖書館使這變得簡單明瞭。

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

用tweepy發佈媒體

首先,你需要使用你的祕密和密鑰設置Twitter訪問。

import tweepyfrom credentials import *tw_auth = tweepy.OAuthHandler(twitter_c***umer_key, twitter_c***umer_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上搜索新的帖子,也可以在tweet上發佈這些帖子。將這兩種功能放在一起,如下所示:

# use r/<hashtag> for reddit search# and #<hashtag> for instagram searchhashtag = 'technology'num_posts = 5# tweet reddit inforeddit_posts = my_reddit.subreddit(hashtag).new(limit=num_posts)for submission in reddit_posts:title = submission.titleurl = '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 mediamedia_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。做一個機器人,成為真正互聯網的一部分。

最後,要完全自動化這個過程,您需要讓bot在服務器上循環運行。這可能是在你自己的電腦與時間安排。或者,撣掉你衣櫃裡的樹莓皮,看看這些可愛的Twitter機器人項目。

  • 發表於 2021-03-21 23:06
  • 閱讀 ( 46 )
  • 分類:程式設計

你可能感興趣的文章

蟒蛇2(python 2)和三(3)的區別

...蟒蛇2(python 2)? Python是最流行的程式語言之一。許多公司使用Python語言進行應用程式開發。谷歌、YouTube、Dropbox就是其中之一。Python擁有一個龐大的社群,因為它易於學習、閱讀和維護。它支援面向過程的程式設計和麵向物件的...

  • 發佈於 2020-10-20 01:55
  • 閲讀 ( 48 )

聊天機器人會取代你最喜歡的智慧手機應用嗎?

聊天機器人已經存在多年了。你可能最熟悉在Twitter、Facebook、Reddit和Slack上漫遊的機器人。最近,上述社交網路和通訊工具,以及其他大型通訊公司,已經開始建設成百上千的社交網路和通訊工具。 ...

  • 發佈於 2021-03-14 13:13
  • 閲讀 ( 48 )

要構建android應用程式,您需要學習以下7種程式語言

...ve。此庫可以部署到Android、iOS和通用Windows平臺。Facebook、Instagram和其他大公司都在維護和使用它,所以你知道它是經過嘗試和測試的。學習曲線並不容易,但一旦你能克服最初的困難,你就會擁有你所需要的所有力量和靈活性。...

  • 發佈於 2021-03-15 11:36
  • 閲讀 ( 47 )

5社交媒體對2017年的預測

... 2016年,Instagram也開始流行這種潮流,完全剝離了Snapchat的功能。它很快就流行了。Instagram是一款以拍攝精美、編輯過的影象而聞名的應用程式。允許使用者共享他們一天中不那麼...

  • 發佈於 2021-03-16 14:08
  • 閲讀 ( 57 )

什麼是kik應用程式,為什麼青少年喜歡它?

... 你可以在Tinder、Instagram或Snapchat上看到一條類似“Kik?”或者“Kik me”。這只是一個請求,將您新增到訊息應用程式中。如果你有使用者名稱的話,他們需要你的使用者名稱——儘管你可...

  • 發佈於 2021-03-19 02:26
  • 閲讀 ( 43 )

社交媒體機器人解釋:惡意帳戶和如何發現他們

...他自動帳戶。例如,一些機器人,比如Deep Question Bot,是Twitter使用者使用的有趣工具。與此同時,像ThreadReader應用程式這樣的機器人將Twitter執行緒變成一頁文字。 ...

  • 發佈於 2021-03-19 06:16
  • 閲讀 ( 36 )

26種樹莓皮的妙用

... 12建立twitter機器人 ...

  • 發佈於 2021-03-19 18:15
  • 閲讀 ( 66 )

社交媒體如何操縱你和你的觀點

... 你更傾向於關注一個擁有30000粉絲的Instagram賬戶還是一個擁有300粉絲的Instagram賬戶?你更傾向於點選一個有58000個讚的Twitter連結,還是隻有58個贊?社會證明是影響你的決定的一個因素,在社會媒體上它很容...

  • 發佈於 2021-03-21 10:43
  • 閲讀 ( 61 )

15個優秀的arduino初學者專案

... 對於一個可以不程式設計建立的專案,看看如何使用Xod來構建Arduino機器人。 ...

  • 發佈於 2021-03-23 11:30
  • 閲讀 ( 56 )

為什麼python不是適合您的程式語言

... Python完全可以進行大規模web開發。Instagram是執行Python網路框架Django的最大網站。這可不是什麼了不起的壯舉,Instagram工程師李澤坤解釋道: ...

  • 發佈於 2021-03-23 11:47
  • 閲讀 ( 57 )