Chronotope’s avatarChronotope’s Twitter Archive—№ 119,848

  1. Ok, finished writing a thing that exports my GoodReads data and wow is their API some NONSENSE. I'm just going to skip over the insanity of it all being XML, but there's also a ton of holes and gaps in data that *should not be there* and then we get to the endpoints...
    1. …in reply to @Chronotope
      The Book object is represented in at least three different formats and each format has some data that the other does not and that doesn't even get into the weird formatting of authors, ISBNs or the export file...
      1. …in reply to @Chronotope
        Also BCIDs are everywhere in the Goodreads system as blank properties, no where on the site, and weirdly prominent as one of the exported columns, though I'm not sure how I would even enter it in their UI.
        1. …in reply to @Chronotope
          In case you were wondering, BCID is a (as far as I can tell) BookCrossing ID and you could have it on any book you add to your GR bookshelves - bookcrossing.com/labels
          OpenGraph image for bookcrossing.com/labels
          1. …in reply to @Chronotope
            I never heard of this service until I saw the ID in the GoodReads export.
            1. …in reply to @Chronotope
              Anyway, the crazy thing is the book object is formed differently if it is on your shelf vs as your reviewed object vs as an abstract book lookup. And joining and sanitizing those different versions together has been a HUGE pain. Esp b/c they threaten a non-specific request limit
              1. …in reply to @Chronotope
                If I was smart I would be syncing this up with a database but I'm an idiot and also want a useful archive in case they decide to turn me off so instead I'm writing book objects to individual JSON files. (Also b/c I'm on Glitch and it is easier than remembering how to use sqlite)
                1. …in reply to @Chronotope
                  I also tried to do old-style Javascript models b/c why not and now I remember why I started using Typescript.
                  1. …in reply to @Chronotope
                    Years of writing JS and scope still trips me up when I'm in ES5 >.<
                    1. …in reply to @Chronotope
                      Things that none of the API endpoints define even though they have properties for it: - editors vs authors vs illustrators vs pencilers in comics (even though there is an author role) - publishing day and month for > 50% of the time - ISBN > 25% of the time.
                      1. …in reply to @Chronotope
                        Another fun fact, everything after the last number in a goodreads URL is totally useless. It's all just cruft on the ID which is all you need to get to a book's page.
                        1. …in reply to @Chronotope
                          1. …in reply to @Chronotope
                            It's pretty hacked together on my side, just trying to get the most complete copy of my own data as possible, which is harder than it looks like with GoodReads. A lot of JSON files being created in the process right now.


Search tweets' text