Перевести CURL на Python - для Twitter API - PullRequest
0 голосов
/ 28 января 2020

Я хочу получить метрики взаимодействия Twitter (показы, избранное и т. Д. c.) С помощью Python «запросов». Мне удалось авторизоваться с помощью кода ниже:

client_key = '*{Client Key}*'
client_secret = '*{Client Secret}*' 

import base64

key_secret = '{}:{}'.format(client_key,client_secret).encode('ascii')
b64_encoded_key = base64.b64encode(key_secret)
b64_encoded_key = b64_encoded_key.decode('ascii')

import requests

base_url = 'https://api.twitter.com/'
auth_url = '{}oauth2/token'.format(base_url)

auth_headers = {
    'Authorization':'Basic {}'.format(b64_encoded_key),
    'Content-Type':'application/x-www-form-urlencoded;charset=UTF-8'
}

auth_data = {
    'grant_type':'client_credentials'
}

auth_resp = requests.post(auth_url, headers = auth_headers, data=auth_data)

Однако я не знаю, как перевести CURL ниже в Python код:

curl --request POST 
  --url https://data-api.twitter.com/insights/engagement/totals 
  --header 'accept-encoding: gzip' 
  --header 'authorization: Bearer ' 
  --header 'content-type: application/json' 
  --data '{
                "tweet_ids": [
                    "1070059276213702656","1021817816134156288","1067094924124872705"
                ],
                "engagement_types": [
                    "favorites","retweets","replies","video_views"
                ],
                "groupings": {
                    "perTweetMetricsUnowned": {
                        "group_by": [
                            "tweet.id",
                            "engagement.type"
                        ]
                    }
                }
            } 
  --verbose 
  --compressed

Twitter API ссылка: https://developer.twitter.com/en/docs/metrics/get-tweet-engagement/api-reference/post-insights-engagement#Historical

У кого-нибудь есть решение? Заранее спасибо!

Большинство людей используют Tweepy для потоковой передачи данных Twitter. Однако то, что я искал, - это наблюдение за доставкой твитов в течение всего времени, и поэтому я должен использовать конечную точку 'https://data-api.twitter.com/insights/engagement/', которую Твипи не охватывает.

1 Ответ

0 голосов
/ 28 января 2020

Должен иметь возможность создавать словари данных и заголовков и отправлять сообщения:

headers = {
    'accept-encoding': 'gzip',
    'authorization': 'Bearer',
    'content-type': 'application/json',
}
data = {
    "tweet_ids": [
        "1070059276213702656","1021817816134156288","1067094924124872705"
    ],
    "engagement_types": [
        "favorites","retweets","replies","video_views"
    ],
    "groupings": {
        "perTweetMetricsUnowned": {
            "group_by": [
                "tweet.id",
                "engagement.type"
            ]
        }
    }
}
req = requests.post(
    "https://data-api.twitter.com/insights/engagement/totals",
    headers=headers,
    data=data
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...