wtorek, 3 stycznia 2017

Extra Kindle Tools

Przedmowa

Extra Kindle Tools to narzędzie, które pozwala na zrobienie porządku na czytniku Kindle, bez konieczności podłączania go do komputera. Na pomysł stworzenia takiego narzędzia „wpadłem” w połowie grudnia 2016 roku. Źródła znajdują się na github-ie (github.com/AthameBook/EKT/).

Projekt pierwotnie bazował na PC-owym narzędziu ExtractCoverThumbs stworzonym przez Roberta Błauta (znanego też jako quiris), który w swoim projekcie korzystał m.in. z pracy Johna Howella (obsługa formatu KFX) czy Charlesa M. Hannuma oraz Pawła Jastrzębskiego (autorów kindle_unpack).

ExtractCoverThumbs miał jednak z mojego punktu widzenia kilka wad, z czego najpoważniejsza dotyczyła uzależnienia działania od obecności numeru ASIN (bez tego tytułowy „cover” nie powstawał) oraz działał z poziomu komputera.

Aktualną wersję, o możliwościach znacznie rozbudowanych względem ExtractCoverThumbs (z oryginalnego kodu pozostał głównie pomysł…), przygotowała @Becky, znana z forum eksiazki oraz z tłumaczenia interfejsu Kindle na język polski. Ja w tym układzie robiłem za „natręta”, który zasypywał pytaniami quirisa oraz dopingował pracę @Becky. No dobra, moja rola nie była do końca tak bezproduktywna – przygotowałem niezbędny składnik całości – pythona 2.7 działającego bezpośrednio na czytniku wraz z modułem Pillow.

Beczka dziegciu…

Extra Kindle Tools to nie jest samodzielne narzędzie. Do działania wymaga pythona wraz z niestandardowym modułem. O ile na PC nie stanowi to żadnego problemu, o tyle na czytniku już nie jest tak miło. Do tego trzeba zastosować jakiś „wyzwalacz” lub powiązać wykonanie z jakimś zdarzeniem. Osobiście dodałem do systemu polecenie „ekt”, które wykonuje skrypt.

Niedogodność to brak generowania okładek dla niektórych e-booków w formacie KFX – tych które informacje o okładce mają w części zaciemnionej DRM-em. Na szczęście to mniejszość w Kindle Store, ale i tak irytuje. Oczywiście nie wygeneruje okładki, jeśli takowej nie ma zaszytej w pliku (jeden przykład w filmie demonstracyjnym).

Dodatkowo domyślnie cierpi na tę samą złośliwość, zafundowaną przez Amazon, co ExtractCoverThumbs – od wersji oprogramowania Kindle FW 5.8.5, wszystkie własne pliki pobrane z chmury trafiają na „czarną listę” – nie można dla nich wygenerować okładki, a dokładniej można, ale czytnik z niej nie skorzysta (nie wyświetli się w Bibliotece).

Osobiście stosuję pewien skomplikowany mod, który niweluje ten efekt, ale niestety zrobiłem go dość intuicyjnie, przy okazji kilkanaście razy brickując czytnik (nawet kiedy już wiedziałem co robić) – po prostu modyfikowany plik (/opt/amazon/ebook/lib/kaf.jar) jest z jednej strony wrażliwy na zachowanie integralności (nie można bezkarnie w nim „grzebać”), a z drugiej jest niezbędny do prawidłowej pracy czytnika (ładuje się jako jeden z pierwszych). Co gorsza jest nieprzenośny pomiędzy różnymi egzemplarzami czytnika, chyba że pochodzą one z tej samej partii produkcyjnej tzn. poprawny plik z PW3 zadziała na niektórych innych PW3, ale nie na każdym.

Z uwagi na powyższe problemy taki mod funkcjonuje aktualnie na tylko dwóch czytnikach w Polsce i z dużym prawdopodobieństwem także na Świecie. Przydałby się jakiś hacker, który zrobi to porządnie, bo brak okładek dla PDOC-ów jest strasznie irytujący. Nawet pomimo domyślnego upośledzenia w tym względzie, Extra Kindle Tools to nadal przydatne narzędzie, o czym poniżej.

Beczka miodu…

W przeciwieństwie do ExtractCoverThumbs, Extra Kindle Tools działa nie z poziomu komputera, a z poziomu czytnika. Przez to nie tylko uniezależnia nas od kabla, ale też może korzystać z danych ukrytych w systemie, a niedostępnych z poziomu PC. Dzięki temu działa niezależnie od obecności numeru ASIN (ExtractCoverThumbs pomija takie pliki) i generuje okładki dla każdej książki, dla której to możliwe (pomija PDF-y i wymaga jedynie tego by jakakolwiek okładka była w pliku).

Po ExtractCoverThumbs odziedziczył także generowanie numerów stron – zgrubnym algorytmem, nie przez pobieranie tej liczby z serwisu Lubimy Czytać – to spowalnia drastycznie pracę, a efekt i tak nie jest precyzyjny, bo księgarnie często dodają stronę lub dwie z informacjami o „znaku wodnym” – co przekłamuje wynik, a dla publikacji zawierających grafiki czy tabelki, strony i tak nie będą się pokrywać – słowem: więcej wad niż pożytku.

Ma jednak więcej funkcji – przede wszystkim moduł czyszczący czytnik z:

  • folderów .sdr będących pozostałością po usuniętych już książkach;
  • pustych folderów;
  • okładek dla książek, których już nie ma na czytniku;
  • plików tymczasowych (.partial, _ASC itp.);
  • plików wininfo_screenshot*.txt tworzonych wraz z zrzutem ekranu.

W skrócie – dba o porządek na czytniku.

Działanie w praktyce

6 komentarzy:

  1. W jaki sposób krok po kroku wgrać i uruchomić ten skrypt

    OdpowiedzUsuń
  2. Zakładam, że źródła pobrałeś i że masz wgrany jailbreak. Musisz wgrać jeszcze pythona, z tym że wersja z MR jest bez Pillow. Moduł ten potrzebny jest do generowania okładek (i tylko tam), ale jeśli nie masz pewnego dość trudnego moda, to okładek i tak nie zobaczysz (mimo że odpowiednie pliki wygenerują się w odpowiednim miejscu). Jako „sprzątacz” i generator numerów stron nadal się sprawdzi. Trzeba tylko dodać sobie do systemu jakiś wyzwalacz, który uruchomi ten skrypt przez pythona. Ja stosuję taki jak powyżej, ale inni mogą np. dodać sobie odpowiedni kod do KUAL-a. Możliwe że za kilka tygodni pojawi się „edycja dla lam technologicznych”, ale to jeszcze nie jest przesądzone. Tamta wersja generowałaby okładki u każdego, bez konieczności stosowania dodatkowych modów. Wtedy dodam wersję wyzwalacza przez KUAL-a, na to jednak trzeba jeszcze trochę poczekać.

    OdpowiedzUsuń
  3. Czy "wersja dla lam technologicznych" faktycznie się pojawi?
    Czy da radę to odpalić bez jailbreaka, tego jak czytałem na firmware 5.9.2.xxx raczej nie da się już zrobić.
    Jeżeli to istotne interesuje mnie to dla PW3

    OdpowiedzUsuń
    Odpowiedzi
    1. "Wersja dla lam technologicznych" jest relatywnie łatwa do przygotowania, ale nie narzekam na nadmiar wolnego czasu, więc nie deklaruję żadnego terminu.

      Jailbreak wymagany. Ewentualnie inny dostęp do roota. Oczywiście możliwy do zrobienia na dowolnej wersji, z tym że albo przez port szeregowy, albo samemu trzeba sobie znaleźć sposób na modyfikacje programowe (tu takie wątki nie będą już poruszane).

      Usuń
  4. hmmm, port szeregowy czy własny sposób na modyfikacje programowe, to rozumiem, że raczej poza zasięgiem "lam technologicznych" oraz nieco bardziej ogarniętych użyt(sz)kowników. Port szeregowy to jak dobrze pamiętam rozebranie urządzenia, co raczej od razu mnie zniechęca. A na owe modyfikacje programowe, to jest gdzieś w necie jakieś sensowne miejsce gdzie można o tym poczytać i coś zrozumieć bez zaawansowanej znajomości programowania?

    OdpowiedzUsuń
    Odpowiedzi
    1. Nie znam takiego miejsca. To nie oznacza, że nie ma, ale zwyczajnie nie potrzebuję dla siebie, a samo „nie rzuciło mi się w oczy”. Z uwagi na „ciszę” na największych zbiorowiskach osób zajmujących się tą tematyką, podejrzewam że istnieje jakaś nieformalna umowa. Jeśli to prawda, to pozostaje poszukiwanie informacji w sieciach takich jak tor lub nawet głębiej, ale to zdecydowanie nie jest opcja dla „lam” – w przeciwieństwie do portu szeregowego – to można opanować bez wcześniejszych doświadczeń.

      Usuń