Skip to main content

audio-feeder provides a server that serves your audiobooks and other audio

Project description

audio-feeder is a Flask-based web-app that hosts your audiobooks (or other audio content) as RSS feeds compatible with podcatchers.

Features

The main interface lists all your audiobooks once the database is updated (either by using audio-feeder update or by visiting the /update url. The default interface should also work well on mobile:

Rendered feeds

For each entry, audio-feeder can also generate “rendered” feeds, depending on what metadata is available:

  • Single file: This feed consists of a single file; if the original directory contains multiple files, they will be merged together using ffmpeg. If chapter information is not available in the original files, each file will be considered a separate “chapter”.

  • Chapters: This feed has one file per chapter; it is only available if explicit chapter metadata is available in the file (e.g. in an m4b file, or using Overdrive MediaMarkers).

  • Segmented: This is a feed that splits up and recombines files in such a way as to create files that are ~1 hour long (preferring longer files to shorter files). Files will only be split up along chapter boundaries, but they can be combined from files without chapter information. This mode is available if the original entry has more than one file, or if it has chapter information (or both).

QR Codes

Each feed has an associated QR code, so that you can easily browse the list from a computer, but scan the individual feeds from your phone. In the default front-end, QR codes are displayed via modal pop-ups:

Display options

The user can customize things like the sort order and the number of entries per page:

Installation and use

Probably the easiest way to deploy this is via docker. For your convenience, I have created a repository with a docker-compose configuration. It uses nginx to serve static media files, and gunicorn to deploy the application.

If you want to test it out locally, you can use tox -e start_server to run a test server. This will create a temporary server directory at /tmp/audio_feeder_server, and you can play around with, and you can mount your audiobook directory at /tmp/audio_feeder_server/static/media to have it work on your own audiobooks (bind mount, symlink or hard link should work just fine).

In a virtualenv with audio-feeder installed, you can run audio-feeder --help to see the various command line tools bundled with the application.

Note

While the state of this is getting much closer to something production-ready, I am emphatically not a front-end developer, and I don’t have extremely high confidence in the security of this project. Use at your own risk (and if you do come up with some security and/or usability improvements, please do send a PR).

This is only tested on Linux, but it may also work on other platforms.

Dependencies

In addition to the python dependencies specified in pyproject.toml, this project also requires installing ffmpeg with at least the aac codec, and the tests also require the libmp3lame codec.

License

All images and documentation contained herein are licensed under CC-0.

The code is released under the Apache 2.0 license.

Contributing

Pull requests and issues are more than welcome. Please be aware that your contributions will be released under the licenses stated above. If you are not comfortable with that, please do not make a pull request.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

audio_feeder-0.6.0.tar.gz (1.4 MB view details)

Uploaded Source

Built Distribution

audio_feeder-0.6.0-py3-none-any.whl (87.5 kB view details)

Uploaded Python 3

File details

Details for the file audio_feeder-0.6.0.tar.gz.

File metadata

  • Download URL: audio_feeder-0.6.0.tar.gz
  • Upload date:
  • Size: 1.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.0

File hashes

Hashes for audio_feeder-0.6.0.tar.gz
Algorithm Hash digest
SHA256 f31a3bda0d5ec5373719ede6684ee6a4b27771598f36f05f12abf65665715740
MD5 505238523c9c81bc4b393951297b1851
BLAKE2b-256 f370da74064832176fe23f405de07b287e9c367b9aeb19603c7a50ec6f4d5fdb

See more details on using hashes here.

File details

Details for the file audio_feeder-0.6.0-py3-none-any.whl.

File metadata

  • Download URL: audio_feeder-0.6.0-py3-none-any.whl
  • Upload date:
  • Size: 87.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.0

File hashes

Hashes for audio_feeder-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3d9a77ce52b031fe49cf6d8910b2d7cbb704525abfcd9c72c22a576ffb527304
MD5 a739de2b5c1c6412129d13f38f5c3094
BLAKE2b-256 0a0c02c9d680eaa5bd101ccf4a7bb3c36cd6dea7d6fce311c4aab99578abeaef

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page