aboutsummaryrefslogtreecommitdiff
path: root/README
blob: 843cdbdfadcd6cbb8f1d2008fd15b139f4830ea9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
audiobook-rss: stream directory of audiobooks to podcasting apps via RSS

demo (no audio): https://demo.jordan.im/audiobook-rss/
iOS podcast app: https://demo.jordan.im/audiobook-rss/apple-podcasts.png

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, preserving 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. no rebuild endpoint exists; cache-affecting routines are run externally via
   rebuild.py