Automatyzujemy konwersję ePub do mobi i wysyłamy do Kindle
Chociaż Kindle to najpopularniejsze czytniki, wśród polskich wydawców dalej dominuje format ePub, który przez te urządzenia nie jest wspierany. Na szczęście istnieją narzędzia pozwalające na szybką konwersję do prawidłowej postaci – mobi. Jednym z nich jest darmowa aplikacja Calibre. Z jej pomocą oraz kilku innych narzędzi zautomatyzujemy proces konwersji naszych elektronicznych książek.
Do wykonania powyższego zadania potrzebne nam będą:
- aplikacja Calibre (do pobrania z calibre-ebook.com)
- czynności katalogów dostępne z poziomu systemowego
- szczypta AppleScript
- Dropbox (jeśli jeszcze go nie macie, to załóżcie przez link db.tt/DPfsqOB4, a otrzymacie dodatkowo 500MB przestrzeni na start)
- konto IFTTT
Jeśli wszystko już mamy, to możemy przystąpić do pracy!
Dropbox
W folderze Dropboksa (który domyślnie powinien znajdować się w katalogu domowym) tworzymy katalogi doKonwersji
, do którego będziemy „wrzucać” książki w formacie ePub, które następnie będą konwertowane. Następnie w folderze Dropboksa przechodzimy do folderu Public, gdzie tworzymy również kolejny katalog – doKindle
. Jeśli prawidłowo wszystko zrobiliśmy, struktura naszych katalogów powinna wyglądać podobnie, jak na załączonym zrzucie.
Czynności katalogów, Automator i AppleScript
Teraz zajmijmy się czynnościami katalogów[1]. W tym celu uruchamiamy Automator i w oknie Wybierz typ dokumentu wskazujemy na Czynność katalogów.
Z prawej strony w polu Czynności otrzymują pliki i katalogi dodawane do wskazujemy na nasz katalog doKonwersji
.
Do kolejki czynności dodajemy akcję Uruchom AppleScript, a w oknie skryptu wklejamy poniższy kod:
on run {input}
tell application "Finder"
set theFile to input as alias
set selectedFile to POSIX path of theFile
set fileName to name of theFile
set fileEx to name extension of theFile
end tell
set realName to {}
if fileEx is "epub" then
set _lenght to (count of fileName) - (count of fileEx) - 1
set end of realName to text 1 thru _lenght of fileName
do shell script "/Applications/calibre.app/Contents/MacOS/ebook-convert " & selectedFile & " ~/Dropbox/Public/doKindle/" & realName & ".mobi --change-justification 'left'"
display dialog "Plik " & realName & ".mobi został utworzony."
else
display dialog "Plik " & fileName & " nie jest książką w formacie ePub."
end if
end run
Czynność zapisujemy, np. jako epub2kindle
. Następnie odszukujemy folder doKonwersji
w Finderze, klikamy na niego prawym przyciskiem myszy, by otworzyć menu podręczne i odszukujemy usługi Ustawienia czynności katalogów….
W nowym oknie wskazujemy stworzoną przed chwilą kolejkę epub2kindle
i zatwierdzamy przyciskiem Dołącz. Możemy już zamknąć to okno.
I jeszcze parę słów wyjaśnienia, co powyższy skrypt stworzony w Automatorze robi (chyba, że nie chce się wam czytać, to możemy przejść do następnej sekcji – IFTTT):
tell application „Finder”
...
end tell
Ten kawałek pobiera ścieżkę do wrzuconego pliku oraz jego nazwę z rozszerzeniem i samo rozszerzenie.
set realName to {}
if fileEx is "epub" then
...
end if
Tutaj z kolei sprawdzamy, czy plik znajdujący się w katalogu doKonwersji
jest w ogóle plikiem ePub. Jeśli nie, wyświetlony zostanie odpowiedni komunikat. Jeśli natomiast będzie to ePub, to zostanie wyodrębniona jego nazwa (bez roszerzenia), która posłuży jako nazwa dla pliku mobi.
do shell script "/Applications/calibre.app/Contents/MacOS/ebook-convert " & selectedFile & " ~/Dropbox/Public/doKindle/„ & realName & ".mobi --change-justification 'left'"
Ostatnia część wywołuje skrypt uruchamiający narzędzie ebook-convert
(instalowane razem z Calibre), które wykonuje prawidłową konwersję, zapisując plik mobi do katalogu doKindle
. Przy okazji konwerter można skonfigurować. W naszym przykładzie dodałem opcję --change-justification 'left'
, która wymusza wyrównanie tekstów w książce do lewej [2], gdyż standardowo ustawione jest justowanie. Inne opcje można znaleźć na stronie manual.calibre-ebook.com/cli/ebook-convert.html.
IFTTT
Dzięki temu serwisowi każda skonwertowana książka będzie przesyłana bezpośrednio na naszego Kindle’a. Żeby nie tworzyć wszystkiego od podstaw, możemy skorzystać z gotowej recepty – ifttt.com/recipes/87940, gdzie wystarczy podać tylko nazwę obserwowanego katalogu (w naszym przypadku wpisujemy /doKindle
) oraz adres, na jaki wysyłamy książki do naszego Kindle’a.
Podsumowując, stworzyliśmy dziś akcję, która sprawdza, czy do konkretnego katalogu (doKonwersji
) została dodana książka w formacie ePub (Uwaga! plik książki nie powinien zawierać spacji). Jeśli tak, wywoływany jest skrypt tworzący w innym katalogu (doKindle
) konwersję do formatu mobi, a następnie w tej postaci książka zostaje przesłana do naszego Kindle’a.
Smacznego!
Komentarze: 2
Taka ciekawostka, dziś dotarł do mnie Paperwhite, dokładnie po 40 godzinach od momentu złożenia zamówienia na amazon.com. To chyba jakiś rekord:)
Panie Macieju, mam pewien problem. Zrobiłem tak jak pan sugerował i na początku wszystko działało poprawnie, aż do dzisiaj. Sprawdziłem czy nie ma spacji w tytule pliku .epub i nawet znów kliknąłem na zapamiętaną czynność epub2.kindle.workflow Niestety nie działa… Pomocy!