episodix
episodix assists with preparing podcast episode documents. It reads bookmarks from multiple users stored on Readeck instances and groups links by their labels. Every bookmark needs to have only one label set.
The script can create commonly used labels and prepare a Markdown document (links and shownotes) using Jinja2.
Prerequisites
Create an API token for your Readeck account:
| Setting | Value |
|---|---|
| Name | uiu |
| Roles | Bookmarks Read/Write, Profile Read |
Copy the (opinionated) sample.episodixrc example configuration to .episodixrc and add URLs and API tokens for all the users that you want to include.
Installation
pip
Install locally:
$ pip3 install -e .
Or install over PyPi:
$ pip3 install episodix
Manual
Install Python requirements:
$ pip3 install -u -r requirements.txt
Usage
Initialize workflow. This creates a dummy link with commonly used labels so you have to enter them manually:
$ episodix init
Initialize Readeck for user Paula
Initialize Readeck for user Simone
Prepare an episode document. This will read all the bookmarks from all configured users and render a template:
$ episodix prepare --template episode.md.j2 E123.md
Get bookmarks from user Paula
Get bookmarks from user Simone
Render and save template
After the document has been created, you can remove all the collected bookmarks:
$ episodix nuke
Nuke bookmarks from user 'Paula'
Nuke bookmarks from user 'Simone'
You can also filter bookmarks label, e.g. if you're also using Readeck for other purposes.
One way is to define the -i / --include-labels or -e / --exclude-labels parameters. You can either use include or exclude filters - they can't be combined:
# prepare episode with a subset of bookmarks
$ episodix -e sle -e nixos prepare -t episode.md.j2 E123.md
# only nuke specific bookmarks
$ episodix -i feedback -i kurznews nuke
Those filters can also be permanent stored in the .episodixrc configuration file. Again, you can't combine them - separate multiple labels with a comma:
exclude_labels=tpm
# include_labels=nixos,sle
Templating
Bookmarks
Episode documents are prepared using a Jinja2 template - see episode.md.j2 for an example.
The variable user_bookmarks contains information derived from Readeck per user as dictionary, e.g. user_bookmarks['Paula'].
Every dictionary contains raw Readeck information per label, e.g. user_bookmarks['Paula']['tooltipps'].
Readeck keys include information like:
| Key | Description |
|---|---|
id |
ID |
href, url |
URL |
title |
Page title |
description |
Longer page description |
site |
Short site URL |
type, document_type |
Document type (e.g. article) |
lang |
Language (e.g. en) |
word_count |
Number of words |
authors |
Document authors (if supplied) |
reading_time |
Reading time in minutes (e.g. 3) |
labels |
List of attached labels |
created, updated |
Timestamp of creation and last update |
Note: You can see all the information when running the tool with the --debug / -d parameter.
Highlights / Annotations
The variable user_bookmarks_highlights contains highlights derived from Readeck per bookmark as dictionary, e.g. user_bookmarks_highlights['aaabbbccc...'].
Readeck keys include information like:
| Key | Description |
|---|---|
id |
Highlight ID |
text |
Highlighted text |
created / updated |
Timestamp of creation and last update |
Metadata
Release files for episodix 0.5.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| episodix-0.5.6.tar.gz | 20.5 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| episodix-0.5.6-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 39.7 kB
Release files / episodix-0.5.6.tar.gz
| Download URL | episodix-0.5.6.tar.gz |
|---|---|
| Size | 20.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9b200e75ed98ee785c842f8587ead3cb05249e99f3b1497ef831addad0cdd689
|
|
BLAKE2b-256 checksum How to use checksums |
798391271daaa93cf30132b73d4fbbbe2629e078a34c7745f824ee769d78541d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.5
|
Release files / episodix-0.5.6-py3-none-any.whl
| Download URL | episodix-0.5.6-py3-none-any.whl |
|---|---|
| Size | 19.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d04a143ad84da526cab6635c55f3b393d4ec1b67fcd58f5fc677fbc0cc1a3ee5
|
|
BLAKE2b-256 checksum How to use checksums |
0875eb122c0e7b88d3e50eb2781c727482a0bd0f68de65a7647cb975550cea1e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.5
|
Security for episodix 0.5.6
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.