如何建立一個照片推特機器人與樹莓皮和節點.js

開始使用節點.js建立一個Twitter機器人,只需一個樹莓皮就可以釋出照片和資訊!...

想辦法讓Twitter更有用,哪怕只對其他人有用?一種方法是創建一個自動的Twitter機器人,用有用的描述發佈圖片。你可以手動完成…也可以用節點.js把它放在樹莓皮上。繼續讀下去,看看是怎麼做的。

twitter-bot-raspberry-pi

為什麼要建立一個twitter機器人?

Tweeting photos with a bot

如果你曾經在Twitter上看到過發佈照片、事實或漫畫等的賬戶,那麼這些賬戶極有可能是自動生成的。這是一個很好的方式來建立一個觀眾感興趣的人在同一個主題。

但除了轉發和跟帖,還有另一個原因。構建一個Twitter機器人會教你一些有用的編程技巧。我們之前研究過如何用Python構建一個基本的Twitter bot(也在Raspberry Pi上),但這次我們採用了不同的方法。

在這個項目中,我們將使用節點.js在樹莓皮上建立一個照片推特機器人。照片將是第一次世界大戰的照片,並附有簡短的句子和歸屬)。這些信息將存儲在一個基本數據庫數組中。

開始:構建數據庫

如果你想建立一個照片推特機器人,你需要從收集你想要分享的圖片開始。這些應該是您自己的圖像,或者是您根據Creative Comm***或其他開放源代碼許可證獲得的圖像。

你還應該記下歸屬和其他信息,你想去與圖像。我們稍後會回到這個信息,一旦機器人啟動並運行。

安裝節點.js關於raspbian

從安裝開始節點.js. 你應該已經有一個樹莓皮了,運行,安裝了樹莓。對於這個項目,我們推薦一個樹莓Pi 2或更高版本;該項目是在樹莓Pi 3 B+上進行測試的。

在終端中(或通過SSH),更新系統包列表,並升級到最新版本:

sudo apt-get updatesudo apt-get dist-upgrade

按照屏幕上的提示,等待Pi更新。完成後,使用

sudo reboot

完成後,使用curl下載節點.js:

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -

接下來,用

sudo apt-get install -y nodejs

完成所有操作後,運行檢查以確保軟件安裝正確。最簡單的方法是檢查版本號:

node -v

響應應該類似於v8.11.3(或更高版本)。如果你看到這樣的事情,你可以確信節點.js可以使用。

構建你的twitter機器人

下一步是輸入創建bot的代碼。首先創建一個目錄:

mkdir twitterbot

然後,將其更改為bot的新目錄:

cd twitterbot

在這裡,創建一個名為服務器.js

sudo nano server.js

在此文件中,輸入一行:

c***ole.log('I am a Twitter bot!');

按Ctrl+X保存並退出,然後運行腳本:

node '/home/pi/twitterbot/server.js'

這應該返回短語“我是一個Twitter機器人!”。既然您已經確認這是可行的,現在是時候用npm(Node Package Manager)安裝Twit庫了。通過輸入以下內容確保已安裝:

npm -v

同樣,您應該會看到顯示的版本號。

遵循以下步驟:

npm init

首先提示您輸入有關節點.js你正在創建的應用程序。將顯示默認選項(如下所示),因此您只需按Enter鍵即可接受它們。您也可以選擇輸入自己的詳細信息。此配置完成後,將要求您用“是”確認詳細信息。

下一步是從npm安裝Twit模塊。

npm install twit --save

等待文件下載到node\u modules子目錄。完成後,打開服務器.js在nano中再次歸檔。

sudo nano server.js

在此處,刪除先前輸入的命令,並將其替換為:

var fs = require('fs'), path = require('path'), Twit = require('twit'), config = require(path.join(__dirname, 'config.js'));

像以前一樣保存並退出。

創建twitter應用程序

要構建一個正常工作的Twitter機器人,您需要創建一個Twitter應用程序。這是一個簡單的過程,需要您首先註冊一個新的Twitter帳戶。請注意,這還需要一個電話號碼來驗證帳戶,完成後,請前往開發者:twitter.com創建應用程序。

如果您沒有開發人員帳戶,這可能需要一些時間,因為需要填寫一定數量的表單。這是Twitter為避免垃圾郵件而採取的步驟,所以請慢慢來,準確地回答問題。

單擊“創建應用程序”,然後按要求添加詳細信息。在撰寫本文時,開發人員系統正在進行大修,因此您可能需要等待幾天(並回答一些其他問題)。

Create an app in Twitter

接下來,切換到Keys和Tokens選項卡,在Permissi***下找到訪問權限,並確保其設置為Read和Write(如果沒有設置,則使用Edit)。然後切換到密鑰和令牌並記下以下內容:

  • 使用者密鑰
  • 消費者祕密

在訪問令牌下,單擊創建以生成:

  • 訪問令牌
  • 訪問令牌密鑰

這些是API密鑰,您需要這些密鑰才能讓bot訪問您的Twitter帳戶。

回到命令行,創建配置.js在nano中:

sudo nano config.js

添加以下內容

var config = { c***umer_key: 'XXXXX', c***umer_secret: 'XXXXX', access_token: 'XXXXX', access_token_secret: 'XXXXX'}module.exports = config;

在“XXXXX”中,替換您自己相應的API密鑰詳細信息。

Add your key strings generated by Twitter into the config file

保存並退出,然後打開服務器.js.

sudo nano server.js

在這裡,將以下行附加到文件末尾:

var T = new Twit(config);T.post('statuses/update', { status: 'My first tweet!' }, function(err, data, resp***e) { c***ole.log(data)});

應該是這樣的:

This code will prompt a tweet to be sent.

再次保存並退出,然後在命令行中輸入

node server.js

在瀏覽器中打開您的Twitter帳戶以查看結果:

A test tweet sent using Node.js code

你已經確認機器人正在推特,所以是時候給它做點什麼了!

創建圖像文件夾

要在tweet上發佈照片,請將收集的圖像複製到文件夾(通常稱為images)。從一打左右開始。

下一步,返回到服務器.js文件:

sudo nano server.js

在這裡,刪除發送tweet的代碼,以T.post('statuses/update')開頭的行。

接下來,用一個名為random\ u from\ u array的函數替換它。這將從images文件夾中隨機選取一個圖像。

function random_from_array(images){ return images[Math.floor(Math.random() * images.length)];}

完成此操作後,您需要添加第二個函數,上傳\u隨機\u圖像:

function upload_random_image(images){ c***ole.log('Opening an image...'); var image_path = path.join(__dirname, '/images/' + random_from_array(images)), b64content = fs.readFileSync(image_path, { encoding: 'base64' }); c***ole.log('Uploading an image...'); T.post('media/upload', { media_data: b64content }, function (err, data, resp***e) { if (err){ c***ole.log('ERROR:'); c***ole.log(err); } else{ c***ole.log('Image uploaded!'); c***ole.log('Now tweeting it...'); T.post('statuses/update', { media_ids: new Array(data.media_id_string) }, function(err, data, resp***e) { if (err){ c***ole.log('ERROR:'); c***ole.log(err); } else{ c***ole.log('Posted an image!'); } } ); } });}

這個函數從images文件夾中隨機選取一個圖像,一旦選中,就會使用media/upload API上傳到Twitter。

接下來,添加以下代碼。這將找到images目錄,並從中獲取一張圖像,每60秒隨機發布一張。您可以(也應該)編輯這個計時,它在代碼中用圖60000表示。建議間隔較長。

setInterval(function(){ upload_random_image(images); }, 60000); }});

用Ctrl+X保存,然後用Yes保存。(GitHub源不再可用)。

一次使用節點服務器.js命令將提示照片開始推特!(如果您需要結束文章,請按Ctrl+Z取消此操作。)服務器.js腳本。)

向照片推文中添加文字

如果需要向圖像中添加文本,可以使用數組來完成。數組將引用圖像的文件名並列出應添加的文本。例如,您可以為未拍攝的圖像添加屬性。或者你可以添加一些事實或引用。

A Twitter bot can post photos and text

從創建圖片.js

sudo nano images.js

在這裡,添加以下代碼。這是一個數組,包含兩個元素:文件和源。它們包含圖像的文件名和屬性(通常是URL)。

var images = [ { file: 'image0001.png', source: 'http://www.example.com/image0001.png' }, { file: 'image0002.png', source: 'http://www.example.com/image0002.png' },]

根據需要對每個圖像重複上述步驟,然後結束圖片.js文件:

module.exports = images;

保存並關閉文件,然後打開服務器.js再次,並將其添加到變量列表中:

images = require(path.join(__dirname, 'images.js'));

保存並退出,然後用該節點重新啟動Twitter bot服務器.js再次發出命令。

您還可以使用“source”字段包含一些文本,解釋圖片的背景。這可以包含在URL旁邊。

你的第一個twitter bot,準備好重用了!

現在,您應該有一個自動發佈Twitter bot並運行,共享照片,事實和屬性在您給定的主題。

總而言之,這個過程是:

  • 收集你的照片
  • 安裝節點.js
  • 構建你的Twitter機器人
  • 在Twitter上申請開發者身份
  • 創建Twitter應用程序
  • 添加屬性數組
  • 開始發微博!

也許這其中最好的一點是,該代碼可以用於在tweet上發佈任何主題的照片、事實和屬性。

想知道你還可以用類似的設置運行哪些機器人程序嗎?查看我們的名單上最好的Twitter機器人項目的樹莓皮!

  • 發表於 2021-03-23 18:07
  • 閱讀 ( 50 )
  • 分類:程式設計

你可能感興趣的文章

你將來應該學習哪種程式語言?

... 瞭解更多關於最需要的計算機程式設計工作,如何寫完美的程式設計工作簡歷,以及如何準備程式設計面試。 ...

  • 發佈於 2021-03-11 19:38
  • 閲讀 ( 56 )

5個很棒的電視和電影機器人,你可以用樹莓皮做

...過,這可能需要一些時間。下面是五個示例專案,展示瞭如何將樹莓Pi 2或更高版本與您最喜歡的虛構機器人相結合。 ...

  • 發佈於 2021-03-12 06:35
  • 閲讀 ( 45 )

10個神奇的萬聖節道具,你可以用樹莓皮

... 不管是哪種方式,檢查這些影片和他們的筆記,瞭解如何開始的詳細資訊。我們甚至給了你一些有用的指標來說明結果的有效性,以及建立這些結果的難度! ...

  • 發佈於 2021-03-13 01:17
  • 閲讀 ( 53 )

為什麼你什麼都不用樹莓皮

...如果你必須向全世界開放一個伺服器,那麼一定要先閱讀如何加強你的安全性。 ...

  • 發佈於 2021-03-14 14:25
  • 閲讀 ( 67 )

看看這個像你一樣發推特的推特機器人

...所有的推文——或者Twitter上其他任何人的推文——然後建立一個假帳戶,按照你的風格模擬和**自己的推文。 ...

  • 發佈於 2021-03-16 21:49
  • 閲讀 ( 54 )

26種樹莓皮的妙用

... 然後如何使用樹莓圓周率拍攝時間推移是由你決定的。你可能需要一個行動式電池解決方案,三腳架可能會再次有用。這一次,你可能更喜歡智慧**的三腳架(夾子應該完全適...

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

如何開始與樹莓皮生鏽

... 如何在樹莓皮上安裝鐵鏽 ...

  • 發佈於 2021-03-21 09:18
  • 閲讀 ( 58 )

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

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

  • 發佈於 2021-03-21 23:06
  • 閲讀 ( 46 )

7個diy專案的想法,把一個老樹莓皮使用

... 有了低規格的樹莓皮電腦,你甚至可以建立一個運動檢測安全攝像頭。雖然有一個專用的樹莓皮攝像頭模組,你可以使用,許多USB攝像頭也相容。 ...

  • 發佈於 2021-03-24 04:09
  • 閲讀 ( 47 )

如何把電視變成一個復古遊戲系統與樹莓皮零

...結器。我們的指南連線樹莓皮零到一個RCA電纜電視解釋瞭如何做到這一點。 ...

  • 發佈於 2021-03-24 05:37
  • 閲讀 ( 59 )