Skip to content

Instantly share code, notes, and snippets.

@MacDue
Last active October 2, 2017 21:31
Show Gist options
  • Save MacDue/cc161bacf4d30e9ff2478d788b30793b to your computer and use it in GitHub Desktop.
Save MacDue/cc161bacf4d30e9ff2478d788b30793b to your computer and use it in GitHub Desktop.
/* A book page URL is like http://reader.vlebooks.com/reader/sessionid_<ID>/page/MTA3My84NTE4LzQvMA==
* The page of a book is from MTA3My84NTE4LzQvMA== this is simply a base64 encoded string.
* Decoded it becomes something like 1073/8518/4/0
* That is <Page>/<Some>/<Other>/<Ids>
* For educational purposes only.
*/
// Example call stealBook(4, "23672386824842", "/1337/1/2")
function stealBook(bookPageCount, session_id, bookId) {
$.getScript('https://cdnjs.cloudflare.com/ajax/libs/jszip/2.6.1/jszip.js', function()
{
let bookPages = new JSZip();
let donePages = 0;
for (let page=1; page<=bookPageCount; page++) {
page_id = btoa(page+bookId);
page_url = "http://reader.vlebooks.com/reader/sessionid_"+session_id+"/page/"+page_id;
let request = new XMLHttpRequest();
request.open('GET', page_url, true);
request.responseType = 'blob';
request.onload = function() {
if (request.response === null) {
donePages++;
return;
}
console.log(request.response);
let reader = new FileReader();
reader.readAsDataURL(request.response);
reader.onload = function(e){
console.log(page_url);
base64 = e.target.result;
let index = base64.indexOf(",");
if (index !== -1) {
base64 = base64.substring(index + 1, base64.length);
}
bookPages.folder("pages").file("page" + page + ".jpg", base64, {base64: true});
donePages++;
if (donePages == bookPageCount)
location.href= "data:application/zip;base64,"+bookPages.generate();
};
};
request.send();
}
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment