Skip to content

Instantly share code, notes, and snippets.

@rcknr
Created May 30, 2013 08:27
Show Gist options
  • Save rcknr/5676480 to your computer and use it in GitHub Desktop.
Save rcknr/5676480 to your computer and use it in GitHub Desktop.
Add PDF and EPUB files from your Google Drive to Google Books.
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>Add to Google Books</title>
<script src="//www.google.com/jsapi"></script>
<script src="//apis.google.com/js/client.js"></script>
<script type="text/javascript">
google.setOnLoadCallback(createPicker);
google.load('picker', '1');
function authorize(noPopUp, callback) {
var config = {
'client_id': '560085230448-c99ktubt19142nv8gm50tqko76bflheu.apps.googleusercontent.com',
'scope': 'https://www.googleapis.com/auth/books',
'immediate': noPopUp
};
gapi.auth.authorize(config, function(authResult) {
if (authResult && !authResult.error) {
console.log('login complete');
console.log(gapi.auth.getToken());
callback();
}
else authorize(false);
});
}
function createPicker() {
var view = new google.picker.View(google.picker.ViewId.DOCS);
view.setMimeTypes("application/pdf,application/epub+zip");
var picker = new google.picker.PickerBuilder()
.enableFeature(google.picker.Feature.NAV_HIDDEN)
.enableFeature(google.picker.Feature.MULTISELECT_ENABLED)
.addView(view)
.addView(new google.picker.DocsUploadView())
.setCallback(pickerCallback)
.build();
picker.setVisible(true);
}
function pickerCallback(data) {
if (data.action == google.picker.Action.PICKED) {
console.log(data);
authorize(true, function() {
gapi.client.load('books', 'v1', function() {
var httpBatch = gapi.client.newHttpBatch();
for (var i in data.docs) {
httpBatch.add(
gapi.client.request({
'method': 'POST',
'path': 'books/v1/cloudloading/addBook',
'params': {
'drive_document_id': data.docs[i].id,
'name': data.docs[i].name
}
})
);
}
httpBatch.execute(
function (jsonResponse, rawResponse) {
var output = document.getElementById("result");
for (var id in jsonResponse) {
console.log(jsonResponse[id]); // Logs each individual response
if(jsonResponse[id].result && !jsonResponse[id].result.error)
output.innerHTML += "<a href=\"http://books.google.com/books/reader?id="+jsonResponse[id].result.volumeId+"\">"+jsonResponse[id].result.title+"</a> added.</br>";
}
//console.log(rawResponse);
}
);
});
});
}
}
</script>
</head>
<body>
<div id="result"></div>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment