diff --git a/.release-please-manifest.json b/.release-please-manifest.json index ddfa3e3..8ad7375 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.11.1" + ".": "0.11.2" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 8172ab3..d75574b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## 0.11.2 (2026-08-21) + +Full Changelog: [v0.11.1...v0.11.2](https://github.com/Xquik-dev/x-twitter-scraper-python/compare/v0.11.1...v0.11.2) + +### Documentation + +* remove repeated Python SDK copy and clarify examples + ## 0.11.1 (2026-08-20) Full Changelog: [v0.11.0...v0.11.1](https://github.com/Xquik-dev/x-twitter-scraper-python/compare/v0.11.0...v0.11.1) @@ -151,7 +159,7 @@ Full Changelog: [v0.4.0...v0.4.1](https://github.com/Xquik-dev/x-twitter-scraper ### Documentation -* add Contributor Covenant 2.1 Code of Conduct ([#2192](https://github.com/Xquik-dev/x-twitter-scraper-python/issues/2192)) ([06635a2](https://github.com/Xquik-dev/x-twitter-scraper-python/commit/06635a2a9951934ecca52515211dbcec2714e46f)) +* add Contributor Covenant 2.1 Code of Conduct ([06635a2](https://github.com/Xquik-dev/x-twitter-scraper-python/commit/06635a2a9951934ecca52515211dbcec2714e46f)) ## 0.4.0 (2026-04-22) @@ -248,16 +256,12 @@ Full Changelog: [v0.1.1...v0.1.2](https://github.com/Xquik-dev/x-twitter-scraper ## 0.1.1 (2026-03-30) -Full Changelog: [v0.1.0...v0.1.1](https://github.com/Xquik-dev/x-twitter-scraper-python/compare/v0.1.0...v0.1.1) - ### Chores * update SDK settings ([3ff9848](https://github.com/Xquik-dev/x-twitter-scraper-python/commit/3ff98489454de0a9bcd2378c214e5407a7c04f53)) ## 0.1.0 (2026-03-30) -Full Changelog: [v0.0.1...v0.1.0](https://github.com/Xquik-dev/x-twitter-scraper-python/compare/v0.0.1...v0.1.0) - ### Features * **api:** api update ([3e4e51b](https://github.com/Xquik-dev/x-twitter-scraper-python/commit/3e4e51bfa74558e9d38d3b1aba5ff55785f638d3)) diff --git a/CITATION.cff b/CITATION.cff index 8debd0a..d91757f 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -4,8 +4,8 @@ title: Xquik Python SDK for Twitter Search & X Automation type: software authors: - name: Xquik -version: 0.11.1 -date-released: 2026-08-20 +version: 0.11.2 +date-released: 2026-08-21 url: https://github.com/Xquik-dev/x-twitter-scraper-python repository-code: https://github.com/Xquik-dev/x-twitter-scraper-python license: Apache-2.0 diff --git a/README.md b/README.md index 09d5013..a47bd4b 100644 --- a/README.md +++ b/README.md @@ -6,8 +6,7 @@ [![PyPI version](https://img.shields.io/pypi/v/x_twitter_scraper.svg?label=pypi%20(stable))](https://pypi.org/project/x_twitter_scraper/) Use the Xquik Python SDK for Twitter search, timelines, profiles & followers. -Manage media, webhooks & X automation with sync or async clients. -It provides a Twitter API alternative through documented Xquik REST routes. +Manage media, webhooks & X automation through documented Xquik REST routes. [Python SDK Guide](https://docs.xquik.com/sdks/python) | [API Map](api.md) | [REST API](https://docs.xquik.com/api-reference/overview) | [Webhooks](https://docs.xquik.com/api-reference/webhooks/create) | [MCP Guide](https://docs.xquik.com/mcp/overview) @@ -15,8 +14,6 @@ It provides a Twitter API alternative through documented Xquik REST routes. ## Common Twitter & X Tasks -Map each task to its REST route. - | Task | REST Route | Usage | | --- | --- | --- | | Search tweets without the X API | `GET /x/tweets/search` | Use keyword or advanced operator queries. | @@ -25,6 +22,7 @@ Map each task to its REST route. | Scrape following accounts | `GET /x/users/{id}/following` | Use an extraction for complete datasets. | | Read a home timeline | `GET /x/timeline` | Approve this private read. | | Export large X datasets | `POST /extractions` | Poll status, then download results. | +| Run giveaway draws | `POST /draws` | Pick winners from post replies. | | Download or upload media | `/x/media/*` | Use typed file helpers. | | Monitor an account | `POST /monitors` | Deliver events through HMAC webhooks. | | Post or reply | `POST /x/tweets` | Confirm the account and payload. | @@ -34,10 +32,6 @@ Map each task to its REST route. Use the typed REST SDK in application code. Add `https://xquik.com/mcp` to MCP clients. Follow the [MCP guide](https://docs.xquik.com/mcp/overview) for current authentication support. -## Giveaway Draws & Extractions - -Run giveaway draws and export extraction results from Python pipelines. - ## Package & Registry Trust - Package: [PyPI `x_twitter_scraper`](https://pypi.org/project/x_twitter_scraper/) @@ -49,7 +43,6 @@ Run giveaway draws and export extraction results from Python pipelines. ## Installation ```sh -# Install from PyPI. pip install x_twitter_scraper ``` @@ -62,7 +55,7 @@ import os from x_twitter_scraper import XTwitterScraper client = XTwitterScraper( - api_key=os.environ.get("X_TWITTER_SCRAPER_API_KEY"), # This is the default and can be omitted + api_key=os.environ.get("X_TWITTER_SCRAPER_API_KEY"), # Optional; the client reads this variable. ) response = client.x.tweets.search( @@ -84,7 +77,7 @@ import asyncio from x_twitter_scraper import AsyncXTwitterScraper client = AsyncXTwitterScraper( - api_key=os.environ.get("X_TWITTER_SCRAPER_API_KEY"), # This is the default and can be omitted + api_key=os.environ.get("X_TWITTER_SCRAPER_API_KEY"), # Optional; the client reads this variable. ) @@ -105,7 +98,6 @@ Both clients expose the same resources and methods. The async client uses `httpx`. Install `aiohttp` for an alternative backend: ```sh -# Install from PyPI. pip install x_twitter_scraper[aiohttp] ``` @@ -120,7 +112,7 @@ from x_twitter_scraper import AsyncXTwitterScraper async def main() -> None: async with AsyncXTwitterScraper( - api_key=os.environ.get("X_TWITTER_SCRAPER_API_KEY"), # This is the default and can be omitted + api_key=os.environ.get("X_TWITTER_SCRAPER_API_KEY"), # Optional; the client reads this variable. http_client=DefaultAioHttpClient(), ) as client: response = await client.x.tweets.search( @@ -140,7 +132,6 @@ Responses use [Pydantic models](https://docs.pydantic.dev) with these helpers: - Serialize to JSON with `model.to_json()`. - Convert to a dictionary with `model.to_dict()`. -Typed requests and responses provide editor completion and documentation. Set `python.analysis.typeCheckingMode` to `basic` in VS Code to catch type errors. ## File Uploads @@ -184,7 +175,7 @@ except x_twitter_scraper.APIConnectionError as e: except x_twitter_scraper.RateLimitError as e: print("Rate limited. Retry later.") except x_twitter_scraper.APIStatusError as e: - print("The server returned another non-2xx status.") + print("Server returned a non-2xx status.") print(e.status_code) print(e.response) ``` @@ -214,7 +205,6 @@ from x_twitter_scraper import XTwitterScraper # Set the client default: client = XTwitterScraper( - # default is 2 max_retries=0, ) @@ -235,7 +225,7 @@ from x_twitter_scraper import XTwitterScraper # Set the client default: client = XTwitterScraper( - # 20 seconds (default is 1 minute) + # 20 seconds; default: 1 minute. timeout=20.0, ) diff --git a/pyproject.toml b/pyproject.toml index ee20c01..0f9f719 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "x_twitter_scraper" -version = "0.11.1" +version = "0.11.2" description = "Python SDK for Twitter search, followers, webhooks & X automation through Xquik. Not affiliated with X Corp." dynamic = ["readme"] license = "Apache-2.0" diff --git a/src/x_twitter_scraper/_version.py b/src/x_twitter_scraper/_version.py index 60e32b1..3c69e3a 100644 --- a/src/x_twitter_scraper/_version.py +++ b/src/x_twitter_scraper/_version.py @@ -5,4 +5,4 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. __title__ = "x_twitter_scraper" -__version__ = "0.11.1" # x-release-please-version +__version__ = "0.11.2" # x-release-please-version diff --git a/uv.lock b/uv.lock index f48a4a3..1163e9f 100644 --- a/uv.lock +++ b/uv.lock @@ -16,7 +16,7 @@ conflicts = [[ ]] [options] -exclude-newer = "2026-08-13T17:17:08.126448Z" +exclude-newer = "2026-08-14T02:42:38.050017Z" exclude-newer-span = "P7D" [[package]] @@ -1654,7 +1654,7 @@ wheels = [ [[package]] name = "x-twitter-scraper" -version = "0.11.1" +version = "0.11.2" source = { editable = "." } dependencies = [ { name = "anyio" },