import asyncio
import aiohttp
import aio4chan
loop = asyncio.get_event_loop()
session = aiohttp.ClientSession(loop= loop)
client = aio4chan.Client(session= session, loop= loop)
asyncdefexecute():
""" Traverse 4chan."""
boards =await client.get_boards()
# short names
board_ids = (board.board for board in boards)
for board_id in board_ids:
pages =await client.get_threads(board_id)
# list of pages, each containing threads
thread_ids = (thread.no for page in pages for thread in page.threads)
for thread_id in thread_ids:
# need both board_id and thread_id
thread =await client.get_thread(board_id, thread_id)
for post in thread:
try:
# might not exist
comment = post.com
exceptAttributeError:
continue# print where we got it, and the commentprint(board_id, '>', thread_id, '>', post.no, '\n', post.com)
try:
loop.run_until_complete(execute())
exceptKeyboardInterrupt:
passfinally:
loop.run_until_complete(session.close())
loop.close()
The Tidelift Subscription provides access to a continuously curated stream of human-researched and maintainer-verified data on open source packages and their licenses, releases, vulnerabilities, and development practices.