La ficha del libro, las estanterías y la búsqueda #22
Loading…
Reference in a new issue
No description provided.
Delete branch "HBB:feat/book-detail-and-shelves"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
29 commits sobre
main(v1.2.0), 41 archivos, +4874/−382. Todo gira alrededor de la fichadel libro: lo que enseña, lo que deja hacer sin salir de ella, y lo que cuesta abrirla.
Búsqueda y estanterías
La ficha del libro
Perfil y detalles
Cómo se obtienen los datos
Casi todo sale de la página HTML del libro, que ya se descarga: autor, valoración, fechas,
idioma, serie, estantería y los identificadores para quitarlo de ella. Se lee una vez por
libro y se cachea en disco (
enrichment_cache.json), así que la segunda vez no cuesta nada.Solo la lista de ediciones pide una página aparte, y solo al abrirla.
Ojo con las ediciones: la instancia las ordena por un ranking con muchos empates y las sirve
de quince en quince, y en dos peticiones seguidas los empates no salen en el mismo orden, así
que al pasar de página se pierde alguna. Por eso el filtro por idioma, que deja el resultado
en una sola página; los idiomas los da la propia instancia mirando todas las ediciones a la vez.
Notas
cambio a CRLF de la 1.2.0, y sin eso el diff se leería como una reescritura de cada archivo.
Los archivos que en el proyecto son LF (NetworkClient, SearchScreen, HomeViewModel, HomeUiState)
siguen en LF.
moveToShelf(el respaldo dereading-statusashelveBook)ya integrado con los cambios de esta rama.
values,values-dayvalues-es; el resto de idiomas cae al inglés../gradlew testDebugUnitTest assembleDebugpasa. Probado en un Galaxy S23 contra bookwyrm.social.Los libros que ya están en las estanterías del usuario se buscan en la caché local, sin ninguna petición de red, así que se filtran mientras se escribe en vez de esperar al botón. Aparecen antes que los de la instancia, con un distintivo de la estantería en la que están, y al pulsarlos se salta a «Mis libros», se abre esa estantería y se resalta el libro un momento. La coincidencia ignora mayúsculas y acentos ("bronte" encuentra "Brontë") y pliega las letras que el Unicode no descompone ("sondergaard" encuentra "Søndergaard"). La consulta se parte en palabras y se exigen todas, aunque vengan de campos distintos, de modo que "orwell 1984" encuentra el libro. El objetivo del salto vive en HomeViewModel porque el paginador descarta el estado de las pestañas que quedan fuera de la vista. Una estantería solo aporta resultados una vez que se ha abierto al menos una vez, igual que ocurre con las estadísticas del perfil.La estantería «Leídos» dice ahora de qué serie es cada libro y qué número hace en ella, y un icono en la barra la reordena por series: la lista de las series de las que se ha leído algo, cada una con su nombre y las portadas en abanico, y al tocar una, sus libros en el orden en que se leen. «Volver» deshace un paso cada vez, de la serie a la lista de series y de ahí a la estantería. La serie no viaja en el .json del ejemplar. BookWyrm la convirtió en un objeto propio, con su página y su numeración, y los viejos campos series y series_number se quedaron vacíos: atar un libro a una serie hoy borra el número que hubiera suelto. Pero la página del libro sí la enseña, y marcada con microdatos schema.org: <span itemprop="isPartOf" itemtype=".../BookSeries"> Book <span itemprop="position">5</span> in <em><a href="/series/…">Nombre</a></em> </span> Así que se lee de ahí, de las propiedades y no del texto, que está traducido. Esa página ya se raspa una vez por libro para el autor, la valoración y las fechas, de modo que las series no cuestan ni una petición más. Los libros se agrupan por la URL de la serie y no por su nombre: dos series pueden llamarse igual, y el nombre cambia si alguien lo corrige. La versión del enriquecimiento sube a 3 para que las cachés ya guardadas se relean una vez y aparezcan las series de lo ya leído.Fusionado
Pull request closed