Рубрики
Без рубрики

Отправка ответа из API Twitter на электронную таблицу в Google Sheets

Учебное пособие, которое проведет вас, чтобы отправить полезную нагрузку из API Twitter в Google Sheets. С тегами Twitter, Showdev, Python, новичков.

При работе с 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”