GithubHelp home page GithubHelp logo

tempname1024 / roka Goto Github PK

View Code? Open in Web Editor NEW
5.0 3.0 3.0 287 KB

Repository moved to https://git.jordan.im/roka/

License: The Unlicense

Python 98.00% HTML 1.78% Shell 0.21%
audiobooks podcasts rss

roka's Introduction

Roka

Stream a directory of audiobooks to podcast apps over an RSS XML feed uniquely generated for each audiobook. A screenshot of the web interface is available here.

Installation

  1. Copy and populate app.cfg and uwsgi.ini from examples, or pass configuration key/values as a JSON string with the --config parameter.

  2. Install Python dependencies flask and uwsgi.

    pip install --user flask uwsgi
  3. Populate audiobook JSON cache; can be re-run to update cache upon download of new books.

    ./roka.py --scan
  4. Run uwsgi.sh to start the server.

    ./uwsgi.sh

Static generation

In addition to running as a server, Roka can also generate a static index and set of RSS feeds that can be deployed to static hosting. This mode does not support a username and password.

  1. Populate BASE_URL in app.cfg to the base url where the static site will be uploaded.

  2. Run roka.py with the --generate <output_directory> parameter, where <output_directory> is an output directory to place the generated site. All audiobook files will be copied to this location.

    ./roka.py --generate ./static
  3. Upload the static site to any static web hosting. Make sure it is accessible at the URL set as BASE_URL

Design decisions

  1. Directories contained within ROOT_PATH are marked as audiobooks if and only if they contain at least one MP3 file.

  2. Audiobooks are uniquely identified in the web interface by the collective hash of each MP3 file contained in the audiobook directory. If the directory structure is changed or files are moved, RSS/download link integrity is maintained, preserving app-side listening progress and history.

  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 executed by calling roka.py directly.

roka's People

Contributors

dgarrett avatar tempname1024 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

tieu dgarrett tlaerm

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.