Skip to content

bogdal/freepacktbook

Repository files navigation

freepacktbook

Claim Your Free PacktPub eBook automatically.

Quickstart:

$ pip install freepacktbook

$ export PACKTPUB_EMAIL=my@email.com
$ export PACKTPUB_PASSWORD=my_password
$ export ANTICAPTCHA_KEY=api_key

$ claim_free_ebook

Freepacktbook uses paid captcha solving service Anti-Captcha (referral link), which costs $2 for 1k captchas.

Claim your daily free PacktPub ebook and download it:

$ export PACKTPUB_BOOKS_DIR=/path/to/my/books

$ claim_free_ebook --download

Download all your ebooks:

freepacktbook allows you to backup all your ebooks and code files.

$ download_ebooks --formats mobi pdf --with-code-files

To see more information:

$ download_ebooks -h

Cron configuration:

Edit the current crontab:

$ crontab -e

Add the following lines:

#!/bin/bash
SHELL=/bin/bash
PACKTPUB_EMAIL='my@email.com'
PACKTPUB_PASSWORD='my_password'
ANTICAPTCHA_KEY='api_key'

0 8 * * * /path/to/claim_free_ebook >> /tmp/claim_free_ebook.log 2>&1

This command shows the direct path to claim_free_ebook:

which claim_free_ebook

Notifications (optional)

Slack integration

Set additionally the following environment variables:

export SLACK_URL=https://hooks.slack.com/services/...
export SLACK_CHANNEL=random

$ claim_free_ebook --slack

https://github-bogdal.s3.amazonaws.com/freepacktbook/slack.png

Pushover integration

Set additionally the following environment variables:

export PUSHOVER_USER=random
export PUSHOVER_TOKEN=random

$ claim_free_ebook --pushover

Docker image

You can build your own docker image containing configured cron service. By default, the claim_free_ebook command is run daily at 8:00am CEST. See Dockerfile.

Build an image:

$ docker build -t freepacktbook .

If you want to change the default time zone, use the TZ build argument:

$ docker build --build-arg TZ=UTC -t freepacktbook .

Run a new container:

$ docker run -d \
    --name freepacktbook \
    -e PACKTPUB_EMAIL=<my-packtpub-email> \
    -e PACKTPUB_PASSWORD=<my-packtpub-password> \
    -e ANTICAPTCHA_KEY=<api_key> \
  freepacktbook

The PACKTPUB_ARGS env variable passes the additional arguments to the claim_free_ebook command:

$ docker run -d \
    --name freepacktbook \
    --restart=always \
    -e PACKTPUB_EMAIL=<my-packtpub-email> \
    -e PACKTPUB_PASSWORD=<my-packtpub-password> \
    -e ANTICAPTCHA_KEY=<api_key> \
    -e PACKTPUB_ARGS='--download' \
    -v <path-to-books-dir>:/data \
  freepacktbook

Also available on Docker Hub bogdal/freepacktbook:latest