Git Product home page Git Product logo

safaribooks's Introduction

SafariBooks

Descarga y generar archivos EPUB de tu libros favoritos desde la libreria o'Reilly (learning.oreilly.com). NO ME HAGO RESPONSABLE DEL USO DE ESTE PROGRAMA, su proposito para uso personal y educacional. Antes de usarlo por favor lee los Terminos y Condiciones

Overview:

Requirements & Setup:

$ git clone https://github.com/gusdrawn/safaribooks.git
Cloning into 'safaribooks'...

$ cd safaribooks/
$ pip3 install -r requirements.txt

ó

$ pipenv install && pipenv shell

Este programa despende de solo dos modulos Python 3:

lxml>=4.1.1
requests>=2.20.0

Uso:

Es bastante simple, solo elige un libro desde la libreria y reemplaza con el siguiente comando:

  • X es el ID,
  • email:password con tu cuenta.
$ python3 safaribooks.py --cred "[email protected]:password01" XXXXXXXXXXXXX

El ID son los digitos que puedes encontrar en la URL del libro en particular: https://learning.oreilly.com/library/view/ccnp-and-ccie/XXXXXXXXXXXX/`
Like: https://learning.oreilly.com/library/view/ccnp-and-ccie/9780136555735/ch01.html

English description only:

Program options:

$ python3 safaribooks.py --help
usage: safaribooks.py [--cred <EMAIL:PASS> | --login] [--no-cookies] [--no-kindle]
                      [--preserve-log] [--help]
                      <BOOK ID>

Download and generate EPUB of your favorite books from Safari Books Online.

positional arguments:
  <BOOK ID>            Book digits ID that you want to download.
                       You can find it in the URL (X-es):
                       `https://www.safaribooksonline.com/library/view/book-
                       name/XXXXXXXXXXXXX/`

optional arguments:
  --cred <EMAIL:PASS>  Credentials used to perform the auth login on Safari
                       Books Online.
                       Es. ` --cred "[email protected]:password01" `.
  --login              Prompt for credentials used to perform the auth login
                       on Safari Books Online.
  --no-cookies         Prevent your session data to be saved into
                       `cookies.json` file.
  --no-kindle          Remove some CSS rules that block overflow on `table`
                       and `pre` elements. Use this option if you're not going
                       to export the EPUB to E-Readers like Amazon Kindle.
  --preserve-log       Leave the `info_XXXXXXXXXXXXX.log` file even if there 
                       isn't any error.
  --help               Show this help message.

The first time you use the program, you'll have to specify your Safari Books Online account credentials (look here for special character). The next times you'll download a book, before session expires, you can omit the credential, because the program save your session cookies in a file called cookies.json (for SSO look the file format here).

Pay attention if you use a shared PC, because everyone that has access to your files can steal your session. If you don't want to cache the cookies, just use the --no-cookies option and provide all time your --cred to perform --login.

You can configure proxies by setting on your system the environment variable HTTPS_PROXY.

The program default options are thought for ensure best compatibilities for who want to export the EPUB to E-Readers like Amazon Kindle. If you want to do it, I suggest you to convert the EPUB to AZW3 with Calibre.
You can also convert the book to MOBI and if you'll do it with Calibre be sure to select Ignore margins in the conversion options:

Calibre IgnoreMargins

In the other hand, if you're not going to export the EPUB, you can use the --no-kindle option to remove the CSS that blocks overflow on table and pre elements, see below in the examples.

Examples:

  • $ python3 safaribooks.py --cred "[email protected]:XXXXX" 9781491958698
    
           ____     ___         _ 
          / __/__ _/ _/__ _____(_)
         _\ \/ _ `/ _/ _ `/ __/ / 
        /___/\_,_/_/ \_,_/_/ /_/  
          / _ )___  ___  / /__ ___
         / _  / _ \/ _ \/  '_/(_-<
        /____/\___/\___/_/\_\/___/
    
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [-] Logging into Safari Books Online...
    [*] Retrieving book info... 
    [-] Title: Test-Driven Development with Python, 2nd Edition                     
    [-] Authors: Harry J.W. Percival                                                
    [-] Identifier: 9781491958698                                                   
    [-] ISBN: 9781491958704                                                         
    [-] Publishers: O'Reilly Media, Inc.                                            
    [-] Rights: Copyright © O'Reilly Media, Inc.                                    
    [-] Description: By taking you through the development of a real web application 
    from beginning to end, the second edition of this hands-on guide demonstrates the 
    practical advantages of test-driven development (TDD) with Python. You’ll learn 
    how to write and run tests before building each part of your app, and then develop
    the minimum amount of code required to pass those tests. The result? Clean code
    that works.In the process, you’ll learn the basics of Django, Selenium, Git, 
    jQuery, and Mock, along with curre...
    [-] Release Date: 2017-08-18
    [-] URL: https://www.safaribooksonline.com/library/view/test-driven-development-with/9781491958698/
    [*] Retrieving book chapters...                                                          
    [*] Output directory:                                                           
        /XXXX/XXXX/Books/Test-Driven Development with Python, 2nd Edition
    [-] Downloading book contents... (73 chapters)                                               
        [#########################################----------------------------]  60%
    ...
    [-] Creating EPUB file...                                                       
    [*] Done: Test-Driven Development with Python, 2nd Edition.epub                 
    
        If you like it, please * this project on GitHub to make it known:
            https://github.com/lorenzodifuccia/safaribooks
        e don't forget to renew your Safari Books Online subscription:
            https://www.safaribooksonline.com/signup/
    
    [!] Bye!!

    The result will be (opening the EPUB file with Calibre):

    Book Appearance

  • Use or not the --no-kindle option:

    $ python3 safaribooks.py --no-kindle 9781491958698

    On the left book created with --no-kindle option, on the right without (default):

    NoKindle Option


Thanks!!

For any kind of problem, please don't hesitate to open an issue here on GitHub.

Lorenzo Di Fuccia

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.