initial commit

This commit is contained in:
fzzinchemical
2025-11-13 12:56:07 +01:00
commit a37061a660
3 changed files with 56 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
.env
.venv/

48
main.py Normal file
View File

@@ -0,0 +1,48 @@
import os
import logging
from dotenv import load_dotenv
from twscrape import API, gather, set_log_level
# Configuration
load_dotenv()
OUTPUT_FILE = os.getenv("OUTPUT_FILE", "tweets.json")
SLEEP_MIN = 5
SLEEP_MAX = 10
LOG_LEVEL = os.getenv("LOG_LEVEL", "INFO").upper()
logging.basicConfig(level=LOG_LEVEL, format="%(asctime)s %(levelname)s %(message)s")
logger = logging.getLogger(__name__)
COOKIES = {}
async def main():
api = API() # or API("path-to.db") default is `accounts.db`
# ADD ACCOUNTS (for CLI usage see next readme section)
# Option 1. Adding account with cookies (more stable)
load_dotenv()
cookies = os.getenv("COOKIES")
await api.pool.add_account("user3", "pass3", "u3@mail.com", "mail_pass3", cookies=cookies)
await api.pool.login_all() # try to login to receive account cookies
# NOTE 2: all methods have `raw` version (returns `httpx.Response` object):
async for rep in api.search_raw("elon musk"):
print(rep.status_code, rep.json()) # rep is `httpx.Response` object
# change log level, default info
set_log_level("DEBUG")
# Tweet & User model can be converted to regular dict or json, e.g.:
doc = await api.user_by_id(user_id) # User
doc.dict() # -> python dict
doc.json() # -> json string
if __name__ == "__main__":
asyncio.run(main())
if __name__ == "__main__":
main()

6
requirements.txt Normal file
View File

@@ -0,0 +1,6 @@
requests
python-dotenv
bs4
httpx
asyncio
twscrape