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
uv run black src tests
uv run isort src tests
uv run flake8 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.1.5.tar.gz (13.4 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.1.5-py3-none-any.whl (12.5 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for readeck-0.1.5.tar.gz
Algorithm Hash digest
SHA256 7c5d6213958759ef8a64e3f516bc573c270d9f7137c8d6586d6ec77c96004150
MD5 535d39a28bf6e792fe2a4153dbc153c1
BLAKE2b-256 57dedc73581e88728548dc6d8065bab5ee0772926fa25361536a6f21e53d2bb9

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for readeck-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 d5674e6ada195394dfac8635fd40411734c852055d9c635b88039840c05e89fc
MD5 63a9235b07b35732ad71b342881da8ef
BLAKE2b-256 39993f9ec141f026bd7a0fdf71408252175ff8e9be2f9657b520f2b369464f2d

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