A Python library for syncing and managing Pinboard bookmarks
Project description
pinboard-tools
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 fieldsTag- Tag entity with normalizationBookmarkTag- Many-to-many relationshipSyncStatus- Track sync state
Sync Engine
PinboardAPI- API client with rate limitingBidirectionalSync- Full sync with conflict resolution
Tag Analysis
TagSimilarityDetector- Find similar tagsTagConsolidator- 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.0.tar.gz
(67.3 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pinboard_tools-0.1.0.tar.gz.
File metadata
- Download URL: pinboard_tools-0.1.0.tar.gz
- Upload date:
- Size: 67.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6b8c1aa53d482f188cda3d5a36be0c6cb5c89cf33e9587fb404217c3ff069cee
|
|
| MD5 |
3796a1216942cbcb99579279c2f9cd78
|
|
| BLAKE2b-256 |
c8c40238f7bc19c8c03bc7274594321176d05665c753e3f191c9f577a35918af
|
File details
Details for the file pinboard_tools-0.1.0-py3-none-any.whl.
File metadata
- Download URL: pinboard_tools-0.1.0-py3-none-any.whl
- Upload date:
- Size: 25.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0bebf6027c227473e288aae45441da5de74f0fd79ce405de473a9b1bd56c8d8d
|
|
| MD5 |
dc9e2b6c1d741372d75f3588b87185a5
|
|
| BLAKE2b-256 |
80dab903d699b276ff82b430a061efc692c49b34a5d6eff5231ea7f6e282d94e
|