5 puntos por GN⁺ 2024-10-22 | 1 comentarios | Compartir por WhatsApp
  • Epublifier es una extensión de navegador que extrae una lista de páginas HTML de un sitio web, las compila en un libro ePub y permite llevarlo al eReader que el usuario elija
  • Los usuarios avanzados que puedan escribir JavaScript pueden agregar definiciones de parser para personalizar cómo se parsea un sitio específico
  • Soporta Novel Update, Wuxia World, numerosos sitios de awesome-read-the-docs, sitios personalizados basados en índices UL/OL, regex sobre texto de enlaces o query selectors, y webapps personalizadas con un elemento de título y un botón Next
  • Como se ejecuta dentro del navegador, puede procesar páginas incluso en sitios que generan o cargan texto dinámicamente con JavaScript, y ofrece scraping basado en UI para seleccionar elementos clave con clics del mouse
  • No está pensado para tareas en segundo plano repetitivas ni como un scraper dedicado y robusto; en sitios que otros programas ya manejan bien, es difícil esperar mejor rendimiento que el de herramientas con configuración específica

Qué hace Epublifier

  • Epublifier es una herramienta que convierte sitios web a ePub
  • Extrae una lista de páginas HTML de un sitio web y las compila en un libro ePub para que el usuario pueda llevarlo al eReader que prefiera
  • Los usuarios que sepan escribir JavaScript pueden agregar definiciones de parser adicionales para personalizar el parseo de sitios arbitrarios
  • El uso puede consultarse en la wiki

Sitios y estructuras de página compatibles

  • Actualmente soporta lo siguiente
    • Novel Update

    • Wuxia World

      • Numerosos sitios incluidos en awesome-read-the-docs
      • Sitios personalizados que usan elementos UL/OL como índice
      • Sitios personalizados que usan regex sobre texto de enlaces o query selectors
      • Webapps personalizadas con un elemento de título (header) predefinido y un botón Next clickeable

Instalación

Ejemplos de uso

  • Hay un ejemplo de extracción de lista de páginas en Novel Update
  • Hay un ejemplo de recorrido de una webapp siguiendo el botón Next en Wuxia World
  • Hay un ejemplo de extracción de documentación en otros sitios de documentación, como la documentación de FastAPI

Por qué se hizo como extensión de navegador

  • Esta herramienta está pensada para generar ePub temporales en sitios web que no se scrapean bien con scripts CLI tradicionales basados en requests o con algunas extensiones de Chrome que scrapean en función de pestañas o ventanas abiertas
  • Los scrapers CLI existentes y otras extensiones suelen estar adaptados a sitios predefinidos, y pueden no servir para sitios fuera de ese alcance
  • Algunas herramientas requieren bastante configuración o escritura de código
  • Algunos sitios generan o cargan texto dinámicamente con JavaScript, por lo que el navegador debe ejecutar JavaScript
    • Esa fue la principal brecha que motivó la creación de Epublifier
  • Al ejecutarse dentro del navegador, también podría tener menos probabilidades de ser detectado o bloqueado

Forma de uso prevista y límites

  • Epublifier no es una herramienta pensada para usarse como scraper robusto ni como tarea programada en segundo plano que se ejecute repetidamente
  • La decisión de hacer que los elementos clave a scrapear se seleccionen desde la UI también está relacionada con esta forma de uso
  • Busca la versatilidad, para poder scrapear con relativa facilidad y con unos pocos clics del mouse, incluso sin configuración específica por sitio
  • Si otro programa o extensión ya maneja bien un sitio, esas herramientas están configuradas para ese sitio, por lo que Epublifier no funcionará mejor
  • Está orientado a quienes quieren scrapear un sitio una o dos veces sin dedicar mucho tiempo a programar o configurar

Build

  • El entorno de build es Windows 10 y NPM 8.1.2
  • El procedimiento de build es el siguiente
    • Instalar NPM
    • Ejecutar npm install en el directorio base
    • Ejecutar npm run build_ff para Firefox
    • Ejecutar npm run build para Chrome

Componentes utilizados

  • Para la generación de ePub se usa jEpub

1 comentarios

 
GN⁺ 2024-10-22
Comentarios de Hacker News
  • La diferencia de esta extensión frente a otros scrapers es que está pensada para generar EPUBs temporales en sitios que los scrapers tradicionales no extraen bien
    Normalmente los scrapers de línea de comandos u otras extensiones tienen una lista de sitios compatibles ya definida, o requieren bastante configuración o código
    Además, algunos sitios generan o cargan el contenido dinámicamente con JavaScript, así que el navegador tiene que ejecutar ese JavaScript directamente, y ese era el mayor hueco
    Al ejecutarse dentro del navegador, también podría haber menos probabilidad de que la detecten o bloqueen
    No está pensada para usarse de forma robusta como una tarea programada en segundo plano que corre repetidamente, y por eso tiene una UI para elegir los elementos clave que se van a extraer
    Es una herramienta para perder menos tiempo al extraer una o dos veces con unos cuantos clics, sin configuración específica para cada sitio; si ya hay otros programas o extensiones que manejan bien ese sitio, probablemente sean mejor opción
    La hice porque no suelo quedarme mucho tiempo en el mismo sitio

  • Habiendo hecho algo parecido por mi cuenta, la parte interesante de esta herramienta es la UI para ajustar repetidamente la extracción de contenido en sitios arbitrarios
    Poder manejar todo el proceso de extracción desde una GUI completa la hace mucho más flexible que el enfoque habitual

  • Estaría increíble si pudiera manejar incluso sitios donde todas las secciones están detrás de una UI de acordeón que solo se ve al expandirlas, y al abrir una las demás se colapsan

    • En mi caso funciona en este sitio: https://docs.ray.io/en/latest/
    • ¿Puede eliminar popups como los de newsletter, suscripción, inicio de sesión o aviso de cookies? ¿También puede leer páginas que requieren iniciar sesión?
  • Ahora mismo yo también estoy haciendo algo muy parecido
    Estoy creando un web scraper y un parser de EPUB principalmente para blogs y novelas web, y guardo los datos en una base de datos junto con categorías y etiquetas
    También estoy haciendo una PWA para lectura offline que permite seguir el progreso de lectura de varias obras y conservar múltiples versiones de la misma historia (novela web y EPUB publicado)

  • Calibre soporta una cantidad enorme de sitios
    https://github.com/JimmXinu/FanFicFare
    https://github.com/JimmXinu/FanFicFare/wiki/SupportedSites

  • Hace tiempo hice algo parecido, Kindle-send[0], para enviar blogs al Kindle, y por dentro usa readability
    Ahora lo uso para enviar blogs, libros y a veces archivos completos de sitios web, y también se puede usar desde scripts
    Como se pueden exportar los subrayados de Kindle a Obsidian, una ventaja de crear este tipo de EPUB es que puedes reunir los subrayados en un solo lugar
    Aunque se llama kindle-send, se puede enviar a cualquier lector electrónico que use correo electrónico como método de transferencia de libros
    [0] https://github.com/nikhil1raghav/kindle-send

  • Hice algo parecido para terminal Unix, orientado a páginas web, Gopher y Gemini: Offpunk
    https://sr.ht/~lioploum/offpunk/
    En vez de EPUB, guarda Gopher como archivos de texto, Gemini como archivos Gemini y las páginas web como HTML+imágenes en caché
    Puedes ver la estructura jerárquica en ~/.cache/offpunk o visitar el contenido directamente desde Offpunk
    Si usas la función tour, en vez de hacer doomscrolling terminas leyendo todos los textos en orden y hasta el final, en modo texto

  • Hay varias herramientas parecidas a Epublifier
    https://epub.press/
    https://github.com/dteviot/WebToEpub
    https://dotepub.com/

  • Está limpio
    Hace tiempo hice una versión simple de este concepto que guardaba archivos EPUB en el sistema de archivos del servidor y luego los sincronizaba con mi lector electrónico
    https://github.com/solarkraft/webpub
    El ingrediente clave es Postlight Parser, que convierte sitios web en una vista simplificada de “documento”

  • ¿También soporta http://fanfiction.net/? No he encontrado una solución fácil para ese sitio

    • Se puede exportar como EPUB desde https://fichub.net/
    • Yo uso el complemento de Calibre: https://www.mobileread.com/forums/showthread.php?t=259221
      Funciona hasta cierto punto, pero algunas historias salen bien y otras solo traen la primera página
    • Fanfiction.net en sí es simple, pero tiene el bloqueo de bots de Cloudflare configurado de forma agresiva
      No he visto otro enfoque que funcione bien para obtener el contenido aparte de usar un navegador headless
    • Se pueden obtener todos los enlaces de capítulos como CSV, y parece que la estructura solo incrementa el número en la URL