Readeck Python Client
A Python client library for the Readeck API, providing easy access to Readeck's bookmark and reading features.
Features
- Full async/await support
- Type hints with Pydantic models
- Comprehensive error handling
- Support for Python 3.10+
- Easy authentication with Bearer tokens
Installation
pip install readeck
Quick Start
import asyncio
from readeck import ReadeckClient
async def main():
client = ReadeckClient(
base_url="https://your-readeck-instance.com",
token="your-bearer-token"
)
# Get user profile
profile = await client.get_user_profile()
print(f"Welcome, {profile.user.username}!")
# Create a bookmark
result = await client.create_bookmark(
url="https://example.com/article",
title="Interesting Article",
labels=["reading", "tech"]
)
print(f"Bookmark created with ID: {result.bookmark_id}")
await client.close()
if __name__ == "__main__":
asyncio.run(main())
Authentication
The client uses Bearer token authentication. You can obtain your token from your Readeck instance's settings.
client = ReadeckClient(
base_url="https://your-readeck-instance.com",
token="your-bearer-token"
)
API Reference
User Profile
Get the current user's profile information:
profile = await client.get_user_profile()
Returns a UserProfile object containing:
- User information (username, email, creation date)
- Authentication provider details
- User settings and preferences
- Reader settings (font, font size, line height)
Bookmarks
Create Bookmark
Create a new bookmark:
# Minimal bookmark
result = await client.create_bookmark(url="https://example.com")
# Bookmark with title
result = await client.create_bookmark(
url="https://example.com/article",
title="Article Title"
)
# Bookmark with labels
result = await client.create_bookmark(
url="https://example.com/tutorial",
labels=["tutorial", "programming"]
)
# Complete bookmark
result = await client.create_bookmark(
url="https://example.com/complete",
title="Complete Example",
labels=["example", "complete", "demo"]
)
The create_bookmark method returns a BookmarkCreateResult object containing:
response: The API response with message and statusbookmark_id: The ID of the created bookmark (from response headers)location: The URL of the created resource (from response headers)
Get Bookmarks
Retrieve bookmarks with optional filtering:
# Get all bookmarks
bookmarks = await client.get_bookmarks()
# Get bookmarks with parameters
from readeck import BookmarkListParams
params = BookmarkListParams(
limit=10,
search="python",
labels="programming"
)
bookmarks = await client.get_bookmarks(params)
Export Bookmarks
Export bookmarks in different formats:
bookmark_id = "some_bookmark_id"
# Export as markdown (default format)
markdown_content = await client.export_bookmark(bookmark_id)
# Export as markdown explicitly
markdown_content = await client.export_bookmark(bookmark_id, format="md")
# Export as EPUB
epub_content = await client.export_bookmark(bookmark_id, format="epub")
# Save to files
with open("article.md", "w", encoding="utf-8") as f:
f.write(markdown_content)
with open("article.epub", "wb") as f:
f.write(epub_content)
Supported export formats:
md(markdown) - Returns a string with the article content as markdownepub- Returns bytes containing the EPUB file data
Development
This project uses uv for dependency management:
# Install dependencies
uv sync --dev
# Run tests
uv run pytest
# Run linting and formatting
uv run ruff check src tests --fix
uv run ruff format src tests
uv run mypy src
# Run all checks
uv run pre-commit run --all-files
License
MIT License. See LICENSE for details.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Metadata
Release files for readeck 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| readeck-0.3.0.tar.gz | 16.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| readeck-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 32.6 kB
Release files / readeck-0.3.0.tar.gz
| Download URL | readeck-0.3.0.tar.gz |
|---|---|
| Size | 16.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
cbc7fa0985a1afb7912f2f0547a03b07badf72595c421f224cf0621b2a7651c9
|
|
BLAKE2b-256 checksum How to use checksums |
c8eb15077d2a601ed25d8ef7013666e316cf220e5b4a8457b940f0fb0139d820
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / readeck-0.3.0-py3-none-any.whl
| Download URL | readeck-0.3.0-py3-none-any.whl |
|---|---|
| Size | 16.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c01b6972143d3ebe9c7ec5ff25bec49babbe97d0db015aeb28d0db2857c74cd2
|
|
BLAKE2b-256 checksum How to use checksums |
446304a5ffc5ccb5e23f5c1f53c11df537f4fac5d82253e52bb7c223e607d2dc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|