This is a service that polls a Wallabag
instance for articles with a certain tag (kindle
, kindle-mobi
or
kindle-pdf
). If it finds an article tagged with one of thse tags, it
exports the article in the requested format and sends it via email to a
configured kindle adress.
The software consists of three parts:
- consumer: This is the part that consumes the tags from wallabag and pushes them to the kindle addresses.
- refresher: As wallabag gives no permanent api tokens we need to refresh them regularly. This part asks for a new token every time the old one is due to expire. With this method we don't need to save the users password. If we miss a refresh cycle (for example because the service was stopped) it will send the user an email to its notification address asking him to log in again to get a fresh token.
- interface: This provides a basic web interface to register new users, refresh logins or delete users.
All parts can run in one process or you can use seperate processes for each part. All they share is the configuration and the database.
The configuration can be done either by a ini-format configuration file
or via environment variables. The later is used for running the service
via docker. All config option have ro be below a section called DEFAULT
.
You can just copy and modify the example config.
The following tabe describes all options:
file-option | env-var | type | default | description |
---|---|---|---|---|
wallabag_host |
WALLABAG_HOST |
required | The http url of the wallabag host. | |
db_uri |
DB_URI |
required | The dbapi url for the database. | |
client_id |
CLIENT_ID |
required | The Wallabag client id. Read here how to get it. | |
client_secret |
CLIENT_SECRET |
required | The Wallabag client secret. Read above. | |
domain |
DOMAIN |
required | the domain the interface for the service is accessible on. | |
smtp_from |
SMTP_FROM |
required | The from-address to use. | |
smtp_host |
SMTP_HOST |
required | The SMTP hostname or ip. | |
smtp_port |
SMTP_PORT |
required | The Port of the SMTP server. | |
smtp_user |
SMTP_USER |
required | The user for SMTP auth. | |
smtp_passwd |
SMTP_PASSWD |
required | The password for SMTP auth. | |
tag |
TAG |
optional | kindle |
The tag to consume. |
refresh_grace |
REFRESH_GRACE |
optional | 120 |
The amount of seconds the token is refreshed before expiring. |
consume_interval |
CONSUME_INTERVAL |
optional | 30 |
The time in seconds between two consume cycles. |
interface_host |
INTERFACE_HOST |
optional | 120.0.0.1 |
The IP the user interface should bind to. |
interface_port |
INTERFACE_PORT |
optional | 8080 |
The port the user interface should bind. |
The config file is read either from the current working dicectory where it
would be called config.ini
or from a path hiven to the commandline option
--cfg
. To use configuration via environment use --env
.
Every component must be enabled via a commandline switch. To runn all three in one prcess use all three:
$ ./service.py --refresher --consumer --interface
For more information about commandline options use --help
.
The servie uses a database. The easiest option is to use sqlite. To save
all data in a file called database.db in the current working directory set
sqlite:///database.db
in the config option db_uri
or the env variable
DB_URI
.
To initialize the database, run the server once with --create_db
.
The provided dockerfile makes it easy to use the software as a docker container. The latest state of the master branch can be found as a Automated build on the Docker hub.
You can easily configure the container via the environment variables from above. Just make sure, that the datavase is in a volume if you use sqlite.
As soon as you've set it all up you can reister your wallabag user in the Web-UI. The service does not store any login information other than the user name and the API token for wallabag. All actions that need a valid user like register/login/delete a user are authenticated directly against the wallabag server.
MIT