
Contenido
- Introducción
- Instalación
- Cómo se utiliza
- Datos de entrada
- Metadata
- Columnas
- Fichero de Log
- Libros eliminados
- Ejemplos
- Repositorio en GitHub
- Ayuda
Introducción
Últimamente mi biblioteca digital ha crecido muy deprisa, conteniendo en este momento más de 600 libros. Me resultaba imposible hacer un seguimiento de todos los libros que tengo.
Por eso decidí crear una herramienta sencilla para subir todos los libros (sólo los metadatos, no el libro en sí) a una base de datos en Notion. Gracias a ello, podré asignar estados, prioridades, etiquetas, filtrar por una propiedad o autor y añadir comentarios a los libros.
Básicamente, la herramienta analizará todos los libros (pdf o epub) de una ruta determinada, creará un archivo .csv con los metadatos extraídos y lo subirá a una base de datos de Notion. Llevará un registro de los libros cargados, de modo que la próxima vez que se ejecute la herramienta, sólo se cargarán los nuevos.

Instalación
Con Homebrew (Recomendado para MacOS)
brew install helguera/tap/library2notion
Con PIPX (Recomendado para Linux y Windows)
pipx install library2notion
Con PIP
pip install --user library2notion
Nota: requiere Python 3.7 o posterior.
Desde GitHub
Este proyecto utiliza poetry para la gestión de dependencias y empaquetado. Tendrás que instalarlo primero. Consulte la documentación oficial de poetry para obtener instrucciones.
git clone https://github.com/helguera/library2notion.git
cd library2notion/
poetry install
poetry run library2notion
Cómo se utiliza
$ library2notion --help
usage: library2notion [-h] -p PATH [-l LOGFILEPATH] [-e EXTENSIONS [EXTENSIONS ...]] [-t NOTIONTOKEN] [-u NOTIONDBURL] [-f] [-o OUTPUTFOLDER]
Import/Merge your digital library collection in .PFD or .EPUB format to Notion.
general options:
-p, --Path PATH Path where to start looking for books. It will also check all subfolders
-l, --LogFilePath LOGFILEPATH Location of the log file if exists. If not, a new one will be created in the specified location
-e, --Extensions EXTENSIONS List of extensions to be taken into account. At this moment .PDF and .EPUB are supported.
-t, --NotionToken NOTIONTOKEN Notion token, stored in token_v2 cookie for notion.so
-u, --NotionDbUrl NOTIONDBURL Notion DB URL
-f, --ForceUpload FORCEUPLOAD Force upload to Notion (if token and db url are provided) ignoring the log file. If no Notion data is provided it will generate the .csv file.
-o, --OutputFolder OUTPUTFOLDER Folder to store .csv, .xlsx, and deleted.json files. If not provided it will use './'
-h, --help show this help message and exit
Datos de entrada
Se debe pasar una ruta de inicio para que la aplicación comience a buscar libros con la opción --Path
. Además, se necesita un archivo de registro si ya ha ejecutado la herramienta anteriormente.
Se puede pasar con la opción --LogFilePath
. Este archivo de registro contendrá el estado de la ejecución anterior, de modo que los libros que ya se hayan escaneado y cargado no se verán afectados. Si no se proporciona este archivo de registro, se creará uno nuevo.
Opcionalmente puede especificar qué extensiones de libros quiere que analice la aplicación con la opción --Extension
. En este momento soporta .PDF y .EPUB.
Si quieres que la aplicación cargue los datos en Notion, debes proporcionar una URL a una base de datos Notion existente con la opción --NotionDbUrl
; la URL debe enlazar a una vista de la base de datos, no a una página.
La herramienta también requiere que proporcione una cookie token_v2 para el sitio web de Notion mediante la opción --NotionToken
. Si quieres saber cómo obtener dicha cookie consulta este post
Atención: La cookie token_v2 proporciona acceso completo a tu cuenta Notion. No la compartas con nadie.
Metadata
La herramienta extraerá los siguientes datos para subirlos a Notion:
- Nombre del fichero: es la ruta completa al fichero. Se utiliza como clave primaria de la tabla en Notion, por lo que no se puede duplicar.
- Título: título del libro.
- Etiquetas: las categorías del libro. Se generan automáticamente a partir de la ruta. Por ejemplo, si la ruta es
./Tech Books/Programming/Python/mybook.pdf
, las etiquetas seránTech Books
,Programming
,Python
. - Autor: el autor o autores del libro.
- Editor: el editor del libro.
- Formatos: los formatos disponibles del libro. Un libro disponible en varios formatos sólo aparecerá una vez en la base de datos.
- ISBN: el ISBN.
Columnas
La herramienta creará una columna por cada metadato extraído. Además, se crearán las siguientes, que estarán vacías porque sólo están pensadas para ser utilizadas en Notion:
- Prioridad: permite seleccionar una prioridad y filtrar por esa propiedad en Notion.
- Estado: el estado del libro (leído, no empezado, en espera...)
- Comentarios: si necesitamos añadir algún comentario al libro
Fichero de Log
El archivo de registro es un archivo json que contiene información sobre los libros que ya se han cargado en Notion. Se generará automáticamente la primera vez que se utilice la aplicación. En las siguientes ejecuciones, si se han añadido uno o más archivos a la ruta, se debe proporcionar el archivo de registro para que la herramienta sepa que sólo hay que escanear y cargar esos nuevos libros.
Libros eliminados
Si se borra un libro de la ruta, la herramienta lo detectará la próxima vez que se ejecute (sólo, por supuesto, si se proporciona un archivo de registro). Esto generará un archivo deleted.json en la carpeta ouput con los libros borrados.
Pero, hay que tener en cuenta, el libro no será borrado de Notion. Eso tiene que hacerse manualmente.
Ejemplos
1. Escanear carpeta en busca de ficheros .pdf y .epub por primera vez y subir a Notion
library2notion
-p "YOUR_PATH"
-l "./your_log_file.json"
-e .pdf .epub
-t YOUR_NOTION_TOKEN
-u YOUR_NOTION_DB_URL
2. Escanear carpeta en busca de ficheros .pdf y .epub teniendo ya un fichero de log y subir a Notion
library2notion
-p "YOUR_PATH"
-l "./your_log_file.json"
-e .pdf .epub
-t YOUR_NOTION_TOKEN
-u YOUR_NOTION_DB_URL
3. Escanear carpeta en busca de ficheros .pdf y .epub y crear el documento .csv exclusivamente
library2notion
-p "YOUR_PATH"
-l "./your_log_file.json"
-e .pdf .epub
4. Escanear carpeta en busca de ficheros .pdf y .epub y forzar la subida a Notion ignorando el fichero de registro
library2notion
-p "YOUR_PATH"
-l "./your_log_file.json"
-e .pdf .epub
-t YOUR_NOTION_TOKEN
-u YOUR_NOTION_DB_URL
-f
5. Escanear carpeta en busca de ficheros .pdf y .epub, subir el resultado a Notion y especifar una ruta para los ficheros generados
library2notion
-p "YOUR_PATH"
-l "./your_log_file.json"
-e .pdf .epub
-t YOUR_NOTION_TOKEN
-u YOUR_NOTION_DB_URL
-o "YOUR_OUTPUT_FOLDER"
Repositorio en GitHub
Puedes encontrar el repositorio completo en mi GitHub haciendo click aquí.
Ayuda
Si necesitas ayuda con cómo se usa la herramienta o has encontrado un problema puedes contactarme en javier@javierhelguera.
Espero que te haya resultado útil este post.
Javier Helguera.
Comentarios