File: README.md
[!NOTE]
https://github.com/d60/twitter_login (under development)
Twikit
A Simple Twitter API Scraper
You can use functions such as posting or searching for tweets without an API key using this library.
π΅ Discord
[!NOTE]
Released twikit_grok an extension for using Grok AI with Twikit.
For more details, visit: https://github.com/d60/twikit_grok.
Features
No API Key Required
This library uses scraping and does not require an API key.
Free
This library is free to use.
Functionality
By using Twikit, you can access functionalities such as the following:
Create tweets
Search tweets
Retrieve trending topics
etc...
Installing
pip install twikitQuick Example
Define a client and log in to the account.
import asyncio
from twikit import Client
USERNAME = 'example_user'
EMAIL = '[email protected]'
PASSWORD = 'password0000'
# Initialize client
client = Client('en-US')
async def main():
await client.login(
auth_info_1=USERNAME,
auth_info_2=EMAIL,
password=PASSWORD,
cookies_file='cookies.json'
)
asyncio.run(main())Create a tweet with media attached.
# Upload media files and obtain media_ids
media_ids = [
await client.upload_media('media1.jpg'),
await client.upload_media('media2.jpg')
]
# Create a tweet with the provided text and attached media
await client.create_tweet(
text='Example Tweet',
media_ids=media_ids
)Search the latest tweets based on a keyword
tweets = await client.search_tweet('python', 'Latest')
for tweet in tweets:
print(
tweet.user.name,
tweet.text,
tweet.created_at
)Retrieve user tweets
tweets = await client.get_user_tweets('123456', 'Tweets')
for tweet in tweets:
print(tweet.text)Send a dm
await client.send_dm('123456789', 'Hello')Get trends
await client.get_trends('trending')More Examples: examples
Contributing
If you encounter any bugs or issues, please report them on issues.
If you find this library useful, consider starring this repositoryβοΈ
File: docs/index.rst
Welcome to twikit's documentation!
.. toctree::
:maxdepth: 1
:caption: Contents:
twikit
Indices and tables
- :ref:
genindex - :ref:
modindex - :ref:
search
File: docs/twikit.rst
twikit package
.. automodule:: twikit
:members:
:undoc-members:
Client
.. autoclass:: twikit.client.client.Client
:members:
:undoc-members:
:member-order: bysource
Tweet
.. automodule:: twikit.tweet
:members:
:exclude-members: TweetTombstone
:member-order: bysource
User
.. automodule:: twikit.user
:members:
:undoc-members:
:member-order: bysource
Message
.. automodule:: twikit.message
:members:
:undoc-members:
:member-order: bysource
Streaming
With the streaming API, you can receive real-time events such as tweet engagements,
DM updates, and DM typings. The basic procedure involves looping through the
stream session obtained with :attr:.Client.get_streaming_session and, if necessary,
updating the topics to be streamed using :attr:.StreamingSession.update_subscriptions.
Example Code:
.. code-block:: python
from twikit.streaming import Topic
topics = {
Topic.tweet_engagement('1739617652'), # Stream tweet engagement
Topic.dm_update('17544932482-174455537996'), # Stream DM update
Topic.dm_typing('17544932482-174455537996') # Stream DM typing
}
session = client.get_streaming_session(topics)
for topic, payload in session:
if payload.dm_update:
conversation_id = payload.dm_update.conversation_id
user_id = payload.dm_update.user_id
print(f'{conversation_id}: {user_id} sent a message')
if payload.dm_typing:
conversation_id = payload.dm_typing.conversation_id
user_id = payload.dm_typing.user_id
print(f'{conversation_id}: {user_id} is typing')
if payload.tweet_engagement:
like = payload.tweet_engagement.like_count
retweet = payload.tweet_engagement.retweet_count
view = payload.tweet_engagement.view_count
print(f'Tweet engagement updated likes: {like} retweets: {retweet} views: {view}').. automodule:: twikit.streaming
:members:
:undoc-members:
:member-order: bysource
Media
.. autoclass:: twikit.media.Media
:undoc-members:
:member-order: bysource
.. autoclass:: twikit.media.Photo
:show-inheritance:
:undoc-members:
:member-order: bysource
.. autoclass:: twikit.media.Video
:show-inheritance:
:undoc-members:
:member-order: bysource
:members: get_subtitles
.. autoclass:: twikit.media.AnimatedGif
:show-inheritance:
:undoc-members:
:member-order: bysource
.. autoclass:: twikit.media.Stream
:undoc-members:
:member-order: bysource
:members: get, download
Trend
.. automodule:: twikit.trend
:members:
:undoc-members:
:member-order: bysource
List
.. autoclass:: twikit.list.List
:members:
:undoc-members:
:member-order: bysource
Community
.. automodule:: twikit.community
:members:
:undoc-members:
:member-order: bysource
Notification
.. autoclass:: twikit.notification.Notification
:members:
:undoc-members:
:member-order: bysource
Geo
.. autoclass:: twikit.geo.Place
:members:
:undoc-members:
:member-order: bysource
Capsolver
.. autoclass:: twikit._captcha.capsolver.Capsolver
:members:
:undoc-members:
:member-order: bysource
:exclude-members: create_task,get_task_result,solve_funcaptcha
Utils
.. autoclass:: twikit.utils.Result
:members:
:undoc-members:
:member-order: bysource
Errors
.. automodule:: twikit.errors
:members:
:undoc-members:
:member-order: bysource