Czytaj fantastyka.pl (i nie tylko) z apki, czyli "Poczytaj mi tato" 2.0 (2022)
Submitted by marcin on Sat 23-Jul-2022

polski
polski blog
Android
Sobieski
poczytaj
EPUB
salon24.pl
dobreprogramy.pl

W Google Play umieściłem właśnie pewną aplikację. Może ona mieć jedną lub wiele zakładek (zupełnie jak przeglądarka www), z których każda może odwoływać się do tych samych tekstów, ale inaczej je sortować albo filtrować (czyli np. na jednej możemy całą poczekalnię z fantastyka.pl, a na drugiej tylko poczekalnię z ulubionymi autorami).

Motyw czarny dostępny jest bodajże od Android 10 (nie implementowałem własnego) i włączalny w ustawieniach samego systemu Android, strony dostępne offline (wcześniej czytane i załadowane) są wyróżnione kolorem białym lub niebieskim. Po kliknięciu na tekst możemy go czytać (przy czym aplikacja pamięta, do którego miejsca to robiliśmy, i wraca tam przy kolejnym otwarciu).

Ustawienia

Pod hamburger menu (trzy kropki po prawej stronie pola Szukaj) mamy różne opcje dla danej zakładki:

Można sobie tu przede wszystkim wybrać, co chcemy czytać w danej zakładce (który serwis). Do tego istnieje możliwość automatycznej synchronizacji w tle (bez tego należy użyć gestu swype, czyli przeciągnąć palcem z samej góry listy w dół) albo wymuszenia na aplikacji wczytania spisu treści ze wszystkich stron (normalnie aplikacja czyta tylko dwie pierwsze strony, gdzie zazwyczaj dzieje się najwięcej). Dostępne są też dodatkowe możliwości filtrowania po tagach (to ta ostatnia linia przy każdej pozycji) lub autorach:

Czerwone / zielone

Każdą pozycję na liście tekstów można przesunąć w lewo lub prawo i przypisać do czerwonej lub zielonej kategorii:

Takie strony widzimy wtedy po wybraniu jednej z dwóch pierwszych opcji w hamburger menu (Pokaż zielone lub pokaż czerwone). Żeby wrócić do "normalnej" listy, wystarczy ponownie wybrać opcję w hamburger menu i wtedy zostanie odhaczona. Stronę w zielonej lub czerwonej kategorii można przesunąć do kategorii "normalnej" lub przeciwnej przesuwając w bok.

Do czego to może się przydać? Czerwona kategoria to mogą być teksty złe, zielona dobre. Albo zielona do kolejka do czytania, a czerwona to przeczytane.

Szukanie

Każdą zakładkę można przeszukiwać - teksty jest szukany w tytule, autorach i tagach (obecnie ta część wymaga polskich liter) albo w pobranych tekstach (tu nie musimy podawać polskich liter, a aplikacja i tak je dopasuje).

Znalezione dopasowane teksty są podświetlane na zielono.

EPUB

Pobrane teksty z danej zakładki można eksportować do EPUB, albo z powrotem wczytać. Konwerter jest trochę inny niż w poprzednich projektach, o których piszę poniżej.

Zakładka szukania

To jest funkcjonalność z wersji 1.0 aplikacji. Zapytanie wysyłane jest do wybranych stron, a aplikacja próbuje scalić wyniki, czasem z lepszym, a czasem gorszym rezultatem.

Uprawnienia

W manifeście są trzy: INTERNET, ACCESS_NETWORK_STATE i WRITE_EXTERNAL_STORAGE. Pierwsze dwa potrzebne są do dostępu do sieci (pobierania plików), trzeci wymagany jest, gdy aplikacja chce znaleźć folder Downloads (tego trzeciego wymagania nie trzeba przyznawać; bez niego link do plików EPUB będą otwierane w przeglądarce www zamiast w systemowym managerze pobierania).

Prywatność danych

Sam jako autor nic nie zbieram.

Gdzie możliwe, używam https (czyli praktycznie wszędzie).

W zakładce Search aplikacja wysyła zawartość zapytania do wybranych stron, a w zakładce z czytaniem musi odpytywać strony z indeksami i strony z tekstami (czy też obrazkami do tekstów). Myślałem, żeby dodać obsługę TOR, i jeśli będzie zainteresowanie...

Historia

W 2017 opublikowałem malutkę aplikację, która na Androidzie zadawała pytanie kilku stronom i łączyła wyniki wyszukiwania. Więcej na ten temat można było przeczytać m.in. w tekście Litwo ojczyzno moja... czyli o Januszach biznesu, ebookach i kulturze słów kilka.

W tym samym roku opublikowałem kod aplikacji BooksAPIExample, która wyszukiwała książki w Google Books, rok później nie tylko sklonowałem repozytorium (już nie mogę sobie przypomnieć po co), ale też przygotowałem aplikację TasksDemo pokazującą różne zabawy z elementami w Androidzie.

Luty 2020 to początek skryptu do generacji plików EPUB z fantastyka.pl i fantastykapolska.pl (początkowo w PHP, a od sierpnia wersja dla fantastyka.pl w Java Script).

Około kwietnia-maja 2020 zaproponowałem kod enginu, który mógłby napędzać serwis fantastyka.pl (nodejs, lekkie komponenty, kod źródłowy, itp.). Dyskusję o tym można znaleźć np. tutaj, kod też był stosunkowo dojrzany.

W 2021 "Poczytaj mi tato" 1.0 trafił na GitHub, a w lato 2022 dodaję funkcję czytania tekstów z fantastyka.pl i opowi.pl, jak również możliwość wyszukiwania, zakładkowania, eksportu i importu EPUB.

Co dalej?

Zależy od użytkowników. Obecna wersja jest dosyć dojrzała, ale... trzeba ją trochę traktować jak demo preview. Jeżeli będzie zainteresowanie, będę całość oczywiście rozwijał, i dodawał to, co np. było całkiem zrobione w enginie dla fantastyka.pl (komentarze, itp.). Czy tak czy inaczej, kod jest już dostępny... i zawiera ostatnie kontrolki androidx, etc. (nie jest to jakaś prehistoria).