Создание бота Node.js Twitter для анализа настроений рынка

Давайте узнаем, как создать бота Twitter на основе Node.js, который анализирует настроения рынка, транслируя твиты и применяя фильтры!
Введение
Твиттер был популярной платформой для обмена мнениями, новостями и идеями. Он также может быть источником ценных данных для проведения анализа настроений, особенно когда речь идет о понимании рыночных настроений для различных криптовалют и финансовых инструментов.
В этом руководстве мы познакомим вас с процессом создания Twitter-бота на основе Node.js, который транслирует твиты и фильтрует их на основе списка хэштегов и символов валюты (например, #defi или $BTC). Бот будет анализировать тональность твитов с помощью API анализа тональности.
Предпосылки
- Учетная запись разработчика Twitter с доступом к ключам API Twitter.
- Установлен Node.js (>=14.x).
Пошаговое руководство
Шаг 1: Настройка вашего проекта
- Создайте новый каталог для вашего бота:
mkdir twitter-market-sentiment-bot
cd twitter-market-sentiment-bot
npm init - yes
npm install axios
Шаг 3. Настройка Twitter API
- В каталоге вашего проекта создайте файл с именем `twitter-api.js`
2. Поместите в файл следующий код:
const axios = require('axios');
const api_key = 'YOUR_API_KEY';
const api_secret_key = 'YOUR_SECRET_KEY';
async function getBearerToken() {
const headers = {
'Authorization': `Basic ${Buffer.from(`${api_key}:${api_secret_key}`).toString('base64')}`,
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
};
const response = await axios.post('https://api.twitter.com/oauth2/token', 'grant_type=client_credentials', { headers });
return response.data.access_token;
}
module.exports = {
getBearerToken,
};
- В каталоге проекта создайте файл с именем market-sentiment.js.
2. Поместите в файл следующий код:
const axios = require('axios');
async function analyzeSentiment(text) {
try {
// Replace the below URL with a sentiment analysis API of your choice
const sentimentApiUrl = 'https://sentim-api.sample.com/api/v2.0/';
const response = await axios.post(sentimentApiUrl, { text });
return response.data;
} catch (error) {
console.error(`Error analyzing sentiment: ${error}`);
}
}
module.exports = analyzeSentiment;
- В каталоге проекта создайте файл с именем index.js.
2. Поместите в файл следующий код: - Запустите бота (запустите эту команду в вашем терминале bash):
const { getBearerToken } = require('./twitter-api');
const analyzeSentiment = require('./market-sentiment');
const axios = require('axios');
const filters = [
'#defi',
'$BTC',
// Add more filters here
];
async function processStream(stream) {
for await (const chunk of stream) {
try {
const text = JSON.parse(chunk.toString()).data.text;
const sentiment = await analyzeSentiment(text);
console.log(`Text: ${text}\nSentiment: ${sentiment}\n\n`);
} catch (error) {
console.error(`Error processing stream data: ${error}`);
}
}
}
(async () => {
const token = await getBearerToken();
const url = 'https://api.twitter.com/2/tweets/search/stream';
const headers = { 'Authorization': `Bearer ${token}` };
// Use filtered-stream API
const rules = filters.map(filter => ({ "value": filter }));
await axios.post(`${url}/rules`, { "add": rules }, { headers });
// Start processing
const stream = await axios({ url, headers, responseType: 'stream' });
processStream(stream.data); })();
node index.js
Присоединяйтесь к нашим социальным сетям, чтобы оставаться на связи с командой и разработчиками SideKick!