# Sebsync
The `sebsync` script synchronizes the [Standard Ebooks](https://standardebooks.org/) catalog with
your local EPUB collection.
## How it works
The script reads the Standard Ebooks [OPDS feed](https://standardebooks.org/feeds) and
reconciles the ebooks in their catalog against the EPUBs in your local filesystem,
downloading new ones or updating existing ones as necessary.
If a new ebook is detected in the catalog, then it will be downloaded into your downloads
directory. If an updated version of a book is detected in the catalog that is already in your
local filesystem, then the updated version will be downloaded and stored in the existing local
file.
The script can also display and/or remove outdated and/or deprecated ebooks. A local ebook file
is “deprecated” if its identifier has been replaced by a new identifier in the Standard Ebooks
catalog. This occurs when a book is renamed or substantially revised. Its replacement will be
downloaded as a new ebook.
## Requirements
This script uses Standard Ebooks' OPDS feed to access metadata on all books their catalog. In
order to do so, you need to be a member of the Standard Ebooks
[Patrons Circle](https://standardebooks.org/donate#patrons-circle) (or have previously produced
an ebook for Standard Ebooks). If you're not already a Standard Ebooks patron, please consider
becoming one. It's a tremendously valuable project, deserving of your support.
## Installation
It is easy to install sebsync using [uv](https://docs.astral.sh/uv/) or [pipx](https://pipx.pypa.io/stable/):
```
uv tool install sebsync
```
or
```
pipx install sebsync
```
## Example usage
```
sebsync --email addr@example.com --books /home/user/MyBooks --downloads /home/user/MyBooks/Downloads
```
## Questions and answers
Q1. *Why use a separate downloads directory for new ebooks?*
A1. This is a feature for those who want to easily recognize new ebooks, and to manually
rename and/or categorize them within their library. If this feature is not useful for you,
simply set `--downloads` to be the same directory as `--books`.
Q2. *Does this script support Kindle books?*
A2. Not presently. A cursory analysis of the Standard Ebooks AZW3 structure suggests that there
currently isn't a reliable method to reconcile Kindle ebooks with the OPDS feed catalog. If
this feature is important to you, please let us know by voting for
[this issue](https://github.com/pbryan/sebsync/issues/2) in GitHub.
Raw data
{
"_id": null,
"home_page": null,
"name": "sebsync",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "book, download, ebook, standard, sync, synchronization",
"author": "Sebsync authors",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/c9/c8/4cbcbae917ec2d4b30393e299b07fcaad15ff3c27ccff5641e0b819e12a5/sebsync-1.0.10.tar.gz",
"platform": null,
"description": "# Sebsync\n\nThe `sebsync` script synchronizes the [Standard Ebooks](https://standardebooks.org/) catalog with\nyour local EPUB collection.\n\n## How it works\n\nThe script reads the Standard Ebooks [OPDS feed](https://standardebooks.org/feeds) and\nreconciles the ebooks in their catalog against the EPUBs in your local filesystem,\ndownloading new ones or updating existing ones as necessary.\n\nIf a new ebook is detected in the catalog, then it will be downloaded into your downloads\ndirectory. If an updated version of a book is detected in the catalog that is already in your\nlocal filesystem, then the updated version will be downloaded and stored in the existing local\nfile.\n\nThe script can also display and/or remove outdated and/or deprecated ebooks. A local ebook file\nis \u201cdeprecated\u201d if its identifier has been replaced by a new identifier in the Standard Ebooks\ncatalog. This occurs when a book is renamed or substantially revised. Its replacement will be\ndownloaded as a new ebook.\n\n## Requirements\n\nThis script uses Standard Ebooks' OPDS feed to access metadata on all books their catalog. In\norder to do so, you need to be a member of the Standard Ebooks\n[Patrons Circle](https://standardebooks.org/donate#patrons-circle) (or have previously produced\nan ebook for Standard Ebooks). If you're not already a Standard Ebooks patron, please consider\nbecoming one. It's a tremendously valuable project, deserving of your support.\n\n## Installation\n\nIt is easy to install sebsync using [uv](https://docs.astral.sh/uv/) or [pipx](https://pipx.pypa.io/stable/):\n\n```\nuv tool install sebsync\n```\nor\n```\npipx install sebsync\n```\n\n## Example usage\n\n```\nsebsync --email addr@example.com --books /home/user/MyBooks --downloads /home/user/MyBooks/Downloads\n```\n\n## Questions and answers\n\nQ1. *Why use a separate downloads directory for new ebooks?*\n\nA1. This is a feature for those who want to easily recognize new ebooks, and to manually\nrename and/or categorize them within their library. If this feature is not useful for you,\nsimply set `--downloads` to be the same directory as `--books`.\n\nQ2. *Does this script support Kindle books?*\n\nA2. Not presently. A cursory analysis of the Standard Ebooks AZW3 structure suggests that there\ncurrently isn't a reliable method to reconcile Kindle ebooks with the OPDS feed catalog. If\nthis feature is important to you, please let us know by voting for\n[this issue](https://github.com/pbryan/sebsync/issues/2) in GitHub.\n",
"bugtrack_url": null,
"license": null,
"summary": "Synchronize Standard Ebooks catalog with local EPUB collection.",
"version": "1.0.10",
"project_urls": {
"Repository": "https://github.com/pbryan/sebsync/"
},
"split_keywords": [
"book",
" download",
" ebook",
" standard",
" sync",
" synchronization"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "1d8e39913f12eba02d3b9b35774d65f373a6eb94266d3bfad5c1023f0b645fd1",
"md5": "920e923f9af6b537aca5ac27a173995b",
"sha256": "d41bc67cf62493b79ddc70c494698b310bbd03f968642f9a59ee41422b4084c0"
},
"downloads": -1,
"filename": "sebsync-1.0.10-py3-none-any.whl",
"has_sig": false,
"md5_digest": "920e923f9af6b537aca5ac27a173995b",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 7558,
"upload_time": "2025-01-01T01:10:48",
"upload_time_iso_8601": "2025-01-01T01:10:48.978303Z",
"url": "https://files.pythonhosted.org/packages/1d/8e/39913f12eba02d3b9b35774d65f373a6eb94266d3bfad5c1023f0b645fd1/sebsync-1.0.10-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "c9c84cbcbae917ec2d4b30393e299b07fcaad15ff3c27ccff5641e0b819e12a5",
"md5": "494266204c0ab05dea20e3e8cbc1f601",
"sha256": "bfeee7fba128714bc92419022e0c675bf8a811aadc14758a6309f9f6a913b073"
},
"downloads": -1,
"filename": "sebsync-1.0.10.tar.gz",
"has_sig": false,
"md5_digest": "494266204c0ab05dea20e3e8cbc1f601",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 20098,
"upload_time": "2025-01-01T01:10:51",
"upload_time_iso_8601": "2025-01-01T01:10:51.318313Z",
"url": "https://files.pythonhosted.org/packages/c9/c8/4cbcbae917ec2d4b30393e299b07fcaad15ff3c27ccff5641e0b819e12a5/sebsync-1.0.10.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-01-01 01:10:51",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "pbryan",
"github_project": "sebsync",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "sebsync"
}