Skip to content

daileyet/SafaribooksonlineGetter4J

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SafaribooksonlineGetter4J

The auto download for Safari online book

How to use it?

Execute the following command line:

java -jar SafariBookGetter.jar -config W:\Book\default_config.xml

Configuration items (all in one)

main configuration file

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<!--[option]Browser client: FF31; FF38; IE8; IE11; CHROME-->
<entry key="browser-version">FF38</entry>
<!--[option]proxy host if present-->
<entry key="proxy-host"></entry>
<!--[option]proxy host port-->
<entry key="proxy-port">80</entry>
<!--[option]proxy auth user name-->
<entry key="proxy-auth-user"></entry>
<!--[option]proxy auth pass-->
<entry key="proxy-auth-pass"></entry>
<!--[required]download save directory-->
<entry key="save-dir">W:\Book\</entry>
<!--[required]identity the authorized for the download pages-->
<entry key="need-login">true</entry>

<!--required when need login-->
<!--[required]the login page url-->
<entry key="login-url">https://www.safaribooksonline.com/accounts/login/</entry>
<!--[required]the login page form css selector-->
<entry key="login-form-selector">form</entry>
<!--[option]the login page form index-->
<entry key="login-form-index">0</entry>
<!--[required]the login page form user name input name-->
<entry key="login-form-username-input-name"></entry>
<!--[required]the login page form user name value-->
<entry key="login-form-username-input-value"></entry>
<!--[required]the login page form user pass input name-->
<entry key="login-form-password-input-name"></entry>
<!--[required]the login page form user pass value-->
<entry key="login-form-password-input-value"></entry>
<!--[required]the login page form submit button name-->
<entry key="login-form-submit-name"></entry>
<!--[required]download book name and save to local fold name-->
<entry key="pages-name">Head First C</entry>

<!--option when the first page url configured-->
<!--The catalog page url-->
<entry key="pages-catalog-url">http://techbus.safaribooksonline.com/book/programming/android/9781784397203</entry>
<!--The css selector for each download page anchor on catalog page-->
<entry key="catalog-pagelinks-selector">div.catalog_container a[href*='9781784397203']</entry>


<!--option when the catalog page url configured-->
<!--The first page url-->
<entry key="pages-first-url">http://techbus.safaribooksonline.com/book/programming/android/9781784397203/android-studio-essentials/index_html</entry>
<!--The css selector for next chain page anchor on each page -->
<entry key="pages-next-anchor-selector">a.next[title*='Next (Key: n)']</entry>

<!--show message in CMD-->
<entry key="logger-level">INFO</entry>
</properties>

Configuration items (group and batch download)

main configuration file

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<!--[option]Browser client: FF31; FF38; IE8; IE11; CHROME-->
<entry key="browser-version">FF38</entry>
<!--[option]proxy host if present-->
<entry key="proxy-host"></entry>
<!--[option]proxy host port-->
<entry key="proxy-port">80</entry>
<!--[option]proxy auth user name-->
<entry key="proxy-auth-user"></entry>
<!--[option]proxy auth pass-->
<entry key="proxy-auth-pass"></entry>
<!--[required]download save directory-->
<entry key="save-dir">W:\Book\</entry>
<!--[required]identity the authorized for the download pages-->
<entry key="need-login">true</entry>

<!--required when need login-->
<!--[required]the login page url-->
<entry key="login-url">https://www.safaribooksonline.com/accounts/login/</entry>
<!--[required]the login page form css selector-->
<entry key="login-form-selector">form</entry>
<!--[option]the login page form index-->
<entry key="login-form-index">0</entry>
<!--[required]the login page form user name input name-->
<entry key="login-form-username-input-name"></entry>
<!--[required]the login page form user name value-->
<entry key="login-form-username-input-value"></entry>
<!--[required]the login page form user pass input name-->
<entry key="login-form-password-input-name"></entry>
<!--[required]the login page form user pass value-->
<entry key="login-form-password-input-value"></entry>
<!--[required]the login page form submit button name-->
<entry key="login-form-submit-name"></entry>

<!--[required]batch download book definition directory-->
<entry key="group-task-dir">D:\DOC\Book\Safari\conf.d</entry>

<!--show message in CMD-->
<entry key="logger-level">INFO</entry>
</properties>

download book definition

xml definition (.xml)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>Wed Jul 25 16:23:17 CST 2018</comment>
<!--The css selector for each download page anchor on catalog page-->
<entry key="catalog-pagelinks-selector">div.catalog_container a[href*='9781787127562']</entry>
<!--The catalog page url-->
<entry key="pages-catalog-url">http://techbus.safaribooksonline.com/book/programming/9781787127562</entry>
<!--[required]download book name and save to local fold name-->
<entry key="pages-name">Mastering_Spring_Boot_2</entry>
<!--[optional]flag to indicate this book has been download or not; true/false-->
<entry key="is-processed">false</entry>
</properties>

properties definition (.properties)

catalog-pagelinks-selector=div.catalog_container a[href*='9781788624398']
pages-catalog-url=http://techbus.safaribooksonline.com/book/web-development/9781788624398
pages-name=Spring5_By_Example

Book structure on disk

When you set download book save directory as W:\Book on windows OS or /Book on Linux OS, then you will get following download book structure:

|
|-- **common**
|---- **js**
|------ js 1
|------ js 2
|------ ...
|---- **style**
|------ css 1
|------ css 2
|------ ...
|------ **styleref**
|-------- image 1
|-------- image 2
|-------- ...
|-- *download book name 1*
|---- **images**
|------ image 1
|------ image 2
|------ ...
|---- page 1
|---- page 2
|---- ...
|-- *download book name 2*
|---- **images**
|------ image 1
|------ image 2
|------ ...
|---- page 1
|---- page 2
|---- ...

Reference project

This project has been used as a task type in WebScheduler system. Used in WebScheduler