Mastodon

Automatyzujemy konwersję ePub do mobi i wysyłamy do Kindle

2
Dodane: 12 lat temu

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!


  1. W skrócie są to akcje wykonywane za każdym razem, gdy do jakiegoś katalogu są dodawane nowe elementy.  ↩
  2. Tak mi się po prostu lepiej czyta.  ↩

Maciej Skrzypczak

Użytkownik sprzętu z nadgryzionym jabłkiem, grafik komputerowy, Redaktor iMagazine.pl. Mastodon: mcskrzypczak@c.im

Zapraszamy do dalszej dyskusji na Mastodonie lub Twitterze .

Komentarze: 2

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!