Coder Social home page Coder Social logo

freepacktbook's Introduction

freepacktbook

Claim Your Free PacktPub eBook automatically.

Quickstart:

$ pip install freepacktbook

$ export [email protected]
$ 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='[email protected]'
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

freepacktbook's People

Contributors

bogdal avatar lenisko avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

freepacktbook's Issues

Captcha security

get_book_details
    claim_url = page.find('div', {'class': 'free-ebook'}).a['href']
TypeError: 'NoneType' object is not subscriptable

markup:

<form action="/freelearning-claim/24938/21478" method="POST">
<div class="twelve-days-claim" id="packt-freelearning-submit-claim">
<div class="book-claim-token-inner">
<div class="book-claim-token-logo"></div>
<div class="book-claim-token-separator"></div>
<input class="form-submit" type="submit" value="Claim Your Free eBook"/>
</div>
</div>
<div id="popup-recaptcha"></div>
</form>

Claim check

Hello there.

What do you think about fetching https://www.packtpub.com/packt/offers/free-learning and https://www.packtpub.com/account/my-ebooks to check if we don't own new book already just before running Anti-Captcha API request?

Ability to Claim the book to account without downloading it

Is there a way to claim without downloading the book to local? I was assuming claim_free_ebook would only claim the book to our account and download_ebooks would actually download them. Looks like it is not the case.

It would be great if you can add that option

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.