Skip to content

Repository files navigation

PublicDomain

public_domain busca y explora contenido de libre acceso en español, agregando varias fuentes bajo una interfaz común. La meta es hacer ese acervo accesible y remixeable: una API Ruby para consultarlo, filtro por licencia y una interfaz web ligera con Hotwire para navegarlo.

Fuentes disponibles

Fuente Contenido Licencia
Archive.org Textos, audio, video, imágenes, software Variada (con filtro "solo remixeable")
Wikisource (es) Textos / transcripciones CC BY-SA + dominio público
Europeana Bibliotecas virtuales, códices y manuscritos (BNE, Biblioteca Virtual Miguel de Cervantes, bibliotecas universitarias…) Normalizada (faceta de derechos) — requiere API key
Repositorio OAI-PMH (configurable) Repositorios universitarios y ephemera (UNAM, universidades de Hispanoamérica…). Modo explorar serendípico, no búsqueda dirigida Según el repositorio (se detecta la licencia por registro)
Project Gutenberg (vía Gutendex) Libros de dominio público, con filtro por idioma (es) Dominio público (todo el catálogo) — sin API key
Wikimedia Commons Media (imágenes, audio, video) libremente licenciada y de dominio público Normalizada (dominio público / CC) — sin API key
The Met — Open Access Obras de arte de dominio público (pinturas, grabados, objetos) CC0 / dominio público — sin API key

Project Gutenberg usa la API libre Gutendex: sin clave, todo el catálogo es dominio público y remixeable. La búsqueda filtra por idioma español por defecto; cada resultado enlaza a su versión legible (HTML/EPUB).

Wikimedia Commons consulta la API de MediaWiki (namespace de archivos) y normaliza la licencia desde los metadatos de cada archivo; cada tarjeta muestra la miniatura y enlaza a la página del archivo.

The Met usa su API Open Access: la búsqueda devuelve IDs y se obtiene cada objeto; solo los marcados isPublicDomain (CC0) se consideran remixeables. Con el filtro "solo remixeable" se descarta el resto.

Europeana necesita una API key gratuita. Consíguela en https://pro.europeana.eu/get-api y expórtala como EUROPEANA_API_KEY.

OAI-PMH trae presets de repositorios hispanos seleccionables en la UI (repo:) — o apunta a cualquiera con OAI_ENDPOINT (y, opcionalmente, OAI_LABEL / OAI_SET). OAI-PMH es un protocolo de cosecha, no de búsqueda: la consulta de texto se ignora y se navega con el resumptionToken — ideal para toparse con lo raro, efímero y casual. Los presets incluidos son puntos de partida; verifícalos para tu uso.

Cada resultado incluye la institución de origen (#provider).

Instalación

Agrega esta línea al Gemfile de tu aplicación:

gem "public_domain"

Y luego ejecuta:

$ bundle install

O instálalo directamente:

$ gem install public_domain

Uso (API Ruby)

require "public_domain"

# Por defecto: Archive.org, español, todos los mediatypes,
# ordenado por descargas.
page = PublicDomain.search("quijote")

# Otras fuentes:
PublicDomain.search("quijote", source: :wikisource)
PublicDomain.search("códice", source: :europeana)  # requiere EUROPEANA_API_KEY

# Solo material remixeable (dominio público / Creative Commons):
PublicDomain.search("quijote", remixable: true)

page.total          # => 137  (total de coincidencias)
page.total_pages    # => 3
page.next_page?     # => true

page.results.first.tap do |r|
  r.title           # => "El ingenioso hidalgo Don Quijote de la Mancha"
  r.creator         # => "Miguel de Cervantes Saavedra"
  r.language        # => "spanish"
  r.mediatype       # => "texts"
  r.details_url     # => "https://archive.org/details/..."
  r.thumbnail_url   # => "https://archive.org/services/img/..."
end

Opciones de búsqueda

PublicDomain.search("borges",
  source: :archive,     # :archive (defecto) o :wikisource
  language: "spanish",  # nil o "" para buscar en todos los idiomas
  mediatype: "texts",   # "texts", "audio", "movies", "image", "software"; nil = todos
  remixable: true,      # solo dominio público / Creative Commons
  sort: "downloads desc",
  rows: 50,             # máximo 100 por página
  page: 1)

ResultPage incluye Enumerable, así que puedes iterar directamente (page.each, page.map(&:title), …). Cada resultado responde a #license (un PublicDomain::License con name, remixable?, public_domain?) y a #source_key / #source_label.

Metadatos y archivos de un ítem

item = PublicDomain.item("elingeniosohidalgo")
item.title
item.files_of_format("pdf").each do |file|
  file.name           # => "quijote.pdf"
  file.download_url   # => "https://archive.org/download/.../quijote.pdf"
end

Si la petición a Archive.org falla, se lanza PublicDomain::Error.

Interfaz web (Hotwire)

Una app Sinatra + Turbo/Stimulus para buscar y navegar visualmente. El formulario y la paginación actualizan un Turbo Frame sin recargar la página.

# desde el repositorio
bundle exec rackup            # http://localhost:9292
# o
bundle exec ruby exe/public_domain --port 4567

Incluye:

  • Barra lateral de facetas: fuente, repositorio OAI (presets), idioma, tipo, orden y "solo remixeable".
  • Modal de detalle (Turbo Frame) para los ítems de Archive.org, con archivos descargables.
  • Visor IIIF (/viewer, Mirador) para códices y manuscritos de Archive.org y Europeana — botón "🔍 Ver" en las tarjetas.
  • Modo serendipia ("🎲 Sorpréndeme"): salta a una porción aleatoria de ephemera (almanaques, panfletos, coplas, aucas…).

Requiere sinatra y un servidor Rack (puma); ambos vienen como dependencias de desarrollo del gem.

Contenido en español

El foco en español se aplica por defecto con el filtro language:(spanish) de Archive.org. Puedes ampliarlo a todos los idiomas pasando language: nil.

Roadmap: más fuentes hispanas y remixeables

Ya existe una interfaz común de fuentes (PublicDomain::Sources), filtro por licencia, acceso a bibliotecas virtuales y códices vía Europeana (BNE, Biblioteca Virtual Miguel de Cervantes), un cosechador OAI-PMH con presets de repositorios hispanos (incluido Hispana, hispana.mcu.es), libros de dominio público vía Project Gutenberg / Gutendex, media libre de Wikimedia Commons, arte de dominio público de The Met, un visor IIIF de manuscritos, y un modo serendipia para ephemera. Pendientes:

  • Verificar y ampliar los presets OAI (los incluidos son puntos de partida) y afinar los sets de Hispana por colección.
  • Serendipia multi-fuente (hoy usa Archive.org) y lectura integrada dentro de la UI (Wikisource, Europeana, OAI, Gutenberg, Commons y The Met enlazan a su página).
  • Búsqueda simultánea en varias fuentes a la vez.
  • Más agregados de dominio público (p. ej. DPLA, Gallica/BnF vía IIIF).

Además del source moderno vía Gutendex, el scraper heredado de Project Gutenberg sigue disponible como PublicDomain::Search.new("consulta").results.

Desarrollo

Tras clonar el repo, ejecuta bin/setup para instalar dependencias. bin/console abre una consola interactiva. Ejecuta las pruebas y el linter con:

$ bundle exec rake        # test + rubocop

Licencia

Disponible como open source bajo los términos de la MIT License.

Código de conducta

Se espera que todas las personas que interactúan con el proyecto respeten el código de conducta.

About

No description, website, or topics provided.

Resources

Code of conduct

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages