Releases: Altimis/Scweet
Releases · Altimis/Scweet
Scweet v5.0
v5.0
Simplified API — cleaner constructor and method names:
Scweet(cookies_file=...)/Scweet(auth_token=...)/Scweet(cookies=...)replacesScweet.from_sources(...)search()replacesscrape(words=[...])get_profile_tweets()replaces timeline via scrape kwargsget_user_info()replacesget_user_information()
Simplified config — flat ScweetConfig(concurrency=3, proxy=...) replaces nested ScweetConfig.from_sources(overrides={"pool": {"concurrency": ...}})
Other changes:
- Auto-refresh GraphQL query IDs from X on startup (
manifest_scrape_on_init=True) - Flat package structure (no more
v4/sub-package) save_nameparameter for custom output file names- X-Client-Transaction-Id header support (now required by X)
- Updated GraphQL response parsing for X's latest response format
- Removed legacy code paths (
legacy_csvresume,scweet.pycompat layer,accounts.txtformat) - Rewrote README and DOCUMENTATION.md
- 153 unit tests
pip install -U ScweetScweet 4.0.0
Scweet v4 is a major rewrite focused on a cleaner surface and a more reliable core. Tweet search scraping is now API-only (Twitter/X web GraphQL), and Scweet manages local state (accounts, leases/cooldowns, resume checkpoints, manifest cache) in a SQLite DB.
Highlights
- API-only tweet search scraping (GraphQL SearchTimeline) using
curl_cffi(sync + async). - DB-first account provisioning into SQLite from:
accounts.txtcookies.jsonand browser-exported Netscapecookies.txt.envviaenv_pathcookies=payload (cookie dict/list, Cookie header string, auth_token string, JSON string, or file path)
- Unified config via
ScweetConfig+Scweet.from_sources(...)(withoverrides=...for quick patches). - Account leasing + limits:
- Per-account proxy support (stored in DB; set via files or
ScweetDB) - Daily request/tweet caps + min delay between requests
bootstrap_strategyfor token vs nodriver cookie bootstrap (auto|token_only|nodriver_only|none)
- Per-account proxy support (stored in DB; set via files or
- Output + resume
- Output formats:
csv|json|both|none - Resume modes:
legacy_csv,db_cursor,hybrid_safe - Optional resume dedupe:
output.dedupe_on_resume_by_tweet_id
- Output formats:
- Manifest support
- Default manifest shipped with the package
- Optional remote refresh on init (
update_manifest=True)
- Maintenance helpers
ScweetDBhelpers (inspect accounts, reset cooldowns/leases, set per-account proxy, opt-in duplicate collapse by auth_token)
Breaking changes (vs v3)
scrape()/ascrape()now returnslist[dict]of raw GraphQL tweet objects (full fidelity).- CSV output is now a curated, stable “important fields” schema derived from GraphQL.
- Use JSON output (or the returned list) if you need every field.
v3 Compatibility (v4.x)
- Legacy import still works:
from Scweet.scweet import Scweet(deprecated; planned removal in v5.0). - Legacy constructor args and
scrape/ascrapesignatures preserved. - Legacy CSV naming and legacy resume semantics preserved when using the legacy facade.
Removed / Cleanups
- Old browser scraping engine codepaths.
nodriverremains only for internal login/cookie bootstrap. - Removed
requestsfallback for API HTTP (v4 usescurl_cffi).
Known limitations
- Profile/followers/following endpoints are stubbed or incomplete in v4.x.
- Twitter/X behavior can change at any time; account quality and request patterns impact reliability.
Recommended
- For production runs + scaling: use the hosted Apify Actor (free plan/trial available): https://apify.com/altimis/scweet?fpr=a40q9&fp_sid=jeb97
- Library docs: see
DOCUMENTATION.md
3.0
v1.8
1.6
1.5
1.4
1.2
1.1
v0.3.1
new version