imagen

Exportar datos de Google Books e importar a GoodReads

03.Aug.2021 — Julio

Google Books parece abocado a desaparecer cualquier dia de estos tal como Google nos tiene acostumbrados. GoodReads está bien pensado y esperemos dure algo más.

Se trata de pasar nuestros datos de Google Books y pasarlos a GoodReads de la forma más fácil posible.

  1. exportar a xml de GoogleBooks
  2. pasar script de lua
  3. con los datos de salida de ese script grabar fichero .csv (recomienda GoodReads separador la ",")
  4. importar a GoodReads

Exportar

GoogleBooks permite exportar los datos que tengamos de libros exportando de librería en librería (prime problema como tengamos varias "Estanterías") en formato XML. Tenemos que ir a la estantería que queramos y en el botón de configuración escoger la opción de exportar a xml.

expor

Obtendremos ficheros xml de esta pinta

xml

Script en Lua

Pasar el siguiente script de forma './xml_googlebooks.lua ficheroxmlexportado'

#!/usr/bin/env lua
--[[ 29.07.2021
* exporto estantería a estantería de google books
* prefiero pasar: './xml_books.lua tintin.xml>> tsv_biblioteca.csv' uno a uno
* ese fichero tsv pasarlo a formato columnas goodreads que parece más normal
--]]


local xml2lua = require("xml2lua")
local handler = require("xmlhandler.tree")

function resumenxml(fichero)
  --print(fichero)
  local i, p
  local libreria, titulo, autor, idtipo, idvalor

  local xml = xml2lua.loadFile(fichero)

  local parser = xml2lua.parser(handler)
  parser:parse(xml)


    libreria = handler.root.library.list_title
    print("FICHERO\tLIBRERÍA\tTÍTULO\tAUTOR\tidTIPO\tISBN")
    for i, p in pairs(handler.root.library.books.book) do
        titulo = p.title
        autor = p.contributor
        idtipo = ''
        idvalor = ''
        if (p.identifier ~= nil) then
            idtipo = p.identifier.type
            idvalor = p.identifier.value
        end
    print(string.format("%s\t%s\t%s\t%s\t%s\t%s", fichero, libreria, titulo, autor, idtipo, idvalor))
  end
end

resumenxml(arg[1])

Obtendremos una salida del tipo

cabecera goodreads

que podremos redireccionar a fichero o lo que queramos. Las cabeceras que he puesto en el script no coinciden con las que GoodReads quiere pero prefiero así para tener más claro lo que meter en cada columna del siguiente paso.

Genera tu fichero para importar como tú quieras

Por último se recomienda generar un '*.csv' con la cabecera de columnas que recomienda GoodReads pero con los datos obtenidos anteriormente.

Title, Author, ISBN, My Rating, Average Rating, Publisher, Binding, Year Published, Original Publication Year, Date Read, Date Added, Bookshelves, My Review

Ya podemos ir a GoodReads a importar el fichero.

https://www.goodreads.com/review/import

Tags: bash, lua

Comments? Tweet