При работе с API Twitter есть много причин, по которым вы можете перенести полезную нагрузку ответа на Google Sheets Анкет Google Sheets отлично подходит для базового анализа данных и быстрого обмена результатами. Это может быть особенно полезно для специального анализа, где вы работаете с заинтересованными сторонами из разных слоев общества.
Прежде чем вы сможете использовать Twitter API V2, вам нужен учетная запись разработчика . После того, как у вас есть учетная запись разработчика, вам необходимо создать проект и приложение внутри этого проекта. Для получения дополнительной информации о том, как начать работу с API Twitter, ознакомьтесь с этим Пост в блоге и Начало работы раздел нашей документации.
Для этого примера кода вы будете использовать Python 3 Анкет Вам также нужно подключиться к Google Drive API Анкет Если вам нужна помощь, чтобы получить настройку, обязательно ознакомьтесь с этим Полезный ресурс.
Чтобы настроить, установите Панды , gsiRead , Запросы и oauth2client . Вы будете использовать Панды
Чтобы преобразовать ответ полезной нагрузки JSON из API Twitter в табличный формат, gsiRead
Подключиться к Google Sheets, Запросы
Чтобы подключиться, чтобы сделать HTTP -запрос в API Twitter и oauth2client
Чтобы помочь с аутентификацией с помощью учетных записей услуг. Вы также импортируете ОС В Но вам не нужно устанавливать это первым, так как это включено в стандартную библиотеку Python.
import pandas as pd import gspread import os import requests from oauth2client.service_account import ServiceAccountCredentials
Установка переменной вашей среды для вашего носителя токен
Чтобы подключиться к API Twitter, вы должны сначала аутентифицировать подлинность API. Вы можете сделать это с токеном вашего приложения. Вы получаете токен своего носителя в разделе ключей и токенов вашего приложения внутри портал разработчиков Анкет Чтобы убедиться, что вы не случайно делитесь токеном своего носителя, вы можете установить переменную среды. Чтобы сделать это, внутри вашего терминала запустите следующее и обязательно замените, где он говорит, что ваш носитель Token с вашим собственным.
export BEARER_TOKEN='your-bearer-token'
Внутри вашего редактора кода создайте функцию с именем connect_to_twitter
Где вы можете получить токен своего носителя и вернуть заголовок, который вы передадите в свой HTTP -запрос в API Twitter.
def connect_to_twitter(): bearer_token = os.environ.get("BEARER_TOKEN") return {"Authorization": "Bearer {}".format(bearer_token)}
Запрос в API Twitter
Вы будете делать запрос в Твит поиск Конечная точка, которая позволяет вам вернуть твиты, которые соответствуют данному идентификатору. По умолчанию эта конечная точка вернет только поля для id
который содержит идентификатор твита и Текст
который возвращает текст твита. Вы также можете добавить дополнительное Поля к объекту, который возвращается. Для примера ниже, вы захотите указать, что вы хотите включить поля для Author_id, Create_at и Lang в переменную Params.
Далее сделайте функцию с именем make_request
, который проходит в заголовке аутентификации, который вы только что создали. Теперь URL -адрес сделает запрос, чтобы включить поля, которые вы хотите вернуть, и идентификаторы твитов для твитов, о которых вы хотите получить больше информации. Используя библиотеку запросов, сделайте запрос GET в переменную URL, передайте заголовок аутентификации и укажите, что вы хотите, чтобы запрос вернул полезную нагрузку JSON.
def make_request(headers): url = "https://api.twitter.com/2/tweets" params = { "tweet.fields": "author_id,created_at,lang", "ids": "21,1293593516040269825,1334542969530183683" } return requests.request("GET", url, headers=headers, params=params).json()
Расположение вашей полезной нагрузки JSON
Ответ, который возвращается, будет внутри полезной нагрузки JSON, который выглядит похоже на следующее.
{"data":[{"created_at":"2006-03-21T20:51:43.000Z","author_id":"13","text":"just setting up my twttr","id":"21","lang":"en"},{"created_at":"2020-08-12T17:01:42.000Z","author_id":"2244994945","text":"It's finally here! \uD83E\uDD41 Say hello to the new #TwitterAPI.\n\nWe're rebuilding the Twitter API v2 from the ground up to better serve our developer community. And today's launch is only the beginning.\n\nhttps://t.co/32VrwpGaJw https://t.co/KaFSbjWUA8","id":"1293593516040269825","lang":"en"},{"created_at":"2020-12-03T17:00:13.000Z","author_id":"783214","text":"2020 in one word","id":"1334542969530183683","lang":"en"}]}
Информация о запрошенных вами твитах находится в объекте с именем данные
, но это не совсем формат, который дружелюбен для электронных таблиц. Чтобы подготовить его к рядам и столбцам, создайте функцию, называемую make_df
который превратит вашу полезную нагрузку JSON в рамку данных Pandas, которая похожа на электронную таблицу в структуре, потому что они оба носят табличный характер. Если вы используете расширение или конечную точку, такую как недавний поиск, который имеет несколько объектов, вам может потребоваться нормализовать свой JSON, прежде чем вы будете готовы преобразовать свой объект.
def make_df(response): return pd.DataFrame(response["data"])
Аутенции в API Google Sheets
Вы будете использовать учетную запись службы для подключения к API Google Sheets. Сервисная учетная запись – это учетная запись, которая принадлежит вашему приложению так же, как и то, как учетная запись пользователя будет взаимодействовать с продуктом. Для аутентификации в API Google Sheets вам сначала нужно будет установить сферу, с которой вы будете работать, и передать информацию о учетной записи службы.
def authenticate_to_google(): scope = [ "https://spreadsheets.google.com/feeds" ] credentials = ServiceAccountCredentials.from_json_keyfile_name( "/path/to/your/file.json", scope ) return credentials
Ваша учетная запись также имеет адрес электронной почты. Вам нужно будет обновить настройки обмена таблицей электронной таблицы, которую вы хотели бы изменить, чтобы включить учетную запись сервиса, как вы бы с коллегой или другом добавили этот адрес электронной почты, где написано «Добавить людей или группы» в общем Настройки электронной таблицы Google Sheets.
Связывая его вместе
Теперь создайте основную функцию, чтобы вызвать все функции, которые мы написали до сих пор. Вы захотите создать переменную, называемую заголовками, где вы называете connect_to_twitter
Функция, чтобы установить заголовок аутентификации. Переменная Ответ
где вы называете make_request
функционируйте и пройдите в отклик
переменная. В df
Переменная, создайте кадр данных для объекта ответа JSON, который вы получаете из API Twitter. Далее, сохраните переменную, называемую учетными данными, и вызовите Authenticate_to_google
Функция для установки учетных данных вашей учетной записи службы. Следующим шагом является создание переменной с именем GC
Это разрешает ваши учетные данные.
Переменная Рабочая тетрадь
Это где вы устанавливаете значение электронной таблицы, с которой вы работаете, открыв ее с вашим ключом для электронной таблицы. Допустим, у вас есть таблица Google Sheet со следующим URL.
https://docs.google.com/spreadsheets/d/skosdo;gaetgiwoesofgkd45/edit
Ключ для таблицы для этого примера будет Skosdo; Gaetgiwoesofgkd45
Анкет В фрагменте кода внизу вы хотели бы заменить Spreadship_id на Skosdo; Gaetgiwoesofgkd45
Анкет
Вы также захотите установить лист, над которым вы работаете, для этого примера это Лист1
Но это может быть любой лист, который у вас есть в вашей таблице. Вам также необходимо указать значение ячейки или диапазон, который вы хотите обновить, в этом примере вы начнете с A1
которая является первой ячейкой. Наконец, чтобы добавить значения вашего кадра для обновления вашей электронной таблицы с помощью данных из API Twitter.
def main(): headers = connect_to_twitter() response = make_request(headers) df = make_df(response) credentials = authenticate_to_google() gc = gspread.authorize(credentials) workbook = gc.open_by_key("spreadsheet_id") sheet = workbook.worksheet("Sheet1") sheet.update("A1", [df.columns.values.tolist()] + df.values.tolist()) if __name__ == "__main__": main()
Вы можете проверить Полная версия кода на нашем GitHub Анкет Вы можете расширить этот пример кода, используя Google Script Как только у вас есть данные из API Twitter, отправленные на лист Google. Надеемся, что этот пост в блоге может послужить отправной точкой для работы как с данными Twitter, так и с API Google Sheets. Обязательно дайте нам знать на Форумы Если вы столкнетесь с какими -либо неприятностями по пути или твитнуть нас в @Twitterdev Если это вдохновляет вас создать что -нибудь.
Оригинал: “https://dev.to/twitterdev/sending-a-response-from-the-twitter-api-to-a-spreadsheet-in-google-sheets-1d9h”