Link do gotowego pliku mobi znajduje się na końcu postu.

Od jakiegoś czasu dostępny jest dokument opublikowany przez Microsoft Patterns & Practices nad którym pracowała cała rzesza community w tym i nasz Szymon Pobiega – wielkie więc gratulacje! :) może ja ślepy albo głuchy ale dowiedziałem się o tym dopiero teraz :)

Tak czy siak, cały dokument jest dostępny niestety jedynie w formacie stron HTML na stronach MSDN – nie ma żadnego docx, pdf czy innego formatu o ile mi wiadomo.

Na szczęście tym razem chłopaki z MS pomyśleli i udostępnili całość na github w formacie markdown. Mimo iż piszą, że aktualna wersja znajduje się na MSDN to i tak, uważam, że to co jest na github powinno być dość aktualne – taką mam nadzieję :)

Więc skoro jest to na github i w formacie markdown to można przecież z tego stworzyć sobie dobrą, naprawdę dobrą książkę na kindla :)

Do tego potrzebny nam jest linux – przynajmniej tam mi jest to łatwiej zrobić, szybciej itp. itd.

Teraz, zanim zaczniemy pracę, należy przeczyścić pliki markdown z referencji do stron MSDN – prawie każdy z nich ma 2 linijki tekstu na górze, które odwołują się do strony MSDN z info, że tam jest nowsza wersja/pełna wersja.

Robimy to za pomocą komendy sed. Najlepiej jest może tymczasowo zmienić rozszerzenie dla Copyright.markdown i Archive_On-site.markdown jako, że te dwa pliki nie mają odnośnika do MSDN. Następnie wykonujemy polecenie

sed –i ‘1,2d’ *.markdown

które usuwa nam dwie pierwsze linijki z każdego pliku markdown.

Potem należy oczyścić referencje do images:

sed –i ‘s/?raw=true//g’ *.markdown

Jest to spowodowane tym, iż wszystkie odnośniki do plików png itp. mają dodany parametr, który powoduje, że konwersja ich (tych plików) nie znajdzie.

Ok, mamy już prawie wszystko gotowe – możemy już przywrócić pliki Copyright i Archive_On-site. Ściągamy sobie okładkę stąd i nazywamy ją cover.png i umieszczamy w katalogu images.

Ok, już prawie skończyliśmy! :)

W zależności od systemy linux na jakim siedzimy instalujemy paczki:

$ yum install ruby calibre rubygems ruby-devel rubygem-ruby-debug

$ gem install rdiscount

Bez tego ani rusz.

Następnie modyfikujemy lekko skrypt od progit makeebooks tak by wyglądał następująco:

#!/usr/bin/env ruby
# This script convers markdown book to one of the serveral e-book
# formats supported with calibre (http://calibre-ebook.com)
#
# Samples:
# 	
# Build e-book for amazon kindle
# 	$ make-ebook
# or
# 	$ FORMAT=mobi make-ebook
#
# Build e-book in 'epub' format
# 	$ FORMAT=epub make-ebook

require 'rubygems'
require 'rdiscount'
require 'ruby-debug'

format = ENV['FORMAT'] || 'mobi'
puts "using .#{format} (you can change it via FORMAT environment variable. try 'mobi' or 'epub')"
figure_title = 'Figure'

book_content = %(<html xmlns="http://www.w3.org/1999/xhtml"><head><title>CQRS Journey</title></head><body>)
dir = File.expand_path(File.join(File.dirname(__FILE__), ''))
  
Dir[File.join(dir, '**', '*.markdown')].sort.each do |input|
  puts "processing #{input}"
  content = File.read(input)
  content.gsub!(/Inserts+(.*)(.png)s*n?s*#{figure_title}s+(.*)/, '![3](figures/1-tn2 "3")')
  book_content << RDiscount.new(content).to_html
end

book_content << "</body></html>"
  
File.open("CQRSJourney.html", 'w') do |output|
  output.write(book_content)
end

system('ebook-convert', "CQRSJourney.html", "CQRSJourney.#{format}",
         '--cover', 'images/cover.png',
         '--authors', 'Adam Dymitruk & Ashic Mahtab & Bill Wilder & Bob Brumfield & Bruce Onder & Bruno Terkaly & Cesar De la Torre Llorente & Chris Martin & Chris Tavares & Christian Horsdal Gammelgaard & Christopher Bennage & Clemens Vasters & Craig Wilson & Daniel Piessens & David Hoerster & Dennis Kozora & Dennis van der Stelt & Dylan Smith & Ernst Perpignand & Eugenio Pace & Glenn Block & Greg Young & Ian Cooper & Jack Jones & James Nugent & James Tryand & Jeremie Chassaing & Jimmy Nilsson & Jonathan Oliver & Jorge Fioranelli & Josh Elster & Kelly Leahy & Kelly Sommers & Ksenia Mukhortova & Lars Wilhelmsen & Leandro Boffi & Mark Nijhof & Mark Seemann & Martijn van den Broek & Matias Woloski & Matt Hinze & Michael Stiefel & Mikael Östberg & Nuno Filipe Godinho & Peter Ritchie & Pieter Joost van de Sande & Ricardo Villalobos & Ritesh Rao & Scott Brown & Scott Cate & Scott Densmore & Shawn Hinsey & Shy Cohen & Simon Guindon & Szymon Pobiega & Tim Shakarian & Tom Janssens & Udi Dahan & Unai Zorrilla Castro & Yves Reynhout',
         '--series', 'Microsoft patterns & practices',
         '--comments', "©2012 Microsoft. All rights reserved. Certain content used with permission from contributors. Licensed under the Apache License, Version 2.0",
         '--level1-toc', '//h:h1', 
         '--level2-toc', '//h:h2', 
         '--level3-toc', '//h:h3',
         '--language', 'en')

Na wszelki wypadek, kod skryptu można znaleźć tutaj.

I odpalamy ./makeebooks

Done! I tak oto mamy dostępny plik CQRSJourney.mobi do wgrania na Kindla.

Nie wiem czy wszystko będzie ładnie zamienione, ale jeżeli nie to można dodać jeszcze kolejne levele. Wiem napewno, że –sries nie działa tak jak powinno i chyba nie ustala Microsoft patterns & pratices :(

Jakbyście nie mieli Linuxa lub nie chcecie przechodzić przez te wszystkie kroki, to proszę, możecie plik mobi ściągnąć stąd.

1 KOMENTARZ

Comments are closed.