想辦法讓Twitter更有用,哪怕只對其他人有用?一種方法是創建一個自動的Twitter機器人,用有用的描述發佈圖片。你可以手動完成…也可以用節點.js把它放在樹莓皮上。繼續讀下去,看看是怎麼做的。
如果你曾經在Twitter上看到過發佈照片、事實或漫畫等的賬戶,那麼這些賬戶極有可能是自動生成的。這是一個很好的方式來建立一個觀眾感興趣的人在同一個主題。
但除了轉發和跟帖,還有另一個原因。構建一個Twitter機器人會教你一些有用的編程技巧。我們之前研究過如何用Python構建一個基本的Twitter bot(也在Raspberry Pi上),但這次我們採用了不同的方法。
在這個項目中,我們將使用節點.js在樹莓皮上建立一個照片推特機器人。照片將是第一次世界大戰的照片,並附有簡短的句子和歸屬)。這些信息將存儲在一個基本數據庫數組中。
如果你想建立一個照片推特機器人,你需要從收集你想要分享的圖片開始。這些應該是您自己的圖像,或者是您根據Creative Comm***或其他開放源代碼許可證獲得的圖像。
你還應該記下歸屬和其他信息,你想去與圖像。我們稍後會回到這個信息,一旦機器人啟動並運行。
從安裝開始節點.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可以使用。
下一步是輸入創建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.com創建應用程序。
如果您沒有開發人員帳戶,這可能需要一些時間,因為需要填寫一定數量的表單。這是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密鑰詳細信息。
保存並退出,然後打開服務器.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)});應該是這樣的:
再次保存並退出,然後在命令行中輸入
node server.js在瀏覽器中打開您的Twitter帳戶以查看結果:
你已經確認機器人正在推特,所以是時候給它做點什麼了!
要在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腳本。)
如果需要向圖像中添加文本,可以使用數組來完成。數組將引用圖像的文件名並列出應添加的文本。例如,您可以為未拍攝的圖像添加屬性。或者你可以添加一些事實或引用。
從創建圖片.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並運行,共享照片,事實和屬性在您給定的主題。
總而言之,這個過程是:
也許這其中最好的一點是,該代碼可以用於在tweet上發佈任何主題的照片、事實和屬性。
想知道你還可以用類似的設置運行哪些機器人程序嗎?查看我們的名單上最好的Twitter機器人項目的樹莓皮!
... 瞭解更多關於最需要的計算機程式設計工作,如何寫完美的程式設計工作簡歷,以及如何準備程式設計面試。 ...
...過,這可能需要一些時間。下面是五個示例專案,展示瞭如何將樹莓Pi 2或更高版本與您最喜歡的虛構機器人相結合。 ...
... 不管是哪種方式,檢查這些影片和他們的筆記,瞭解如何開始的詳細資訊。我們甚至給了你一些有用的指標來說明結果的有效性,以及建立這些結果的難度! ...
...所有的推文——或者Twitter上其他任何人的推文——然後建立一個假帳戶,按照你的風格模擬和**自己的推文。 ...
... 然後如何使用樹莓圓周率拍攝時間推移是由你決定的。你可能需要一個行動式電池解決方案,三腳架可能會再次有用。這一次,你可能更喜歡智慧**的三腳架(夾子應該完全適...
... 在本文中,我將向您展示如何利用Python自動與Twitter、Reddit和Instagram帳戶互動。 ...
... 有了低規格的樹莓皮電腦,你甚至可以建立一個運動檢測安全攝像頭。雖然有一個專用的樹莓皮攝像頭模組,你可以使用,許多USB攝像頭也相容。 ...