You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The library was working fine and suddenly it stopped working.
I attached the example code for a reproducible result,
all i do is get replies from a tweet, when testing i was adhering and going under to rate limits. the account is fine and not locked or suspended
Bug:
Main issue : await client.get_tweet_by_id("tweet_id")
Traceback (most recent call last):
File "/Users/random/Dev/Projects/python/twt-py/./replies.py", line 315, in <module>
asyncio.run(main())
File "/Users/random/miniconda3/envs/twt-env/lib/python3.11/asyncio/runners.py", line 190, in run
return runner.run(main)
^^^^^^^^^^^^^^^^
File "/Users/random/miniconda3/envs/twt-env/lib/python3.11/asyncio/runners.py", line 118, in run
return self._loop.run_until_complete(task)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/random/miniconda3/envs/twt-env/lib/python3.11/asyncio/base_events.py", line 654, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "/Users/random/Dev/Projects/python/twt-py/./replies.py", line 311, in main
await get_replies("1902389256498094446", websocket_url)
File "/Users/random/Dev/Projects/python/twt-py/./replies.py", line 151, in get_replies
tweet = await client.get_tweet_by_id("1902389256498094446")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/random/miniconda3/envs/twt-env/lib/python3.11/site-packages/twikit/client/client.py", line 1635, in get_tweet_by_id
reply_next_cursor = entries[-1]['content']['itemContent']['value']
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^
KeyError: 'itemContent'
example code :
import asyncio
import os
from datetime import datetime
from dotenv import load_dotenv
from twikit import Client
load_dotenv()
client = Client("en-US")
async def get_replies(
tweet_id: str,
):
"""
Fetch all replies for a given tweet ID with rate limiting
Args:
tweet_id: The Twitter tweet ID to fetch replies for
"""
# Fetch the tweet
tweet = await client.get_tweet_by_id(tweet_id)
total_replies = tweet.reply_count
print(f"Total replies to fetch: {total_replies}")
all_replies = []
current_replies = tweet.replies
while len(all_replies) < total_replies:
replies_in_batch = 0
for reply in current_replies:
scraped_at = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
reply_data = {
"parent_id": tweet_id,
"reply_id": reply.id,
"username": reply.user.screen_name,
"text": reply.text,
"created_at": reply.created_at,
"scraped_at": scraped_at,
}
all_replies.append(reply_data)
replies_in_batch += 1
print(all_replies)
if len(all_replies) >= total_replies:
break
if not hasattr(current_replies, "next") or len(all_replies) >= total_replies:
print("Reached the end of available replies or rate limit.")
break
try:
current_replies = await current_replies.next()
except Exception as e:
print(f"Error fetching next batch: {e}")
break
print(f"Completed fetching {len(all_replies)} replies")
async def main():
username = os.getenv("TWITTER_USERNAME", "")
email = os.getenv("TWITTER_EMAIL", "")
password = os.getenv("TWITTER_PASSWORD", "")
cookies_file = os.getenv("TWITTER_COOKIES_FILE", "cookies.json")
await client.login(
auth_info_1=username,
auth_info_2=email,
password=password,
cookies_file=cookies_file,
)
client.save_cookies(cookies_file)
await get_replies("1902389676964479023")
if __name__ == "__main__":
asyncio.run(main())
The text was updated successfully, but these errors were encountered:
The library was working fine and suddenly it stopped working.
I attached the example code for a reproducible result,
all i do is get replies from a tweet, when testing i was adhering and going under to rate limits. the account is fine and not locked or suspended
Bug:
Main issue :
await client.get_tweet_by_id("tweet_id")
example code :
The text was updated successfully, but these errors were encountered: