Учебник по программированию с Twitter API V2 и библиотекой Tweepy Python.
В этой серии руководств мы рассмотрим программирование с помощью Twitter API V2 и Tweepy Python Library. Если вы какое-то время программировали с помощью Twitter, возможно, вы захотите перейти на версию 2, поскольку Twitter рекомендует приложения переходят на версию 2, а новые приложения используют версию 2.

Я не буду описывать сходства и различия, а вместо этого сосредоточусь на том, как лучше всего начать работу с V2, если вы типичный разработчик Python, который предпочитает использовать библиотеку Tweepy вместо того, чтобы напрямую взламывать API — хотя, возможно, было бы лучше просто программируйте с помощью API напрямую, Tweepy упрощает API Twitter, и вы управляете большинством функций с помощью всего двух строк кода 😀.
Полные видеоуроки — Twitter API V2 👉🏽 3 серии видеолекций
Вы, конечно, можете пропустить чтение и просто посмотреть серию видео, в которой рассказывается следующее:
👉🏽 Подача заявки на учетную запись разработчика Twitter
👉🏽 Использование почтальона для тестирования Twitter API
👉🏽 Расширяйте свой аккаунт, подписываясь на людей в Твиттере с помощью API.
👉🏽 Поиск твитов по определенным ключевым словам
👉🏽 Получите URL-адрес твита и просмотрите его в Твиттере
👉🏽 Сделать ретвит через API
👉🏽 Создайте приложение Lead Generation с Flask, чтобы искать твиты, ретвитить или просто отвечать прямо в Twitter
Получите ключи API Twitter
Мы не будем подробно освещать это, вы можете перейти на Портал разработчиков Twitter и подать заявку на получение учетной записи разработчика с ключами разработчика. Это очень просто, они спросят вас о цели приложения, честно ответят и возьмут ваши ключи, чтобы продолжить оставшуюся часть учебника.
Начало работы с Postman в Twitter V2 API
Вероятно, это самый простой способ начать тестирование API. Twitter предоставил коллекцию Postman со всеми маршрутами доступа к API. Все, что вам нужно сделать, это установить коллекцию в свой Postman и начать программировать.
Скачать Почтальон: https://www.postman.com/downloads/
Установите коллекцию Twitter Postman: https://www.postman.com/twitter/workspace/twitter-s-public-workspace/collection/9956214-784efcda-ed4c-4491-a4c0-a26470a67400?ctx=documentation
На их веб-сайте есть пример кода, но Tweepy проще реализовать и использовать.
Начало работы с Tweepy для V2 Twitter API
Загрузите документацию Tweepy здесь: https://docs.tweepy.org/en/stable/client.html
В версии 2 основное отличие заключается в аутентификации — вместо создания API вы создаете клиент с помощью этого кода:
client = tweepy.Client(bearer_token='enter-token',
consumer_key='enter-consumer-key',
consumer_secret='enter-consumer-secret',
access_token='enter-access-token',
access_token_secret='enter-secret')
Затем вы можете использовать клиент для вызова всех функций, которые вам нужны, от публикации твита до поиска твитов или подписки на пользователя. Например, чтобы следить за пользователем, вы должны запустить:
client.follow_user(userId)
И вы можете получить userId из этой функции:
client.get_user(username)
Это так просто с Tweepy, пример кода для этого руководства доступен на GitHub здесь:
Создание функции поиска для поиска в Twitter по определенным ключевым словам
import tweepy
import config
import json
def getClient():
client = tweepy.Client(bearer_token=config.BEARER_TOKEN,
consumer_key=config.API_KEY,
consumer_secret=config.API_KEY_SECRET,
access_token=config.ACCESS_TOKEN,
access_token_secret=config.ACCESS_TOKEN_SECRET)
return client
def searchTweets(client, query, max_results):
tweets = client.search_recent_tweets(query=query, max_results=max_results)
tweet_data = tweets.data
results = []
if not tweet_data is None and len(tweet_data) > 0:
for tweet in tweet_data:
obj = {}
obj['id'] = tweet.id
obj['text'] = tweet.text
results.append(obj)
return results
def getTweet(client, id):
tweet = client.get_tweet(id, expansions=['author_id'], user_fields=['username'])
return tweet
def returnSearchTweetList(query, max_results):
client = getClient()
tweets = searchTweets(client, query, max_results)
objs = []
if len(tweets) > 0:
for tweet in tweets:
twt = getTweet(client, tweet['id'])
obj = {}
obj['text'] = tweet['text']
obj['username'] = twt.includes['users'][0].username
obj['id'] = tweet['id']
obj['url'] = 'https://twitter.com/{}/status/{}'.format(twt.includes['users'][0].username, tweet['id'])
objs.append(obj)
return objs
def retweet(id):
client = getClient()
client.retweet(id)
Примечание. Вам нужен файл конфигурации с ключами API или сохраните их в среде, чтобы получить к ним доступ в функции getClient.
Этот код делает следующее:
1 . Получение не более 10 твитов на основе указанного вами ключевого слова.
2. Извлечение идентификатора твита и текста твита
3. Повторный вызов API для возврата автора твита
4. Создание URL-адреса — вы можете использовать его позже, чтобы найти твит в Twitter.
5. Удобная функция ретвита
Приложение Python Flask для ввода поискового запроса
Мы решили создать фляжное приложение, которое мы можем использовать для ввода поискового запроса и просмотра наших возвращенных твитов, отображаемых нам, где мы можем решить: (1) просмотреть твит в Твиттере, чтобы взаимодействовать с ним или (2) ретвитнуть твит из фляжного приложения.
Файл app.py будет выглядеть так:
from flask import Flask, render_template, url_for, redirect, request
import config
import search
def page_not_found(e):
return render_template('404.html'), 404
app = Flask(__name__)
app.config.from_object(config.config['development'])
app.register_error_handler(404, page_not_found)
@app.route('/', methods=["GET", "POST"])
def index():
query = 'Project Management lang:en -is:retweet'
if request.method == 'POST':
query = '{} lang:en -is:retweet'.format(request.form['query'])
max_results = 10
tweets = search.returnSearchTweetList(query, max_results)
return render_template('index.html', **locals())
@app.route('/retweet/<string:tweetId>/', methods=["GET", "POST"])
def reweet(tweetId):
search.retweet(tweetId)
return redirect(url_for('index'))
if __name__ == '__main__':
app.run(host='0.0.0.0', port='8000', debug=True)
И HTML-шаблон будет выглядеть так:
<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Skolo</title>
<link rel="shortcut icon" type="image/x-icon" href="{{ url_for('static', filename='images/favicon.png') }}">
<!-- Bootstrap CSS -->
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
</head>
<body>
<div class="container mt-5 mb-5">
<h1 class="mb-3">Your Latest Tweets</h1>
<form class="" action="/" method="post">
<div class="mb-3">
<label for="query" class="form-label">Enter the Search Query for Twitter</label>
<input type="text" class="form-control" id="query" name="query" placeholder="Search for .......">
</div>
<button type="submit" class="btn btn-primary"> RUN SEARCH QUERY </button>
</form>
<div class="card-group mt-5">
<div class="row">
{% for tweet in tweets %}
<!-- Card starts here -->
<div class="col-lg-4 mb-3">
<div class="card">
<div class="card-body">
<h5 class="card-title">Username: {{tweet.username}}</h5>
<p class="card-text">{{tweet.text}}</p>
</div>
<div class="card-footer">
<div class="row">
<div class="col-lg-6">
<a href="{{tweet.url}}"><button class="btn btn-primary btn-block">VIEW TWEET</button></a>
</div>
<div class="col-lg-6">
<a href="/retweet/{{tweet.id}}/"><button class="btn btn-success btn-block">RETWEET</button></a>
</div>
</div>
</div>
</div>
</div>
<!-- Card ends here -->
{% endfor %}
</div>
</div>
</div>
<!-- Option 1: Bootstrap Bundle with Popper -->
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script>
</body>
</html>
Конечный результат:

Вариант использования:
Создайте приложение как инструмент привлечения потенциальных клиентов, немедленно узнавайте, когда используются определенные ключевые слова, немедленно отвечайте или делайте ретвиты. Обратите внимание, что вы также можете автоматизировать код для немедленного ретвита или ответа.
Комментарии:
Дайте мне знать ваши комментарии здесь на видео.
Это все для этой статьи. Спасибо за чтение.
Дальнейшее чтение
Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord .
Заинтересованы в масштабировании запуска вашего программного обеспечения? Ознакомьтесь с разделом Схема.