Python client for interacting with Twitter V2 API available at https://rapidapi.com/datarise-datarise-default/api/twitter-x
Project description
Unofficial Twitter Python Client for Twitter/X Rapid API
Overview
This is a Python client for interacting with the Twitter V2 API via the RapidAPI platform. The library provides synchronous, asynchronous, and multi-threaded capabilities for retrieving Twitter user details and tweets.
Installation
pip install -U twitter-client-py
Usage
Simple Example
The following example demonstrates how to use the library to get user details and tweets.
from os import getenv
import json
from twitter_client_py import TwitterClient
api_key = getenv('API_KEY')
client = TwitterClient(api_key=api_key, timeout=20, verbose=True)
# Get user details by username
user_details = client.user_details(username='elonmusk')
if user_details.status_code == 200:
print(json.dumps(user_details.json(), indent=4))
# Get user details by id
user_details = client.user_details(user_id='44196397')
if user_details.status_code == 200:
print(json.dumps(user_details.json(), indent=4))
# Get user tweets by username
user_tweets = client.user_tweets(username='elonmusk')
if user_tweets.status_code == 200:
print(json.dumps(user_tweets.json(), indent=4))
# Get user tweets by id
user_tweets = client.user_tweets(user_id='44196397')
if user_tweets.status_code == 200:
print(json.dumps(user_tweets.json(), indent=4))
Advanced Example
TwitterClient class is thread-safe, so you can use it in a multi-threaded environment.
from os import getenv
import json
from concurrent.futures import ThreadPoolExecutor
from twitter_client_py import TwitterClient
api_key = getenv('API_KEY')
client = TwitterClient(api_key=api_key, timeout=20, verbose=True)
users = ['elonmusk', 'BillGates', 'JeffBezos', 'tim_cook', 'satyanadella']
def get_user_details(username):
user_details = client.user_details(username=username)
if user_details.status_code == 200:
return user_details.json()
with ThreadPoolExecutor(max_workers=5) as executor:
results = executor.map(get_user_details, users)
for result in results:
print(json.dumps(result, indent=4))
Asynchronous Example
The library also supports asynchronous requests using aiohttp
with asyncio
from os import getenv
import asyncio
import json
from twitter_client_py import AsyncTwitterClient
api_key = getenv('API_KEY') # X-RapidAPI-Key
client = AsyncTwitterClient(api_key=api_key, timeout=20, verbose=True)
users = ['elonmusk', 'BillGates', 'JeffBezos', 'tim_cook', 'satyanadella']
async def get_user_details(username):
user_details = await client.user_details(username=username)
if user_details.status == 200:
return user_details.json()
async def main():
tasks = [get_user_details(username) for username in users]
results = await asyncio.gather(*tasks)
for result in results:
print(json.dumps(await result, indent=4))
await main()
Check Rate Limit
You can check the rate limit of the API using the rate_limit
method. TwitterClient and AsyncTwitterClient have a rate_limit
attribute that returns the rate limit details. It's updated after each request.
rate_limit = client.rate_limit
print(f"Limit: {rate_limit.limit}")
print(f"Remaining requests: {rate_limit.remaining}")
print(f"Reset time: {rate_limit.reset}")
License
This project is licensed under the MIT License - see the LICENSE file for details.
Contact
If you have any questions or feedback, feel free to reach out to us at contact [at] datarise [dot] ma.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for twitter_client_py-0.2.6-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0db53fc4c0ca2bc76f80ca122495d83b75e85773591caf37b261fdad0914993f |
|
MD5 | 8aaf1aca3a0b828d9648d879bd0df94f |
|
BLAKE2b-256 | a8561d6b14d848b24157fc227beb35ddca26ec467ee96f48fb8d992c6cb4d4e3 |