blob: cef67211ca712dd0f76985135cbe9abcb7822d0f (
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
38
39
40
41
|
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
if a book's track numbers are unique but incorrect, a preference for filename
sort can be established by creating an 'ignore_tracknum' file in the
audiobook's path
4. no rebuild endpoint exists; cache-affecting routines are run externally via
rebuild.py
|