설명 없음

david e1b070e75f update docs 7 년 전
bookworm 8dd6d3f1df add a bit of logging for status change issues 7 년 전
docs e1b070e75f update docs 7 년 전
front d4b8f1840e massive update 7 년 전
screenshots bad8599dc8 clean up + doc for alpha 0.1 10 년 전
services d4b8f1840e massive update 7 년 전
.gitignore d4b8f1840e massive update 7 년 전
README.md e85204b861 add db_cache_populate service to installation 7 년 전
nginx_file 9c84333678 add basic nginx file with kindle redirect and ws upgrade 8 년 전
requirements.txt db5824b28b refactor to make use of websockets instead of polling, automatically convert EPUB to MOBI 8 년 전
setup.py 996beeda51 fix batch_unpacker 7 년 전

README.md

Requirements

  • S3 (minio can be used for a local instance).
  • Redis
  • sqlite
  • Python3.6

Batch process

To remove the initial roundtrip when searching for books, I keep a cache in a local sqlite database.
To populate this cache, there's an API endpoint (books/batch_update) that triggers each bot's LIST command, at #ebooks

Services

Diagram

Installation

sudo cp services/bookworm@.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl start bookworm@ircclient.service
sudo systemctl start bookworm@file_fetcher.service
sudo systemctl start bookworm@unpacker.service
sudo systemctl start bookworm@web.service
sudo systemctl start bookworm@db_cache_populate.service

IRC Client

In charge of processing received commands and sending them via IRC.
Will forward details from DCC to the file fetcher via redis.

File fetcher

In charge of fetching files specified via DCC.
Will store the file in S3 and notify file details to the unpacker.

Unpacker

In charge of taking a file (as provided from IRC), unpacking it and, if necessary, converting it to mobi.

Web

API

  • Lists jobs in progress (/books/status)
  • Serves available books (Anything in the S3 bucket)
  • Exposes a search endpont /book/search?terms=...
  • Fetches books via /book/fetch/

Web interface

--

Basic (Kindle) Web interface

The kindle has a very basic webbrowser (I believe it renders up to HTML4, CSS2.1), which can be used to download (available) books directly.
At the moment I re-route at nginx based on user agent

To test, you can use dillo which has a set of features similar to the kindle's web browser.

if ($http_user_agent ~* "armv7l") {
    rewrite ^/(.*)$ /books/kindle;
}

CLI

For now, you can control this via HTTP.

$ # populate the index, only once in a while for new books
$ http POST localhost:5000/books/batch_update
$ # search the book that you want
$ http localhost:5000/book/search terms=='brandon sanderson'
$ # download book, will be placed in the S3 bucket
$ http POST localhost:5000/book/fetch bot=Pondering42 book="some-book-from the
index"

TODO

  • Proper status of requests in progress
  • Web UI