From 2df5addacd82ac7463ff6d3ec6754b21dab71737 Mon Sep 17 00:00:00 2001 From: Jordan Date: Sun, 5 Apr 2020 20:20:41 -0700 Subject: initial commit --- README | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 README (limited to 'README') diff --git a/README b/README new file mode 100644 index 0000000..17bf421 --- /dev/null +++ b/README @@ -0,0 +1,35 @@ +audiobook-rss: stream directory of audiobooks to podcasting apps via RSS + +installation +------------ +a) copy and populate app.cfg and uwsgi.ini (if using UWSGI) + +b) create venv, install flask and uwsgi + +c) execute rebuild.py to populate audiobook JSON cache + +d) execute uwsgi.sh to start the server + +design decisions +---------------- +1. directories contained within config:ROOT_PATH are marked as audiobooks if and + only if they contain at least one MP3 file + +2. audiobooks are uniquely identifiable by the collective hash of each MP3 file + contained in the audiobook directory. + + pro: if the directory structure is changed or files are moved, RSS/download + link integrity is maintained, preserve app-side listening progress and + history + + con: each MP3 file is hashed, which can be slow on spinning rust w/ large + collections + +3. XML pubDate and list order is derived from MP3 track attributes; if not + present or duplicates exist, tracks are sorted alphanumerically + +4. partial content handling (HTTP 206) implemented to satisfy podcasting apps + which require valid responses to Range requests (e.g. Apple podcasts) + +5. no rebuild endpoint exists; cache-affecting routines are run externally via + rebuild.py -- cgit v1.2.3-54-g00ecf