Skip to content

Instantly share code, notes, and snippets.

@jkubecki
Last active November 7, 2024 05:35
Show Gist options
  • Save jkubecki/d61d3e953ed5c8379075b5ddd8a95f22 to your computer and use it in GitHub Desktop.
Save jkubecki/d61d3e953ed5c8379075b5ddd8a95f22 to your computer and use it in GitHub Desktop.
Amazon Kindle Export
// The following data should be run in the console while viewing the page https://read.amazon.com/
// It will export a CSV file called "download" which can (and should) be renamed with a .csv extension
var db = openDatabase('K4W', '3', 'thedatabase', 1024 * 1024);
getAmazonCsv = function() {
// Set header for CSV export line - change this if you change the fields used
var csvData = "ASIN,Title,Authors,PurchaseDate\n";
db.transaction(function(tx) {
tx.executeSql('SELECT * FROM bookdata;', [], function(tx, results) {
var len = results.rows.length;
for (i = 1; i < len; i++) {
// Get the data
var asin = results.rows.item(i).asin;
var title = results.rows.item(i).title;
var authors = JSON.parse(results.rows.item(i).authors);
var purchaseDate = new Date(results.rows.item(i).purchaseDate).toLocaleDateString();
// Remove double quotes from titles to not interfere with CSV double-quotes
title = title.replace(/"/g, '');
// Concatenate the authors list - uncomment the next line to get all authors separated by ";"
// var authorList = authors.join(';');
// OR Take only first author - comment the next line if you uncommented the previous one
var authorList = authors[0];
// Write out the CSV line
csvData += '"' + asin + '","' + title + '","' + authorList + '","' + purchaseDate + '"\n'
}
// "Export" the data
window.location = 'data:text/csv;charset=utf8,' + encodeURIComponent(csvData);
console.log("Sample Row:");
console.log(results.rows.item(1));
});
});
};
getAmazonCsv();
@heathkat
Copy link

Thank you @AppMakerSupreme! The extension works great for me. Thank for doing this work and sharing it with us!

@AppMakerSupreme
Copy link

AppMakerSupreme commented Oct 19, 2023

@johnnew2019 sorry I don't know how to increase the book limit. I haven't had time to look further into this issue.

I included all the info I can get from the amazon url I used. Maybe that's all we can get with this method.

@johnnew2019
Copy link

@AppMakerSupreme No problem, it's still an excellent extension that many people will find useful.

@AppMakerSupreme
Copy link

@johnnew2019 @heathkat May I know what you do with your list of Kindle books? I want to understand the need better so when I have time I can develop this project further.

I see a lot of people wanting a csv/excel sheet of their books, but I'm not sure why. I own many Kindle books too but I don't have this need.

@heathkat
Copy link

heathkat commented Nov 16, 2023 via email

@david-bakin
Copy link

david-bakin commented Nov 18, 2023 via email

@AppMakerSupreme
Copy link

@heathkat @david-bakin Thank you for your feedback. I get your use case better now.
@david-bakin that's some hardcore project there, good luck!

@johnnew2019
Copy link

I've got a lot of books and will get more. I like to keep track of authors, series, and titles. Filtering in excel is the best way to easily collect all that info. Hope that helps. The extension is pretty good already, any extra features would be a bonus.

@RobertBernstein
Copy link

I use the CLZ Books app to catalog all the books I own (eBooks, pBooks, audiobooks). This script lets me export them into a format for importing into that database.

@SlyJackHammer
Copy link

@johnnew2019 @heathkat May I know what you do with your list of Kindle books? I want to understand the need better so when I have time I can develop this project further.

I see a lot of people wanting a csv/excel sheet of their books, but I'm not sure why. I own many Kindle books too but I don't have this need.

Several use cases for me:

  • personal library catalog, able to be imported into other library programs (calibre, for instance). Your csv is a good first step towards this. Amazon's own system isn't always intuitive for a "scanning your shelves for something to read" experience
  • as a base for search. I own digital books in several platforms, a total of thousands, and it becomes a pain when considering buying a new book, to know whether I already own it. Requires login to each of the web platforms, manual search, etc. Have been considering how to write a programmatic solution for this for years. None of the services offer APIs for this use case, though, so I'm stuck with parsing a signed-in account via JS.

@david-bakin
Copy link

david-bakin commented Nov 22, 2023 via email

@tuforoiff
Copy link

This sounds exactly what I have been looking for - a version that works with https://read.amazon.co.uk/kindle-library rather than .com would be great.

One of the key things I want to do is tag and group the books I haven't read yet. Some would be best read in a certain order.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment