Skip to main content

Python client library for Readeck APIs

Project description

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 status
  • bookmark_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 markdown
  • epub - 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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

readeck-0.2.0.tar.gz (13.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

readeck-0.2.0-py3-none-any.whl (12.4 kB view details)

Uploaded Python 3

File details

Details for the file readeck-0.2.0.tar.gz.

File metadata

  • Download URL: readeck-0.2.0.tar.gz
  • Upload date:
  • Size: 13.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for readeck-0.2.0.tar.gz
Algorithm Hash digest
SHA256 8620c6e7bc4c28d2f8e91dec54c533cd89677b36bb090d298819aa3f0b0106f8
MD5 45957ff188aec355f3ac86424bd07e30
BLAKE2b-256 357f5208d250bf754500e65e3ceca20622b9b88ea1f454b12a36fa087d987782

See more details on using hashes here.

File details

Details for the file readeck-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: readeck-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 12.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for readeck-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7d69822eea8f79f1afdd85f06c1419dd7a63a6a0c8e26209ed8badcb97fb73a7
MD5 8804d004130d40d902abfbe0dad105bc
BLAKE2b-256 7ff08a6930ea1982838f38292b4e00dcf7a2d03331c7f1df62880a4c0ba33c83

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page