Skip to main content

A Python library for syncing and managing Pinboard bookmarks

Project description

pinboard-tools

PyPI version Python versions License

A Python library for syncing and managing Pinboard bookmarks.

Features

  • Bidirectional sync with Pinboard.in API
  • SQLite database for local bookmark storage
  • Tag analysis and similarity detection
  • Conflict resolution for sync operations
  • Rate limiting to respect API limits
  • Chunking utilities for LLM processing

Installation

pip install pinboard-tools

Quick Start

from pinboard_tools import (
    init_database,
    get_session,
    PinboardAPI,
    BidirectionalSync,
)

# Initialize database
init_database("bookmarks.db")

# Set up API client
api = PinboardAPI(api_token="your-pinboard-api-token")

# Create sync engine
with get_session() as session:
    sync = BidirectionalSync(session, api)
    
    # Perform full sync
    stats = sync.sync()
    print(f"Added: {stats['added']}, Updated: {stats['updated']}")

Core Components

Database Models

  • Bookmark - Bookmark entity with all Pinboard fields
  • Tag - Tag entity with normalization
  • BookmarkTag - Many-to-many relationship
  • SyncStatus - Track sync state

Sync Engine

  • PinboardAPI - API client with rate limiting
  • BidirectionalSync - Full sync with conflict resolution

Tag Analysis

  • TagSimilarityDetector - Find similar tags
  • TagConsolidator - Merge duplicate tags

Utilities

  • chunk_bookmarks_for_llm - Prepare data for LLM processing
  • DateTime helpers for Pinboard format

Database Schema

The library uses a normalized SQLite schema:

-- See schema.sql for complete structure
bookmarks (url, title, description, tags, time, ...)
tags (name, normalized_name)
bookmark_tags (bookmark_id, tag_id)
sync_status (last_sync, last_update)

API Reference

Initialization

# Initialize database with schema
init_database(db_path: str)

# Get database session
with get_session() as session:
    # Use session for queries

Syncing

# Create API client
api = PinboardAPI(api_token="your-token")

# Sync bookmarks
sync = BidirectionalSync(session, api)
stats = sync.sync(full_sync=False)

Tag Analysis

# Find similar tags
detector = TagSimilarityDetector(session)
similar_groups = detector.find_similar_tags(threshold=0.8)

# Consolidate tags
consolidator = TagConsolidator(session)
consolidator.consolidate_tags(old_tag="python3", new_tag="python")

License

Apache License 2.0 - see LICENSE file for details

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

pinboard_tools-0.1.3.tar.gz (67.2 kB view details)

Uploaded Source

Built Distribution

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

pinboard_tools-0.1.3-py3-none-any.whl (25.3 kB view details)

Uploaded Python 3

File details

Details for the file pinboard_tools-0.1.3.tar.gz.

File metadata

  • Download URL: pinboard_tools-0.1.3.tar.gz
  • Upload date:
  • Size: 67.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for pinboard_tools-0.1.3.tar.gz
Algorithm Hash digest
SHA256 ce81ae0a1593806a9270b684a2a523ee372efbb3ec66dbb9f1f033606fde9035
MD5 8daa930db1d27d156cb26b4cd9d3bfe9
BLAKE2b-256 ce33df53b1454e584b30cae7fb6b5f6eb434fb75d0affa9b8fa21484cd2b965c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pinboard_tools-0.1.3.tar.gz:

Publisher: publish.yml on kevinmcmahon/pinboard-tools

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pinboard_tools-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: pinboard_tools-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 25.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for pinboard_tools-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 7d56895bb7eb8d03f4f187becdcba41a8cabbe7fe7be9c29f4baed2d30a3b3a6
MD5 965662b33cbc8de92006f2486d2b7415
BLAKE2b-256 2c3b5ca82c4d87887f70cd9f9e27cf675e0b5be59750199f4d4ad4704e351c99

See more details on using hashes here.

Provenance

The following attestation bundles were made for pinboard_tools-0.1.3-py3-none-any.whl:

Publisher: publish.yml on kevinmcmahon/pinboard-tools

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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