import asyncio
from asyncio import Queue
import threading
from xdk import Client
async def stream_posts_async(client: Client):
queue = Queue()
loop = asyncio.get_event_loop()
stop = threading.Event()
def run_stream():
for post in client.stream.posts():
if stop.is_set():
break
asyncio.run_coroutine_threadsafe(queue.put(post), loop)
asyncio.run_coroutine_threadsafe(queue.put(None), loop)
threading.Thread(target=run_stream, daemon=True).start()
while True:
post = await queue.get()
if post is None:
break
data = post.model_dump()
if 'data' in data and data['data']:
print(f"Post: {data['data'].get('text', '')}")
stop.set()
async def main():
client = Client(bearer_token="your_bearer_token")
await stream_posts_async(client)
asyncio.run(main())