paulklinger / enhance-goodreads-export Goto Github PK
View Code? Open in Web Editor NEWSmall tool to add additional data to .csv library exports from goodreads
License: GNU Affero General Public License v3.0
Small tool to add additional data to .csv library exports from goodreads
License: GNU Affero General Public License v3.0
Got this;
Getting login page
Getting email login page
Logging in
Book 1 of 4786: The Beginning of Connie and Isaac (Blue Butterfly #3) (D.H. Sidebottom)
Book 2 of 4786: Make Me Yours Evermore (Pierced Hearts, #3) (Cari Silverwood)
csa('Config', {
'Application': 'GoodreadsSirius',
'Events.SushiEndpoint': 'https://unagi.amazon.com/1/events/com.amazon.csm.csa.prod',
'Events.Namespace': 'csa',
'CacheDetection.RequestID': '',
'ObfuscatedMarketplaceId': 'A1PQBFHBHS6YH1'
});
csa('Events')('setEntity', {
'session': { 'id':'' },
'page': {'requestId': '', 'meaningful': 'interactive'}
});
var e = document.createElement("script"); e.src = "https://m.media-amazon.com/images/I/41mrkPcyPwL.js"; document.head.appendChild(e);
</script><script>!function(a9,a,p,s,t,A,g){if(a[a9])return;function q(c,r){a[a9]._Q.push([c,r])}a[a9]={init:function(){q("i",arguments)},fetchBids:function(){q("f",arguments)},setDisplayBids:function(){},targetingKeys:function(){return[]},_Q:[]};A=p.createElement(s);A.async=!0;A.src=t;g=p.getElementsByTagName(s)[0];g.parentNode.insertBefore(A,g)}("apstag",window,document,"script","//c.amazon-adsystem.com/aax2/apstag.js");</script><script async="" src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script><script>window.googletag = window.googletag || { cmd: [] };</script>
<script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"apolloState":{},"apolloClient":null,"authContextParams":{"signedIn":false,"customerId":null,"legacyCustomerId":null,"role":"user"},"userAgentContextParams":{"isWebView":false},"userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36"}},"page":"/book/show/[book_id]","query":{"book_id":"19546949"},"buildId":"4ZTILNjjLxgNzxacVzoZb","runtimeConfig":{"env":"Production"},"isFallback":false,"customServer":true,"gip":true,"locales":["en","ab","aa","af","ak","sq","am","ar","an","hy","as","av","ae","ay","az","bm","ba","eu","be","bn","bh","bi","bs","br","bg","my","ca","ch","ce","ceb","ny","zh","zh-TW","cv","kw","co","cr","hr","cs","da","dv","nl","eo","et","ee","fo","fj","fi","fr","ff","gl","ka","de","el","gn","gu","ht","ha","he","hz","hi","ho","hu","ia","id","ie","ilo","ga","ig","ik","io","is","it","iu","ja","jv","kl","kn","kr","ks","kk","km","ki","rw","ky","kv","kg","ko","ku","kj","la","lb","lg","li","ln","lo","lt","lu","lv","gv","mk","mg","ms","ml","mt","mi","mr","mh","mn","na","nv","nb","nd","ne","new","ng","nn","no","ii","nr","oc","oj","cu","om","or","os","pa","pi","fa","pl","ps","pt","qu","rm","rn","ro","ru","sa","sc","sd","se","sm","sg","sr","gd","sn","si","sk","sl","so","st","es","su","sw","ss","sv","ta","te","tg","th","ti","bo","tk","tl","tn","to","tr","ts","tt","tw","ty","ug","uk","ur","uz","ve","vi","vo","wa","cy","wo","fy","xh","yi","yo","za"]}</script><script nomodule="" src="/_next/static/chunks/polyfills-35106f80b2e6ef6905f8.js"></script><script src="/_next/static/chunks/main-25d1c4b3f420c39b8073.js" async=""></script><script src="/_next/static/chunks/webpack-acecb84bcb0d97d30a46.js" async=""></script><script src="/_next/static/chunks/node_vendors~253ae210.e99ea9aa2063eee0312d.js" async=""></script><script src="/_next/static/chunks/node_vendors~2a42e354.3a0e6dd5abaf498c31cb.js" async=""></script><script src="/_next/static/chunks/node_vendors~15ae29a2.ee9176702cc1a9dc63cc.js" async=""></script><script src="/_next/static/chunks/node_vendors~f45575e3.e33e3220c7f23a7242a3.js" async=""></script><script src="/_next/static/chunks/node_vendors~e097a484.e260ec1c8bfd8114a944.js" async=""></script><script src="/_next/static/chunks/node_vendors~313ef737.0cc9da4d7ba84802c322.js" async=""></script><script src="/_next/static/chunks/node_vendors~577b3ae9.da6a57a3ede1288bba54.js" async=""></script><script src="/_next/static/chunks/node_vendors~4e60a0fb.db81b8cb513b8cc21d71.js" async=""></script><script src="/_next/static/chunks/node_vendors~b1a98620.e0291fd053777588f25e.js" async=""></script><script src="/_next/static/chunks/node_vendors~7274e1de.a3eb4c665f43003727df.js" async=""></script><script src="/_next/static/chunks/node_vendors~1f20a385.54f429a6f56f62a9eb82.js" async=""></script><script src="/_next/static/chunks/node_vendors~70aabc29.d7798dbc92f3e3360cc4.js" async=""></script><script src="/_next/static/chunks/node_vendors~f9ca8911.f4324596672264d6b5dd.js" async=""></script><script src="/_next/static/chunks/pages/_app-8e1454724dec671c054a.js" async=""></script><script src="/_next/static/chunks/pages/book/show/%5Bbook_id%5D-48adf4fa1151770a1f60.js" async=""></script><script src="/_next/static/4ZTILNjjLxgNzxacVzoZb/_buildManifest.js" async="">It goes on.....
I’m trying to run the script in an environment where python2 is hard to install.
Would you be interested in a PR to support Python3? I notice https://github.com/mkb79/Audible/blob/master/src/audible/metadata.py has moved that way.
I’m probably not good enough to support 2 & 3 in the same code unless we’re lucky.
Is there ANY way of creating a column for the numer of ratings? Goodreads shows the average rating but if there are only 10 people rating the book it skews the average rating when it's rated at 5 stars vs. a 4.3 star book with 150,000 reviewers. I know it's scrapable since the Calibre plugin Goodreads has a function to get that, but I don't want to have to go through each of my books and get that data when I can get it and keep it updated with your .exe file.
Also, do you accept donations?
When I run this script, it pulls genre information as intended. But the read_dates column is entirely blank for all of my more than 300 books in my library export. Can provide more information as necessary about what I'm experiencing.
Book Id | Title | Author | Author l-f | Additional Authors | ISBN | ISBN13 | My Rating | Average Rating | Publisher | Binding | Number of Pages | Year Published | Original Publication Year | Date Read | Date Added | Bookshelves | Bookshelves with positions | Exclusive Shelf | My Review | Spoiler | Private Notes | Read Count | Owned Copies
Ok, I don't know what is up with Goodreads, but I have been seeing it happen with my Calibre Goodreads Sync plugin. I ran your import gr program on a new .csv. It added the genres and n_ratings ok, but it skipped a lot of read dates. These books corrospond with books that I manually edited the dates on the website. It seems that Amazon isn't allowing any plugin or scraping program to get the dates unless they were added on through a kindle. EVEN if you just go in and fix dates, it doesn't matter. So, I saw a lot of missed dates on my "completed" export. I went in and re-did it but they are still missing. Any suggestions? I really want them
According to Windows Defender, the prebuilt Windows executable contains the virus Trojan:Win32/Zpevdo.A!
I think Goodreads changed their login page because the .exe stalls at "getting login page"
Checking the network traffic when I select "start process" and there is a spike in activity then it stops. Please, PLEASE fix this, Goodreads has no way of showing their multiple dates read and genres in their exports and I use CALIBRE to keep track of the many books I have read. If I could donate to the cause I would.
Can't get it to go any further. Last used April 2022 no problems
Using Windows 10 and the standalone .exe version
Did you do something to change the tacked on start/finish dates are ordered?
They are presented in ascending read date order instead of descending.
It has messed up my ability to import the dates because when I separate the columns they used to fall into the correct orders in the row. ie. the first groupings were the first time I read the book, and so on making it easy to put the groupings into DS1 (date started 1) and DF1(Date finished 1) and so on down the line. Normally this wouldn't bother many people, but I have over 1900 read books with over 400 multiple read dates with some going up to 11 dates total.
If I read one book 10 times and another one 2 times the latest date I read both books will end up on the first column as the first date I read them.
I don't have the brain power to move the cells around to put the dates in order.
Like I asked, did you change the way the dates are grabbed, or is this a new way GR is presenting them?
Getting login page
Getting email login page
Logging in
Error logging in: Invalid URL '/errors/validateCaptcha': No scheme supplied. Perhaps you meant http:///errors/validateCaptcha?
Please? I will pay if you fix this :)
I've followed the read.me exactly and I'm able to log in to goodreads through the browser. It also appears to read the file correctly since the first book is listed (Leaving the Atocha Station, in this case), but then I keep getting this error. Thoughts?
Please log in to goodreads in the browser window that just opened and press enter
Getting cookies and setting up session
Book 1 of 141: Leaving the Atocha Station (Ben Lerner)
Traceback (most recent call last):
File "", line 198, in _run_module_as_main
File "", line 88, in _run_code
File "/Users/jdpruett/GoodreadsTool/Enhance-GoodReads-Export/enhance_goodreads_export/main.py", line 62, in
main()
File "/Users/jdpruett/GoodreadsTool/Enhance-GoodReads-Export/enhance_goodreads_export/main.py", line 56, in main
enhance_export(options)
File "/Users/jdpruett/GoodreadsTool/Enhance-GoodReads-Export/enhance_goodreads_export/enhance_export.py", line 211, in enhance_export
update_book_data(book, session)
File "/Users/jdpruett/GoodreadsTool/Enhance-GoodReads-Export/venv/lib/python3.12/site-packages/backoff/_sync.py", line 110, in retry
ret = target(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/jdpruett/GoodreadsTool/Enhance-GoodReads-Export/enhance_goodreads_export/enhance_export.py", line 142, in update_book_data
review_page = get_with_retry(session, make_review_url(book_id))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/jdpruett/GoodreadsTool/Enhance-GoodReads-Export/venv/lib/python3.12/site-packages/backoff/_sync.py", line 110, in retry
ret = target(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/jdpruett/GoodreadsTool/Enhance-GoodReads-Export/enhance_goodreads_export/enhance_export.py", line 58, in get_with_retry
resp.raise_for_status()
File "/Users/jdpruett/GoodreadsTool/Enhance-GoodReads-Export/venv/lib/python3.12/site-packages/requests/models.py", line 1021, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 403 Client Error: Forbidden for url: https://www.goodreads.com/review/edit/11100788
(venv) (base) DN0a1f6e89:Enhance-GoodReads-Export jdpruett$
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.