Skip to main content

A simple Python wrapper for Twitter API v2 ✨ 🍰 ✨

Project description

python-twitter

A simple Python wrapper around for Twitter API v2 :sparkles: :cake: :sparkles:.

v2 Build Status Codecov PyPI

Introduction

Twitter has published new version Twitter API V2 for developer at Aug 13, 2020.

This library provides a service to easily use this new version Twitter API.

Documentation

You can get all api description and update at Twitter API v2: Early Access.

Library docs site on here

Installing

You can install this library easily by pypi:

$ pip install python-twitter-v2

Code is hosted at https://github.com/sns-sdks/python-twitter.

Checkout latest development version with:

$ git clone https://github.com/sns-sdks/python-twitter.git
$ cd python-twitter

Install dependencies with:

$ make env

Run tests with:

$ make test

Run tests with coverage:

$ make cov-term
$ make cov-html

Using

The API is exposed via the pytwitter.Api class.

Now cover features:

  • Users
    • User lookup

    • Follows

    • Blocks

    • Mutes

  • Tweets
    • Tweet lookup

    • Search Tweets

    • Tweet counts

    • Timelines

    • Filtered stream

    • Sampled stream

    • Likes

    • Retweets

    • Hide replies

  • Spaces
    • Spaces lookup

    • Search Spaces

INSTANTIATE

You can initialize with an bearer token:

>>> from pytwitter import Api
>>> api = Api(bearer_token="Your bearer token")

With user context token:

>>> api = Api(
        consumer_key="consumer key",
        consumer_secret="consumer secret",
        access_token="access token",
        access_secret="access secret"
    )

Or with authorize by user:

>>> api = Api(consumer_key="consumer key",consumer_secret="consumer secret",oauth_flow=True)
# get url for user to authorize
>>> api.get_authorize_url()
# copy the response url
>>> api.generate_access_token("https://localhost/?oauth_token=oauth_token&oauth_verifier=oauth_verifier")
{'oauth_token': 'oauth_token',
 'oauth_token_secret': 'oauth_token_secret',
 'user_id': '123456',
 'screen_name': 'screen name'}

Users-lookup

You can get information about a user or group of users, specified by a user ID or a username.

Get group of users:

# By ids
>>> api.get_users(ids=["783214", "2244994945"])
Response(data=[User(id='2244994945', name='Twitter Dev', username='TwitterDev'), User(id='783214', name='Twitter', username='Twitter')])

# By username
>>> api.get_users(usernames="Twitter,TwitterDev")
Response(data=[User(id='2244994945', name='Twitter Dev', username='TwitterDev'), User(id='783214', name='Twitter', username='Twitter')])

Get single user:

# By id
>>> api.get_user(user_id="783214")
Response(data=User(id='783214', name='Twitter', username='Twitter'))

# By username
>>> api.get_user(username="Twitter")
Response(data=User(id='783214', name='Twitter', username='Twitter'))

Get user following:

>>> api.get_following(user_id="2244994945", max_results=5)
Response(data=[User(id='459860328', name='julie✨', username='JulieMendoza206'), User(id='273830767', name='🄿🅄🅂🄷', username='rahul_pushkarna')...])

Get user followers:

>>> api.get_followers(user_id="2244994945", max_results=5)
Response(data=[User(id='715131097332518912', name='Daniel', username='RGIDaniel'), User(id='1176323137757048832', name='Joyce Wang', username='joycew67')...])

You can follow or unfollow user if you have OAuth 1.0a User context.

follow user:

>>> api.follow_user(user_id="123456", target_user_id="654321")
{'data': {'following': True, 'pending_follow': False}}

unfollow user:

>>> api.unfollow_user(user_id="123456", target_user_id="654321")
{'data': {'following': False}}

Tweets-lookup

You can get information about a tweet or group of tweets by tweet id(s).

Get single tweet:

>>> api.get_tweet("1354143047324299264", expansions=["attachments.media_keys"], media_fields=["type","duration_ms"])
Response(data=Tweet(id=1354143047324299264, text=Academics are one of the biggest groups using...))

Get group of tweets:

>>> api.get_tweets(["1261326399320715264","1278347468690915330"],expansions="author_id",tweet_fields=["created_at"], user_fields=["username","verified"])
Response(data=[Tweet(id=1261326399320715264, text=Tune in to the @MongoDB @Twitch stream...), Tweet(id=1278347468690915330, text=Good news and bad news: 2020 is half over)])

Streaming API

For Streaming, this provide StreamApi independent. Same as main Api, You need initial it first.

>>> from pytwitter import StreamApi
>>> stream_api = StreamApi(bearer_token="bearer token")
# or use consumer key and secret
>>> stream_api = StreamApi(consumer_key="consumer key", consumer_secret="consumer secret")

For Sample Stream tweets, You can use sample_stream function to build a connection.

>>> stream_api.sample_stream()

For Search Stream, You can point your rules.

Get your current rules.

>>> stream_api.get_rules()
Response(data=[StreamRule(id='1369580714056843266', value='twitter api ')])

Delete You rules.

>>> stream_api.manage_rules(rules={"delete": {"ids": ["1369580714056843266"]}})
Response(data=[])

Add new rules. If you set dry_run to True, will only validate rules, and not create them.

>>> np = {
        "add": [
            {"value": "cat has:media", "tag": "cats with media"},
            {"value": "cat has:media -grumpy", "tag": "happy cats with media"}
        ]
     }
>>> stream_api.manage_rules(rules=np, dry_run=True)
Response(data=[StreamRule(id='1370406958721732610', value='cat has:media -grumpy'), StreamRule(id='1370406958721732609', value='cat has:media')])

Then you can use search_stream to get tweets match your rules.

>>> stream_api.search_stream()

You can go to the Example folder for streaming examples.

TODO

  • More Api waiting twitter

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

python-twitter-v2-0.4.2.tar.gz (22.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

python_twitter_v2-0.4.2-py3-none-any.whl (23.8 kB view details)

Uploaded Python 3

File details

Details for the file python-twitter-v2-0.4.2.tar.gz.

File metadata

  • Download URL: python-twitter-v2-0.4.2.tar.gz
  • Upload date:
  • Size: 22.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.8 CPython/3.8.2 Linux/5.8.0-1039-azure

File hashes

Hashes for python-twitter-v2-0.4.2.tar.gz
Algorithm Hash digest
SHA256 3f7af3feb463b9d413ec80cb6837cd9ee1942ce1303f894fdc7e7458666b9475
MD5 64e53e61b7770bef8ed4e6689763b147
BLAKE2b-256 370955fd0334b27887eedbe151aac219db9126327224303cabf9d0a54c7070b6

See more details on using hashes here.

File details

Details for the file python_twitter_v2-0.4.2-py3-none-any.whl.

File metadata

  • Download URL: python_twitter_v2-0.4.2-py3-none-any.whl
  • Upload date:
  • Size: 23.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.8 CPython/3.8.2 Linux/5.8.0-1039-azure

File hashes

Hashes for python_twitter_v2-0.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 0672b49f253691c7eaf59e31c88765658b3112e4ada2717f566d692b1fc7fd3d
MD5 2e09856e58ac0e0b342c227b095e2796
BLAKE2b-256 47d29935c8c800beb6730282d8c9dba42850b3f15ace4696e0db5a046f588606

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page