Add API.user_agent
authorHarmon <Harmon758@gmail.com>
Thu, 13 May 2021 13:44:50 +0000 (08:44 -0500)
committerHarmon <Harmon758@gmail.com>
Thu, 13 May 2021 13:44:50 +0000 (08:44 -0500)
tweepy/api.py

index 2be766e922027c07f9796f6c8370673fdf1eb156..f8eadd66167a05cabaf1be4600c26b106f5db8e0 100644 (file)
@@ -7,12 +7,14 @@ import imghdr
 import logging
 import mimetypes
 import os
+from platform import python_version
 import sys
 import time
 from urllib.parse import urlencode
 
 import requests
 
+import tweepy
 from tweepy.errors import (
     BadRequest, Forbidden, HTTPException, NotFound, TooManyRequests,
     TweepyException, TwitterServerError, Unauthorized
@@ -76,7 +78,8 @@ class API:
     def __init__(
         self, auth=None, *, cache=None, host='api.twitter.com', parser=None,
         proxy=None, retry_count=0, retry_delay=0, retry_errors=None,
-        timeout=60, upload_host='upload.twitter.com', wait_on_rate_limit=False
+        timeout=60, upload_host='upload.twitter.com', user_agent=None,
+        wait_on_rate_limit=False
     ):
         self.auth = auth
         self.cache = cache
@@ -95,6 +98,15 @@ class API:
         self.retry_errors = retry_errors
         self.timeout = timeout
         self.upload_host = upload_host
+
+        if user_agent is None:
+            user_agent = (
+                f"Python/{python_version()} "
+                f"Requests/{requests.__version__} "
+                f"Tweepy/{tweepy.__version__}"
+            )
+        self.user_agent = user_agent
+
         self.wait_on_rate_limit = wait_on_rate_limit
 
         # Attempt to explain more clearly the parser argument requirements
@@ -121,6 +133,10 @@ class API:
 
         self.cached_result = False
 
+        if headers is None:
+            headers = {}
+        headers["User-Agent"] = self.user_agent
+
         # Build the request URL
         path = f'/1.1/{endpoint}.json'
         if upload_api: