calibre Kullanıcı Kılavuzu
Sürüm 2.49.0
Kovid Goyal
January 15, 2016
İçindekiler
1
Bölümler
3
Python Modül Dizini
293
Dizin
295
i
ii
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
calibre bir e-kitap kitaplık yöneticisidir. E-kitapları yaygın kullanılan biçimlerin çoğunda görüntüler, dönüştürür ve
kataloglar. Bir çok e-kitap okuyucu ile de konuşabilir. İnternetten kitaplarınız için meta veri getirebilir. Gazeteleri
indirip okumaya uygun e-kitaplara dönüştürebilir. Linux, Windows ve OS X platformlarında çalışır.
calibre’yi yeni başlattınız. Şimdi ne yapacaksınız? calibre e-kitaplarınızla bir şey yapmadan önce onlar hakkında bilgiye sahip olmalıdır. Bir kaç e-kitabı calibre içine sürükleyip bırakın veya “Kitap ekle” düğmesine tıklayarak üzerinde
çalışmak istediğiniz e-kitapları tarayın. Bir defa kitapları eklediğinizde ana görünümde aşağıdaki gibi görüneceklerdir:
Bir defa kalbinizden geçen kitapları listeye ekledikten sonra onlardan birini okumak isteyebilirsiniz. Bunu yapabilmek
için kitabınızı okuyucunun anlayabileceği bir biçime dönüştürmeniz gereklidir. Hoşgeldiniz Sihirbazı calibre ilk çalıştığında sizi karşılar ve calibre’yi okuyucu aygıtınıza göre ayarlar. Dönüşüm çocuk oyuncağıdır. Sadece dönüştürmek
istediğiniz kitabı seçmeniz ve “Kitapları dönüştür” düğmesine tıklamanız yeterli olacaktır. Şimdilik tüm seçenekleri
görmezden gelin ve “Tamam” düğmesine tıklayın. Sağ alt köşede bir simge yanıp sönmeye başlayacaktır. Yanıp sönme
bittiğinde dönüştürülmüş kitabınız hazırdır. Kitabı okumak için “Göster” düğmesine tıklayın.
Eğer kitabı okuyucunuzda okumak isterseniz, onu bilgisayarınıza bağladıktan sonra calibre algılayana kadar (10-20
saniye) bekleyin ve “Aygıta gönder” düğmesine tıklayın. Bir defa simge yeniden yanıp sönmeyi bıraktığında okuyucunuzu bilgisayarınızdan ayırın ve okumaya başlayın! Eğer kitabı bir önceki adımda dönüştürmediyseniz, calibre
cihazınızın anlayacağı biçime otomatik olarak dönüştürecektir.
To get started with more advanced usage, you should read about Grafik Kullanıcı Arayüzü (sayfa 3). For even more
power and versatility, learn the Komut Satırı Arayüzü (sayfa 232). You will find the list of Sıkça Sorulan Sorular
(sayfa 105) useful as well.
İçindekiler
1
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
2
İçindekiler
BÖLÜM 1
Bölümler
1.1 Grafik Kullanıcı Arayüzü
Grafik Kullanıcı Arayüzü (GUI) tüm kitaplık yönetimine ve e-kitap dönüşüm özelliklerine erişim sağlar. calibre kullanımı için temel iş akışı ilk olarak kitapları sabit diskinizden kitaplığa eklemektir. calibre otomatik olarak kitaplardan
meta veriyi okumaya çalışacak ve kendi veritabanına ekleyecektir. Bir defa veritabanına eklendiklerinde bir biçimden
diğerine dönüşüm, okuma aygıtına taşıma, bilgisayarınızda görüntüleme ve meta veriyi düzenleme gibi eylemleri gerçekleştirebilirsiniz. Sonrasında kapağı, tanımlamayı ve diğer ayrıntıları değiştirme gelecektir. calibre’nin eklediğiniz
dosyaların kopyalarını ürettiğini unutmayın. Özgün dosyalarınız değiştirilmeden kalacaktır.
Arayüz çeşitli bölümlere ayrılmıştır:
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Eylemler (sayfa 3)
Tercihler (sayfa 10)
Kataloglar (sayfa 10)
Ara & Sırala (sayfa 11)
Arama Arayüzü (sayfa 11)
Aramaları kaydetmek (sayfa 14)
Sanal Kitaplıklar (sayfa 14)
Metadata’nın dosya isimlerinden tahmini (sayfa 15)
Kitap Detayları (sayfa 16)
Etiket Tarayıcı (sayfa 18)
Kapak Izgarası (sayfa 20)
Kapak Tarayıcı (sayfa 21)
Hızlıgörünüm (sayfa 21)
Görevler (sayfa 22)
Klavye Kısayolları (sayfa 22)
1.1.1 Eylemler
Eylemeler araç çubuğu sıkça kullanılan eylemler için uygun kısayollar sunar. Düğmelere sağ tıkladığınızda varsayılan davranışlarını değiştirebilirsiniz. Eylemler araç çubuğu bilgisayarınıza bir okuyucu bağlı olup olmamasına göre
farklılıklar gösterebilir.
3
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
•
•
•
•
•
•
•
•
•
•
•
Kitap ekle (sayfa 4)
Nitelik düzenleme (sayfa 5)
Kitapları dönüştür (sayfa 5)
Görünüm (sayfa 6)
Cihaza gönder (sayfa 6)
Haberleri çek (sayfa 6)
Kitaplık (sayfa 7)
Cihaz (sayfa 8)
Diske kaydet (sayfa 8)
Bağlan/Paylaş (sayfa 9)
Kitapları Sil (sayfa 9)
Kitap ekle
Kitap ekle eylemi düğmeye sağ tıkla erişilen yedi çeşit eylem içerir.
1. Tek bir dizinden kitapları ekle: Dosya seçim iletişim penceresi açar ve bir dizindeki hangi kitapların ekleneceğini seçmenizi sağlar. Bu hareket bağlam duyarlıdır, örn. hangi kataloğu (sayfa 10) seçtiğinize bağlıdır. Kitaplık
seçtiyseniz, kitaplar kitaplığa eklenir. E-kitap okuyucu aygıt seçtiyseniz, kitaplar aygıta yüklenir gibi.
2. Dizinlerden, alt dizinleri içecek şekilde kitap ekle (Her dizine bir kitap, her e-kitabın değişik bir biçimdeki
aynı kitap olduğunu var sayar): Bir dizin seçmenizi sağlar. Dizin ve tüm alt dizinleri yinelemeli olarak taranır,
ve bulunan tüm e-kitaplar kitaplığa eklenir. calibre her dizinin tek bir kitap içerdiğini var sayar. Bir dizindeki
tüm e-kitapların aynı kitabın değişik biçimleri olduğu var sayılır. Bu hareket Diske kaydet (sayfa 8) işleminin
tersidir, örn. kitapları Diske kaydedebilir, kitapları silebilir ve tarih hariç herhangi kayıp bilgi olmadan geri
ekleyebilirsiniz (Diske kaydet eylemi için herhangi bir ayarı değiştirmediğinizi var sayarsak).
3. Dizinlerden kitaplar ekle, alt dizinler de dahil (Her dizinden birden çok kitap, her e-kitap dosyasının
farklı bir kitap olduğunu var sayar): Bir dizin seçmenize izin verir. Dizin ve tüm alt dizinleri yinelemeli
olarak taranır ve bulunan tüm e-kitaplar kitaplığa eklenir. calibre her dizinin birden çok kitap içerdiğini var
sayar. Bir dizindeki aynı isimli tüm e-kitap dosyaları aynı kitabın değişik biçimleri olarak ele alınır. Farklı
isimdeki e-kitaplar farklı kitaplar olarak eklenir.
4. Arşivden (ZIP/RAR) çoklu kitap ekle: Seçili ZIP veya RAR dosyasından birden çok e-kitap eklemenizi sağlar. Önce sıkıştırılmış arşivi açıp ardından yukardaki iki seçenekten birini kullanmak zorunda kalmamanız için
kolaylaştırıcı bir kısa yoldur.
5. Boş kitap ekle. (Herhangi biçimi olmayan Kitap Girdisi): Boş bir kitap kaydı oluşturmanızı sağlar. Bu daha
sonra henüz koleksiyonunuzda bulunmayan bir kitapla ilgili bilgiyi elle doldurmanız için kullanılabilir.
6. ISBN ile ekle: Bir ya da fazla kitabı ISBNlerini ekleyerek girmenizi sağlar.
7. Dosyaları seçili kitap kayıtlarına ekle: Kitaplığınızda var olan bir kitapla ilişkili dosyaları eklemeniz veya
güncellemenize izin verir.
Add books eylemi çok çeşitli e-kitap biçimlerinden metadata okuyabilir. Ek olarak, dosya adından metadata tahmin
etmeye çalışır. Bunu nasıl ayarlayacağınızı öğrenmek için Metadata’nın dosya isimlerinden tahmini (sayfa 15) göz
atın.
Mevcut bir kitaba ek bir biçim eklemek için şu üç şeyden birini yapabilirsiniz:
4
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
1. Dsoyayı ana pencerenin sağ tarafındaki kitap detayları paneline sürükleyip bırakabilirsiniz
2. Kitap ekle düğmesine sağ tıklayıp :guilabel:‘Dosyaları seçili kitaplara ekle‘yi seçebilirsiniz.
3. Nitelik düzenleme (sayfa 5) eylemiyle erişilen, Metadata Düzenle iletişim penceresinin sağ yukarısındaki kırmızı
kitap ekle düğmesine tıklayabilirsiniz.
Nitelik düzenleme
Metadata düzenle eyleminin düğmeye sağ tıklayarak erişilen dört çeşit eylemi vardır.
1. Metadatayı ayrı ayrı düzenle: Kitapların metadata’sını tek tek internetten metadata, kapaklar da dahil çekme
seçeneğiyle düzenlemenize izin verir. Ayrıca kitaptan belirli e-kitap biçimlerini çıkarmanızı veya kitaba eklemenizi sağlar.
2. Toplu halde metadata düzenle: Yaygın metadata alanlarını çok sayıda kitap için aynı zamanda düzenlemenizi
sağlar. :ref:‘Kitaplık görünümü <search_sort>‘nde seçtiğiniz tüm kitaplar üzerinde işlem yapar.
3. Metadata ve kapakları indir: Kitap listesinde seçili ktiaplar için metadata ve kapakları (mevcutsa) indir.
4. Kitap kayıtlarını birleştir: İki veeya daha fazla kitap için metadata ve biçimleri birleştirme olanağı sunar. İlk
önce tıklanmamış kayıtları silme veya tutma seçeneğiniz vardır.
Daha fazla detay için bknz E-kitapların Üst Verisini Düzenlemek (sayfa 102).
Kitapları dönüştür
E-kitaplar bir sürü biçimden e-kitap okuyucunuzun tercih ettiği herhangi bir biçime dönüştürülebilirler. Satın alınan bir çok e-kitap Sayısal Hak Yönetimi1 (DRM) ile korunacaktır. calibre bu e-kitapları dönüştürmez. Bir çok biçimden DRM’nin kaldırılması kolaydır, ama bu yasal olmayabileceğinden, kitaplarınız özgürlüğe
kavuşturacak araçlar bulmalı ve ardından dönüştürme için calibre kullanmalısınız.
Çoğu insan için, dönüştürme tek tıklık bir konu olmalıdır. Dönüştürme süreciyle ilgili daha çok şey öğrenmek istiyorsanız, E-Kitap Dönüştürme (sayfa 51) göz atın.
Kitapları dönüştür eyleminin düğmeye sağ tıkla erişilen üç çeşidi vardır.
1. Ayrı ayrı dönüştür: Seçilen her kitap için dönüştürmeyi özelleştirmek için dönüştürme seçeneklerini belirtmenize izin verir.
2. Toplu dönüştür: Çok sayıda kitabı topluca dönüştürmek için seçenekleri bir kere girmenizi sağlar.
3. Calibre kitaplığınızdaki kitapların kataloğunu oluşturun: Kitaplığınızdaki kitapların tam bir listesini üretir, tüm metadata dahil olmak üzere, XML, CSV, BiBTeX, EPUB ve MOBI gibi bir çok bir çok biçimde.
Katalog kitaplık görünümünde gösterilen tüm kitapları içerecektir. Bu, arama kullanarak kataloglanacak kitapları limitlemenizi sağlar. Ek olarak, fare kullanarak birden çok kitap seçerseniz, kataloğa yalnızca o kitaplar eklenir. Kataloğu EPUB, MOBI veya AZW3 gibi bir e-kitap biçiminde üretirseniz, e-kitap okuyucunuzu
1
http://drmfree.calibre-ebook.com/about#drm
1.1. Grafik Kullanıcı Arayüzü
5
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
bağladığınızda katalog otomatik olarak cihaza gönderilir. Katalogların çalışma biçimiyle ilgili daha fazla bilgi
için, :ref:‘catalog_tut‘okuyun.
Görünüm
Görünüm eylemi kitabı bir e-kitap okuyucu programla gösterir. calibre’nin bir çok e-kitap biçimi için
dahili bir görüntüleyicisi vardır. Diğer biçimler için varsayılan işletim sistemi uygulamasını kullanır. Hangi biçimlerin
dahili okuyucu ile açılacağını Seçenekler->Davranış ile belirtebilirsiniz. Bir kitabın birden çok biçimi varsa, düğmeye
sağ tıklayarak belirli bir biçimi görüntüleyebilirsiniz.
Cihaza gönder
Aygıta gönder eyleminin düğmeye sağ tıkla erişilebilen sekiz değişik çeşidi vardır.
1. Ana belleğe gönder: Seçili kitaplar e-kitap okuyucunun ana belleğine aktarılır.
2. Karta (A) gönder: Seçili kitaplar e-kitap okuyucudaki depo kartı (A) ya aktarılır.
3. Karta (B) gönder: Seçili kitaplar e-kitap okuyucudaki depo kartı (B) ye aktarılır.
4. Belirli biçimleri gönder: Seçili kitaplar aygıtta belirtilen depolama konumuna, belirttiğiniz biçimde aktarılır.
5. Aygıtı çıkar: Aygıtı calibre’den ayırır.
6. Varsayılan aygıta gönder eylemi ayarla: Ana düğmeye tıkladığınızda hangi seçeneklerin, 1 içinde 5 üstünde
veya 7 altında, varsayılan olacağını belirtmenize izin verir.
7. Kitaplıktan sil veya gönder: Seçili kitaplar aygıtta seçilen depolama konumuna aktarılır ve ardından Kitaplıktan silinir.
8. Dipnotları Getir (deneysel): Aygıtınızdaki bir e-kitapta yapmış olabileceğiniz dipnotları calibre kitaplığındaki
kitap metadata’sına ekler.
Aygıta gönderilen dosyaların dosya isimlerini ve dizin yapılarını Seçenekler->İçe/Dışa Aktar->Kitapların aygıta gönderimi içinde bir şablon ayarlayarak kontrol edebilirsiniz. Ayrıca bknz Calibre şablon dili (sayfa 135).
Haberleri çek
Haberleri getir eylemi haberleri çeşitli web sitelerinden indirir ve e-kitap okuyucunuzda okunabilecek bir e-kitap haline dönüştürür. Normalde, yeni oluşturulan e-kitap e-kitap kitaplığınıza eklenir, ama indirme
bittiğinde bir e-kitap okuyucu takılıysa, haberler otomatik olarak e-kitap okuyucuya yüklenir.
6
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Haberleri getir eylemi her haber sitesi için (10-15 satır kodluk) basit reçeteler kullanır. Kendi haber kaynaklarınız için
nasıl reçete oluşturacağınızı öğrenmek için, bknz Sık kullandığınız haber sitesini ekleme (sayfa 23).
Haberleri getir eyleminin sağ tıkla erişilen üç çeşidi vardır.
1. Haber indirimini zamanla: Seçili haber kaynaklarının indirilmesini kullanılabilir yüzlercesinin listesinden zamanlayarak yapmanıza olanak sağlar. Zamanlama seçtiğiniz her haber kaynağı için ayrı ayrı ayarlanabilir ve
haftanın belirli günlerini veya indirmeler arası belirli frekansı seçmenizi sağlayacak kadar esnektir.
2. Özel haber kaynağı ekle: Erişmek istediğiniz özel bir haber sitesinden haberlerin indirimi için kullanabileceğiniz basit bir reçete oluşturmanızı sağlar. Reçeteyi oluşturmak bir RSS haber besleme URL’si verecek kadar
basit olabilir, veya bu iş için Python-tabanlı kod kullanabilir ve daha belirleyici olabilirsiniz. Daha fazla bilgi
için bknz Sık kullandığınız haber sitesini ekleme (sayfa 23).
3. Tüm zamanlanmış haber kaynaklarını indir: Calibre’nin zamanladığınız tüm haber kaynağı indirmelerini
hemen başlatmasına neden olur.
Kitaplık
Kitaplık eylemi bir Kitaplık oluşturmanıza, aralarında geçiş yapmanıza, yeniden adlandırmanıza veya
silmenize olanak tanır. calibre istediğiniz kadar kitaplık oluşturmanıza izin verir. Örneğin, bir kurgu kitaplığı, bir
yabancı dil kitaplığı, proje kitaplığı, veya ihtiyacınıza uyacak herhangi yapıyı oluşturabilirsiniz. Kitaplıklar calibre
içindeki en yüksek seviye organizasyonsal yapılardır. Her kitaplığın kendi kitap kümesi, etiketleri, kategorileri ve
taban depolama konumu vardır.
1. Kitaplık değiştir/oluştur...: Bu kısım a) başka konumdaki calibre kitaplığına bağlanmanıza, b) yeni bir konumda boş bir kitaplık oluşturmanıza, c) mevcut kitaplığı belirtilmiş yeni bir konuma taşımanıza olanak tanır.
2. Hızlı değiştir: Calibre içinde kayıtlı ya da oluşturulmuş kitaplıklar arasında hızlı geçiş yapmanızı sağlar.
3. Kitaplığı yeniden adlandır: Kitaplığı yeniden adlandırmanıza izin verir.
4. Kitaplığı sil: Bir kitaplığın kaydını calibre’den silmenize izin verir.
5. <kitaplık adı>: Eylem 5, 6 vs... oluşturduğunuz veya bağlandığınız kitaplıklar arasında ani geçiş için erişim
verir. Bu liste en çok kullanılan 5 kitaplığı içerir. Tam içerik için, Hızlı Değiştir menüsünü kullanın.
6. Kitaplık bakımı: Mevcut kitaplığı veri tutarlılığı problemleri için kontrol etmenize ve mevcut kitaplığın veri
tabanını yedeklerden geri yüklemenize izin verir.
Not: E-kitaplarınız hakkında metadata, örn. başlık, yazar, ve etiketler, calibre kitaplık dizininizde metadata.db adında
tek bir dosyada saklanır. Bu dosya bozulursa (pek rastlanmaz), metadata’yı kaybedebilirsiniz. Neyse ki, calibre otomatik olarak her bir kitap için kitabın dizininde OPF dosyası olarak metadata yedeği alır. Yukarıda tanıtılan Kitaplık
Bakımı kısmından Veri tabanı geri yükleme eylemini kullanarak calibre’nin metadata.db’yi tek OPF dosyalarından
yeniden inşa etmesini sağlayabilirsiniz.
Kitapları değişik kitaplıklar arasında (birden fazla kitaplığınız ayarlanmış olduğunda) kitaba sağ tıklayıp Kitaplığa
kopyala eylemini seçerek kopyalayabilirsiniz.
1.1. Grafik Kullanıcı Arayüzü
7
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Cihaz
Aygıt eylemi aygıtınızın ana belleği ya da depolama kartlarındaki kitapları görüntülemenizi, veya aygıtı
çıkarmanızı sağlar (calibre’den ayırmanızı). Desteklenen bir aygıt taktığınızda bu simge calibre ana araç çubuğunda
otomatik olarak çıkar. Üzerine tıklayarak cihazınızdaki kitapları görebilirsiniz. Ayrıca calibre kitaplığınızdaki kitapları
sürükleyip simge üzerine bırakarak cihazınıza aktarabilirsiniz. Aynı şekilde, aygıtınızdan kitapları sürükleyip araç
çubuğundaki kitaplık simgesine bırakarak aygıtınızdan calibre’ye aktarım yapabilirsiniz.
Diske kaydet
Diske kaydet eyleminin sağ tık düğmesiyle erişilebilen beş çeşidi vardır.
1. Diske kaydet: Seçili kitapları dizin olarak organize şekilde diske kaydeder. Dizin yapısı şuna benzer:
=
{}=
[email protected]
=0=1=2=0=1=2
Author\PYGZus{}(sort)
Title
Book Files
Diske kaydedilen dosyaların dosya isimlerini ve dizin yapılarını Seçenekler->İçe/Dışa Aktar->Kitapları
diske kaydet içinde bir şablon oluşturarak kontrol edebilirsiniz. Ayrıca bknz Calibre şablon dili
(sayfa 135).
2. Diske tek bir dizin içinde kaydet: Seçili kitapları diske tek bir dizin içinde kaydeder.
For 1. and 2., all available formats, as well as metadata, are stored to disk for each selected book. Metadata
is stored in an OPF file. Saved books can be re-imported to the library without any loss of information by
using the Add books (sayfa 4) action.
3. Yalnızca *<tercih edilen>* biçimi diske kaydet: Seçili kitapları diske (1.) de gösterilen dizin
yapısı ile kaydeder, ama yalnızca seçtiğiniz e-kitap biçiminde. Tercih ettiğiniz biçimi Seçenekler>Davranış->Tercih edilen çıktı biçimi içinde ayarlayabilirsiniz
4. Yalnızca *<tercih edilen>* biçimi diske tek dizin içinde kaydet: Seçili kitapları diske yalnızca
seçtiğiniz e-kitap biçiminde kaydeder. Tercih ettiğiniz biçimi Seçenekler->Davranış->Tercih edilen
çıktı biçimi içinde ayarlayabilirsiniz
5. Tel biçimi diske kaydet: Seçili kitapları diske (1.) de gösterilen dizin yapısı ile kaydeder, ama
yalnızca açılır penceredeki listeden seçtiğiniz biçimde.
8
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Bağlan/Paylaş
Bağlan/Paylaş eylemi bilgisayarınızdaki bir aygıt ya da dizine elle bağlanmanıza izin verir. Ayrıca web tarayıcı veya e-posta ile calibre kitaplığınıza erişimi ayarlamanıza da izin verir.
Bağlan/Paylaş eyleminin sağ tıkla erişilebilen dört çeşidi vardır.
1. Dizine bağlan: Bilgisayarınızdaki bir dizine bir aygıtmışçasına ve calibre’nin aygıtlar için olan tüm
özelliklerini o dizinle kullanacak şekilde bağlanmanıza olanak tanır. Aygıtınız calibre tarafından
desteklenemiyor fakat USB aygıtı olarak kullanılabilirse kullanışlıdır.
2. iTunes’e Bağlan: iTunes kitap veri tabanınıza bir aygıtmışçasına bağlanmanıza olanak tanır. Kitaplar iTunes’e gönderildiğinde, iTunes kullanarak çeşitli iAygıtlarda kullanılabilir olarak ayarlayabilirsiniz.
3. İçerik Sunucusu Başlat: Calibre’nin dahili web tarayıcısını başlatır. Başlatıldığında, calibre kitaplığınız internetten bir web tarayıcı ile erişilebilir olur (seçerseniz). Web sunucunun nasıl başlatılacağını Tercihler->Paylaşım->Ağda paylaşım ile erişilen seçeneklerde ayarlayabilirsiniz
4. Kitapların e-posta tabanlı paylaşımını ayarla: Kitap ve haber kaynaklarının e-posta ile paylaşımına izin verir. Bu seçenek için e-posta adresleri ayarlandığında, calibre haber ve kitap güncellemelerini girilen e-posta adresine gönderir. Calibre’nin nasıl e-posta göndereceğini Tercihler>Paylaşım->Kitapların e-posta ile paylaşımı altında ayarlayabilirsiniz. Bir ya da fazla e-posta adresi ayarladığınızda, bu menü girdisi kitapları yapılandırılan e-posta adreslerine gönderen menü girdisiyle değiştirilecektir.
Kitapları Sil
Kitapları kaldır eylemi kitapları kalıcı olarak siler, dikkatli kullanın. İçeriğe duyarlıdır, örn
hangi kataloğu (sayfa 10) seçtiğinize bakar. Kitaplık seçtiyseniz, kitaplar kitaplıktan silinir. E-kitap okuyucu cihazı
seçtiyseniz, kitaplar aygıttan silinir. Verilen bir kitap için sadece belirli bir biçimi kaldırmak için Nitelik düzenleme
(sayfa 5) eylemini kullanın. Kitapları kaldırmanın sağ tık menüsüyle erişilen beş çeşidi vardır.
1. Seçili kitapları sil: Kitap listesinde seçilmiş tüm kitapları kalıcı olarak silmenizi sağlar.
2. Seçili kitaplardan belirli biçimdeki dosyaları sil...: Kitap listesinde seçili kitaplardan belirli biçimdeki e-kitap
dosyalarını kalıcı olarak silmenizi sağlar.
3. Tüm biçimleri seçili kitaplardan kaldır, şunun dışında...: Belirtilen biçim dışındaki tüm biçimlerdeki e-kitap
dosyalarını kitap listesinde seçili kitaplardan kalıcı olarak kaldırmanızı sağlar.
4. Seçili kitaplardan tüm biçimleri çıkar: Kitap listesinde seçili kitaplardan tüm e-kitap dosyalarını kalıcı olarak
çıkarmanızı sağlar. Yalnızca metadata kalacaktır.
5. Seçili kitaplardan kapakları kaldırır: Kitap listesinde seçili kitaplardan kapak resim dosyalarını kalıcı olarak
çıkarır.
1.1. Grafik Kullanıcı Arayüzü
9
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
6. Eşleşen kitapları aygıttan çıkar: Kitap listesinde seçilmiş kitaplardan bağlı aygıttaki e-kitap dosyalarıyla eşleşenleri kaldırmanızı sağlar.
Not: Şuna dikkat edin, calibre kitaplığınızdan Kitapları kaldırmayı kullanarak kitapları sildiğinizde, kitap kaydı kalıcı
olarak silinir, ama Windows ve OS X üzerinde dosyalar geri dönüşüm kutusuna gider. Bu da fikrinizi değiştirirseniz
geri getirmenize izin verir.
1.1.2 Tercihler
Tercihler eylemi calibre’nin çeşitli yönlerinin nasıl çalışacağını değiştirme olanağı sunar. Düğmeye sağ tıkla erişilebilen dört çeşidi vardır.
1. Tercihler: Calibre’nin çeşitli yönlerinin çalışma biçimini değiştirmenize olanak sağlar. Düğmeye tıklamak da
bu eylemi gerçekleştirir.
2. Hoşgeldin sihirbazını çalıştır: Calibre’yi ilk defa çalıştırdığınızda görünen Hoşgeldin Sihirbazını çalıştırmanızı
sağlar.
3. Get plugins to enhance calibre: Opens a new window that shows plugins for calibre. These plugins are developed by third parties to extend calibre’s functionality.
4. Hata ayıklama kipinde yeniden başlat: Calibre geliştiricilerine programda rasladığınız problemlerin çözümünde yardım edebilecek hata ayıklama kipini etkinleştirmeyi sağlar. Çoğu kullanıcı için, bir geliştirici tarafından yönlendirilmediği sürece kapalı kalması uygundur.
1.1.3 Kataloglar
Katalog bir kitap koleksiyonudur. calibre iki çeşit değişik kataloğu yönetebilir:
1. Kitaplık: Bu bilgisayarınızdaki calibre kitaplığında depolanmış kitap koleksiyonudur.
2. Aygıt: Bu e-kitabınızda depolanmış kitap koleksiyonudur. Okuyucuyu bilgisayara taktığınızda kullanılabilir
olacaktır.
Çoğu işlem, örneğin kitap ekleme, silme, görüntüleme, vs., bağlama duyarlıdır. Örneğin, Aygıt kataloğunu seçiliyken
görünüm düğmesine tıklarsanız, calibre aygıttaki dosyaları göstermek için açar. Kitaplık kataloğu seçiliyse, bunun
yerine calibre kitaplığınızdaki dosyalar açılacaktır.
10
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
1.1.4 Ara & Sırala
Ara & Sırala kısmı kitap koleksiyonunuz üstünde bir çok güçlü eylem gerçekleştirmenizi sağlar.
• Sütun başlıklarına tıklayarak başlık, yazar, tarih, oy, vs. ye göre sıralayabilirsiniz. Ayrıca alt-sıralama yapabillirsiniz, örn. birden çok sütuna göre sıralayabilirsiniz. Başlık sütununa tıklar ardından yazar sütununa tıklarsanız,
kitap önce yazara göre sıralanır ardından aynı yazarın tüm girdileri başlığa göre sıralanır.
• Arama çubuğunu kullanarak belli bir kitap veya bir kitap kümesini arayabilirsiniz. Bu konuda daha fazlası
aşağıda.
• Listede değişmesini istediğiniz öğeye çift tıklayarak hızlı ve kolay bir şekilde metadata düzenleyebilirsiniz.
• Kitap kümeleri üzerinde eylemler gerçekleştirebilirsiniz. Birden çok kitabı seçmek için ya:
– Ctrl tuşunu basılı tutar ve seçilmesini istediğiniz kitaplara tıklarsınız.
– Shift tuşuna basılı tutarak seçilmesini istediğiniz kitap aralığının başına ve sonuna tıklarsınız.
• Hangi alanların görüntülenmesini istediğinizi yapılandırma iletişim penceresini kullanarak yapılandırabilirsiniz.
1.1.5 Arama Arayüzü
Arama kutusuna arama ifadeleri girerek tüm metadata üstüne arama yapabilirsiniz. Aramalar büyük küçük harf duyarlıdır. Örneğin:
=
{}=
[email protected]
=0=1=2=0=1=2Asimov Foundation format:lrf
Bu kitaplığınızda LRF biçiminde kullanılabilir olan ve metadata’sında Asimov ve Foundation geçen tüm kitaplarla eşleşir. Biraz daha örnek:
=
{}=
[email protected]
1.1. Grafik Kullanıcı Arayüzü
11
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
=0=1=2=0=1=2author:Asimov and not series:Foundation
title:\PYGZdq{}The Ring\PYGZdq{} or \PYGZdq{}This book is about a ring\PYGZdq{}
format:epub publisher:feedbooks.com
Aramalar varsayılana olarak ‘içerir’ tipidir. Arama dizisi belirtilen metadata’da herhangi bir yerde geçiyorsa eşleşir.
İki çeşit arama daha kullanılabilir: eşitlik araması ve düzenli ifadeler2 kullanarak arama.
Eşitlik aramaları arama dizisini eşittir işareti (=) ile ön eklendirerek gösterilir. Örneğin, etiket:"=bilim" sorgusu
“bilim” ile eşleşir, ama “bilim kurgu” ile veya “zor bilim” ile eşleşmez. Düzenli ifade aramaları arama metninin
önüne tilde (~) getirilerek belirtilir. Herhangi bir python uyumlu düzenli ifade3 kullanılabilir. Düzenli ifadelerdeki
özel karakterleri atlatmak için kullanılan ters bölü işaretlerinin çift tırnak içine alınması gerektiğini unutmayın, tek
tırnaklar sorgu ayrıştırması esnasında çıkarılır. Örneğin, gerçek bir parantezi eşleştirmek için \\( girmelisiniz. İfade
çapalar içermediği sürece düzenli ifade aramaları ‘içerir’ tipi aramalardır.
Sonunda eşittir veya tilde olan bir karakter dizisini aramanız gerekirse, karakter dizisinin başına bir ters bölü işareti
koyun.
Karakter dizisi parantez veya boşluk içeriyorsa arama karakter dizilerini tırnaklar ile kapatın (”). Örneğin, Bilim
Kurgu etiketini aramak için etiket:"=bilim kurgu" aramanız gerekir. etiket:=bilim kurgu şeklinde
ararsanız ‘bilim’ ile etiketli tüm kitapları ve metadata’sında ‘kurgu’ geçen tüm kitapları bulursunuz.
düğmesi ile erişilen :guilabel:‘Gelişmiş Arama Penceresi‘ni kullanarak kolaylıkla gelişmiş arama sorguları
inşa edebilirsiniz.
Aramalar için kullanılabilir alanlar: etiket, başlık, yazar, editör, seriler, seri_indisi,
oy, kapak, yorumlar, biçim, tanımlayıcılar, tarih, basımtarihi, arama, boyut ve
özel sütunlardır. Bir aygıt takılmışsa, calibre kitaplık görünümünde aygıt üzerinde alanı kullanılabilir olur. Özel
bir sütun için arama ismi bulmak için (aslında lookup name denir), farenizi kitaplık görünümünde sütun başlığı üzerine
getirin.
Tarih için arama söz dizimi şu şekildedir:
=
{}=
[email protected]
=0=1=2=0=1=2pubdate:\PYGZgt{}2PYGZhy{}1 Will find all books published after Jan, 2 date:\PYGZlt{}=2PYG
Tarih belirsizse, tarih karşılaştırması için mevcut yerel kullanılır. Örneğin mm/dd/yyyy yerelinde 2/1/2009 1 Şub 2009
olarak yorumlanır. dd/mm/yyyy yerelinde ise 2 Oca 2009 olarak yorumlanır. Bazı özel tarih karakter dizileri kullanılabilir. bugün karakter dizisi bugünün tarihine, o gün her neyse çevrilir. dün ve buay (veya mevcut dile çevrildiğindeki
eşlenikleri) da çalışır. Ek olarak, günönce (yine çevrilebilir) tarihten belli bir gün öncesine karşılaştırmada kullanılabilir. Örneğin:
=
{}=
[email protected]
=0=1=2=0=1=2date:\PYGZgt{}1
date:\PYGZlt{}=45daysago
Çevrilen karakter dizileriyle ilgili olabilecek problemleri önlemek için, calibre’nin İngilizce olmayan bir sürümünü
kullanırken, _today, _yesterday, _thismonth, ve _daysago her zaman kullanılabilir tutulmuştur. Bunlar
çevrilmez.
Belirli boyutta biçimi olan kitaplar için aramayı şu şekilde yapabilirsiniz:
2
3
12
http://en.wikipedia.org/wiki/Regular_expression
https://docs.python.org/2/library/re.html
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
=
{}=
[email protected]
=0=1=2=0=1=2size:\PYGZgt{}1.1M Will find books with a format larger than 1.1MB
size:\PYGZlt{}=1K Will find books with a format smaller than 1KB
Tarih ve sayısal alanlar = (eşittir), > (büyüktür), >= (büyük eşit), < (küçüktür), <= (küçük eşit), ve != (eşit değildir)
ilişki operatörlerini destekler. Oylama alanları sayısal olarak ele alınır. Örneğin rating:>=3 araması 3 veya yukarı
oy almış tüm kitapları bulur.
Etiketler gibi birden çok değerli alanlardaki öğe sayısı için arama yapabilirsiniz. Bu aramalar # karakteri ile başlar,
ve sayısal alanlarla aynı söz dizimi ile devam eder. Örneğin, 4 etiketten fazlasını içeren tüm kitapları bulmak için
tags:#>4 kullanın. Tam 10 etiketi olan kitapları bulmak için tags:#=10 kullanın.
Seri indisleri aranabilirdir. Standart seriler için, arama ismi ‘series_index’dir. Özel seri sütunları için, sütun arama isminin sonuna _index ekleyerek arayın. Örneğin, #benim_serim isimli özel seri sütununda indis aramak için, arama
ismi olarak #benim_serim_index kullanırsınız. Seri indisleri sayıdır, yani yukarda tanıtılan ilişkisel operatörleri
kullanabilirsiniz.
search özel alanı aramalar için ayrılmıştır. Yani bir aramayı “Eşimin kitapları” olarak kaydederseniz arama çubuğuna search:"Eşimin kitapları" yazarak kaydedilmiş aramayı tekrar kullanabilirsiniz. Aramaları kaydetmekten daha sonra daha çok bahsedilecek.
Bir alanın varlığını ya da yokluğunu özel “true” ve “false” değerleriyle bulabilirsiniz. Örneğin:
=
{}=
[email protected]
=0=1=2=0=1=2cover:false will give you all books without a cover
series:true will give you all books that belong to a series
comments:false will give you all books with an empty comment
format:false will give you all books with no actual files (empty records)
Evet/hayır özel sütunları da aranabilirdir. false, boş, veya ifadesiz aramaları sütunda belirtilmemiş değerlere sahip tüm kitapları bulur. true araması sütunda belirtilmemiş değeri olmayan kitapların hepsini bulur. evet
veya işaretli araması sütunda Evet olan tüm kitapları bulur. hayır veya işaretlenmemiş araması sütunda
Hayır olan tüm kitapları bulur. evet, hayır, ifadesiz, boş, işaretli ve işaretlenmemiş çevrilebilirdir; İngilizcelerini ya da mevcut dildeki eşlenik kelimeleri kullanabilirsiniz. true ve false kelimeleri ve özel
değerler _yes, _no, ve _empty çevrilmez.
Sıralı dizili öğeler (örn. A.B.C) sıralı dizimin ilk kısımlarını eşleştirmek için genişletilmiş bir söz dizimi kullanırlar.
Bu da tam eşleşme operatörü (=) ile metin arasına bir nokta koyarak yapılır. Örneğin, tags:=.A sorgusu A ve A.B
etiketlerini bulur, ama AA ya da AA.B etiketlerini bulmaz. tags:=.A.B sorgusu A.B ve A.B.C etiketlerini bulur, ama
A etiketini bulmaz.
Tanımlayıcılar (örn., isbn, doi, lccn vs) de genişletilmiş söz dizimi kullanır. Önce, bir tanımlayıcının tür:değer
biçimi olduğunu hatırlayın, isbn:123456789 gibi. Genişletilmiş söz dizimi bağımsız olarak hangi tür ve değeri
arayacağınızı belirtmenize izin verir. Sorgunun hem tür hem değer kısımları eşitlik, içerir, veya düzenli ifade eşleşmelerini kullanabilir. Örneğin:
• tanımlayıcılar:true herhangi bir tanımlayıcısı olan kitapları bulur.
• tanımlayıcılar:false herhangi bir tanımlayıcısı olmayan kitapları bulur.
• tanımlayıcılar:123 herhangi türü 123 değerini içeren kitapları arar.
• tanımlayıcılar:=123456789 herhangi türü 123456789 değerine eşit kitapları arar.
• tanımlayıcılar:=isbn: ve tanımlayıcılar:isbn:true herhangi bir değer alan isbn’e eşit türde
kitapları bulur
• tanımlayıcılar:=isbn:false isbn’e eşit türü olmayan tüm kitapları bulur.
1.1. Grafik Kullanıcı Arayüzü
13
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
• tanımlayıcılar:=isbn:123 isbn’i 123 içeren değere eşit türde kitapları bulur.
• tanımlayıcılar:=isbn:=123456789 isbn’i ‘123456789‘a eşit değere eşit türde tüm kitapları bulur.
• tanımlayıcılar:i:1 1 değeri içeren i içeren türdeki tüm kitapları arar.
Şekil 1.1: Gelişmiş Arama Penceresi
1.1.6 Aramaları kaydetmek
calibre sıkça kullanılan aramalarınızı özel bir isimle kaydedip tek tıkla tekrar bağlanmanızı sağlar. Bunu yapmak için,
aramanızı arama kutusuna yazın veya Etiket Tarayıcıyı kullanın. Ardından arama kutusunun yanında bulunan Kayıtlı
Aramalar kutusuna vermek istediğiniz ismi yazın. Kaydedilen aramalar kutusunun yanındaki artı simgesine tıklayarak
aramayı kaydedebilirsiniz.
Şimdi Etiket Tarayıcıda “Aramalar” altında kayıtlı aramanıza kolaylıkla erişebilirsiniz. Tek bir tık karmaşık bir aramayı
kolaylıkla tekrar kullanmak için yeterli, tekrar oluşturmanıza gerek yok.
1.1.7 Sanal Kitaplıklar
Sanal Kitaplık calibre’nizin tam bir koleksiyon yerine bir kaç kitabı varmış gibi davranmanın bir yoludur. Geniş kitap
koleksiyonunuzu daha küçük, yönetilebilir parçalara bölmenin mükemmeli bir yoludur bu. Sanal kitaplıkları nasıl
oluşturup yöneteceğinizi öğrenmek için klavuza göz atın: Sanal Kitaplıklar (sayfa 195)
14
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
1.1.8 Metadata’nın dosya isimlerinden tahmini
Normalde, calibre kitap dosyasındn metadata okur. Ama bunun yerine Tercihler->Kitap Ekleme->Dosya içeriğinden
metadata oku ile dosya isminden okuyacak şekilde de yapılandırılabilir.
Ayrıca düzenli ifadeler kullanarak metadata’nın dosya isminden nasıl okunacağını da kontrol edebilirsiniz (bknz Calibre’de düzenli ifadeleri kullanmak hakkında herşey (sayfa 164)). Yapılandırma iletişim penceresinin Kitap Ekleme
kısmında, kitaplığa eklediğiniz e-kitap dosyalarının isimlerinden calibre’nin deneyip metadata tahmin etmek için kullanacağı bir düzenli ifade belirtebilirsiniz. Varsayılan düzenli ifade:
=
{}=
[email protected]
=0=1=2=0=1=2\PYG{n}{title} \PYG{o}{\PYGZhy{}} \PYG{n}{author}
bu, ilk - işaretine kadar tüm karakterlerin kitap başlığını, takip eden karakterlerin de kitap yazarını oluşturduğunu
varsayar. Örneğin, dosya ismi:
=
{}=
[email protected]
=0=1=2=0=1=2Foundation and Earth \PYGZhy{} Isaac Asimov.txt
başlık: Foundation and Earth ve yazar: Isaac Asimov olarak yorumlanır
Tüyo: Dosya ismi bir tire içermezse, yukarıdaki düzenli ifade başarısız olur.
1.1. Grafik Kullanıcı Arayüzü
15
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
1.1.9 Kitap Detayları
Kitap Detayları görünümü o an seçili kitap için tüm metadata ve kapak bilgisini gösterir. Ana calibre penceresinin
16
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
sağ alt köşesindeki düğme ile gizlenebilir. Kitap Detay panelindeki yazar adları tıklanabilirdir, ön tanımlı olarak sizi
yazarın Wikipedia sayfasına götürür. Bu davranış yazar ismine sağ tıklayıp Bu yazarı yönet seçerek özelleştirilebilir.
Benzer şekilde, kitap için metadata indirirseniz, Kitap detayları paneli otomatik olarak kitabın amazon, worldcat, vs.
gibi metadata’nın indirildiği yerlerden bağlantılarını gösterir.
Kitap Detayları panelinden e-kitap biçimlerine tek tek sağ tıklayarak silebilir, asıl sürümleriyle karşılaştırabilir, diske
kaydedebilir, harici bir programla açabilirsiniz vs.
Kitap detayları paneline basitçe bir resmi sürükleyip bırakarak kitap kapağını değiştirebilirsiniz. Kapak resmini harici
bir programda düzenlemek isterseniz, basitçe sağ tıklayın ve Birlikte Aç seçin.
Ayrıca kitap detayları paneline dosyaları sürükleyip bırakarak mevcut kitaba dosyalar ekleyebilirsiniz.
Kitap detayları paneline çift tıklamak yeni ayrı bir pencerede açılmasına sebep olur.
Son olarak, Kitap Detayları panelinde hangi bilgilerin görüntüleneceğini Tercihler->Görünüm & Doku->Kitap Detayları altından özelleştirebilirsiniz.
1.1. Grafik Kullanıcı Arayüzü
17
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
1.1.10 Etiket Tarayıcı
Etiket Tarayıcı koleksiyonunuzu kolayca Yazar/Etiket/Seri/vs. ye göre kolayca taramanızı sağlar. Etiket Tarayıcıdaki
herhangi bir öğeye tıklarsanız, örneğin yazar ismi Isaac Asimov’a, sağdaki kitap listesi bu yazara ait kitapları gösterecek şekilde kısıtlanır. Kategori adlarına da tıklayabilirsiniz. Örneğin, “Serilere” tıklamak herhangi bir serideki tüm
kitapları gösterir.
Öğeye ilk tık listeyi öğeyle eşleşen ya da içeren kitapları gösterecek şekilde kısıtlar. Yukarıdaki örneğe devam edersek,
Isaac Asimov’a tıklamak bu yazarın kitaplarını gösterir. Öğeye tekrar tıklamak öğenin alt öğeleri olup olmadığına bağlı
olarak (aşağıdaki alt kategoriler ve sıralı dizili öğelere göz atın) gösterileni değiştirir. Isaac Asimov örneğinden devam
edersek, Isaac Asimov’a tekrar tıklamak listeyi Isaac Asimov’a ait olmayan kitapları gösteren kitaplara kısıtlar. Üçüncü
tık kısıtlamayı kaldırır, tüm kitapları gösterir. Ctrl veya Shift tuşlarına basılı tutup birden çok öğeye tıklarsanız, birden
çok öğeyi temel alan kısıtlamalar oluşturulur. Örneğin Ctrl tuşuna basılı tutup Tarih ve Avrupa etiketlerine basarak
Avrupa tarihiyle ilgili kitapları bulabilirsiniz. Etiket Tarayıcı Arama çubuğuna otomatik olarak girilen arama ifadeleri
oluşturarak çalışır. Etiket Tarayıcının ne ürettiğine bakmak temel arama ifadelerini öğrenmek için iyi bir yöntemdir.
Etiket tarayıcıdaki öğelerin simgeleri kısmen renklendirilir. Rengin miktarı kitapların o kategorideki ortalama oyuna
bağlıdır. Yani Isaac Asimov’a ait kitapların ortalama dört yıldızı varsa, Isaac Asimov’un Etiket Tarayıcıdaki simgesi
18
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
4/5 oranında renklendirilir. Farenizi simge üzerine getirerek ortalama oyu görebilirsiniz.
Etiket tarayıcıdaki dış-seviye öğeler, örneğin Yazarlar ve Seriler, kategori olarak adlandırılır. Öğeleri organize etmek için kullanışlı olan ve Kullanıcı Kategorileri denen kendi kategorilerinizi oluşturabilirsiniz. Örneğin Kullanıcı
Kategorisi Düzenleyiciyi (:guilabel:‘Etiket Tarayıcıyı Düzenle->Yazarları yönet, seriler, vs.->Kullanıcı Kategorilerini
Yönet‘e tıklayın) kullanarak Sevilen Yazarlar adında bir kategori oluşturabilir, sık kullanılanlarınızdaki öğeleri bu
kategoriye koyabilirsiniz. Kullanıcı kategorilerinin alt kategorileri olabilir. Örneğin, Sıkkullanılan.Yazarlar kategorisi
Sıkkullanılan kategorisinin alt kategorisidir. Ayrıca Sıkkullanılan.Seriler de olabilir, bu durumda Sıkkullanılan altında
iki alt kategoriniz olur. Alt kategoriler bir kullanıcı kategorisine sağ tıklayıp “Alt kategoriyi ekle ...” seçilerek ve alt
kategori ismini girerek; veya Kullanıcı Kategorisi Düzenleyici kullanarak ve yukarıdaki örnekteki gibi Sıkkullanılan
gibi bir isim girerek oluşturulabilir.
Kullanıcı kategorilerini dahili kategorilerle aynı şekilde, üzerlerine tıklayarak arayabilirsiniz. Tıklamayla döngülenen dört deği
1. “kategorideki öğeyle eşleşen herşey” tek yeşil bir artı işareti ile gösterilir.
2. “kategori veya alt kategorideki öğeyle eşleşen herşey” iki yeşil artı işareti ile gösterilir.
3. “kategorideki öğeyle eşleşmeyen herşey” tek kırmızı bir eksi işareti ile gösterilir.
4. “kategori veya alt kategorideki öğeyle eşleşmeyen herşey” iki kırmızı eksi işareti ile gösterilir.
Etiketler, seriler ve özel sütunlar gibi bazı metin kategorileri içinde sıralı diziler oluşturmak da mümkündür. Bu sıralı
diziler küçük üçgenler olarak görünür, alt öğelerin gizlenmesine izin verirler. Bir kategoride öğelerin sıralı dizisini
kullanmak için, önce Tercihler->Görünüm & Doku altına gitmeniz ve kategori isim(ler)ini “Sıralı dizi öğeli kategoriler” kutusuna yazmalısınız. Bu tamamlandıktan sonra, bu kategorideki nokta içeren öğeler küçük üçgen kullanarak
gösterilir. Örneğin, “Tür” adında özel bir sütun oluşturduğunuzu ve sıralı dizi öğeleri içerdiğini belirttiğinizi düşünelim. Artık Gizem.Gerilim ve Gizem.İngilizce gibi öğeler yanında küçük üçgen olan Gizem ile gösterilir. Üçgene
tıklamak Gerilim ve İngilizce alt öğelerini gösterir. Daha fazla bilgi için Kitapların alt gruplarını yönetme, örneğin
“tür” (sayfa 127) kısmına bakınız.
Sıralı dizi öğeler (alt öğesi olanlar) kategorilerle aynı dört ‘üstüne tıklama’ aramalarını kullanırlar. Alt öğesi olmayan
öğeler aramaların ikisini kullanırlar: “eşleşen herşey” ve “eşleşmeyen herşey”.
Etiket tarayıcıdaki öğeleri kullanıcı kategorileri üzerine sürükle bırak yaparak o kategoriye ekleyebilirsiniz. Kaynak
bir kullanıcı kategorisi ise, sürüklerken shift tuşuna basılı tutmak öğeyi yeni kategoriye taşır. Ayrıca kitap listesinden
kitapları Etiket Tarayıcıya da sürükleyip bırakabilirsiniz; kitabı bir öğenin üstüne bırakmak bu öğenin bırakılan kitaba
uygulanmasına sebep olur. Örneğin, bir kitabı Isaac Asimov üzerine bırakmak bu kitabın yazarını Isaac Asimova yapar.
Tarih etiketinin üstüne bırakmak kitabın etiketlerine Tarihi ekler.
Etiket Tarayıcının üst kısmında Etiket Tarayıcıdaki herhangi bir öğeyi kolayca bulmanızı sağlayan bir arama çubuğu
var. Ek olarak, herhangi bir öğeye sağ tıklayabilir ve değişik işlemlerden birini seçebilirsiniz. Örneğin gizleme, yeniden isimlendirme, ya da bu türde öğeleri yönetmenizi sağlayan bir “X’i Yönet” iletişim penceresi açma olabilir.
Örneğin, “Yazarları Yönet” iletişim penceresi yazarları yeniden isimlendirmenize ve isimlerinin nasıl sıralanacağına
karar vermenize yarar.
Etiket Tarayıcının alt kısmındaki Etiket Tarayıcıyı Değiştir düğmesi ile Etiket tarayıcıdaki öğelerin nasıl sıralanacağını
kontrol edebilirsiniz. İsme göre, ortalama oya göre veya popülerliğe göre (popülerlik kitaplığınızdaki o öğeden kitap
sayısıdır; örnein Isaac Asimov’un popüleritesi kitaplığınzıda Isaac Asimov’un kaç kitabı bulunduğudur) sıralayabilirsiniz.
1.1. Grafik Kullanıcı Arayüzü
19
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
1.1.11 Kapak Izgarası
Koleksiyonunuzu kapaklarla gezmeyi tercih ederseniz calibre’nin bir kitap listesi yerine kitap kapağı ızgarası göstermesini sağlayabilirsiniz. Kapak Izgarası calibre ana penceresinin sağ alt köşesindeki ızgara düğmesine tıklanarak
etkinleştirilir. Kapak boyutlarını ve kapak arkaplanını Tercihler->Görünüm & Doku->Kapak Izgarası ile özelleştirebilirsiniz. Hatta calibre’nin belirtilen herhangi alanı kapağın altında göstermesini sağlayabilirsiniz, başlık, yazar veya
oy oranı veya belirttiğiniz özel bir sütun olabilir.
20
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
1.1.12 Kapak Tarayıcı
Yukarıda anlatılan kapak ızgarasına ek olarak, kapakları tek bir satırda göstermeyi de seçebilirsiniz. Bu ana pencerenin
sağ alt köşesindeki bir düğme ile etkinleştirilir. Tercihler->Görünüm & Doku->Kapak Tarayıcı içinde görüntülenen
kapak sayısını değiştirebilir, hatta kapak tarayıcının kendisini ayrı bir pencerede göstermesini sağlayabilirsiniz.
1.1.13 Hızlıgörünüm
Bazen bir kitap seçmek ve bir kategoride aynı değere sahip kitapların listesini almak istersiniz (yazarlar, etiketler,
yayımcılar, seriler, vs), ama kitaplığın mevcut görünümünü bozmadan. Bunu Hızlıgörünüm ile yapabilirsiniz. Hızlıgörünüm ilgilenilen değerle eşleşen kitapları ikinci bir pencerede açarak gösterir.
Örneğin, o an seçili kitapla aynı yazara sahip kitapları listelemek istediğinizi varsayalım. İlgilendiğiniz yazar hücresine
tıklayın ve ‘Q’ tuşuna basın. Bu kitabın tüm yazarlarını sol tarafta, ve seçilen yazara ait tüm kitapları sağda gösteren
bir pencere açılır.
Bazı örnek Hızlıgörünüm kullanımları: diğer kitaplarla ilgili hızlıca bilgi almak için:
• seçili kitaba uygulanmış herhangi bir etiketi olan,
• mevcut kitapla aynı seride olan
• bir özel sütunda mevcut kitapla aynı değerlere sahip olan
• mevcut kitaptaki yazarların biriyle yazılmış olan
kitaplık görünümünün içeriği bozulmadan gösterilir.
Hızlıgörünüm penceresi calibre penceresinin üstüne açılır ve siz kapatana kadar açık kalır. Hızlıgörünüm ve calibre
kitaplık görünümünü aynı anda kullanabilirsiniz. Örneğin, calibre kitaplık görünümünde bir kitap için kategori sütununa tıklarsanız (etiketler, seriler, editör, yazarlar, vs) Hızlıgörünüm penceresi içeriği seçili kitap için bu kategorideki
öğeleri sol taraftaki panelde gösterecek şekilde değişir (örn., bu kitap için etiketler). Bu listedeki ilk öğe seçilecektir,
ve Hızlıgörünüm panelin sağ tarafında bu öğeye referans veren tüm kitapları gösterecektir. Sol taraftaki panelde farklı
bir öğeye tıklayarak bu diğer öğeye sahip kitapları görebilirsiniz.
Hızlıgörünüm penceresinde bir kitaba çift tıklayarak bu kitabı kitaplık görünümünde seçebilirsiniz. Bu ayrıca Hızlıgörünüm penceresindeki (sol taraftaki panel) öğe gösterimini de seçilen yeni kitaptaki öğeleri gösterecek şekilde
değiştirir.
1.1. Grafik Kullanıcı Arayüzü
21
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Hızlıgörünüm penceresinde bir kitaba Shift- (veya Ctrl-) çift tık yaparak metadata düzenleme penceresini calibre
penceresinde açabilirsiniz.
Bur sütunun Hızlıgörünümde gösterilip gösterilemeyeceğini farenizi sütun başlığı üstüne getirip bu başlık için açılan
araç ipucuna bakarak görebilirsiniz. Ayrıca sütun başlığına sağ tıklayarak “Hızlıgörünüm” seçeneğinin menüde gösterilip gösterilmediğine de bakabilirsiniz, bu durumda Hızlıgörünüm seçeneğini seçmek mevcut hücrede ‘Q’ tuşlamakla
aynıdır.
Hızlıgörünüm sanal kitaplık ayarlarına uyar, sadece mevcut sanal kitaplıktaki kitapları gösterir.
1.1.14 Görevler
Görevler paneli o an çalışan görevlerin sayısını gösterir. Görevler ayrı bir süreçte çalışan işlerdir. E-kitapların dönüştürülmesi ve okuyucu cihazınızla iletişim gibi işleri içerirler. Görevler paneline tıklayarak görev listesine erişebilirsiniz.
Bir görev tamamlandığında bu göreve ait detaylı bir kaydı listede çift tıklayarak görebilirsiniz. Bu başarıyla sonlanmamış görevlerde hata ayıklama için faydalıdır.
1.1.15 Klavye Kısayolları
Calibre size zaman ve fare hareketi tasarrufu yaptırmak için bir çok klavye kısayoluyla gelir. Bu kısayollar kitap
listesi görünümünde etkindirler (belirli bir kitabın detaylarını düzenlemediğiniz zaman), ve bir çoğu seçili olan başlığı
etkiler. Calibre e-kitap görüntüleyicinin kendi kısayolları vardır ve görüntüleyicideki Tercihler düğmesine basarak
özelleştirilebilirler.
Not: Not: Calibre klavye kısayollarının özellikle belirtilmediği sürece bir değiştirici tuşa ihtiyacı yoktur (Komut,
Seçenek, Kontrol, vs.). Yalnızca harf tuşuna basarak, örn. E düzenleyebilirsiniz.
Tablo 1.1: Klavye Kısayolları
Klavye Kısayolu
F2 (OS X de Enter)
A
Shift+A
C
D
Del
E
G
I
K
M
Alt+M
O
P
S
T
V
Eylem
Mevcut seçili alanın metadata’sını kitap listesinde düzenle.
Kitap Ekle
Seçili kitaplara Biçimler ekle
Seçili Kitapları dönüştür
Cihaza gönder
Seçili kitapları sil
Seçili kitapların metadata’sını düzenle
Kitapları Al
Kitap detaylarını göster
İçindekileri Düzenle
Seçili kayıtları birleştir
Seçili kayıtları birleştir, asıllarını koru
İçeren dizini aç
Kitapları cilala
Diske Kaydet
Kitabı Düzenle
Görünüm
Devamı sonraki sa
22
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Klavye Kısayolu
Alt+V/OS X’de Cmd+V
Alt+Shift+J
Alt+Shift+B
Alt+Shift+D
Alt+Shift+T
Alt+Shift+G
Alt+A
Alt+T
Alt+P
Alt+Shift+S
/, Ctrl+F
Arama çubuğuna odaklan
Esc
Shift+Esc
Ctrl+Esc
Alt+Esc
Ctrl+*
Ctrl+Right
Ctrl+Left
N veya F3
Shift+N veya Shift+F3
Ctrl+D
Ctrl+R
Ctrl+Shift+R
Shift+Ctrl+E
Ctrl+M
Q
Shift+Q
Shift+S
Ctrl+Q
Tablo 1.1 – önceki sayfadan devam
Eylem
Belli bir formatı görüntüle
Görev listesini tetikle
Kapak Tarayıcıyı Tetikle
Kitap Detayları panelini Tetikle
Etiket Tarayıcıyı Tetikle
Kapak Izgarasını Tetikle
Mevcut kitapla aynı yazara sahip kitapları göster
Mevcut kitapla aynı etikete sahip kitapları göster
Mevcut kitapla aynı yayımcıya sahip kitapları göster
Mevcut kitapla aynı serideki kitapları göster
Arama çubuğuna odaklan
Gelişmiş arama penceresini aç
Mevcut aramayı temizle
Kitap listesine odaklan
Sanal kitaplığı temizle
Ek kısıtlamaları temizle
Mevcut aramayı temel alan bir geçici sanal kitaplık oluştur
Sonraki sanal kitaplık sekmesini seçin
Önceki sanal kitaplık sekmesini seçin
Güncel aramayla eşleşen sıradaki kitabı bul (sadece arama tercihlerinde arama vurgulaması açıksa ç
Güncel aramayla eşleşen önceki kitabı bul (sadece arama tercihlerinde arama vurgulaması açıksa ça
Metaveriyi ve kapakları indir.
Calibre’yi yeniden başlatın
Calibre’yi hata ayıklama kipinde yeniden başlat
Calibre’ye boş kitaplar ekle
Seçili kitaplarda işaretli/işaretsiz durumunu yer değiştir
İlişkili seriler/etiketler/vs. içindeki kitapları görüntülemek için Hızlı Görünüm penceresini aç
Açılan Hızlı Görünüm paneline odaklan.
Hızlı Görünüm panelinde bir arama yapın
Calibre’den Çık
1.2 Sık kullandığınız haber sitesini ekleme
calibre’nin internetten haberleri indiren ve e-kitaba dönüştüren esnek ve güçlü, kolay kullanılabilir bir uygulama iskeleti varıdr. Aşağıda size örnekler vasıtasıyla çeşitli web sitelerinden haberleri nasıl alabileceğinizi göstereceğiz.
Uygulama çatısını nasıl kullanacağınızı anlamak için, örnekleri aşağıda listelenen sırada takip edin:
1.2. Sık kullandığınız haber sitesini ekleme
23
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
• Tamamı otomatik alınıyor (sayfa 24)
– Calibre blog (sayfa 24)
– bbc.co.uk (sayfa 26)
• Getirme işleminin özelleştirilmesi (sayfa 26)
– bbc.co.uk nin yazdırma sürümünün kullanılması (sayfa 26)
– Makale biçemlerinin değiştirilmesi (sayfa 27)
– Parçalama (sayfa 28)
– Gerçek dünya örneği (sayfa 35)
• Yeni reçeteler geliştirmek için ipuçları (sayfa 37)
• İleri okuma (sayfa 38)
• API belgelendirmesi (sayfa 38)
1.2.1 Tamamı otomatik alınıyor
Haber kaynağınız yeterince basitse, calibre tamamen otomatik olarak getirebilir olabilir, tek yapmanız gereken URL’yi
sağlamaktır. calibre haber kaynağını bir recipe ye indirmek için gerekli tüm bilgiyi toparlar. calibre’ye bir haber kaynağından bahsetmek için bu haber kaynağı için bir recipe oluşturmalısınız. Biraz örnek görelim:
Calibre blog
Calibre blogu yeni calibre kullanıcılarına calibre’nin bir çok kullanışlı özelliğini basit ve erişilebilir şekilde sunan blog
girdileri içerir. Bu blogu bir e-kitap olarak indirmek için blogun RSS beslemesine güveniyoruz:
=
{}=
[email protected]
=0=1=2=0=1=2http://blog.calibre\PYGZhy{}ebook.com/feeds/posts/default
RSS URL’sini blog sayfasının altındaki “Subscribe to” altına bakıp Posts->Atom seçerek aldım. Calibre’nin beslemeleri indirmesini ve e-booka dönüştürmesini sağlamak için önce Haberleri getir düğmesine sağ tıklamanız sonra Özel
haber kaynağı ekle menü öğesine tıklamanız, sonra da Yeni Reçete düğmesine tıklamanız gerekli. Aşağıda gösterilen
benzeri bir iletişim penceresi açılacaktır.
24
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Önce Reçete başlığı alanın calibre Blog girin. Yukardaki beslemelerden oluşturulacak e-kitabın başlığı bu olacak.
Sonraki iki alan (En eski makale ve :guilabel:‘Azami makale sayısı ‘) her beslemeden kaç makale indirileceği konusunu kontrol etmenize izin verir, zaten ne oldukları epey açık.
Beslemeleri reçeteye eklemek için, besleme başlığı ve besleme URL’sini girin ve Besleme ekle düğmesine tıklayın.
Besleme eklendikten sonra basitçe Kaydet düğmesine tıklayın, hepsi bu kadar. İletişim penceresini kapatın.
Yeni reçete‘nizi test etmek için :guilabel:‘Haberleri getir düğmesine tıklayın ve Özel haber kaynağı alt menüsünde
calibre Blog tıklayın. Bir kaç dakika sonra blog gönderilerinden oluşan yeni indirilmiş e-kitap ana kitaplık görünümünde görünecektir (okuyucunuz bağlıysa, kitaplık yerine okuyucuya konacaktır). Okumak için seçim yaptıktan sonra
Görüntüle düğmesine tıklayın!
Bu işlemin çok iyi çalışmasının sebebi blogun tam-içerikli RSS beslemeleri içermesiydi, örn., makale içeriği beslemenin içine gömülmüştü. Haberleri bu şekilde sağlayan çoğu haber kaynağı için, yani tam-içerikli beslemeyle, e-kitaba
dönüştürmek için ek bir çaba harcamanıza gerek kalmaz. Şimdi tam içerikli besleme sağlamayan bir haber kaynağına
bakacağız. Böyle beslemelerde, tam makale bir web sayfasıdır ve besleme yalnızca makaleye kısa bir özet içeren web
sayfasına bağlantı içerir.
1.2. Sık kullandığınız haber sitesini ekleme
25
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
bbc.co.uk
The BBC den şu iki beslemeyi deneyelim:
1. Haber Ön Sayfası: http://newsrss.bbc.co.uk/rss/newsonline_world_edition/front_page/rss.xml
2. Bilim/Doğa: http://newsrss.bbc.co.uk/rss/newsonline_world_edition/science/nature/rss.xml
Yukarda Calibre blog (sayfa 24) da gösterilen yöntemi takip edip bir The BBC reçetesi oluşuturun (yukardaki beslemeleri kullanarak). İndirilen e-kitaba bakarak calibre’nin her makalenin web sayfasından sadece önemseyeceğiniz içeriği
çıkararak epey iyi bir iş yaptığını görebiliriz. Fakat çıkartma işlemi hatasız değildir. Bazen arkasında menü ve gezinti öğeleri bırakır, veya makale başlıkları gibi çıkarılmaması gereken kısımları çıkarır. Mükemmel içerik çıkarmayı
başarmak için, getirme sürecini sıradaki bölümde olduğu gibi özelleştirmemiz gerekir.
1.2.2 Getirme işleminin özelleştirilmesi
İndirme işlemini mükemmelleştirmeye, ya da karmaşık bir siteden içerik indirmeye çalışırken reçete yazılım çatısının
tüm güç ve esnekliğini kullanabilirsiniz. Bunun için Özel haber kaynağı ekle iletişim penceresinde Gelişmiş Kipe geç
düğmesine tıklamanız yeterli.
En kolay ve çoğunlukla en üretken özelleştirme çevrimiçi makalelerin yazdırma sürümlerinin kullanılmasıdır. Yazdırma sürümü genel olarak çok daha az gereksiz şey bırakır ve e-kitaba çok daha pürüzsüz dönüştürülebilir. The BBC
deki makalelerin yazdırma sürümlerini kullanmaya çalışalım.
bbc.co.uk nin yazdırma sürümünün kullanılması
İlk adım daha önce :ref:‘bbc‘den indirdiğimiz e-kitaba bakmaktır. Her makalenin sonunda, makalenin nerden indirildiğini söyleyen küçük bir bölüm vardır. Bu URL’yi kopyalayıp tarayıcıya yapıştırın. Şimdi makale web sayfasında
“Yazdırılabilir sürüm”ü gösteren bir bağlantı arayın. Makelenin yazdırma görünümünü görmek için tıklayın. Çok daha
düzenli görünüyor! Şimdi iki URL’yi karşılaştırın. Benim için sonuç şöyle:
Makale URL http://news.bbc.co.uk/2/hi/science/nature/7312016.stm
Yazdırma sürümü URL’si http://newsvote.bbc.co.uk/mpapps/pagetools/print/news.bbc.co.uk/2/hi/science/nature/7312016.stm
Öyle görünüyor ki yazdırma sürümünü almak için her makale URL’sine şu ön ek gelmeli:
newsvote.bbc.co.uk/mpapps/pagetools/print/
Şimdi Özel haber kaynağı iletişim penceresindeki :guilabel:‘Gelişmiş Kip‘de şunun gibi bir şey görmelisiniz (gelişmiş
kipe geçmeden The BBC reçetesini seçmeyi unutmayın):
Gördüğünüz gibi :guilabel:‘Temel kip‘deki alanlar anlaşılır şekilde python koduna çevrildi. Bu reçeteye makalelerin
yazdırma sürümünü kullanmasını sağlayacak yönergeler yazmalıyız. Gereken tek şey aşağıdaki iki satırı eklemek:
26
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
=
{}=
[email protected]
=0=1=2=0=1=2\PYG{k}{def} \PYG{n+nf}{print\PYGZus{}version}\PYG{p}{(}\PYG{n+nb+bp}{self}\PYG{p}{,} \PYG
\PYG{k}{return} \PYG{n}{url}\PYG{o}{.}\PYG{n}{replace}\PYG{p}{(}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{htt
Bu python, yani girintileme önemli. Satırları ekledikten sonra şöyle görünmeli:
Yukarıdaki def print_version(self, url) calibre tarafından her makale için çağrılan bir *metod*u tanımlar. url asıl makalenin URL’sidir. print_version un yaptığı bu URL’yi alıp makalenin yazdırılabilir sürümünü
gösteren URL ile değiştirmektir. Python <https://www.python.org> hakkında bilgi için tanıtıma4 göz atın.
Şimdi Reçete ekle/güncelle düğmesine tıkladığınızda değişiklikleriniz kaydedilecek. Çok daha gelişmiş bir e-kitabınız
olmalı. Yeni sürümün sorunlarından biri yazdırma sürümünde yazı tipi boyutunun çok küçük olması olabilir. E-kitaba
dönüştürme yapıldığında bu otomatik olarak düzeltilir, fakat düzeltme sonrası bile menü ve gezinti çubuklarının boyutları makale metnine göre çok büyük kalabilir. Bunu düzeltmek için, sonraki kısımda biraz daha özelleştirme yapacağız.
Makale biçemlerinin değiştirilmesi
Önce bölümde, The BBC nin yazdırılabilir sürümündeki yazı tipi boyutunun çok küçük olduğunu gördük. Bir çok
web sitesinde, The BBC dahil, bu yazı tipi CSS stil sayfaları ile ayarlanır. Şu satırı ekleyerek bu gibi stil sayfalarının
getirilmesini engelleyebiliriz:
=
{}=
[email protected]
=0=1=2=0=1=2\PYG{n}{no\PYGZus{}stylesheets} \PYG{o}{=} \PYG{n+nb+bp}{True}
Tarifi şimdi gibi görünüyor:
4
https://docs.python.org/2/tutorial/
1.2. Sık kullandığınız haber sitesini ekleme
27
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Yeni sürüm oldukça iyi görünüyor. Mükemmelliyetçiyseniz, sonraki kısmı da okumak isteyeceksiniz, bu bölüm asıl
indirilen içeriğin değiştirilmesiyle ilgilenir.
Parçalama
calibre indirilen içerikte oynama yapmaya gelince bir çok güçlü ve esnek yetenek içerir. Bunlardan bir kaçını göstermek için, eski dostumuz The BBC (sayfa 27) reçetesine tekrar bakalım. Bir kaç makalenin (yazdırılabilir sürüm) kayna
koduna (HTML) baktığımızda işe yarar bir içeriği olmayan alt bilgileri olduğunu görürüz
=
{}=
[email protected]
=0=1=2=0=1=2\PYG{n+nt}{\PYGZlt{}div} \PYG{n+na}{class=}\PYG{l+s}{\PYGZdq{}footer\PYGZdq{}}\PYG{n+nt}{\
...
\PYG{n+nt}{\PYGZlt{}/div\PYGZgt{}}
Bunu kaldırmak için şu eklenebilir:
=
{}=
[email protected]
=0=1=2=0=1=2\PYG{n}{remove\PYGZus{}tags}
\PYG{o}{=} \PYG{p}{[}\PYG{n+nb}{dict}\PYG{p}{(}\PYG{n}{nam
Son olarak, daha önce kapattığımız :term:‘CSS‘in bir kısmını e-kitaba dönüştürmeye daha uygun olan
kendi :term:‘CSS‘imizle değiştirelim:
=
{}=
[email protected]
=0=1=2=0=1=2\PYG{n}{extra\PYGZus{}css}
\PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{.headline \PYGZob
Bu eklemelerle, reçetemiz artık “üretim kalitesine” geldi, calibre tarafından BBC için kullanılan aşağıda gösterilen asıl
reçeteye de oldukça yaklaştı:
# # **** IMPORTANT **** # # DO NOT EDIT BELOW HERE UNLESS YOU KNOW WHAT YOU ARE DOING. # # DO NOT EDIT BELOW HERE UNLESS YOU KNOW WHAT YOU ARE DOING. # # I MEAN IT,YES I
DO,ABSOLUTELY,AT YOU OWN RISK. :) # # **** IMPORTANT **** #
# Author of this recipe. __author__ = 'mattst'
# Specify English as the language of the RSS feeds (ISO-639 code). language = 'en_GB'
# Set tags. tags = 'news,sport,blog'
# Set publisher and publication type. publisher = 'BBC' publication_type = 'newspaper'
28
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
# Disable stylesheets from site. no_stylesheets = True
# Specifies an override encoding for sites that have an incorrect charset # specified. Default of 'None' says to autodetect. Some other BBC recipes # use 'utf8',which works fine (so use that if necessary) but auto-detecting # with None
is working fine,so stick with that for robustness. encoding = None
# Sets whether a feed has full articles embedded in it. The BBC feeds do not. use_embedded_content = False
# Removes empty feeds - why keep them!? remove_empty_feeds = True
# Create a custom title which fits nicely in the Kindle title list. # Requires "import time" above class declaration,and
replacing # title with custom_title in conversion_options (right column only). # Example of string below: "BBC News
- 14 Nov 2011" # # custom_title= "BBC News - " + time.strftime('%d %b %Y')
''' # Conversion options for advanced users,but don't forget to comment out the # current conversion_options below.
Avoid setting 'linearize_tables' as that # plays havoc with the 'old style' table based pages. # conversion_options= {
'title' : title, 'comments' : description, 'tags' : tags, 'language' : language, 'publisher' : publisher, 'authors' : publisher,
'smarten_punctuation' : True } '''
conversion_options = { 'smarten_punctuation' : True }
# Specify extra CSS - overrides ALL other CSS (IE. Added last). extra_css = 'body { font-family: verdana,helvetica,sans-serif; } \ .introduction,.first { font-weight: bold; } \ .cross-head { font-weight: bold; font-size:
125%; } \ .cap,.caption { display: block; font-size: 80%; font-style: italic; } \ .cap,.caption,.caption img,.caption
span { display: block; text-align: center; margin: 5px auto; } \ .byl,.byd,.byline img,.byline-name,.byline-title,.authorname,.author-position,\ .correspondent-portrait img,.byline-lead-in,.name,.bbc-role { display: block; \ text-align: center; font-size: 80%; font-style: italic; margin: 1px auto; } \ .story-date,.published { font-size: 80%; } \ table { width:
100%; } \ td img { display: block; margin: 5px auto; } \ ul { padding-top: 10px; } \ ol { padding-top: 10px; } \
li { padding-top: 5px; padding-bottom: 5px; } \ h1 { text-align: center; font-size: 175%; font-weight: bold; } \ h2 {
text-align: center; font-size: 150%; font-weight: bold; } \ h3 { text-align: center; font-size: 125%; font-weight: bold;
} \ h4,h5,h6 { text-align: center; font-size: 100%; font-weight: bold; }'
# Remove various tag attributes to improve the look of the ebook pages. remove_attributes = [ 'border', 'cellspacing',
'align', 'cellpadding', 'colspan', 'valign', 'vspace', 'hspace', 'alt', 'width', 'height' ]
# Remove the (admittedly rarely used) line breaks,"<br />",which sometimes # cause a section of the ebook to start in
an unsightly fashion or,more # frequently,a "<br />" will muck up the formatting of a correspondant's byline. # "<br
/>" and "<br clear/>" are far more frequently used on the table formatted # style of pages,and really spoil the look of
the ebook pages. preprocess_regexps = [(re.compile(r'<br[ ]*/>', re.IGNORECASE), lambda m: ''), (re.compile(r'<br[
]*clear.*/>', re.IGNORECASE), lambda m: '')]
# Create regular expressions for tag keeping and removal to make the matches more # robust against minor changes
and errors in the HTML,Eg. double spaces,leading # and trailing spaces,missing hyphens,and such like. # Python
regular expression ('re' class) page: http://docs.python.org/library/re.html
# ***************************************
***************************************
#
Regular
expressions
for
keep_only_tags:
#
# The BBC News HTML pages use variants of 'storybody' to denote the section of a HTML # page which contains
the main text of the article. Match storybody variants: 'storybody', # 'story-body','story body','storybody ',etc. storybody_reg_exp = '^.*story[_ -]*body.*$'
# The BBC sport and 'newsbeat' (features) HTML pages use 'blq_content' to hold the title # and published date. This
is one level above the usual news pages which have the title # and date within 'story-body'. This is annoying since
'blq_content' must also be kept, # resulting in a lot of extra things to be removed by remove_tags. blq_content_reg_exp
= '^.*blq[_ -]*content.*$'
# The BBC has an alternative page design structure,which I suspect is an out-of-date # design but which is still used in
some articles,Eg. 'Click' (technology),'FastTrack' # (travel),and in some sport pages. These alternative pages are table
based (which is # why I think they are an out-of-date design) and account for -I'm guesstimaking- less # than 1% of
1.2. Sık kullandığınız haber sitesini ekleme
29
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
all articles. They use a table class 'storycontent' to hold the article # and like blq_content (above) have required lots
of extra removal by remove_tags. story_content_reg_exp = '^.*story[_ -]*content.*$'
# Keep the sections of the HTML which match the list below. The HTML page created by # Calibre will
fill <body> with those sections which are matched. Note that the # blq_content_reg_exp must be listed
before storybody_reg_exp in keep_only_tags due to # it being the parent of storybody_reg_exp,that is to
say the div class/id 'story-body' # will be inside div class/id 'blq_content' in the HTML (if 'blq_content' is
there at # all). If they are the other way around in keep_only_tags then blq_content_reg_exp # will end
up being discarded. keep_only_tags = [ dict(name='table', attrs={'class':re.compile(story_content_reg_exp,
re.IGNORECASE)}),
dict(name='div',
attrs={'class':re.compile(blq_content_reg_exp,
re.IGNORECASE)}),
dict(name='div',
attrs={'id':re.compile(blq_content_reg_exp,
re.IGNORECASE)}),
dict(name='div',
attrs={'class':re.compile(storybody_reg_exp,
re.IGNORECASE)}),
dict(name='div',
attrs={'id':re.compile(storybody_reg_exp, re.IGNORECASE)}) ]
#
************************************
************************************
#
Regular
expressions
for
remove_tags:
#
# Regular expression to remove share-help and variant tags. The share-help class # is used by the site for a variety
of 'sharing' type links,Eg. Facebook,delicious, # twitter,email. Removed to avoid page clutter. share_help_reg_exp =
'^.*share[_ -]*help.*$'
# Regular expression to remove embedded-hyper and variant tags. This class is used to # display links to other BBC
News articles on the same/similar subject. embedded_hyper_reg_exp = '^.*embed*ed[_ -]*hyper.*$'
# Regular expression to remove hypertabs and variant tags. This class is used to # display a tab bar at the top of an
article which allows the user to switch to # an article (viewed on the same page) providing further info.,'in depth'
analysis, # an editorial,a correspondant's blog entry,and such like. The ability to handle # a tab bar of this nature
is currently beyond the scope of this recipe and # possibly of Calibre itself (not sure about that - TO DO - check!).
hypertabs_reg_exp = '^.*hyper[_ -]*tabs.*$'
# Regular expression to remove story-feature and variant tags. Eg. 'story-feature', # 'story-feature related narrow','story-feature wide','story-feature narrow'. # This class is used to add additional info. boxes,or small lists,outside
of # the main story. TO DO: Work out a way to incorporate these neatly. story_feature_reg_exp = '^.*story[_ ]*feature.*$'
# Regular expression to remove video and variant tags,Eg. 'videoInStoryB', # 'videoInStoryC'. This class is used to
embed video. video_reg_exp = '^.*video.*$'
# Regular expression to remove audio and variant tags,Eg. 'audioInStoryD'. # This class is used to embed audio.
audio_reg_exp = '^.*audio.*$'
# Regular expression to remove pictureGallery and variant tags,Eg. 'pictureGallery'. # This class is used to embed a
photo slideshow. See also 'slideshow' below. picture_gallery_reg_exp = '^.*picture.*$'
# Regular expression to remove slideshow and variant tags,Eg. 'dslideshow-enclosure'. # This class is used to embed a slideshow (not necessarily photo) but both # 'slideshow' and 'pictureGallery' are used for slideshows. slideshow_reg_exp = '^.*slide[_ -]*show.*$'
# Regular expression to remove social-links and variant tags. This class is used to # display links to a BBC bloggers
main page,used in various columnist's blogs # (Eg. Nick Robinson,Robert Preston). social_links_reg_exp = '^.*social[_
-]*links.*$'
# Regular expression to remove quote and (multi) variant tags,Eg. 'quote', # 'endquote','quote-credit','quote-credittitle',etc. These are usually # removed by 'story-feature' removal (as they are usually within them),but # not always.
The quotation removed is always (AFAICT) in the article text # as well but a 2nd copy is placed in a quote tag to draw
attention to it. # The quote class tags may or may not appear in div's. quote_reg_exp = '^.*quote.*$'
# Regular expression to remove hidden and variant tags,Eg. 'hidden'. # The purpose of these is unclear,they seem to
be an internal link to a # section within the article,but the text of the link (Eg. 'Continue reading # the main story')
30
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
never seems to be displayed anyway. Removed to avoid clutter. # The hidden class tags may or may not appear in div's.
hidden_reg_exp = '^.*hidden.*$'
# Regular expression to remove comment and variant tags,Eg. 'comment-introduction'. # Used on the site to display
text about registered users entering comments. comment_reg_exp = '^.*comment.*$'
# Regular expression to remove form and variant tags,Eg. 'comment-form'. # Used on the site to allow registered BBC
users to fill in forms,typically # for entering comments about an article. form_reg_exp = '^.*form.*$'
# Extra things to remove due to the addition of 'blq_content' in keep_only_tags.
#<div class="story-actions"> Used on sports pages for 'email' and 'print'. story_actions_reg_exp = '^.*story[_ ]*actions.*$'
#<div class="bookmark-list"> Used on sports pages instead of 'share-help' (for # social networking links). bookmark_list_reg_exp = '^.*bookmark[_ -]*list.*$'
#<div id="secondary-content" class="content-group"> # NOTE: Don't remove class="content-group" that is needed.
# Used on sports pages to link to 'similar stories'. secondary_content_reg_exp = '^.*secondary[_ -]*content.*$'
#<div id="featured-content" class="content-group"> # NOTE: Don't remove class="content-group" that is needed. # Used on sports pages to link to pages like 'tables','fixtures',etc. featured_content_reg_exp = '^.*featured[_
-]*content.*$'
#<div id="navigation"> # Used on sports pages to link to pages like 'tables','fixtures',etc. # Used sometimes instead
of "featured-content" above. navigation_reg_exp = '^.*navigation.*$'
#<a class="skip" href="#blq-container-inner">Skip to top</a> # Used on sports pages to link to the top of the page.
skip_reg_exp = '^.*skip.*$'
# Extra things to remove due to the addition of 'storycontent' in keep_only_tags, # which are the alterative table design
based pages. The purpose of some of these # is not entirely clear from the pages (which are a total mess!).
# Remove mapping based tags,Eg. <map id="world_map"> # The dynamic maps don't seem to work during ebook
creation. TO DO: Investigate. map_reg_exp = '^.*map.*$'
# Remove social bookmarking variation,called 'socialBookMarks'. social_bookmarks_reg_exp = '^.*social[_ ]*bookmarks.*$'
# Remove page navigation tools,like 'search','email','print',called 'blq-mast'. blq_mast_reg_exp = '^.*blq[_ -]*mast.*$'
# Remove 'sharesb',I think this is a generic 'sharing' class. It seems to appear # alongside 'socialBookMarks' whenever
that appears. I am removing it as well # under the assumption that it can appear alone as well. sharesb_reg_exp =
'^.*sharesb.*$'
# Remove class 'o'. The worst named user created css class of all time. The creator # should immediately be fired. I've
seen it used to hold nothing at all but with # 20 or so empty lines in it. Also to hold a single link to another article. #
Whatever it was designed to do it is not wanted by this recipe. Exact match only. o_reg_exp = '^o$'
# Remove 'promotopbg' and 'promobottombg',link lists. Have decided to # use two reg expressions to make removing this (and variants) robust. promo_top_reg_exp = '^.*promotopbg.*$' promo_bottom_reg_exp = '^.*promobottombg.*$'
# Remove 'nlp',provides heading for link lists. Requires an exact match due to # risk of matching those letters in
something needed,unless I see a variation # of 'nlp' used at a later date. nlp_reg_exp = '^nlp$'
# Remove 'mva',provides embedded floating content of various types. Variant 'mvb' # has also now been seen. Requires
an exact match of 'mva' or 'mvb' due to risk of # matching those letters in something needed. mva_or_mvb_reg_exp =
'^mv[ab]$'
# Remove 'mvtb',seems to be page navigation tools,like 'blq-mast'. mvtb_reg_exp = '^mvtb$'
# Remove 'blq-toplink',class to provide a link to the top of the page. blq_toplink_reg_exp = '^.*blq[_ -]*top[_ -]*link.*$'
1.2. Sık kullandığınız haber sitesini ekleme
31
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
# Remove 'products and services' links,Eg. desktop tools,alerts,and so on. # Eg. Class="servicev4 ukfs_services" what a mess of a name. Have decided to # use two reg expressions to make removing this (and variants) robust.
prods_services_01_reg_exp = '^.*servicev4.*$' prods_services_02_reg_exp = '^.*ukfs[_ -]*services.*$'
# Remove -what I think is- some kind of navigation tools helper class,though I am # not sure,it's called: 'blq-rst blqnew-nav'. What I do know is it pops up # frequently and it is not wanted. Have decided to use two reg expressions
to make # removing this (and variants) robust. blq_misc_01_reg_exp = '^.*blq[_ -]*rst.*$' blq_misc_02_reg_exp =
'^.*blq[_ -]*new[_ -]*nav.*$'
# Remove 'puffbox' - this may only appear inside 'storyextra',so it may not # need removing - I have no clue what it
does other than it contains links. # Whatever it is - it is not part of the article and is not wanted. puffbox_reg_exp =
'^.*puffbox.*$'
# Remove 'sibtbg' and 'sibtbgf' - some kind of table formatting classes. sibtbg_reg_exp = '^.*sibtbg.*$'
# Remove 'storyextra' - links to relevant articles and external sites. storyextra_reg_exp = '^.*story[_ -]*extra.*$'
remove_tags
=
[
dict(name='div',
attrs={'class':re.compile(story_feature_reg_exp,
re.IGNORECASE)}),
dict(name='div',
attrs={'class':re.compile(share_help_reg_exp,
re.IGNORECASE)}),
dict(name='div',
attrs={'class':re.compile(embedded_hyper_reg_exp,
re.IGNORECASE)}),
dict(name='div',
attrs={'class':re.compile(hypertabs_reg_exp,
re.IGNORECASE)}),
dict(name='div',
attrs={'class':re.compile(video_reg_exp,
re.IGNORECASE)}),
dict(name='div',
attrs={'class':re.compile(audio_reg_exp,
re.IGNORECASE)}),
dict(name='div',
attrs={'class':re.compile(picture_gallery_reg_exp,
re.IGNORECASE)}),
dict(name='div',
attrs={'class':re.compile(slideshow_reg_exp,
re.IGNORECASE)}),
dict(name='div',
attrs={'class':re.compile(quote_reg_exp, re.IGNORECASE)}), dict(name='div', attrs={'class':re.compile(hidden_reg_exp,
re.IGNORECASE)}),
dict(name='div',
attrs={'class':re.compile(comment_reg_exp,
re.IGNORECASE)}),
dict(name='div',
attrs={'class':re.compile(story_actions_reg_exp,
re.IGNORECASE)}),
dict(name='div',
attrs={'class':re.compile(bookmark_list_reg_exp,
re.IGNORECASE)}),
dict(name='div',
attrs={'id':re.compile(secondary_content_reg_exp,
re.IGNORECASE)}),
dict(name='div',
attrs={'id':re.compile(featured_content_reg_exp,
re.IGNORECASE)}),
dict(name='div',
attrs={'id':re.compile(navigation_reg_exp,
re.IGNORECASE)}),
dict(name='form',
attrs={'id':re.compile(form_reg_exp,
re.IGNORECASE)}),
dict(attrs={'class':re.compile(quote_reg_exp,
re.IGNORECASE)}),
dict(attrs={'class':re.compile(hidden_reg_exp,
re.IGNORECASE)}),
dict(attrs={'class':re.compile(social_links_reg_exp, re.IGNORECASE)}), dict(attrs={'class':re.compile(comment_reg_exp,
re.IGNORECASE)}),
dict(attrs={'class':re.compile(skip_reg_exp,
re.IGNORECASE)}),
dict(name='map',
attrs={'id':re.compile(map_reg_exp, re.IGNORECASE)}), dict(name='map', attrs={'name':re.compile(map_reg_exp,
re.IGNORECASE)}),
dict(name='div',
attrs={'id':re.compile(social_bookmarks_reg_exp,
re.IGNORECASE)}),
dict(name='div',
attrs={'id':re.compile(blq_mast_reg_exp,
re.IGNORECASE)}),
dict(name='div',
attrs={'class':re.compile(sharesb_reg_exp,
re.IGNORECASE)}),
dict(name='div',
attrs={'class':re.compile(o_reg_exp, re.IGNORECASE)}), dict(name='div', attrs={'class':re.compile(promo_top_reg_exp,
re.IGNORECASE)}),
dict(name='div',
attrs={'class':re.compile(promo_bottom_reg_exp,
re.IGNORECASE)}),
dict(name='div',
attrs={'class':re.compile(nlp_reg_exp,
re.IGNORECASE)}),
dict(name='div',
attrs={'class':re.compile(mva_or_mvb_reg_exp,
re.IGNORECASE)}),
dict(name='div',
attrs={'class':re.compile(mvtb_reg_exp,
re.IGNORECASE)}),
dict(name='div',
attrs={'class':re.compile(blq_toplink_reg_exp,
re.IGNORECASE)}),
dict(name='div',
attrs={'class':re.compile(prods_services_01_reg_exp,
re.IGNORECASE)}),
dict(name='div',
attrs={'class':re.compile(prods_services_02_reg_exp,
re.IGNORECASE)}),
dict(name='div',
attrs={'class':re.compile(blq_misc_01_reg_exp,
re.IGNORECASE)}),
dict(name='div',
attrs={'class':re.compile(blq_misc_02_reg_exp,
re.IGNORECASE)}),
dict(name='div',
attrs={'class':re.compile(puffbox_reg_exp,
re.IGNORECASE)}),
dict(attrs={'class':re.compile(sibtbg_reg_exp,
re.IGNORECASE)}), dict(attrs={'class':re.compile(storyextra_reg_exp, re.IGNORECASE)}) ]
# Uses url to create and return the 'printer friendly' version of the url. # In other words the 'print this page' address
of the page. # # There are 3 types of urls used in the BBC site's rss feeds. There is just # 1 type for the standard news
while there are 2 used for sports feed urls. # Note: Sports urls are linked from regular news feeds (Eg. 'News Home')
when # there is a major story of interest to 'everyone'. So even if no BBC sports # feeds are added to 'feeds' the logic
32
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
of this method is still needed to avoid # blank / missing / empty articles which have an index title and then no body.
def print_version(self, url):
# Handle sports page urls type 01: if (url.find("go/rss/-/sport1/") != -1): temp_url = url.replace("go/rss/-/", "")
# Handle sports page urls type
url.replace("go/rss/int/news/-/", "")
02:
elif
(url.find("go/rss/int/news/-/sport1/")
!=
-1):
temp_url
=
# Handle regular news page urls: else: temp_url = url.replace("go/rss/int/news/-/", "")
# Always add "?print=true" to the end of the url. print_url = temp_url + "?print=true"
return print_url
# Remove articles in feeds based on a string in the article title or url. # # Code logic written by: Starson17
- posted in: "Recipes - Re-usable code" # thread,in post with title: "Remove articles from feed",see url: #
http://www.mobileread.com/forums/showpost.php?p=1165462&postcount=6 # Many thanks and all credit to Starson17. # # Starson17's code has obviously been altered to suite my requirements. def parse_feeds(self):
# Call parent's method. feeds = BasicNewsRecipe.parse_feeds(self)
# Loop through all feeds. for feed in feeds:
# Loop through all articles in feed. for article in feed.articles[:]:
# Match key words and remove article if there's a match.
# Most BBC rss feed video only 'articles' use upper case 'VIDEO' # as a title prefix. Just match upper case
'VIDEO',so that # articles like 'Video game banned' won't be matched and removed. if 'VIDEO' in article.title:
feed.articles.remove(article)
# Most BBC rss feed audio only 'articles' use upper case 'AUDIO' # as a title prefix. Just match upper case
'AUDIO',so that # articles like 'Hi-Def audio...' won't be matched and removed. elif 'AUDIO' in article.title:
feed.articles.remove(article)
# Most BBC rss feed photo slideshow 'articles' use 'In Pictures', # 'In pictures',and 'in pictures',somewhere in their
title. # Match any case of that phrase. elif 'IN PICTURES' in article.title.upper(): feed.articles.remove(article)
# As above,but user contributed pictures. Match any case. elif 'YOUR PICTURES' in article.title.upper():
feed.articles.remove(article)
# 'Sportsday Live' are articles which contain a constantly and # dynamically updated 'running commentary' during a
live sporting # event. Match any case. elif 'SPORTSDAY LIVE' in article.title.upper(): feed.articles.remove(article)
# Sometimes 'Sportsday Live' (above) becomes 'Live - Sport Name'. # These are being matched below using 'Live - '
because removing all # articles with 'live' in their titles would remove some articles # that are in fact not live sports
pages. Match any case. elif 'LIVE - ' in article.title.upper(): feed.articles.remove(article)
# 'Quiz of the week' is a Flash player weekly news quiz. Match only # the 'Quiz of the' part in anticipation of monthly
and yearly # variants. Match any case. elif 'QUIZ OF THE' in article.title.upper(): feed.articles.remove(article)
# Remove articles with 'scorecards' in the url. These are BBC sports # pages which just display a cricket scorecard.
The pages have a mass # of table and css entries to display the scorecards nicely. Probably # could make them work
with this recipe,but might take a whole day # of work to sort out all the css - basically a formatting nightmare. elif
'scorecards' in article.url: feed.articles.remove(article)
return feeds
# End of class and file.
1.2. Sık kullandığınız haber sitesini ekleme
33
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
34
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Bu reçete calibre’nin gücüyle ilgili buz dağının yalnızca görünen kısmını keşfediyor. Calibre’nin yeteneklerinin daha
fazlasını keşfetmek için sonraki kısımda daha karmaşık bir gerçek dünyadan örneğe göz atacağız.
Gerçek dünya örneği
BasicNewsRecipe :term:‘API‘sini daha çok keşfeden nispeten karmaşık bir gerçek dünya örneği The New York
Times :term:‘reçete‘sidir
=
{}=
[email protected]
=0=1=2=0=1=2\PYG{k+kn}{import} \PYG{n+nn}{string}\PYG{o}{,} \PYG{n+nn}{re}
\PY
\PYG{k+kn}{from} \PYG{n+nn}{calibre.web.feeds.recipes} \PYG{k+kn}{import} \PYG{n}{BasicNewsRecipe}
\PYG{k+kn}{from} \PYG{n+nn}{calibre.ebooks.BeautifulSoup} \PYG{k+kn}{import} \PYG{n}{BeautifulSoup}
\PYG{k}{class} \PYG{n+nc}{NYTimes}\PYG{p}{(}\PYG{n}{BasicNewsRecipe}\PYG{p}{)}\PYG{p}{:}
\PYG{n}{title}
\PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{The New York Times}\PYG{l+s}{\PYGZs
\PYG{n}{\PYGZus{}\PYGZus{}author\PYGZus{}\PYGZus{}} \PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{Kov
\PYG{n}{description} \PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{Daily news from the New York Times}
\PYG{n}{timefmt} \PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{ [}\PYG{l+s}{\PYGZpc{}}\PYG{l+s}{a, }\P
\PYG{n}{needs\PYGZus{}subscription} \PYG{o}{=} \PYG{n+nb+bp}{True}
\PYG{n}{remove\PYGZus{}tags\PYGZus{}before} \PYG{o}{=} \PYG{n+nb}{dict}\PYG{p}{(}\PYG{n+nb}{id}\P
\PYG{n}{remove\PYGZus{}tags\PYGZus{}after} \PYG{o}{=} \PYG{n+nb}{dict}\PYG{p}{(}\PYG{n+nb}{id}\P
\PYG{n}{remove\PYGZus{}tags} \PYG{o}{=} \PYG{p}{[}\PYG{n+nb}{dict}\PYG{p}{(}\PYG{n}{attrs}\PYG{o}
\PYG{n+nb}{dict}\PYG{p}{(}\PYG{n+nb}{id}\PYG{o}{=}\PYG{p}{[}\PYG{l+s}{\PYGZsq{}}\PYG{
\PYG{n+nb}{dict}\PYG{p}{(}\PYG{n}{name}\PYG{o}{=}\PYG{p}{[}\PYG{l+s}{\PYGZsq{}}\PYG{l
\PYG{n}{encoding} \PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{cp1252}\PYG{l+s}{\PYGZsq{}}
\PYG{n}{no\PYGZus{}stylesheets} \PYG{o}{=} \PYG{n+nb+bp}{True}
\PYG{n}{extra\PYGZus{}css} \PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{h1 \PYGZob{}font: sans\PYGZhy
\PYG{k}{def} \PYG{n+nf}{get\PYGZus{}browser}\PYG{p}{(}\PYG{n+nb+bp}{self}\PYG{p}{)}\PYG{p}{:}
\PYG{n}{br} \PYG{o}{=} \PYG{n}{BasicNewsRecipe}\PYG{o}{.}\PYG{n}{get\PYGZus{}browser}\PYG{p}{
\PYG{k}{if} \PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{username} \PYG{o+ow}{is} \PYG{o+ow}{not} \PY
\PYG{n}{br}\PYG{o}{.}\PYG{n}{open}\PYG{p}{(}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{http://www.nyti
\PYG{n}{br}\PYG{o}{.}\PYG{n}{select\PYGZus{}form}\PYG{p}{(}\PYG{n}{name}\PYG{o}{=}\PYG{l+
\PYG{n}{br}\PYG{p}{[}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{USERID}\PYG{l+s}{\PYGZsq{}}\PYG{p}{]}
\PYG{n}{br}\PYG{p}{[}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{PASSWORD}\PYG{l+s}{\PYGZsq{}}\PYG{p}{]
\PYG{n}{br}\PYG{o}{.}\PYG{n}{submit}\PYG{p}{(}\PYG{p}{)}
\PYG{k}{return} \PYG{n}{br}
\PYG{k}{def} \PYG{n+nf}{parse\PYGZus{}index}\PYG{p}{(}\PYG{n+nb+bp}{self}\PYG{p}{)}\PYG{p}{:}
\PYG{n}{soup} \PYG{o}{=} \PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{index\PYGZus{}to\PYGZus{}soup}\
\PYG{k}{def} \PYG{n+nf}{feed\PYGZus{}title}\PYG{p}{(}\PYG{n}{div}\PYG{p}{)}\PYG{p}{:}
\PYG{k}{return} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{\PYGZsq{}}\PYG{o}{.}\PYG{n}{join}\PYG{p}{(}
\PYG{n}{articles} \PYG{o}{=} \PYG{p}{\PYGZob{}}\PYG{p}{\PYGZcb{}}
\PYG{n}{key} \PYG{o}{=} \PYG{n+nb+bp}{None}
\PYG{n}{ans} \PYG{o}{=} \PYG{p}{[}\PYG{p}{]}
\PYG{k}{for} \PYG{n}{div} \PYG{o+ow}{in} \PYG{n}{soup}\PYG{o}{.}\PYG{n}{findAll}\PYG{p}{(}\PY
\PYG{n}{attrs}\PYG{o}{=}\PYG{p}{\PYGZob{}}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{class}\PYG{l+s}{
\PYG{k}{if} \PYG{n}{div}\PYG{p}{[}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{class}\PYG{l+s}{\PYGZsq{
\PYG{n}{key} \PYG{o}{=} \PYG{n}{string}\PYG{o}{.}\PYG{n}{capwords}\PYG{p}{(}\PYG{n}{
\PYG{n}{articles}\PYG{p}{[}\PYG{n}{key}\PYG{p}{]} \PYG{o}{=} \PYG{p}{[}\PYG{p}{]}
\PYG{n}{ans}\PYG{o}{.}\PYG{n}{append}\PYG{p}{(}\PYG{n}{key}\PYG{p}{)}
1.2. Sık kullandığınız haber sitesini ekleme
35
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
\PYG{k}{elif} \PYG{n}{div}\PYG{p}{[}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{class}\PYG{l+s}{\PYGZs
\PYG{n}{a} \PYG{o}{=} \PYG{n}{div}\PYG{o}{.}\PYG{n}{find}\PYG{p}{(}\PYG{l+s}{\PYGZsq
\PYG{k}{if} \PYG{o+ow}{not} \PYG{n}{a}\PYG{p}{:}
\PYG{k}{continue}
\PYG{n}{url} \PYG{o}{=} \PYG{n}{re}\PYG{o}{.}\PYG{n}{sub}\PYG{p}{(}\PYG{l+s}{r\PYGZs
\PYG{n}{url} \PYG{o}{+}\PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{?pagewanted=all}\PYG
\PYG{n}{title} \PYG{o}{=} \PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{tag\PYGZus{}to\PYGZus
\PYG{n}{description} \PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{\PYGZsq{}}
\PYG{n}{pubdate} \PYG{o}{=} \PYG{n}{strftime}\PYG{p}{(}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}
\PYG{n}{summary} \PYG{o}{=} \PYG{n}{div}\PYG{o}{.}\PYG{n}{find}\PYG{p}{(}\PYG{n+nb+b
\PYG{k}{if} \PYG{n}{summary}\PYG{p}{:}
\PYG{n}{description} \PYG{o}{=} \PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{tag\PYGZus{
\PYG{n}{feed} \PYG{o}{=} \PYG{n}{key} \PYG{k}{if} \PYG{n}{key} \PYG{o+ow}{is} \PYG{o
\PYG{k}{if} \PYG{o+ow}{not} \PYG{n}{articles}\PYG{o}{.}\PYG{n}{has\PYGZus{}key}\PYG{
\PYG{n}{articles}\PYG{p}{[}\PYG{n}{feed}\PYG{p}{]} \PYG{o}{=} \PYG{p}{[}\PYG{p}{
\PYG{k}{if} \PYG{o+ow}{not} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{podcasts}\PYG{l+s}{\PYGZsq
\PYG{n}{articles}\PYG{p}{[}\PYG{n}{feed}\PYG{p}{]}\PYG{o}{.}\PYG{n}{append}\PYG{
\PYG{n+nb}{dict}\PYG{p}{(}\PYG{n}{title}\PYG{o}{=}\PYG{n}{title}\PYG{p
\PYG{n}{description}\PYG{o}{=}\PYG{n}{description}\PYG{p}{,}
\PYG{n}{content}\PYG{o}{=}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{\PYGZsq{}
\PYG{n}{ans} \PYG{o}{=} \PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{sort\PYGZus{}index\PYGZus{}by}\P
\PYG{n}{ans} \PYG{o}{=} \PYG{p}{[}\PYG{p}{(}\PYG{n}{key}\PYG{p}{,} \PYG{n}{articles}\PYG{p}{[
\PYG{k}{return} \PYG{n}{ans}
\PYG{k}{def} \PYG{n+nf}{preprocess\PYGZus{}html}\PYG{p}{(}\PYG{n+nb+bp}{self}\PYG{p}{,} \PYG{n}{s
\PYG{n}{refresh} \PYG{o}{=} \PYG{n}{soup}\PYG{o}{.}\PYG{n}{find}\PYG{p}{(}\PYG{l+s}{\PYGZsq{}
\PYG{k}{if} \PYG{n}{refresh} \PYG{o+ow}{is} \PYG{n+nb+bp}{None}\PYG{p}{:}
\PYG{k}{return} \PYG{n}{soup}
\PYG{n}{content} \PYG{o}{=} \PYG{n}{refresh}\PYG{o}{.}\PYG{n}{get}\PYG{p}{(}\PYG{l+s}{\PYGZsq
\PYG{n}{raw} \PYG{o}{=} \PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{browser}\PYG{o}{.}\PYG{n}{open}\
\PYG{k}{return} \PYG{n}{BeautifulSoup}\PYG{p}{(}\PYG{n}{raw}\PYG{o}{.}\PYG{n}{decode}\PYG{p}{
Bu yeni :term:‘reçete‘de bir çok yeni özellik görüyoruz. Öncelikle:
=
{}=
[email protected]
=0=1=2=0=1=2\PYG{n}{timefmt} \PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{ [}\PYG{l+s}{\PYGZpc{}}\PYG{l+s}
Bu oluşturulan e-kitabın ön sayfasında gösterilen zamanı Gün, Ay, Yıl biçiminde ayarlar. Ayrıca bakınız
timefmt (sayfa 48).
Sonra indirilen :term:‘HTML‘in temizlenmesi için bir grup yönerge görüyoruz:
=
{}=
[email protected]
=0=1=2=0=1=2\PYG{n}{remove\PYGZus{}tags\PYGZus{}before} \PYG{o}{=} \PYG{n+nb}{dict}\PYG{p}{(}\PYG{n}{n
\PYG{n}{remove\PYGZus{}tags\PYGZus{}after} \PYG{o}{=} \PYG{n+nb}{dict}\PYG{p}{(}\PYG{n+nb}{id}\PYG{o
\PYG{n}{remove\PYGZus{}tags} \PYG{o}{=} \PYG{o}{.}\PYG{o}{.}\PYG{o}{.}
Bunlar ilk <h1> etiketinden önceki herşeyi ve footer id’li ilk etiketten sonraki herşeyi kaldırır. Ayrıca bakınız
remove_tags (sayfa 46), remove_tags_before (sayfa 47), remove_tags_after (sayfa 47).
Sonraki dikkat çekici özellik:
=
{}=
[email protected]
36
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
=0=1=2=0=1=2\PYG{n}{needs\PYGZus{}subscription} \PYG{o}{=} \PYG{n+nb+bp}{True}
\PYG{o}{.}\PYG{o}{.}\PYG{o}{.}
\PYG{k}{def} \PYG{n+nf}{get\PYGZus{}browser}\PYG{p}{(}\PYG{n+nb+bp}{self}\PYG{p}{)}\PYG{p}{:}
\PYG{o}{.}\PYG{o}{.}\PYG{o}{.}
needs_subscription = True calibre’ye içeriğe erişmek için bir kullanıcı adı ve parolaya ihtiyaç duyduğunu söyler. Bu da bu reçeteye her erişmek istediğinizde calibre’nin kullanıcı ve parola sormasını sağlar.
calibre.web.feeds.news.BasicNewsRecipe.get_browser() (sayfa 39) içindeki kod NYT sitesine
giriş işlemini gerçekleştirir. Giriş yapıldıktan sonra, calibre içeriği getirmek için aynı, giriş yapılmış tarayıcı örneğini
kullanır. get_browser içindeki kodu anlamak için mechanize5 ye göz atın.
Sıradaki yeni özellik calibre.web.feeds.news.BasicNewsRecipe.parse_index() (sayfa 41) metodudur. Görevi http://www.nytimes.com/pages/todayspaper/index.html adresine gidip *bugün*e ait makale listesini
getirmektir. Doğrudan RSS kullanmaktan karmaşık olsa da, reçete o günün sayfasına çok yakın bir e-kitap oluşturur. parse_index günlük gazete web sayfasını ayrıştırmak için yoğun olarak BeautifulSoup6 kullanır. BeautifulSoup’dan hoşlanmıyorsanız diğer daha modern ayrıştırıcıları da kullanabilirsiniz. calibre önerilen ayrıştırıcılar olan
lxml7 ve html5lib8 ile gelir. Kullanmak için index_to_soup() çağrısını şu şekilde değiştirin:
=
{}=
[email protected]
=0=1=2=0=1=2\PYG{n}{raw} \PYG{o}{=} \PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{index\PYGZus{}to\PYGZus{}soup
\PYG{c}{\PYGZsh{} For html5lib}
\PYG{k+kn}{import} \PYG{n+nn}{html5lib}
\PYG{n}{root} \PYG{o}{=} \PYG{n}{html5lib}\PYG{o}{.}\PYG{n}{parse}\PYG{p}{(}\PYG{n}{raw}\PYG{p}{,} \P
\PYG{c}{\PYGZsh{} For the lxml html 4 parser}
\PYG{k+kn}{from} \PYG{n+nn}{lxml} \PYG{k+kn}{import} \PYG{n}{html}
\PYG{n}{root} \PYG{o}{=} \PYG{n}{html}\PYG{o}{.}\PYG{n}{fromstring}\PYG{p}{(}\PYG{n}{raw}\PYG{p}{)}
Son yeni özellik calibre.web.feeds.news.BasicNewsRecipe.preprocess_html() (sayfa 42) metodudur. İndirilen her HTML sayfasında keyfi dönüştürmeler yapmak için kullanılabilir. Burada nytimes’ın her makaleden önce gösterdiği reklamları geçmek için kullanılıyor.
1.2.3 Yeni reçeteler geliştirmek için ipuçları
Yeni reçete geliştirmek için en iyi yöntem komut satırı arayüzünü kullanmaktır. Reçeteyi favori python metin düzenleyicinizle oluşturun ve recetem.recipe gibi bir dosyaya kaydedin. .recipe son eki gereklidir. Bu reçeteyi
kullanarak içerik indirmek için şu komutu kullanabilirsiniz:
=
{}=
[email protected]
=0=1=2=0=1=2ebook\PYGZhy{}convert myrecipe.recipe .epub \PYGZhy{}\PYGZhy{}test \PYGZhy{}vv \PYGZhy{}\P
ebook-convert komutu tüm web sayfalarını indirip myrecipe.epub EPUB dosyasına kaydeder. -vv ebookconvert’in yaptığı işle ilgili bir sürü bilgi dökmesini sağlar. --test en fazla iki beslemeden bir kaç makale
indirmesini sağlar. Ek olarak ebook-convert indirilen HTML’yi debug/input dizinine koyar, burada debug
--debug-pipeline seçeneği ile belirttiğiniz dizindir.
İndirme tamamlandığında, indirilen HTML‘ye :file:‘debug/input/index.html dosyasını bir tarayıcı ile açarak bakabilirsiniz. İndirme ve ön işlemenin düzgün yapıldığını düşündüğünüzde, aşağıda gösterildiği gibi değişik biçimlerde
e-kitaplar üretebilirsiniz:
5
6
7
8
http://wwwsearch.sourceforge.net/mechanize/
http://www.crummy.com/software/BeautifulSoup/documentation.html
http://lxml.de/
https://github.com/html5lib/html5lib-python
1.2. Sık kullandığınız haber sitesini ekleme
37
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
=
{}=
[email protected]
=0=1=2=0=1=2ebook\PYGZhy{}convert myrecipe.recipe myrecipe.epub
ebook\PYGZhy{}convert myrecipe.recipe myrecipe.mobi
...
Reçetenizden memnunsanız, ve yerleşik reçeteler içinde bir yeri hak ettiğini düşünüyorsanız, reçeteniz diğer calibre
kullanıcıları ile paylaşmak için calibre reçeteleri forumu9 na yollayın.
Not:
OS
X
üzerinde,
komut
satırı
araçları
calibre
ile
birlikte
gelmektedir,
örneğin,
calibre’yi
/Applications
altına
kurduysanız
komut
satırı
araçları
/Applications/calibre.app/Contents/console.app/Contents/MacOS/ içinde olacaktır.
Ayrıca bkz.:
ebook-convert (sayfa 250) Tüm e-kitap dönüştürmeleri için komut satırı arayüzü.
1.2.4 İleri okuma
BasicNewsRecipe ile kullanılabilir olan olanakları kullanarak gelişmiş reçeteler yazmakla ilgili daha fazla şey
öğrenmek istiyorsanız aşağıdaki kaynaklara başvurabilirsiniz:
API Documentation (sayfa 38) BasicNewsRecipe sınıfı ve tüm önemli metod ve alanlarının belgeleri.
BasicNewsRecipe10 BasicNewsRecipe kaynak kodu
Built-in recipes11 Calibre ile gelen yerleşik reçetelerin kaynak kodları
The calibre recipes forum12 Bir çok bilgili calibre reçete geliştiricisi orada takılır.
1.2.5 API belgelendirmesi
Reçeteler için API Belgeleri
Reçete yazmaya yarayan API BasicNewsRecipe (sayfa 38) ile tanımlanmıştır
class calibre.web.feeds.news.BasicNewsRecipe(options, log, progress_reporter)
Tüm reçeteler için gerekli mantığı içeren temel sınıf. Bu sınıf içindeki fonksiyonları kademeli olarak ezerek kademeli olarak daha özelleştirilmiş/güçlü reçeteler oluşturabilirsiniz. Reçete oluşturmakla ilgili bir giriş kılavuzu
için şuraya bakınız, Sık kullandığınız haber sitesini ekleme (sayfa 23).
abort_article(msg=None)
Mevcut makalenin indirmesini durdurmak için bu yöntemi herhangi bir ön işleme yöntemi içinde çağırın.
Tamamen videodan oluşan makaleler gibi uygunsuz içerik içeren makaleleri atlamak için kullanışlıdır.
abort_recipe_processing(msg)
Reçete indirme sisteminin bu reçeteyi indirmeyi durdurmasına sebep olur, kullanıcıya basit bir ger besleme
iletisi gösterilir.
9
http://www.mobileread.com/forums/forumdisplay.php?f=228
10 https://github.com/kovidgoyal/calibre/blob/master/src/calibre/web/feeds/news.py
11 https://github.com/kovidgoyal/calibre/tree/master/recipes
12 http://www.mobileread.com/forums/forumdisplay.php?f=228
38
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
add_toc_thumbnail(article, src)
Bunu populate_article_metadata’dan makaledeki <img> etiketinin İçindekiler bölümünde makaleyi temsil
etmeye uygun küçük resim için src özniteliği ile çağırın. Küçük resmin gerçekten kullanılıp kullanılmayacağı aygıta bağlıdır (şimdilik sadece Kindle’larda kullanılır). Referans verilen resmin başarılı şekilde
indirilmiş olmasına dikkat edin, aksi takdirde yoksayılacaktır.
classmethod adeify_images(soup)
Reçeteniz EPUB’a dönüştürüldüğünde ve Adobe Digital Editions ile görüntülendiğinde resimlerle ilgili
sorun yaşıyorsa bu metodu postprocess_html() (sayfa 42) içinden çağırın.
canonicalize_internal_url(url, is_link=True)
‘‘url‘‘nin kuralsal temsillerinin kümesini döndür. Varsayılan gerçekleme yalnızca sunucu makine adı ve
URL yolunu kullanır, sorgu parametrelerini, parçaları, vs göz ardı eder. Kuralsal ifadeler bu haber kaynağının URL’leri arasında benzersiz olmalıdırlar. Olmazlarsa, dahili bağlantılar yanlış şekilde çözümlenebilir.
Parametreler is_link – URL bir HTML dosyasındandaki dahili bağlantıdan geliyorsa Doğrudur. URL makaleyi indirmek için kullanılan URL ise Yanlış.
cleanup()
Tüm makaleler indirildikten sonra çağrılır. Aboneli sitelerden çıkış yapmak gibi temizlik işlerini yapmak
için kullanın.
clone_browser(br)
Tarayıcıyı coğalt. Çoğaltılmış tarayıcılar çok iş parçacıklı indirmeler yapmak için kullanılır, çünkü mechanize iş parçacığı güvenli değildir. Varsayılan çoğaltma rutinleri çoğu tarayıcı özelleştirmesini yakalıyor
olmalıdır, ancak reçetenizde egzotik bir şeyler yaparsanız, reçetenizde bu metodu ezmeli ve elle çoğaltma
yapmalısınız.
Çoğaltılmış tarayıcı örnekleri çerez yönetiminde özelleştirme yapmadıysanız varsayılan olarak aynı, iş
parçacığı güvenli CookieJar’ı kullanır.
default_cover(cover_file)
Kapağı olmayan reçeteler için genel bir kapak oluştur
download()
Bu reçetedeki beslemelerden makaleleri indir ve ön işleme yap. Bu metod her Reçete örneği için yalnızca
bir kere çağrılmalıdır. Birden fazla çağırmak tanımlanmayan davranışlara yol açar. :return: index.html yolu
extract_readable_article(html, url)
‘html’den ana makale içeriğini aktarır, temizler ve demet (article_html, extracted_title) olarak döndürür.
Arc90’ın asıl okunabilirlik algortimasına dayanır.
get_article_url(article)
Her makalenin içeriğine işaret eden URL‘nin çıkarılmasının düzenlenmesi için bir alt sınıfta ezin. Makale URL’si döndürür. Bir beslemeden ayrıştırılmış makaleyi temsil eden ‘article ile çağrılır. feedparser
<https://pythonhosted.org/feedparser/>‘_a göz atın. Varsayılan olarak asıl bağlantıya bakar (feedburner
veya pheedo gibi bir servis tarafından eşlenen beslemeler için) ve bulunursa bunu döndürür, aksi durumda
‘article.link13 döndürür.
get_browser(*args, **kwargs)
Web’de belge getirmeye yarayan bir tarayıcı örneği döndürür. Varsayılan olarak çerezleri destekleyen,
robots.txt göz ardı eden, tazelemeleri ele alan ve mozilla firefox kullanıcı vekili olan bir mechanize14
tarayıcı örneği döndürür.
Reçeteniz önce giriş yapmanızı gerektiriyorsa, alt sınıfınızda bu metodu ezin. Örneğin, New York Times
reçetesinde kullanılan aşağıdaki kod tam erişim için giriş yapar:
13
14
https://pythonhosted.org/feedparser/reference-entry-link.html
http://wwwsearch.sourceforge.net/mechanize/
1.2. Sık kullandığınız haber sitesini ekleme
39
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
=
{}=
[email protected]
=0=1=2=0=1=2
\PYG{k}{def} \PYG{n+nf}{get\PYGZus{}browser}\PYG{p}{(}\PYG{n+nb+bp}{self
\PYG{n}{br} \PYG{o}{=} \PYG{n}{BasicNewsRecipe}\PYG{o}{.}\PYG{n}{get\PYGZus{}br
\PYG{k}{if} \PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{username} \PYG{o+ow}{is} \PYG{
\PYG{n}{br}\PYG{o}{.}\PYG{n}{open}\PYG{p}{(}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{h
\PYG{n}{br}\PYG{o}{.}\PYG{n}{select\PYGZus{}form}\PYG{p}{(}\PYG{n}{name}\PY
\PYG{n}{br}\PYG{p}{[}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{USERID}\PYG{l+s}{\PYGZsq
\PYG{n}{br}\PYG{p}{[}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{PASSWORD}\PYG{l+s}{\PYGZ
\PYG{n}{br}\PYG{o}{.}\PYG{n}{submit}\PYG{p}{(}\PYG{p}{)}
\PYG{k}{return} \PYG{n}{br}
get_cover_url()
Bu basımın kapağına URL ya da None döndür. Varsayılan olarak normalde None olan self.cover_url öğesinin değerini döndürür. Reçetenizin e-kitap için bir kapak indirmesini istiyorsanız bu metodu alt sınıfınızda
ezin, veya bu metodu çağırmadan önce üye değişken ‘self.cover_url‘yi ayarlayın.
get_feeds()
Bu profil için getirilecek RSS beslemeleri listesini döndürür. Listenin her elemanı (başlık, url) biçiminde
2 elemanlı demet şeklinde olmalıdır. Başlık None veya boş karakter dizisi ise, beslemedeki başlık kullanılır. Bu method reçetenizin indirilecek besleme listesini anlamak için bir miktar işlem yapması gereken
durumlarda faydalıdır. Durum böyleyse, kendi alt sınıfınızda ezin.
get_masthead_title()
Reçete başlığından başka bir şey kullanmak için alt sınıfta ezin
get_masthead_url()
Bu basım için kolombir resminin URL‘sini ya da ‘None döndür. Varsayılan olarak normalde değeri None
olan self.masthead_url üyesinin değerini döndürür. Reçetenizin e-kitap için bir kolombir indirmesini istiyorsanız bu metodu alt sınıfınızda ezin, veya bu metodu çağırmadan üye değişken ‘self.masthead_url‘yi
ayarlayın. Kolombir resimleri Kindle MOBI dosyalarında kullanılır.
get_obfuscated_article(url)
articles_are_obfuscated ayarlarsanız bu metod her makale URL’si ile çağrılır. Dosya sisteminde makale
HTML’sini içeren bir dosyaya yol döndürmelidir. Bu dosya yinelemeli HTML motoruyla işlenir, yani
web’deki sayfalara bağlantılar/resimler içerebilir.
Bu metod makale içeriğine otomatik olarak erişmeyi zorlaştırmaya çalışan siteler için faydalı olabilir.
classmethod image_url_processor(baseurl, url)
Resim url’lerinde bir takım işlemler yap (dinamik üretilen resimler için boyut kısıtlamalarının kaldırılması,
vs.) ve işlenmiş URL’yi döndür.
index_to_soup(url_or_raw, raw=False, as_tree=False)
Dizin sayfasına URL’yi alıp BeautifulSoup15 lanmış halini döndüren bir kolaylaştırıcı araç.
url_or_raw: Bir URL ya da karakter dizisi olarak indirilmiş dizin sayfası
is_link_wanted(url, tag)
Bağlantı takip edilmeliyse True, aksi durumda False döndür. Ön tanımlı olarak, indiricinin yoksaymasına
sebep olacak NotImplementedError yükseltir.
Parametreler
• url – Takip edilecek URL
• tag – URL’nin türetildiği Etiket
15
40
http://www.crummy.com/software/BeautifulSoup/bs3/documentation.html
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
javascript_login(browser, username, password)
Bu metod giriş formu olarak javascript kullanan web sitesine giriş için kullanılır. Giriş tamamlandığında,
web sayfasından dönen çerezler normal bir (javascript olmayan) tarayıcıya kopyalanır ve indirme işlemi
bu çerezler kullanılarak devam eder.
Örnek bir uygulama:
=
{}=
[email protected]
=0=1=2=0=1=2
\PYG{k}{def} \PYG{n+nf}{javascript\PYGZus{}login}\PYG{p}{(}\PYG{n+nb+bp}
\PYG{n}{browser}\PYG{o}{.}\PYG{n}{visit}\PYG{p}{(}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}
\PYG{n}{form} \PYG{o}{=} \PYG{n}{browser}\PYG{o}{.}\PYG{n}{select\PYGZus{}form}
\PYG{n}{form}\PYG{p}{[}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{username}\PYG{l+s}{\PYGZsq
\PYG{n}{form}\PYG{p}{[}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{password}\PYG{l+s}{\PYGZsq
\PYG{n}{browser}\PYG{o}{.}\PYG{n}{submit}\PYG{p}{(}\PYG{n}{timeout}\PYG{o}{=}\P
CSS2 seçicileri olan formları da şu şekilde seçebilirsiniz:
=
{}=
[email protected]
=0=1=2=0=1=2
\PYG{n}{browser}\PYG{o}{.}\PYG{n}{select\PYGZus{}form}\PYG{p}{(}\PYG{l+s
\PYG{n}{browser}\PYG{o}{.}\PYG{n}{select\PYGZus{}from}\PYG{p}{(}\PYG{l+s}{\PYGZsq{}
parse_feeds()
BasicNewsRecipe.get_feeds() (sayfa 40) tarafından döndürülen beslemelerden makale listeleri
oluşturur. Feed nesnesi listesi döndürür.
parse_index()
Bu metod makale listeleri yerine web sayfalarını ayrıştırması gereken reçetelerde uygulanır. Kullanım
alanı, yazdırma baskısındaki makaleleri bir “Yazım Baskısı” ile listeleyen haber kaynakları olabilir. Bu
fonksiyon uygulanırsa, BasicNewsRecipe.parse_feeds() (sayfa 41) yerine tercih edilir.
Bir liste döndürmelidir. Listenin her elemanı (’besleme başlığı’, makale listesi) biçiminde 2 elemanlı demet olmalıdır.
Her makale listesi şu biçimde sözlük içermelidir:
=
{}=
[email protected]
=0=1=2=0=1=2
\PYGZob{}
\PYGZsq{}title\PYGZsq{}
: article title,
\PYGZsq{}url\PYGZsq{}
: URL of print version,
\PYGZsq{}date\PYGZsq{}
: The publication date of the article as a string,
\PYGZsq{}description\PYGZsq{} : A summary of the article
\PYGZsq{}content\PYGZsq{}
: The full article (can be an empty string). Obsolete
do not use, instead save the content to a temporary
file and pass a file:///path/to/temp/file.html as
the URL.
\PYGZcb{}
Örnek olarak, The Atlantic indirmek için olan reçeteye göz atın. Ek olarak makalenin yazarı için ‘author’
ekleyebilirsiniz.
Herhangi sebepten işlemeyi durdurmak ve calibre’nin kullanıcıya hata yerine basit bir ileti göstermesini
isterseniz, abort_recipe_processing() (sayfa 38) metodunu çağırın.
populate_article_metadata(article, soup, first)
Makaleye bağlı her HTML sayfası indirildiğinde çağrılır. Ayrıştırılmış HTML’den (soup) yazar/özet/vs
1.2. Sık kullandığınız haber sitesini ekleme
41
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
gibi makale metadata’sı alırken kullanmak amaçlıdır. :param article: calibre.web.feeds.Article
sınıfı bir nesne. Özeti değiştirirseniz text_summary değiştirmeyi de unutmayın :param soup: Bu makaleye
ait ayrıştırılmış HTML :param first: Ayrıştırılmış HTML makalenin ilk sayfasıysa True.
postprocess_book(oeb, opts, log)
İndirilmiş e-kitap üstünde gerekli tüm art işlemleri çalıştır.
Parametreler
• oeb – OEBBook nesnesi
• opts – Dönüştürme seçenekleri
postprocess_html(soup, first_fetch)
Bu metod indirilen her bir HTML dosyası kaynağı ile, bağlantılar ve resimler için ayrıştırıldıktan sonra
çağrılır. HTML üzerinde keyfi, güçlü, işleme sonrası işlemler yapmak için kullanılabilir. İşledikten sonra
soup döndürmelidir.
Parametreler
• soup
–
İndirilen
:term:‘HTML‘yi
içeren
bir
‘BeautifulSoup
<http://www.crummy.com/software/BeautifulSoup/bs3/documentation.html>‘_
örneği.
• first_fetch – Bu sayfa makalenin ilk sayfasıysa True.
preprocess_html(soup)
Bu metod indirilen her bir HTML dosyası kaynağı ile, bağlantılar ve resimler için ayrıştırılmadan önce
çağrılır. remote_tags vs. de tanımlandığı gibi temizlik yapıldıktan sonra çağrılır. HTML üzerinde keyfi,
güçlü işleme öncesi işlemler yapmak için kullanılabilir. İşlemden sonra soup döndürmelidir.
soup: İndirilen :term:‘HTML‘yi içeren bir ‘BeautifulSoup <http://www.crummy.com/software/BeautifulSoup/bs3/docu
örneği.
preprocess_raw_html(raw_html, url)
Bu metod indirilen her bir HTML dosyası kaynağı ile, bir nesne ağacına ayrıştırılmadan önce çağrılır.
raw_html web’den indirilen ham HTML’nin evrensel kodda karakter dizisi temsilidir. url HTML’nin indirildiği URL’dir.
Bu metodun preprocess_regexps’den önce hareket ettiğini unutmayın.
Bu metod işlenmiş raw_html’yi evrensel kod nesnesi olarak döndürmelidir.
classmethod print_version(url)
Makale içeriği olan bir web sayfasını gösteren url‘yi al ve makalenin yazdırma sürümünü gösteren
bir :term:‘URL döndür. Varsayılan olarak hiçbir şey yapmaz. Örneğin:
=
{}=
[email protected]
=0=1=2=0=1=2
\PYG{k}{def} \PYG{n+nf}{print\PYGZus{}version}\PYG{p}{(}\PYG{n+nb+bp}{se
\PYG{k}{return} \PYG{n}{url} \PYG{o}{+} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{?\PYGZam{
skip_ad_pages(soup)
Bu metod indirilen her HTML dosyasının kaynağı ile, remove_tags, keep_only_tags gibi herhangi bir temizlik özniteliği uygulanmadan önce çağrılır. preprocess_regexps’in zaten uygulanmış olacağını unutmayın. Reçetenin reklam sayfalarını atlamasına olanak tanımak için düşünülmüştür. Eğer soup bir reklam
sayfasını temsil ederse, gerçek sayfanın HTML’sini döndür. Aksi halde None döndür.
soup: İndirilen :term:‘HTML‘yi içeren bir ‘BeautifulSoup <http://www.crummy.com/software/BeautifulSoup/bs3/docu
örneği.
42
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
sort_index_by(index, weights)
index‘deki başlıkları ‘weights‘e göre sıralamaya yarayan kolaylık sağlayıcı metod. ‘index yerinde sıralanır.
index döndürür.
index: Başlık listesi.
weights: Ağırlıkları başlığa haritalayan bir sözlük. Index’deki herhangi bir başlık ağırlıklı olmazsa, 0 ağırlıklı olduğu varsayılır.
classmethod tag_to_string(tag, use_alt=True, normalize_whitespace=True)
Bir BeautifulSoup16 ‘Tag‘ını alıp tüm CDATA kısımları ve alt etiket öznitelikleri dahil metni yinelemeli
olarak çıkaran kolaylık sağlayıcı bir metod. Muhtemelen boş bir evrensel kod metni döndürür.
use_alt: True ise metinsel içeriği olmayan etiketler için alt öznitelik kullanmaya çalış
tag: BeautifulSoup17 Etiketi
articles_are_obfuscated= False
İçerik almasını zorlaştıran web sitelerini işlemek için
get_obfuscated_article() (sayfa 40) metodunu uygulayın.
True
olarak
ayarlayın
ve
auto_cleanup= False
İndirilmiş makale sayfalarından tüm metni otomatik olarak çıkart. Okunabilirlik projesinden algoritmalar kullanır. True olarak ayarlamak, indirilmiş HTML’yi temizlemekle elle uğraşmanıza gerek olmadığı
anlamına gelir (Elle temizlik daha üstündür tabi).
auto_cleanup_keep= None
Otomatik temizleme algoritmasının asla kaldırmaması gereken öğeleri belirtin. Söz dizim XPath ifadesidir.
Örneğin:
=
{}=
[email protected]
=0=1=2=0=1=2
auto\PYGZus{}cleanup\PYGZus{}keep = \PYGZsq{}//div[@id=\PYGZdq{}article\
id=\PYGZdq{}article\PYGZhy{}image\PY
auto\PYGZus{}cleanup\PYGZus{}keep = \PYGZsq{}//*[@class=\PYGZdq{}important\PYGZdq{}
with class=\PYGZdq{}important\PYGZdq{}
auto\PYGZus{}cleanup\PYGZus{}keep = \PYGZsq{}//div[@id=\PYGZdq{}article\PYGZhy{}ima
will keep all divs with id=\PYGZdq{}article\PYGZhy{}image\PYGZdq{
with class=\PYGZdq{}important\PYGZdq{}
center_navbar= True
True ise gezinti çubuğu ortada hizalanır, yoksa sola hizalanır
compress_news_images= False
Tüm ölçekleme ve sıkıştırma parametrelerini göz ardı edip resimleri değiştirmeden geçirmek için False
olarak ayarlayın. True ise ve diğer sıkıştırma parametreleri varsayılan ayarlarında bırakılırsa, jpeg resimler
çıktı profilinde ayarlanmış ekran boyutlarına sığması için ölçeklenir ve w x h ölçeklenmiş resim boyutları
olmak üzere en fazla (w * h)/16 boyutuna sıkıştırılır.
compress_news_images_auto_size= 16
Jpeg resimleri otomatik sıkıştırmada kullanılan etmen. None olarak ayarlanırsa, otomatik sıkıştırma kapatılır. Aksi halde, resimler kalite seviyesi düşürülerek , w x h piksel olarak resim boyutu olmak üzere
(w * h)/compress_news_images_auto_size bayt boyutuna indirilir. Asgari jpeg kalitesi 5/100 olacaktır,
yani bu kısıtlamaya uyulmaması mümkündür. Bu parametre resimler için sabit bir azami boyut sağlayan
compress_news_images_max_size parametresi ile ezilebilir. scale_news_images_to_device’ı etkinleştirirseniz resim önce ölçeklenir ardından kalitesi boyutu w ve h ölçeklenmiş resim boyutları olmak üzere (w *
h)/etmen altına düşene kadar düşürülür. Diğer bir deyişle, bu sıkıştırma ölçeklendirmeden sonra yapılır.
16
17
http://www.crummy.com/software/BeautifulSoup/bs3/documentation.html
http://www.crummy.com/software/BeautifulSoup/bs3/documentation.html
1.2. Sık kullandığınız haber sitesini ekleme
43
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
compress_news_images_max_size= None
Jpeg kalitesini resimler verilen (KBayt olarak) boyutu geçmeyecek şekilde ayarla. Ayarlanırsa, bu parametre compress_news_images_auto_size vasıtasıyla otomatik sıkıştırmayı ezer. Asgari jpeg kalitesi 5/100
olacaktır, yani bu kısıtlamaya uyulmaması mümkündür.
conversion_options= {}
İndirilen içeriğin e-kitaba dönüştürülmesini kontrol eden reçeteye özel seçenekler. Bunlar kullanıcı veya
eklentiye özel ayarları ezecektir, bu yüzden yalnızca gerekliyse kullanın. Örneğin:
=
{}=
[email protected]
=0=1=2=0=1=2
\PYG{n}{conversion\PYGZus{}options} \PYG{o}{=} \PYG{p}{\PYGZob{}}
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{base\PYGZus{}font\PYGZus{}size}\PYG{l+s}{\PYGZsq{}}
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{tags}\PYG{l+s}{\PYGZsq{}}
\PYG{p}{:} \P
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{title}\PYG{l+s}{\PYGZsq{}}
\PYG{p}{:} \P
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{linearize\PYGZus{}tables}\PYG{l+s}{\PYGZsq{}} \PYG{
\PYG{p}{\PYGZcb{}}
cover_margins= (0, 0, ‘#ffffff’)
Varsayılan olarak, get_cover_url() ile döndürülen kapak resmi süreli yayın için kapak olarak kullanılır. Bunu reçetenizde ezmek, calibre’ye, indirilen kapağı genişliği ve yüksekliği indirilen kapağın yüzdesi olarak ifade edilen bir çerçeveye gerçeklemesini söyler. cover_margins= (10, 15,
‘#ffffff’) kapağı soldan ve sağdan 10px, yukardan ve aşağıdan 15px doldurur. Renk isimleri
http://www.imagemagick.org/script/color.php de tanımlanmıştır. Beyazın bir sebepten ötürü windows’da
çalışmadığını not edin. Yerine #ffffff kullanın
delay= 0
Saniye cinsinden ardışık indirmeler arası gecime. Daha hassas bir zaman için değişken ondalık sayı olarak
yazılabilir.
description= u’‘
Bu reçetenin indirdiği içeriği tanımlayan bir kaç satır. Bu daha çok reçete listesini sunan GUI’de kullanılacaktır.
encoding= None
Hatalı karakter seti tanımlamasına sahip sitelerde kullanılmak üzere bir karakter kodlaması belirleyin. En
sık kullanılan latin1 ve cp1252 dir. None ise, kodlama tahmin edilmeye çalışılır. Eğer çağrılabilirse,
iki bağımsız değişken ile çağrılır: Reçete nesnesi ve kodu çözülecek kaynak. Kodu çözülmüş kaynağı
döndürmelidir.
extra_css= None
İndirilen HTML dosyalarına eklenecek ek CSS‘i belirtin. ‘ etiketleri içine, </head> kapanış etiketinden önce eklenir böylece HTML etiketlerindeki biçim özniteliklerinde tek tek ifade edilenler hariç
tüm :term:‘CSS‘i ezer. Örneğin:
=
{}=
[email protected]
=0=1=2=0=1=2
\PYG{n}{extra\PYGZus{}css} \PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{.hea
feeds= None
İndirilecek besleme listesi. [url1, url2, ...] veya [(’title1’, url1), (’title2’,
url2),...] olabilir
filter_regexps= []
Hangi bağlantıların göz ardı edileceğine karar veren düzenli ifade listesi. Boşsa göz ardı edilir. Yalnızca
is_link_wanted uygulanmamışsa kullanılır. Örneğin:
44
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
=
{}=
[email protected]
=0=1=2=0=1=2
\PYG{n}{filter\PYGZus{}regexps} \PYG{o}{=} \PYG{p}{[}\PYG{l+s}{r\PYGZsq{
içinde ads.doubleclick.net olan tüm URL’leri kaldırır.
BasicNewsRecipe.match_regexps (sayfa 45) veya BasicNewsRecipe.filter_regexps
(sayfa 44) den yalnızca biri tanımlanmalıdır.
ignore_duplicate_articles= None
Bir kısımdan fazla yerde olan makalelerin kopyalarını göz ardı et. Kopya makale, aynı başlık ve/veya
URL’ye sahip makaledir. Aynı başlıktaki makaleleri göz ardı etmek için, şu şekilde ayarlayın:
=
{}=
[email protected]
=0=1=2=0=1=2
\PYG{n}{ignore\PYGZus{}duplicate\PYGZus{}articles} \PYG{o}{=} \PYG{p}{\P
URL’ler kullanmak için, şöyle ayarlayın:
=
{}=
[email protected]
=0=1=2=0=1=2
\PYG{n}{ignore\PYGZus{}duplicate\PYGZus{}articles} \PYG{o}{=} \PYG{p}{\P
Başlık veya URL eşleştirme için, şu şekilde ayarlayın:
=
{}=
[email protected]
=0=1=2=0=1=2
\PYG{n}{ignore\PYGZus{}duplicate\PYGZus{}articles} \PYG{o}{=} \PYG{p}{\P
keep_only_tags= []
Yalnızca belirtilen etiketleri ve onların alt etiketlerini sakla. Bir etiketi belirtme formatı için bakınız
BasicNewsRecipe.remove_tags (sayfa 46). Bu liste boş değilse, <body> etiketi boşaltılır ve bu
listedeki girdilerle eşleşen etiketlerle tekrar doldurulur. Örneğin:
=
{}=
[email protected]
=0=1=2=0=1=2
\PYG{n}{keep\PYGZus{}only\PYGZus{}tags} \PYG{o}{=} \PYG{p}{[}\PYG{n+nb}{
yalnızca “content” veya “heading”‘in ‘id özniteliği olan etiketleri tutar.
language= ‘und’
Haberlerin dili. İki veya üç karakter uzunluğunda ISO-639 kodu olmalıdır
masthead_url= None
Ön tanımlı olarak, calibre kolombir için varsayılan bir resim kullanacaktır (Yalnızca Kindle’da). Reçetenizde bunu ezmek için kolombir olarak kullanılacak bir url sağlayın.
match_regexps= []
Hangi bağlantıların takip edileceğini belirten düzenli ifade listesi. Boşsa, göz ardı edilir. Yalnızca
is_link_wanted uygulanmamışsa kullanılır. Örneğin:
=
{}=
[email protected]
=0=1=2=0=1=2
\PYG{n}{match\PYGZus{}regexps} \PYG{o}{=} \PYG{p}{[}\PYG{l+s}{r\PYGZsq{}
içinde page=some number olan tüm URL’lerle eşleşir.
1.2. Sık kullandığınız haber sitesini ekleme
45
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
BasicNewsRecipe.match_regexps (sayfa 45) veya BasicNewsRecipe.filter_regexps
(sayfa 44) den yalnızca biri tanımlanmalıdır.
max_articles_per_feed= 100
Her beslemeden indirilecek azami makale sayısı. Makale tarihleri olmayan beslemeler için özellikle faydalıdır. Çoğu besleme için BasicNewsRecipe.oldest_article (sayfa 46) kullanmalısınız
needs_subscription= False
True is GUI indirme sırasında kullanıcı ve parola sorar. “isteğe bağlı” olarak ayarlanmışsa kullanıcı adı ve
parola isteğe bağlıdır
no_stylesheets= False
E-kitaba dönüştürmeye uygun olmayan çok karmaşık biçim sayfalarına sahip web sitelerinde biçim sayfalarının yüklenmesini kapatmayı kolaylaştırıcı bayrak. True ise biçim sayfaları indirilmez ve işlenmez
oldest_article= 7.0
Bu haber kaynağından indirilecek en eski makale. Gün olarak.
preprocess_regexps= []
İndirilen HTML üzerince çalıştırılacak regexp yer değiştirme kuralları listesi. Listenin her elemanı iki
elemanlı bir demet olmalıdır. İlk eleman derlenmiş bir düzenli ifade, ikincisi tek bir eşleşme nesnesi alan
ve eşleşmeyle yer değişecek karakter dizisi döndüren bir çağrılabilir olmalıdır. Örneğin:
=
{}=
[email protected]
=0=1=2=0=1=2
\PYG{n}{preprocess\PYGZus{}regexps} \PYG{o}{=} \PYG{p}{[}
\PYG{p}{(}\PYG{n}{re}\PYG{o}{.}\PYG{n}{compile}\PYG{p}{(}\PYG{l+s}{r\PYGZsq{}}\P
\PYG{k}{lambda} \PYG{n}{match}\PYG{p}{:} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{\PYGZlt{
\PYG{p}{]}
<!–Article ends here–> ve </body> arasındaki herşeyi kaldırır.
publication_type= ‘unknown’
Yayın biçimi gazete, magazin veya blok olarak ayarlanır. None olarak ayarlanırsa, opf dosyasına yayın
biçimi metadata’sı yazılmaz.
recipe_disabled= None
Bu reçeteyi kapatmak için boş olmayan bir karakter dizisi olarak ayarlayın. Karakter dizisi kapatma iletisi
olarak kullanılacaktır
recursions= 0
Makale web sitelerinde takip edilecek bağlantı seviyesi sayısı
remove_attributes= []
Tüm etiketlerden kaldırılacak öznitelik listesi. Örneğin:
=
{}=
[email protected]
=0=1=2=0=1=2
\PYG{n}{remove\PYGZus{}attributes} \PYG{o}{=} \PYG{p}{[}\PYG{l+s}{\PYGZs
remove_empty_feeds= False
True ise boş beslemeler çıktıdan kaldırılır. parse_index alt sınıfta ezilmişse bu seçeneğin hiçbir etkisi yoktur. Yalnızca feeds veya get_feeds() (sayfa 40) kullanarak bir besleme listesi döndüren reçeteler içindir. Ayrıca ignore_duplicate_articles seçeneğini kullanırsanız da kullanılır.
remove_javascript= True
İndirilen HTML’den tüm javascript etiketlerini soyacak kullanışlı etiket
46
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
remove_tags= []
Kaldırılacak etiket listesi. Belirtilen etiketler indirilen HTML’den çıkarılır. Bir etiket şu biçimdeki sözlük
olarak tanımlanır:
=
{}=
[email protected]
=0=1=2=0=1=2
name
attrs
\PYGZcb{}
\PYGZob{}
: \PYGZsq{}tag name\PYGZsq{},
\PYGZsh{}e.g. \PYGZsq{}div\PYGZsq{}
: a dictionary, \PYGZsh{}e.g. \PYGZob{}class: \PYGZsq{}advertisment\PYGZ
Tüm anahtarlar isteğe bağlıdır. Arama kriterinin tam açıklaması için, bakınız Beautiful Soup18 Yaygın bir
örnek:
=
{}=
[email protected]
=0=1=2=0=1=2
\PYG{n}{remove\PYGZus{}tags} \PYG{o}{=} \PYG{p}{[}\PYG{n+nb}{dict}\PYG{p
Bu tüm <div class=”advert”> etiketlerini ve alt etiketlerini indirilen :term:‘HTML‘den çıkarır.
remove_tags_after= None
Belirtilen etiketten sonra gelen tüm etiketleri kaldır. Bir etiketi belirtme biçimi için bakınız
BasicNewsRecipe.remove_tags (sayfa 46). Örneğin:
=
{}=
[email protected]
=0=1=2=0=1=2
\PYG{n}{remove\PYGZus{}tags\PYGZus{}after} \PYG{o}{=} \PYG{p}{[}\PYG{n+n
id=”content” e sahip ilk elemandan sonraki tüm etiketleri kaldırır.
remove_tags_before= None
Belirtilen etiketten önce gelen tüm etiketleri kaldır. Bir etiketi belirtme biçimi için bakınız
BasicNewsRecipe.remove_tags (sayfa 46). Örneğin:
=
{}=
[email protected]
=0=1=2=0=1=2
\PYG{n}{remove\PYGZus{}tags\PYGZus{}before} \PYG{o}{=} \PYG{n+nb}{dict}\
id=”content” e sahip ilk elemandan önceki tüm etiketleri kaldırır.
requires_version= (0, 6, 0)
Bu reçeteyi kullanabilmek için gerekli asgari calibre sürümü
resolve_internal_links= False
Doğru olarak ayarlanmışsa indirilen makalelerdeki diğer indirilen makaleleri gösteren bağlantılar makalenin asıl web URL’si yerine indirilen kopyasını gösterecek şekilde değiştirilir. Bu seçeneği Doğru olarak
ayarlarsanız, ayrıca web sitenizin URL şablonuyla çalışması için canonicalize_internal_url()
(sayfa 39) gerçekleştirmeniz de gerekebilir.
reverse_article_order= False
Her beslemedeki makalelerin sırasını tersine çevir
scale_news_images= None
Resimlerin ölçeklendirileceği azamı boyut (w,h). scale_news_images_to_device True ise çıktı profilinde
ayarlanan aygıt ekran boyutuna ayarlanır, profilin ayarlanmadığı durumlarda hangi değer atanmışsa o bırakılır (varsayılan None).
18
http://www.crummy.com/software/BeautifulSoup/bs3/documentation.html#Searching%20the%20Parse%20Tree
1.2. Sık kullandığınız haber sitesini ekleme
47
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
scale_news_images_to_device= True
Resmi çıktı profilinde ayarlanmış aygıt ekran boyutlarına sığması için ölçeklendir. Çıktı profili ayarlanmamışsa göz ardı edilir.
simultaneous_downloads= 5
Eş zamanlı indirme sayısı. Sunucu titizse 1 olarak ayarlanır. BasicNewsRecipe.delay (sayfa 44) >
0 ise otomatik olarak 1’e düşürülür
summary_length= 500
Kısa tanımlamadaki azami karakter sayısı
template_css= u’\n .article_date {\n color: gray; font-family: monospace;\n }\n\n .article_description {\n text-indent: 0
Şablonları biçimlendirmek için kullanılan CSS, ör., gezinti çubukları ve İçindekiler. Bu değişkeni ezmek
yerine, doku ve görünümü özelleştirmek için reçetenizde extra_css kullanmalısınız.
timefmt= ‘ [%a, %d %b %Y]’
İlk sayfada gösterilen tarih için biçim karakter dizisi. Varsayılanı: Gün_Adı, Gün_Numarası Ay_Adı Yıl
timeout= 120.0
Sunucudan dosyaları indirirken kullanılacak saniye cinsinden zaman aşımı
title= u’Bilinmeyen Haber Kayna\u011f\u0131’
E-kitap için kullanılcak başlık
use_embedded_content= None
Normalde bir beslemede tüm makalenin gömülü olup olmadığını gömülü içeriğin uzunluğuna bakarak tahmin etmeye çalışırız. None ise, varsayılan tahmin kullanılır. True ise beslemelerin gömülü içeriği olduğunu,
False ise beslemenin gömülü içeriği olmadığını var sayarız.
use_javascript_to_login= False
Bunu True olarak ayarlarsanız, calibre web sitesine giriş için javascript kullanır. Giriş için javascript
kullanan bazı web sitelerinde bu gereklidir. True olarak ayarlarsanız asıl giriş işlemini yapması için
javascript_login() (sayfa 40) metodunu uygulamalısınız.
1.3 E-kitap Görüntüleyici
calibre yaygın e-kitap biçimlerini destekleyen bir e-kitap görüntülecisini tümleşik olarak içerir. Görüntüleyici özelleştirilebilir ve pek çok gelişmiş özellik barındırır.
•
•
•
•
•
Görüntüleyiciyi başlatmak (sayfa 48)
Bir e-kitapta dolaşmak (sayfa 49)
Okuma deneyiminizin görünümünü özelleştirmek (sayfa 51)
Sözlük araması (sayfa 51)
Metin ve görüntü kopyalamak (sayfa 51)
1.3.1 Görüntüleyiciyi başlatmak
Calibre kitaplığınızdaki herhangi bir e-kitabı seçtikten sonra Görüntüle düğmesine tıklayarak görüntülemeye başlayabilirsiniz. Bu kitabı e-kitap görüntüleyicide açacaktır. Görüntüleyiciyi Windows’ta Başlat menüsünden, Linux’ta ve
OS X’te (bunun için komut satırı araçlarını Tercihler->Gelişmiş->Çeşitli yolunu takip ederek kurmuş olmanız gerekir) :command:‘ebook-viewer‘komutuyla da başlatabilirsiniz.
48
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
1.3.2 Bir e-kitapta dolaşmak
Bir e-kitap içinde Sonraki Sayfa ve Önceki Sayfa düğmelerini
kullanarak veya Page Down/Page Up
tuşlarıyla “sayfaları çevirebilirsiniz”. Diğer e-kitap okuyuculardan farklı olarak calibre sizi kitapları sayfalı kipte görüntülemeye zorlamaz. kaydırma çubuğunu ve özelleştirilebilir klavye kısayollarını kullanarak bir sayfadan daha az
kaydırma da yapabilirsiniz.
Yer İmleri
Bir kitabın ortasında iken görüntüleyiciyi kapatırsanız onu tekrar açtığınızda kaldığınız yer hatırlanacak ve oradan açı-
kullanarak kitaplara yer imleri de ekleyebilirsiniz. EPUB
lacaktır. Ayrıca isterseniz Yer İmi düğmesini
biçimindeki kitapları görüntülüyorsanız yer imleri EPUB dosyasının kendisinde kaydedilir. Yer imleri kaydedebilir ve
bu halini arkadaşlarınıza gönderebilirsiniz. Dosyayı açtıklarında sizin yer imlerinizi görebileceklerdir.
İçindekiler
Eğer okuduğunuz kitapta İçindekiler bölümü varsa ona İçindekiler
düğmesini kullanarak erişebilirsiniz. Bu
kitabın bölümlerinin bir listesini getirecektir. Bunlardan birine tıklayarak kitabın ilgili bölümüne sıçrayabilirsiniz.
Konuma göre gezinme
E-kitaplar basılı kitaplardan farklı olarak sayfa kavramına sahip değildir. Bunun yerine kitabı okumaya devam ettiğinizde konumunuzun kitabın sol üst köşesinde böyle
görüntülendiğini görürsünüz. Bu hem
mevcut konumunuzu hem de kitabın toplam boyutunu gösterir. Bu sayılar ekran ve yazıtipi boyutundan bağımsızdır
ve basılı kitaplardaki sayfa numaralarına benzer bir rol üstlenirler. Buraya herhangi bir sayı girebilir ve kitapta ona
karşılık gelen konuma gidebilirsiniz.
düğmesine tıklayabilirsiniz.
Calibre çok bir referans kipine de sahiptir. Etkinleştirmek için Referans Kipi
Bunu bir kere yaptıktan sonra farenizi bir paragrafın üzerine her getirişinizde calibre o bölümü ve paragrafı belirten
benzersiz bir numara görüntüleyecektir.
1.3. E-kitap Görüntüleyici
49
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Bu numarayı arkadaşlarınızla üzerinde konuşurken veya başka işlerin içinde kaynak gösterirken kullanabilirsiniz. Bu
numaraları sayfanın üzerinde bulunan Git alanına yazarak belirli bir kaynak alanına gidebilirsiniz.
E-kitabın içinde dipnot gibi alanlardaki bağlantılara tıklayarak kitabın farklı bölümlerine giderseniz sol köşedeki geri
ve ileri tuşlarını kullanarak eskiden bulunduğunuz yere gidebilirsiniz. Bu düğmeler web tarayıcısında olduğu gibi
davranırlar.
50
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
1.3.3 Okuma deneyiminizin görünümünü özelleştirmek
Yazı tipi boyutlarını havada değiştirmek için yazı tipi boyutu
düğmesini kullanabilirsiniz. Tam ekran
tıkladığınızda görüntüleyici tam ekran olacaktır. Tercihler düğmesine
tıklayarak
düğmesine
görüntüleyicinin varsayılan olarak kullandığı yazı tiplerini ve açılışta kullandıklarını istediğiniz bir tanesiyle değiştirebilirsiniz.
Daha gelişmiş özelleştirmeler Kullanıcı Stil Sayfası ayarlarından yapılabilir. Bunlar her kitaba uygulanacak değişikliklerdir. Bunları kullanarak siyah arkaplan üzerine beyaz yazı, paragraf stilini değiştirmek veya metin hizalaması gibi
şeyleri değiştirebilirsiniz. calibre kullanıcılarının özelleştirmelerini forum sayfasından19 görebilirsiniz.
1.3.4 Sözlük araması
Mevcut kitaptaki bir sözcüğün anlamına üzerine sağ tıklayarak bakabilirsiniz. calibre sözcük anlamları için kamuya
açık bir sözlük sunucusu olan dict.org adresini kullanır. Sözcüğün tanımı ekranın altında küçük bir kutuda görüntülenecektir.
1.3.5 Metin ve görüntü kopyalamak
Metin ve görüntüleri fareyi üzerlerinde sürükleyerek seçebilir ve sağ tıklayarak geçici taşıma panosuna kopyalayabilirsiniz. Kopyalanan nesneler başka bir uygulamaya düz metin veya görüntü olarak yapıştırılabilir.
1.4 E-Kitap Dönüştürme
Calibre kolay kullanım için tasarlanmış bir dönüştürme sistemine sahiptir. Normalde bir kitabı farklı bir formata dönüştürmek için Calibre’ye eklemeniz ve “Dönüştür” butonuna tıklamanız yeterlidir. Calibre kitabın orijinal formatına
olabildiğince sadık kalarak dönüşüm işlemini yapmaya çalışır. Ancak Calibre bir çok farklı dosya tipi için dönüşümü
desteklese de bu formatların bazıları çeşitli e-kitap formatlarına tam uyum sağlamayabilir. Eğer dönüşüm sürecine
daha fazla müdahale etmek isterseniz Calibre bunun için bir çok ince ayar seçeneği sunmaktadır. Yine de Calibre’nin
dönüşüm aracı tam fonksiyonlu bir e-kitap düzenleyicisi değildir. Bu nedenle kitapları düzenlemek için önce bunları
kaynak formatlarından EPUB ya da AZW3 gibi bir formata dönüştürmek ve sonrasında “Kitabı Düzenle” fonksiyonu
ile istenilen şekle getirmek önerilmektedir. Sonra da bu düzenlenmiş kitap istenilen formata dönüştürmek için kaynak
format olarak kullanılabilir.
This document will refer mainly to the conversion settings as found in the conversion dialog, pictured below. All these
settings are also available via command line interface to conversion, documented at ebook-convert (sayfa 250). In
calibre, you can obtain help on any individual setting by holding your mouse over it, a tooltip will appear describing
the setting.
19
http://www.mobileread.com/forums/showthread.php?t=51500
1.4. E-Kitap Dönüştürme
51
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
İçindekiler
•
•
•
•
•
•
•
•
•
•
•
Giriş (sayfa 52)
Gör & Hisset (sayfa 54)
Sayfa Düzeni (sayfa 57)
Sezgisel İşleme (sayfa 57)
Bul & Değiştir (sayfa 58)
Yapı Algılama (sayfa 59)
İçindekiler (sayfa 60)
HTML girdi belgelerini dönüştürürken resimler bölüm başlığı olarak kullanılıyor (sayfa 61)
İçindekiler bölümündeki girdilere metin temin etmek için etiket öznitelikleri kullanılıyor (sayfa 62)
Dönüştürme için seçeneklerin nasıl ayarlanıp/kaydedileceği (sayfa 62)
Biçime özel ipuçları (sayfa 63)
1.4.1 Giriş
Dönüşüm sistemi hakkında anlaşılması gereken ilk şey, bunun düz bir hat şeklinde tasarlandığıdır. Sistemin şematik
görünüşü şöyledir:
52
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Girdi biçimi önce uygun Girdi Eklentisi ile XHTML’ye çevrilir. Bu HTML daha sonra dönüştürülür. Son adımda,
işlenmiş XHTML belirtilen çıktı biçimine ilgili Çıktı Eklentisi ile dönüştürülür. Dönüştürme sonuçları girdi biçimine
göre çok fazla değişiklik gösterebilir. Bazı biçimler diğerlerinden oldukça iyi dönüştürülür. Dönüştürme için en iyi
kaynak biçimler listesi burada (sayfa 106) mevcuttur.
XHTML çıktısındaki dönüştürmeler tüm işin yapıldığı yerdir. Bir çok dönüştürme vardır, örneğin, bir kitap metadata’sını kitabın başlangıcında bir sayfa olarak eklemek için, bölüm başlıklarını algılayıp otomatik İçindekiler bölümü
oluşturmak için, yazı tiplerini orantılı olacak şekilde ayarlamak için vs. Tüm dönüşümlerin girdi dosyası üzerinde
değil, XHTML çıktısı üzerinde Girdi Eklentisi” ile yapıldığını unutmamak önemlidir. Örneğin calibre’ye bir RTF
dosyasını EPUB’a dönüştürmesini söylediğinizde, önce iç işlem olarak XHTML’ye dönüştürülür, XHTML’ye bir takım
dönüştürmeler yapılır ve son olarak *Çıktı Eklentisi metadata, İçindekiler vs. bölümlerini otomatik oluşturarak EPUB
çıktısı üretir.
1.4. E-Kitap Dönüştürme
53
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Bu işlemi çalışırken hata ayıklama seçeneği
ile görebilirsiniz. Hata ayıklama çıktısı için bir dizin
belirtmeniz yeterli. Dönüştürme sırasında, calibre, dönüştürmenin bir takım evrelerinde üretilen XHTML’yi değişik
alt dizinlere koyar. Dört alt dizi ise şunlardır:
Tablo 1.2: Dönüşüm hattı aşamaları
Klasör
girdi
çözümlenmiş
yapı
işlenmiş
Açıklama
Girdi Eklentisi tarafından çıkarılan HTML’yi içerir. Girdi Eklentisinde hata ayıklama yapmak için
bunu kullanın.
Girdi Eklentisinden ön işleme ve XHTML’e çevirme sonuçları. Yapı algılamayı ayıklamak için
kullanın.
CSS düzleme ve yazı tipi boyutu dönüştürmeden önce, yapı sonrası algılama. Yazı tipi ve CSS
dönüşümlerindeki hataları ayıklamak için kullanın.
E-kitabın, çıktı eklentisine aktarılmadan hemen önceki hali. Çıktı eklentisindeki hataları ayıklamak
için kullanılabilir.
Eğer Calibri dosyayı dönüştürmeden hemen önce dosyayı düzenlemek isterseniz izlenecek en iyi yol düzenlemeleri
input klasöründeki dosyalar üzerinde yapmak, sonrasında bu dosyaları bir zip dosyası olarak kaydetmek ve dönüştürme işlemi için bu zip dosyasını kaynak olarak kullanmaktır. Bunun için öncelikle Üst veriyi düzenle diyalog
penceresi ile zip dosya tipi, bu dönüşümde kullanılabilir bir tür olarak eklenir, sonrasında dönüştürme diyalog penceresinin sol üst kısmından kaynak format olarak ZIP seçilir.
Bu belge temel olarak ara XHTML üzerindeki çeşitli dönüşümler ile ve bunların nasıl kontrol edileceğiyle ilgilenir.
Son kısımda her Girdİ/Çıktı biçimi için bazı özel ipuçları bulunmaktadır.
1.4.2 Gör & Hisset
İçindekiler
•
•
•
•
Yazı tipi boyutunu değiştirme (sayfa 54)
Paragraf aralıkları (sayfa 55)
Fazladan CSS (sayfa 56)
Muhtelif (sayfa 56)
Bu seçenek grubu dönüştürülmüş e-kitabın, “Gör ve Hisset” niteliklerinin çeşitli aşamalarını düzenler.
Yazı tipi boyutunu değiştirme
E-kitap okuma deneyiminin en güzel özelliklerinden biri kitabın yazı tipi boyutunu kişisel tercih ve aydınlatma koşllarına uygun olarak kolayca ayarlayabilmektir. Calibre, girdi olarak verilen dökümandaki yazı tipi boyutları ne olursa
olsun, çıktı olarak ürettiği e-kitaplarda tutarlı yazı tipi boyutları oluşturmak için karmaşık algoritmalara sahiptir.
Bir dökümanın baz yazı tipi boyutu, o dökümandaki en sık kullanılan yazı tipi boyutu ya da diğer bir ifadeyle dökümandaki içeriğin büyük kısmında kullanılan boyuttur. Bir Baz yazı tipi boyutu belirlediğinizde, Calibre otomatik
olarak dökümandaki bütün yazı tipi boyutlarını bu değere oransal olarak yeniden ayarlar, böylece en çok kullanılan
yazı tipi boyutu belirlenen boyut olur ve diğer yazı tipi büyüklükleri de buna uygun olarak belirlenir. Örneğin daha
büyük bir baz font boyutu belirleyerek, dökümandaki tüm yazı tipi boyutlarının büyümesi (Ya da daha küçük baz yazı
tipi seçildiğinde tüm yazı tipi boyutlarının küçülmesi) sağlanabilir. En iyi sonuca ulaşabilmek için bir baz yazı tipi
büyüklüğü belirlediğinizde yazı tipi boyutu anahtar değerinin de belirlenmesi yerinde olacaktır.
54
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Normalde, Calibre sizin seçtiğiniz “Çıktı Profili” ile uygun olarak bir baz yazı tipi boyutunu varsayılan olarak belirler
(Bkz. Sayfa Düzeni (sayfa 57)). Ancak varsayılan değer sizin için uygun değilse buradan değiştirebilirsiniz.
Yazı tipi boyutu anahtarı opsiyonu baz yazı tipi dışındaki yazı tiplerinin nasıl boyutlandırılacağının kontrol edilmesini
sağlar. Bu opsiyon temelde yazı tipi boyutlarının birbirinden virgülle ayrıldığı bir listedir. Anahtar değeri Calibre’ye bir
yazı tipinin baz yazı tipine oranla kaç “Adım” büyük ya da küçük olacağını belirtir. Normalde bir dökümanda sınırlı
sayıda yazı tipi boyutu kullanılmış olmalıdır. Örneğin “normal metinler için bir boyut, farklı derecedeki başlıklar
için birkaç boyut ve dipnot vb. kullanımlar için daha birkaç boyut” gibi. Yazı tipi boyutu anahtarı Calibre’ye, girdi
dökümandaki farklı yazı tipi boyutlarını farklı “kategoriler” altında gruplandırma olanağı sağlar.
Bir örnek üzerinden gidecek olursak; Kaynak dökümanımız 8pt. baz yazı tipi boyutuna sahip olsun. Bu durumda
dökümandaki metnin büyük kısmı 8pt olacaktır, başlıklar biraz daha büyük (Mesela 10 ve 12 pt) ve dipnotlar da 6pt
gibi daha küçük bir boyutta olsun. Eğer bu örnek için aşağıdaki ayarları kullanırsak:
=
{}=
[email protected]
=0=1=2=0=1=2Base font size : 12pt
Çıktı 12pt baz yazı tipi boyutuna sahipken başlıklar 14 ve 16 pt, dipnotlar ise 8pt olacaktır. Şimdi varsayalım ki
büyük başlıkların ve dipnotların boyutunu biraz daha büyüterek bunları öne çıkarmak istiyoruz. Bunun için yazı tipi
anahtarının değeri şu şekilde güncellenir:
=
{}=
[email protected]
=0=1=2=0=1=2New font size key : 7, 9, 12, 14, 18, 2 22
Şimdi büyük başlıklar 18pt olurken dipnotlar 9pt olarak boyutlandırılacak. Hangisinin sizin için en uygun olduğunu
anlamak için bu değerleri yazı tipi boyutlandırma sihirbazını kullanarak değiştirebilirsiniz. Bu sihirbaza Yazı tipi boyutu anahtarı bölümünün hemen yanındaki küçük buton ile ulaşabilirsiniz.
Girdi belgesindeki yazı tipi boyutlarını korumak isterseniz, tüm yazı tipi yeniden ölçekleme işlemi buradan kapatılabilir.
İlgili bir ayar da Line height‘dır. Satır yüksekliği satırların dikey yüksekliğini kontrol eder.Ön tanımlı olarak, (0 yüksekliğinde bir satır), satır yüksekliğinde oynama yapılmaz. Varsayılan dışında bir değer belirtirseniz, satır yükseklikleri
kendi satır yüksekliklerini belirtmeyen her yerde ayarlanacaktır. Bu biraz kör bir silahtır ve dikkatlice kullanılmalıdır.
Girdinin belli bir bölümündeki satır yüksekliklerini ayarlamak istiyorsanız, :ref:‘extra-css kullanmak daha iyi olabilir.
Paragraf aralıkları
Normalde XHTML’de paragraflar aralarında bir satır boşluk olacak şekilde ve takip eden metin girintisi bulunmadan
gerçeklenir. Calibre’nin bunu kontrol etmek için bir takım seçenekleri vardır. Paragraflar arası boşlukları kaldır tüm
paragrafların iç paragraf boşluğu olmamasını garantiler. Ayrıca paragrafın başlangıcını işaretlemek için metin girintisini 1.5em olarak ayarlar (değiştirilebilir). :guilabel: Boş satır ekle tam tersini yapar, her paragraf arası bir boş satır
olduğundan emin olur. Bu iki seçenek de çok kapsamlıdır, boşlukların kaldırılması, veya tüm paragraflara eklenmesi
(teknik olarak <p> ve <div> etiketleri). Bunun sebebi seçeneği ayarladıktan sonra yapacağını söylediği şeyi yaptığından emin olmanızı sağlamaktır, girdi dosyası ne kadar dağınık olsa da. Bir istisna girdi dosyasının iç paragraflar için
boşluksuz satır başı yaptığı durumdur.
Seçilmiş bir kaçı hariç tüm paragraflardaki boşlukları kaldırmak istiyorsanız, bu seçenekleri kullanmayın. Bunun yerine aşağıdaki CSS kodunu Fazladan CSS (sayfa 56):: e ekleyin
=
{}=
[email protected]
=0=1=2=0=1=2p, div \PYGZob{} margin: ; border: ; text\PYGZhy{}indent: 1.5em \PYGZcb{}
.spacious \PYGZob{} margin\PYGZhy{}bottom: 1em; text\PYGZhy{}indent: ; \PYGZcb{}
1.4. E-Kitap Dönüştürme
55
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Sonra, kaynak belgenizde, boşluğa ihtiyaç duyan paragrafları class=”spacious” ile işaretleyin. Girdi belgeniz HTML
biçiminde değilse, HTML almak için giriş bölümünde anlatıldığı gibi Hata ayıklama seçeneğini kullanın (input alt
dizinini kullanın).
Fazladan CSS
Bu seçenek, girdideki tüm HTML dosyalarına uygulanacak keyfi CSS belirlemenize izin verir. Bu CSS yüksek öncelikle uygulanır, dolayısıyla girdi belgesinde mevcut olan çoğu CSS’i ezecektir. Bu seçeneği belgenizin sunumunda/yerleşiminde ince ayar yapmak için kullanabilirsiniz. Örneğin tüm endnote sınıfı paragrafların sağa dayalı
olmasını istiyorsanız , şunu eklemeniz yeterlidir:
=
{}=
[email protected]
=0=1=2=0=1=2.endnote \PYGZob{} text\PYGZhy{}align: right \PYGZcb{}
ya da tüm paragraflardaki girintilemeyi değiştirmek için:
=
{}=
[email protected]
=0=1=2=0=1=2p \PYGZob{} text\PYGZhy{}indent: 5mm; \PYGZcb{}
Fazladan CSS çok güçlü bir seçenektir, ama tam anlamıyla kullanabilmek için CSS nasıl çalışır iyice anlamış olmalısınız. Girdi belgenizde hangi CSS’lerin mevcut olduğunu öğrenmek için aşağıda belirtilen hata ayıklama boru hattı
seçeneğini kullanabilirsiniz.
Muhtelif
Bu bölümde bir kaç seçenek daha var.
No text justification Normalde, çıktı biçimi destekliyorsa, calibre çıktı e-kitabını hizalanmış metne zorlar (ör., yumuşak bir sağ kenar boşluğu). Bu seçenek bu davranışı kapatır, bu durumda da girdi belgesinde ne hizalama
belirtilmişse o kullanılır.
Linearize tables Bazı kötü tasarlanmış belgeler metnin sayfadaki yerleşimi için tablolar kullanırlar. Dönüştürüldüklerinde, bu tablolar genellikle sayfadan taşan hatalı metne sahip olurlar. Bu seçenek metni tablolardan çıkarır
ve doğrusal şekilde sunar. Bu seçeneğin tüm tabloları doğrusallaştırıldığına dikkat edin, yani girdi belgesinin
tabloları geçerli sebeplerle kullanmadığından emin olduğunuzda kullanın, örneğin sekmeli bilgilerin sunumu.
Transliterate unicode characters Evrensel koddaki karakterlerin ASCII sunumuna dönüştürülmesi. Dikkatli kullanın
çünkü bu evrensel kod karakterleri ASCII’ye çevirir. Örneğin “Михаил Горбачёв” metnini “Mikhail Gorbachiov” yapar. Ayrıca bir karakterin birden çok temsili bulunduğu durumlarda (Çince ve Japonca’da paylaşılan
karakterler gibi) en çok kim tarafından kullanılıyorsa o kullanılacaktır (Bu örnekte Çince). Bu seçenek e-kitabı
evrensel kod desteği olmayan bir cihazda görüntüleyecekseniz faydalıdır.
Input character encoding Eski belgeler bazen karakter kodlamalarını belirtmezler. Dönüştürüldüklerinde, bu İngilizce olmayan karakterler veya özel karakterlerin bozuk çıkmasına sebep olabilir. calibre kaynak belgenin karakter kodlamasını otomatik algılamaya çalışır, ama her zaman başarılı olamaz. Bu ayarı kullanarak belli bir
karakter kodlamasını kullanmaya zorlayabilirsiniz. cp1252 windows yazılımıyla üretilen belgeler için yaygın
kullanılan bir kodlamadır. Kodlama sorunlarıyla ilgili daha fazlası için ayrıca İngiliz alfabesi dışında karakterler, veya akıllı tırnak içeren dosyamı nasıl dönüştürürüm? (sayfa 106) okumalısınız.
56
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
1.4.3 Sayfa Düzeni
Sayfa Düzeni seçenekleri kenar boşlukları ve ekran boyutu gibi ekran yerleşimini kontrol etmeye yarar. Çıktı Eklentisi
sayfa kenar boşluklarını destekliyorsa Çıktı Eklentisi tarafından kullanılan sayfa kenar boşluklarını ayarlama seçenekleri vardır. Ek olarak, bir Girdi profili ve Çıktı profili seçmelisiniz. Her iki profil de temelde girdi/çıktı belgelerindeki,
ekran boyutları ve varsayılan yazı tipi ölçekleme tuşlarındaki ölçümlerin nasıl yorumlanacağıyla ilgilenir.
Eğer dönüştürdüğünüz dosyanın belirli bir cihaz/yazılım ile kullanılmak üzere oluşturulduğunu biliyorsanız, ilgili
girdi profilini seçin, bilmiyorsanız varsayılan profili seçmeniz yeterli. Ürettiğiniz dosyalar belirli bir cihaz türü içinse,
ilgili Çıktı profilini seçin. Özellikle , MOBI Çıktı dosyaları için, Kindle, LIT için Microsoft Okuyucu, ve EPUB için
Sony Okuyucu seçmelisiniz. EPUB durumunda, Sony Reader profili her yerde çalışan EPUB dosyaları üretir. Fakat
SONY cihazlar için gereken, iç kısımların boyut sınırı altında kalması için suni bölüm sonlarının eklenmesi gibi
bazı yan etkileri de bulunmaktadır. iPhone/Android telefonlarda, SONY çıktı profilini seçin. E-kitaplarınızın SONY
veya benzer bir cihazda okunmayacağını biliyorsanız, varsayılan çıktı profilini seçin. Kindle üzerinde kullanılmayacak
MOBI dosyaları üretiyorsanız, Mobipocket kitapları çıktı profilini seçin.
Çıktı profili ayrıca ekran boyutunu kontrol eder. Bu da örneğin, bazı çıktı formatlarında resimlerin ekrana uyacak
şekilde otomatik boyutlandırılmasına yol açar. Cihazınızla benzer ekran boyutu olan bir cihaz profili seçin.
1.4.4 Sezgisel İşleme
Sezgisel İşleme vasat biçimlendirilmiş girdi belgelerindeki genel problemlerin algılanıp düzeltilmesi için kullanılabilecek bir takım metodlar sağlar. Girdi belgeniz kötü biçimlenmişse bu metotları kullanın. Bu metotlar sıkça görülen
kalıplara ihtiyaç duyduğundan, bazı durumlarda daha da kötü sonuçlar doğurabilecektir, yani dikkatli kullanın. Örnek olarak, bu seçeneklerin bir çoğu tüm satır başı yapmayan boşlukları silecektir, veya metoda bağlı yanlış pozitif
eşleşmeler içerebilir.
Enable heuristic processing Bu seçenek calibre’nin Sezgisel İşleme aşamasını dönüşüm boru hattında etkinleştirir.
Çeşitli alt metotların uygulanabilmesi için bu seçeneğin etkin olması gerekir
Unwrap lines Bu seçeneği etkinleştirmek calibre’nin bir belgede bulunan boşluksuz satır başlarını noktalama işaretleri ipuçları ve satır uzunluğu kullanarak algılayıp düzeltmeye çalışmasını sağlar. calibre önce boşluksuz
satır başlarının mevcut olup olmadığını algılamaya çalışacak, yok gibi görünüyorsa da calibre satır kaydırmak
yapmayacaktır. Satır kaydırma yapmama etmeni calibre’yi satır kaydırma yapmamaya ‘zorlamak’ istiyorsanız
düşürülebilir.
Line-unwrap factor Bu seçenek calibre’nin boşluksuz satır başlarının kaldırmak için kullandığı algoritmayı kontrol
eder. Örneğin, bu seçeneğin değeri 0.4 ise, calibre satır sonlarındaki boşluksuz satır başlarını o satır belgedeki
tüm satırların uzunluğunun 40% ve aşağısı uzunluğunda ise kaldırır. Belgenizde düzeltilmesi gereken bir kaç
satır sonu varsa, bu değer 0.1 ile 0.2 arası bir değere düşürülmelidir.
Detect and markup unformatted chapter headings and sub headings Belgenizin metnin geri kalanından farklı biçimlendirilmiş bölüm başlıkları ve konuları yoksa, calibre bu seçeneği kullanarak onları algılamaya ve başlık
etiketleriyle çevrelemeye çalışabilir. Bölüm başlıkları için <h2> etiketleri kullanılır; algılanan herhangi diğer
konu için <h3> etiketleri kullanılır.
Bu başlık bir içindekiler bölümü yani TOC oluşturmaz, ama çoğu durumda calibre’nin varsayılan bölüm algılama ayarlarının doğru şekilde bölümleri algılamasına ve bir TOC oluşturmasına sebep olur. Bir TOC otomatik
olarak oluşturulmazsa, Yapı Algılama altındaki XPath’i ayarlayın. Belgede kullanılan başka bir başlık yoksa
Yapı Algılama altındaki “//h:h2” ayarı bir TOC oluşturmak için en kolay yöntem olacaktır.
Eklenmiş başlıklar biçimlendirilmiş değiller, biçimleme eklemek için Görünüm ve Doku dönüştürme ayarları
altındaki Ek CSS seçeneğini kullanın. Örneğin, başlık etiketlerini ortalamak için, şunu kullanın:
=
{}=
[email protected]
1.4. E-Kitap Dönüştürme
57
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
=0=1=2=0=1=2
h2, h3 \PYGZob{} text\PYGZhy{}align: center \PYGZcb{}
Renumber sequences of <h1> or <h2> tags Bazı dağıtımcılar bölüm başlıklarını birden çok <h1> veya <h2> etiketlerini sırayla kullanarak biçimlendirirler. calibre’nin varsayılan dönüştürme ayarları bu gibi konu başlıklarının
iki parçaya ayrılmasına sebep olur. Bu seçenek ayrılmayı önlemek için başlık etiketlerini yeniden numaralandırır.
Delete blank lines between paragraphs Bu seçenek calibre’nin belgede bulunan boş satırları analiz etmesine sebep
olur. Her paragraf arasında bir boş satır varsa, calibre tüm bu boş paragrafları siler. Birden çok boş satır serisi
sahne arası olarak ele alınacaktır ve tek bir paragraf olarak korunacaktır. Bu seçenek ‘Görünüm ve Doku’ altındaki ‘Paragraf Boşluklarını Kaldır’ seçeneğinden farklıdır ve aslında HTML içeriği değiştirir, diğer seçenek ise
belge biçemlerini. Bu seçenek ayrıca calibre’nin ‘Boş satır ekle’ seçeneğiyle eklenen paragrafları da kaldırabilir.
Ensure scene breaks are consistently formatted Bu seçenekle, calibre, sık rastlanan sahne arası işaretçilerini algılamaya ve merkezde hizalandıklarından emin olmaya çalışır. ‘Yumuşak’ sahne arası işaretçilerinin, ör. sadece ek
bir boşlukla belirtilen sahne aralarının, sayfa aralarıyla karışmayacak şekilde biçimlendiğinden emin olunur.
Replace scene breaks Bu seçenek yapılandırılmışsa, calibre kullanıcı tarafından belirtilen metinle bulduğu sahne arası
işaretçilerini değiştirir. Lütfen bazı süsleyici karakterlerin tüm okuma aygıtlarında desteklenmiyor olabileceğini
not edin.
Genellikle html etiketleri kullanmaktan kaçınmalısınız, calibre tüm etiketleri kaldırır ve ön tanımlı işaretçileri
kullanır. <hr /> etiketleri, ör. yatay kurallar, ve <img> etiketleri hariç. Yatay kurallar isteğe bağlı olarak biçemlerle tanımlanabilirler, kendi biçeminizi eklemeyi seçerseniz ‘genişlik’ ayarnın eklemeyi unutmayın, yoksa
biçem bilgisi kabul edilmeyecektir. Resim etiketleri kullanılabilir, ama calibre dönüştürme sırasında resim ekleme yeteneğini sağlamaz, bu işlem daha sonra ‘Kitabı Düzenle’ özelliği ile yapılmalıdır.
Örnek resim etiketi (Dönüşümden sonra resmi epub içindeki bir ‘Resimler’ dizinine koy):
<img style=”width:10%” src=”../Images/scenebreak.png” />
Biçemi olan örnek yatay kural: <hr style=”width:20%;padding-top: 1px;border-top: 2px ridge
black;border-bottom: 2px groove black;”/>
Remove unnecessary hyphens bu seçenek etkinken calibre belgedeki tüm tireli içeriği çözümler. Çözümleme için
belgenin kendisi sözlük olarak kullanılır. Bu, calibre’nin herhangi bir dilde herhangi bir kelimedeki tireleri
doğru şekilde kaldırmasına izin verir, uydurma ve belirsiz bilimsel kelimeler dahil. Birincil eksikliği belgede
yalnızca bir kere geçen kelimelerin değiştirilmeyecek olmasıdır. Çözümleme iki aşamada olur, ilk aşama satır
sonlarını inceler. Satırlar yalnızce kelime belgede tireli veya tiresiz mevcutsa kaydırılır. İkinci aşama belgedeki
tüm tireli kelimeleri inceler, kelime belgede başka bir yerde eşleşme olmadan mevcutsa tireler kaldırılır.
Italicize common words and patterns Etkinleştirildiğinde, calibre yaygın kelime ve kalıpları arayıp yatık yazı ifade
edenleri yatık hale getirir. Örnek verecek olursak, ~kelime~ gibi yaygın metinler, veya genel olarak yatık yazılması gereken deyimler, örn. latin kalıplardan ‘etc.’ veya ‘et cetera’.
Replace entity indents with CSS indents Bazı belgeler metin girintileme için alt satıra geçirmeyen boşluk girdileri
kullanma geleneğini kullanır. Bu seçenek etkinken calibre bu tarz biçimlemeyi algılamaya ve css kullanarak %3
metin girintisine çevirmeye çalışır.
1.4.5 Bul & Değiştir
Bu seçenekler birincil olarak PDF belgeleri ve OCR dönüşümleri için yararlıdır, tabi bir çok belgeye özel problemi
çözmek için de kullanılabilirler. Örnek olarak, bazı dönüşümler metinde sayfa başlıkları ya da altbilgileri bırakabilirler.
Bu seçenekler düzenli ifadeler kullanarak başlık, altbilgi veya keyfi metinleri bulmaya çalışır ve bu metinleri kaldırır
veya değiştirir. Dönüştürme hattındaki ara XHTML çıktı üzerinde işlem yaptıklarını unutmayın. Belgeniz için düzenli
ifadeleri özelleştirmenize yarayan bir sihirbaz da mevcuttur. İfade kutusu yanındaki sihirli değneğe tıklayın ve arama
ifadenizi yazdıktan sonra ‘Test’ düğmesine tıklayın. Başarılı eşleşmeler Sarı olarak vurgulanacaktır.
58
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Arama python düzenli ifadesi kullanarak çalışır. Eşleşen tüm metin belgeden silinir veya değiştirme ifadesi ile değiştirilir. Değiştirme ifadesi isteğe bağlıdır, boş bırakılırsa arama metniyle eşleşen metin belgeden silinir. Düzenli ifadeler
ve söz dizimleriyle ilgili daha çok bilgiyi şurada bulabilirsiniz Calibre’de düzenli ifadeleri kullanmak hakkında herşey
(sayfa 164).
1.4.6 Yapı Algılama
Yapı algılama, yapılar tanımlanmadığında calibre’nin girdi belgesinde yapısal elemanları algılamak için elinden geleni
yapması işini içerir. Örneğin bölümler, sayfa sonları, başlıklar, altbilgi, vs. Tahmin edeceğiniz gibi, bu işlem kitaptan
kitaba farklılık gösterir. Neyse ki calibre bunu kontrol etmek için çok güçlü seçeneklere sahiptir. Bu güçle beraber
karmaşıklık gelir, ama bu karmaşıklığı öğrenmek için biraz zaman ayırırsanız, çabanıza deydiğini göreceksiniz.
Bölümler ve sayfa sonları
calibre’nin bölüm algılama ve sayfa sonu ekleme için iki set seçeneği vardır. Bazen biraz kafa karıştırıcı olsa da,
calibre varsayılan olarak, algılanan bölümlerden önce olduğu gibi sayfa sonları seçeneği ile algılanan yerlerden önce
de sayfa sonu ekler. Bunun sebebi yaygın olarak bölüm sınırlarında olmadığı halde sayfa sonu eklenmesi gereken
yerlerin bulunmasıdır. Ayrıca, algılanan bölümler isteğe bağlı olarak otomatik üretilen İçindekilere eklenebilir.
calibre kullanıcının bölüm sınırlarını/sayfa sonlarını belirtmesine imkan veren güçlü bir dil olan XPath kullanır. XPath
ilk kullanımda göz korkutucu gelse de, şans eseri, Kullanıcı Kitabında bir XPath rehberi (sayfa 132) bulunmaktadır.
Yapı Algılamanın dönüştürme hattındaki XHTML üzerinde işlem yaptığını unutmayın. Kitabınıza uygun ayarları bulmak için Giriş (sayfa 52) da anlatılan hata ayıklama seçeneğini kullanın. Basit XPath ifadeleri üretmeye yardım etmesi
için bir de XPath sihirbazı düğmesi bulunmaktadır.
Ön tanımlı olarak, calibre bölüm algılama için şu ifadeyi kullanır:
=
{}=
[email protected]
=0=1=2=0=1=2//*[((name()=\PYGZsq{}h1\PYGZsq{} or name()=\PYGZsq{}h2\PYGZsq{}) and re:test(., \PYGZsq{}
Bu ifade nispeten karmaşık, çünkü bir takım yaygın durumları aynı anda işlemeye çalışıyor. Anlamı ise calibre’nin
bölümlerin başını ya içinde (chapter, book, section veya part) kelimelerinden herhangi birini veya class=”chapter”
özniteliğini içeren <h1> veya <h2> etiketleri olarak varsayacağıdır.
İlgili bir seçenek de Chapter işareti, calibre’nin bir bölüm algıladığında ne yapacağını kontrol etmenizi sağlayan
seçeneği. Ön tanımlı olarak, bölümden önce bir satır sonu ekleyecektir. Bunun yerine veya satır sonundan sonra kurallı
bir satır ekleyebilir. Başka bir şey de yaptıramazsınız.
Sayfa sonlarını algılamak için ön tanımlı ayar:
=
{}=
[email protected]
=0=1=2=0=1=2//*[name()=\PYGZsq{}h1\PYGZsq{} or name()=\PYGZsq{}h2\PYGZsq{}]
bu da calibre’nin ön tanımlı olarak her <h1> ve <h2> etiketinden önce sayfa sonu ekleyeceği demek oluyor.
Not: Varsayılan ifadeler dönüştürdüğünüz girdi biçimine göre değişebilir.
Muhtelif
Bu bölümde bir kaç seçenek daha var.
1.4. E-Kitap Dönüştürme
59
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Insert metadata as page at start of book Calibre hakkındaki harika şeylerden biri de tüm kitaplarınız hakkındaki tam
metadatayı, örneğin, oylama, etiketler, yorumlar, vs. korumanızı sağlamasıdır. Bu seçenek tüm bu metadata’yı
içeren bir sayfayı dönüştürme sonrası, genellikle kapak sayfasından sonra dönüştürülen e-kitaba ekler. Kendi
özelleşmiş kitap kabınızı oluşturmak gibi düşünebilirsiniz.
Remove first image Bazen, dönüştürdüğünüz kaynak belge kapağı ayrı bir kapak olarak değil, kitabın bir parçası
olarak bulundurur. Calibre’de ayrıca bir kapak belirtirseniz, dönüştürülen kitabın iki kapak sayfası olur. Bu
seçenek basitçe belgedeki ilk resmi kaldırır, dönüştürülen kitabın tek bir kapağı, calibre tarafından belirtilen
kapağı olmasını sağlar.
1.4.7 İçindekiler
Girdi belgesinin metadatasında bir İçindekiler bölümü olduğunda, calibre bunu kullanacak. Bazı eski biçimler ya metadata tabanlı İçindekileri desteklemez, ya da bazı belgeler bunu içermiyor olabilir. Bu gibi durumlarda, bu kısımdaki
seçenekler, girdi belgesindeki içeriği temel alarak dönüştürülen e-kitapta otomatik olarak İçindekiler oluşturmanıza
yardım edebilir.
Not: Bu seçenekleri tam olarak kullanmayı öğrenmek zor olabilir. İçindekiler bölümünü elle oluşturmak/düzenlemek
isterseniz, EPUB veya AZW3 formatına çevirin ve dönüştürme iletişim penceresinin altındaki İçindekileri dönüştürmeden sonra elle ayarla etiketli onay kutusunu işaretleyin. Dönüştürme bittikten sonra ToC Düzenleyici açılır. Bu
da İçindekiler bölümündeki girdileri girdilerin göstermesini istediğiniz yeri kitapta tıklayarak seçmenize izin veren
düzenleyicidir. ToC Düzenleyiciyi dönüştürme yapmadan da kullanabilirsiniz. Seçenekler->Araç çubukları menüsüne
gidin ve ToC Düzenleyiciyi ana araç çubuğuna ekleyin. Sonra yalnızca düzenlemek istediğiniz kitabı seçin ve ToC
Düzenleyici düğmeye tıklayın.
İlk seçenek Otomatik oluşturulmuş İçindekileri kullanmaya zorla. Bunu işaretleyerek calibre’nin girdi belgesinde bulunan herhangi bir İçindekiler bölümü yerine otomatik üretileni kullanmaya zorlamasını sağlayabilirsiniz.
Otomatik üretilen İçindekiler bölümünün çalışma şekli, calibre’nin algılanan tüm bölümleri üretilen içindekiler bölümüne eklemeye çalışması iledir. Bölüm algılamayı nasıl özelleştirebileceğinizi yukarıdaki Yapı Algılama (sayfa 59)
kısmı ile öğrenebilirsiniz. Algılanan bölümlerin üretilen içindekiler bölümünde yer almasını istemiyorsanız, Algılanan
bölümleri ekleme seçeneğini işaretleyin.
Eğer Bölüm eşiği sayısından az sayıda bölüm algılanırsa, calibre girdi belgesinde bulduğu köprüleri İçindekilere ekler.
Bu genellikle düzgün çalışır bir çok girdi belgesi başında köprülenmiş bir İçindekiler içerir. Bağlantı sayısı seçeneği
bu davranışı kontrol etmek için kullanılabilir. Sıfıra ayarlanırsa, hiçbir bağlantı eklenmez. Sıfırdan büyük bir rakam
ayarlanırsa, en fazla o kadar bağlantı eklenir.
calibre otomatik olarak kopya girdileri İçindekiler bölümünden çıkarır. Fakat istenmeyen başka girdiler de varsa, TOC
Filtresi seçeneği ile filtreleyebilirsiniz. Bu, üretilen içindekilerdeki girdi başlıklarıyla eşleşecek bir düzenli ifadedir.
Bulunan her eşleşme kaldırılacaktır. Örneğin, tüm “Sonraki” veya “Önceki” girdi başlıklarını kaldırmak için şunu
kullanabilirsiniz:
=
{}=
[email protected]
=0=1=2=0=1=2\PYG{n}{Next}\PYG{o}{\textbar{}}\PYG{n}{Previous}
Seviye 1,2,3 TOC‘seçenekleri gelişmiş çok seviyeli bir İçindekiler oluşturmanıza izin verir. Bunlar dönüştürme hattınca
üretilen ara XHTML’de eşleşen XPath ifadeleridir. Bu XHTML’ye nasıl erişeceğinizi öğrenmek için :ref:‘conversionintroduction a göz atın. Her seçeneğin yanında temel XPath ifadeleri oluşturmanıza yardım edecek bir sihirbaz açan
düğmeler bulunur. Şu basit örnek bu seçenekleri nasıl kullanacağınızı gösterir.
Aşağıdakine benzer bir XHTML üreten bir girdi belgeniz olduğunu farz edin:
60
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
=
{}=
[email protected]
=0=1=2=0=1=2\PYG{n+nt}{\PYGZlt{}html} \PYG{n+na}{xmlns=}\PYG{l+s}{\PYGZdq{}http://www.w3.org/1999/xhtm
\PYG{n+nt}{\PYGZlt{}head}\PYG{n+nt}{\PYGZgt{}}
\PYG{n+nt}{\PYGZlt{}title}\PYG{n+nt}{\PYGZgt{}}Sample document\PYG{n+nt}{\PYGZlt{}/title\PYGZ
\PYG{n+nt}{\PYGZlt{}/head\PYGZgt{}}
\PYG{n+nt}{\PYGZlt{}body}\PYG{n+nt}{\PYGZgt{}}
\PYG{n+nt}{\PYGZlt{}h1}\PYG{n+nt}{\PYGZgt{}}Chapter 1\PYG{n+nt}{\PYGZlt{}/h1\PYGZgt{}}
...
\PYG{n+nt}{\PYGZlt{}h2}\PYG{n+nt}{\PYGZgt{}}Section 1.1\PYG{n+nt}{\PYGZlt{}/h2\PYGZgt{}}
...
\PYG{n+nt}{\PYGZlt{}h2}\PYG{n+nt}{\PYGZgt{}}Section 1.2\PYG{n+nt}{\PYGZlt{}/h2\PYGZgt{}}
...
\PYG{n+nt}{\PYGZlt{}h1}\PYG{n+nt}{\PYGZgt{}}Chapter 2\PYG{n+nt}{\PYGZlt{}/h1\PYGZgt{}}
...
\PYG{n+nt}{\PYGZlt{}h2}\PYG{n+nt}{\PYGZgt{}}Section 2.1\PYG{n+nt}{\PYGZlt{}/h2\PYGZgt{}}
...
\PYG{n+nt}{\PYGZlt{}/body\PYGZgt{}}
\PYG{n+nt}{\PYGZlt{}/html\PYGZgt{}}
Seçenekleri şu şekilde ayarlıyoruz:
=
{}=
[email protected]
=0=1=2=0=1=2Level 1 TOC : //h:h1
Level 2 TOC : //h:h2
Bu işlem aşağıdaki gibi görünen, otomatik üretilmiş iki seviyeli bir İçindekilere sebep olur:
=
{}=
[email protected]
=0=1=2=0=1=2Chapter 1
Section 1.1
Section 1.2
Chapter 2
Section 2.1
Uyarı: Tüm çıktı biçimleri çok seviyeli İçindekileri desteklemez. Önce bir EPUB Çıktısı ile denemelisiniz. Çalışırsa, seçeceğiniz bir biçimle deneyin.
1.4.8 HTML girdi belgelerini dönüştürürken resimler bölüm başlığı olarak kullanılıyor
Bir resmi bölüm başlığı olarak kullanmak istediğinizi var sayalım, ama yine de calibre’nin İçindekileri bölüm başlıklarından sizin için otomatik üretmesini istiyorsunuz. Bunu elde etmek için aşağıdaki HTML biçimlemesini kullanın
=
{}=
[email protected]
=0=1=2=0=1=2\PYG{n+nt}{\PYGZlt{}html}\PYG{n+nt}{\PYGZgt{}}
\PYG{n+nt}{\PYGZlt{}h2}\PYG{n+nt}{\PYGZgt{}}Chapter 1\PYG{n+nt}{\PYGZlt{}/h2\PYGZgt{}}
\PYG{n+nt}{\PYGZlt{}p}\PYG{n+nt}{\PYGZgt{}}chapter 1 text...\PYG{n+nt}{\PYGZlt{}/p\PYGZgt{}}
\PYG{n+nt}{\PYGZlt{}h2} \PYG{n+na}{title=}\PYG{l+s}{\PYGZdq{}Chapter 2\PYGZdq{}}\PYG{n+nt}{\P
\PYG{n+nt}{\PYGZlt{}p}\PYG{n+nt}{\PYGZgt{}}chapter 2 text...\PYG{n+nt}{\PYGZlt{}/p\PYGZgt{}}
1.4. E-Kitap Dönüştürme
61
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
\PYG{n+nt}{\PYGZlt{}/body\PYGZgt{}}
\PYG{n+nt}{\PYGZlt{}/html\PYGZgt{}}
Seviye 1 TOC ayarını //h:h2 yapın. İkinci bölüm için, calibre başlığı etiketin metni olmadığından <h2> etiketindeki
title özniteliğinden alır.
1.4.9 İçindekiler bölümündeki girdilere metin temin etmek için etiket öznitelikleri
kullanılıyor
Kısmen uzun bölüm başlıklarınız varsa ve İçindekiler bölümünde kısaltılmış hallerini istiyorsanız, bu iş için başlık
özniteliğini kullanabilirsiniz, örneğin:
=
{}=
[email protected]
=0=1=2=0=1=2\PYG{n+nt}{\PYGZlt{}html}\PYG{n+nt}{\PYGZgt{}}
\PYG{n+nt}{\PYGZlt{}h2} \PYG{n+na}{title=}\PYG{l+s}{\PYGZdq{}Chapter 1\PYGZdq{}}\PYG{n+nt}{\P
\PYG{n+nt}{\PYGZlt{}p}\PYG{n+nt}{\PYGZgt{}}chapter 1 text...\PYG{n+nt}{\PYGZlt{}/p\PYGZgt{}}
\PYG{n+nt}{\PYGZlt{}h2} \PYG{n+na}{title=}\PYG{l+s}{\PYGZdq{}Chapter 2\PYGZdq{}}\PYG{n+nt}{\P
\PYG{n+nt}{\PYGZlt{}p}\PYG{n+nt}{\PYGZgt{}}chapter 2 text...\PYG{n+nt}{\PYGZlt{}/p\PYGZgt{}}
\PYG{n+nt}{\PYGZlt{}/body\PYGZgt{}}
\PYG{n+nt}{\PYGZlt{}/html\PYGZgt{}}
Seviye 1 TOC ayarını //h:[email protected] yapın. calibre etiket içindeki metni kullanmak yerine, başlığı <h2> etiketlerindeki title değerinden alacaktır. XPath ifadesinde sondaki [email protected] a dikkat edin, bu biçimi kullanarak
calibre’ye metni istediğiniz öznitelikten almasını söyleyebilirsiniz.
1.4.10 Dönüştürme için seçeneklerin nasıl ayarlanıp/kaydedileceği
Calibre’de dönüştürme işlemlerinin ayarlanabileceği iki yer vardır. Birincisi Seçenekler->Dönüştürme. Bu seçenekler
dönüştürme için varsayılan ayarlardır. Her kitap dönüştürmek istediğinizde, ön tanımlı olarak burada bulunan ayarlar
kullanılır.
Ayarları ayrıca her kitap dönüştürme işleminde dönüştürme iletişim penceresinde de değiştirebilirsiniz. Bir kitap dönüştürdüğünüzde, calibre bu kitap için kullandığınız ayarları hatırlar, böylece tekrar dönüştürdüğünüzde, yalnızca bu
kitap için kaydedilen ayarlar Seçenekler menüsündeki ayarlardan öncelikli olur. Kitaba özel ayarları varsayılan ayarlara kitap dönüştürme iletişim penceresindeki Varsayılan ayarlara geri alma seçeneğiyle dönebilirsiniz. Bir grup kitap
için kaydedilen ayarları, tüm bu kitapları seçip metadata düzenle düğmesine tıklayarak, açılan toplu metadata düzenleme iletişim penceresinin aşağı tarafındaki kaydedilen dönüştürme ayarlarını kaldırma seçeneği ile kaldırabilirsiniz.
Bir grup kitabı Toplu Dönüştürdüğünüzde, ayarlar aşağıdaki sırayla alınır (son gelen kazanır):
• Seçenekler->Dönüştürme menüsünde ayarlanan varsayılanlardan
• Dönüştürülen her kitaptaki (eğer varsa) kayıtlı dönüştürme ayarlarından. Bu ayar Toplu Dönüştürme iletişim
penceresinin sol üstündeki seçenekle kapatılabilir.
• Toplu dönüştürme iletişim penceresindeki ayarlardan
Toplu Dönüştürmedeki her kitap için son ayarlar kaydedilir ve kitap tekrar dönüştürülürse tekrar kullanılır. Toplu
Dönüştürmede en yüksek öncelik Toplu Dönüştürme iletişim penceresindeki ayarlara verildiğinden, bu ayarlar kitaba
özel olanları ezer. Yani yalnızca benzer ayarlara ihtiyacı olan kitapları topluca dönüştürmelisiniz. Metadata ve girdi
biçimine özel ayarlar istisnadır. Toplu Dönüştürme iletişim penceresi bu iki kategoride ayarları içermediğinden, bu
ayarlar kitaba özel ayarlardan (eğer varsa) veya varsayılanlardan alınır.
62
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Not: Herhangi bir dönüştürmede kullanılan ayarları görmek için aşağı sağ köşedeki dönen simgeye tıklayıp dönüştürme işine çift tıklayabilirsiniz. Bu işlem kullanılan ayarları üst kısma yakın bir yerde gösteren dönüştürme kaydını
getirecektir.
1.4.11 Biçime özel ipuçları
Burada belli biçimlerin dönüştürülmesiyle ilgili ipuçları bulacaksınız. Girdi ya da çıktı olsun, belli bir biçime yönelik
seçenekler kendi kısımlarındaki dönüştürme iletişim penceresindedir, örneğin TXT Girdi veya EPUB Çıktısı.
Microsoft Word belgelerini dönüştür
calibre Microsoft Word 2007 ve üzeri tarafından oluşturulan .docx dosyalarını otomatik dönüştürebilir. Dosyayı
calibre’ye ekleyin ve dönüştüre tıklayın (.docx dosyaları için destek çok yeni olduğundan calibre’nin son sürümünü
çalıştırdığınızdan emin olun).
Not: Calibre dönüştürme motorunun yeteneklerini gösteren bir .docx tanıtım dosyası20 mevcuttur. Calibre’nin yeteneklerini görmek için bu dosyayı indirin ve EPUB veya AZW3 biçimine dönüştürün.
Word’de başlıklarda Heading 1, Heading 2, vs. biçimlerini kullanırsanız calibre otomatik olarak bu başlıkları
temel alan bir İçindekiler üretecektir. Üretilen İçindekileri görüntülemek için çıktı e-kitabı calibre görüntüleyici ile
açın ve İçindekiler düğmesine tıklayın.
Eski .doc dosyaları
Eski .doc dosyalarıyla çalışırken belgeyi Microsoft Word ile HTML olarak kaydedebilir, sonra bu HTML dosyasını
calibre ile dönüştürebilirsiniz. HTML olarak kaydederken “Web Sayfası olarak kaydet, Filtrelenmiş” seçeneğini kullanmayı unutmayın, bu seçenek iyi dönüşebilen temiz HTML üretir. Word gerçekten karman çorman HTML üretir,
dönüştürme uzun sürebileceğinden sabırlı olun. Word’un yeni bir sürümüne sahipseniz, doğrudan docx olarak kaydedebilirsiniz.
Bir diğer seçenek de açık kaynaklı ve ücretsiz OpenOffice kullanmak. .doc dosyasınız OpenOffice ile açın ve OpenOffice’in .odt biçiminde kaydedin. calibre .odt dosyalarını doğrudan dönüştürebilir.
TXT belgelerini dönüştür
TXT belgelerinin kalın, yatık yazı vs. gibi iyi tanımlanmış biçimleme şekilleri ya da paragraflar, başlıklar, kısımlar gibi
belge yapıları yoktur, ama çoğunlukça kullanılan bir takım genellemeler kullanılmaktadır. Varsayılan olarak calibre
doğru biçimleme ve işaretlemeleri bu genellemelere bakarak otomatik yapmaya çalışır.
TXT girdisi paragrafların nasıl algılanacağı ayrımına varmak için bir takım seçeneği destekler.
Paragraph Style: Auto Paragrafların nasıl tanımlandığını otomatik olarak anlamak için metin dosyalarını
analiz eder. Bu seçeneke çoğunlukla iyi çalışır, beklenmedik sonuçlarla karşılaşırsanız elle ayarlanan
seçeneklerden birini deneyin.
Paragraph Style: Block Bir ya da fazla boş satırın paragraf sınırı olduğunu varsayar:
20
http://calibre-ebook.com/downloads/demos/demo.docx
1.4. E-Kitap Dönüştürme
63
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
=
{}=
[email protected]
=0=1=2=0=1=2
This is the first.
This is the
second paragraph.
Paragraph Style: Single Her satırın bir paragraf olduğunu varsayar:
=
{}=
[email protected]
=0=1=2=0=1=2
This is the first.
This is the second.
This is the third.
Paragraph Style: Print Her paragrafın bir girintiyle başladığını varsayar (bir tab veya 2+ boşluk). Paragraflar sonraki satır girintiyle başladığında sona erer:
=
{}=
[email protected]
=0=1=2=0=1=2
This is the
first.
This is the second.
This is the
third.
Paragraph Style: Unformatted Belgenin bir biçimi olmadığı, ama alt satır sonu kullandığı varsayılır.
Noktalama işaretleri ve ortalama satır uzunluğu kullanılarak paragraflar tekrar oluşturulmaya çalışılır.
Formatting Style: Auto Kullanılan biçimlendirme işaretçileri türü algılanmaya çalışılır. İşaretçi kullanılmamışsa sezgisel biçimleme uygulanır.
Formatting Style: Heuristic Belge genel bölüm başlıkları, sahne araları, ve yatık kelimeler için analiz
edilir ve dönüştürme sırasında uygun HTML işaretçileri uygulanır.
Formatting Style: Markdown calibra ayrıca TXT girdisini markdown olarak bilinen dönüştürme ön işleminden geçirmeyi de destekler. Markdown TXT belgelerine kalın, yatık yazı, bölüm balşıkları,
tablolar, listeler, İçindekiler vs. gibi temel biçimleme eklemeye yarar. Bölüm başlıklarının başını #
ile işaretlemek ve bölüm XPath algılama ifadesini “//h:h1” olarak ayarlamak TXT belgesinden üretilecek düzgün bir İçindekiler için en kolay yöntemdir. Markdown söz dizimi ile ilgili daha fazla
bilgiyi daringfireball21 dan öğrenebilirsiniz.
Formatting Style: None Metne ek biçimleme uygulamaz, belge değişikliğe uğramadan html’ye dönüştürülür.
PDF belgelerini dönüştür
PDF belgesi dönüştürülebilecek en kötü biçimlerden birisidir. Sabit sayfa boyutlu ve sabit yerleştirilmiş metin biçimlidirler. Bunun anlamı, bir paragrafın nerede bitip nerede başladığını anlamanın çok zor olduğudur. calibre paragrafları
yapılandırılabilir bir Satır Kaydırmama Etmeni ile kaydırmamaya çalışacaktır. Bu, bir satırın kaydırılmaması gereken
21
64
http://daringfireball.net/projects/markdown/syntax
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
satır uzunluğunun belirlenmesinde kullanılan bir ölçüdür. Geçerli değerler 0 ve 1 arasında bir ondalık sayıdır. Varsayılanı 0.45’dir, ortalama satır uzunluğunun biraz altı. Kaydırılmayan daha çok metin için bu değeri küçültün. Daha az
içermesi için de artırın. Bu değeri PDF Girdisi altındaki dönüştürme ayarlarından ayarlayabilirsiniz.
Ayrıca, genellikle belgenin bir parçası olarak metin içeriğine eklenecek başlık ve altbilgileri vardır. Bu sorunu azaltmak için Ara ve Değiştir panelini kullanarak başlık ve altbilgileri kaldırın. Başlık ve altbilgi metinden çıkarılmazsa,
paragraf kaydırmamayı bir kenara atabilir. Başlık ve altbilgi kaldırma seçeneklerinin nasıl kullanılacağını öğrenmek
için Calibre’de düzenli ifadeleri kullanmak hakkında herşey (sayfa 164) okuyun.
PDF girdisinin bazı kısıtlamaları:
• Karmaşık, çok-sütunlu, ve resim temelli belgeler desteklenmez.
• Belgeden vektör resim ve tablo çıkarma işlemi de desteklenmez.
• Bazı PDF’ler ll veya ff veya fi vs. temsil etmek için özel kabartmalar kullanırlar. Bunların dönüştürülmesinin
çalışıp çalışmayacağı PDF içinde nasıl temsil edildiklerine bağlıdır.
• Bağlantılar ve İçindekiler desteklenmiyor
• İngilizce dışındaki karakterleri temsil için gömülü olarak evrensel kod dışında yazı tipi içeren PDF’ler bu karakterler için bozuk çıktı alacaklardır
• Bazı PDF’ler arkasında OCRed metin bulunan o sayfanın fotoğrafından yapılmışlardır. Böyle durumlarda calibre
PDF’i görüntülediğinizde göreceğinizden çok farklı sonuç verecek olan OCRed metni kullanır
• Sağdan sola yazılan diller ve matematik karakter dizisi gibi karmaşık metin görüntülemek için kullanılan
PDF’ler düzgün dönüştürülmeyecektir
Tekrar üstünden geçelim PDF gerçekten, ama gerçekten kötü bir girdi formatıdır. İlla PDF kullanmanız gerekiyorsa,
girdi PDF’ine bağlı olarak idare eder ile kullanılamaz arasında bir çıktı için hazırlıklı olun.
Çizgi Roman Koleksiyonu
Çizgi roman koleksiyonu bir .cbc dosyasıdır. Bu .cbc dosyası diğer CBZ/CBR dosyalarını içeren bir zip dosyasıdır.
Bunların yanında .cbc dosyası UTF-8 ile kodlanmış basit bir comics.txt metin dosyası içermelidir. comics.txt dosyası
.cbc dosyasındaki çizgi roman listesini aşağıda görüldüğü gibi dosyasismi:başlık şeklinde içerir:
=
{}=
[email protected]
=0=1=2=0=1=2one.cbz:Chapter One
three.cbz:Chapter Three
two
Böylece .cbc dosyası şunu içerecektir:
=
{}=
[email protected]
=0=1=2=0=1=2\PYG{n}{comics}\PYG{o}{.}\PYG{n}{txt}
\PYG{n}{one}\PYG{o}{.}\PYG{n}{cbz}
\PYG{n}{two}\PYG{o}{.}\PYG{n}{cbz}
\PYG{n}{three}\PYG{o}{.}\PYG{n}{cbz}
calibre bu .cbc dosyasını otomatik olarak comics.txt dosyasındaki her bir girdiyi gösteren İçindekiler bölümüyle bir
e-kitaba çevirir.
1.4. E-Kitap Dönüştürme
65
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
EPUB gelişmiş biçimleme tanıtımı
EPUB dosyaları için çeşitli gelişmiş biçimlendirmeler şu tanıtım dosyasında22 gösterilmiştir. Dosya calibre kullanılarak kendi EPUB oluşturma denemelerinizde şablon olarak kullanılmak için elle kodlanmış HTML’den oluşturulmuştur.
Oluşturulduğu kaynak HTML kullanılabilirdir demo.zip23 . ZIP dosyasından EPUB oluşturmak için kullanılan ayarlar:
=
{}=
[email protected]
=0=1=2=0=1=2ebook\PYGZhy{}convert demo.zip .epub \PYGZhy{}vv \PYGZhy{}\PYGZhy{}authors \PYGZdq{}Kovid
Bu dosya EPUB’ın potansiyelini araştırdığından, calibre’nin yerleşik okuyucusu dışındaki bir çok okuyucuda burdaki
gelişmiş biçimlemeler çalışmayacaktır.
ODT belgelerini dönüştür
calibre ODT (OpenDocument Metni) dosyalarını doğrudan dönüştürebilir. Belgenizi biçimlendirmek için biçemler
kullanmalı ve doğrudan biçimleme kullanmaktan kaçınmalısınız. Belgenize resim eklerken, resimleri paragrafa bağlamalısınız, bir sayfaya bağlanmış resimlerin hepsi dönüştürmenin başında yer alacaktır.
Bölümleri otomatik algılamak için, onları yerleşik biçim ‘Heading 1’, ‘Heading 2’, ..., ‘Heading 6’ (‘Heading 1’
HTML etiketi <h1> e denktir, ‘Heading 2’ <h2> ye vs.) ile işaretlemelisiniz. Dönüştürme yaparken calibre’de kullandığınız biçimi ‘Bölümleri algıla’ kutusunda girebilirsiniz. Örneğin:
• Bölümleri ‘Heading 2’ biçimi ile işaretlerseniz, ‘Bölümleri algıla’ kutusunu //h:h2 olarak ayarlamalısınız
• Kısımların ‘Heading 2’ ile, Bölümlerin ‘Heading 3’ ile işaretlendiği iç içe bir TOC için‘‘//h:h2|//h:h3‘‘ girmelisiniz. TOC - Dönüştürme sayfasında ‘Seviye 1 TOC’ kutusunu //h:h2 ve ‘Seviye 2 TOC’ kutusunu //h:h3
olarak ayarlayın.
İyi bilinen belge özellikleri (Başlık, Anahtar kelimeler, Açıklama, Oluşturan) tanınır ve calibre ilk resmi (çok küçük
olmayan, iyi en boy oranına sahip) kapak resmi yapar.
Ayrıca ODT belgenizde Evet olarak ayarladığınızda (Dosya->Özellikler->Özel Özellikler) etkinleşen özel bir özellik
olan opf.metadata (‘Evet veya Hayır’ biçimli) gelişmiş özellik dönüştürme kipi bulunmaktadır. Bu özellik calibre
tarafından algılanırsa, aşağıdaki özellikler tanınır (opf.authors belgeyi oluşturanı ezer):
=
{}=
[email protected]
=0=1=2=0=1=2\PYG{n}{opf}\PYG{o}{.}\PYG{n}{titlesort}
\PYG{n}{opf}\PYG{o}{.}\PYG{n}{authors}
\PYG{n}{opf}\PYG{o}{.}\PYG{n}{authorsort}
\PYG{n}{opf}\PYG{o}{.}\PYG{n}{publisher}
\PYG{n}{opf}\PYG{o}{.}\PYG{n}{pubdate}
\PYG{n}{opf}\PYG{o}{.}\PYG{n}{isbn}
\PYG{n}{opf}\PYG{o}{.}\PYG{n}{language}
\PYG{n}{opf}\PYG{o}{.}\PYG{n}{series}
\PYG{n}{opf}\PYG{o}{.}\PYG{n}{seriesindex}
Buna ek olarak, ODT’de kapak resmi olmasını istediğiniz resmi opf.cover olarak isimlendirebilirsiniz (sağ tık,
Resim->Seçenekler->Ad). Bu isimde bir resim bulunmazsa, ‘zeki’ kipi kullanılır. Bazı çıktı biçimlerinde kapak algılama iki kapakla sonlanabileceğinden, işlem paragrafı belgeden çıkaracaktır (yalnızca tek içerik kapak ise!). Ama bu
yalnızca adlandırılan resimle çalışır!
22
23
66
http://calibre-ebook.com/downloads/demos/demo.epub
http://calibre-ebook.com/downloads/demos/demo.zip
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Kapak algılamayı kapatmak için opf.nocover (‘Evet veya Hayır’ türünde) gelişmiş kipte Evet olarak ayarlayabilirsiniz.
PDF’e dönüştürme
PDF’e dönüştürmede karar vereceğiniz ilk, en önemli ayar sayfa boyutudur. Varsayılan olarak, calibre Çıktı profili
tarafından belirlenmiş bir sayfa boyutu kullanır. Yani çıktı profiliniz Kindle olarak ayarlıysa, calibre küçük kindle
ekranında görüntülenebilecek bir sayfa boyutu seçer. Ancak bu PDF’i bir bilgisayar ekranında görüntülerseniz çok
büyük yazı tipli görünecektir. “Normal” boyutlu PDF’ler oluşturmak için dönüştürme penceresindeki PDF Çıktısı
altındaki Sayfa boyutunu ez seçeneğini kullanın.
Başlıklar ve Altbilgiler
Başlık ve altbilgi şablonları belirleyerek PDF’in her sayfasına keyfi başlık ve alt bilgi ekleyebilirsiniz. Şablonlar başlık
ve altbilgi alanlarında gerçeklenen HTML kodlarından başka bir şey değildir. Örneğin her sayfanın altında ortalanmış
olarak sayfa numaraları göstermek için, aşağıdaki altbilgi şablonunu kullanın:
=
{}=
[email protected]
=0=1=2=0=1=2\PYGZlt{}p style=\PYGZdq{}text\PYGZhy{}align:center; color:green\PYGZdq{}\PYGZgt{}Page \PY
calibre _PAGENUM_ u otomatik olarak mevcut sayfa numarasıyla değiştirir. Hatta tek ve çift sayfalar için değişik
içerik bile koyabilirsiniz, örneğin aşağıdaki başlık şablonu tek sayfalarda başlığı, çift sayfalarda yazarı gösterir:
=
{}=
[email protected]
=0=1=2=0=1=2\PYGZlt{}p style=\PYGZdq{}text\PYGZhy{}align:right\PYGZdq{}\PYGZgt{}\PYGZlt{}span class=\P
calibre _TITLE_ ve _AUTHOR_ kelimelerini otomatik olarak dönüştürülen belgenin başlığı ve yazarı ile değiştirir.
Aynı zamanda aşağıdaki başlık şablonunda gösterildiği gibi metni sol ve sağ köşelerde gösterebilir, yazı tipi boyutunu
değiştirebilirsiniz:
=
{}=
[email protected]
=0=1=2=0=1=2\PYGZlt{}div style=\PYGZdq{}font\PYGZhy{}size:x\PYGZhy{}small\PYGZdq{}\PYGZgt{}\PYGZlt{}p
Bu başlığı solda, yazarı sağda ana metinden küçük bir boyutta gösterir.
Mevcut kısmı da şablonlarda aşağıda gösterildiği gibi kullanabilirsiniz:
=
{}=
[email protected]
=0=1=2=0=1=2\PYGZlt{}p style=\PYGZdq{}text\PYGZhy{}align:right\PYGZdq{}\PYGZgt{}\PYGZus{}SECTION\PYGZu
_SECTION_ mevcut kısmın adı neyse onunla değiştirilir. Bu isimler belgenin (PDF Özeti) İçindekiler metadatasından
alınır. Belgenin İçindekileri yoksa boş metinle değiştirilir. Tek bir PDF sayfasının birden çok kısmı varsa, sayfadaki
ilk kısım kullanılacaktır.
Başlık ve altbilgi içinde javascript bile kullanabilirsiniz, örneğin, aşağıdaki şablon sayfa numaralarının 1 yerine 4 den
başlamasını sağlar:
=
{}=
[email protected]
1.4. E-Kitap Dönüştürme
67
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
=0=1=2=0=1=2\PYGZlt{}p id=\PYGZdq{}pagenum\PYGZdq{} style=\PYGZdq{}text\PYGZhy{}align:center;\PYGZdq{}
Not: Başlık ve altbilgi eklerken sayfa alt ve üst kenar boşluklarını dönüştürme iletişim penceresindeki Sayfa Ayarları
kısmından yeterince büyük değerlere ayarladığınızdan emin olun.
Yazdırılabilir İçindekiler
Ayrıca PDF sonuna her kısmın sayfa numaralarını içeren y azdırılabilir bir İçindekiler ekleyebilirsiniz. PDF’i sayfaya
yazdırmaya niyetiniz varsa çok faydalıdır. PDF’i elektronik cihazda kullanacaksanız, PDF Özeti bu işlevselliği sağlar
ve ön tanımlı olarak üretilir.
Üretilen İçindekiler bölümünün görünümünü dönüştürme iletişim penceresindeki Görünüm & Doku altındaki Ek CSS
dönüştürme ayalarından özelleştirebilirsiniz. Kullanılan varsayılan css aşağıda listelenmiştir, basitçe kopyalayın ve
istediğiniz değişiklikleri yapın.
=
{}=
[email protected]
=0=1=2=0=1=2\PYG{n+nc}{.calibre\PYGZhy{}pdf\PYGZhy{}toc} \PYG{n+nt}{table} \PYG{p}{\PYGZob{}} \PYG{k}{
\PYG{n+nc}{.calibre\PYGZhy{}pdf\PYGZhy{}toc} \PYG{n+nt}{table} \PYG{n+nt}{tr} \PYG{n+nt}{td}\PYG{n+nd
\PYG{n+nc}{.calibre\PYGZhy{}pdf\PYGZhy{}toc} \PYG{n+nc}{.level\PYGZhy{}} \PYG{p}{\PYGZob{}}
\PYG{k}{font\PYGZhy{}size}\PYG{o}{:} \PYG{k}{larger}\PYG{p}{;}
\PYG{p}{\PYGZcb{}}
\PYG{n+nc}{.calibre\PYGZhy{}pdf\PYGZhy{}toc} \PYG{n+nc}{.level\PYGZhy{}1} \PYG{n+nt}{td}\PYG{n+nd}{:f
\PYG{n+nc}{.calibre\PYGZhy{}pdf\PYGZhy{}toc} \PYG{n+nc}{.level\PYGZhy{}2} \PYG{n+nt}{td}\PYG{n+nd}{:f
1.5 E-kitap Düzenleme
calibre EPUB ve AZW3 (Kindle) biçimlerinde kitapları düzenlemeye yarayan dahili bir e-kitap düzenleyicisi içerir.
Düzenleyici kitap dosyalarında dahili olarak kullanılan HTML ve CSS’i ve değişiklik yaptıkça güncellenen bir canlı
ön izlemeyi gösterir. Ayrıca genel temizlik ve düzeltme işleri için çeşitli otomatize araç da içerir.
Bu düzenleyiciyi calibre’de herhangi bir kitaba sağ tıklayıp Kitabı düzenle seçerek kullanabilirsiniz.
68
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
1.5. E-kitap Düzenleme
69
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
İçindekiler
• Temel iş akışı (sayfa 70)
• Dosya Tarayıcı (sayfa 73)
– Dosyaları yeniden adlandırma (sayfa 74)
– Dosyaları birleştirme (sayfa 74)
– Metin dosyası sırası değiştirme (sayfa 74)
– Kapağı işaretleme (sayfa 74)
– Dosyaları siliyor (sayfa 75)
– Dosyaların dışa aktarımı (sayfa 75)
– Yeni resim/yazı tipi/vs. ekleme veya yeni boş dosyalar oluşturma (sayfa 75)
– Dosyaları yer değiştirme (sayfa 75)
– Biçim sayfalarını HTML dosyalarına etkin biçimde bağlama (sayfa 75)
• Bul & Değiştir (sayfa 75)
– Kaydedilmiş aramalar (sayfa 76)
– İşlev kipi (sayfa 76)
• Otomatik araçlar (sayfa 76)
– İçindekileri Düzenle (sayfa 76)
– Kitabı Kontrol Et (sayfa 78)
– Bir kapak ekle (sayfa 79)
– Başvurulan yazı tiplerinin gömülmesi (sayfa 79)
– Gömülü yazı tiplerini altkümeleme (sayfa 79)
– Noktalama işaretlerini toparlamak (sayfa 79)
– Kullanılmayan CSS kurallarını kaldırma (sayfa 79)
– HTML onar (sayfa 79)
– Dosyaların güzelleştirilmesi (sayfa 80)
– Satır Arası İçindekiler Ekle (sayfa 80)
– Anlamsal Ayarlar (sayfa 80)
– Süzgeç biçem bilgisi (sayfa 80)
• Kontrol noktaları (sayfa 80)
• Canlı Ön İzleme paneli (sayfa 83)
– HTML dosyalarının ayrılması (sayfa 84)
• Canlı CSS paneli (sayfa 85)
• Çeşitli Araçlar (sayfa 86)
– İçerik Tablosu Görünümü (sayfa 86)
– Kitaptaki kelimelerin yazım denetimi (sayfa 86)
– Özel karakter eklemek (sayfa 88)
– Kod denetleme görünümü (sayfa 88)
– Checking external links (sayfa 89)
– Dosyaları biçime göre klasörle (sayfa 89)
– Diğer e-kitap biçimlerindeki dosyaları EPUB olarak içe aktarma (sayfa 89)
– Raporlar aracı (sayfa 98)
• Kod düzenleyicideki özel özellikler (sayfa 99)
– Sözdizim vurgulama (sayfa 99)
– İçeriğe duyarlı yardım (sayfa 99)
– Otomatik tamamlama (sayfa 99)
– Kesitler (sayfa 100)
1.5.1 Temel iş akışı
70
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Not: Calibre düzenleyici için bir video tanıtımı şuradadır24 .
Kitap düzenleme aracıyla bir kitabı ilk defa açtığınızda, solda bir dosya listesiyle karşılanırsınız. Bunlar kitap içeriğini
oluşturan HTML dosyaları, biçem sayfaları, resimler vs. dir. Bir dosyayı düzenlemek için basitçe sağ tıklayın. Bir kaç
küçük düzeltmeden başka bir şeyler yapacaksanız, HTML eğitimi25 ve CSS Eğitimi26 bilmeniz gerektiğini unutmayın.
Düzenleyicide HTML veya CSS’e değişiklikler yaptıkça, değişiklikler canlı olarak sağdaki panelde ön izlenecektir.
Yaptığınız değişikliklerin görünümünden mutlu oldu olduğunuzda, Kaydet düğmesine tıklayın veya Dosya->Kaydet
yolunu kullanarak değişiklikleri e-kitaba kaydedin.
Bir faydalı özellik :guilabel:‘Denetim noktaları‘dır: Bir çok iddialı düzenleme yapmadan önce bir denetim noktası oluşturabilirsiniz. Denetim noktası, kitabınızın mevcut halini koruyacak ve yaptığınız değişiklikler hoşunuza
gitmezse gelecekte denetim noktasını oluşturduğunuz haline geri döndürecektir. Bir denetim noktası oluşturmak
için :guilabel:‘Değiştir->Denetim noktası oluştur‘kullanın. Denetim noktaları ayrıca genel arama ve değiştirme gibi
otomatik gereçler ne zaman çalıştırılırsa kendiliğinden oluşturulacaktır. Denetim noktası işlevselliği, farklı dosyaları
düzenlerken olağan Geri al/Yinele mekanizmasına ek bir özelliktir. Denetim noktaları kitaptaki bir çok dosyaya yayılmış değişikliklerde faydalıdır.
Kitap düzenleme için temel akış bu şekildedir – Bir dosya aç, değişiklikler yap, ön izle ve kaydet. Bu kılavuzun devamı
belirli görevleri efektif yapabilmeniz için mevcut çeşitli araçları ve özellikleri tartışacaktır.
24
25
26
http://calibre-ebook.com/demo#tutorials
http://html.net/tutorials/html/
http://html.net/tutorials/css/
1.5. E-kitap Düzenleme
71
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
72
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
1.5.2 Dosya Tarayıcı
1.5. E-kitap Düzenleme
73
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Dosya Tarayıcısı düzenlediğiniz kitap içindeki çeşitli dosyaların genel görünümünü verir. Dosyalar kategorilenmişlerdir, üstte metin (HTML) dosyaları, ardından stil (CSS) sayfaları şeklinde gider. Düzenlemeye başlamak için dosyaya
çift tıklayın. Düzenleme HTML, CSS ve resim dosyalarında desteklenir. Metin dosyalarının düzenlenme sırası okurken
görüntülenecek oldukları gibidir. Diğer tüm dosyalar alfabetik olarak ayarlanır.
Fareyi bir girdi üstünde gezdirerek boyutunu, ve ekranın altında dosyanın kitap içindeki tam yolunu görebilirsiniz.
E-kitaplar içindeki dosyaların sıkıştırılmış olduğunu unutmayın, yani kitabın son boyutu dosyaların boyutu toplamı
değildir.
Bir çok dosyanın kitapta özel anlamı vardır. Bunların genellikle isminin yanında bu özel anlamı gösteren bir simge
bulunur. Örneğin soldaki resim içinde, cover_image.jpg ve titlepage.xhtml dosyalarının yanlarında bir kapak simgesi
olduğunu görebilirsiniz, bu da onların kitap kapak resmi ve başlık sayfası olduğunu gösterir. Benzer olarak, content.opf
dosyası yanında da kitap metadatasını içerdiğini gösteren bir metadata simgesi vardır, toc.ncx dosyasının yanında da
bir T simgesi vardır, bu da İçindekiler olduğunu gösterir.
Tekli dosyalar üstünde bir çok hareketi sağ tıklayarak sağlayabilirsiniz.
Dosyaları yeniden adlandırma
Tek bir dosyayı sağ tıklayarak ve Yeniden adlandır seçerek yeniden adlandırabilirsiniz. Bir dosyayı yeniden adlandırmak kitapta ona olan tüm bağları ve referansları günceller. Yani tek yapmanız gereken yeni ismi sağlamaktır, gerisini
calibre halleder.
Ayrıca birden fazla dosyayı topluca yeniden adlandırabilirsiniz. Dosyaların basit bir isim kalıbında olmasını istiyorsanız faydalı olabilir. Örneğin tüm HTML dosyalarının Chapter-1.html, Chapter-2.html şeklinde isimlenmesini istiyor
olabilirsiniz. Bu durumda sağ tıklayıp :guilabel:‘Toplu yeniden adlandırma‘yı seçin. Bir ön ek ve otomatik numaralandırmanın hangi rakamdan başlamasını istiyorsanız girin, OK tıklayın ve hepsi bu kadar.
Dosyaları birleştirme
Bazen, iki HTML dosyasını veya iki CSS dosyasını beraber birleştirmek isteyebilirsiniz. Bazen herşeyin tek bir dosyada olması faydalı olabilir. Aklınızda olsun, fazla içeriği tek bir dosyaya koymak bu e-kitabı bir okyucuda okurken
performans problemlerine yol açabilir.
Birden çok dosyayı beraber birleştirmek için, Ctrl tuşuna basılı tutarak seçin (aynı biçimde dosyaları seçtiğinize emin
olun, ya tüm HTML dosyalarını ya tüm CSS dosyalarını vs.). Sonra sağ tıklayın ve birleştiri seçin. Hepsi bu, calibre
dosyaları birleştirir, birleştirilen dosyaya tüm bağlantı ve referansları da düzeltir. Dosyaların birleştirilmesinin bazen
metin biçiminin değişmesine yol açacağını unutmayın, her dosya değişik biçim sayfası içeriyor olabilir.
Metin dosyası sırası değiştirme
Kitabı okurken metin (HTML) dosyalarının hangi sırada açılacağını Dosya tarayıcısında basitçe sürükle bırak yaparak
ayarlayabilirsiniz. Teknik detay isteyenler için, buna kitap omurgasının yeniden sıralanması denir. Öğeleri diğerlerinin
arasına bırakmanız gerekir üstüne değil, alışana kadar bu iş biraz zor gelebilir.
Kapağı işaretleme
E-kitapların genelde bir kapak resmi olur. Bu resim Dosya Tarayıcısında resim isminin yanında kahverengi bir kitap
simgesi ile gösterilir. Kapak için başka bir resim ayarlamak isterseniz, dosyaya sağ tıklayıp :guilabel:‘Kapak olarak
işaretle‘yi seçebilirsiniz.
Ek olarak, EPUB dosyalarının bir başlık sayfası kavramı vardır. Başlık sayfası kitabın başlık sayfası/kapağı olarak
davranan bir HTML dosyasıdır. EPUB düzenlerken bir HTML dosyasını başlık sayfası olarak sağ tıklayarak ayarlayabilirsiniz. Seçtiğiniz dosyanın yalnızca kapak bilgisi içerdiğinden emin olun. Başka bir içeriği olursa, ilk bölüm
74
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
gibi, kullanıcı calibre’de bu EPUB’I başka bir biçime dönüştürdüğünde bu içerik silinir. Bunun sebebi dönüştürme
sırasında, calibre’nin işaretli başlık sayfasının sadece kapak bilgisi içerdiğini var saymasındandır.
Dosyaları siliyor
Dosyaları sağ tıklayarak ya da seçip Delete tuşuna basarak silebilirsiniz. Bir dosyayı silmek OPF dosyasından ona
olan tüm referansları da siler. Ancak başka yerlerdeki referanslar silinmez, Kitabı Kontrol Et aracını kullanarak bunları
kolayca silebilir/yer değiştirebilirsiniz.
Dosyaların dışa aktarımı
Dosyaları kitaptan bilgisayarınızdaki başka bir yere aktarabilirsiniz. Dosya üstünde özel olarak başka araçlarla çalışmak istiyorsanız faydalı olabilir. Bu işlem için dosyaya sağ tıklayın ve :guilabel:‘Dışa aktar‘ı seçin.
Dışa aktarılan dosya üstünde çalışmayı bitirdiğinizde, kitaba yeniden, dosyaya sağ tıklayıp :guilabel:‘Dosya ile yer
değiştir...‘i seçerek geri aktarabilirsiniz, bu da kitaptaki dosyayı daha önce dışa aktardığınız dosyayla değiştirmenize
olanak verir.
Yeni resim/yazı tipi/vs. ekleme veya yeni boş dosyalar oluşturma
Dosya->Yeni dosya tıklayarak bilgisayarınızdan yeni resim, yazı tipi, biçim sayfası vs. ekleyebilirsiniz. Bu size
ya :guilabel:‘Kaynak dosyası içe aktar‘ı tıklayarak dosya içe aktarmanız ya da yeni boş bir html dosyası ya da biçim dosyasını basitçe yeni dosya için açılan kutuya ismini yazarak oluşturmanız olanağını verir.
Ayrıca birden çok dosyayı tek seferde Dosya->Dosya içe aktar ile kitaba aktarabilirsiniz.
Dosyaları yer değiştirme
Kitapta mevcut dosyaları sağ tıklayıp yer değiştiri seçerek kolayca değiştirebilirsiniz. Değiştirilen dosyanın farklı bir
adı varsa, bu işlem tüm referansları ve bağlantıları da günceller.
Biçim sayfalarını HTML dosyalarına etkin biçimde bağlama
Kolay bir yöntem olarak, birden çok HTML dosyasını Dosya Tarayıcı ile seçebilir, sağ tıklayıp Biçim dosyalarını bağlamayı seçerek calibre’nin otomatik olarak seçilen tüm HTML dosyalarında bu biçim dosyaları için <link> etiketlerini
eklemesini sağlayabilirsiniz.
1.5.3 Bul & Değiştir
Kitap Düzenlenin mevcut dosyada, tüm dosyalar içinde veya belli bir bölgede arama ve metin değiştirme yapmanıza
imkan veren çok güçlü bir arama ve yer değiştirme arayüzü vardır. Normal arama veya düzenli ifadelerle arama
yapabilirsiniz. Gelişmiş arama için düzenli ifadelerin nasıl kullanılacağını öğrenmek için bknz Calibre’de düzenli
ifadeleri kullanmak hakkında herşey (sayfa 164).
1.5. E-kitap Düzenleme
75
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Aramayı başlatın ve Ara->Bul/değiştir menü girdisi ile yer değiştirin (HTML veya CSS dosyası düzenliyor olmalısınız).
Bulmak istediğiniz metni Arama kutusuna yazın ve Yer değiştir kutusuna da değiştirilecek halini. Sonraki eşleşmeyi
bulmak için uygun düğmelere tıklayabilir, mevcut eşleşmeyi veya tüm eşleşmeleri değiştirebilirsiniz.
Kutunun altındaki açılır menülerden, aramanın mevcut dosya, tüm metin dosyaları, tüm biçim dosyaları veya tüm
dosyalar üzerinde çalışmasını sağlayabilirsiniz. Ayrıca arama kipini normal (karakter dizisi) arama veya düzenli ifade
arama olarak seçebilirsiniz.
Bir arama için tüm eşleşmeleri Ara->Hepsini say ile sayabilirsiniz. Sayma açılır kutudan hangi dosyaları/bölgeleri
seçtiyseniz onlar üzerinde çalışır.
Ayrıca o an açık düzenleyicide belirli bir satıra Ara->Satıra git ile gidebilirsiniz.
Not: Unutmayın, arama ve yer değiştirmenin tüm gücünü toplamak için, düzenli ifadeler kullanmanız gerekir. Bknz
Calibre’de düzenli ifadeleri kullanmak hakkında herşey (sayfa 164).
Kaydedilmiş aramalar
Çokça kullandığınız arama/yer değiştirme ifadelerini kaydedip birden fazla kez kullanabilirsiniz. Bir aramayı kaydetmek için Ara kutusuna sağ tıklayıp :guilabel:‘Mevcut aramayı kaydet‘i seçin.
Kaydedilmiş aramalar iletişim penceresini Ara->Kaydedilen Aramalar ile getirebilirsiniz. Bu işlem uygulayabileceğiniz arama ve yer değiştirme ifadelerini getirir. Ctrl Tuşunu basılı tutarak listeden birden çok girdiyi de seçebilir ve
birden çok arama yer değiştirme işlemini tek seferde gerçekleştirebilirsiniz.
İşlev kipi
İşlev kipi her Arama/yer değiştirmede çalıştırılacak güçlü python fonksiyonları yazmanızı sağlar. İşlev kipinde istediğiniz gibi metinle oynayabilirsiniz. Daha fazla bilgi için, bknz Düzenleyicide Arama & Değiştirme için Fonksiyon
Kipi (sayfa 89).
1.5.4 Otomatik araçlar
Kitap düzenlenin yaygın görevlerle ilgili bir çok aracı vardır. Bunlara Araçlar menüsü ile erişebilirsiniz.
İçindekileri Düzenle
İçindekileri kolayca düzenlemek için özel bir araç vardır. Araçlar->İçindekiler->İçindekileri Düzenle ile başlatabilirsiniz.
76
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
İçindekileri Düzenle aracı solda mevcut (eğer varsa) İçindekileri gösterir. Metnini değiştirmek için herhangi bir girdiye
çift tıklayın. Ayrıca girdileri sağdaki düğmeleri kullanarak veya sürükle bırak yaparak yeniden düzenleyebilirsiniz.
Mevcut bir İçindekileri olmayan kitaplar için, bu araç size metinden otomatik İçindekiler oluşturmanız için çeşitli
seçenekler sunar. Belgedeki başlıklardan, bağlantılardan, dosyalardan vs İçindekiler oluşturabilirsiniz.
Girdileri tıklayıp Bu girdinin gösterdiği konumu değiştir ile düzenleyebilirsiniz. Bu işlem kitabın küçük bir ön izlemesini açar, basitçe fare işaretçisini kitap görüntüleme paneli üzerinde hareket ettirin ve girdinin göstermesini istediğiniz
noktaya tıklayın. Kalın bir yeil çizgi konumu gösterecektir. Konumdan memnun olduğunuzda OK tıklayın.
1.5. E-kitap Düzenleme
77
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Kitabı Kontrol Et
Kitabı Kontrol Et aracı kitabınızı gerçek okuyucu cihazlarda oluşabilecek problemlere karşı arar. Etkinleştirmek için
Araçlar->Kitabı Kontrol Et kullanın.
Bulunan tüm problemler güzel, kullanımı kolay bir listede raporlanır. Listedeki herhangi bir girdiye tıklamak bu hata
hakkında biraz yardım ve bu hatayı mümkünse otomatik düzeltme seçeneği sunar. Hataya çift tıklayarak hatanın
bulunduğu noktayı düzenleyicide açabilir, kendiniz düzeltebilirsiniz.
Gerçekleştirilen kontrollerden bazıları:
• Bozuk HTML işaretçileri. İyi biçimlenmiş XML olarak ayrıştırılamayan tüm HTML işaretçileri raporlanır. Düzeltilmesi biçimlemenizin tüm bağlamda olması gibi çalıştığını garantiler. calibre bu hataları otomatik düzeltebilir, ama otomatik düzeltmenin beklenmedik etkileri olabilir, dikkatli kullanın. Her zaman olduğu gibi, otomatik
düzeltmeden önce bir kontrol noktası oluşturulur ki kolayca geri dönebilin. Otomatik düzeltme işaretçilerin
oldukça hata payı bırakan HTML5 algoritmasıyla ayrıştırılmasıyla, ardından XML’e dönüştürülmesiyle yapılır.
78
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
• Bozuk ya da bilinmeyen CSS biçimi. Geçerli olmayan veya CSS 2.1 standardında (CSS 3’den de bir kaç tane
eklenerek) tanımlanmayan özellikler içeren herhangi bir CSS raporlanır. CSS tüm biçim dosyalarında, satır arası
özniteliklerde ve HTML dosyalarındaki <style> etiketlerinde kontrol edilir.
• Kırık bağlantılar. Kitap içinde eksik ya da bulunmayan dosyaları gösteren bağlantılar varsa raporlanır.
• Referansı olmayan dosyalar. Başka bir dosya tarafından referans edilmeyen veya omurgada olmayan dosyalar
raporlanır.
• OPF dosyalarında kopya omurga veya manifesto öğeleri, kırık idref’ler veya meta kapak etiketleri, eksik gerekli
kısımlar vs.
• Kitabın okuyucu cihazlarda bozuk çalışmasına sabep olacak bilinen problemlere uyumluluk kontrolleri.
Bir kapak ekle
Araçlar->Kapak ekle kullanarak kitaba kolaylıkla bir kapak ekleyebilirsiniz. Bu işlem mevcut bir resmi seçip kapak
yapmanızı veya yeni bir resmi içe aktarıp kapak yapmanızı sağlar. EPUB dosyalarını düzenlerken, kapak için HTML
kapsayıcı otomatik üretilir. Kitapta mevcut bir kapak bulunursa, yer değiştirilir. Araç ayrıca OPF’de kapak dosyalarını
düzgünce işaretleme işini de otomatik halleder.
Başvurulan yazı tiplerinin gömülmesi
Araçlar->Başvurulan fontları göm ile erişilen bu araç kitapta başvurulan tüm yazı tiplerini bulur ve gömülü değillerse,
bilgisayarınızda arama yapar ve bulunursa kitaba gömer. Bu işlemi yapmadan ticari yazı tiplerini gömmek için gerekli
izniniz olduğundan emin olun lütfen.
Gömülü yazı tiplerini altkümeleme
Araçlar->Gömülü yazı tiplerini altkümele ile erişilen bu araç, kitaptaki tüm yazı tiplerini kitapta gerçekten mevcut
olan kabartmaları içerecek şekilde eksiltir. Bu işlem genellikle yazı tipi dosyalarının boyutunu ~ 50% azaltır. Ancak
yazı tipleri altkümelendikten sonra, daha önce altkümede mevcut olmayan bir yazı tipi eklerseniz, yazı tipi yeni metin
için çalışmayacaktır. Yani bunu iş akışında son adım olarak yapın.
Noktalama işaretlerini toparlamak
Düz metin tire işaretlerini, elipsleri, tırnakları, çift çizgileri, vs. tipografik olarak düzgün denklerine dönüştür. Algoritmanın bazen yanlış sonuç üretebileceğini not edin, özellikle daraltmanın başında tek tırnak işaretleri varken.
Araçlar->Noktalama işaretlerini toparla ile erişlebilir.
Kullanılmayan CSS kurallarını kaldırma
Remove all unused CSS rules from stylesheets and <style> tags. Some books created from production templates can
have a large number of extra CSS rules that don’t match any actual content. These extra rules can slow down readers
that need to process them all. Accessed via Tools->Remove unused CSS.
HTML onar
Bu araç XML olarak ayrıştırılamayan HTML’yi iyi biçimlenmiş XML’e döndürür. E-kitaplarda iyi biçimlenmemiş
XML oldukça yaygındır, bu araç bu tarz HTML’yi düzeltme işini otomatik hale getirir. Araç HTML’yi HTML5 algoritmasıyla ayrıştırır (tüm modern tarayıcılarda kullanılan algoritma) sonucu XML’e dönüştürür. Otomatik düzeltmenin
1.5. E-kitap Düzenleme
79
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
beklenmeyen sonuçları olabilir. Tercih ederseniz, yukarıda bahsedilen Kitabı Kontrol Et aracını kullanarak HTML’deki
problemleri düzeltebilirsiniz. Araçlar->HTML’yi Düzelt ile erişilebilir.
Dosyaların güzelleştirilmesi
This tool is used to auto-format all HTML and CSS files so that they “look pretty”. The code is auto-indented so that
it lines up nicely, blank lines are inserted where appropriate and so on. Note that beautifying also auto-fixes broken
HTML/CSS. Therefore, if you don’t want any auto-fixing to be performed, first use the Check Book tool to correct all
problems and only then run beautify. Accessed via Tools->Beautify all files.
Not: HTML’de her metin CSS boş satır bildirimi ile çok miktarda boşluk içerebilir. Yani güzelleştirme işlemi
HTML’nin gerçeklenmesini değiştirebilir. Bundan olabildiğince kaçınmak için, güzelleştirme algoritması yalnızca
diğer blok seviyesinde etiketleri içeren blok seviyesi etiketleri güzelleştirir. Yani örneğin, <p> etiketi içindeki metnin boşlukları değiştirilmez. Ama sadece başka <p> ve <div> etiketlerini içeren <body> etiketi güzelleştirilir. Bu,
uygun blok seviyesi etiketi olmadığı için bazı dosyalar güzelleştirmeden hiç etkilenmiyor anlamına da gelir. Böyle
durumlarda daha az dikkatli değişik güzelleştirme araçları kullanabilirsiniz, örneğin: HTML Tidy27 .
Satır Arası İçindekiler Ekle
Normalde e-kitaplarda, İçindekiler ana metinden ayrıdır ve e-kitap okuma aygıtında özel bir İçindekiler düğmesi/menüsü ile erişilir. calibre’nin kitabın metninin bir parçası olacak olan satır arası bir İçindekileri otomatik olarak
üretmesini sağlayabilirsiniz. Mevcut tanımlanmış İçindekiler temel alınarak üretilecektir.
Bu aracı birden fazla kullanırsanız, her çalıştırmada bir öncekinde oluşturulan İçindekiler yer değiştirecektir. Araca
Araçlar->İçindekiler->Satır Arası İçindekiler Ekle ile erişilebilir.
Anlamsal Ayarlar
Bu araç EPUB dosyalarında anlamsal ayarlar yapmak için kullanılır. Anlamsallar basitçe, OPF dosyasında kitapta
özel anlama sahip belirli konumları ayırt eden bağlantılardır. Önsöz, kapak, ithaf, içindekiler vs. tanımlamak için
kullanabilirsiniz. Belirtmek istediğiniz anlamsal bilgi türünü seçin ve kitapta göstermesini istediğiniz noktayı seçin.
Bu araca Araçlar->Anlamsal Ayarlar ile erişebilirsiniz.
Süzgeç biçem bilgisi
Bu araç tüm kitaptan belirtilen CSS biçem özelliklerini kolayca çıkarmak için kullanılabilir. Kaldırılmasını istediğiniz
özellikleri sölyeyebilirsiniz, örneğin color, background-color, line-height ve bulundukları her yerden
kaldırılırlar — biçem dosyaları, <style> etiketleri ve satır arası style öznitelikleri.
1.5.5 Kontrol noktaları
Checkpoints are a way to mark the current state of the book as “special”. You can then go on to do whatever changes
you want to the book and if you don’t like the results, return to the checkpointed state. Checkpoints are automatically
created every time you run any of the automated tools described in the previous section.
Düzenle->Kontrol noktası oluştur ile bir kontrol noktası oluşturabilirsiniz. Önceki bir kontrol noktasına da Düzenle>Geri al... ile dönebilirsiniz.
27
80
http://infohound.net/tidy/
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Kontrol noktası işlevi normal Geri al/yinele mekanizmasına ek olarak getirilmiştir. Kontrol noktaları değişiklikler
kitapta birden çok dosyaya yayıldığında veya birbiriyle ilişkili büyük değişikliklerden önceye dönmek istediğinizde
özellikle faydalıdır.
Görünüm->Kontrol noktaları ile uygun kontrol noktası listesini görebilirsiniz. Kitabın mevcut durumunu belirtilen bir
kontrol noktası ile E-kitapları Karşılaştırmak (sayfa 100) aracı ile karşılaştırabilirsiniz – ilgilenilen kontrol noktasını
seçip Karşılaştır düğmesine tıklayarak. Geri al düğmesi kitabı seçili kontrol noktasına kontrol noktası oluşturulduktan
sonra yapılan tüm değişiklikleri geri alarak geri yükler.
1.5. E-kitap Düzenleme
81
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
82
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
1.5.6 Canlı Ön İzleme paneli
1.5. E-kitap Düzenleme
83
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Dosya Ön izleme canlı ön izleme panelinde çeşitli dosyalara yaptığınız değişikliklerin canlı olarak görünümünü (bir ya
da iki saniye gecikme ile) verir. HTML veya CSS dosyaları düzenlerken, ön izleme paneli otomatik olarak güncellenip
değişikliklerinizi yansıtır. İşaretçiyi düzenleyici etrafında gezdirdiğinizde, ön izleme paneli konumunu takip ederek
kitapta denk gelen konumu gösterir. Ön izleme paneline tıklama, işaretçinin tıklanan öğe üstüne konumlanmasına
sebep olur. Kitapta başka bir dosyayı gösteren bir bağlantıya tıklarsanız, bu dosya otomatik olarak düzenleme ve ön
izleme panelinde açılır.
Değişikliklerin canlı izlenmesi ve otomatik konum eş zamanlamayı – ön izleme paneli altındaki düğmelerle kapatabilirsiniz. Ön izleme panelinin canlı güncellemesi sadece düzenleyicide yazmadığınız zaman yapılır, böylece dikkatinizi
dağıtmaz ve yavaşlatmaz, ön izlemenin gerçeklenmesini bekler.
Ön izleme paneli metnin görüntülendiğinde nasıl görüneceğini gösterir. Ancak ön izleme paneli kitabınızı gerçek bir
okuma aygıtında test etmenin yerini tutmaz. Gerçek bir okuyucudan hem daha çok hem daha az kapasitelidir. Bir çok
okuyucu aygıttan daha fazla hatalara ve bozuk işaretçilere toleransı vardır. Ayrıca size sayfa kenar boşluklarını, sayfa
sonlarını ve yazı tipi örtüştüren gömülü yazı tiplerini göstermez. Kitap üstünde çalışırken ön izleme panelini kullanın,
ama işiniz bittiğinide, gerçek bir cihaz ya da yazılım öykünücüsünde görüntüleyin.
Not: Ön izleme paneli yazıtipi dosyası içindeki yazı tipi ismi CSS @font-face kuralındaki isimle uyuşmazsa gömülü
yazı tiplerini desteklemez. Bu tarz yazı tipi sorunlarını Kitabı Kontrol Et aracını kullanarak hızlıca bulup düzeltebilirsiniz.
HTML dosyalarının ayrılması
Ön izleme panelinin belki de pek açık olmayan bir kullanımı da uzun HTML dosyalarını ayırmasıdır. Ayırmak is-
altındaki :guilabel:‘ayırma kipi‘ne tıklayın. Sonra dosyayı
tediğiniz dosyayı görüntülerken, ön izleme paneli
nerden ayırmak istiyorsanız fareyi üzerine getirin ve tıklayın. Yeşil kalın bir çizgi fareyi hareket ettirdiğinizde nerden
ayrılacağını gösterecek şekilde belirecektir. İstediğiniz konumu bulduğunuzda, tıklayın ve ayrılma gerçeleşecektir.
Dosyayı ayırmak dosyanın alt yarısını gösteren tüm bağlantıların ve referansların otomatik güncellenmesini ve ayrılan
kısmın yeni dosya düzenleyicide açılmasını sağlar.
Tek bir HTML dosyasını birden çok konumdan otomatik olarak düzenleyicideki dosyaya sağ tıklayıp Birden fazla
konumdan ayır seçerek ayırabilirsiniz. Bu işlem büyük bir dosyayı tüm başlık etiketlerinde veya belli sınıfta etikete
sahip her yerde ayırma imkanı sağlar.
84
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
1.5.7 Canlı CSS paneli
Canlı CSS paneli o an düzenlediğiniz etikete uygulanabilir tüm biçim kurallarını gösterir. Etiket adı, düzenleyicideki
satırı ile birlikte gösterilir, ardından eşleşme kuralları listesi gelir.
Herhangi bir etikete hangi biçim kurallarının uygulandığını görmek için çok iyi bir yöntemdir. Görünüm ayrıca tıklanabilir bağlantılar (mavi renkte) içerir, bu bağlantılar biçim kurallarında değişiklik yapmak isterseniz biçimin tanımlandığı noktaya doğrudan götürür. Doğrudan etikete uygulanan biçim kuralları ana etiketlerden miras alınan kurallarla
birlikte gösterilir.
Panel ayrıca etiket için hesaplanan son biçimleri de gösterir. Daha yüksek öncelikli kurallarca önüne geçilen özellikler
üzeri çizili olarak gösterilir.
1.5. E-kitap Düzenleme
85
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Canlı CSS panelini Görünüm->Canlı CSS ile etkinleştirebilirsiniz.
1.5.8 Çeşitli Araçlar
Kitabı düzenlerken faydalı olabilecek bir kaç araç daha var.
İçerik Tablosu Görünümü
The Table of Contents view shows you the current table of contents in the book. Double clicking on any entry opens
the place that entry points to in an editor. You can right click to edit the Table of Contents, refresh the view or
expand/collapse all items. Access this view via View->Table of Contents.
Kitaptaki kelimelerin yazım denetimi
You can run a spelling checker via Tools->Check spelling.
86
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Kelimeler kitapta kaç kere geçtikleri ve hangi dilden olduklarıyla gösterilirler. Dil bilgisi kitabın metadatasından ve
HTML dosyalarındaki lang özniteliğinden alınır. Bu da birden çok dil içeren kitaplarda bile yazım denetiminin
çalışmasına olanak verir. Örneğin, aşağıdaki HTML çıktısında, color kelimesi Amerikan İngilizcesiyle, colour kelimesi
İngiliz İngilizcesiyle kontrol edilir:
=
{}=
[email protected]
=0=1=2=0=1=2\PYGZlt{}div lang=\PYGZdq{}en\PYGZus{}US\PYGZdq{}\PYGZgt{}color \PYGZlt{}span lang=\PYGZdq
Not: Bir kelimeye çift tıklayarak düzenleyicide sonraki konumunu vurgulayabilirsiniz. Kelimeyi elle düzenlemek
istiyorsanız, veya hangi içerikte bulunduğunu görmek istiyorsanız faydalıdır.
Bir kelimeyi değiştirmek için, sağdaki önerilen yazımlardan birine çift tıklayın, veya kendi düzeltilmiş yazımınızı
1.5. E-kitap Düzenleme
87
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
yazın ve Seçili kelimeyi değiştir düğmesine tıklayın. Bu işlem kelimeyi tüm kitapta değiştirir. Ayrıca ana kelime listesindeki bir kelimeye sağ tıklayarak sağ tık menüsünden kolayca değiştirebilirsiniz.
Yazım denetiminin mevcut oturum için bir kelimeyi göz ardı etmesini Yoksay düğmesi ile sağlayabilirsiniz. Ayrıca Sözlüğe ekle düğmesiyle bir kelimeyi sözlüğe ekleyebilirsiniz. Yazım denetimi birden çok kullanıcı sözlüğünü destekler,
yani kelimenin ekleneceği sözlüğü de seçebilirsiniz.
Ayrıca yazım denetiminin kitaptaki, sadece yanlış olanlar değil, tüm kelimeleri göstermesini sağlayabilirsiniz. Kitabınızdan hangi kelimelere en sık rastlandığını görmek için ve belli kelimeler için arama ve değiştirme çalıştırmak için
faydalıdır.
Not: Yazım denetim aracı açıkken kitapta dosyaları düzenleyerek değişiklik yaparsanız, yazım denetimi aracındaki
Tazele düğmesine tıklamanız gerekir. Bunu yapmadan yazım denetimi kullanmaya devam ederseniz, düzenleyicide
yaptığınız değişiklikleri kaybedebilirsiniz.
Yeni sözlük ekleme
The spelling checker comes with builtin dictionaries for the English and Spanish languages. You can install your
own dictionaries via Preferences->Editor->Manage spelling dictionaries. The spell checker can use dictionaries from
the LibreOffice program (in the .oxt format). You can download these dictionaries from The LibreOffice Extensions
repository28 .
Özel karakter eklemek
Yazması zor karakterleri Düzenle->Özel karakter ekle ile ekleyebilirsiniz. Bu size tüm evrensel kod karakterlerini
gösterir, basitçe yazmak istediğiniz karaktere tıklayın. Tıklarken Ctrl tuşuna basılı tutarsanız, karakter eklendikten
sonra pencere kapatılır. Bu araç ana metinde ya da Ara ve yer değiştir aracı gibi kullanıcı arayüzündeki herhangi başka
bir alanda kullanılabilir.
Bir çok karakter olduğundan, ilk önce gösterilmesi için kendi Sık kullanılanlar karakterlerinizi belirtebilirsiniz. Basitçe
bir karaktere sağ tıklayıp sık kullanılan olarak işaretleyin. Ayrıca sık kullanılanlardan kaldırmak için sık kullanılanlardaki bir karaktere sağ tıklayabilirsiniz. Son olarak, karakterlerin sırasını Sık kullanılanları yeniden düzenle düğmesine
tıklayarak ve karakterleri sürükle bırak yaparak ayarlayabilirsiniz.
Klavye kullanarak da doğrudan özel bir karakter yazabilirsiniz. Bunu yapmak için, karakterin evrensel kodunu (onaltılık olarak) girin ve yazılmış kodu karşılık geldiği karaktere çevirecek olan Alt+X e basın. Örneğin, ÿ yazmak için ff
yazar sonra da Alt+X basarsınız. Satır başı yapmayan bir boşluk için a0 ve ardından Alt+X, yatay elips için 2026 ve
yine ardından Alt+X.
Son olarak, HTML isimlendirilmiş birimleri kullanarak da özel karakterleri girebilirsiniz. Örneğin &nbsp; yazmak
noktalı virgülü girdiğinizde bir boşlukla değişmesini sağlar. Yer değiştirme yalnızca noktalı virgülü yazarken gerçekleşir.
Kod denetleme görünümü
Bu görünüm ilgilenilen mevcut öğeye uygulanan CSS ve HTML kodunu gösterir. Ön izleme panelinde bir yere sağ
tıklayıp Denetle seçerek açabilirsiniz. Bu öğe için HTML kodunu görmenin yanında, daha da önemli olarak CSS biçimlerini de görürsünüz. Dahası, biçimleri düzenleyebilir ve değişikliklerinizin getirdiği etkileri anında görebilirsiniz.
Biçimi düzenlemenin kitap içeriğinde değişiklik yapmayacağını not edin, yalnızca hızlıca deneyler yapmaya izin verir.
Denetleyici içinde canlı düzenleme yapma işlevi geliştirme altındadır.
28
88
http://extensions.libreoffice.org/extension-center?getCategories=Dictionary&getCompatibility=any&sort_on=positive_ratings
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Checking external links
You can use this tool to check all links in your book that point to external websites. The tool will try to visit every
externally linked website, and if the visit fails, it will report all broken links in a convenient format for you to fix.
Dosyaları biçime göre klasörle
Genellikle başka bir yerden aldığınız EPUB dosyalarını düzenlerken EPUB içindeki dosyaların değişik alt dizinlerde
rastgele ayarlanmış olduğunu görürsünüz. Bu araç tüm dosyaları biçimlerine göre otomatik olarak alt dizinlere taşımanızı sağlar. Araçlar->Dizinlere ayarla ile erişebilirsiniz. Bu araç yalnızca EPUB içindeki dosyaların nasıl ayarlandığını
değiştirir, Dosya Tarayıcısında nasıl görüntülendiklerini değil.
Diğer e-kitap biçimlerindeki dosyaları EPUB olarak içe aktarma
Düzenleyici başka bir e-kitap biçimindeki dosyaları tam bir dönüştürmeye sokmadan EPUB olarak içe aktarmayı
destekler. Özellikle kendi elle düzenlenmiş HTML dosyalarınızdan EPUB dosyaları oluşturmak için faydalıdır. Bu
işlemi Dosya->HTML veya DOCX dosyasını yeni kitap olarak içe aktar ile yapabilirsiniz.
Düzenleyicide Arama & Değiştirme için Fonksiyon Kipi
Düzenleyicideki Arama & Değiştirme aracı bir fonksiyon kipini destekler. Bu kipte, düzenli ifadeleri (bknz Calibre’de
düzenli ifadeleri kullanmak hakkında herşey (sayfa 164)) güçlü python fonksiyonlarıyla birleştirip her çeşit gelişmiş
metin işlemeyi gerçekleştirebilirsiniz.
Arama ve değiştirme için standart düzenli ifade kipinde, hem arama için bir düzenli ifade hem tüm bulunan eşleşmeleri
değiştirmek için bir şablon belirtirsiniz. Fonksiyon kipinde, sabit bir şablon kullanmak yerine, python programlama
dilinde29 keyfi bir fonksiyon belirtirsiniz. Bu basit şablonlarla yapamayacağınız bir sürü şeyi yapmanızı sağlar.
Fonksiyon kipi ve söz dizimi kullanım teknikleri örneklerle açıklanacak, gittikçe zorlaşan görevleri fonksiyon kipiyle
nasıl yapacağınız gösterilecektir.
Belgedeki başlık büyük küçük harflerinin otomatik düzeltilmesi Burda, düzenleyicideki dahili fonksiyonlardan
birini göz önüne alıp başlık etiketleri içindeki tüm metnin harflerini nasıl otomatik olarak başlık boyutuna değiştireceğimize bakacağız:
=
{}=
[email protected]
=0=1=2=0=1=2Find expression: \PYGZlt{}([Hh][1\PYGZhy{}6])[\PYGZca{}\PYGZgt{}]*\PYGZgt{}.+?\PYGZlt{}/\P
Fonksiyon için, basitçe Başlık-büyük küçük harfli metin (etiketleri yoksay) dahili fonksiyonunu seçin. Bu: <h1>bir
BAŞLIK</h1> gibi görünen başlıkları <h1>Bir Başlık</h1> şekline çevirir. Başlık etiketleri içinde başka
HTML etiketleri olsa bile çalışır.
29
https://docs.python.org/2.7/
1.5. E-kitap Düzenleme
89
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
İlk özel fonksiyonunuz - akıllı tireler Fonksiyon kipinin asıl gücü metni keyfi şekillerde işlemenizi sağlayan kendi
fonksiyonlarınızı yazabilmenizden gelir. Düzenleyicideki Akıllı Noktalama aracı bağımsız tirelere dokunmaz, yani bu
fonksiyonu kullanarak onları uzun tirelerle değiştirebilirsiniz.
Yeni bir fonksiyon oluşturmak için, Oluştur/Düzenle düğmesine tıklayıp yeni bir fonksiyon oluşturun ve aşağıdaki
python kodunu kopyalayın.
=
{}=
[email protected]
=0=1=2=0=1=2\PYG{k}{def} \PYG{n+nf}{replace}\PYG{p}{(}\PYG{n}{match}\PYG{p}{,} \PYG{n}{number}\PYG{p}{
\PYG{k}{return} \PYG{n}{match}\PYG{o}{.}\PYG{n}{group}\PYG{p}{(}\PYG{p}{)}\PYG{o}{.}\PYG{n}{repla
Her Arama & Değiştirme özel fonksiyonunun benzersiz bir ismi ve yukarıda gösterilen tüm bağımsız değişkenleri
kabul eden replace adında bir python fonksiyonu olmalı. Şimdilik replace() fonksiyonuna giden tüm farklı değişkenler ile ilgilenmeyeceğiz. Yalnızca match() bağımsız değişkenine odaklanın. Bir arama değiştirme sırasındaki
eşleşmeyi ifade eder. Tam belgeleri buradadır30 . match.group() basitçe eşleşen tüm metni döndürür ve tek yaptığımız bu metindeki tireleri uzun tire ile değiştirmektir, önce çift tireleri ardından tek tireleri değiştirerek.
Bu fonksiyonu arama düzenli ifadesi ile kullanın:
=
{}=
[email protected]
=0=1=2=0=1=2\PYGZgt{}[\PYGZca{}\PYGZlt{}\PYGZgt{}]+\PYGZlt{}
Tüm tireleri uzun tire ile değiştirecektir, ama yalnızca asıl metin içinde HTML etiket tanımlarında değil.
Fonksiyon kipinin gücü - yanlış tirelenmiş kelimeler için bir yazım denetim sözlüğü kullanmak Genellikle,
basılı kitaplardan taranarak oluşturulan e-kitaplar yanlış tirelenmiş kelimeler içerir – basılı kitapta satır sonunda bölünmüş kelimeler gibi. Bu tür kelimeleri otomatik olarak bulup düzeltecek basit bir fonksiyon yazacağız.
=
{}=
[email protected]
=0=1=2=0=1=2\PYG{k+kn}{import} \PYG{n+nn}{regex}
\PY
\PYG{k+kn}{from} \PYG{n+nn}{calibre} \PYG{k+kn}{import} \PYG{n}{prepare\PYGZus{}string\PYGZus{}for\PY
\PYG{k}{def} \PYG{n+nf}{replace}\PYG{p}{(}\PYG{n}{match}\PYG{p}{,} \PYG{n}{number}\PYG{p}{,} \PYG{n}{
\PYG{k}{def} \PYG{n+nf}{replace\PYGZus{}word}\PYG{p}{(}\PYG{n}{wmatch}\PYG{p}{)}\PYG{p}{:}
\PYG{c}{\PYGZsh{} Try to remove the hyphen and replace the words if the resulting}
\PYG{c}{\PYGZsh{} hyphen free word is recognized by the dictionary}
\PYG{n}{without\PYGZus{}hyphen} \PYG{o}{=} \PYG{n}{wmatch}\PYG{o}{.}\PYG{n}{group}\PYG{p}{(}\
\PYG{k}{if} \PYG{n}{dictionaries}\PYG{o}{.}\PYG{n}{recognized}\PYG{p}{(}\PYG{n}{without\PYGZu
\PYG{k}{return} \PYG{n}{without\PYGZus{}hyphen}
\PYG{k}{return} \PYG{n}{wmatch}\PYG{o}{.}\PYG{n}{group}\PYG{p}{(}\PYG{p}{)}
\PYG{c}{\PYGZsh{} Search for words split by a hyphen}
\PYG{n}{text} \PYG{o}{=} \PYG{n}{replace\PYGZus{}entities}\PYG{p}{(}\PYG{n}{match}\PYG{o}{.}\PYG{
\PYG{n}{corrected} \PYG{o}{=} \PYG{n}{regex}\PYG{o}{.}\PYG{n}{sub}\PYG{p}{(}\PYG{l+s}{r\PYGZsq{}}
\PYG{k}{return} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{\PYGZgt{}}\PYG{l+s+si}{\PYGZpc{}s}\PYG{l+s}{\PYGZlt
Bu fonksiyonu aynı bulma ifadesi ile kullanın, açmak gerekirse:
=
{}=
[email protected]
30
90
https://docs.python.org/2.7/library/re.html#match-objects
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
=0=1=2=0=1=2\PYGZgt{}[\PYGZca{}\PYGZlt{}\PYGZgt{}]+\PYGZlt{}
Böylece kitap metnindeki tüm yanlış tirelenmiş kelimeleri sihirli bir şekilde düzeltecektir. Ana nokta replace fonksiyonuna verilen kullanışlı bir ek bağımsız değişken olan dictionaries. Bu düzenleyicinin kitap metninde yazım
denetimi yaptığı sözlükleri kasteder. Bu fonksiyonun yaptığı ise bir tire ile ayrılmış kelimelere bakmak, tireyi kaldırmak ve karma kelimenin sözlük tarafından tanınıp tanınmadığına bakmaktır, eğer tanınıyorsa asıl kelimeler tire
olmayan karma kelimelerle değiştirilir.
Bu tekniğin kısıtlarından biri yalnızca tek dilli kitaplarda çalışacak olmasıdır, çünkü var sayılan olarak,
dictionaries.recognized() kitabın ana dilini kullanır.
Kısımların otomatik numaralandırılması Şimdi biraz daha farklı bir şey göreceğiz. HTML dosyanızın birçok
kısmı olduğunu farz edin, her biri bir <h2> etiketi içinde <h2>Bir metin</h2> gibi görünen başlıkla. Özel bir
fonksiyon oluşturup bu başlıkları otomatik olarak sıralı numaralar şeklinde numaralandırabilirsiniz, böylece <h2>1.
Bir metin</h2> olarak görünürler.
=
{}=
[email protected]
=0=1=2=0=1=2\PYG{k}{def} \PYG{n+nf}{replace}\PYG{p}{(}\PYG{n}{match}\PYG{p}{,} \PYG{n}{number}\PYG{p}{
\PYG{k}{return} \PYG{n}{match}\PYG{o}{.}\PYG{n}{group}\PYG{p}{(}\PYG{l+m+mi}{1}\PYG{p}{)} \PYG{o}
\PYG{c}{\PYGZsh{} Ensure that when running over multiple files, the files are processed}
\PYG{c}{\PYGZsh{} in the order in which they appear in the book}
\PYG{n}{replace}\PYG{o}{.}\PYG{n}{file\PYGZus{}order} \PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{spine}
Arama ifadesiyle birlikte kullanın:
=
{}=
[email protected]
=0=1=2=0=1=2(?s)(\PYGZlt{}h2[\PYGZca{}\PYGZlt{}\PYGZgt{}]*\PYGZgt{})(.+?\PYGZlt{}/h2\PYGZgt{})
İmleci dosyanın üstüne konumlandırın ve Hepsini değiştir tıklayın.
Bu fonksiyon replace() fonksiyonuna ek başka kullanışlı bir bağımsız değişken kullanır: number değişkeni.
Hepsini değiştir yaparken sayı otomatik olarak her başarılı eşleşmede artırılır.
Yeni başka bir özellik replace.file_order kullanımıdır – bunun ’spine’ olarak ayarlanması bu aramanın
birden fazla HTML dosyada aranması durumunda, dosyaların kitapta bulundukları sırada işlenmesini anlamına gelir.
Detaylar için bknz Çoklu HTML dosyalarında çalışırkenki dosya sırasını seç (sayfa 94).
Otomatik olarak bir İçindekiler oluştur Son olarak, biraz daha iddialı bir şey deneyelim. Kitabınızda <h1
id="birtakimid">Bir Metin</h1> gibi görünen h1 ve h2 etiketli başlıklar olduğunu var sayın. Bu başlıklara dayalı bir İçindekileri otomatik olarak üreteceğiz. Aşağıdaki özel fonksiyonu oluşturun:
=
{}=
[email protected]
=0=1=2=0=1=2\PYG{k+kn}{from} \PYG{n+nn}{calibre} \PYG{k+kn}{import} \PYG{n}{replace\PYGZus{}entities}
\PY
\PYG{k+kn}{from} \PYG{n+nn}{calibre.gui2.tweak\PYGZus{}book} \PYG{k+kn}{import} \PYG{n}{current\PYGZu
\PYG{k+kn}{from} \PYG{n+nn}{calibre.ebooks.oeb.base} \PYG{k+kn}{import} \PYG{n}{xml2str}
\PYG{k}{def} \PYG{n+nf}{replace}\PYG{p}{(}\PYG{n}{match}\PYG{p}{,} \PYG{n}{number}\PYG{p}{,} \PYG{n}{
\PYG{k}{if} \PYG{n}{match} \PYG{o+ow}{is} \PYG{n+nb+bp}{None}\PYG{p}{:}
\PYG{c}{\PYGZsh{} All matches found, output the resulting Table of Contents.}
\PYG{c}{\PYGZsh{} The argument metadata is the metadata of the book being edited}
\PYG{k}{if} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{toc}\PYG{l+s}{\PYGZsq{}} \PYG{o+ow}{in} \PYG{n}{dat
1.5. E-kitap Düzenleme
91
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
\PYG{n}{toc} \PYG{o}{=} \PYG{n}{data}\PYG{p}{[}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{toc}\PYG{l+s
\PYG{n}{root} \PYG{o}{=} \PYG{n}{TOC}\PYG{p}{(}\PYG{p}{)}
\PYG{k}{for} \PYG{p}{(}\PYG{n}{file\PYGZus{}name}\PYG{p}{,} \PYG{n}{tag\PYGZus{}name}\PYG
\PYG{n}{parent} \PYG{o}{=} \PYG{n}{root}\PYG{o}{.}\PYG{n}{children}\PYG{p}{[}\PYG{o}{
\PYG{n}{parent}\PYG{o}{.}\PYG{n}{add}\PYG{p}{(}\PYG{n}{text}\PYG{p}{,} \PYG{n}{file\P
\PYG{n}{toc} \PYG{o}{=} \PYG{n}{toc\PYGZus{}to\PYGZus{}html}\PYG{p}{(}\PYG{n}{root}\PYG{p
\PYG{k}{print} \PYG{p}{(}\PYG{n}{xml2str}\PYG{p}{(}\PYG{n}{toc}\PYG{p}{)}\PYG{p}{)}
\PYG{k}{else}\PYG{p}{:}
\PYG{k}{print} \PYG{p}{(}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{No headings to build ToC from foun
\PYG{k}{else}\PYG{p}{:}
\PYG{c}{\PYGZsh{} Add an entry corresponding to this match to the Table of Contents}
\PYG{k}{if} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{toc}\PYG{l+s}{\PYGZsq{}} \PYG{o+ow}{not} \PYG{o+ow}
\PYG{c}{\PYGZsh{} The entries are stored in the data object, which will persist}
\PYG{c}{\PYGZsh{} for all invocations of this function during a \PYGZsq{}Replace All\PYGZ
\PYG{n}{data}\PYG{p}{[}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{toc}\PYG{l+s}{\PYGZsq{}}\PYG{p}{]} \
\PYG{n}{tag\PYGZus{}name}\PYG{p}{,} \PYG{n}{anchor}\PYG{p}{,} \PYG{n}{text} \PYG{o}{=} \PYG{n
\PYG{n}{data}\PYG{p}{[}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{toc}\PYG{l+s}{\PYGZsq{}}\PYG{p}{]}\PYG{o
\PYG{k}{return} \PYG{n}{match}\PYG{o}{.}\PYG{n}{group}\PYG{p}{(}\PYG{p}{)} \PYG{c}{\PYGZsh{}
\PYG{c}{\PYGZsh{} Ensure that we are called once after the last match is found so we can}
\PYG{c}{\PYGZsh{} output the ToC}
\PYG{n}{replace}\PYG{o}{.}\PYG{n}{call\PYGZus{}after\PYGZus{}last\PYGZus{}match} \PYG{o}{=} \PYG{n+nb
\PYG{c}{\PYGZsh{} Ensure that when running over multiple files, this function is called,}
\PYG{c}{\PYGZsh{} the files are processed in the order in which they appear in the book}
\PYG{n}{replace}\PYG{o}{.}\PYG{n}{file\PYGZus{}order} \PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{spine}
Ve bulma ifadesiyle kullanın:
=
{}=
[email protected]
=0=1=2=0=1=2\PYGZlt{}(h[12]) [\PYGZca{}\PYGZlt{}\PYGZgt{}]* id=[\PYGZsq{}\PYGZdq{}]([\PYGZca{}\PYGZsq{
Aramayı Tüm metin dosyaları üzerinde çalıştırın, arama sonunda :file:‘toc.html‘ye yapıştırılmaya hazır olan “Fonksiyonunuzdan Hata Ayıklama” ve HTML olarak İçindekileri içeren bir açılır pencere açılır.
Yukarıdaki fonksiyon oldukça iyi yorumlanmıştır, takip etmesi kolay olacaktır. Anahtar yeni özellik replace()
fonksiyonuna verilen başka bir kullanışlı ek bağımsız değişkendir, data nesnesi. data nesnesi tek bir Hepsini Değiştir işlemi sırasındaki tüm başarılı replace() çağrımları sırasında kalan bir python dict nesnesidir.
Başka yeni bir özellik de call_after_last_match kullanımıdır – bunu replace() fonksiyonunda True
olarak ayarlamak düzenleyicinin tüm eşleşmeler bulunduktan sonra bir kere daha replace() çağırması demektir.
Bu ek çağrı için, eşleşme nesnesi None olacaktır.
Bu yalnızca fonksiyon kipinin gücünü göstermek için bir gösteriydi, gerçekten bir kitaptaki başlıklardan İçindekiler
oluşturmaya ihtiyacınız varsa, Araçlar->İçindekiler içindeki bu iş için atanmış İçindekiler aracını kullansanız daha iyi
edersiniz.
Fonksiyon kipi için API Tüm fonksiyon kipi fonksiyonları replace isminde bir python fonksiyonu olmalıdır, ve
aşağıdaki imzayı taşımalıdır:
=
{}=
[email protected]
=0=1=2=0=1=2\PYG{k}{def} \PYG{n+nf}{replace}\PYG{p}{(}\PYG{n}{match}\PYG{p}{,} \PYG{n}{number}\PYG{p}{
Bir bul/değiştir çalıştığında, bulunan her eşleşme için, bu eşleşme için değiştirme karater dizisini döndürmesi gereken replace() fonksiyonu çağrılacaktır. Herhangi bir değiştirme yapılmayacaksa, asıl karakter dizisi olan
92
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
match.group() döndürmelidir. replace() fonksiyonuna verilen çeşitli bağımsız değişkenler aşağıda belgelenmiştir.
match bağımsız değişkeni match bağımsız değişkeni o an bulunan eşleşmeyi temsil eder. Bir python Match nesnesidir31 . En kullanışlı metodu arama düzenli ifadesindeki tekli yakalama gruplarına ilişkili eşleşen metni almaya
yarayan group() metodudur.
number bağımsız değişkeni number bağımsız değişkeni mevcut eşleşmenin sayısıdır. Hepsini Değiştir çalıştırdığınızda, her başarılı eşleşme ‘‘replace()‘‘in artan bir sayıyla çağrılmasına sebep olur. İlk eşleşmenin 1 numarası
vardır.
file_name bağımsız değişkeni Mevcut eşleşmenin bulunduğu dosyanın dosya ismidir. İşaretli metin içinde arama
yaparken, file_name boştur. file_name kuralsal biçimindedir, ayraç olarak / kullanan kitabın köküne göreceli
bir yol.
metadata bağımsız değişkeni Bu mevcut kitabın metadata’sını temsil eder, başlık, yazarlar, dil, vs. Bir
calibre.ebooks.metadata.book.base.Metadata (sayfa 157) nesnesidir. Kullanışlı öznitelikler arasında
başlık, yazarlar (yazar listesi) ve dil (dil kodu) bulunur.
dictionaries bağımsız değişkeni Mevcut kitapta yazım denetimi yaparken kullanılan sözlük koleksiyonunu
temsil eder. En kullanışlı metodu mevcut kitabın dilindeki sözlükte geçirilen kelimenin bulunması halinde True döndüren dictionaries.recognized(word) metodudur.
data bağımsız değişkeni Bu basit bir python dict nesnesidir. Hepsini Değiştir çalıştırdığınızda,
başarılı her eşleşme veri olarak aynı dict ile replace()‘‘in çağrılmasına sebep olur.
Böylece :guilabel:‘Hepsini Değiştir‘ sırasındaki ‘‘replace() çağrıları arasında keyfi
verileri depolamak için kullanabilirsiniz.
functions bağımsız değişkeni functions bağımsız değişkeni diğer tüm kullanıcı tanımlı fonksiyonlara erişim
verir. Bu kod tekrar kullanımı için faydalıdır. Yardımcı fonksiyonları bir yerde tanımlayabilir ve diğer tüm fonksiyonlarınızda tekrar kullanabilirsiniz. Örneğin, şu şekilde My Function isimli bir fonksiyon tanımladığınızı var sayalım:
=
{}=
[email protected]
=0=1=2=0=1=2\PYG{k}{def} \PYG{n+nf}{utility}\PYG{p}{(}\PYG{p}{)}\PYG{p}{:}
\PYG{k}{def} \PYG{n+nf}{replace}\PYG{p}{(}\PYG{n}{match}\PYG{p}{,} \PYG{n}{number}\PYG{p}{,} \PYG{n}{
\PYG{o}{.}\PYG{o}{.}\PYG{o}{.}
Sonra, başka bir fonksiyon içinde, utility() fonksiyonuna şu şekilde erişebilirsiniz:
=
{}=
[email protected]
=0=1=2=0=1=2\PYG{k}{def} \PYG{n+nf}{replace}\PYG{p}{(}\PYG{n}{match}\PYG{p}{,} \PYG{n}{number}\PYG{p}{
\PYG{n}{utility} \PYG{o}{=} \PYG{n}{functions}\PYG{p}{[}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{My Function
\PYG{o}{.}\PYG{o}{.}\PYG{o}{.}
31
https://docs.python.org/2.7/library/re.html#match-objects
1.5. E-kitap Düzenleme
93
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Fonksiyonlar nesnesini diğer fonksiyonlarca tekrar kullanılabilen kalıcı veri depolamak için de kullanabilirsiniz. Örneğin, Hepsini Değiştir ile çağrıldığında veri toplayan bir fonksiyonunuz ve daha sonra çağrıldığında bunu kullanan
ikinci bir fonksiyonunuz olabilir. Şu iki fonksiyonu göz önüne alın:
=
{}=
[email protected]
=0=1=2=0=1=2\PYG{c}{\PYGZsh{} Function One}
\PYG{n}{persistent\PYGZus{}data} \PYG{o}{=} \PYG{p}{\PYGZob{}}\PYG{p}{\PYGZcb{}}
\PYG{k}{def} \PYG{n+nf}{replace}\PYG{p}{(}\PYG{n}{match}\PYG{p}{,} \PYG{n}{number}\PYG{p}{,} \PYG{n}{
\PYG{o}{.}\PYG{o}{.}\PYG{o}{.}
\PYG{n}{persistent\PYGZus{}data}\PYG{p}{[}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{something}\PYG{l+s}{\PYGZ
\PYG{c}{\PYGZsh{} Function Two}
\PYG{k}{def} \PYG{n+nf}{replace}\PYG{p}{(}\PYG{n}{match}\PYG{p}{,} \PYG{n}{number}\PYG{p}{,} \PYG{n}{
\PYG{n}{persistent\PYGZus{}data} \PYG{o}{=} \PYG{n}{functions}\PYG{p}{[}\PYG{l+s}{\PYGZsq{}}\PYG{
\PYG{o}{.}\PYG{o}{.}\PYG{o}{.}
Fonksiyonlarınızda hata ayıklama Oluşturduğunuz fonksiyonları python’dan gelen standart print() fonksiyonu
ile ayıklayabilirsiniz. Print çıktısı açılır bir pencerede Bul/değiştir işlemi sonrasında görüntülenecektir. Yukarıdaki
örnekte tüm bir içindekilerin print() kullanılarak çıktılanması örneğini gördünüz.
Çoklu HTML dosyalarında çalışırkenki dosya sırasını seç Birden fazla HTML dosyasında Hepsini Değiştir çalıştırdığınızda, dosyaların işleniş sırası düzenlemek için hangi dosyaların açık olduğuna göre değişir. Aramanın dosyaları
görünen sırada işlemesine fonksiyonunuzda file_order özniteliğini ayarlayarak, şu şekilde zorlayabilirsiniz:
=
{}=
[email protected]
=0=1=2=0=1=2\PYG{k}{def} \PYG{n+nf}{replace}\PYG{p}{(}\PYG{n}{match}\PYG{p}{,} \PYG{n}{number}\PYG{p}{
\PYG{n}{replace}\PYG{o}{.}\PYG{n}{file\PYGZus{}order} \PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{spine}
file_order iki değer alır, aramanın birden çok dosyayı kitapta göründükleri sırada işlemesine sebep olan ve sırayla
ileri veya geri anlamına gelen‘‘spine‘‘ ve spine-reverse.
Fonksiyonunuzun son eşleşme bulunduktan sonra ek bir sefer daha çağrılması Bazen, yukarıdaki içindekileri
otomatik olarak üreten örnek gibi, son eşleşme bulunduktan sonra fonksiyonunuzu bir kere daha çağırmak faydalı
olabilir. Bunu fonksiyonunuzda call_after_last_match özniteliğini şu şekilde ayarlayarak yapabilirsiniz:
=
{}=
[email protected]
=0=1=2=0=1=2\PYG{k}{def} \PYG{n+nf}{replace}\PYG{p}{(}\PYG{n}{match}\PYG{p}{,} \PYG{n}{number}\PYG{p}{
\PYG{n}{replace}\PYG{o}{.}\PYG{n}{call\PYGZus{}after\PYGZus{}last\PYGZus{}match} \PYG{o}{=} \PYG{n+nb
Kesitler
Calibre düzenleyici *kesitler*i destekler. Kesit, ya sık sık tekrar kullanılan ya da çokça tekrar eden metin içeren
bir metin parçasıdır. Düzenleyici bir kaç tuş darbesiyle bir kesit girmenize olanak sağlar. Örneğin, HTML dosyalar
düzenlerken sık sık bağlantı etiketleri girdiğinizi düşünün, düzenleyicide basitçe <a yazıp Control+J basabilirsiniz.
Düzenleyici şu şekilde genişletecektir:
94
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
=
{}=
[email protected]
=0=1=2=0=1=2\PYGZlt{}a href=\PYGZdq{}filename\PYGZdq{}\PYGZgt{}\PYGZlt{}/a\PYGZgt{}
Yalnızca bu değil, filename kelimesi imleç üzerinde olacak şekilde seçilecektir, böylece gerçek dosya ismini,
düzenleyicinin Otomatik tamamlama (sayfa 99) özelliği ile girebilirsiniz. Dosya adını yazmayı bitirdiğinizde ve
Control+J ye tekrar bastığınızda imleç <a> etiketleri arasına sıçrar böylece bağlantı için metni de kolaylıkla yazabilirsiniz.
Düzenleyicideki kesit sistemi oldukça gelişmiştir, birkaç dahili kesit bulunmaktadır ve düzenleme biçeminize göre
kendi kesitlerinizi de oluşturabilirsiniz.
Dahili kesitlerle ilgili şu tartışma kesit sisteminin gücünü gösteriyor olmalı.
Not: Kesitleri ayrıca Arama ve Değiştirme panelinde metin girdi alanlarında da kullanabilirsiniz, ancak, yer tutucular
(Control+J kullanarak sağa sola gitmek) çalışmaz.
Dahili kesitler Dahili kesitler aşağıda tarif edilmiştir. Aynı tetikleme metni ile oluşturduğunuz kendi kesitlerinizle
bunların üzerine yazabileceğinizi unutmayın.
Doldurma metni ekleme [Lorem] İlk dahili kesit, ve en basiti belgeye doldurma metni eklemek için kullanılır.
Doldurma metni De finibus bonorum et malorum32 dan alınır, Cicero’nun felsefik çalışması (İngilizce’ye çevrilmiştir).
Kullanmak için bir HTML dosyada basitçe Lorem yazın ve Control+J tuşlayın. Bir kaç paragraflık bir doldurma
metniyle değiştirilir.
Bu kesitin tanımı oldukça basit, tetikleyici metin Lorem olarak tanımlıdır ve şablon basitçe eklenecek gerçek metindir.
Kolaylıkla özelleştirerek kendi doldurma metninizi girecek biçime getirebilirsiniz.
Kendisi kapanan bir HTML etiketi [<>] eklemek Şimdi *yer tutucular*la ilgili güçlü ve basit bir örneğe bakalım.
Kendisi kapanan <hr/> etiketi girmek istediğinizi varsayalım. <> yazın ve Control+J‘ye basın, düzenleyici kesidi
şu şekilde genişletir:
=
{}=
[email protected]
=0=1=2=0=1=2\PYGZlt{}\textbar{}/\PYGZgt{}
Burda, | sembolü mevcut imleç konumunu temsil eder. Ardından hr yazıp Control+J basarak imleci etiketin
sonuna taşıyabilirsiniz. Bu kesit şöyle tanımlanmıştır:
=
{}=
[email protected]
=0=1=2=0=1=2Trigger: \PYGZlt{}\PYGZgt{}
Template: \PYGZlt{}\PYGZdl{}1/\PYGZgt{}\PYGZdl{}2
Yer tutucular basitçe dolar ($) işareti ve ardından bir numara şeklindedir. Control+J tuşu ile kesit genişletildiğinde
imleç ilk yer tutucuya gider (en düşük numaralı yer tutucu). Control+J ye tekrar bastığınızda imleç sonraki yer
tutucuya gider (sonraki en büyük numaralı yer tutucu).
32
http://en.wikipedia.org/wiki/De_finibus_bonorum_et_malorum
1.5. E-kitap Düzenleme
95
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Bir HTML bağlantı etiketi eklemek [<a] HTML bağlantı etiketlerinin hepsi yaygın bir yapı kullanır. Bir href
öznitelikleri ve açma ve kapama etiketleri arasında bir miktar metin bulunur. Bunları yazmayı daha etkin hale getirecek
bir kesit bizi yer tutucuların başka bir takım özellikleriyle tanıştıracaktır. Bu kesiti kullanmak için, basitçe <a yazın
ve Control+J basın. Düzenleyici şu şekilde genişletir:
=
{}=
[email protected]
=0=1=2=0=1=2\PYGZlt{}a href=\PYGZdq{}filename\textbar{}\PYGZdq{}\PYGZgt{}\PYGZlt{}/a\PYGZgt{}
Yalnızca bu değil, filename kelimesi imleç üzerinde olacak şekilde seçilir, böylece düzenleyicinin Otomatik tamamlama (sayfa 99) özelliği ile basitçe gerçek dosya ismini girebilirsiniz. Ve bir kere dosya adını yazmayı bitirdiğinizde,
tekrar Control+J ye basarak imleci <a> etiketleri arasına getirebilir, bağlantı için metni kolayca yazabilirsiniz.
Metni yazmayı bitirdiğinizde, tekrar Control+J basarak kapatma etiketi sonrasındaki konuma gidebilirsiniz. Bu
kesit şöyle tanımlanır:
=
{}=
[email protected]
=0=1=2=0=1=2Trigger: \PYGZlt{}a
Template: \PYGZlt{}a href=\PYGZdq{}\PYGZdl{}\PYGZob{}1:filename\PYGZcb{}\PYGZdq{}\PYGZgt{}\PYGZdl{}\P
Burada bir kaç yeni özellik vardır. Öncelikle $1 yer tutucusu daha karmaşık hale geldi. Şimdi bir takım varsayılan metin içeriyor (filename kelimesi. Bir yer tutucu varsayılan metin içeriyorsa, varsayılan metin kesit genişletildiğinde
yer tutucu ile değiştirilir. Ayrıca Control+J kullanarak bir yer tutucuya varsayılan metinle zıpladığınızda, varsayılan
metin seçilir. Bu yolla, varsayılan metni şablonda önemli kısımları doldurmanızı hatırlatan bir hatırlatıcı olarak kullanabilirsiniz. Bir yer tutucu için varsayılan metni şu şekilde belirtebilirsiniz:${<number>:varsayılan metin}.
İkinci yeni özellik de ikinci yer tutucunun sonunda bir asterisk olmasıdır (${2*}). Bunun anlamı şablonu genişletmeden önce seçilen herhangi bir metnin yer tutucuyla değiştirilecek olmasıdır. Bunu gerçekte görmek için, düzenleyicide
biraz metin seçin, Control+J basın, <a yazın ve |ct|ye tekrar basın, şablon şu şekilde genişletilir:
=
{}=
[email protected]
=0=1=2=0=1=2\PYGZlt{}a href=\PYGZdq{}filename\PYGZdq{}\PYGZgt{}whatever text you selected\PYGZlt{}/a\P
Bir HTML resim etiketi eklemek [<i] Yukarıda gösterilen HTML bağlantı eklemeye çok benzerdir. Hızlıca bir
<img src="dosyadı" alt="tanımlama" /> etiketi eklemenize ve src and alt öznitelikleri arasında gezinmenize izin verir:
=
{}=
[email protected]
=0=1=2=0=1=2Trigger: \PYGZlt{}i
Tem
Gelişigüzel bir HTML etiketi ekle [<<] Bu, gelişi güzel tam bir HTML etiketi girmenizi sağlar (ya da daha önce
seçilmiş metni etiket arasına almanızı). Kullanmak için, basitçe << girin ve Control+J basın. Düzenleyici şu şekilde
genişletir:
=
{}=
[email protected]
=0=1=2=0=1=2\PYGZlt{}\textbar{}\PYGZgt{}\PYGZlt{}/\PYGZgt{}
Etiket ismini girin, örneğin: span ve Control+J ye basın, sonuç şöyle olur:
96
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
=
{}=
[email protected]
=0=1=2=0=1=2\PYGZlt{}span\PYGZgt{}\textbar{}\PYGZlt{}/span\PYGZgt{}
Kapanış etiketinin otomatik olarak span ile doldurulduğunu fark etmiş olmalısınız. Bu da, yer tutucuların başka bir
özelliği ile, aynalama ile elde edilir. Aynalama basitçe, aynı yer tutucuyu bir şablonda birden fazla kere belirtirseniz,
ikinci ve sonraki tüm konumların Control+J ye bastığınızda otomatik olarak ilk konumda yazdığınızla doldurulacak
olmasıdır. Bu kesitin tanımı şu şekilde:
=
{}=
[email protected]
=0=1=2=0=1=2Trigger: \PYGZlt{}\PYGZlt{}
Template: \PYGZlt{}\PYGZdl{}1\PYGZgt{}\PYGZdl{}\PYGZob{}2*\PYGZcb{}\PYGZlt{}/\PYGZdl{}1\PYGZgt{}\PYGZ
Gördüğünüz gibi, ilk yer tutucu ($1) iki kere belirtilmiş, ikinci seferde kapanış etiketinde, açılış etiketinde ne yazdıysanız basitçe kopyalanacaktır.
Bir sınıf özniteliği ile [<c] gelişi güzel bir HTML etiketi eklemek Bu yukarıdaki gelişi güzel etiket ekleme örneğiyle çok benzerdir, yalnızca etiket için bir sınıf belirtmek istediğinizi var sayar:
=
{}=
[email protected]
=0=1=2=0=1=2Trigger: \PYGZlt{}c
Tem
Bu önce etiket ismini yazmanızı, ardından Control+J basmanızı, sınıf ismini yazmanızı, Control+J basıp etiket
içeriğini doldurmanızı ve son defa Control+J basarak etiket dışına zıplamanızı sağlar. Kapatma etiketi otomatik
olarak doldurulur.
Kendi kesitlerinizi oluşturmak Kesitler gerçekten öne çıkıyor, çünkü düzenleme biçeminize göre kendi kesitlerinizi oluşturabiliyorsunuz. Kendi kesitlerinizi oluşturmak için düzenleyicide Düzenle->Tercihler->Düzenleyici
ayarları->Kesitleri yönet menüsüne gidin. Bu, kendi kesitlerinizi oluşturmanızı sağlayacak kullanımı kolay bir iletişim penceresi açar. Basitçe Kesit ekle ye tıklayın ve şöyle bir iletişim penceresi görün:
1.5. E-kitap Düzenleme
97
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Önce kesitinize bir isim verin, açıklayıcı bir şey olsun, böylece ilerde ne olduğunu hatırlarsınız. Ardından bir tetikleyici
belirtin. Tetikleyici basitçe Control+J ye basıp kesidi genişletmek için düzenleyicide yazmanız gereken metindir.
Ardından bir kesit şablonu belirtin. Yukarıdaki örneklerden biriyle başlamalı ve ihtiyacınız doğrultusunda değiştirmelisiniz. Son olarak, kesidin hangi dosya türlerinde aktif olmasını istediğinizi seçin. Bu yolla değişik dosya türlerinde
farklı çalışacak aynı tetikleyici metne sahip kesitleriniz olabilir.
Sonraki adım yeni oluşturduğunuz kesidi test etmektir. Aşağıdaki Test kutusunu kullanın. Tetikleyici metni girin ve
Control+J ye basarak kesidi genişletin ve yer tutucular arasında zıplayın.
Raporlar aracı
Düzenleyici kitapta kullanılan dosyalar, resimler, bağlantılar, kelimeler, karakterler ve biçemlerin özetini gösteren
güzel bir Raporlar aracı içerir (Araçlar->Raporlar ile). Rapordaki her satır bağlantılıdır. Bir satıra çift tıklamak bu
öğenin kitapta kullanıldığı veya tanımlandığı (uygun olduğu üzere) noktaya atlama yapar. Örneğin, Bağlantılar görünümünde Kaynak sütunundaki öğelere çift tıklayarak bağlantının tanımlandığı yere, Hedef sütunundaki girdilere
tıklayarak bağlantının gösterdiği yere atlayabilirsiniz.
98
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
1.5.9 Kod düzenleyicideki özel özellikler
Calibre HTML Düzenleyici çok güçlüdür. HTML (ve CSS) düzenlemeyi kolaylaştıracak bir çok özelliği vardır.
Sözdizim vurgulama
HTML düzenleyicinin çok gelişmiş sözdizim vurgulama özelliği vardır. Bazı özellikleri:
• Kalın, yatık ve başlık etiketleri içindeki metin kalın/yatık yapılır
• İmleci HTML içinde gezdirdiğinizde, eşleşen HTML etiketleri vurgulanır
• Geçersiz HTML altı kırmızı çizgili olarak vurgulanır
• Başlık gibi HTML etiketleri ve öznitelikleri içindeki yazım hataları vurgulanır. Yazım denetimi dile göre yapılır,
mevcut etiketteki lang özniteliğine ve kitabın genel diline bakılır.
• <style> etiketleri arasına gömülmüş CSS vurgulanır
• Satır atlatmayan boşluklar, değişik türdeki tireler, vs. gibi görülmesi zor olabilecek özel karakterler vurgulanırlar.
• <a> etiketleri içindeki diğer dosyalara bağlantılar, <img> ve <link> etiketlerindeki dosya isimleri hep vurgulanır. Gösterdikleri dosya ismi mevcut değilse, dosya isminin altı kırmızıyla çizilir.
İçeriğe duyarlı yardım
Bir HTML etiket ismi veya CSS özelliği ismine sağ tıklayarak bu etiket veya özellikle ilgili yardım alabilirsiniz.
Ayrıca Ctrl tuşuna basılı tutup link etiketi içideki herhangi bir dosya ismine tıklayarak bu dosyayı düzenleyicide
otomatik olarak açabilirsiniz.
Otomatik tamamlama
Bir e-kitap düzenlerken, can sıkıcı işlerden biri de kitap içindeki dosyalara, veya CSS biçem sayfalarına, veya resimlere
bağlantı oluşturmaktır. Doğru dosya ismini ve dosyaya göreceli yolu çıkarmak zorundasınızdır. Düzenleyicide bu işi
kolaylaştıracak otomatik tamamlama bulunur.
1.5. E-kitap Düzenleme
99
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Bir dosya ismi yazdığınızda, düzenleyici otomatik olarak öneriler gösterir. Doğru dosya ismini seçmek için basitçe
Tab tuşunu kullanabilirsiniz. Düzenleyici başka bir HTML dosyasındaki çapaları gösteren bağlantılar için bile öneriler sunar. # karakteriniz yazdıktan sonra, düzenleyici hedef dosyadaki tüm çapaların listesini gösterir, doğru çapayı
seçmeniz için de küçük bir yardımcı metin ekler.
Düzenleyicinin tamamlama sisteminin diğer tüm tamamlayıcı sistemlerin aksine alt dizi eşleşmesi kullandığını unutmayın. Bunun anlamı dosya ismini tamamlamak için dosya isminin herhangi bir yerinden iki üç harf girmenizin yeterli
olacağıdır. Örneğin ../images/arrow1.png dosys ismini istiyorsunuz varsayalım, basitçe ia1 yazıp otomatik
tamamlama için Tab tuşuna basabilirsiniz. Eşleşme ararken, tamamlama sistemi kelimenin başında olan harflere veya
bir yol ayracı sonrasında olan harflere öncelik verir. Bu sisteme alıştığınızda, oldukça zaman ve efor kazanacağınızı
fark edeceksiniz.
Kesitler
Calibre düzenleyici *kesitler*i destekler. Kesit, çok fazla tekrar kullanılan veya aynı metni çok içeren metin parçasıdır.
Düzenleyici yalnızca bir kaç tuş ile kesit eklemenize olanak verir. Kesitler çok güçlüdür, ve bir çok özellikleri vardır,
örneğin bir birine atlama yapabileceğiniz yer tutucular, tekrar eden metnin otomatik aynalaması ve fazlası. Daha fazla
bilgi için, bknz Kesitler (sayfa 94).
1.6 E-kitapları Karşılaştırmak
Calibre bir kitap düzenlendikten veya dönüştürüldükten sonra nelerin değiştiğinin görülebileceği tümleşik bir e-kitap
karşılaştırma aracı içerir. EPUB ve AZW3 biçimindeki kitapları karşılaştırabilir.
Bu aracı kullanmak için ya e-kitabı düzenleme yapmak için açın ve Dosya->Başka bir e-kitap ile karşılaştır seçeneğini
seçin ya da Kitap Detayları (sayfa 16) panelini kullanın. Eğer EPUB’tan EPUB’a dönüşüm yaparsanız özgün EPUB
dosyası ORIGINAL_EPUB adıyla kaydedilir. Basitçe Kitap Ayrıntıları panelinden ORIGINAL_EPUB girdisine sağ
tıklayarak EPUB biçimi ile karşılaştır seçeneğini seçebilirsiniz.
Karşılaştırma aracı aşağıdaki ekran görüntüsündeki gibi olacaktır. Seçilen kitaplar arasındaki metin, biçem ve resimlerdeki farklılıkları gösterecektir.
100
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
1.6.1 Karşılaştırma görünümünü anlamak
Yukarıdaki ekran görüntüsünden anlaşılabileceği gibi karşılaştırma görünümü iki kitabın farklarını yan yana göstermektedir. Sadece farklar ve etraflarındaki bir kaç satırlık içerik görüntülenir. Bu sayede büyük bir belgenin içinde
neyin değiştiğini anlamak kolaylaşır.
Eklenen metin yeşil, çıkartılan metin kırmızı ve değiştirilen metinler de mavi arkaplanla gösterilir.
Değiştirilen satırların numaraları düzenleyici ile değişiklik yapılmasını sağlamak için yanlarında görüntülenir. Karşılaştırma aracını düzenleyicinin içinde açtığınızda sağ paneldeki bir satıra çift tıklayarak düzenleyicinin otomatik
olarak o satıra gitmesini sağlayabilirsiniz.
Kitapları karşılaştırmanın kullanışlı bir tekniği de karşılaştırma aracına farklılıkları hesaplamadan önce metni ve biçem
dosyalarını güzelleştirmesini söylemektir. Bu genellikle daha temiz ve takip edilebilir bir çıktı verir. Bunu yapmak için
Seçenekler düğmesine tıkladıktan sonra Dosyaları karşılaştırmadan önce güzelleştir seçeneğini seçmelisiniz. Dosyaları güzelleştirmenin bazı istenmeyen sonuçları olabileceğini unutmayın. Farkların etrafında gösterilecek içeriğin satır
1.6. E-kitapları Karşılaştırmak
101
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
sayısını da Seçenekler düğmesi ile değiştirebilirsiniz.
Farklar içinde alttaki arama çubuğunu kullanarak bir metin arayabilirsiniz. Hangi panelde arama yapacağınızı Sol veya
Sağ seçmeniz gerekecektir.
1.6.2 Karşılaştırma aracı nasıl başlatılır
Karşılaştırma aracı bir kitabın iki sürümü elinizde olduğunda ve nelerin değiştiğini görmek istediğinizde çok faydalı
olur. Başlatılmasının bir çok yolu vardır.
İki e-kitap dosyasını karşıalştırmak
İlk dosyayı düzenle aracında açın. Şimdi Dosya->Başka bir kitapla karşılaştır düğmesine tıklayarak ikinci dosyayı
seçin (ilkiyle aynı biçimde olmalıdır). Karşılaştırma görünümü düzenlenen dosya sağda, ikinci dosya solda olacak
şekilde açılacaktır.
ORIGINAL_FMT ile FMT dosyalarının karşılaştırılması
Calibre içinde bir FMT dosyasından kendisine bir dönüşüm yaparsanız özgün dosya ORIGINAL_FMT adıyla kaydedilir. Dönüşüm sonrası neyin değiştiğini ana calibre penceresindeki Kitap Detayları (sayfa 16) panelinde ORIGINAL_FMT girdisine sağ tıklayıp FMT ile karşılaştır seçeneğini seçerek görebilirsiniz. Karşılaştırma görünümü solda
ORIGINAL_FMT dosyasını, sağda da FMT dosyasını açacaktır.
Bir kontrol noktasını ile kitabın mevcut durumunu düzenlerken karşılaştırmak
düzenle aracının kontrol noktaları isimli çok yararlı bir özelliği vardır. Bu özellik kitabın mevcut durumunu kontrol noktası adıyla kaydetmenize imkan verir, kontrol noktasından sonra yaptığınız ve hoşlanmadığınız değişiklikleri
geri alabilirsiniz. Kontrol noktaları düzenleyicide otomatikleştirilmiş eylemler gerçekleştirdiğinizde de otomatik olarak oluşturulur. Kontrol noktalarının listesini Görünüm->Kontrol noktaları alanına giderek görebilir ve Karşılaştır
düğmesine tıklayarak kitabın mevcut durumunu seçtiğiniz kontrol noktası ile karşılaştırabilirsiniz. Karşılaştırma aracı
karşılaştırma noktasını solda, mevcut durumu da sağda görüntüleyecektir.
1.7 E-kitapların Üst Verisini Düzenlemek
İçindekiler
• Bir defada bir kitabın üst verisini düzenlemek (sayfa 103)
– Üst veri indiriliyor (sayfa 103)
– Kitap biçimlerini yönetmek (sayfa 103)
– Kapaklar hakkında (sayfa 103)
• Birden fazla kitabın üst verisini birden değiştirmek (sayfa 104)
– Ara ve değiştir (sayfa 104)
– Metadata’nın toplu indirilmesi (sayfa 105)
E-kitaplar farklı şekillerde ve boyutlarda olmalarının yanı sıra üst verileri de (başlık/yazar/seri/yayıncı gibi) genellikle
eksik veya hatalı olarak gelir. Üst veriyi değiştirmenin en kolay yolu bir girdinin üzerine çift tıklamak ve doğru bilgiyi
girmektir. Hada karmaşık “güçlü düzenleme” için aşağıda açıklanan üst veri düzenleme araçlarını kullanabilirsiniz.
102
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
1.7.1 Bir defada bir kitabın üst verisini düzenlemek
Düzenlemek istediğiniz kitaba tıkladıktan sonra Üst veriyi düzenle düğmesine veya E tuşuna basın. Üst verinin tüm
alanlarını düzenleyebileceğiniz bir iletişim penceresi açılacaktır. Düzenlemeyi daha hızlı ve verimli kılacak araçlar
barındırır. Sıkça kullanılan bazı ipuçları:
• Başlık ve yazar arasında düğmeye tıklayarak ikisini birden otomatik kaydırabilirsiniz.
• Yazar sıralamasının yanındaki düğmeye tıklayarak calibre’nin otomatik olarak her yazar için sıralama değerleriyle doldurmasını sağlayabilirsiniz. Yazarları yönet iletişim penceresini kullanarak yazarların sıralama değerlerini görebilir ve değiştirebilirsiniz. Bu pencere yazar sıralamasının yanındaki düğmeye tıklayıp basılı tutarak
açılabilir.
• Kitapla ilişkili etiketleri yönetmek için Etiket Düzenleyicisini, etiketlerin yanındaki düğmeye tıklayarak kullanabilirsiniz.
• ISBN kutusunun arka planı hatalı bir ISBN numarası girdiğinizde kırmızı olacaktır. Geçerli bir ISBN için renk
yeşile dönecektir.
• Yazar sıralama kutusu calibre’nin düşündüğünden başka bir değer alırsa kırmızı olacaktır.
Üst veri indiriliyor
Üst veriyi düzenleme iletişim penceresinin en güzel özelliklerinden biri de farklı internet adreslerinden üst veriyi
indirip otomatik olarak doldurabilmesidir. Calibre halen isbndb.com, Google Kitaplar, Amazon ve Library Thing hizmetlerini kullanmaktadır. Üst veri indirmesiyle Başlık, yazar, seri, etiketler, derecelendirme ve ISBN numaraları sizin
için doldurulabilir.
İndirmeyi kullanmak için başlık ve yazar alanlarını doldurduktan sonra Üst veriyi getir düğmesine tıklayın. calibre size
en yakın eşleşmelerin olduğu bir liste döndürecektir. Eğer önce ISBN alanını doldurursanız başlığı ve yazarı bulmak
için kullanılacaktır. Eşleşme bulunamazsa aramanızda bazı anahtar kelimeleri ve yazarın soyadını kullanarak yeniden
yapmayı deneyin.
Kitap biçimlerini yönetmek
Calibre içinde bir kitap girdisi ile ilişkili farklı biçimler bulunabilir. Örneğin Shakespeare’in Bütün Eserlerini EPUB
biçiminde bulundurduğunuzu ve sonradan Kindle’ınızda okumak için MOBI biçimine dönüştürdüğünüzü düşünelim.
calibre sizin için çoklu biçimleri yönetecektir. Üst veriyi düzenle iletişim penceresindeki Kullanılabilir biçimler bölümünde bu biçimleri yönetebilirsiniz. Yeni biçimler ekleyebilir, mevcut biçimleri silebilir ve calibre’nin biçimlerin
birinde üst veriden kapağı almasını atayabilirsiniz.
Kapaklar hakkında
Calibre’den geçerli bir ISBN numarası olan kitapların kapaklarını indirmesini isteyebilirsiniz. Bir diğer seçenek olarak
bilgisayarınızdaki bir dosyanın kapak olarak kullanılmasını da sağlayabilirsiniz. Hatta calibre sizin için bir üst veriye
sahip varsayılan bir kapak bile üretebilir. Kapağı değiştirmek için üzerine resimler sürükleyip bırakabileceğiniz gibi,
resimleri kopyalayıp yapıştırmak için sağ tıklamayı da kullanabilirsiniz.
Buna ek olarak, eğer kapağınız kötü kenarlıklara sahipse kapakları otomatik olarak kırpmak için de bir düğme bulunmaktadır.
1.7. E-kitapların Üst Verisini Düzenlemek
103
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
1.7.2 Birden fazla kitabın üst verisini birden değiştirmek
İlk olarak düzenlemek istediğiniz kitapları Ctrl veya Shift tuşlarını basılı tutarken üzerlerine tıklayarak seçin. Eğer
birden fazla kitap seçerseniz Üst veriyi düzenle düğmesine tıklamak yeni bir Toplu üst veri düzenleme penceresinin
açılmasına neden olur. Bu pencereyi kullanarak bir grup kitabın yazar/yayıncı/derecelendirme/etiketler/seriler gibi
bilgilerini aynı değer olarak atayabilirsiniz. Bu özellikle aynı üst veriye sahip bir grup kitap indirdiğinizde faydalıdır.
Bu iletişim penceresi içinde Ara ve Değiştir sekmeleri barındıran, üst veri ile toplu işlemler yapabildiğiniz ve hatta üst
veriyi bir sütundan diğerine kopyalayabileceğiniz kadar güçlüdür.
Normal üst veri düzenleme penceresinin İleri ve Geri tuşlarını da kullanarak birden çok kitabın üst verisini art arda
değiştirebilirsiniz.
Ara ve değiştir
Toplu üst veri düzenleme penceresi seçili kitaplar üzerinde güçlü arama ve değiştirme işlemleri yapmanıza imkan verir.
Varsayılan olarak basit bir arama ve değiştirme kullanmasına rağmen düzenli ifadeleri de destekler. Düzenli ifadeler
hakkında daha fazla bilgi için, bakınız Calibre’de düzenli ifadeleri kullanmak hakkında herşey (sayfa 164).
Yukarıda da belirtildiği gibi iki farklı arama ve değiştirme kipi vardır: karakter eşleşmesi ve düzenli ifadeler. Karakter
eşleşmesi Arama alanına bakar ve Ara kutusuna yazdığınız karakterleri ile değiştir kutusuna yazdıklarınızla değiştirir. Alandaki arama karakterlerinin her tekrarlaması değiştirilecektir. Örneğin aranacak alanın a bad cat ifadesini
içeriyorsa ve her a karakterinin HELLO ile değiştirilmesini istemişseniz sonuç HELLO bHELLOd cHELLOt olacaktır.
Aradığınız alan etiketler gibi çoklu bir alansa, her etikete ayrı ayrı davranılır. Örneğin etiketiniz Korku,Korkutucu içeriyorsa, arama ifadesi r herhangi bir şeyle eşleşmeyecektir, çünkü ifade önce Korku ardından Korkutucu ya uygulanır.
Aramanın büyük/küçük harfe duyarsız olmasını istiyorsanız, Büyük küçük harf duyarlı kutusundan işareti kaldırın.
Calibre’nin sonucun harflerini büyütmesini ya da küçütmesini isterseniz (yer değiştirme gerçekleştikten sonraki bilgi)
Yer değiştirmeden sonra fonksiyon uygula kutusundaki fonksiyonlardan birini seçebilirsiniz. Kullanılabilir işlemler
şunlardır:
• Küçük harf – alandaki tüm karakterleri küçük harfe çevir
• Büyük harf – alandaki tüm karakterleri büyük harfe çevir
• Başlık boyutu – Sonuçtaki tüm kelimelerin ilk harfini büyüt.
Sizin testiniz kutusu arama/yer değiştirmenin yapmasını istediğiniz şeyi yapıp yapmadığını kontrol edebilmek için
metin girebilmenizi sağlar. Çoğu durumda bu kutular yeterli olur, ama bazı durumlarda kontrol etmek istediğiniz
durum bu kutularda gösterilmemiş olabilir. Bu gibi durumları ‘Sizin testiniz‘e girin.
Düzenli ifade kipi karakter kipinden düzenli ifadeler kullanmaktan ötede (tabi ki) biraz farklıdır. Öncelikle fonksiyonlar metnin arama metniyle eşleşen kısımlarına uygulanır, tüm alana değil. İkincisi fonksiyonlar yer değiştirme karakter
dizisine uygulanır, tüm alana değil.
Üçüncü ve en önemlisi yer değiştirme karakter dizisi geri referanslar kullanarak arama dizisinin bazı kısımlarına
referans verebilir. Geri referans şudur \\n burada n arama ifadesindeki n’inci parantezli gruba işaret eden bir tam
sayıdır. Örneğin yukardaki aynı örnek kullanıldığında, kötü bir kedi, arama ifadesi kötü (...) (...), ve yer değiştirme
ifadesi kötü \2 \1 ile sonuç kötü kedi bir olur. Geri referanslarla ilgili daha fazla bilgi için :ref:‘regexptutorial‘a göz
atın.
Kullanışlı bir kalıp: tüm bir alanda büyük küçük harf değiştirmesi yapmak istediğinizi var sayın. Bunu yapmanın en
kolay yolu karakter kipini kullanmaktır, ama ileri gidip düzenli ifade kipini kullanmak istediğinizi var sayalım. Arama
ifadesi (.*) yer değiştirme ifadesi \1, ve istenilen büyük küçük harf durumu değiştirme fonksiyonu seçilmelidir.
Son olarak, düzenli ifade kipinde değerleri bir alandan diğerine kopyalayabilirsiniz. Basitçe kaynak ve hedef alanları
farklı yapın. Kopyalama hedef alanın yerini değiştirebilir, bir alanın başına ekleyebilir (önüne), veya alanın sonuna
ekleyebilir (arka ucuna). ‘virgül kullan’ kontrol kutusu calibre’ye öne ve sona ekleme kiplerinde metin ve hedef alan
104
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
arasına virgül koymasını (veya koymamasını) söyler. Hedef çoklu ise (örn., etiketler), bu kutuyu işaretlemek zorundasınız.
Ara ve yer değiştir diğer sekmelerdeki diğer tüm metadata değişiklikleri uygulandıktan sonra yapılır. Bu kafaları karıştırabilir, çünkü test kutuları diğer değişikliklerden önceki bilgiyi gösterir, ama işlem değişikliklerden sonra uygulanır.
Ne olacağıyla ilgili şüpheleriniz varsa, arama/yer değiştirmeyi başka değişikliklerle karıştırmayın.
Metadata’nın toplu indirilmesi
Birden çok kitap için metadata’yı topluca indirmek istiyorsanız, Metadata düzenle düğmesine sağ tıklayın ve Metadata
indir seçin. Yalnızca metadata, yalnızca kapaklar veya ikisini de indirmeyi seçebilirsiniz.
1.8 Sıkça Sorulan Sorular
İçindekiler
•
•
•
•
E-kitap Biçim Dönüştürme (sayfa 105)
Aygıt Tümleştirmesi (sayfa 108)
Kitaplık Yönetimi (sayfa 116)
Muhtelif (sayfa 120)
1.8.1 E-kitap Biçim Dönüştürme
İçindekiler
•
•
•
•
•
•
Calibre hangi biçimlerde dönüştürmeyi destekler? (sayfa 105)
Dönüştürülecek en iyi kaynak biçimleri nelerdir? (sayfa 106)
Bir PDF dosyası dönüştürdüm, ama sonuçta çeşitli sorunlar var? (sayfa 106)
İngiliz alfabesi dışında karakterler, veya akıllı tırnak içeren dosyamı nasıl dönüştürürüm? (sayfa 106)
MOBI dosyalarındaki İçindekiler meselesi nedir? (sayfa 106)
MOBI dosyaları için kapaklar PC için Kindle/Android için Kindle/iPad vs. de görünmemeye başladı.
(sayfa 107)
• Toplu HTML dosyalarını belirli bir sırada nasıl dönüştürürüm? (sayfa 107)
• Calibre ile ürettiğim EPUB geçerli değil? (sayfa 108)
• Dönüştürme araçlarının bazı gelişmiş özelliklerini nasıl kullanırım? (sayfa 108)
Calibre hangi biçimlerde dönüştürmeyi destekler?
calibre bir çok girdi biçiminden çıktı biçimine dönüştürmeyi destekler. Aşağıdaki listedeki tüm girdi biçimlerini tüm
çıktı biçimlerine dönüştürebilir.
Giriş formatları: AZW, AZW3, AZW4, CBZ, CBR, CBC, CHM, DJVU, DOCX, EPUB, FB2, HTML, HTMLZ, LIT,
LRF, MOBI, ODT, PDF, PRC, PDB, PML, RB, RTF, SNB, TCR, TXT, TXTZ
Çıkış formatları: AZW3, EPUB, DOCX, FB2, HTMLZ, OEB, LIT, LRF, MOBI, PDB, PMLZ, RB, PDF, RTF, SNB,
TCR, TXT, TXTZ, ZIP
1.8. Sıkça Sorulan Sorular
105
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Not: PRC genel bir biçimdir, calibre TextRead ve MOBIBook başlıklı PRC dosyalarını destekler. PDB de genel
bir biçimdir. calibre eReader, Plucker, PML ve zTxt PDB dosyalarını destekler. DJVU desteği alnızca gömülü metin
içeren DJVU dosyalarını dönüştürmek içindir. Bunlar genellikle OCR yazılımı tarafından üretilir. MOBI kitapları iki
türde olabilir Mobi6 ve KF8. calibre her ikisini tamamen destekler. MOBI dosyalarının çoğunlukla .azw veya .azw3
dosya uzantıları olur. Microsoft Word 2007 ve sonrasına ait DOCX dosyaları desteklenir.
Dönüştürülecek en iyi kaynak biçimleri nelerdir?
Azalan tercih sırasına göre: LIT, MOBI, AZW, EPUB, AZW3, FB2, DOCX, HTML, PRC, ODT, RTF, PDB, TXT,
PDF
Bir PDF dosyası dönüştürdüm, ama sonuçta çeşitli sorunlar var?
PDF dönüştürmek için berbat bir biçim. PDF dönüştürürken karşılaşabileceğiniz çeşitli sorunlar için, bknz: PDF belgelerini dönüştür (sayfa 64).
İngiliz alfabesi dışında karakterler, veya akıllı tırnak içeren dosyamı nasıl dönüştürürüm?
Bu probleme iki bakış açısı vardır:
1. Kaynak dosyanın kodlamasını bilmek: calibre kaynak dosyalarınızın hangi karakter kodlamasına sahip
olduğunu tahmin etmeye çalışır, ama sıklıkla bu imkansızdır, yani hangi kodlamanın kullanılacağını söylemeniz gerekir. Bu grafik arayüzde dönüştürme iletişim penceresinin Doku & Görünüm kısmında Girdi
karakter kodlaması alanı ile yapılabilir. Komut satırı araçlarının hepsi --input-encoding seçeneğine
sahiptir.
2. calibre’ye HTML dosyalar eklerken, calibre’ye dosyaların hangi kodlamada olduğunu söylemeniz gerekebilir. Bunu yapmak için Tercihler->Eklentiler->Dosya Tipi eklentileri ne gidin ve HTML2Zip eklentisini
özelleştirerek HTML dosyalarınızın hangi kodlamada olduğunu söyleyin. Artık calibre’ye HTML dosya
eklediğinizde düzgün işlenecekler. Farklı kaynaklardan gelen HTML dosyalarının genelde farklı kodlamaları olur, yani bu ayarı tekrar tekrar değiştirmeniz gerekebilir. web’de çoğu dosya için kodlama cp1252
dir önce bunu denemenizi öneririm. HTML dosyaları dönüştürürken yukarda bahsedilen kodlama ayarını
boş bırakın. Çünkü HTML2Zip eklentisi HTML dosyalarını otomatik olarak stasndart kodlamaya (utf-8)
dönüştürür.
MOBI dosyalarındaki İçindekiler meselesi nedir?
Öncelikle çoğu e-kitabın iki içindekiler bölümü olduğunu anımsamak gerekir. İlki geleneksel İçindekiler’dir, kağıt kitaplarda bulduğunuz İçindekiler gibi. Bu İçindekiler ana belge akışının bir parçasıdır ve istediğiniz gibi biçemlenebilir.
Bu İçindekilere içerik ToC denir.
Bir de metadata ToC vardır. Metadata İçindekileri kitap metninin parçası olmayan ve genellikle okuyucudaki özel bir
tuşla erişilen İçindekilerdir. Örneğin, calibre görüntüleyicide, İçindekileri Göster düğmesine tıklayarak bu İçindekileri görürsünüz. Bu İçindekiler kitabı oluşturan tarafından biçemlenemez. Nasıl sunulacağı görüntüleyici programa
kalmıştır.
MOBI biçiminde, durum biraz karmaşıktır. Bunun sebebi MOBI biçiminin, diğer ana akım e-kitap biçimleri arasında,
düzgün bir metadata İçindekiler desteğinin olmamasıdır. Bir MOBI kitabı İçindekilerin varlığını kitap sonuna ek bir
içerik İçindekileri koyarak canlandırır. Kindle’nizde İçindekilere Gite tıkladığınızda, Kindle sizi bu ek İçindekilere
götürür.
106
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Şimdi size MOBI kitabının iki tane aynı İçindekileri var gibi gelebilir. Birinin anlambilimsel İçerik diğerinin metadata
İçeriği olduğunu hatırlayın, her ikisi aynı görünse ve aynı içeriğe sahip olsa da. Biri Kindle menüsünden doğrudan
erişilebilir, diğeri erişilemez.
MOBI’ye dönüştürürken, calibre girdi belgesindeki metadata İçindekileri algılar ve çıktı MOBI dosyasında bir dosya
sonu İçindekileri oluşturur. Bunu MOBI ayarlarındaki bir seçenekle kapatabilirsiniz. Ayrıca calibre’ye MOBI Çıktı
ayarlarındaki bir seçenekle kitabın başına mı sonuna mı konacağını söyleyebilirsiniz. Unutmayın bu İçindekiler anlamsal olarak bir metadata İçindekileri, MOBI dışındaki biçimlerde metnin bir parçası olamaz. MOBI’deki metnin
bir parçası olması MOBI’nin kısıtlamaları yüzünden oluşan bir kazadandır. Belge metninizde belirli bir konumda bir
İçindekiler istiyorsanız, elle oluşturun. Yani varsayılan olanı olduğu gibi bırakmanızı öneriyoruz, örn kitap sonunda
metadata İçindekileri olarak. Ayrıca dosya sonu İçindekiler üretimini kapatırsanız oluşan MOBI Kindle üzerinde düzgün çalışmayabilir, çünkü Kindle’lar metadata İçindekileri Sayfa Çevirme özelliği gibi bir çok yerde kullanır.
Girdi belgesinde elle düzenlenmiş bir İçindekileriniz varsa, calibre’deki İçindekiler algılama seçeneğini kullanarak
metadata İçindekileri otomatik olarak oluşturabilirsiniz. Bu seçeneklerin kullanımına göz atmak için Kullanıcı Kılavuzundaki dönüştürme kısmına bakın.
Son olarak, e-kitaplarınızda içerik İçindekileri yerine yalnızca metadata İçindekileri bulundurmanızı öneririm. Metadata İçindekileri e-kitabınızı okuyanlara çok daha iyi gezinti deneyimi sunar (Kindle dışında, Kindle’da içerik İçindekileri ile hemen hemen aynı şeydir).
Not: Yeni AZW3 biçimi metadata içindekileri düzgün destekler. Ancak, Kindle yazılımı dosya sonu satır arası İçindekileri kapatırsanız yanlış çalışmaya meyillidir. Yani üretilen İçindekilere dokunmamanız önerilir. Metadata İçindekileri
olan bir AZW3 dosyası oluşturur ve üretilen dosya sonu İçindekileri olmazsa, Kindle üzerinde bazı özellikler çalışmaz,
Sayfa Çevirme özelliği gibi.
MOBI dosyaları için kapaklar PC için Kindle/Android için Kindle/iPad vs. de görünmemeye başladı.
Bu Amazon yazılımındaki bir hatadan kaynaklıdır. Tercihler->Çıktı Seçenekleri->MOBI çıktısı menüsüne gidip “Kitap
içeriği paylaşımına izin ver” seçeneğini ayarlayarak düzeltebilirsiniz. Daha önceden dönüştürülmüş bir kitabı dönüştürüyorsanız bu kitap için dönüştürme penceresinde de bu seçeneği etkinleştirmeniz gerekir (kitaba özel dönüştürme
seçenekleri kaydedilir ve öncelik kazanır).
Bunu yapmanın Kindle Fire’da üretilen MOBI’yi Kitaplar yerine kişisel belgeler altında göstereceğine dikkat edin
ayrıca Amazon whispersync çalışmayacaktır, ama kapaklar çalışır. Hangi işlevin daha önemli olduğuna siz karar vermelisiniz. Amazon’la iletişime geçip bu hatayı düzeltmelerini söylemenizi öneririm.
Amazon yazılımında olan bir hata bir MOBI dosyasını Kindle’ye koyduğunuzda, dosya Kişisel belge olarak işaretlenmediyse, Amazon’un dosyayı onlardan aldığınızı sanarak kapak küçük resmini kendi sunucularından indirmeye
çalışmasıdır. İndirme başarısız olunca, MOBI dosyasında belirtilen kapağı da kullanmaz. Bu Amazon’un yazarları
kendileri üzerinden satış yapmaya zorlayan kasıtlı bir hareketidir. Başka bir deyişle, Kindle’ler yalnızca Kişisel Belge
olarak işaretlenen veya doğrudan Amazon üzerinden satın alınan kitapların kapaklarını gösterir.
Bir MOBI dosyasını bir e-mürekkep Kindle cihaza USB bağlantısıyla gönderirseniz, calibre bu Amazon hatasını kendisi bir kapak küçük resmi yükleyerek çözer. Ancak, bu çözüm yalnızca USB bağlantısıyla ve calibre ile gönderilirken
çalışır. E-posta ile gönderirseniz, Amazon MOBI dosyayı otomatik olarak Kişisel Belge olarak işaretler ve kapak
çalışmasına rağmen, kitap Kişisel Belgelerde görüntülenir.
Toplu HTML dosyalarını belirli bir sırada nasıl dönüştürürüm?
Toplu HTML dosyalarını belirli sırada dönüştürmek için bir İçindekiler dosyası oluşturmalısınız. Bu, diğer tüm bu
dosyalara sıralı bağlantılar içeren başka bir HTML dosyasıdır. Bu tarz bir dosya şuna benzer:
1.8. Sıkça Sorulan Sorular
107
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
=
{}=
[email protected]
=0=1=2=0=1=2\PYGZlt{}html\PYGZgt{}
\PYGZlt{}h1\PYGZgt{}Table of Contents\PYGZlt{}/h1\PYGZgt{}
\PYGZlt{}p style=\PYGZdq{}text\PYGZhy{}indent:\PYGZdq{}\PYGZgt{}
\PYGZlt{}a href=\PYGZdq{}file1.html\PYGZdq{}\PYGZgt{}First File\PYGZlt{}/a\PYGZgt{}\PYGZlt{}b
\PYGZlt{}a href=\PYGZdq{}file2.html\PYGZdq{}\PYGZgt{}Second File\PYGZlt{}/a\PYGZgt{}\PYGZlt{}
.
.
.
\PYGZlt{}/p\PYGZgt{}
\PYGZlt{}/body\PYGZgt{}
\PYGZlt{}/html\PYGZgt{}
Ardından bu HTML dosyasını GUI’ye ekleyin ve dönüştür düğmesiyle e-kitaba dönüştürün. İçindekiler kısmının nasıl
üretileceğini dönüştürme iletişim penceresindeki İçindekiler kısmındaki seçeneği kullanarak kontrol edebilirsiniz.
Not: Varsayılan olarak, HTML dosyalar eklerken, calibre dosyalardaki bağlantıları derinlik öncelikli takip eder. Yani
eğer A.html dosyası B.html C.html ve D.html dosyasına bağlıysa, ama B.html de D.html’ye bağlıysa, dosyalar A.html,
B.html, D.html, C.html sırasında olur. Eğer isteğiniz A.html, B.html, C.html, D.html sırasıysa calibre’ye dosyalarınızı
genişlik öncelikli sırada eklemesini söylemelisiniz. Bunu yapmak için Tercihler->Eklentiler menüsüne gidin ve HTML
to ZIP eklentisini özelleştirin.
Calibre ile ürettiğim EPUB geçerli değil?
calibre kendisi tarafından üretilen bir EPUB’ın geçerli olacağını garanti etmez. Garanti ettiği tek şey geçerli XHTML
1.1 + CSS 2.1 ile beslerseniz geçerli bir EPUB üreteceğidir. calibre ürettiği EPUB’ların geniş yelpazede cihazlarda
istenilen şekilde çalıştığını garantilemek ister, bu da geçerli EPUB’lar üretmekle uyumlu değildir, ve kullanıcılarının
büyük çoğunluğu için önemli olan budur. Her zaman geçerli EPUB üreten bir araca ihtiyacınız varsa calibre size göre
değildir. Bunun anlamı, calibre tarafından oluşturulmuş bir EPUB’ı EPUB doğrulama kontrolü yapan çevrimiçi bir
mağazaya göndermek isterseniz EPUB’ın geçerliliğini kontrol etme sorumluluğunun sizde olduğudur, calibre bunu
sizin için yapmaz – başka bir deyişle calibre’ye girdi belgesi olarak geçerli XHTML + CSS vermelisiniz.
Dönüştürme araçlarının bazı gelişmiş özelliklerini nasıl kullanırım?
Dönüştürücülerin tüm bağımsız özellikleri hakkında yardımı GUI’de fareyi üzerlerinde tutarak veya uç birimde
ebook-convert dummy.html .epub -h çalıştırarak alabilirsiniz. Başlangıç için iyi bir nokta bazı gelişmiş
özellikleri gösteren şu tanıtım dosyası olabilir html-demo.zip33
1.8.2 Aygıt Tümleştirmesi
33
http://calibre-ebook.com/downloads/html-demo.zip
108
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
İçindekiler
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Calibre hangi aygıtları destekliyor? (sayfa 109)
Aygıtımın calibre tarafından desteklenmesi konusunda nasıl yardım alabilirim? (sayfa 109)
Aygıtım calibre tarafından algılanmıyor? (sayfa 109)
Aygıtım standart dışı veya nadir. Bağlamak için ne yapabilirim? (sayfa 110)
Calibre SONY okuyucumdaki koleksiyonları nasıl yönetiyor? (sayfa 110)
Hem calibre hem SONY yazılımı kullanarak okuyucumu yönetebilir miyim? (sayfa 111)
Calibre’yi iPad/iPhone/iPod touch ile nasıl kullanırım? (sayfa 111)
Calibre’yi Android telefonumla/tabletimle veya Kindle Fire HD ile nasıl kullanırım? (sayfa 112)
Kindle veya başka bir okuyucu aygıttaki web tarayıcıyı kullanarak calibre kitaplarıma erişebilir miyim?
(sayfa 113)
“İçerik sunucunun başlatılması başarısız: Port 8080 ‘0.0.0.0’ üzerinde boş değil” hata iletisi alıyorum?
(sayfa 114)
Calibre kullanarak e-posta gönderemiyorum? (sayfa 114)
Aygıtım linux altında yalnızca okunur bağlandığından calibre bağlanamıyor? (sayfa 115)
Calibre neden Kindle koleksiyonlarını veya Nook raflarını desteklemiyor? (sayfa 115)
Calibre’yi Kobo Touch/Glo/vs. ile kullanırken hata alıyorum? (sayfa 115)
Calibre kullanarak bazı kitapları Kindle’me yükledim ama görünmüyorlar? (sayfa 116)
Calibre hangi aygıtları destekliyor?
calibre tüm ana (ve çoğu ufak tefek) e-kitap okuma aygıtını doğrudan destekler, akıllı telefonlar, tabletler, vs. Ek
olarak, Dizine bağlan özelliğini kullanarak kendisini USB disk olarak dışa aktaran herhangi bir e-kitap okuyucuyu
kullanabilirsiniz. iTunes’e bağlan ile Apple aygıtlarına bile (iTunes ile) bağlanabilirsiniz.
Aygıtımın calibre tarafından desteklenmesi konusunda nasıl yardım alabilirim?
Aygıtınız işletim sistemine USB disk olarak görünüyorsa calibre desteği çok kolaydır. Sizden yalnızca bazı bilgiler
isteyeceğiz:
• Aygıtınızın desteklediği e-kitap biçimlerinin tam listesi.
• Is there a special directory on the device in which all ebook files should be placed? Also does the device detect
files placed in sub-directories?
• Ayrıca sizden calibre’nin otomatik toplayacağı aygıtınızla ilgili bilgiler isteyeceğiz. Öncelikle, aygıtınız SD kart
destekliyorsa, takın. Aygıtı bilgisayara takın. Calibre’de Tercihler->Çeşitli menüsüne gidin, “Aygıt algılamayı
ayıkla” düğmesine tıklayın. Bu bir miktar hata ayıklama çıktısı oluşturacaktır. Bir dosyaya kopyalayın ve işlemi
tekrarlayın, bu sefer aygıtınız bilgisayardan çıkarılmış olsun.
• Yukarıdaki her iki çıktıyı gerekli başka bilgilerle bize gönderin, aygıtınız için aygıt sürücüsü yazacağız.
Bize belli bir işletim sisteminin çıktısını gönderdiğinizde, bu işletim sistemi için destek sonraki calibre sürümünde
görülecektir. Bize çıktıyı göndermek için, bir hata kaydı açıp çıktıyı ekleyin. Bknz calibre hataları34 .
Aygıtım calibre tarafından algılanmıyor?
Sorunu bulmak için şu adımları takip edin:
• Bilgisayarınıza aynı anda tek bir aygıt taktığınızdan emin olun. Calibre destekli başka bir aygıt iPhon/iPad vs.
aynı anda takmayın.
34
http://calibre-ebook.com/bugs
1.8. Sıkça Sorulan Sorular
109
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
• Bir Apple iDevice bağlıyorsanız (iPad, iPod Touch, iPhone), ‘Başlangıç’ yönergelerinde ‘iTunes’e Bağlan’ metodunu kullanın Calibre + Apple iDevices: Buradan başlayın35 .
• Calibre’nin son sürümünü kullandığınızdan emin olun. Son sürüm her zaman calibre web sayfasından36 indirilebilir. Ana calibre penceresinin altına bakarak calibre’nin hangi sürümünü kullandığınızı öğrenebilirsiniz.
• İşletim sisteminizin aygıtı tanıdığından emin olun. Yani, aygıt Windows Explorer (Windows’da) veya Finder
(OS X’de) görünmelidir.
• Calibre’de, Tercihler->Yoksayılan Aygıtlar a gidin ve aygıtınızın göz ardı edilmediğinden emin olun
• Tüm bu adımlar başarısız olursa, Tercihler->Çeşitli ye gidin ve aygıtınız takılıyken Aygıt tanımlamada hata
ayıkla ya tıklayın ve çıktıyı bir bilet olarak calibre hata takibine37 gönderin.
Aygıtım standart dışı veya nadir. Bağlamak için ne yapabilirim?
Bağlan/Paylaş düğmesi altındaki Dizine Bağlan fonksiyonuna ek olarak, calibre işletim sisteminizde disk sürücü olarak görünen herhangi bir USB aygıta bağlanmak için kullanılabilecek bir Kullanıcı Tanımlı‘‘aygıt
eklentisi sağlar. Not: Windows üzerinde, calibre’nin kullanabilmesi için
aygıtın bir aygıt harfi olmalıdır. Daha fazla bilgi için ‘‘Tercihler ->
Eklentiler -> Aygıt Eklentileri -> Kullanıcı Tanımlı ve Tercihler -> Çeşitli
-> Kullanıcı tanımlı aygıt ayarlamak için bilgi al aygıt eklentilerine bakın. Dahili bir
calibre eklentisi tarafından algılanan bir aygıtı kullanıcı tanımlı bir eklenti ile kullanıyorsanız, önce dahili eklentiyi
kapatmanız gerekir, böylece kullanıcı tanımlı eklentiniz yerine kullanılabilir.
Calibre SONY okuyucumdaki koleksiyonları nasıl yönetiyor?
Calibre okuyucuya bağlandığında, okuyucudaki kitaplar için tüm koleksiyonları alır. Kitapların hangi koleksiyonun
üyesi olduğu aygıt görünümünde gösterilir.
Okuyucuya bir kitap gönderdiğinizde, calibre kitabın metadata’sına bağlı olarak kitabı koleksiyonlara ekler. Varsayılan olarak, koleksiyonlar etiketler ve serilerden oluşturulur. Hangi metadata’nın kullanılacağını Tercihler->Eklentiler>Aygıt Arayüz eklentileri ne giderek ve SONY aygıt arayüz eklentisini özelleştirerek kontrol edebilirsiniz. Tüm değerleri silerseniz, calibre kitabı herhangi bir koleksiyona eklemez.
Koleksiyon yönetimi çoğunlukla Tercihler->İçe/Dışa Aktar->Kitapların aygıta gönderimi altındaki ‘Metadata yönetimi’ seçeneğiyle kontrol edilir. ‘Manual’ (varsayılan) olarak ayarlanırsa koleksiyon yönetimi kullanıcıya bırakılır;
calibre kitabı okuyucuya tekrar gönderdiğinizde kitap için mevcut koleksiyonları okuyucuda silmez, ama gerekliyse
koleksiyona ekler. Bir kitap için koleksiyonların calibre metadata’sını temel aldığından emin olmak için, önce kitabı
okuyucudan silin, sonra kitapları tekrar gönderin. Koleksyion sütununda sağ tıklayarak veya çift tıklayarak koleksiyonları doğrudan aygıt görünümünde düzenleyebilirsiniz.
‘Metadata yönetimi’ ‘Yalnızca gönderimde’ olarak ayarlanmışsa, calibre koleksiyonları daha agresif yönetir. Koleksiyonlar calibre metadata’sı kullanarak özellikle inşa edilir. Bir kitabı okuyucuya göndermek bu kitabın koleksiyonlarını
düzeltir böylece koleksiyonları kitabın metadata’sıyla birebir eşleşir, bu sırada gerekli oldukça koleksiyonlar silinir
veya eklenir. Aygıt görünümünde koleksiyonları düzenlemeye izin verilmez, çünkü metadata’da bulunmayan koleksiyonlar otomatik olarak silinir.
‘Metadata yönetimi’ ‘Otomatik yönetim’ olarak ayarlıysa, calibre metdata ve koleksiyonları hem okucuyu bağlıyken
hem kitaplar gönderilirken günceller. Calibre okuyucuyu algılayıp kitap listesini ürettiğinde, kitaplıkta olan tüm kitaplar için kitaplıktaki metadata’yı okucuya gönderir, metadata ve aygıt özelleştirmesine göre kitapları ekler veya çıkarır.
Bir kitap gönderildiğinde, calibre bu kitap için metadata’yı düzeltir, koleksiyonları ekler veya çıkarır. Metadata’nın
35
36
37
http://www.mobileread.com/forums/showthread.php?t=118559
http://calibre-ebook.com/download
https://bugs.launchpad.net/calibre
110
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
aygıt görünümünde elle düzenlenmesine izin verilmez. Bu seçeneğin kitap değil metadata göndermekle ilgili olduğunu
unutmayın. Okuyucudaki kitap dosyaları değiştirilmez.
Özetle, koleksiyonları kendiniz yönetmek istiyorsanız ‘elle yönetim’ seçin. Bir kitap için koleksiyonlar calibre tarafından asla silinmez, fakat sizin tarafınızdan aygıt görünümünde silinebilir. ‘Yalnızca gönderimde’ seçerek calibre’nin
kitap gönderiminde metadata yönetmesini sağlayabilirsiniz, kitapların koleksiyonlara eklenmesi veya çıkarılması gerekebilir. Okuyucu bağlandığında calibre’nin metadata’yı güncel tutmasını istiyorsanız ‘Otomatik yönetim’ seçin.
Okuyucunuzu yönetmek için birden çok calibre kurulumu kullanıyorsanız, ‘Otomatik yönetim’ seçeneği istediğiniz
şey olmayabilir. Okuyucuyu bir kitaplığa bağlamak metadata’yı kitaplıkta olana sıfırlar. Diğer kitaplığa bağlanmak
metadata’yı diğer kitaplıktakine sıfırlar. Her iki kitaplıkta da bulunan kitaplardaki metadata bir oraya bir buraya atılır
durur.
Hem calibre hem SONY yazılımı kullanarak okuyucumu yönetebilir miyim?
Evet, ikisini de kullanabilirsiniz, aynı anda çalıştırmamak koşuluyla. Yani şu sırayı kullanmalısınız: Okuyucuyu bağla>Programlardan birini kullan->Okuyucuyu çıkar. Okuyucuyu tekrar bağla->Diğer programı kullan->okuyucuyu çıkar.
Altında yatan sebep Okuyucunun tek bir dosya kullanarak koleksiyonlar gibi ‘meta’ bilgisini tutmasıdır, ve bu hem
calibre hem Sony yazılımı tarafından Okuyucuda herhangi bir şey güncellendiğinde yazılır. Dosya okuyucu (güvenli
şekilde) çıkarıldığında kaydedilir, yani bağlantı kesilmişse birinden birinin kullanımı güvenlidir, eğer bunu hatırlayabilecek biri değilseniz, basit cevap aktarım için iki programdan birine bağlı kalmanız ve bilgisayarın sabit diskini
kullanarak diğerine içe/dışa aktarma yapmanız olur.
Her ikisinin de kullanımından kaynaklı bir sorun nedeniyle metadata’nızı sıfırlamanız gerekirse, bilgisayarınızın dosya
gezgini ile Okuyucudaki media.xml dosyasını silmeniz yeterlidir böylece çıkarıldığında dosya yeniden oluşturulur.
Yeni okuyucu sürümleriyle, SONY, tüm bilgeliğiyle sizi kendi yazılımlarını kullanmaya zorlamaya karar verdi. Yüklerseniz, okuyucuyu takar takmaz otomatik başlar. Tamamen bu yazılımı kaldırmak istemiyorsanız, kullanabileceğiniz
bir kaç numara var. En basiti kitaplık programını başlatan çalıştırılabilirin adını değiştirmek. Daha fazla detay forumda38 .
Calibre’yi iPad/iPhone/iPod touch ile nasıl kullanırım?
Kablosuz olarak
Apple aygıtınızla (iPad/iPhone/iPod) calibre koleksiyonunuzu taramanın en kolay yolu koleksiyonunuzu ağda kullanılabilir hale getiren calibre içerik sunucuyu kullanmaktır. Önce calibre’de aşağıdaki adımları izleyin
• Calibre’de Tercih Edilen Çıktı Biçimini EPUB olarak ayarlayın (Çıktı biçimi Tercihler->Arayüz->Davranış
altından ayarlanabilir)
• Çıktı profilini iPad olarak ayarlayın (bu iPhone/iPod ile de çalışacaktır) Tercihler->Dönüştürme->Genel
Seçenekler->Sayfa Ayarları
• iDevice’nizde okumak istediğiniz kitaplarınızı seçip Dönüştür düğmesine tıklayarak EPUB biçimine dönüştürün.
• Bağlan/Paylaş düğmesine tıklayarak İçerik Sunucuyu başlatın ve calibre’yi çalışır halde bırakın. Ayrıca
Tercihler->Ağ üzerinde paylaşım ile calibre’ye içerik sunucuyu otomatik başlatmasını söyleyebilirsiniz.
iAygıtınızda calibre’ye bağlanabilecek bir çok uygulama bulunur. Burda ikisinin kullanımını anlatıyoruz, iBooks ve
Stanza.
38
http://www.mobileread.com/forums/showthread.php?t=65809
1.8. Sıkça Sorulan Sorular
111
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Stanza Kullanımı iPhone’nizdeki kitaplara Stanza ile erişebiliyor olmalısınız. “Kitapları Getir”e gidin ve
“Paylaşılan” sekmesine tıklayın. Paylaşılan altında “Calibre’deki kitaplar” girdisini göreceksiniz. Görmezseniz,
iPad/iPhone’nizin 3G yerine evinizdeki WiFi ağına bağlandığından emin olun. Calibre kataloğu Stanza tarafından
hala algılanmazsa, Stanza’da elle ekleyebilirsiniz. Bunu yapmak için, “Paylaşılan” sekmesine tıklayın, ardından “Düzenle” düğmesine ve “Kitap kaynağı ekle” ye tıklayarak yeni bir kitap kaynağı ekleyin. Kitap Kaynağı Ekle ekranında
istediğiniz ismi girin ve URL alanına, aşağıdakini girin:
=
{}=
[email protected]
=0=1=2=0=1=2http://192.168.1.2:8
192.168.1.2 adresini calibre’nin çalıştığı bilgisayarın yerel IP adresiyle değiştirin. Calibre içerik sunucunun çalıştığı portu değiştirdiyseniz, ‘‘8080‘‘i de yeni portla değiştirmeniz gerekir. Yerel IP adres bilgisayarınızın ev ağınızda
atandığı IP adresidir. Hızlı bir Google araması yerel IP adresinizi nasıl bulacağınız konusunda yardımcı olacaktır.
Şimdi “Kaydet”e tıklayın ve işiniz tamamdır.
Stanza ile calibre kataloğunu gezerken zaman aşımı hataları alırsanız, stanza ayarlarından bağlantı zaman aşımı değerini artırmayı deneyin. Bilgi->Ayarlara gidin ve İndirme Zaman Aşımı değerini yükseltin.
iBooks Kullanımı Safari tarayıcıyı başlatın ve calibre sunucuyu çalıştıran bilgisayarın IP adresini ve portunu girin,
şu şekilde:
=
{}=
{}@default
=0=1=2=0=1=2http://192.168.1.2:8
192.168.1.2 adresini calibre’nin çalıştığı bilgisayarın yerel IP adresiyle değiştirin. Calibre içerik sunucunun çalıştığı portu değiştirdiyseniz, ‘‘8080‘‘i de yeni portla değiştirmeniz gerekir. Yerel IP adres bilgisayarınızın ev ağınızda
atandığı IP adresidir. Hızlı bir Google araması yerel IP adresinizi nasıl bulacağınız konusunda yardımcı olacaktır.
Safari’de bir grup kitap göreceksiniz, okumak istediğiniz kitabın epub bağlantısına tıklamanız Safari’nin kitabı iBooks
ile açmak için iletişim penceresi açmasına yeterlidir.
USB kablosu + iTunes ile
Calibre + Apple iAygıtlar: Buradan başlayın39 içindeki ‘Başlangıç’ yönergelerindeki ‘iTunes Bağlantısı’ metodunu
kullanın.
This method only works on Windows Vista and higher, and OS X up to 10.8. Linux is not supported (iTunes is not
available in linux) and OS X newer than 10.8 is not supported, as Apple removed the facility to use iTunes to manage
books, replacing it with iBooks.
Calibre’yi Android telefonumla/tabletimle veya Kindle Fire HD ile nasıl kullanırım?
Android aygıtınızı calibre’ye bağlamanın iki yolu vardır. USB kablosu ile – veya kablosuz olarak, havadan. Android
aygıtı kullanmanın ilk adımı bir e-kitap okuyucu kurmaktır. Bir çok ücretli ve ücretsiz e-kitap okuyucu uygulama
bulunmaktadır: Bazı örnekler (belirli bir sırada değil): FBReader40 , Moon+41 , Mantano42 , Aldiko43 , Kindle44 .
39
40
41
42
43
44
http://www.mobileread.com/forums/showthread.php?t=118559
https://play.google.com/store/apps/details?id=org.geometerplus.zlibrary.ui.android&hl=en
https://play.google.com/store/apps/details?id=com.flyersoft.moonreader&hl=en
https://play.google.com/store/apps/details?id=com.mantano.reader.android.lite&hl=en
https://play.google.com/store/apps/details?id=com.aldiko.android&hl=en
https://play.google.com/store/apps/details?id=com.amazon.kindle&feature=related_apps
112
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
USB kablo kullanımı
Basitçe aygıtınızı bilgisayara bir USB kabloyla bağlayın. calibre otomatik olarak aygıtı algılar ve Aygıta Gönder düğmesini kullanarak ktiaplarınızı aktarabilirsiniz. calibre dışardaki her android aygıtı desteklemeyebilir, yani aygıtınız
otomatik olarak algılanmazsa, aygıtı calibre tarafından desteklenir hale getirmek için Aygıtımın calibre tarafından
desteklenmesi konusunda nasıl yardım alabilirim? (sayfa 109) altındaki yönergeleri takip edin.
Not: Yeni Android aygıtlarıyla, USB bağlantısı Windows XP ve Mavericks’den önceki OS X (10.9) üzerinde desteklenmez. Windows XP veya OS X’in eski sürümlerindeyseniz, kablosuz bağlantı yöntemlerinden birini kullanmalısınız.
Kablosuz olarak
Kitapları kablosuz olarak Android aygıtınıza aktarmanın en kolay yolu Calibre Companion45 Android uygulamasını kullanmaktır. Bu uygulama bir çekirdek calibre geliştiricisi tarafından yönetilir ve calibre’nin Android aygıtınıza
kablosuz olarak, aygıtı bir USB kablo ile bağlamışsınız gibi bağlanmasını sağlar. Aygıttaki dosyaları calibre içinde
gezebilir ve Aygıta gönder düğmesi ile aygıtınıza kablosuz aktarım yapabilirsiniz.
calibre also has a builtin web server, the Content Server. You can browse your calibre collection on your Android
device by using the calibre content server, which makes your collection available over the net. First perform the
following steps in calibre
• calibre’de Tercih Edilen Çıktı Biçimi‘ni normal Android aygıtlar için EPUB veya Kindle’ler için MOBI olarak
ayarlayın (Çıktı biçimi :guilabel:‘Tercihler->Arayüz->Davranış altından ayarlanabilir)
• Aygıtınızda okumak istediğiniz kitapları EPUB/MOBI biçimine seçip Dönüştür düğmesine tıklayarak dönüştürün.
• Calibre tercihlerinden İçerik Sunucuyu açın ve calibre’yi açık bıraın.
Android aygıtınızda, tarayıcıyı açın ve şu adrese gidin
http://192.168.1.2:8080/
192.168.1.2 adresini calibre’nin çalıştığı bilgisayarın yerel IP adresiyle değiştirin. Yerel ağınız bilgisayar isimlerinin kullanımına izin veriyorsa, IP adresini bilgisayarın ağ ismiyle değiştirebilirsiniz. Calibre içerik sunucunun çalıştığı
portu değiştirdiyseniz, ‘‘8080‘‘i de yeni portla değiştirmeniz gerekir.
Yerel IP adres bilgisayarınızın ev ağınızda atandığı IP adresidir. Hızlı bir Google araması yerel IP adresinizi nasıl bulacağınız konusunda yardımcı olacaktır. Şimdi kitap koleksiyonunuzu ve calibre’den aygıtınıza indirilen kitaplarınızı
android aygıtınızda hangi e-kitap okuyucu yazılım varsa onun yardımıyla okuyabilirsiniz.
Bazı okuma programları calibre kitaplığını doğrudan taramayı destekler. Örneğin, Aldiko’da, Kataloglarım’a tıklayın,
ardından + ile bir katalog ekleyin, kataloga “calibre” gibi bir başlık verin ve yukarıda listelenen URL’yi sağlayın. Artık
calibre kitaplığını doğrudan tarayabilir ve okuma yazılımına doğrudan indirebilirsiniz.
Kindle veya başka bir okuyucu aygıttaki web tarayıcıyı kullanarak calibre kitaplarıma erişebilir miyim?
calibre’nin kitapları bir web sayfası olarak dışa aktardığı bir İçerik Sunucusu vardır. Tercihler->Ağ üzerinde paylaşım altından açabilirsiniz. Ardından web tarayıcınızı İçerik Sunucunun çalıştığı bilgisayara yönlendirerek kitap koleksiyonunuzu tarayabilirsiniz. Örneğin, sunucunun çalıştığı bilgisayarın IP adresi 63.45.128.5 ise, tarayıcıda şöyle
yazmalısınız:
45
http://www.multipie.co.uk/calibre-companion/
1.8. Sıkça Sorulan Sorular
113
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
=
{}=
{}@default
=0=1=2=0=1=2
Bazı aygıtlar, örneğin Kindle (1/2/DX) 8080 portuna erişmenize izin vermezler (içerik sunucunun çalıştığı varsayılan
port). Bu durumda calibre Tercihlerinden portu 80 olarak değiştirin. (Bazı işletim sistemlerinde, 1024’den aşağı bir
portu güvenlik ayarlarından dolayı kullanamayabilirsiniz. Bu gibi durumlarda da en basit çözüm yönlendiricinizden
80 portuna gelen istekleri 8080’e yönlendirmesini istemektir).
“İçerik sunucunun başlatılması başarısız: Port 8080 ‘0.0.0.0’ üzerinde boş değil” hata iletisi alıyorum?
Bunun muhtemel sebebi anti virüs programınız. Geçici olarak kapatıp düzelip düzelmeyeceğini kontrol edin.
Calibre kullanarak e-posta gönderemiyorum?
E-postadaki istennmeyen iletinin çokluğu yüzünden, e-posta göndermek ince işe dönüşebilmektedir, çünkü farklı eposta sunucuları e-posta engellemek için farklı stratejiler kullanır. En yaygın problem calibre’den doğrudan e-posta
gönderdiğiniz durumdur (bir posta aktarıcısı olmadan). Birçok sunucu (örneğin, Amazon) iyi bilinen bir aktarıcıdan
gelmeyen postaları engeller. Calibre’de e-posta gönderimini ayarlamanın en düzgün yolu şunları yapmaktır:
• Ücretsiz bir GMX46 hesabı açın.
• Calibre’de Tercihler->E-posta ile Paylaşım‘a gidin ve :guilabel:‘GMX Kullan düğmesine tıklayın ve sorulan
bilgileri doldurun.
• calibre artık e-posta göndermek için GMX kullanacak.
• Kindle’nize gönderiyorsanız, Amazon Kindle sayfanızdan tercihlerinizi GMX e-posta adresinden gelen epostaları alacak şekilde değiştirmeyi unutmayın. Ayrıca Amazon’un AZW3 ve yeni tür (KF8) MOBI dosyalarının e-posta ile gönderimine izin vermediğini de.
Bunu yaptıktan sonra bile, problemler yaşayabilirsiniz. Yaygın problem kaynaklarından biri kötü tasarlanmış bir anti
virüs programının calibre’nin e-posta gönderimi için açtığı bağlantıları engellemesidir. Anti virüs programınızda calibre için bir istisna koymayı deneyin.
Not: Microsoft/Google/Gmx can disable your account if you use it to send large amounts of email. So, when using
these services to send mail calibre automatically restricts itself to sending one book every five minutes. If you don’t
mind risking your account being blocked you can reduce this wait interval by going to Preferences->Tweaks in calibre.
Not: Google recently deliberately broke their email sending protocol (SMTP) support in an attempt to force everyone
to use their web interface so they can show you more ads. They are trying to claim that SMTP is insecure, that is
incorrect and simply an excuse. If you have trouble with gmail you will need to allow “less secure” apps as described
here47 .
Not: Calibre’ye e-posta hesabınıza erişim vermekle ilgili soru işaretleriniz varsa, GMX veya Hotmail ile yeni bir
e-posta hesabı açın ve bunu yalnızca calibre ile kullanın.
46
47
http://www.gmx.com
https://support.google.com/accounts/answer/6010255
114
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Aygıtım linux altında yalnızca okunur bağlandığından calibre bağlanamıyor?
Linux çekirdekleri aygıtları dosya sistemlerinde hata olduğunda yalnızca okunur bağlar. Dosya sistemini şöyle düzeltebilirsiniz:
=
{}=
{}@default
=0=1=2=0=1=2sudo fsck.vfat \PYGZhy{}y /dev/sdc
/dev/sdc’yi aygıtınızın aygıt düğüm yoluyla değiştirin. Aşağıdaki çıktıya göz atarak /dev altındaki aygıt düğümünüzü
bulabilirsiniz:
=
{}=
{}@default
=0=1=2=0=1=2\PYG{n}{mount}
Calibre neden Kindle koleksiyonlarını veya Nook raflarını desteklemiyor?
Ne Kindle ne de Nook koleksiyonların USB üzerinden değiştirilmesi için bir yöntem sunmaz. Gerçekten koleksiyon kullanmak istiyorsanız, Kindle/Nook aygıtınızı satıp bir Kobo almanızı öneririm. Hayatın bir e-mürekkep ekran
üzerinden tek tek koleksiyon girmek için çok kısa olduğunu yalnızca Kobo anlamış gibi görünüyor :)
Kindle durumunda, koleksiyonları USB üzerinden değiştirmenin bir yolu olduğunu not edelim, ama bu koleksiyonlara
yapılan değişikliklerin yansıması için Kindle’nin bilgisayardan çıkarıldığı her seferde yeniden başlatılmasını gerektiriyor. Durum bu olunca herhangi bir calibre geliştiricisinin bunu destekleyecek motivasyonu bulacağını sanmıyorum.
Ancak Kindle’niz üzerinde calibre metadata’sından koleksiyon oluşturmanızı sağlayan bir eklenti mevcut. Şuradan48
bulabilirsiniz.
Not: Amazon Kindle Touch ve Kindle Fire gibi yeni modellerinde koleksiyonların değiştirilmesi yetisini tamamen
kaldırdı, böylece Kindle’nizi kırıp özel yazılım yüklemediğiniz sürece yukardaki eklenti de kullanışsız olacaktır.
Calibre’yi Kobo Touch/Glo/vs. ile kullanırken hata alıyorum?
Kobo çok hatalı bir yazılıma sahip. Bağlantıların rastgele zamanlarda başarısız olduğu biliniyor. Bazı anakart, USB
port/kablo/hub kombinasyonları bu başarısızlığı tetikliyor olabilir. Touch aygıtınıza bağlanırken hata alıyorsanız aşağıdakini deneyin, bunlar bazı calibre kullanıcıları için bazen sorunları çözmüş teknikler.
• Kobo’yu bilgisayara doğrudan bağlayın, USB Hub kullanmadan
• Farklı bir USB kablosu ve bilgisayarınızdaki farklı bir USB portunu kullanın
• Başka bir bilgisayar deneyin, özel olarak Kobo bazı Windows XP makinelerle iyi çalışmaz. Windows XP üzerindeyseniz, Windows’un daha yeni sürümüne sahip bir bilgisayar ile deneyin.
• Kobo Touch yazılımınızı son sürüme güncellemeye çalışın
• Kobo’yu sıfırlamayı deneyin (bazen bu sorunu bir süreliğine çözer, ardından sorun tekrarlanabilir, böylece tekrar
tekrar sıfırlamanız gerekiyor)
• Kobo’ya yalnızca bir iki kitap koyarak kullanmayı deneyin, büyük kitap koleksiyonlarından kaçının
48
http://www.mobileread.com/forums/showthread.php?t=244202
1.8. Sıkça Sorulan Sorular
115
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Calibre kullanarak bazı kitapları Kindle’me yükledim ama görünmüyorlar?
Kindle’ye gönderilen kitaplar ancak Kindle tarafından *indis*lendiklerinde görünürler. Bu biraz zaman alabilir. Kitap
bir süre sonra hala görünmüyorsa, Kindle indisleyici çökmüş olabilir. Bazen belirli bir kitap çökmeye sebep olmuş
olabilir. Malesef, Amazon hangi kitabın çökmeye neden olduğuyla ilgili bir bilgi sağlamaz. Yapabileceğiniz tek şey
Kindle’yi baştan başlatmak, veya Windows Gezgini (veya hangi dosya yöneticisini kullanıyorsanız) ile hafızasından
tüm dosyaları silerek kitapları teker teker, sorun yaratan kitabı bulana kadar göndermektir. Sorunlu kitabı bulduktan
sonra, kitabı Kindle’den silin, calibre ile MOBI’den MOBI’ye veya MOBI’den AZW3’e dönüştürme yapın ve tekrar
gönderin. Bu muhtemelene sorunu çözecektir.
1.8.3 Kitaplık Yönetimi
İçindekiler
•
•
•
•
•
•
•
•
Kitap dosyaları nerede saklanıyor? (sayfa 116)
Calibre yazar adlarını ve sıralamayı nasıl yönetiyor? (sayfa 116)
Neden calibre kitapları kendi dizin yapımda tutmama izin vermiyor? (sayfa 118)
Neden calibre’nin x için sütunu yok? (sayfa 118)
Biçimleri veya ISBN’i gönderek bir sütunum olabilir mi? (sayfa 119)
How do I move my calibre data from one computer to another? (sayfa 119)
Calibre’deki kitap listesi boş! (sayfa 119)
Bir ağ sürücüsünde/NAS’da calibre kitaplığımla ilgili hatalar alıyorum? (sayfa 120)
Kitap dosyaları nerede saklanıyor?
Calibre’yi ilk çalıştırdığınızda, kitapları nereye saklamak istediğinizi belirterek bir dizin sorar. Calibre’ye her kitap
eklediğinizde, kitabı bu dizine kopyalar. Dizindeki kitaplar güzelce Yazar ve Başlık alt dizinlerine düzenlenir. Bu
dizinin içeriği calibre tarafından otomatik yönetilir, bu dizine elle herhangi bir dosya/dizin eklemeyin, otomatik olarak
silinebilirler. Bir kitapla ilişkili bir dosyayı eklemek isterseniz, sağ üst köşedeki Metadata düzenle iletişim penceresini
kullanarak yapın. Böylece calibre bu dosyayı otomatik olarak düzgün dizine koyup yazar/başlık değiştiğinde taşıma
işini halleder.
Kitaplarla ilgili metadata kitaplık dizininin en üst dizininde metadata.db dosyasında saklanır. Bu dosya bir sqlite
veri tabanıdır. Kitaplığınızın yedeğini alırken tüm dizin ve alt dizinleri kopyaladığınızdan emin olun.
Kitaplık dizini ve tüm içeriği calibre kitaplığı dediğimiz şeyi oluşturur. Birden fazla kitaplığınız olabilir. Kitaplıkları
yönetmek için araç çubuğundaki calibre simgesine tıklayın. Yeni kitaplıklar yaratabilir, mevcut kitaplıkları silebilir/yeniden isimlendirebilir ve kitaplıklar arası geçişleri kolaylıkla yapabilirsiniz.
Kitaplıklar arası kitap kopyalamayı (birden fazla kitaplık ayarladığınızda) kitaba sağ tıklayıp Kitaplığa kopyala eylemini seçerek yapabilirsiniz.
Calibre yazar adlarını ve sıralamayı nasıl yönetiyor?
Yazar isimleri karmaşıktır, özellikler kültürler arasında, bu karmaşalardan bazıları için bu nota49 bakın. calibre’nin
yazar isimlerini yönetmek için çok esnek bir stratejisi vardır. Öncelikle kitapların ve yazarların calibre’de ayrı birimler
olduğunu anlamalısınız. Bir kitabın birden fazla yazarı, ve bir yazarın birden çok kitabı olabilir. Bir kitabın yazarlarını
metadata düzenleme iletişim penceresiyle yönetebilirsiniz. Yazarları ana calibre ekranının sol tarafındaki Etiket Tarayıcıdaki yazara sağ tıklayıp Yazarları yönet seçerek yönetebilirsiniz. Bu iletişim penceresini kullanarak hem yazar
49
http://www.w3.org/International/questions/qa-personal-names.en.php?changelang=en
116
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
adını hem adın nasıl sıralanacağını değiştirebilirsiniz. Bu işlem yazar ismini bu yazarın tüm kitaplarında otomatik
olarak değiştirir. Bir kitabın birden çok yazarı olduğunda yazarları & karakteriyle ayırın.
Şimdi yazar ismi sıralamaya gelelim:
• Calibre’ye yeni bir yazar eklendiğinde (yeni yazara sahip bir kitap eklendiğinde olur bu), calibre hem kitap hem
yazar için otomatik olarak bir karakter dizisi hesaplar.
• Etiket Tarayıcıdaki yazarlar yazarlar için olan sıralama değerine göre sıralanır. Bunun bir kitabın Yazar sıralama
alanından farklı olduğunu unutmayın.
• Varsayılan olarak, bu sıralama algoritması yazar isminin Ad Soyad biçiminde olduğunu varsayar ve bir
Soyad, Ad sıralama değeri üretir.
• Bu algoritmayı Tercihler->Ayarlar menüsüne gidip author_sort_copy_method ayarı ile değiştirebilirsiniz.
• Herhangi bir yazara sağ tıklayıp Yazarları yönet seçerek, ardından Tüm yazar sıralama değerlerini yeniden
hesapla tıklayarak calibre’nin tüm yazar sıralama değerlerini yeniden hesaplamasına yol açabilirsiniz. Bunu
author_sort_copy_method ayarını istediğiniz değere ayarladıktan sonra yapın.
• Calibre’yi yazar sıralama değerlerini yeniden hesaplamaya toplu metadata düzenleme iletişim penceresini kullanarak zorlayabilirsiniz (tüm kitapları seçin ardından metadata düzenle, ve Yazar sıralamayı otomatik ayarla
kontrol kutusunu işaretleyip Tamama tıklayın.)
• Kitaplar için yazar sıralama değerlerini tekrar hesaplarken, calibre her yazar için tek tek yazar sıralama değerlerini kullanır. Böylece kitapların yazar sıralama değerlerini tekrar hesaplamadan önce her bir yazar sıralama
değerlerinin düzgün olduğundan emin olur.
• Tercihler->Ayarlar içindeki categories_use_field_for_author_name ayarını kullanarak Etiket Tarayıcının yazarları isimlerine göre mi sıralama değerlerine göre mi sıralayacağını kontrol edebilirsiniz
Yazarları yönet kullanarak her bir yazarın sıralama değerini ayarlayabileceğinizi unutmayın. Bu, calibre’nin doğru
algılayamayacağı isimlerle uğraşırken faydalıdır, örneğin Miguel de Cervantes Saavedra gibi karmaşık çok parçalı
isimler veya Sun Tzu gibi Asya isimleri ile.
Tüm bu esneklikle, calibre yazar adlarını istediğiniz gibi yönetmenize imkan tanır. Örneğin, çok gelen bir istek yazarları Soyad,
• Yukarıda anlatıldığı gibi author_sort_copy_method ayarını kopyala olarak ayarlayın.
• Calibre’yi yeniden başlatın. Kalan adımları yapmadan herhangi bir kitap metadata değişikliği yapmayın.
• Yazarları yönet iletişim penceresini kullanarak tüm yazar adlarını Soyad, Ad şeklinde değiştirin.
• Tüm yazarları değiştirdikten sonra, Tüm yazar sıralama değerlerini yeniden hesapla düğmesine tıklayın.
• Tamama tıklayın, bu noktada calibre tüm kitaplarınızdaki yazarları değiştirir. Bu biraz sürebilir.
Not:
Ad Soyaddan Soyad Ada değişiklik yaparken, author_sort içindeki değerlerin Soyad, Ad biçiminde olmasına genelde rastlanır. B
• yukarıda anlatıldığı gibi author_sort_copy_method ayarını kopyala olarak ayarlayın.
• calibre’yi yeniden başlatın. Kalan adımları yapmadan herhangi bir kitap metadata değişikliği yapmayın.
• Yazarları yönet iletişim penceresini açın. Tüm yazar sıralama değerlerini yazara
kopyala düğmesine tıklayın.
• Yazarlara göz atıp istediğinizin bu olduğundan emin olun. Hala Vazgeçe tıklayarak değişiklikleri iptal
edebilirsiniz. Tamama tıkladığınızda, geri dönüşü yoktur.
• Tamama tıklayın, bu noktada calibre tüm kitaplarınızdaki yazarları değiştirir. Bu biraz sürebilir.
1.8. Sıkça Sorulan Sorular
117
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Neden calibre kitapları kendi dizin yapımda tutmama izin vermiyor?
Calibre’nin kitaplık yönetimi özelliklerinin tüm noktası sizin koleksiyonunuz için oluşturabileceğiniz herhangi bir
dizin yapısından çok daha etkili bir arama ve sıralama arayüzü sağlamasıdır. Öyle ki, calibre’nin arayüzünü kullanarak
rahatça arama, sıralama ve koleksiyonunuzda tarama yapmaya başladığınızda bir kitabı bulmak için diskte arama
yapmanıza hiç gerek kalmayacak. Kendi Yazar -> Başlık -> Kitap dosyaları dizin yapısında kitapları tutarak calibre
yüksek düzeyde standartlaştırma ve güvenilirlik sağlar. Arama/etiketleme temelli bir arayüzün dizinlere göre neden
üstün olduğunu göstermek için şunu düşünün. Örneğin kitap koleksiyonunuz aşağıdaki şablonda güzelce sıralanmış
olsun:
=
{}=
{}@default
=0=1=2=0=1=2Genre \PYGZhy{}\PYGZgt{} Author \PYGZhy{}\PYGZgt{} Series \PYGZhy{}\PYGZgt{} ReadStatus
Bu, Foundation serisindeki Isaac Asimov tarafından yazılan tüm bilim kurgu kitaplarını bulmayı çok kolaylaştırır.
Ama tüm okunmamış bilim kurgu kitaplarını bulmak istediğinizi düşünün. Bu dizin yapısıyla bunu yapmanın kolay
bir yolu yoktur, yerine, şu şekilde görünen bir dizin yapısına ihtiyaç duyarsınız:
=
{}=
{}@default
=0=1=2=0=1=2ReadStatus \PYGZhy{}\PYGZgt{} Genre \PYGZhy{}\PYGZgt{} Author \PYGZhy{}\PYGZgt{} Series
Calibre’de ise, türleri ve okunma durumunu işaretlemek için etiketler kullanır ve örneğin tag:scifi and not
tag:read gibi basit bir arama sorgusu kullanırsınız. Hatta calibre’nin güzel bir grafik arayüzü olduğundan arama
dilini öğrenmenize gerek kalmadan sadece etiketlere tıklayarak aramaya dahil eder ya da aramadan çıkarırsınız.
To those of you that claim that you need access to the filesystem, so that you can have access to your books over the
network, calibre has an excellent content server that gives you access to your calibre library over the net.
If you are worried that someday calibre will cease to be developed, leaving all your books marooned in its folder
structure, explore the powerful Save to Disk feature in calibre that lets you export all your files into a folder structure
of arbitrary complexity based on their metadata.
Son olarak, her başlık dizinin sonunda sayı olmasının sebebi sağlamlıktır. Bu numara calibre veri tabanındaki kitap
kaydının kimlik numarasıdır. Numaranın varlığı aynı başlık ve yazar ismine sahip birden fazla kaydınız olmasını
sağlar. Ayrıca calibre’nin veritabanı dosyası bozulduğunda tüm metadata ile beraber veri tabanını sihirli bir şekilde
yeniden oluşturmasını sağlayan yapının parçasıdır. Calibre’nin amacının metadata’yı dosya isimlerinde saklamayı
ve bir şeyleri bulmak için dosya sistemini kullanmayı durdurmak olduğunu düşünürsek, kimlik numaralarının dizin
isimlerinde çirkin durmasının artan sağlamlık yanında önemsiz olduğunu söyleyebiliriz.
Hala tatmin olmadıysanız, sanırım calibre size göre değil. Kitap kataloglama ihtiyaçlarınız için başka bir çözüm arayın.
Şunu açıkça belirtelim, bu değişmeyecek. Bunu değiştirmemiz için lütfen bizimle iletişime geçmeyin.
Neden calibre’nin x için sütunu yok?
calibre sık ve en çok kullanılan alanların sütunları olacak şekilde tasarlanmıştır. Ek olarak, istediğiniz sütunları da
ekleyebilirsiniz. Sütunlar Tercihler->Arayüz->Kendi sütunlarınızı ekleyin ile eklenebilirler. Kendi sütunlarınızı nasıl
oluşturacağınızı öğrenmek için UI İpuçları50 rehberini izleyin veya bu blog yazısını51 okuyun.
Ayrıca diğer sütunlardan metadata kombinasyonları içeren “sanal sütunlar” da oluşturabilirsiniz. Sütun ekleme iletişim penceresinde Hızlı oluştur bağlantılarını kullanarak kolaylıkla kitap ISBN veya biçimlerini gösterebilirsiniz.
50
51
http://calibre-ebook.com/demo#tutorials
http://blog.calibre-ebook.com/2011/11/calibre-custom-columns.html
118
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Calibre’nin güçlü şablon dilini kullanarak sütunlarla çok daha fazlasını yapabilirsiniz. Daha fazla detay için, bknz
Calibre şablon dili (sayfa 135).
Biçimleri veya ISBN’i gönderek bir sütunum olabilir mi?
Evet. Özel sütunlar eklemek için aşağıdaki cevaptaki yönergeleri takip edin.
How do I move my calibre data from one computer to another?
You can export all calibre data (books, settings and plugins) and them import it on another computer. First let use see
how to export the data:
• Right click the calibre icon in the main calibre toolbar and select Export/Import all calibre data. Then click the
button labelled Export all your calibre data. You will see a list of all your calibre libraries. Click OK and choose
an empty folder somewhere on your computer. The exported data will be saved in this folder. Simply copy this
folder to your new computer and follow the instructions below to import the data.
• Install calibre on your new computer and run through the Welcome Wizard, it does not matter what you do there,
as you will be importing your old settings in the next step. You will now have an empty calibre, with just the
Getting Started guide in your library. Once again, right click the calibre button and choose Export/Import all
calibre data. The click the button labelled Import previously exported data. Select the folder with the exported
data that you copied over earlier. You will now have a list of libraries you can import. Go through the list one
by one, and select the new location for each library (a location is just an empty folder somewhere on your
computer). Click OK. After the import completes, calibre will restart, with all your old libraries, settings and
calibre plugins.
Not: This import/export functionality is only available from calibre version 2.47 onwards. If you have an older
version of calibre, or if you encounter problems with the import/export, you can just copy over your calibre library
folder manually, as descibed in the next paragraph.
Basitçe calibre kitaplık dizinini eski bilgisayardan yeni bilgisayara kopyalayın. Kitaplık dizininin ne oloduğunu araç
çubuğundaki calibre simgesine tıklayarak öğrenebilirsiniz. İlk öğe kitaplık dizininin yoludur. Şimdi yeni bilgisayarda
calibre’yi ilk defa başlatın. Size calibre kitaplığının yolunu soran Hoşgeldin Sihirbazını başlatacaktır. Daha önce kopyaladığınız yolu seçin. Kopyaladığınız bilgisayarda daha önceden calibre yüklemesi yapılmışsa, Hoşgeldin Sihirbazı
çalışmayacaktır. Bu durumda, araç çubuğundaki calibre simgesine sağ tıklayın ve yeni kopyalanmış dizini gösterin.
Artık bilgisayarınızda iki calibre kitaplığı olacaktır ve araç çubuğundaki calibre simgesine tıklayarak aralarında geçiş
yapabileceksiniz. Kitaplığı bu şekilde taşımak tüm metadata, etiket, özel sütunlar, vs. bilgisini korur.
Calibre’deki kitap listesi boş!
Bunun neden olduğunu anlamak için, calibre kitaplığının ne olduğunu anlamalısınız. En basit düzeyde, calibre kitaplığı
sadece bir dizindir. Calibre’ye her kitap eklediğinizde, bu kitabın dosyaları bu dizine kopyalanır (alt dizinlerde yazar ve
başlığa göre düzenlenerek). Calibre kitaplık dizininde, en üst seviyede, metadata.db adında bir dosya görürsünüz. Bu
dosya calibre’nin tüm kitaplar için başlık/yazar/puan/etiketler vs. gibi metadata bilgisini tuttuğu dosyadır. Calibre’nin
görüntülediği kitap listesi bu metadata.db dosyasının içeriğini okumasıyla oluşturulur.
Calibre’nin boş kitap listesi göstermesinin iki sebebi olabilir:
• Your calibre library folder changed its location. This can happen if it was on an external disk and the drive letter
for that disk changed. Or if you accidentally moved the folder. In this case, calibre cannot find its library and so
starts up with an empty library instead. To remedy this, do a right-click on the calibre icon in the calibre toolbar
and select Switch/create library. Click the little blue icon to select the new location of your calibre library and
click OK. If you don’t know the new location search your computer for the file metadata.db.
1.8. Sıkça Sorulan Sorular
119
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
• Metadata.db dosyanız siliniş/bozuk olabilir. Bu durumda calibre’den metadata.db dosyasını yedeklerden tekrar
oluşturmasını isteyebilirsiniz. Calibre araç çubuğundaki calibre simgesine sağ tıklayın ve Kitaplık bakımı->Veri
tabanını geri yükleyi seçin. calibre metadata.db dosyasını tekrar oluşturacaktır.
Bir ağ sürücüsünde/NAS’da calibre kitaplığımla ilgili hatalar alıyorum?
Calibre kitaplığınızı bir ağ sürücüsüne koymayın.
A filesystem is a complex beast. Most network filesystems lack various filesystem features that calibre uses. Some
don’t support file locking, some don’t support hardlinking, some are just flaky. Additionally, calibre is a single user
application, if you accidentally run two copies of calibre on the same networked library, bad things will happen.
Finally, different OSes impose different limitations on filesystems, so if you share your networked drive across OSes,
once again, bad things will happen.
Calibre kitaplığınızı diğer bilgisayarlarda kullanılabilir hale getirmek için İçerik Sunucuyu kullanmayı düşünün. Calibre’yi tek bir bilgisayarda çalıştırın ve İçerik Sunucu veya Uzak Masaüstü çözümüyle erişin.
Kitaplığı illa paylaşmanız gerekiyorsa, ağ sürücüsü yerine DropBox veya rsync gibi bir dosya eşzamanlama aracı
kullanın. Bir dosya eşzamanlama aracı kullanıyorsanız hem calibre hem eş zamanlama aracının kitaplığa aynı zamanda
erişmemesini sağlamak gereklidir. Başka bir deyişle, calibre ve eş zamanlama aracını aynı zamanda çalıştırmayın.
Bu araçlarla bile veri kaybı/bozulması tehlikesi bulunmaktadır, yani yalnızca bu riski göze alıyorsanız yapın. Özel
olarak, Google Drive**nin calibre ile uyumsuz olduğunu bilin, calibre kitaplığınızı Google Drive’ye koyarsanız,
**veri kaybı yaşarsınız. Detaylar için bu başlığa52 göz atın.
1.8.4 Muhtelif
İçindekiler
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
52
Calibre’nin sık kullanılan haber sitemden haberleri indirmesini istiyorum. (sayfa 121)
Neden calibre ismi? (sayfa 121)
Calibre neden OS X’de sadece bazı yazı tiplerimi gösteriyor? (sayfa 121)
calibre Windows’da başlamıyor? (sayfa 121)
calibre sık sık donuyor/çöküyor? (sayfa 122)
Görüntüleyiciyi kullanmak ya da herhangi bir dönüştürme yapmak Windows üzerinde izin verilmedi hatasına yol açıyor (sayfa 123)
calibre OS X üzerinde başlamıyor/çöküyor? (sayfa 123)
Yükleyiciyi indirdim ama çalışmıyor? (sayfa 123)
Antivirüs programım calibre’nin bir virüs/trojen olduğunu söylüyor? (sayfa 124)
Calibre’yi nasıl yedeklerim? (sayfa 124)
Satın aldığım EPUB kitapları calibre ile nasıl kullanırım (veya .acsm dosyalarıyla ne yapacağım)?
(sayfa 124)
“İzin Verilmedi” hatası alıyorum? (sayfa 125)
Yorum metadata’sının okuyucumda görüntülenmesini sağlayabilir miyim? (sayfa 125)
Calibre’nin HTTP vekilimi kullanmasını nasıl sağlarım? (sayfa 125)
Calibre’ye bir özelliğin eklenmesini istiyorum. Ne yapabilirim? (sayfa 125)
Calibre’nin neden otomatik güncellemesi yok? (sayfa 126)
Calibre’nin lisansı nedir? (sayfa 126)
Calibre’yi USB diskimden nasıl çalıştırırım? (sayfa 126)
Calibre’nin haber indirme ve içerik sunucusu gibi kısımlarını kendi linux sunucumda nasıl çalıştırırım?
(sayfa 126)
http://www.mobileread.com/forums/showthread.php?t=205581
120
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Calibre’nin sık kullanılan haber sitemden haberleri indirmesini istiyorum.
Bilgisayarlarla aranız biraz iyiyse, calibre’ye seçtiğiniz herhangi bir siteden haberleri indirmesini öğretebilirsiniz.
Bunu nasıl yapacağınızı öğrenmek için bknz Sık kullandığınız haber sitesini ekleme (sayfa 23).
Özel bir site için calibre Tarifler forumunda53 bir başlık açıp istekte bulunabilirsiniz.
Neden calibre ismi?
İstediğinizi seçin:
• Convertor And LIBRary for Ebooks
• Yüksek calibre ürün
• İlk e-mürekkep tabanlı e-kitap okuyucu SONY Librie’ye atıf
• Eşim seçti ;)
calibre cal-i-ber olarak söylenir ca-li-bre değil. Merak ediyorsanız, calibre caliber’in İngiliz/kamu söylenişidir. Bir
Hintli olarak bana normal gelen söyleniş de bu.
Calibre neden OS X’de sadece bazı yazı tiplerimi gösteriyor?
calibre yazı tiplerini oluşturduğu e-kitap dosyaları içine gömer. E-kitap dosyaları yalnızca TrueType ve OpenType
(.ttf ve .otf) yazı tiplerini destekler. OS X sistemlerdeki çoğu yazı tipi .dfont biçimindedir, yani gömülemezler. calibre
yalnızca sisteminizdeki TrueType ve OpenType yazı tiplerini gösterir. Web’den bir çok benzeri yazı tipi indirebilirsiniz.
Basitçe .ttf/.otf dosyaları indirin ve ev dizininizdeki Kitaplık/Yazı tipleri dizinine ekleyin.
calibre Windows’da başlamıyor?
Bunun bir takım sebepleri olabilir:
• Windows XP üzerindeyseniz, veya SSE2 desteklemeyen işlemcili bir bilgisayardaysanız (2003’den önceki AMD
işlemciler gibi) calibre 1.48 sürümünü54 yüklemeyi deneyin. calibre 2.0 ve sonrası Windows XP makinelerle
uyumsuz olan, ve SSE2 isteyen Qt 5 kullanır. Basitçe calibre’yi kaldırın ve 1.48 sürümünü yükleyin, kitaplarınız/ayarlarınız etkilenmeyecektir.
• Calibre’nin başka bir program tarafından açık olduğundan bir dosyayı açamadığıyla ilgili hata alıyorsanız, şunu
yapın:
– Calibre’yi kaldırın
– Bilgisayarı yeniden başlatın
– Calibre’yi tekrar yükleyin. Ama yükleme sihirbazından calibre’yi başlatmayın.
– Geçici olarak anti virüs programınızı kapatın (emin olmak için yapmadan önce internet bağlantısını kesin)
– Calibre kitaplığınız için seçtiğiniz dizin içine bakın. metadata.db adında bir dosya görürseniz, silin.
– Calibre’yi başlatın
– Bu noktada calibre’yi normal şekilde başlatabiliyor olmalısınız.
53
54
http://www.mobileread.com/forums/forumdisplay.php?f=228
http://download.calibre-ebook.com/1.48.0/
1.8. Sıkça Sorulan Sorular
121
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
• Calibre’yi güncelledikten sonra bir Python fonksiyonunun beklenmedik şekilde sonlandığıyla ilgili hata alırsanız, önce calibre’yi silin, sonra (eğer mevcutsa) C:\Program Files\Calibre ve C:\Program
Files\Calibre2 altındaki dizinleri silin. Şimdi tekrar yükleme yaptığınızda düzelmeli.
• Calibre’yi ilk çalıştırdığınızda hoşgeldin sihirbazında bir hata alırsanız, calibre kitaplığı olarak C:\library
gibi bir dizin seçmeyi deneyin (calibre bazen yol İngilizce dışında karakter içeriyorsa, veya sadece numaralardan
oluşuyorsa, vs. sorun yaşar)
• Yönetici olarak çalıştırmayı deneyin (Simgeye sağ tıklayın ve “Yönetici olarak çalıştır” seçin)
Yine da açılmıyorsa, bir komut satırı başlatın (windows tuşuna ardından R’ye basın; ve Çalıştır penceresine cmd.exe
yazın). Komut satırında aşağıdaki komutu girin ve Enter tuşuna basın:
=
{}=
{}@default
=0=1=2=0=1=2\PYG{n}{calibre}\PYG{o}{\PYGZhy{}}\PYG{n}{debug} \PYG{o}{\PYGZhy{}}\PYG{n}{g}
Gördüğünüz çıktıyı bir yardım iletisi olarak Forum’a55 gönderin.
calibre sık sık donuyor/çöküyor?
Buna sebep olabilecek bildiğim bir kaç sorun var:
• You recently connected an external monitor or TV to your computer. In this case, whenever calibre opens a new
window like the edit metadata window or the conversion dialog, it appears on the second monitor where you
don’t notice it and so you think calibre has frozen. Disconnect your second monitor and restart calibre.
• RoboForm kullanıyorsanız, calibre’nin çökmesine sebep olduğu bilinir. Bunu çözmek için calibre’yi RoboForm
içinde siyah listeye alın. Veya RoboForm’u kaldırın.
• Logitech SetPoint Ayarları uygulaması açık olduğunda calibre’nin rasgele çökmesine sebep olur. Calibre’yi
başlatmadan önce kapatın.
• Xfinity’nin yaptığı Constant Guard Protection calibre’nin çökmesine sebep olur. Ya Constant Guard Protection’u
kaldırmalısınız ya da calibre’ye izin verdirmelisiniz.
• Spybot - Ara & Yok et, calibre’nin geçici dosyalarına erişmesini engelleyerek kitap dönüştürme ve görüntülemeyi bozar.
• Wacom marka USB fare kullanıyorsunuz. Calibre’nin kullandığı grafik araç takımıyla Wacom fare arasında bir
uyumsuzluk vardır. Wacom dışında bir fare kullanmayı deneyin.
• Bazı 64 bit Windows sürümlerinde 64-bit calibre’nin düzgün çalışmasını engelleyen bazı güvenlik yazılımları/ayarları vardır. Calibre’nin 64-bit sürümünü kullanıyorsanız 32-bit sürüme geçmeyi deneyin.
• Eğer çökme özellikle siz bir dosya açma iletişim penceresi açtığınızda oluyorsa, örneğin Kitap Ekle veya Diske
Kaydet düğmelerinde, bilgisayarınızdaki windows dosya açma iletişim pencereleriyle ilgili bir sorununuz olabilir. Bazı calibre kullanıcıları SpiderOak şifreli yedekleme yazılımını kaldırmanın çökmeleri durdurduğunu
raporladı. SpiderOak’ı kaldırmak istemiyorsanız, SpiderOak tercihlerindeki “İşletim sistemi tümleştirmesini
ekinleştir” ayarını kapatabilirsiniz.
Yukarıdakilerin hiçbiri işinizi görmüyorsa, bilgisayarınızda calibre ile çakışan başka bir program var demektir. Bilgisayarınızı güvenli kipte yeniden başlatın, böylece olabildiğince az programla başlayacaktır, ve çökmeler hala oluyor
mu kontrol edin. Eğer olmuyorsa, sorunun bir programdan kaynaklandığını anlarsınız. En şüpheli programlar diğer
programların davranışını değiştirenlerdir, örneğin antivirüs, aygıt sürücüsü, RoboForm gibi bir şey (otomatik form
doldurma uygulaması) veya Ses Kontrol veya Ekran Okuyucuy gibi yardımcı bir teknoloji.
55
http://www.mobileread.com/forums/forumdisplay.php?f=166
122
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Sorun kaynağını bulmanın tek yolu programları tek tek eleyerek soruna yol açanı anlamaktır. Temel olarak, programı
durdurun, calibre’yi çalıştırın, çökme var mı kontrol edin. Hala sorun varsa başka bir programı durdurun ve tekrar
edin.
Görüntüleyiciyi kullanmak ya da herhangi bir dönüştürme yapmak Windows üzerinde izin verilmedi
hatasına yol açıyor
Bilgisayarınızdaki bir şey calibre’nin kendi geçici dosyalarına erişmesini engelliyor. Muhtemelen Temp dizininizin
izinleri yanlış. Windows Gezgini ile file:C:\Users\KULLANICIADI\AppData\Local dizinine gidin ve file:Temp dizinine sağ tıklayın, Özellikleri seçin ve Güvenlik sekmesine gidin. Kullanıcı hesabınızın bu dizine tam erişimi olduğunu
kontrol edin.
Bazı kullanıcılar Yönetici komut satırında aşağıdaki komutu çalıştırmanın izinlerini düzelttiğini söylediler. Yönetici
Komut Satırı açmak için başlat menüsünde cmd.exe arayın, komut satırı girdisine sağ tıklayın ve Yönetici olarak
Çalıştırı seçin. Komut satırında aşağıdaki komutu yazın ve Enter tuşlayın:
=
{}=
{}@default
=0=1=2=0=1=2icacls \PYGZdq{}\PYGZpc{}appdata\PYGZpc{}\PYGZbs{}..\PYGZbs{}Local\PYGZbs{}Temp\PYGZdq{} /
Alternatif olarak, calibre’yi Yönetici olarak çalıştırabilirsiniz, ama böyle yapmak sürükle bırak gibi bazı işlevlerin
çalışmamasına yol açar.
Son olarak, bazı kullanıcılar UAC’nin kapatılmasının problemi çözdüğünü raporladılar.
calibre OS X üzerinde başlamıyor/çöküyor?
OS X üzerindeki başarısızlıkların sebeplerinden biri calibre’nin kullandığı grafik araçlarının kullandığı erişilebilirlik teknolojilerinin uyumsuzluğudur. Eğer açıksa VoiceOver’i kapatmayı deneyin. Ayrıca Sistem Tercihleri->Sistem>Evrensel Erişim’e gidin ve tüm sekmelerdeki yardımcı aygıtlar için erişimi açan ayarı kapatın. Başka bir sebep ise
Smart Scroll gibi sistem davranışını değiştiren üçüncü şahıslara ait uygulamalar olabilir.
Calibre’nin neden başlamadığıyla ilgili hata ayıklama çıktısını Console.app çalıştırarak alabilirsiniz. Hata çıktısı buraya yazılacaktır. Eğer hata çıktısı şuna benzer bir satır içeriyorsa:
=
{}=
{}@default
=0=1=2=0=1=2Qt: internal: \PYGZhy{}1: Error ATSUMeasureTextImage text/qfontengine\PYGZus{}mac.mm
problem muhtemelen bozuk yazı tipi zulasından kaynaklanıyordur. Zulayı şu yönergeleri56 takip ederek temizleyebilirsiniz. Bu sorunu çözmezse, sisteminizde ~/Library/Fonts veya benzeri yerde bozuk yazı tipi dosyası var mı diye
bakın. OS X üzerinde bozuk yazı tiplerine bakmanın kolay yollarından biri “Yazı Tipi Kitabı” uygulamasını başlatarak
tüm yazı tiplerini seçip Dosya menüsünden “Yazı tiplerini doğrula” seçmektir.
Yükleyiciyi indirdim ama çalışmıyor?
Downloading from the Internet can sometimes result in a corrupted download. If the calibre installer you downloaded
is not opening, try downloading it again. If re-downloading it does not work, download it from an alternate location57 .
If the installer still doesn’t work, then something on your computer is preventing it from running.
• Geçici olarak antivirüs programınızı kapatmayı deneyin (Microsoft Security Essentials, veya Kaspersky veya
Norton veya McAfee veya her neyse). Güncelleme süreci yarıda kalıyorsa sorun büyük ihtimalle budur.
56
57
http://www.macworld.com/article/1139383/fontcacheclear.html
https://github.com/kovidgoyal/calibre/releases/latest
1.8. Sıkça Sorulan Sorular
123
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
• Bilgisayarınızı yeniden başlatmayı ve bir kayıt temizleyici çalıştırmayı deneyin örneğin ‘Wise registry cleaner
http://www.wisecleaner.com>‘_.
• Temiz bir yükleme deneyin. Yani, calibre’yi silin, C:\Program Files\Calibre2 (veya calibre’yi nereye
yüklemeyi seçtiyseniz) silin. Calibre’yi baştan kurun. Kaldırmanın kitaplarınızı veya ayarlarınızı silmeyeceğini
hatırlatalım.
• Yükleyiciyi değişik bir tarayıcı ile indirmeyi deneyin. Örneğin Internet Explorer kullanıyorsanız, Firefox veya
Chrome kullanmayı deneyin.
• Windows üzerinde eksik DLL hatası alırsanız, muhtemelen, geçici dizininizin izinleri geçersizdir. Windows tarayıcı ile C:\Users\USERNAME\AppData\Local dizinine gidin ve Temp dizinine sağ tıklayıp Özellikler
tıklayın ve Güvenlik sekmesine gidin. Kullanıcı hesabınızın bu dizine tam kontrolü olduğunu doğrulayın.
Hala yükleyiciyi çalıştıramıyorsanız ve Windows üzerindeyseniz, bir yükleyiciye ihtiyaç duymayan (sadece bir zip
dosyasıdır) calibre taşınabilir yüklemeyi58 deneyebilirsiniz.
Antivirüs programım calibre’nin bir virüs/trojen olduğunu söylüyor?
İlk kontrol etmeniz gereken calibre’yi kendi web sitesinden indirip indirmediğinizdir: http://calibreebook.com/download. Soldaki indirme bağlantılarına tıkladığınızdan emin olun, sağdaki reklamlara değil. calibre
oldukça ünlü bir program ve ahlaksız kişiler bilmeyenleri kandırmak için indirme web siteleri yapıyorlar.
Resmi siteden indirdiyseniz ve antivirüs programınız hala calibre’yi virüs olarak görüyorsa, antivirüs programınız yanılıyor demektir. Antivirüs programları sezgisel davranırlar, “şüpheli görünen” kod parçaları ararlar. Irka göre ayırma
gibi bir şeydir bu. calibre tamamen açık kaynaklı bir yazılımdır. Bir virüs programı olmadığını görmek için tüm kaynak
kodunu kendiniz tarayabilirsiniz (veya bu işi yapması için birini kiralayabilirsiniz). Lütfen yanlış tanıyı hangi firmadan antivirüs programı alıyorsanız oraya bildirin. Antivirüs programı calibre’yi indirmenizi/yüklemenizi engelliyorsa,
geçici olarak kapatın, calibre’yi yükleyin ve tekrar açın.
Calibre’yi nasıl yedeklerim?
Yedeklenecek en önemli şey calibre kitaplık dizinidir, burası tüm kitaplarınızı ve metadata’yı barındırır. Calibre’yi ilk
defa çalıştırdığınızda size sorulan calibre kitaplığı dizini burasıdır. Ana araç çubuğundaki calibre simgesine tıklayarak
kitaplık dizininin yolunu alabilirsiniz. Bu dizini tamamen tüm alt dizinleriyle yedeklemeniz gerekir.
Araç çubuğundaki calibre simgesine tıklayıp daha önceden yedek alınmış bir kitaplık dizinini kolayca kullanmaya
başlayabilirsiniz. Yedeklenmiş bir kitaplık dizini özel sütunlarınızı ve kaydedilmiş aramalarınızı da kitap ve metadata
bilgisiyle beraber tutar.
Calibre aiyarları/eklentilerini yedeklemek isterseniz, ayar dizinini yedeklemelisiniz. Bu dizini Tercihler->Çeşitli ile
bulabilirsiniz. Yapılandırma dizinlerinin geri yüklenmesinin resmi olarak desteklenmediğini söylemeliyiz, ama çoğu
durumda çalışacaktır. Yedek dizinin içeriğini mevcut ayar dizinine kopyalamanız yeterli.
Satın aldığım EPUB kitapları calibre ile nasıl kullanırım (veya .acsm dosyalarıyla ne yapacağım)?
Satın alınan çoğu EPUB kitap DRM59 içerir. Bu calibre’nin bu dosyaları açmasını engeller. Calibre’yi hala bu dosyaları
e-kitap okuyucunuza aktarmak için kullanabilirsiniz. Önce Adobe Digital Editions bulunan Windows bir makineden
e-kitap okuyucunuza yetki vermelisiniz. Bu tamamlanınca, calibre tarafından aktarılan EPUB kitaplar düzgün çalışır.
Bir web sitesinden epub kitap satın aldığınızda bir ”.acsm” dosyası alırsınız. Bu dosyanın Adobe Digital Editions
tarafından açılması gerekir ki bu da asıl ”.epub” e-kitabını indirir. E-kitap dosyası “My Digital Editions” isimli bir
dizinde tutulur, burada calibre’ye ekleyebilirsiniz.
58
59
http://calibre-ebook.com/download_portable
http://drmfree.calibre-ebook.com/about#drm
124
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
“İzin Verilmedi” hatası alıyorum?
İzin verilmedi hatası bir takım sebeplerden olabilir, hiçbirinin calibre ile bir ilgisi yoktur.
• Yazma koruması açık bir SD kart kullanıyorsanız izin verilmedi hatası alabilirsiniz.
• Siz ya da kullandığınız herhangi bir program dosyaların izinlerini yalnızca okunur olarak değiştirdiyse alabilirsiniz.
• Aygıtta bir dosya sistemi hatası olduysa bu işletim sisteminizin dosya sistemini yalnızca okunur kipte bağlamasına yol açar veya belli bir dosyayı kurtarılmayı bekliyor olarak yalnızca okunur şekilde işaretler.
• Dosyaların sahibi sizden başka biri olarak ayarlıysa.
• Dosyanız başka bir program tarafından açılmışsa.
• If the file resides on a device, you may have reached the limit of a maximum of 256 files in the root of the device.
In this case you need to reformat the device/sd card referred to in the error message with a FAT32 filesystem, or
delete some files from the SD card/device memory.
Calibre kullanmaya devam etmeden önce izin hatalarının sebebini bulup düzeltmeniz gerekir. Hata iletisini dikkatlice
okuyun, hangi dosyayı işaret ettiğine bakın ve bu dosyayı ya da dosyayı içeren dizini düzeltin.
Yorum metadata’sının okuyucumda görüntülenmesini sağlayabilir miyim?
Çoğu okuyucu bunu desteklemez. Üreticiye bu konuda yakınmalı ve yeterli sayıda insanın yakınırsa bir şeylerin değişeceğini ummalısınız. Bu arada, metadata’yı yorumlar da dahil olmak üzere e-kitabın başındaki bir “Ceket sayfasına”
dönüştürme aşamasındaki “Metadata’yı sayfa olarak kitap başına koy” seçeneğiyle koyabilirsiniz. Bu seçenek dönüştürme ayarlarının Yapı Algılama kısmında bulunur. Bunun etki etmesi için kitabı dönüştürmek zorundasınız. Kitabınız
zaten dönüştürülmeye ihtiyaç duymayan bir biçimdeyse, bu biçimden aynı biçime dönüştürme yapabilirsiniz.
Başka bir alternatif calibre kitaplığınızdaki tüm kitapların listesini metadata’ları ile birlikte içeren e-kitap biçimindeki
bir katalog oluşturmaktır. Katalog oluşturma aracına erişmek için dönüştürme düğmesine tıklayıp basılı tutun. Siz
sormadan söyleyeyim, kataloğun okuyucunuzdaki kitaplara “doğrudan bağlantılanması” mümkün değildir.
Calibre’nin HTTP vekilimi kullanmasını nasıl sağlarım?
Varsayılan olarak, calibre işletim sisteminizde hangi vekil ayarları varsa onu kullanır. Bazen bunlar geçersizdir, örneğin, Windows üzerinde Internet Explorer kullanmıyorsanız vekil ayarları güncel olmayabilir. Calibre’ye belli bir
vekil sunucuyu kullanmasını http_proxy çevre değişkeni ile söyleyebilirsiniz. Değişkenin biçimi şu şekildedir:
http://kullanıcıadı:parola@sunucuadı ağ yöneticinizden bu değişken için doğru değeri vermesini isteyebilirsiniz. Calibre’nin HTTP vekilleri desteklediğini, SOCKS vekilleri desteklemediğini unutmayın. Calibre tarafından kullanılan mevcut vekilleri Tercihler->Çeşitli ile görebilirsiniz.
Calibre’ye bir özelliğin eklenmesini istiyorum. Ne yapabilirim?
İki seçeneğiniz var:
1. Calibre üzerinde çalışarak bir yama oluşturup bana yollayabilirsiniz. Bknz See Geliştirme60 .
2. Özelliği rica ettiğiniz bir hata kaydı açın61 . Unutmayın özellik isteğiniz size çok önemli/gerekli gelebilir,
ama calibre geliştiricileri sizle hem fikir olmayabilir. Neyse ki calibre açık kaynaktır, yani kendi özelliğinizi
kendiniz yapabilir, veya sizin için yapması için birini tutabilirsiniz. Dahası, calibre’nin çok kapsamlı bir
60
61
http://calibre-ebook.com/get-involved
http://calibre-ebook.com/bugs
1.8. Sıkça Sorulan Sorular
125
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
eklenti mimarisi vardır, yani özelliğinizi bir eklenti olarak geliştirebilirsiniz, bknz Calibre’nin işlevselliğini
artırmak için kendi eklentilerinizi yazmak (sayfa 173).
Calibre’nin neden otomatik güncellemesi yok?
Bir çok sebepten:
• Her hafta güncellemeye gerek yok. Calibre’nin çalışmasından memnunsanız güncelleme iletilerini kapatın ve
yolunuza devam edin. Senede bir gelip güncelleme var mı diye bakın. Güncelleme iletisi üzerinde güncelleme
iletilerini kapatmak için bir kontrol kutusu bulunmaktadır.
• calibre indirmeleri şu anda ayda 100TB bant genişliği62 kullanıyor. Otomatik güncellemeleri uygulamak bu
sayıyı oldukça artırıp her ay birilerinin ödemesi gereken binlerce dolar paraya mal olacaktır.
• Güncellemeyi indiren ve çalıştıran bir iletişim penceresi uyarlarsam, en çok güncelleme yapan insanı şimdi
çalışan websitesine gidip indirme mantığından haftada en fazla beş tık kar ettirebilirim. Calibre geliştirmesinde
bundan çok daha yüksek öncelikli işler var.
• Calibre’yi indirmekten gerçekten bu kadar nefret ediyorsanız, ve sürekli güncel olmak istiyorsanız, kaynak
koddan çalıştırmanızı öneririm, bu yöntem güncellemeyi çok kolaylaştırır. Yönergeler burada (sayfa 266).
• calibre forumunda63 calibre kullanıcıları tarafından yapılan üçüncü şahıs otomatik güncelleyiciler bulunmaktadır.
Calibre’nin lisansı nedir?
calibre GNU Genel Kamu Lisansı sürüm 3 (bir açık kaynak lisansı) ile lisanslanmıştır. Bunun anlamı kaynak kodu açık
tuttuğunuz sürece calibre’yi istediğiniz gibi tekrar dağıtabileceğinizdir. Yani calibre’yi ürününüzle birlikte bir CD’ye
koymak istiyorsanız, aynı zamanda calibre kaynak kodunu da CD’ye koymak zorundasınız. Kaynak kod indirilebilirdir64 . Calibre tarafından yapılan dönüştürmelerin çıktılarını istediğiniz gibi kullanmakta özgürsünüz. Yazılımınızı açık
kaynak yapmadan calibre kod veya kitaplıklarını yazılımınızda kullanamazsınız. Detaylar için, bknz GNU GPL v365 .
Calibre’yi USB diskimden nasıl çalıştırırım?
Calibre’nin taşınabilir bir sürümü buradan66 kullanılabilir.
Calibre’nin haber indirme ve içerik sunucusu gibi kısımlarını kendi linux sunucumda nasıl çalıştırırım?
Öncelikle, calibre’yi linux sunucunuza kurmalısınız. Sunucunuz modern bir linux dağıtımı kullanıyorsa, calibre kurulumunda pek sıkıntı yaşamamalısınız.
Not: calibre’nin GLIBC >= 2.13 ve libstdc++ >= 6.0.17 ihtiyacı vardır. Daha eski bir sunucunuz varsa, ya bunları
kaynaktan derlemeli, ya da yalnızca GLIBC >= 2.10 ihtiyacı olan calibre 1.48 kullanmalısınız. Ek olarak, calibre’nin
komut satırı araçları çalışan bir X sunucuya ihtiyaç duymasa da, bazıları X sunucu kitaplıklarının kurulu olmasına
ihtiyaç duyabilir. Bunun sebebi bu kitaplıklara bağlanan Qt’dir. Bir takım Qt modülleriyle ilgili içe aktarma hataları
alırsanız, bazı X kitaplıklarınız eksik demektir.
62
63
64
65
66
http://calibre-ebook.com/dynamic/downloads
http://www.mobileread.com/forums/forumdisplay.php?f=238
http://download.calibre-ebook.com
http://www.gnu.org/licenses/gpl.html
http://calibre-ebook.com/download_portable
126
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Calibre sunucuyu şu komutla çalıştırabilirsiniz:
=
{}=
{}@default
=0=1=2=0=1=2/opt/calibre/calibre\PYGZhy{}server \PYGZhy{}\PYGZhy{}with\PYGZhy{}library /path/to/the/li
Şu komutla haberleri indirip e-kitaba dönüştürebilirsiniz:
=
{}=
{}@default
=0=1=2=0=1=2/opt/calibre/ebook\PYGZhy{}convert \PYGZdq{}Title of news source.recipe\PYGZdq{} outputfil
MOBI üretmek istiyorsanız, çıktıdosyası.mobi ve --output-profile kindle kullanın.
İndirilen haberleri şu komutla e-posta gönderebilirsiniz:
=
{}=
{}@default
=0=1=2=0=1=2/opt/calibre/calibre\PYGZhy{}smtp
Tam komut satırını tahmin etmeyi okuyucuya bırakıyorum.
Son olarak, indirilen haberleri calibre kitaplığına şu komutla ekleyebilirsiniz:
=
{}=
{}@default
=0=1=2=0=1=2/opt/calibre/calibredb add \PYGZhy{}\PYGZhy{}with\PYGZhy{}library /path/to/library outfile
Bunlar ve diğer komutlarla ilgili daha fazla şey öğrenmek için calibre Kullanıcı Kılavuzunun komut satırı belgelerini
okumayı unutmayın.
1.9 Rehberler
Burada calibre’nin Xpath ve şablonlar gibi gelişmiş özelliklerini kullanmaya başlayacağınız rehberleri bulacaksınız.
1.9.1 Kitap alt gruplarını yönetim, örneğin “tür”
Bazı insanlar kitaplıklarındaki kitapları alt dizinlere benzer şekilde alt gruplara düzenlemek isterler. En çok verilen
yanıt tür sıralı dizisi oluşturmak istemeleridir, ama başka bir sürü sebep de olabilir. Bir kullanıcı ders kitaplarını konu
ve ders numarasına göre düzenlemenin yolunu sordu. Bir başkası hediyeleri konu ve alıcıya göre saklamak istedi. Bu
klavuz bu gönderinin devamında tür örneği üzerinden devam edecek.
Devam etmeden önce, sabit diskteki dizinlerden bahsetmidiğimize dikkat edin. Alt gruplar dosya dizinler değillerdir.
Kitaplar herhangi bir yere kopyalanmaz. Calibre’nin kitaplık dosya yapısı etkilenmez. Bunun yerine, kalibre kitaplığı
içinde kitapları alt gruplar halinde göstermek için bir düzenleme yöntemi sunuyoruz.
•
•
•
•
Kurulum (sayfa 129)
Aranıyor (sayfa 131)
Kısıtlamalar (sayfa 131)
Kullanışlı Şablon Fonksiyonlar (sayfa 132)
Tür gibi alt gruplar için yaygın olarak sağlanan gereksinimler:
1.9. Rehberler
127
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
• Bir alt grup (örn., tür) kitap içermelidir (göstermelidir), kitap kategorileri değil. Alt grupları calibre kullanıcı
kategorilerinden ayıran budur.
• Bir kitap birden çok alt grup içinde olabilir (tür). Bu alt grupları fiziksel dosya dizinlerden ayırır.
• Al gruplar (türler) bir sıralı dizi oluşturmalıdır; alt gruplar başka alt gruplar içerebilir.
Etiketler size ilk ikisini verir. Bir kitabı bir türle etiketlerseniz etiket tarayıcı ile (veya arama) o türdeki kitapları
bulabilir böylece ilk özelliği elde edersiniz. Bir çok kitabın aynı etiket(ler)i olabilir, bu da size ikinciyi verir. Buradaki
sorun etiketlerin üçüncü gereksinimi vermemesidir. Bir sıralı dizi oluşturmazlar.
Calibre’nin sıralı dizin özelliği üçüncü özelliği, türleri
‘ağaç’ olarak görme ve tür veya alt tür içinde kolaylıkla kitap arama olanağını verir. Örneğin, tür yapınızın aşağıdaki
gibi olduğunu farz edelim:
=
{}=
{}@default
=0=1=2=0=1=2Genre
. History
.. Japanese
.. Military
.. Roman
. Mysteries
.. English
.. Vampire
. Science Fiction
.. Alternate History
.. Military
.. Space Opera
. Thrillers
.. Crime
.. Horror
etc.
Sıralı dizin özelliğini kullanarak, bu türleri etiket tarayıcıda ekran görüntüsünde gösterildiği gibi ağaç biçiminde görebilirsiniz. Bu örnekte en dıştaki seviye (Tür) türleri içeren özel bir sütundur. Alt türleri içeren türlerin yanında küçük
128
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
bir üçgen bulunur. Bu üçgene tıklamak öğeyi açar ve alt türleri gösterir, Geçmiş ve Bilim Kurgu ile görebileceğiniz
gibi.
Bir türe tıklamak o türdeki ya da onun alt türlerindeki tüm kitapları arar. Örneğin, Bilim Kurguya tıklamak tüm üç alt
türü de verebilir, Alternatif Tarih, Askeri, Uzay Operası. Alternatif Tarih’e tıklamak bu türdeki kitapları verir, Askeri
ve Uzay Operası türlerini göz ardı eder. Tabi ki, bir kitabın birden çok türü olabilir. Bir kitabın hem Uzak Operası,
hem Askeri türü varsa, her iki türe de tıkladığınızda bu kitabı görürsünüz. Arama aşağıda daha detaylı tartışılmıştır.
Resimden görebileceğinz bir başka şey de Askeri türün iki kere belirmesidir, bir kere Tarih altında ve bir kere Bilim
Kurgu altında. Türler sıralı dizi şeklinde oldukları için, bunlar iki ayrı türdür. Kitap birinde olabilir, diğerinde olabilir,
veya (şüpheli şekilde) ikisinde de. Örneğin, Winston Churchill’in “İkinci Dünya Savaşı” kitabı “Tarih.Askeri” içinde
olabilir. David Weber’in Honor Harrington kitapları “Bilim Kurgu.Askeri” içinde, ve bu durum için ayrıca “Bilim
Kurgu.Uzay Operası” içinde olabilir.
Bir tür mevcut olduğunda, ki bu en az bir kitabın bu türde olması demektir, bu türü diğer kitaplara kitaplık görünümünden kitapları istediğiniz tür üzerine sürükleyerek kolaylıkla uygulayabilirsiniz. Türleri ayrıca metadata düzenleyicilerde de uygulayabilirsiniz; bu konuda daha fazlası aşağıda.
Kurulum
Şimdi, “Bunların hepsi nasıl oldu?” diye sorabilirsiniz. Üç adımda: 1) özel sütun oluşturun, 2) calibre’ye yeni sütunun
bir sıralı dizi olduğunu söyleyin, ve 3) türleri ekleyin.
Özel sütunu olağan şekilde oluşturun, Seçenekler -> Kendi sütunlarınızı ekleyin. Bu örnek arama ismi olarak “#genre”
ve sütun başlığı olarak “Tür” kullanır. Sütun türü “Virgülle ayrılmış metin, etiketler gibi, etiket tarayıcıda gösterilir.”
Calibre’yi yeniden başlattıktan sonra, calibre’ye sütunun bir sıralı dizi olduğunu söylemelisiniz. Seçenekler -> Görünüm ve Doku -> Etiket Taryıcıyı açın ve “Sıralı dizili öğeli kategoriler” kutusuna “#genre” yazın. Uygula’ya tıklayın,
ve ayarlama işini bitirdiniz.
1.9. Rehberler
129
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Bu noktada sütunda hiçbir tür yoktur. Son adıma geldik: bir kitaba tür uygulama. Bir kitap türü en az bir kitapta bulunana kadar calibre’de var olmaz. İlk defa bir türün nasıl uygulanacağını öğrenmek için, bir türün kitap metadata’sında
nasıl göründüğünden biraz bahsetmeliyiz.
Bir “şeylerin” sıralı dizisi noktalarla ayrılmış ifadelerden oluşan öğeler oluşturmakla inşa edilir. Tür örneğinden devam edersek, bu öğeler “Tarih.Askeri”, “Gizem.Vampir”, “Bilim Kurgu.Uzay Operası”, vs. olur. Yani yeni bir tür
oluşturmak için, bu türe ait olması gereken bir kitap seçer, metadata’sını düzenler, ve oluşturduğunuz sütuna yeni türü
girersiniz. Örnekten devam edersek, bir kitaba yeni bir tür olan ve “Süper kahramanlar” alt türlü “Çizgiroman” türünü atamak isterseniz, bu (çizgiroman) kitabın ‘metadatasını düzenler’, Özel metadata sekmesini seçer, ve aşağıda
gösterildiği gibi “Çizgiroman.Süper Kahramanlar” girersiniz (diğer özel sütunları göz ardı edin):
Yukarıdakileri yaptıktan sonra, etiket tarayıcıda şunları görürsünüz:
130
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Burdan sonra, bu yeni türü bir kitaba (çizgiroman, muhtemelen) atamak için, kitabı tür üzerine sürükleyebilir, ya da
yukarıda yapıldığı gibi aynı şekilde metadata düzenleyerek kitaba ekleyebilirsiniz.
Aranıyor
Tür aramanın en kolay yolu etiket tarayıcıyı kullanarak görmek istediğiniz türe tıklamaktır. Alt türü olan bir türe
tıklamak bu türde ve tüm alt türlerinde bulunan kitapları gösterir. Ancak bu bir soru işareti getirebilir. Sırf bir türün
alt türü var diye, kendi başına bir tür değildir anlamına gelmez değil mi. Örneğin, bir kitabın “Tarih” türü olabilir ama
“Tarih.Askeri” türde değildir. Yalnızca “Tarih”e sahip kitapları nasıl arayabiliriz ?
Etiket tarayıcı arama mkenizması bir öğenin alt öğesi olup olmadığını bilir. Varsa, öğeye tıklamak normal üç yerine
5 aramadan geçer. İlki normal yeşil artıdır, yalnızca o türde kitapları gösterir (örn., Tarih). İkincisi artı artı (yukarıda
gösterildi), size bu türde ve tüm alt türlerindeki kitapları gösterir (örn., Tarih ve Tarih.Askeri). Üçüncü normal kırmızı
eksidir, size tam bu türde olmayan kitapları gösterir. Dördüncü eksi eksidir, Bu türde veya alt türlerinde olmayan
kitapları gösterir. Beşinci başa dönüştür, işaretsiz, yani arama yapılmama durumu.
Kısıtlamalar
Bir tür için arama yapar ve aramayı kaydederseniz, ‘kısıtla’ kutusunu kullanarak bu türe ait kitaplardan oluşan sanal
bir kitaplık yapabilirsiniz. Tür içinde başka aramalar yapmak istediğinizde veya bu türdeki kitapların metadata’sını yönetmek/güncellemek için faydalıdır. Örneğimize devam edersek, önce arama kutusuna bir arama getirmek için etiket
tarayıcıda Japonca türüne tıklayabilir ve ‘Tarih.Japonca’ adında kaydedilmiş bir arama oluşturabilirsiniz, kaydedilmiş aramaya Tarih.Japonca girebilir, ve “aramayı kaydet” düğmesine (sağ taraftaki beyaz artı işareti olan yeşil kutu)
tıklayabilirsiniz.
1.9. Rehberler
131
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Kaydedilmiş aramayı oluşturduktan sonra, bunu bir kısıtlama olarak kullanabilirsiniz.
Kullanışlı Şablon Fonksiyonlar
Tür bilgisini diske kaydet veya aygıta göndermek gibi bir şablonda kullanmak isteyebilirsiniz. O zaman
soru “En dıştaki tür isim veya isimlerini nasıl alırım?” olur. Bir calibre şablon fonksiyonu, alt öğeler, bu
işi daha kolay yapmak için sağlanmıştır.
Örneğin, “Tarih/The Gathering Storm - Churchill, Winston” gibi, tür dizinleri yapmak için en dıştaki
tür seviyesini diske-kaydet şablonuna eklemek istediğinizi farz edin. Bunu yapmak için sıralı dizinin ilk
seviyesini çıkarmalı ve bir dizin yapmasını belirtmek için yatık çizgi ile beraber ön tarafa eklemelisiniz.
Aşağıdaki şablon bu işi görür:
=
{}=
{}@default
=0=1=2=0=1=2
\PYGZob{}\PYGZsh{}genre:subitems( 1)\textbar{}\textbar{}/\PYGZcb{}\PYGZob{}title\
Şablonlar ve subitems() fonksiyonu ile ilgili daha fazla bilgi için Şablon diline (sayfa 135) göz atın.
1.9.2 XPath Rehberi
Bu rehberde calibre içinde HTML67 belgelerinin rasgele parçalarını seçmekte kullanılabilen XPath68 sorgu dili için
bir giriş bulacaksınız. XPath yaygın olarak kullanılan bir standarttır ve bir web araması çokça bilgi döndürecektir.
Bu rehber yapılandırılmamış bir HTML belgesi içinde bölüm başlıklarını bulmak gibi e-kitaplarla ilgili görevlere
odaklanacaktır.
67
68
http://en.wikipedia.org/wiki/HTML
http://en.wikipedia.org/wiki/XPath
132
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
İçindekiler
•
•
•
•
•
Etiket adına göre seçmek (sayfa 133)
Özniteliğe göre seçmek (sayfa 134)
Etiket içeriğine göre seçmek (sayfa 134)
Örnek e-kitap (sayfa 134)
XPath tümleşik fonksiyonları (sayfa 134)
Etiket adına göre seçmek
Seçimin en basit formu etiketleri isme göre seçmektir. Örneğin; belgedeki tüm <h2> etiketlerini seçmek istediğinizi
düşünelim. XPath sorgusu basitçe şöyle olacaktır:
=
{}=
{}@default
=0=1=2=0=1=2//h:h2
(Selects all \PYGZlt{}h2\PYGZgt{} tags)
Baştaki // öneki belgedeki tüm düzeylerde ara anlamına gelmektedir. Şimdi ise <a> etiketi içindeki
‘‘<span>‘‘etiketlerini arıyor olalım. Bunu yapan sorgu:
=
{}=
{}@default
=0=1=2=0=1=2//h:a/h:span
(Selects \PYGZlt{}span\PYGZgt{} tags inside \PYGZlt{}a\PYGZgt{} tags)
Eğer belgedeki belirli bir düzeydeki etiketleri arayacak olursanız öneki değiştirin:
=
{}=
{}@default
=0=1=2=0=1=2/h:body/h:div/h:p (Selects \PYGZlt{}p\PYGZgt{} tags that are children of \PYGZlt{}div\PYGZ
children of the \PYGZlt{}body\PYGZgt{} tag)
Bu Örnek e-kitap (sayfa 134) içinde sadece <p>A very short ebook to demonstrate the use of
XPath.</p> ifadesiyle eşleşecek ama diğer <p> etiketleriyle eşleşmeyecektir. Yukarıdaki örneklerdeki h: öneki
XHTML etiketleriyle eşleşmesi içindir. Bunun nedeni calibre’nin tüm içeriği XHTML olarak tutmasıdır. XHTML
etiketlerinde bir isim alanı bulunur ve h: HTML etiketleri için isim alanı önekidir.
Şimdi <h1> ve <h2> etiketlerini seçmek isteyelim. Bunu yapabilmek için XPath’in predicate isimli yapısına ihtiyacımız vardır. Bir predicate basitçe etiketleri seçmek için bir testtir. Testler keyfi güçlü olabilir ve bu rehber ilerledikçe,
daha güçlü örneklerini göreceksiniz. Bir predicate, test ifadesinin kare parantezler içine alınmasıyla oluşturulur:
=
{}=
{}@default
=0=1=2=0=1=2//*[name()=\PYGZsq{}h1\PYGZsq{} or name()=\PYGZsq{}h2\PYGZsq{}]
Bu XPath ifadesinde pek çok yenilik bulunmaktadır. Bunların ilki * karakteridir. herhangi bir etiketle eşleş anlamına
gelmektedir. Şimdi test ifadesine bakalım name()=’h1’ or name()=’h2’. name() tümleşik fonksiyona bir örnektir. Basitçe etiketin adını değerlendirir. Bu nedenle onu kullanarak, isimleri h1 veya h2 olan etiketleri seçebiliriz.
name() fonksiyonunun isim alanlarını yok saydığını ve bu nedenle h: ön ekine ihtiyaç olmadığına dikkat edin. XPath
çok fazla tümleşik fonksiyona sahiptir. Bunlardan bir kaçına bu rehberde değinilecektir.
1.9. Rehberler
133
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Özniteliğe göre seçmek
Etiketleri özniteliklerine göre seçmek için bu ifadelerin kullanılması gereklidir:
=
{}=
{}@default
=0=1=2=0=1=2//*[@style]
(Select all tags that have a style attribute)
//*
//h:h1[@class=\PYGZdq{}bookTitle\PYGZdq{}] (Select all h1 tags that have class=\PYGZdq{}bookTitle\PYG
Buradaki @ operatörü etiketin özniteliğine karşılık gelir. Öznitelik değerleriyle ilgili daha karmaşık eşleşmeler için
XPath tümleşik fonksiyonlarını (sayfa 134) kullanabilirsiniz.
Etiket içeriğine göre seçmek
XPath kullanarak etiketleri içerdikleri metinlere göre seçebilirsiniz. Bunu yapmanın en iyi yolu re:test() tümleşik
fonksiyonunun düzenli ifadelerini kullanmaktır:
=
{}=
{}@default
=0=1=2=0=1=2//h:h2[re:test(., \PYGZsq{}chapter\textbar{}section\PYGZsq{}, \PYGZsq{}i\PYGZsq{})] (Selec
Buradaki . operatörü etiketin içeriğine karşılık gelir, @ operatörünün özniteliklere karşılık gelmesi gibidir.
Örnek e-kitap
=
{}=
{}@default
=0=1=2=0=1=2\PYG{n+nt}{\PYGZlt{}html}\PYG{n+nt}{\PYGZgt{}}
\PYG{n+nt}{\PYGZlt{}head}\PYG{n+nt}{\PYGZgt{}}
\PYG{n+nt}{\PYGZlt{}title}\PYG{n+nt}{\PYGZgt{}}A very short ebook\PYG{n+nt}{\PYGZlt{}/title\P
\PYG{n+nt}{\PYGZlt{}meta} \PYG{n+na}{name=}\PYG{l+s}{\PYGZdq{}charset\PYGZdq{}} \PYG{n+na}{va
\PYG{n+nt}{\PYGZlt{}/head\PYGZgt{}}
\PYG{n+nt}{\PYGZlt{}body}\PYG{n+nt}{\PYGZgt{}}
\PYG{n+nt}{\PYGZlt{}h1} \PYG{n+na}{class=}\PYG{l+s}{\PYGZdq{}bookTitle\PYGZdq{}}\PYG{n+nt}{\P
\PYG{n+nt}{\PYGZlt{}p} \PYG{n+na}{style=}\PYG{l+s}{\PYGZdq{}text\PYGZhy{}align:right\PYGZdq{}
\PYG{n+nt}{\PYGZlt{}div} \PYG{n+na}{class=}\PYG{l+s}{\PYGZdq{}introduction\PYGZdq{}}\PYG{n+nt
\PYG{n+nt}{\PYGZlt{}p}\PYG{n+nt}{\PYGZgt{}}A very short ebook to demonstrate the use of X
\PYG{n+nt}{\PYGZlt{}/div\PYGZgt{}}
\PYG{n+nt}{\PYGZlt{}h2} \PYG{n+na}{class=}\PYG{l+s}{\PYGZdq{}chapter\PYGZdq{}}\PYG{n+nt}{\PYG
\PYG{n+nt}{\PYGZlt{}p}\PYG{n+nt}{\PYGZgt{}}This is a truly fascinating chapter.\PYG{n+nt}{\PY
\PYG{n+nt}{\PYGZlt{}h2} \PYG{n+na}{class=}\PYG{l+s}{\PYGZdq{}chapter\PYGZdq{}}\PYG{n+nt}{\PYG
\PYG{n+nt}{\PYGZlt{}p}\PYG{n+nt}{\PYGZgt{}}A worthy continuation of a fine tradition.\PYG{n+n
\PYG{n+nt}{\PYGZlt{}/body\PYGZgt{}}
\PYG{n+nt}{\PYGZlt{}/html\PYGZgt{}}
XPath tümleşik fonksiyonları
name() Mevcut etiketin adı.
contains() contains(s1, s2) ifadesi eğer s1, s2’yi içerirse true döndürür.
134
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
re:test() re:test(src, desen, bayraklar) ifadesi eğer src karakter dizisi desen düzenli ifadesiyle eşleşirse true döndürür. Eşleşmeyi büyük küçük harfe duyarlı yapan i özellikle yararlı bir bayraktır. Düzenli ifadeler
için iyi bir giriş regexp sözdizimi69 sayfasında bulunabilir
1.9.3 Calibre şablon dili
Calibre şablon dili çeşitli yerlerde kullanılır. Calibre kitaplığından diske veya e-kitap okuyucuya dosyaları kaydederken dizin yapısını ve dosya isimlerini kontrol etmede kullanılır. Ayrıca diğer sütunlardan veri içeren “sanal” sütunlar
tanımlamada kullanılır vs.
Temel şablon dili çok basittir, ama çok güçlü gelişmiş özellikleri vardır. Ana fikir şablonun metinden oluşması ve isimlerin işlenen kitaptan gelen ilgili metadata ile değiştirilecek süslü parantez içinde olmasıdır. Yani örneğin, calibre’de
kitapları aygıta kaydetmede kullanılan ön tanımlı şablon:
=
{}=
{}@default
=0=1=2=0=1=2\PYG{p}{\PYGZob{}}\PYG{n}{author\PYGZus{}sort}\PYG{p}{\PYGZcb{}}\PYG{o}{/}\PYG{p}{\PYGZob{
“Isaac Asimov”dan “The Foundation” kitabı için şu şekle gelir:
=
{}=
{}@default
=0=1=2=0=1=2Asimov, Isaac/The Foundation/The Foundation \PYGZhy{} Isaac Asimov
Yatık çizgiler metindir, belirdikleri yerde şablona koyulurlar. Örneğin, şablonunuz şu ise:
=
{}=
{}@default
=0=1=2=0=1=2\PYGZob{}author\PYGZus{}sort\PYGZcb{} Some Important Text \PYGZob{}title\PYGZcb{}/\PYGZob{
“Isaac Asimov”dan “The Foundation” kitabı için şu şekle gelir:
=
{}=
{}@default
=0=1=2=0=1=2Asimov, Isaac Some Important Text The Foundation/The Foundation \PYGZhy{} Isaac Asimov
Calibre’de uygun tüm metadata alanlarını, kendiniz oluşturduğunuz özel sütunlar da dahil olmak üzere bir şablonda
kullanabilirsiniz. Bir sütunun şablon adını bulmak için farenizi sütun başlığı üzerine getirin. Özel alanlar için isimler
(kendi oluşturduğunuz sütunlar) ilk karakter olarak # alırlar. Seri biçimli özel alanlar için her zaman, bu seri için seri
indisi olan #seriesname_index isimli ek bir alan vardır. Yani #myseries isimli bir özel seri alanınız varsa,
#myseries_index isimli bir alan da olacaktır.
Sütun tabanlı alanlara ek olarak, şunu da kullanabilirsiniz:
=
{}=
{}@default
=0=1=2=0=1=2\PYGZob{}formats\PYGZcb{} \PYGZhy{} A list of formats available in the calibre library for
\PYGZob{}identifiers:select(isbn)\PYGZcb{} \PYGZhy{} The ISBN number of the book
Belirli bir kitabın belirli bir metadata parçası olmazsa, şablondaki alan otomatik olarak bu kitap için kaldırılır. Şu
örneği düşünün:
69
https://docs.python.org/2.7/library/re.html
1.9. Rehberler
135
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
=
{}=
{}@default
=0=1=2=0=1=2\PYGZob{}author\PYGZus{}sort\PYGZcb{}/\PYGZob{}series\PYGZcb{}/\PYGZob{}title\PYGZcb{} \PY
Kitabın bir serisi varsa, şablon şunu üretir:
=
{}=
{}@default
=0=1=2=0=1=2Asimov, Isaac/Foundation/Second Foundation 3
ve kitabın serisi yoksa:
=
{}=
{}@default
=0=1=2=0=1=2Asimov, Isaac/Second Foundation
(calibre çift yan çizgileri veya satır sonu boşlukları otomatik olarak kaldırır).
Gelişmiş biçimleme
Şablonlarla basit yer değişikliklerinden fazlasını yapabilirsiniz. Duruma bağlı olarak metin ekleyebilir ve değiştirilen
verinin nasıl biçimleneceğini kontrol edebilirsiniz.
Önce, duruma göre metin ilavesi. Bazı durumlarda metnin çıktıda yalnızca bir alan boş olmadığı zaman bulunmasını istersiniz. Yaygın bir durum ya hiçbir şey, ya da aralarında tire olan iki değer olsun istediğiniz series ve
series_index durumudur. Calibre bu durumu özel bir alan söz dizimi kullanarak ele alır.
Örneğin, şablonu kullanmak istediğinizi ele alalım:
=
{}=
{}@default
=0=1=2=0=1=2\PYG{p}{\PYGZob{}}\PYG{n}{series}\PYG{p}{\PYGZcb{}} \PYG{o}{\PYGZhy{}} \PYG{p}{\PYGZob{}}\
Kitabın serisi yoksa, cevap - - title olacaktır. Çoğu insan sonucun tire işaretleri olmadan basitçe title olmasını
terchi eder. Bunu yapmak için genişletilmiş söz dizimi kullanın {field:|prefix_text|suffix_text}. Bu
söz dizimini kullandığınızda, alanın SERIES değeri varsa sonuç ‘‘prefix_textSERIESsuffix_text‘‘olacaktır. Alanın bir
değeri yoksa, sonuç boş karakter dizisi olur (hiçbir şey); ön ek ve son ek göz ardı edilir. Ön ek ve son ek boşluk
içerebilir. Ön ek ve son ek olarak alt şablonlar (‘{ ... }‘) veya fonskiyonlar (aşağıya göz atın) kullanmayın.
Bu söz dizimini kullanarak yukardaki seri problemini şablonda şöyle çözebiliriz:
=
{}=
{}@default
=0=1=2=0=1=2\PYGZob{}series\PYGZcb{}\PYGZob{}series\PYGZus{}index:\textbar{} \PYGZhy{} \textbar{} \PYG
Tireler kitabın yalnızca bir seri indisi varsa içerilir, seri indisi de yalnızca seri varsa olacaktır.
Notlar: ön ek ya da son ek kullanmak istiyorsanız : karakterini eklemelisiniz. Ya | karakterlerini kullanmamalı ya da ikisini de kullanmalısınız; {field:| - }‘ de olduğu gibi birini kullanmaya izin verilmez.
‘‘{series:|| - }‘‘de olduğu gibi herhangi bir tarafa metin sağlanmayabilir.
‘‘{title:||} kullanmak {title} kullanmak ile aynıdır.
İkincisi: biçimleme. series_index’in her zaman takip eden sıfırları olan üç rakam şeklinde biçimlenmesini istediğinizi
farz edelim. Bu işimizi görürdü:
136
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
=
{}=
{}@default
=0=1=2=0=1=2\PYGZob{}series\PYGZus{}index:PYGZgt{}3s\PYGZcb{} \PYGZhy{} Three digits with leading zero
Takip eden sıfırlar yerine takip eden boşluklar için, şunu kullanın:
=
{}=
{}@default
=0=1=2=0=1=2\PYGZob{}series\PYGZus{}index:\PYGZgt{}3s\PYGZcb{} \PYGZhy{} Three digits with leading spa
İzleyen sıfırlar için, şunu kullanın:
=
{}=
{}@default
=0=1=2=0=1=2\PYGZob{}series\PYGZus{}index:PYGZlt{}3s\PYGZcb{} \PYGZhy{} Three digits with trailing zer
Alt değerleri olan (ör., 1.1) seri indisleri kullanırsanız, kesirli noktaların sıralanmasından emin olmak isteyebilirsiniz. Örneğin, düzgün sıralanması için 1 ve 2.5 indislerinin 01.00 ve 02.50 olarak görünmesini isteyebilirsiniz. Bunu
yapmak için, şunu kullanın:
=
{}=
{}@default
=0=1=2=0=1=2\PYGZob{}series\PYGZus{}index:PYGZgt{}5.2f\PYGZcb{} \PYGZhy{} Five characters, consisting
Verinin yalnızca ilk iki harfini istiyorsanız, şunu kullanın:
=
{}=
{}@default
=0=1=2=0=1=2\PYGZob{}author\PYGZus{}sort:.2\PYGZcb{} \PYGZhy{} Only the first two letter of the author
Calibre şablon dili python’dan gelir ve bu gelişmiş biçimleme işlemleri hakkında daha çok detay için, Python belgelerine70 göz atabilirsiniz.
Gelişmiş özellikler
Özel sütunlarda şablon kullanmak
Bazı durumlarda calibre’nin normalde göstermediği metadata’yı göstermek isteyebilirsiniz, veyea veriyi calibre’nin normalde gösterdiğinden farklı biçimde göstermek isteyebilirsiniz. Örneğin, calibre’nin göstermediği
ISBN’i göstermek isteyebilirsiniz. Bu iş için ‘diğer sütunlardan inşa edilen sütun’ (burdan sonra birleşik sütunlar olarak geçecektir) oluşturarak özel sütunlar kullanabilir, ve bir şablon girebilirsiniz. Sonuç: calibre
bu şablonun değerlendirme sonuçlarını bir sütunda gösterir. ISBN göstermek için, sütun oluşturun ve şablon kutusuna {identifiers:select(isbn)} girin. Virgülle ayrılmış iki seri özel sütun göstermek için,
{#series1:||,}{#series2} kullanın.
Birleşik sütunlar, biçimleme dahil tüm şablon seçeneklerini kullanabilirler.
Birleşik sütundaki veriyi değiştiremezsiniz. Bir birleşik sütunu herhangi bir öğeye çift tıklayarak düzenlerseniz, şablonu düzenleme için açarsınız, altındaki veriyi değil. GUI üzerinde şablon düzenleme birleşik sütunları değiştirme ve
test etme için hızlı bir yöntemdir.
70
https://docs.python.org/2/library/string.html#format-string-syntax
1.9. Rehberler
137
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Şablonlarda fonksiyon kullanma - tekli-fonksiyon kipi
Normalde başlık harfleri boyutundayken, bir alanın değerini büyük harflerler göstermek istiyorsunuz diyelim. Bunu (ve
daha bir çok şeyi) şablonlar için kullanılabilir fonksiyonlarla yapabilirsiniz. Örneğin, başlığı büyük harfle göstermek
için {title:uppercase()} kullanın. Başlık boyutunda göstermek için {title:titlecase()} kullanın.
Fonksiyon referansları biçimleme kısmında : den sonra | veya kapatan } den önce belirir. Hem bir biçim hem fonksiyon referansınız varsa, fonksiyon ikinci bir : den sonra gelir. Fonksiyonlar her zaman () ile bitmelidir. Bazı fonksyionlar ek değerler (bağımsız değişken) alabilir, bunlar da () içine gider.
Fonksiyonlar her zaman biçim tanımlamalarından önce uygulanır. Bu sıranın hem biçim hem de bir fonksiyon ile
gösterildiği bir örnek için aşağıya göz atın.
Fonksiyon söz dizimi {field:function(arguments)} veya {field:function(arguments)|prefix|suffix}
şeklindedir. Bağımsız değişkenler virgülle ayrılır. Bağımsız değişkenler içindeki virgüllerin önüne bir ters yatık çizgi
( ‘\’ ) gelir. Son (veya tek) bağımsız değişken kapatan parantez ( ‘)’ ) içeremez. Fonksiyonlar şablonda kullanılan
alanın değerini uygun şekilde düzenlenmiş olarak döndürür.
Önemli: Programlama deneyiminiz varsa, bu kipteki söz diziminin (tekli fonksiyon) beklediğiniz gibi olmayabileceğine dikkat edin. Karakter dizileri tırnak içinde değildir. Boşluklar belirgindir. Tüm bağımsız değişkenler sabit olmalıdır; alt-değerlendirme yoktur. Alt şablonları (‘{ ... }‘) fonksiyon değişkeni olarak kullanmayın. Bunun yerine,
şablon program kipi (sayfa 140) ve genel program kipi (sayfa 161) kullanın.
Bir çok fonksiyon düzenli ifadeler kullanır. Tüm durumlarda, düzenli ifade eşleşmeleri büyük küçük harf bağımsızdır.
Kullanılabilir fonksyionlar aşağıda listelenmiştir. Fonksiyonlar için tanımlayıcı belgelendirme Fonksiyon sınıflandırma
(sayfa 146) kısmındadır:
• lowercase() – alanın değerini küçük harfle döndür.
• uppercase() – alanın değerini büyük harfle döndür.
• titlecase() – alanın değerini başlık boyutunda döndür.
• capitalize() – değeri ilk harfi büyük diğerleri küçük olacak şekilde döndür.
• contains(örüntü, eşleşirse metin, eşleşmezse metin) – alanın örüntü düzenli ifadesi ile
eşleşme içerip içermediğini kontrol eder. Eşleşme olursa eşleşirse metin aksi durumda eşleşmezse metin döndürür.
• count(separator) – değeri separator ile ayrılmış bir öğe listesi olarak yorumlar, listedeki öğe sayısını döndürür. Çoğu liste ayraç olarak virgül kullanır, ama yazarlar ampersan işareti kullanır. Örnekler: {tags:count(,)},
{authors:count(&)}
• format_number(template) – değeri bir sayı olarak yorumlar ve bu numarayı python biçimleme şablonu
kullanarak “{0:5.2f}” veya “{0:,d}” veya “${0:5,.2f}” gibi biçimlendirir. Şablonun field_name kısmı 0 (sıfır)
olmalıdır (yukarıdaki örneklerdeki “{0:”). Daha çok örnek için şablon dili ve python belgelerine göz atın. Biçimlendirme başarısız olursa boş karakter dizisi döndürür.
• human_readable() – değerin bir sayı olmasını bekler ve bu sayıyı KB, MB, GB vs. biçiminde temsil eden
bir karakter dizisi döndürür
• ifempty(text) – alan boş değilse, alanın değerini döndürür. Aksi halde text döndürür.
• in_list(separator, pattern, found_val, not_found_val) – alanı separator ile ayrılmış
öğe listesi olarak yorumlar, listedeki her değeri pattern ile karşılaştırır. Örüntü bir değerle eşleşirse, found_val
döndürür, aksi halde not_found_val döndürür.
• language_codes(lang_strings) – lang_strings ile geçirilen karakter dizileri için dil kodlarını döndür.
Karakter dizileri mevcut yerelle aynı dilde olmalıdır. Lang_strings virgülle ayrılmış bir listedir.
138
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
• language_strings(lang_codes, localize) – lang_codes ile geçirilen dil kodları için karakter dizilerini getirir. localize sıfır ise, karakter dizisini İngilizce olarak döndürür. localize sıfır değilse, karakter dizilerini mevcut yerel dilinde döndürür. Lang_codes virgülle ayrılmış listedir.
• list_item(index, separator) – alanı separator ile ayrılmış öğe listesi olarak yorumla, index‘inci
elemanı döndür. İlk öğe sıfır rakamıdır. Son öğe ‘list_item(-1,separator) kullanarak döndürülebilir. Öğe listede
değilse, boş değer döndürülür. Ayraç count fonksiyonundakiyle aynı anlamı taşır.
• lookup(pattern, field, pattern, field, ..., else_field) – switch gibidir, farkı bağımsız değişkenlerin metin değil, alan (metadata) ismi olmasıdır. Uygun alanın değeri çekilecek ve kullanılacaktır. Bileşik sütunlar alanlar olduklarından, bu fonksiyonu bir bileşik alanda kullanarak başka bir bileşik
alanın değerini kullanabilirsiniz. Değişken kayıt yolları inşa ederken oldukç faydalıdır (bu konuya sonra değinilecek).
• re(pattern, replacement) – alanı, düzenli ifade uyguladıktan sonra döndür. pattern‘in tüm örnekleri
‘replacement ile değiştirilir. Calibre’nin tamamında olduğu gibi, bunlar python-uyumlu düzenli ifadelerdir.
• select(key) – alanı, öğeler “id:value” biçiminde olmak üzere, virgülle ayrılmış öğe listesi olarak yorumlar.
id’nin anahtara eşit olduğu çifti bul, ve ilgili değeri döndür. Bu fonksiyon bir kitap için tanımlayıcılardan isbn
gibi bir değeri çıkarmak için özellikle faydalıdır.
• shorten(left chars, middle text, right chars) – Alanın kısaltılmış bir sürümünü döndürür, bu sürüm alanın solundan sol karakterler, ardından orta karakterler, ve alanın sağından sağ karakterler‘den
oluşur. ‘Sol karakterler ve sağ karakterler tam sayı olmalıdır. Örneğin, kitabın başlığının Ancient English Laws
in the Times of Ivanhoe olduğunu varsayalım, ve bunu en fazla 15 karakterlik bir boşluğa sığdırmaya çalıştığınızı. {title:shorten(9,-,5)} kullanırsanız, sonuç Ancient E-nhoe olacaktır. Alanın uzunluğu sol
karakterler + sağ karakterler + middle text uzunluğundan kısa olursa, alan olduğu gibi kullanılır. Örneğin, The Dome başlığı değiştirilmez.
• str_in_list(val, separator, string, found_val, not_found_val) – val, separator ile
ayrılmış öğe listesi olmak üzere, string’i listedeki tüm değerlerle karşılaştır. string bir değerle eşleşirse, found_val döndür, aksi halde not_found_val döndür. string separator içeriyorsa, liste olarak ele alınır ve her bir
değer kontrol edilir.
• subitems(val, start_index, end_index) – Bu fonksiyon, türler gibi etiket benzeri hiyerarşik listeleri ayırmak için kullanılır. Değeri, her öğe nokta ile ayrılmış liste olmak üzere virgülle ayrılmış etiket benzeri
öğeler listesi olarak yorumlar. Önce nokta ile ayrılmış etiket benzeri öğeleri bulur, sonra her öğe için start_index
den ‘end_index‘e bileşenleri çıkarır, sonra sonuçları geri birleştirir ve yeni bir liste döndürür. Nokta ile ayrılmış listedeki ilk bileşenin sıfır indisi olur. İndis negatifse, listenin sonundan sayar. Özel bir durum olarak, sıfır
end_index’i listenin uzunluğu olarak varsayılır. Örnekler:
=
{}=
{}@default
=0=1=2=0=1=2
Assuming a \PYGZsh{}genre column containing \PYGZdq{}A.B.C\PYGZdq{}:
\PYGZob{}\PYGZsh{}genre:subitems( 1)\PYGZcb{} returns \PYGZdq{}A\PYGZdq{}
\PYGZob{}\PYGZsh{}genre:subitems( 2)\PYGZcb{} returns \PYGZdq{}A.B\PYGZdq{}
\PYGZob{}\PYGZsh{}genre:subitems(1,\PYGZcb{} returns \PYGZdq{}B.C\PYGZdq{}
Assuming a \PYGZsh{}genre column containing \PYGZdq{}A.B.C, D.E\PYGZdq{}:
\PYGZob{}\PYGZsh{}genre:subitems( 1)\PYGZcb{} returns \PYGZdq{}A, D\PYGZdq{}
\PYGZob{}\PYGZsh{}genre:subitems( 2)\PYGZcb{} returns \PYGZdq{}A.B, D.E\PYGZdq{}
• sublist(val, start_index, end_index, separator) – değeri separator ile ayrılmış öğe listesi olarak yorumla, start_index den end_index e öğelerden oluşan yeni bir liste döndür. İlk öğe sıfır sayısıdır.
İndis negatifse listenin sonundan sayar. Özel bir durum olarak, sıfır end_index’i listenin boyutu olarak varsayılır.
Etiket sütununun (virgülle ayrılmıştır) “A, B ,C” içerdiğini varsayarsak:
=
{}=
{}@default
1.9. Rehberler
139
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
=0=1=2=0=1=2
\PYGZob{}tags:sublist( 1,\PYGZbs{},)\PYGZcb{} returns \PYGZdq{}A\PYGZdq{}
\PYGZob{}tags:sublist(\PYGZhy{}1, \PYGZbs{},)\PYGZcb{} returns \PYGZdq{}C\PYGZdq{}
\PYGZob{}tags:sublist( \PYGZhy{}1,\PYGZbs{},)\PYGZcb{} returns \PYGZdq{}A, B\PYGZdq{}
• swap_around_comma(val) ‘‘ -- ‘‘B, A biçiminde verilen değer için, A B döndür. En uygun kullanım şekli LN, FN biçimindeki isimleri FN LN şekline dönüştürmedir. Virgül yoksa, fonksiyon değeri değiştirmeden döndürür.
• switch(pattern, value, pattern, value, ..., else_value) – her pattern, value
çifti için, alanın pattern düzenli ifadesiyle eşleşip eşleşmediğini kontrol eder, ve eşleşiyorsa, bu value
değerini döndürür. pattern eşleşmiyorsa, else_value döndürülür. İstediğiniz kadar pattern, value
çiftiniz olabilir.
• test(text if not empty, text if empty) – alan boş değilse text if not empty, boşsa text if empty
döndürür.
• transliterate() – Latin alfabesinden kaynak alandaki kelimelerin seslerine yakın biçimlenmiş karakter dizisi döndürür. Örneğin, kaynak alan Фёдор Михaйлович Достоевский ise fonksiyon Fiodor
Mikhailovich Dostoievskii döndürür.’
Şimdi, fonksiyon ve biçimlendirmeleri aynı alanda yapmaya ne dersiniz. 003‘‘de olduğu gibi önünde
sıfırlar olan ‘‘#myint adında özel bir tam sayı sütununuz olduğunu farz edin. Bunu yapmak için 0>3s
şeklinde bir biçim kullanırsınız. Ancak ön tanımlı olarak bir sayı (tam veya kesirli) sıfıra eşitse alan boş değeri üretir,
yani sıfır değerler 000 yerine hiçbir şey üretmez. Gerçekten 000 değerleri görmek istiyorsanız, hem biçim karakter
dizisini hem de ifempty fonksiyonunu kullanıp boş değeri sıfıra çevirin. Alan referansı şu şekilde olurdu:
=
{}=
{}@default
=0=1=2=0=1=2\PYGZob{}\PYGZsh{}myint:
PYGZgt{}3s:ifempty(\PYGZcb{}
Ön ve son ek kullanabileceğinizi de not edin. Sayının [003] veya [000] şeklinde görünmesini istiyorsanız, alanı
kullanın:
=
{}=
{}@default
=0=1=2=0=1=2\PYGZob{}\PYGZsh{}myint:
PYGZgt{}3s:ifempty(\textbar{}[\textbar{}]\PYGZcb{}
Şablonlarda fonksiyon kullanma - şablom program kipi
Şablon dil program kipi tekli-fonksiyon kipinden farklı olarak diğer metadata alanlarına referans yapan, değerleri
değiştiren, aritmetik işlem yapan şablon ifadeleri yazmanıza izin verir. Makul tamamlıkta bir programlama dilidir.
Yukarıda belgelenen fonksiyonları şablon program kipinde kullanabilirsiniz. Detaylar için aşağıya göz atın.
Bir örnekle başlayalım, şablonunuzun bir kitabın varsa serilerini, yoksa özel bir alan olan #genre yi göstermesini
istediğinizi ele alalım. Temel dille bunu yapamazsınız çünkü bir şablon ifadesinde başka metadata alanına referans
veremezsiniz. Program kipinde, yapabilirsiniz. Aşağıdaki ifade çalışır:
=
{}=
{}@default
=0=1=2=0=1=2\PYGZob{}\PYGZsh{}series:\PYGZsq{}ifempty(\PYGZdl{}, field(\PYGZsq{}\PYGZsh{}genre\PYGZsq{
Örnek bir çok şey gösteriyor:
• ifade :’ ile başlıyor ve ’ ile bitiyorsa program kipi kullanılır. Diğer her şey tekli-fonksiyon olarak ele alınır.
• $ değişkeni ifadenin üzerinde işlem yaptığı alan yerine geçer, bu durumda #series.
140
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
• fonksiyonlara tüm bağımsız değişkenleri verilmelidir. Varsayılan bir değer yoktur. Örneğin, standart yerleşik
fonksiyonlara kaynak alanını gösteren ek bir ilk parametre verilmelidir, bu tekli-fonksiyon kipinden belirgin bir
değişikliktir.
• boşluk karakterleri göz ardı edilir ve ifadenin herhangi bir yerinde kullanılabilir.
• sabit karakter dizileri eşleşen tırnak işaretleri arasındadır, ’ veyea ".
Dil nerdeyse tamamen fonksiyonlardan oluştuğundan fonksiyonel dillere benzer. Her ifade bir fonksiyondur. Her
deyim bir fonksiyondur. Sabitler ve tanımlayıcılar sabitlerce gösterilen veya tanımlayıcılarda saklanan değerleri döndüren fonksiyonlar olarak düşünülebilir.
Dilin söz dizimi aşağıdaki dil bilgisi ile gösterilmiştir:
=
{}=
{}@default
=0=1=2=0=1=2constant
::= \PYGZdq{} string \PYGZdq{} \textbar{} \PYGZsq{} string \PYGZsq{} \textbar{}
identifier ::= sequence of letters or {}`{}`\PYGZus{}{}`{}` characters
function
::= identifier ( statement [ , statement ]* )
expression ::= identifier \textbar{} constant \textbar{} function \textbar{} assignment
assignment ::= identifier \PYGZsq{}=\PYGZsq{} expression
statement ::= expression [ ; expression ]*
program
::= statement
Yorumlar satır başında ‘#’ karakteri olan sastırlardır.
Bir ‘‘expression‘‘ın her zaman değeri vardır, ya sabitin değeri, ya tanımlayıcıda içerilen değer, ya da bir fonksiyon
tarafından döndürülen değer. Bir ‘‘statement‘‘ın değeri ifade dizisindeki son deyimin değeridir. Yani programın değeri
(ifade):
=
{}=
{}@default
=0=1=2=0=1=2\PYG{l+m+mi}{1}\PYG{p}{;} \PYG{l+m+mi}{2}\PYG{p}{;} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{foobar}\
3 olur.
Karmaşık ama pek anlamlı olmayan bir program örneği daha iyi anlatacaktır:
=
{}=
{}@default
=0=1=2=0=1=2\PYGZob{}series\PYGZus{}index:\PYGZsq{}
substr(
strcat(\PYGZdl{}, \PYGZsq{}\PYGZhy{}\PYGZgt{}\PYGZsq{},
cmp(divide(\PYGZdl{}, 2), 1,
assign(c, 1); substr(\PYGZsq{}lt123\PYGZsq{}, c, ,
\PYGZsq{}eq\PYGZsq{}, \PYGZsq{}gt\PYGZsq{})),
6)
\PYGZsq{}\textbar{} prefix \textbar{} suffix\PYGZcb{}
Bu program aşağıdakileri yapar:
• bakılan alanın seris_index olduğunu belirtir. Bu, $ değişkeninin değerini ayarlar.
• 3 parametre (str, start, end) alan substr fonksiyonunu çağırır. Karakter dizisinden start ile end arasında karakterleri çıkararak oluşturulan karakter dizisini, sıfır-tabanlı ( ilk karakter sıfır karakteridir) döndürür.
Bu durumda karakter dizisi strcat fonksiyonu ile hesaplanır, start 0, end 6 dır. Bu durumda substr dönmeden
önce değerlendirilmesi gereken, strcat tarafından döndürülen karakter dizisinin ilk 6 karakterini döndürür.
• calls the strcat (string concatenation) function. Strcat accepts 1 or more arguments, and returns a string
formed by concatenating all the values. In this case there are three arguments. The first parameter is the value
1.9. Rehberler
141
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
in $, which here is the value of series_index. The second paremeter is the constant string ’->’. The third
parameter is the value returned by the cmp function, which must be fully evaluated before strcat can return.
• cmp fonksiyonu 5 değişken alır (x, y, lt, eq, gt). x ve y değişkenlerini karşılaştırır ve x< y ise üçüncü
değişken olan lt, x== y ise dördüncü değişken eq, x > y ise beşinci değişken gt yi döndürür. Tüm fonksiyonlarda olduğu gibi, tüm parametreler ifade olabilirler. Bu durumda ilk parametre (x için değer) series_index’in
2’ye bölümünün sonucudur. İkinci parametre y sabit 1‘‘dir. Üçüncü parametre ‘‘lt bir ifadedir
(daha sonra anlatılacak). Dördüncü parametre eq sabit karakter dizisi ‘‘‘eq’‘‘dir. Beşinci parametre sabit karakter dizisi ‘‘‘gt’‘‘dir.
• Üçüncü parametre (lt için olan) bir ifadedir, veya deyimler dizisidir. Bir ifadenin aynı zamanda deyim
olduğunu unutmayın (noktalı virgül ile ayrılmış bir dizi deyim), listedeki son deyimin değerini döndürür.
Bu durumda, program önce 1 değerini yerel değişken c‘‘ye atar, ardından sondan c’inci
karakterin çıkarılmasıyla elde edilen alt karakter dizisi döndürür. c her
zaman sabit değer ‘‘1 içereceğinden, alt karakter dizisi ikinciden sonuncuya olan karakterleri
döndürür, veya ’t123’.
• Üçüncü parametreye değeri sağlayan ifade çalıştığında, cmp bir değer döndürebilir. Bu noktada, ‘‘strcat‘ bir
değer döndürebilir, sonra ‘‘substr‘ bir değer döndürebilir. Program ardından sonlanır.
series_index’in çeşitli değerleri için, program döner:
• series_index== undefined, result= prefix ->t123 suffix
• series_index== 0.5, result= prefix 0.50-> suffix
• series_index== 1, result= prefix 1->t12 suffix
• series_index== 2, result= prefix 2->eq suffix
• series_index== 3, result= prefix 3->gt suffix
Tekli-fonksiyon kipi altında listelenen tüm fonksiyonlar program kipinde kullanılabilir. Böyle yapmak için, yukarıda belgelenen parametrelere ek olarak, fonksiyonun üzerinde işlem yapacağı değeri sağlamalısınız. Örneğin, program kipinde test fonksiyonunun parametreleri şunlardır test(x, text_if_not_empty, text_if_empty).
Test edilecek değer olan x parametresi, hemen her zaman bir değişken ya da fonksiyon çağrısı, genellikle field() olacaktır.
Aşağıdaki fonksiyonlar tekli-fonksiyon kipinde açıklananlara ek olarak kullanılabilirler. Yukarıdaki örnekten, teklifonksiyon kipi fonksiyonlarının üzerinde işlem yapılacak ek bir ilk değer parametre alanına ihtiyaç duyduğunu unutmayın. Atamanın id parametresi hariç, tüm parametreler ifade olabilirler (bir dizi deyim). Fonksiyonlar için tam
belgelendirmenin Fonksiyon sınıflandırma (sayfa 146) kısmında olduğunu unutmayın.
• and(value, value, ...) – tüm değerler boş değilse “1” karakter dizisi döndürür, aksi halde boş karakter
dizisi döndürür. Bu fonksiyon test veya first_non_empty ile iyi çalışır. İstediğiniz kadar değeriniz olabilir.
• add(x, y) – x + y döndürür. x veya y sayı değilse bir istisna fırlatır.
• assign(id, val) – id’ye val atar, ardından val döndürür. id bir tanımlayıcı olmalıdır, deyim değil
• approximate_formats() – bir noktada kitapla ilişkilenmiş biçimlerin virgülle ayrılmış listesini döndürür.
Listenin düzgün olması garanti değildir, her ne kadar muhtemelen düzgün olacak olsa da. Bu fonksiyon şablon
program kipinde {:’approximate_formats()’} kullanarak çağrılabilir. Biçim isimlerinin büyük harfle
yazıldığını unutmayın, EPUB gibi.
• author_links(val_separator, pair_separator) – yazar listesi ve yazarın bağlantı değerini author1 val_separator author1link pair_separator author2 val_separator
author2link vs. şeklinde döndürür. Yazar bağlantısından val_separator karakter dizisi ile ek boşluk
olmadan ayrılır. author:linkvalue çiftleri pair_separator karakter dizisi değişkeni ile ek boşluk
olmadan ayrılır. Yazar adları ya da bağlantılarında geçmeyen ayraç karakter dizilerini seçmek size kalmıştır.
Yazar bağlantısı boş olsa da yazar eklenir.
142
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
• author_sorts(val_separator) – Kitabın yazarları için yazar sıralama değerleri listesi içeren bir karakter dizisi döndürür. Sıralama yazar metadata’sında olandır (kitaplardaki author_sort’dan farklıdır). Döndürülen
liste yazar sıralama 1 val_separator yazar sıralama 2 vs. şeklindedir. Bu listedeki yazar sıralama değerleri
kitaptaki yazarlarla aynı sıradadır. val_separator etrafında boşluklar istiyorsanız ayraç karakter dizisinde
ekleyin
• booksize() – calibre ‘size’ alanının değerini döndürür. Herhangi biçim yoksa ‘’ döndürür.
• cmp(x, y, lt, eq, gt) – x ve ye yi ikisini de sayıya çevirdikten sonra karşılaştırır. x < y ise lt döndürür. x== y ise eq döndürür. Aksi halde gt döndürür.
• current_library_name() -- ‘‘ mevcut calibre kitaplığına olan
yoldaki son ismi döndürür. Bu fonksiyon şablon program kipinde
‘‘{:’current_library_name()’} şablonuyla kullanılabilir.
• current_library_path() -- ‘‘ mevcut calibre kitaplığına yolu döndürür.
Bu fonksiyon şablon program kipinde ‘‘{:’current_library_path()’}
şablonu
kullanılarak çağrılabilir..
• days_between(date1, date2) – date1 ile date2 arasındaki gün sayısını döndürür. date1 date2
den büyükse sayı pozitiftir, değilse negatiftir. date1 veya date2 tarih değillerse, fonksiyon boş karakter dizisi
döndürür.
• divide(x, y) – x / y döndürür. x veya y sayı değilse istisna fırlatır.
• eval(string) – karakter dizisini bir program olarak değerlendirir, yerel değişkenleri geçirir
(atananları). Bu, şablon işlemcisinin yerel değişkenlerden karmaşık sonuçlar oluşturmasına olanak verir.
{ ve } karakterleri özel olduklarından, { karakteri için [[ ve ‘}’ karakteri için ]] kullanmalısınız; otomatik olarak
dönüştürüleceklerdir. Ayrıca ön ek ve son eklerin (|prefix|suffix söz dizimi) şablon program kipi kullanılırken bu
fonksiyona değişken olarak kullanılamayacağını unutmayın.
• field(name) – name ile isimlendirilen metadata alanını döndürür.
• first_matching_cmp(val, cmp1, result1, cmp2, r2, ..., else_result) – compares
val < cmpN in sequence, returning resultN for the first comparison that succeeds. Returns else_result if no
comparison succeeds. Example:
=
{}=
{}@default
=0=1=2=0=1=2
\PYG{n}{first\PYGZus{}matching\PYGZus{}cmp}\PYG{p}{(}\PYG{l+m+mi}{1}\PYG{p}{,}\P
returns “large”. The same example with a first value of 16 returns “giant”.
• first_non_empty(value, value, ...) – returns the first value that is not empty. If all values are
empty, then the empty value is returned. You can have as many values as you want.
• format_date(x, date_format) – format the value, which must be a date field, using the format_string,
returning a string. The formatting codes are:
=
{}=
{}@default
=0=1=2=0=1=2
dd
: the
ddd : the
dddd : the
M
: the
MM
: the
MMM : the
MMMM : the
yy
: the
1.9. Rehberler
d
: the day as number without a leading zero (1 to 31)
day as number with a leading zero ( to 31)
abbreviated localized day name (e.g. \PYGZdq{}Mon\PYGZdq{} to \PYGZdq{}Sun\PYGZdq
long localized day name (e.g. \PYGZdq{}Monday\PYGZdq{} to \PYGZdq{}Sunday\PYGZdq{
month as number without a leading zero (1 to 12).
month as number with a leading zero ( to 12)
abbreviated localized month name (e.g. \PYGZdq{}Jan\PYGZdq{} to \PYGZdq{}Dec\PYGZ
long localized month name (e.g. \PYGZdq{}January\PYGZdq{} to \PYGZdq{}December\PY
year as two digit number ( to 99).
143
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
yyyy
h
hh
m
mm
s
ss
ap
AP
iso
:
:
:
:
:
:
:
:
:
:
the
the
the
the
the
the
the
use
use
the
year as four digit number.
hours without a leading ( to 11 or
hours with a leading ( to 11 or to
minutes without a leading ( to 59)
minutes with a leading ( to 59)
seconds without a leading ( to 59)
seconds with a leading ( to 59)
a 12\PYGZhy{}hour clock instead of a
a 12\PYGZhy{}hour clock instead of a
date with time and timezone. Must be
to 23, depending on am/pm)
23, depending on am/pm)
24\PYGZhy{}hour clock, with \PYGZsq{}ap\PYGZ
24\PYGZhy{}hour clock, with \PYGZsq{}AP\PYGZ
the only format present.
You might get unexpected results if the date you are formatting contains localized month names, which
can happen if you changed the format tweaks to contain MMMM. In this case, instead of using something like {pubdate:format_date(yyyy)}, write the template using template program mode as in
{:’format_date(raw_field(’pubdate’),’yyyy’)’}.
• finish_formatting(val, fmt, prefix, suffix) – apply the format, prefix, and suffix to a value
in the same way as done in a template like {series_index:05.2f| - |- }. This function is provided
to ease conversion of complex single-function- or template-program-mode templates to general program mode
(sayfa 161) (see below) to take advantage of GPM template compilation. For example, the following program
produces the same output as the above template:
=
{}=
{}@default
=0=1=2=0=1=2
program: finish\PYGZus{}formatting(field(\PYGZdq{}series\PYGZus{}index\PYGZdq{})
Başka bir örnek: {series:re(([^\s])[^\s]+(\s|$),\1)}{series_index:0>2s| - | }{title} şablonu için şunu kullanın:
=
{}=
{}@default
=0=1=2=0=1=2
program:
strcat(
re(field(\PYGZsq{}series\PYGZsq{}), \PYGZsq{}([\PYGZca{}\PYGZbs{}s])[\PYGZca{}\PYGZb
finish\PYGZus{}formatting(field(\PYGZsq{}series\PYGZus{}index\PYGZsq{}), \PYGZsq{}PY
field(\PYGZsq{}title\PYGZsq{})
)
• formats_modtimes(date_format) – return a comma-separated list of colon-separated items representing modification times for the formats of a book. The date_format parameter specifies how the date is to be
formatted. See the date_format function for details. You can use the select function to get the mod time for a
specific format. Note that format names are always uppercase, as in EPUB.
• formats_paths() – return a comma-separated list of colon-separated items representing full path to the
formats of a book. You can use the select function to get the path for a specific format. Note that format names
are always uppercase, as in EPUB.
• formats_sizes() – return a comma-separated list of colon-separated items representing sizes in bytes of
the formats of a book. You can use the select function to get the size for a specific format. Note that format
names are always uppercase, as in EPUB.
• has_cover() – kitabın bir kapağı varsa Yes, aksi durumda boş karakter dizisi döndürür
• not(value) – değer boşsa “1” karakter dizisini döndürür, aksi halde boş karakter dizisi. Bu fonksiyon test
veya first_non_empty ile iyi çalışır. İstediğiniz kadar değeriniz olabilir.
• list_difference(list1, list2, separator) – Büyük küçük harf duyarlı olmayan bir karşılaştırma ile, list2 de bulunan öğelerin list1‘den çıkarılmasıyla elde edilen listeyi döndürür. ‘list1 ve ‘list2‘deki
144
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
öğeler döndürülen listede olduğu gibi ayraçla ayrılmışlardır.
• list_equals(list1, sep1, list2, sep2, yes_val, no_val) – list1 ve list2 aynı öğeleri
içeriyorsa yes_val, aksi halde no_val döndür. Öğeler iki listenin de ilgili ayraç karakterle (sep1 veya sep2)
ayrılması ile belirlenir. Liste öğelerinin sırası önemli değildir. Karşılaştırma büyük küçük harf duyarlı değildir.
• list_intersection(list1, list2, separator) – büyük küçük harf duyarlı olmayan karşılaştırma ile list1‘den ‘list2‘de bulunan öğelerin çıkarılması ile elde edilen listeyi döndür. Döndürülen listede olduğu gibi ‘list1 ve ‘list2‘deki öğeler bir ayraçla ayrılmıştır.
• list_re(src_list, separator, include_re, opt_replace) – Önce separator karakterini
kullanarak src_list‘i öğelere ayırarak bir liste oluştur. Listedeki her öğenin ‘include_re ile eşleşip eşleşmediğini kontrol et. Eşleşirse, döndürülecek listeye ekle. opt_replace boş karakter dizisi değilse, öğeyi döndürülen
listeye eklemeden önce yer değiştirmeyi uygula.
• list_re_group(src_list, separator, include_re, search_re,
template_for_group_1, for_group_2, ...) – list_re except gibi yer değiştirmeler seçime
bağlı değildir. Yer değiştirmeleri kullanırken re_group(item, search_re, template ...) kullanır.
• list_sort(list, direction, separator) – büyük küçük harf bağımsız sıralanmış liste döndür.
direction sıfır ise, liste artan şekilde sıralanır, aksi halde azalan şekilde. Liste öğeleri döndürülen liste gibi separator ile ayrılmıştır.
• list_union(list1, list2, separator) – list1 ve list2 öğelerinin birleşiminden oluşan bir liste
döndürür, aynı öğeler büyük küçük harf duyarlı olmayan karşılaştırma ile silinir. Öğelerin harfleri büyük küçük değişiyorsa, list1 deki kullanılır. list1 ve list2 deki öğeler döndürülen listede olduğu gibi separator ile ayrılır.
• multiply(x, y) – x * y döndürür. x veya y sayı değilse bir istisna fırlatır.
• ondevice() – ondevice ayarlanmışsa “Yes” karakter dizisini, aksi halde boş karakter dizisi döndürür
• or(value, value, ...) – herhangi bir değer boş değilse “1” karakter dizisini, aksi halde boş karakter
dizisi döndürür. Bu fonksiyon test veya first_non_empty ile iyi çalışır. İstediğiniz kadar değeriniz olabilir.
• print(a, b, ...) – bağımsız değişkenleri standart çıktıya yazdırır. Calibre’yi komut satırından başlatmadığınız takdirde (calibre-debug -g) çıktı bir kara deliğe gideceketir.
• raw_field(name) – Herhangi biçimlendirme uygulamadan name ile isimlendirilmiş metadata alanını döndürür.
• raw_list(name, separator) – Herhangi biçimlendirme veya sıralama uygulamadan ve separator ile
ayrılmış öğelerle, name ile isimlendirilmiş metadata listesini döndürür.
• re_group(val, pattern, template_for_group_1, for_group_2, ...) – return a string
made by applying the regular expression pattern to the val and replacing each matched instance with the string computed by replacing each matched group by the value returned by the corresponding template. The
original matched value for the group is available as $. In template program mode, like for the template and the
eval functions, you use [[ for { and ]] for }. The following example in template program mode looks for series
with more than one word and uppercases the first word:
=
{}=
{}@default
=0=1=2=0=1=2
\PYG{p}{\PYGZob{}}\PYG{n}{series}\PYG{p}{:}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{re\PYGZ
• series_sort() – seri sıralama değerini döndürür.
• strcat(a, b, ...) – istenilen sayıda değişken alabilir. Tüm değişkenlerin uç uca eklenmesiyle oluşturulmuş bir karakter dizisi döndürür.
• strcat_max(max, string1, prefix2, string2, ...) – Bağımsız değişkenlerin uç uca eklenmesiyle oluşturulmuş bir karakter dizisi döndürür. Döndürülen değer string1 olarak ilklendirilir. Prefix, st-
1.9. Rehberler
145
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
ring çiftleri elde edilen karakter dizisinin boyu max‘dan küçük olduğu sürece değerin sonuna eklenir. String1
max’dan büyük olsa da string1 döndürülür. İstediğiniz kadar ‘prefix, string çifti geçirebilirsiniz.
• strcmp(x, y, lt, eq, gt) – x ve y karakter dizileri üzerinde büyük küçük harf bağımsız karşılaştırma
gerçekleştirir. x < y ise lt döndürür. x== y ise eq döndürür. Aksi halde gt döndürür.
• strlen(a) – Değişken olarak geçirilen karakter dizisinin uzunluğunu döndürür.
• substr(str, start, end)
–
str‘‘nin ‘‘start‘‘dan ‘‘end‘‘e kadar olan
karakterlerini döndürür. ‘‘str‘‘nin ilk karakteri sıfırıncı karakterdir.
end negatif ise, sağdan sayıldığında kaç karakter olduğunu ifade eder.
end sıfır ise, son karakteri ifade eder. Örneğin, ‘‘substr(’12345’, 1, 0)
’2345’ döndürür, ve substr(’12345’, 1, -1) ’234’ döndürür.
• subtract(x, y) – x - y döndürür. x veya y sayı değilse bir istisna fırlatır.
• today() – bugün için bir karakter dizisi döndürür. Bu değer format_date veyea days_between ile kullanılması
için tasarlanmıştır, ama her karakter dizisi gibi değiştirilebilir. Tarih ISO biçimindedir.
• template(x) – x’i bir şablon olarak değerlendirir. Değerlendirme kendi bağlamında yapılır, anlamı
değerlerin çağıran ve şablon değerlendirmesi arasında paylaştırılmıyor olduğudur. { ve } özel karakterler olduklarından { yerine [[ ve ‘}’ yerine ]] kullanmalısınız; otomatik olarak dönüştürülürler. Örneğin
template(’[[title_sort]]’) ‘‘{title_sort} şablonunu değerlendirecek ve değerini döndürecektir. Ayrıca ön ek ve son eklerin (|prefix|suffix söz dizimi) şablon program kipi kullanılarak bu fonksiyona
bağımsız değişken olarak verilemeyeceğini not edin.
Fonksiyon sınıflandırma
Reference for all built-in template language functions
Here, we document all the built-in functions available in the calibre template language. Every function is implemented
as a class in python and you can click the source links to see the source code, in case the documentation is insufficient.
The functions are arranged in logical groups by type.
146
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
• Arithmetic (sayfa 148)
– add(x, y) (sayfa 148)
– divide(x, y) (sayfa 148)
– multiply(x, y) (sayfa 148)
– subtract(x, y) (sayfa 148)
• Boolean (sayfa 148)
– and(değer, değer, ...) (sayfa 148)
– not(değer) (sayfa 148)
– or(değer, değer, ...) (sayfa 148)
• Date functions (sayfa 148)
– days_between(tarih1, tarih2) (sayfa 148)
– today() (sayfa 148)
• Formatting values (sayfa 149)
– finish_formatting(val, fmt, önek, sonek) (sayfa 149)
– format_date(val, biçim_karakter_dizisi) (sayfa 149)
– format_number(v, şablon) (sayfa 149)
– human_readable(v) (sayfa 149)
• Get values from metadata (sayfa 149)
– approximate_formats() (sayfa 149)
– author_links(val_separator, pair_separator) (sayfa 149)
– author_sorts(val_separator) (sayfa 150)
– booksize() (sayfa 150)
– current_library_name() (sayfa 150)
– current_library_path() (sayfa 150)
– field(isim) (sayfa 150)
– formats_modtimes(date_format) (sayfa 150)
– formats_paths() (sayfa 150)
– formats_sizes() (sayfa 150)
– has_cover() (sayfa 151)
– language_codes(lang_strings) (sayfa 151)
– language_strings(lang_codes, localize) (sayfa 151)
– ondevice() (sayfa 151)
– raw_field(isim) (sayfa 151)
– raw_list(isim, ayraç) (sayfa 151)
– series_sort() (sayfa 151)
– user_categories() (sayfa 151)
– virtual_libraries() (sayfa 151)
• If-then-else (sayfa 152)
– contains(val, örüntü, eşleşme metni, eşleşmeme metni) (sayfa 152)
– ifempty(val, boşsa metin) (sayfa 152)
– test(val, boş değilse metin, boşsa metin) (sayfa 152)
• Iterating over values (sayfa 152)
– first_non_empty(değer, değer, ...) (sayfa 152)
– lookup(val, örüntü, alan, örüntü, alan, ..., diger_alan) (sayfa 152)
– switch(val, örüntü, değer, örüntü, değer, ..., diğer_değer) (sayfa 152)
• List lookup (sayfa 152)
– identifier_in_list(val, id, bulundu_değer, bulunamadı_değer) (sayfa 152)
– in_list(val, ayraç, örüntü, bulunan_değer, bulunamayan_değer) (sayfa 153)
– list_item(val, indis, ayraç) (sayfa 153)
– select(val, key) (sayfa 153)
– str_in_list(val, ayraç, karakter dizisi, bulundu_değer, bulunamadı_değer) (sayfa 153)
• List manipulation (sayfa 153)
– count(val, ayraç) (sayfa 153)
– list_difference(liste1, liste2, ayraç) (sayfa 153)
– list_equals(list1, sep1, list2, sep2, yes_val, no_val) (sayfa 153)
– list_intersection(liste1, liste2, ayraç) (sayfa 153)
1.9. Rehberler
– list_re(src_list, ayraç, include_re, opt_replace) (sayfa 154)
– list_re_group(src_list, ayraç, include_re, search_re, grup_1_şablon, ...) (sayfa 154)
– list_sort(list, yön, ayraç) (sayfa 154)
– list_union(liste1, liste2, ayraç) (sayfa 154)
147
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Arithmetic
add(x, y)
class calibre.utils.formatter_functions.BuiltinAdd
add(x, y) – x + y’yi döndürür. x veya y sayı olmadığında bir istisna döndürür.
divide(x, y)
class calibre.utils.formatter_functions.BuiltinDivide
divide(x, y) – x / y’yi döndürür. x veya y sayı olmadığında bir istisna döndürür.
multiply(x, y)
class calibre.utils.formatter_functions.BuiltinMultiply
multiply(x, y) – x * y’yi döndürür. x veya y sayı olmadığında bir istisna döndürür.
subtract(x, y)
class calibre.utils.formatter_functions.BuiltinSubtract
subtract(x, y) – x - y’yi döndürür. x veya y sayı olmadığında bir istisna döndürür.
Boolean
and(değer, değer, ...)
class calibre.utils.formatter_functions.BuiltinAnd
and(değer, değer, ...) – Tüm değerler boş değilse “1” karakter dizisini döndürür, aksi halde boş karakter dizisi.
Bu fonksiyon test veya first_non_empty ile iyi çalışır. İstediğiniz kadar değer verebilirsiniz.
not(değer)
class calibre.utils.formatter_functions.BuiltinNot
not(değer) – Değer boşsa “1” karakter dizisi döndürür, aksi halde boş karakter dizisi. Bu fonksiyon test veya
first_non_empty ile iyi çalışır. İstediğiniz kadar değeriniz olabilir.
or(değer, değer, ...)
class calibre.utils.formatter_functions.BuiltinOr
or(değer, değer, ...) – Herhangi bir değer boş değilse “1” karakter dizisini döndürür, aksi halde boş karakter
dizisini. Bu fonksiyon test veya first_non_empty ile iyi çalışır. İstediğiniz kadar değer verebilirsiniz.
Date functions
days_between(tarih1, tarih2)
class calibre.utils.formatter_functions.BuiltinDaysBetween
days_between(tarih1, tarih2) – tarih1 ve tarih2 arasındaki gün sayısını döndürür. Tarih1 tarih2’den büyükse
değer pozitiftir, aksi halde negatif. tarih1 veya tarih2 tarih değillerse, fonksiyon boş karakter dizisi döndürür.
today()
class calibre.utils.formatter_functions.BuiltinToday
today() – bugün için bir tarih karakter dizisi döndür. Bu değer format_date veya days_between ile kullanılmak
üzere tasarlanmıştır, ama herhangi bir karakter dizisi gibi oynanabilir. Tarih ISO biçimindedir.
148
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Formatting values
finish_formatting(val, fmt, önek, sonek)
class calibre.utils.formatter_functions.BuiltinFinishFormatting
finish_formatting(val, fmt, önek, sonek) – Değere biçim, önek ve soneki {series_index:05.2f| - |- } gibi
bir şablonda olduğu gibi uygular. Örneğin, şu program aşağıdaki şablonla aynı çıktıyı üretir: program: finish_formatting(field(“series_index”), “05.2f”, ” - ”, ” - ”)
format_date(val, biçim_karakter_dizisi)
class calibre.utils.formatter_functions.BuiltinFormatDate
format_date(val, biçim_karakter_dizisi) – tarih olması gereken val değerini biçim_karakter_dizisi ile biçimler
ve karakter dizisi döndürür. Biçimleme kodları şunlardır: d :sonunda sıfır olmadan gün (1’den 31’e) dd :sonunda
sıfır olan gün (01’den 31’e) ddd : yerelleştirilmiş gün adı (örn. “Pazartesi”den “Pazar”a). M : sonunda sıfır olmadan ay numarası (1’den 12’ye). MM : sıfırlı ay numarası (01’den 12’ye) MMM : Yerelleştirilmiş ay ismi (örn.
“Oca“‘dan “Ara”ya). MMMM : Yerelleştirilmiş uzun ay ismi (örn “Ocak”dan “Aralık”a). yy :yılın iki basamaklı
gösterimi (00’dan 99’a). yyyy : dört basamakla yıl gösterimi. h : sıfırsız saat numarası (0’dan 11’e veya 0’dan
23’e, am/pm durumuna göre) m : sıfırsız dakika gösterimi (0’dan 59’a) mm : sıfırlı dakika gösterimi (00’dan
59’a) s : saniyelerin sıfırsız gösterimi (0’dan 59’a) ss : saniyelerin sıfırlı gösterimi (00’dan 59’a) ap : 24 saat yerine 12’lik saat kullan, “ap” am veya pm’nin yerelleştirilmiş metnini içerir AO : 24 saat yerine 12’lik saat kullan,
“AP” AM veya PM yerine yerelleştirilmiş metni kullanır iso : zaman ve zaman dilimini içeren tarih. Mevcut olan
tek biçim olmalıdır
format_number(v, şablon)
class calibre.utils.formatter_functions.BuiltinFormatNumber
format_number(v, şablon) – v sayısını “{0:5.2f}” veya “{0:,d}” veya “${0:5,.2f}” gibi bir python biçimlendirme şablonu kullanarak biçimle. şablonun alan ismi kısmı 0 (sıfır) olmalıdır (aşağıdaki örneklerdeki “{0:”).
Daha fazla örnek için şablon dili ve python belgelerine göz atın. Biçimleme başarısız olursa boş karakter dizisi
döndürür.
human_readable(v)
class calibre.utils.formatter_functions.BuiltinHumanReadable
human_readable(v) – v sayısını KB, MB, GB, vs. olarak temsil eden karakter dizisi döndür
Get values from metadata
approximate_formats()
class calibre.utils.formatter_functions.BuiltinApproximateFormats
approximate_formats() – Bir noktada kitaplarla bağlantılı olan virgülle ayrılmış biçimler listesi döndürür. Bu
listenin doğru olacağının garantisi yoktur, ama muhtemelen doğrudur. Bu fonksiyon şablon program kipinde
“{:’approximate_formats()’}” ile çağrılabilir. Biçim isimlerinin EPUB gibi hep büyük harfli olduğunu unutmayın. Bu fonksiyon yalnızca grafik arayüzde çalışır. Bu değerleri diske-kaydet veya aygıta-gönder şablonlarında
kullanmak istiyorsanız özel bir “Diğer sütunlardan oluşturulmuş sütun” yapmalı, fonksiyonu bu sütunun şablonunda, ve bu sütunun değerini kaydet/gönder şablonlarınızda kullanmalısınız
author_links(val_separator, pair_separator)
class calibre.utils.formatter_functions.BuiltinAuthorLinks
author_links(val_separator, pair_separator) – yazarlar listesi ve yazarların bağlantı değerlerini içeren şu biçimde
bir karakter dizisi döndürür yazar1 val_separator yazar1link pair_separator yazar2 val_separator yazar2link vs.
Yazar, bağlantı değerinden val_separator karakter dizisi ile ek boşluk olmadan ayrılır. yazar:linkvalue çiftleri
1.9. Rehberler
149
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
pair_separator karakter dizisiyle ek boşluk olmadan ayrılır. Yazar isimleri veya bağlantılarında olmayan ayraç
karakter dizileri bulmak size kalmıştır. Bir yazar, yazar bağlantısı boş olsa bile dahil edilir.
author_sorts(val_separator)
class calibre.utils.formatter_functions.BuiltinAuthorSorts
author_sorts(val_separator) – kitabın yazarları için yazar sıralama değerleri listesi içeren karakter dizisi döndürür. Sıralama yazar metadata’sında olandır (kitaplardaki author_sort’dan farklı). Döndürülen liste yazar sıra 1
val_separator yazar sıra 2 vs. biçimindedir. Bu listedeki yazar sıralama alanları kitabın yazarlarıyla aynı sıradadır. val_separator arasında boşluk isterseniz ayraç karakter dizisine ekleyebilirsiniz.
booksize()
class calibre.utils.formatter_functions.BuiltinBooksize
booksize() – boyut alanının değerini döndürür. Bu fonksiyon yalnızca grafik arayüzde çalışır. Bu değeri diskekaydet veya aygıta-gönder şablonlarında kullanmak istiyorsanız, özel bir “Diğer sütunlardan oluşturulmuş sütun” yapmalı, fonksiyonu bu sütunun şablonunda kullanmalısınız, ve bu sütunun değerini kaydet/gönder şablonlarınızda kullanmalısınız
current_library_name()
class calibre.utils.formatter_functions.BuiltinCurrentLibraryName
current_library_name() – Mevcut calibre kitaplığına yoldaki son ismi döndürür. Bu fonksiyon şablon program
kipinde “{:’current_library_name()’}” ile kullanılabilir.
current_library_path()
class calibre.utils.formatter_functions.BuiltinCurrentLibraryPath
current_library_path() – Mevcut calibre kitaplığı yolunu döndür. Bu fonksiyon şablon program kipinde “{:’current_library_path()’}” ile kullanılabilir.
field(isim)
class calibre.utils.formatter_functions.BuiltinField
field(isim) – isim olarak adlandırılmış metadata alanını döndürür
formats_modtimes(date_format)
class calibre.utils.formatter_functions.BuiltinFormatsModtimes
formats_modtimes(date_format) – Kitapların biçimleri için değiştirilme zamanlarını temsil eden sütunla ayrılmış öğelerin virgülle ayrılmış listesini döndürür. date_format parametresi tarihin nasıl biçimleneceğini belirtir.
Detaylar için date_format fonksiyonuna göz atın. select fonksiyonu ile belirli bir biçim için değiştirilme tarihini
alabilirsiniz. Biçim isimlerini EPUB gibi hep büyük harfli olduğunu unutmayın.
formats_paths()
class calibre.utils.formatter_functions.BuiltinFormatsPaths
formats_paths() – Bir kitabın biçimlerine tam yolu temsil eden sütunla ayrılmış öğelerin virgülle ayrılmış listesini döndür. Bir kitap için yolu select fonksiyonu ile alabilirsiniz. Biçim isimlerinin her zaman büyük harfli
olması gerektiğini unutmayın, EPUB gibi.
formats_sizes()
class calibre.utils.formatter_functions.BuiltinFormatsSizes
formats_sizes() – Kitapların biçimlerinin bayt cinsinden boyutlarını temsil eden sütunlay ayrılmış öğelerin virgülle ayrılmış listesini döndürür. select fonksiyonunu kullanarak belirli bir biçimin boyutunu alabilirsiniz. Biçim
isimlerinin EPUB gibi hep büyük harfli olduğunu unutmayın.
150
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
has_cover()
class calibre.utils.formatter_functions.BuiltinHasCover
has_cover() – kitabın kapağı varsa Yes döndürür, aksi halde boş karakter dizisi döndürür
language_codes(lang_strings)
class calibre.utils.formatter_functions.BuiltinLanguageCodes
language_codes(lang_strings) – lang_strings içinde gönderilen karakter dizileri için dil kodlarını döndür. Karakter dizileri mevcut yerelin dilinde olmalıdır. Lang_strings virgülle ayrılmış listedir.
language_strings(lang_codes, localize)
class calibre.utils.formatter_functions.BuiltinLanguageStrings
language_strings(lang_codes, localize) – lang_codes ile verilen dil kodları için karakter dizisi döndür. localize
sıfır ise, karakter dizilerini İngilizce döndürür. Sıfır değilse, karakter dizilerini mevcut yerelin dilinde döndür.
Lang_codes virgülle ayrılmış listedir.
ondevice()
class calibre.utils.formatter_functions.BuiltinOndevice
ondevice() – ondevice ayarlanmışsa Yes döndürür. Bu fonksiyon yalnızca grafik arayüzde çalışır. Bu değeri
diske-kaydet veya aygıta-gönder şablonlarında kullanmak istiyorsanız, özel bir “Diğer sütunlardan oluşturulmuş sütun” yapmalı, fonksiyonu bu sütunun şablonunda kullanmalısınız, ve bu sütunun değerini kaydet/gönder
şablonlarınızda kullanmalısınız
raw_field(isim)
class calibre.utils.formatter_functions.BuiltinRawField
raw_field(isim) – isim ile adlandırılmış metadata alanını herhangi bir biçimleme yapmadan döndürür.
raw_list(isim, ayraç)
class calibre.utils.formatter_functions.BuiltinRawList
raw_list(isim, ayraç) – isim ile adlandırılmış metadata listesini herhangi bir biçimleme veya sıralama uygulamadan ve öğeleri ayraç ile ayırarak döndürür.
series_sort()
class calibre.utils.formatter_functions.BuiltinSeriesSort
series_sort() – seri sıralama değerini döndürür
user_categories()
class calibre.utils.formatter_functions.BuiltinUserCategories
user_categories() – Bu kitabı içeren kullanıcı kategorilerinin virgülle ayrılmış listesini döndürür. Bu fonksiyon
yalnızca grafik arayüzde kullanılabilir. Bu değerleri diske-kaydet veya aygıta-gönder şablonlarında kullanmak
istiyorsanız önce “Diğer sütunlarda özel oluşturulmuş sütun” yapmalı, fonksiyonu bu sütunun şablonunda kullanmalı, ve bu sütunun değerini kaydet/gönder şablonunuzda kullanmalısınız.
virtual_libraries()
class calibre.utils.formatter_functions.BuiltinVirtualLibraries
virtual_libraries() – Bu kitabı içeren sanal kitaplıkların virgülle ayrılmış listesini döndürür. Bu fonksiyon yalnızca grafik arayüzde kullanılabilir. Bu değerleri diske-kaydet veya aygıta-gönder şablonlarında kullanmak istiyorsanız önce “Diğer sütunlarda özel oluşturulmuş sütun” yapmalı, fonksiyonu bu sütunun şablonunda kullanmalı, ve bu sütunun değerini kaydet/gönder şablonunuzda kullanmalısınız.
1.9. Rehberler
151
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
If-then-else
contains(val, örüntü, eşleşme metni, eşleşmeme metni)
class calibre.utils.formatter_functions.BuiltinContains
contains(val, örüntü, eşleşme metni, eşleşmeme metni) – alanın örüntü düzenli ifadesiyle eşleşip eşleşmediğini
kontrol eder. Eşleşme bulunursa eşleşme metni, bulunmazsa eşleşmeme metni döndürür
ifempty(val, boşsa metin)
class calibre.utils.formatter_functions.BuiltinIfempty
ifempty(val, boşsa metin) – val boş değilse val, aksi halde boşsa metin döndürür
test(val, boş değilse metin, boşsa metin)
class calibre.utils.formatter_functions.BuiltinTest
test(val, boş değilse metin, boşsa metin) – alan boş değilse boş değilse metin, boşsa boşsa metin döndür
Iterating over values
first_non_empty(değer, değer, ...)
class calibre.utils.formatter_functions.BuiltinFirstNonEmpty
first_non_empty(değer, değer, ...) – boş olmayan ilk değeri döndürür. Tüm değerler boşsa, boş değer döndürülür.
İstediğiniz kadar değer verebilirsiniz.
lookup(val, örüntü, alan, örüntü, alan, ..., diger_alan)
class calibre.utils.formatter_functions.BuiltinLookup
lookup(val, örüntü, alan, örüntü, alan, ..., diger_alan) – switch gibidir, yalnızca bağımsız değişkenler alan (metadata) isimleridir, metin değil. Uygun alanın değeri çekilir ve kullanılır. Bileşik sütunlar alan olduklarından, bu
fonksiyonu bir bileşik alanda başka bir bileşik alanın değerini kullanarak kullanabilirsiniz. Bu, değişken kayıt
yolları oluştururken oldukça faydalıdır.
switch(val, örüntü, değer, örüntü, değer, ..., diğer_değer)
class calibre.utils.formatter_functions.BuiltinSwitch
switch(val, örüntü, değer, örüntü, değer, ..., diğer_değer) – her bir pattern, value çifti için, alanın düzenli ifade
pattern ile eşleşip eşleşmediğini kontrol eder, ve eşleşirse bu değer‘i döndürür. Herhangi örüntü eşleşmezse,
diger_deger döner. İstediğiniz kadar ‘örüntü, değer çiftiniz olabilir
List lookup
identifier_in_list(val, id, bulundu_değer, bulunamadı_değer)
class calibre.utils.formatter_functions.BuiltinIdentifierInList
identifier_in_list(val, id, bulundu_değer, bulunamadı_değer) – val virgülle ayrılmış tanımlayıcılar listesi olmak
üzere, karakter dizisini listedeki tüm değerlerle karşılaştırır. Tanımlayıcı “tanımlayıcı:değer” şeklindedir. id parametresi ya “id” ya da “id:regexp” olmalıdır. Bu id’ye sahip herhangi bir tanımlayıcı varsa ilk durum eşleşir.
Düzenli ifade tanımlayıcının değeriyle eşleşirse de ikinci durum eşleşir. Bir eşleşme varsa, bulundu_değer, aksi
halde bulunamadı_değer döndür.
152
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
in_list(val, ayraç, örüntü, bulunan_değer, bulunamayan_değer)
class calibre.utils.formatter_functions.BuiltinInList
in_list(val, ayraç, örüntü, bulunan_değer, bulunamayan_değer) – val’a ayraç ile ayrılmış öğe listesi olarak davran, örüntüyü listedeki her değerle karşılaştır. Örüntü bir değerle eşleşirse, bulunan_değer döndür, eşleşmezse
bulunamayan_değer döndür.
list_item(val, indis, ayraç)
class calibre.utils.formatter_functions.BuiltinListitem
list_item(val, indis, ayraç) – değeri ayraç ile ayrılmış öğeler listesi olarak yorumla, indis‘inci öğeyi döndür. İlk
öğe sıfır numaradır. Son öğe ‘list_item(-1,ayraç) ile döndürülebilir. Öğe listede değilse, boş değer döndürülür.
Ayraç count fonksiyonundakiyle aynı anlama sahiptir.
select(val, key)
class calibre.utils.formatter_functions.BuiltinSelect
select(val, key) – değeri, öğeler “id:değer” olacak şekilde virgülle ayrılmış öğeler olarak değerlendirir. id’nin
key’e eşit olduğu çifti bulur, ve karşılık gelen değeri döndürür.
str_in_list(val, ayraç, karakter dizisi, bulundu_değer, bulunamadı_değer)
class calibre.utils.formatter_functions.BuiltinStrInList
str_in_list(val, ayraç, karakter dizisi, bulundu_değer, bulunamadı_değer) – val ayraç ile ayrılmış öğeler listesi olmak üzere, karakter dizisini listedeki tüm değerlerle karşılaştırır. Karakter dizisi bir değerle eşleşirse,
bulundu_değer, aksi halde bulunamadı_değer döndür. Karakter dizisi ayraç içeriyorsa, o da listeymiş gibi davranılır ve tüm değerler kontrol edilir.
List manipulation
count(val, ayraç)
class calibre.utils.formatter_functions.BuiltinCount
count(val, ayraç) – değeri ayraç ile ayrılmış öğeler listesi olarak yorumlar, listedeki öğe sayısını döndürür. Çoğu liste ayraç olarak virgül kullanır, ama yazarlar ampersand kullanır. Örnekler: {tags:count(,)}, {authors:count(&)}
list_difference(liste1, liste2, ayraç)
class calibre.utils.formatter_functions.BuiltinListDifference
list_difference(liste1, liste2, ayraç) – büyük küçük harf duyarsız karşılaştırma ile liste2’de bulunan değerleri
liste1’den çıkararak oluşturulan listeyi döndürür. liste1 ve liste2’deki değerler ve döndürülen listedeki değerler
ayraçla ayrılır.
list_equals(list1, sep1, list2, sep2, yes_val, no_val)
class calibre.utils.formatter_functions.BuiltinListEquals
list_equals(list1, sep1, list2, sep2, yes_val, no_val) – list1 ve list2 aynı öğeleri içeriyorsa yes_val döndürülür,
aksi halde no_val. Öğeler iki listenin de uygun ayraç karakterle (sep1 veya sep2) ayrılmasıyla belirlenir. Listelerdeki öğelerin sıralaması önemli değildir. Karşılaştırma büyük küçük harf duyarsızdır.
list_intersection(liste1, liste2, ayraç)
class calibre.utils.formatter_functions.BuiltinListIntersection
list_intersection(liste1, liste2, ayraç) – büyük küçük harf duyarsız karşılaştırma yapılarak, liste2’de bulunamayan tüm değerlerin liste1’den çıkarılmasıyla oluşturulan listeyi döndürür. liste1, liste2 ve döndürülen listedeki
değerler ayraç ile ayrılır.
1.9. Rehberler
153
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
list_re(src_list, ayraç, include_re, opt_replace)
class calibre.utils.formatter_functions.BuiltinListRe
list_re(src_list, ayraç, include_re, opt_replace) – Ayraç karakteriyle src_list’in öğelere ayrılmasıyla bir liste
oluşturulur. Listedeki her öğe için, include_re kuralına uyup uymadığı kontrol edilir. Eşleşiyorsa, döndürülecek
listeye eklenir. opt_replace boş karakter dizisi değilse, öğe döndürülecek listeye eklenmeden önce değiştirme
yapılır.
list_re_group(src_list, ayraç, include_re, search_re, grup_1_şablon, ...)
class calibre.utils.formatter_functions.BuiltinListReGroup
list_re_group(src_list, ayraç, include_re, search_re, grup_1_şablon, ...) – list_re gibidir, farkı yer değiştirmenin isteğe bağlı olmamasıdır. Döndürülecek listede yer değiştirme yaparken re_group(list_item, search_re,
grup_1_şablon, ...) kullanır.
list_sort(list, yön, ayraç)
class calibre.utils.formatter_functions.BuiltinListSort
list_sort(list, yön, ayraç) – büyük küçük harf duyarsız sıralamayla sıralanmış listeyi döndürür. Yön sıfırsa, liste
artan sırada, aksi halde azalan sırada sıralanır. list öğeleri ve döndürülen listedeki öğeler ayraç ile ayrılır.
list_union(liste1, liste2, ayraç)
class calibre.utils.formatter_functions.BuiltinListUnion
list_union(liste1, liste2, ayraç) – liste1 ve liste2’deki değerleri büyük küçük harf duyarsız karşılaştırma yapar ve aynı değerleri teke indirerek birleşmiş listeyi döndürür. Öğelerin büyük küçük harf durumları farklıysa,
liste1’deki değeri kullanılır. liste1 ve liste2’deki öğerler ve döndürülen listedeki değerler ayraç ile ayrılır.
subitems(val, başlangıç_indisi, bitiş_indisi)
class calibre.utils.formatter_functions.BuiltinSubitems
subitems(val, başlangıç_indisi, bitiş_indisi) –Bu fonksiyon tarzlar gibi öğe listelerini ayırmak için kullanılır.
Değeri virgülle ayrılmış öğeler listesi olarak yorumlar, her öğe noktayla ayrılmış listedir. Önce noktayla ayrılmış öğeleri bulur, sonra her öğe için ‘başlangıç_indisi‘nden ‘bitiş_indisi‘ne bileşenler çıkarılır, sonra sonuçlar
bir araya getirilir ve döndürülür. Noktayla ayrılmış listedeki ilk bileşenin indisi sıfırdır. Bir indis eksi değerdeyse, listenin sonundan saymaya başlar. Özel bir durum olarak, bitiş_indisi sıfır olursa listenin boyutu anlamına gelir. Örnek olarak basit şablon kipinde #genre değeri “A.B.C”: {#genre:subitems(0,1)} olursa “A” döner. {#genre:subitems(0,2)} “A.B” döndürür. {#genre:subitems(1,0)} “B.C” döndürür. #genre değerinin “A.B.C,
D.E.F” olduğu varsayılırsa, {#genre:subitems(0,1)} “A, D” döndürür. {#genre:subitems(0,2)} “A.B, D.E” döndürür
sublist(val, başlangıç_indisi, bitiş_indisi, ayraç)
class calibre.utils.formatter_functions.BuiltinSublist
sublist(val, başlangıç_indisi, bitiş_indisi, ayraç) – değeri ayraç ile ayrılmış öğeler listesi olarak yorumlar, ‘başlangıç_indisi‘nden ‘bitiş_indisi‘ne kadar öğelerden oluşan yeni bir liste döndürür. İlk öğe sıfır numaralı öğedir. Bir indis eksi değerse, listenin sonundan saymaya başlanır. Özel bir durum olarak, bitiş_indisinin sıfır olması listenin uzunluğu anlamına gelir. Basit şablon kipini kullanan örneklerde etiket sütununun (virgülle ayrılmıştır) “A, B, C”: {tags:sublist(0,1„)} içerdiği var sayılırsa “A” döndürür. {tags:sublist(-1,0„)} “C” döndürür.
{tags:sublist(0,-1„)} “A, B” döndürür.
Other
assign(id, val)
class calibre.utils.formatter_functions.BuiltinAssign
assign(id, val) – val değerini id’ye atar, ve val döndürür. id bir tanımlayıcı olmalıdır, ifade değil
154
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
print(a, b, ...)
class calibre.utils.formatter_functions.BuiltinPrint
print(a, b, ...) – değişkenleri standart çıktıya yazdırır. calibre’yi komut satırından (calibre-debug -g) başlatmamışsanız çıktı bir kara deliğe gönderilir.
Recursion
eval(şablon)
class calibre.utils.formatter_functions.BuiltinEval
eval(şablon) – şablonu, kitap metadata’sı yerine yerel değişkenleri (‘atama’ yapılanlar) vererek değerlendirir.
Bu, şablon işlemciyi kullanarak yerel değişkenlerle karmaşık sonuçlar oluşturmaya yarar. { ve } karakterleri
özel olduğundan } karakteri yerine ]] ve { karakteri yerine [[ kullanmalısınız; otomatik olarak dönüştürülürler.
Ön ek ve son eklerin (|önek|sonek söz dizimi) şablon program kipinde bu fonksiyona bağımsız değişken olarak
verileemeyeceğini unutmayın.
template(x)
class calibre.utils.formatter_functions.BuiltinTemplate
template(x) – x’i şablon olarak değerlendirir. Değerlendirme kendi bağlamında yapılır, yani değişkenler çağıran
ve şablon değerlendirme tarafından paylaşılmaz. Çünkü { ve } karakterleri özeldir, { karakteri için [[ ve } karakteri için }} kullanmanız gerekir; otomatik olarak dönüştürülürler. Örneğin, template(‘[[title_sort]]’) {title_sort}
şablonunu değerlendirir ve değerini döndürür. Ön ek ve son eklerin (|önek|sonek söz dizimi) şablon program
kipinde bu fonksiyona bağımsız değişken olarak verilemeyeceğini unutmayın.
Relational
cmp(x, y, lt, eq, gt)
class calibre.utils.formatter_functions.BuiltinCmp
cmp(x, y, lt, eq, gt) – her ikisini de sayıya çevirdikten sonra x ve y’yi karşılaştırır. x < y ise lt döndürür. x== y
ise eq döndürür. Aksi halde gt döndürür.
first_matching_cmp(val, cmp1, result1, cmp2, r2, ..., else_result)
class calibre.utils.formatter_functions.BuiltinFirstMatchingCmp
first_matching_cmp(val, cmp1, result1, cmp2, r2, ..., else_result) – “val < cmpN”i sırayla karşılaştırır, başarılı
olan ilk eşleşmeyi resultN olarak döndürür. Hiçbir karşılaştırma başarılı olmazsa else_result döndürür. Örneğin:
first_matching_cmp(10,5,”küçük”,10,”orta”,15,”büyük”,”devasa”) “büyük” döndürür. Aynı örnekte ilk değer 16
olursa “devasa” döndürür.
strcmp(x, y, lt, eq, gt)
class calibre.utils.formatter_functions.BuiltinStrcmp
strcmp(x, y, lt, eq, gt) – x ve y’nin karakter dizisi olarak büyük küçük harf bağımsız karşılaştırmasını yapar. x <
y ise lt döndürür. if x== y ise eq döndürür. Aksi halde gt döndürür.
String case changes
capitalize(val)
class calibre.utils.formatter_functions.BuiltinCapitalize
capitalize(val) – alanın değerini büyük harfle döndür
1.9. Rehberler
155
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
lowercase(val)
class calibre.utils.formatter_functions.BuiltinLowercase
lowercase(val) – alanın değerini harfleri küçük şekilde döndürür
titlecase(val)
class calibre.utils.formatter_functions.BuiltinTitlecase
titlecase(val) – alanın değerini başlık şeklinde döndürür
uppercase(val)
class calibre.utils.formatter_functions.BuiltinUppercase
uppercase(val) – alanın değerini harfleri büyük şekilde döndürür
String manipulation
re(val, örüntü, yedek)
class calibre.utils.formatter_functions.BuiltinRe
re(val, örüntü, yedek) – Düzenli ifadeeyi uyguladıktan sonra alanı döndür. örüntü‘nün tüm örnekleri ‘yedek ile
değiştirilir. Calibre’nin her yerinde olduğu gibi, bunlar python-uyumlu düzenli ifadelerdir
re_group(val, pattern, template_for_group_1, for_group_2, ...)
class calibre.utils.formatter_functions.BuiltinReGroup
re_group(val, pattern, template_for_group_1, for_group_2, ...) – return a string made by applying the regular
expression pattern to the val and replacing each matched instance with the string computed by replacing each
matched group by the value returned by the corresponding template. The original matched value for the group is
available as $. In template program mode, like for the template and the eval functions, you use [[ for { and ]] for
}. The following example in template program mode looks for series with more than one word and uppercases
the first word: {series:’re_group($, “(S* )(.*)”, “[[$:uppercase()]]”, “[[$]]”)’}
shorten(val, sol karakterler, orta metin, sağ karakterler)
class calibre.utils.formatter_functions.BuiltinShorten
shorten(val, sol karakterler, orta metin, sağ karakterler) – Alanın alan başından sol karakterler artı orta metin
ve karakter dizisinin sonundan sağ karakterler kadarıyla kısaltılmış halini döndürür. Sol ve sağ karakterler tam
sayı olmalıdır. Kitap başlığının Ancient English Laws in the Times of Ivanhoe olduğunu ve 15 karakterlik bir
alana sığmasını istediğinizi varsayalım. {title:shorten(9,-,5)} kullanırsanız sonuç Ancient E-nhoe olur. Alanın
uzunluğu sol karakterler + sağ karakterler + orta metin‘den kısa olursa, alan olduğu gibi kullanılır. Örneğin
‘The Dome başlığı değiştirilmezdi.
strcat(a, b, ...)
class calibre.utils.formatter_functions.BuiltinStrcat
strcat(a, b, ...) – herhangi bir sayıda değişken alabilir. Tüm değişkenleri bitiştiren bir çıktı döndürür
strcat_max(max, string1, prefix2, string2, ...)
class calibre.utils.formatter_functions.BuiltinStrcatMax
strcat_max(max, string1, prefix2, string2, ...) – Bağımsız değişkenlerin uç uca eklenmesiyle oluşan karakter
dizisini döndürür. Dönen değer string1’e atanır. Prefix, string çiftleri nihai karater dizisi uzunluğu max değerini
geçmediği sürece değerin sonuna eklenir. string1 max’dan uzun olsa bile String1 döndürülür. İstediğiniz kadar
prefix, string çifti verebilirsiniz.
156
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
strlen(a)
class calibre.utils.formatter_functions.BuiltinStrlen
strlen(a) – Değişken olarak aldığı karakter dizisinin uzunluğunu döndürür
substr(str, start, end)
class calibre.utils.formatter_functions.BuiltinSubstr
substr(str, start, end) – str’nin start’dan end karakterine kadar aralığını döndürür. str’deki İlk karakter sıfırıncı
karakterdir. end eksi bir değerse, sağdak bu kadar karakter anlamına gelir. end sıfırsa, son karakter anlamına
gelir. Örneğin, substr(‘12345’, 1, 0) ‘2345’ döndürür, substr(‘12345’, 1, -1) ‘234’ döndürür.
swap_around_comma(val)
class calibre.utils.formatter_functions.BuiltinSwapAroundComma
swap_around_comma(val) – “B, A” biçiminde bir değer verildiğinde, “A B” döndür. Bu en çok Soyad Ad şeklindeki isimleri Ad Soyada çevirmede kullanılır. Virgül yoksa, fonksiyon val değerini değiştirmeden döndürür
transliterate(a)
class calibre.utils.formatter_functions.BuiltinTransliterate
transliterate(a) – kaynak karakter dizisindeki seslerin yaklaşık halleriyle oluşturulmuş latin alfabesinde bir karakter dizisi döndürür. Örneğin, kaynak “Фёдор Михaйлович Достоевский” ise fonksiyon “Fiodor Mikhailovich Dostoievskii” döndürür.
API of the Metadata objects The python implementation of the template functions is passed in a Metadata object.
Knowing it’s API is useful if you want to define your own template functions.
class calibre.ebooks.metadata.book.base.Metadata(title, authors=(u’Bilinmeyen’, ), other=None,
template_cache=None,
formatter=None)
A class representing all the metadata for a book. The various standard metadata fields are available as attributes
of this object. You can also stick arbitrary attributes onto this object.
Metadata from custom columns should be accessed via the get() method, passing in the lookup name for the
column, for example: “#mytags”.
Use the is_null() (sayfa 157) method to test if a field is null.
This object also has functions to format fields into strings.
The list of standard metadata fields grows with time is in STANDARD_METADATA_FIELDS (sayfa 158).
Please keep the method based API of this class to a minimum. Every method becomes a reserved field name.
is_null(field)
Return True if the value of field is null in this object. ‘null’ means it is unknown or evaluates to False. So
a title of _(‘Unknown’) is null or a language of ‘und’ is null.
Be careful with numeric fields since this will return True for zero as well as None.
Also returns True if the field does not exist.
deepcopy(class_generator=<function <lambda>>)
Do not use this method unless you know what you are doing, if you want to create a simple clone of
this object, use deepcopy_metadata() instead. Class_generator must be a function that returns an
instance of Metadata or a subclass of it.
get_identifiers()
Return a copy of the identifiers dictionary. The dict is small, and the penalty for using a reference where a
copy is needed is large. Also, we don’t want any manipulations of the returned dict to show up in the book.
1.9. Rehberler
157
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
set_identifiers(identifiers)
Set all identifiers. Note that if you previously set ISBN, calling this method will delete it.
set_identifier(typ, val)
If val is empty, deletes identifier of type typ
standard_field_keys()
return a list of all possible keys, even if this book doesn’t have them
custom_field_keys()
return a list of the custom fields in this book
all_field_keys()
All field keys known by this instance, even if their value is None
metadata_for_field(key)
return metadata describing a standard or custom field.
all_non_none_fields()
Return a dictionary containing all non-None metadata fields, including the custom ones.
get_standard_metadata(field, make_copy)
return field metadata from the field if it is there. Otherwise return None. field is the key name, not the label.
Return a copy if requested, just in case the user wants to change values in the dict.
get_all_standard_metadata(make_copy)
return a dict containing all the standard field metadata associated with the book.
get_all_user_metadata(make_copy)
return a dict containing all the custom field metadata associated with the book.
get_user_metadata(field, make_copy)
return field metadata from the object if it is there. Otherwise return None. field is the key name, not the
label. Return a copy if requested, just in case the user wants to change values in the dict.
set_all_user_metadata(metadata)
store custom field metadata into the object. Field is the key name not the label
set_user_metadata(field, metadata)
store custom field metadata for one column into the object. Field is the key name not the label
template_to_attribute(other, ops)
Takes a list [(src,dest), (src,dest)], evaluates the template in the context of other, then copies the result to
self[dest]. This is on a best-efforts basis. Some assignments can make no sense.
smart_update(other, replace_metadata=False)
Merge the information in other into self. In case of conflicts, the information in other takes precedence,
unless the information in other is NULL.
format_field(key, series_with_index=True)
Returns the tuple (display_name, formatted_value)
to_html()
A HTML representation of this object.
calibre.ebooks.metadata.book.base.STANDARD_METADATA_FIELDS
The set of standard metadata fields.
=
{}=
{}@default
=0=1=2=0=1=2
\PYG{l+s+sd}{\PYGZsq{}\PYGZsq{}\PYGZsq{}}
158
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
\PYG{l+s+sd}{All fields must have a NULL value represented as None for simple types,}
\PYG{l+s+sd}{an empty list/dictionary for complex types and (None, None) for cover\PYGZus{}data}
\PYG{l+s+sd}{\PYGZsq{}\PYGZsq{}\PYGZsq{}}
\PYG{n}{SOCIAL\PYGZus{}METADATA\PYGZus{}FIELDS} \PYG{o}{=} \PYG{n+nb}{frozenset}\PYG{p}{(}\PYG{p}{[}
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{tags}\PYG{l+s}{\PYGZsq{}}\PYG{p}{,}
\PYG{c}{\PYGZsh{} O
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{rating}\PYG{l+s}{\PYGZsq{}}\PYG{p}{,}
\PYG{c}{\PYGZsh{} A
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{comments}\PYG{l+s}{\PYGZsq{}}\PYG{p}{,}
\PYG{c}{\PYGZsh{} A
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{series}\PYG{l+s}{\PYGZsq{}}\PYG{p}{,}
\PYG{c}{\PYGZsh{} A
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{series\PYGZus{}index}\PYG{l+s}{\PYGZsq{}}\PYG{p}{,}
\PYG{c}{\PY
\PYG{c}{\PYGZsh{} Of the form \PYGZob{} scheme1:value1, scheme2:value2\PYGZcb{}}
\PYG{c}{\PYGZsh{} For example: \PYGZob{}\PYGZsq{}isbn\PYGZsq{}:\PYGZsq{}123456789\PYGZsq{}, \PYGZ
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{identifiers}\PYG{l+s}{\PYGZsq{}}\PYG{p}{,}
\PYG{p}{]}\PYG{p}{)}
\PYG{l+s+sd}{\PYGZsq{}\PYGZsq{}\PYGZsq{}}
\PYG{l+s+sd}{The list of names that convert to identifiers when in get and set.}
\PYG{l+s+sd}{\PYGZsq{}\PYGZsq{}\PYGZsq{}}
\PYG{n}{TOP\PYGZus{}LEVEL\PYGZus{}IDENTIFIERS} \PYG{o}{=} \PYG{n+nb}{frozenset}\PYG{p}{(}\PYG{p}{[}
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{isbn}\PYG{l+s}{\PYGZsq{}}\PYG{p}{,}
\PYG{p}{]}\PYG{p}{)}
\PYG{n}{PUBLICATION\PYGZus{}METADATA\PYGZus{}FIELDS} \PYG{o}{=} \PYG{n+nb}{frozenset}\PYG{p}{(}\PYG{p
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{title}\PYG{l+s}{\PYGZsq{}}\PYG{p}{,}
\PYG{c}{\PYGZsh{} t
\PYG{c}{\PYGZsh{} Pseudo field that can be set, but if not set is auto generated}
\PYG{c}{\PYGZsh{} from title and languages}
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{title\PYGZus{}sort}\PYG{l+s}{\PYGZsq{}}\PYG{p}{,}
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{authors}\PYG{l+s}{\PYGZsq{}}\PYG{p}{,}
\PYG{c}{\PYGZsh{} O
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{author\PYGZus{}sort\PYGZus{}map}\PYG{l+s}{\PYGZsq{}}\PYG{p}{,} \PY
\PYG{c}{\PYGZsh{} Pseudo field that can be set, but if not set is auto generated}
\PYG{c}{\PYGZsh{} from authors and languages}
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{author\PYGZus{}sort}\PYG{l+s}{\PYGZsq{}}\PYG{p}{,}
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{book\PYGZus{}producer}\PYG{l+s}{\PYGZsq{}}\PYG{p}{,}
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{timestamp}\PYG{l+s}{\PYGZsq{}}\PYG{p}{,}
\PYG{c}{\PYGZsh{} D
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{pubdate}\PYG{l+s}{\PYGZsq{}}\PYG{p}{,}
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{last\PYGZus{}modified}\PYG{l+s}{\PYGZsq{}}\PYG{p}{,}
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{rights}\PYG{l+s}{\PYGZsq{}}\PYG{p}{,}
\PYG{c}{\PYGZsh{} So far only known publication type is periodical:calibre}
\PYG{c}{\PYGZsh{} If None, means book}
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{publication\PYGZus{}type}\PYG{l+s}{\PYGZsq{}}\PYG{p}{,}
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{uuid}\PYG{l+s}{\PYGZsq{}}\PYG{p}{,}
\PYG{c}{\PYGZsh{} A
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{languages}\PYG{l+s}{\PYGZsq{}}\PYG{p}{,}
\PYG{c}{\PYGZsh{} o
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{publisher}\PYG{l+s}{\PYGZsq{}}\PYG{p}{,}
\PYG{c}{\PYGZsh{} S
\PYG{c}{\PYGZsh{} Absolute path to image file encoded in filesystem\PYGZus{}encoding}
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{cover}\PYG{l+s}{\PYGZsq{}}\PYG{p}{,}
\PYG{c}{\PYGZsh{} Of the form (format, data) where format is, for e.g. \PYGZsq{}jpeg\PYGZsq{}, \P
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{cover\PYGZus{}data}\PYG{l+s}{\PYGZsq{}}\PYG{p}{,}
\PYG{c}{\PYGZsh{} Either thumbnail data, or an object with the attribute}
\PYG{c}{\PYGZsh{} image\PYGZus{}path which is the path to an image file, encoded}
\PYG{c}{\PYGZsh{} in filesystem\PYGZus{}encoding}
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{thumbnail}\PYG{l+s}{\PYGZsq{}}\PYG{p}{,}
\PYG{p}{]}\PYG{p}{)}
\PYG{n}{BOOK\PYGZus{}STRUCTURE\PYGZus{}FIELDS} \PYG{o}{=} \PYG{n+nb}{frozenset}\PYG{p}{(}\PYG{p}{[}
\PYG{c}{\PYGZsh{} These are used by code, Null values are None.}
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{toc}\PYG{l+s}{\PYGZsq{}}\PYG{p}{,} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{sp
\PYG{p}{]}\PYG{p}{)}
1.9. Rehberler
159
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
\PYG{n}{USER\PYGZus{}METADATA\PYGZus{}FIELDS} \PYG{o}{=} \PYG{n+nb}{frozenset}\PYG{p}{(}\PYG{p}{[}
\PYG{c}{\PYGZsh{} A dict of dicts similar to field\PYGZus{}metadata. Each field description dict}
\PYG{c}{\PYGZsh{} also contains a value field with the key \PYGZsh{}value\PYGZsh{}.}
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{user\PYGZus{}metadata}\PYG{l+s}{\PYGZsq{}}\PYG{p}{,}
\PYG{p}{]}\PYG{p}{)}
\PYG{n}{DEVICE\PYGZus{}METADATA\PYGZus{}FIELDS} \PYG{o}{=} \PYG{n+nb}{frozenset}\PYG{p}{(}\PYG{p}{[}
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{device\PYGZus{}collections}\PYG{l+s}{\PYGZsq{}}\PYG{p}{,}
\PYG{c}
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{lpath}\PYG{l+s}{\PYGZsq{}}\PYG{p}{,}
\PYG{c}{\PYGZsh
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{size}\PYG{l+s}{\PYGZsq{}}\PYG{p}{,}
\PYG{c}{\PYGZsh
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{mime}\PYG{l+s}{\PYGZsq{}}\PYG{p}{,}
\PYG{c}{\PYGZsh
\PYG{p}{]}\PYG{p}{)}
\PYG{n}{CALIBRE\PYGZus{}METADATA\PYGZus{}FIELDS} \PYG{o}{=} \PYG{n+nb}{frozenset}\PYG{p}{(}\PYG{p}{[}
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{application\PYGZus{}id}\PYG{l+s}{\PYGZsq{}}\PYG{p}{,}
\PYG{c}{\PY
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{db\PYGZus{}id}\PYG{l+s}{\PYGZsq{}}\PYG{p}{,}
\PYG{c}{\PY
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{formats}\PYG{l+s}{\PYGZsq{}}\PYG{p}{,}
\PYG{c}{\PYGZsh{} l
\PYG{c}{\PYGZsh{} a dict of user category names, where the value is a list of item names}
\PYG{c}{\PYGZsh{} from the book that are in that category}
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{user\PYGZus{}categories}\PYG{l+s}{\PYGZsq{}}\PYG{p}{,}
\PYG{c}{\PYGZsh{} a dict of author to an associated hyperlink}
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{author\PYGZus{}link\PYGZus{}map}\PYG{l+s}{\PYGZsq{}}\PYG{p}{,}
\PYG{p}{]}
\PYG{p}{)}
\PYG{n}{ALL\PYGZus{}METADATA\PYGZus{}FIELDS} \PYG{o}{=}
\PYG{n}{SOCIAL\PYGZus{}METADATA\PYGZus{}
\PYG{n}{PUBLICATION\PYGZus{}METADATA\PYGZus{}FIELDS}\PYG{p}{)}\PYG{o}{.}\P
\PYG{n}{BOOK\PYGZus{}STRUCTURE\PYGZus{}FIELDS}\PYG{p}{)}\PYG{o}{.}\PYG{n}{
\PYG{n}{USER\PYGZus{}METADATA\PYGZus{}FIELDS}\PYG{p}{)}\PYG{o}{.}\PYG{n}{u
\PYG{n}{DEVICE\PYGZus{}METADATA\PYGZus{}FIELDS}\PYG{p}{)}\PYG{o}{.}\PYG{n}
\PYG{n}{CALIBRE\PYGZus{}METADATA\PYGZus{}FIELDS}\PYG{p}{)}
\PYG{c}{\PYGZsh{} All fields except custom fields}
\PYG{n}{STANDARD\PYGZus{}METADATA\PYGZus{}FIELDS} \PYG{o}{=} \PYG{n}{SOCIAL\PYGZus{}METADATA\PYGZus{}
\PYG{n}{PUBLICATION\PYGZus{}METADATA\PYGZus{}FIELDS}\PYG{p}{)}\PYG{o}{.}\P
\PYG{n}{BOOK\PYGZus{}STRUCTURE\PYGZus{}FIELDS}\PYG{p}{)}\PYG{o}{.}\PYG{n}{
\PYG{n}{DEVICE\PYGZus{}METADATA\PYGZus{}FIELDS}\PYG{p}{)}\PYG{o}{.}\PYG{n}
\PYG{n}{CALIBRE\PYGZus{}METADATA\PYGZus{}FIELDS}\PYG{p}{)}
\PYG{c}{\PYGZsh{} Metadata fields that smart update must do special processing to copy.}
\PYG{n}{SC\PYGZus{}FIELDS\PYGZus{}NOT\PYGZus{}COPIED} \PYG{o}{=}
\PYG{n+nb}{frozenset}\PYG{p}{(}\
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{author\PYGZus{}sort}\PYG{l+s}{\PY
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{cover\PYGZus{}data}\PYG{l+s}{\PYG
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{identifiers}\PYG{l+s}{\PYGZsq{}}\
\PYG{c}{\PYGZsh{} Metadata fields that smart update should copy only if the source is not None}
\PYG{n}{SC\PYGZus{}FIELDS\PYGZus{}COPY\PYGZus{}NOT\PYGZus{}NULL} \PYG{o}{=} \PYG{n+nb}{frozenset}\PY
\PYG{c}{\PYGZsh{} Metadata fields that smart update should copy without special handling}
\PYG{n}{SC\PYGZus{}COPYABLE\PYGZus{}FIELDS} \PYG{o}{=}
\PYG{n}{SOCIAL\PYGZus{}METADATA\PYGZus{}
\PYG{n}{PUBLICATION\PYGZus{}METADATA\PYGZus{}FIELDS}\PYG{p}{)}\PYG{o}{.}\P
\PYG{n}{BOOK\PYGZus{}STRUCTURE\PYGZus{}FIELDS}\PYG{p}{)}\PYG{o}{.}\PYG{n}{
\PYG{n}{DEVICE\PYGZus{}METADATA\PYGZus{}FIELDS}\PYG{p}{)}\PYG{o}{.}\PYG{n}
\PYG{n}{CALIBRE\PYGZus{}METADATA\PYGZus{}FIELDS}\PYG{p}{)} \PYG{o}{\PYGZhy
\PYG{n}{SC\PYGZus{}FIELDS\PYGZus{}NOT\PYGZus{}COPIED}\PYG{o}{.}\PYG{n}{uni
\PYG{n}{SC\PYGZus{}FIELDS\PYGZus{}COPY\PYGZus{}NOT\PYGZus{}NULL}\PYG{p}{)}
160
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
\PYG{n}{SERIALIZABLE\PYGZus{}FIELDS} \PYG{o}{=}
\PYG{n}{SOCIAL\PYGZus{}METADATA\PYGZus{}FIELDS}\
\PYG{n}{USER\PYGZus{}METADATA\PYGZus{}FIELDS}\PYG{p}{)}\PYG{o}{.}\PYG{n}{u
\PYG{n}{PUBLICATION\PYGZus{}METADATA\PYGZus{}FIELDS}\PYG{p}{)}\PYG{o}{.}\P
\PYG{n}{CALIBRE\PYGZus{}METADATA\PYGZus{}FIELDS}\PYG{p}{)}\PYG{o}{.}\PYG{n
\PYG{n}{DEVICE\PYGZus{}METADATA\PYGZus{}FIELDS}\PYG{p}{)} \PYG{o}{\PYGZhy{
\PYG{n+nb}{frozenset}\PYG{p}{(}\PYG{p}{[}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{dev
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{cover\PYGZus{}data}\PYG{l+s}{\PYGZsq{}}\
\PYG{c}{\PYGZsh{} these are rebuilt when needed}
Genel program kipi kullanma
Daha karmaşık şablon programları için, bazen şablon söz diziminden (tüm { ve } karakterleri) kaçınmak ve daha klasik
görünümlü bir program yazmak daha kolaydır. Bunu calibre’de şablona program: ile başlayarak yapabilirsiniz. Bu
durumda, hiçbir şablon işleme yapılmaz. Özel değişken $ ayarlanmaz. Doğru sonucu üretmek programınıza kalmıştır.
program: kipinin bir avantajı, parantezlerin artık özel olmamasıdır. Örneğin template() fonksiyonunu kullanırken [[
ve ]] kullanmak zorunlu değildir. Başka bir avantaj, program kipi şablonların Python’a derlenmesi ve diğer iki kipteki
şablonlardan oldukça hızlı çalışmasıdır. Hızdaki artış şablonlardaki karmaşıklığa bağlıdır; şablon ne kadar karmaşıklaşırsa gelişme de o kadar fazla olur. Derleme compile_gpm_templates (Genel Program Kipi şablonlarını
Python’a Derle) ile açılıp kapatılabilir. Derlemenin kapatılmasının ana sebebi derlenen şablonun çalışmıyor olması
durumu olabilir, bu durumda lütfen bir hata raporlayın.
Takip eden örnek MobileRead forumunun bir program: kipi uygulaması reçetesi: “Serileri ilk harflerini veya kısaltılmış hallerini kullanarak başlığa koy. Sonundaki makaleleri seri adından (varsa) çıkar.” Örneğin, Lord of the Rings
serisindeki The Two Towers kitabı için, reçete LotR [02] The Two Towers verir. Standart şablonlar kullanarak, aşağıda
açıklandığı gibi, reçete üç özel sütun ve bir santrala ihtiyaç duyar:
The solution requires creating three composite columns. The first column is used to remove the leading articles. The
second is used to compute the ‘shorten’ form. The third is to compute the ‘initials’ form. Once you have these columns,
the plugboard selects between them. You can hide any or all of the three columns on the library view:
=
{}=
{}@default
=0=1=2=0=1=2First column:
Name: \PYGZsh{}stripped\PYGZus{}series.
Template: \PYGZob{}series:re(\PYGZca{}(A\textbar{}The\textbar{}An)\PYGZbs{}s+,)\textbar{}\textbar{}\P
Second column (the shortened form):
Name: \PYGZsh{}shortened.
Template: \PYGZob{}\PYGZsh{}stripped\PYGZus{}series:shorten(4,\PYGZhy{},4)\PYGZcb{}
Third column (the initials form):
Name: \PYGZsh{}initials.
Template: \PYGZob{}\PYGZsh{}stripped\PYGZus{}series:re(([\PYGZca{}\PYGZbs{}s])[\PYGZca{}\PYGZbs{}s]+(
Plugboard expression:
Template:\PYGZob{}\PYGZsh{}stripped\PYGZus{}series:lookup(.\PYGZbs{}s,\PYGZsh{}initials,.,\PYGZsh{}sh
Destination field: title
This set of fields and plugboard produces:
Series: The Lord of the Rings
Series index: 2
Title: The Two Towers
Output: LotR [] The Two Towers
Series: Dahak
1.9. Rehberler
161
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Series index: 1
Title: Mutineers Moon
Output: Dahak [] Mutineers Moon
Series: Berserkers
Series Index: 4
Title: Berserker Throne
Output: Bers\PYGZhy{}kers [] Berserker Throne
Series: Meg Langslow Mysteries
Series Index: 3
Title: Revenge of the Wrought\PYGZhy{}Iron Flamingos
Output: MLM [] Revenge of the Wrought\PYGZhy{}Iron Flamingos
Aşağıdaki program özel başlık değerini hesaplayan bir programın sonuçlarını tutan sadece bir özel sütun kullanarak
asıl reçeteyle aynı sonuçları üretir:
=
{}=
{}@default
=0=1=2=0=1=2Custom column:
Name: \PYGZsh{}special\PYGZus{}title
Template: (the following with all leading spaces removed)
program:
\PYGZsh{}
compute the equivalent of the composite fields and store them in local variables
stripped = re(field(\PYGZsq{}series\PYGZsq{}), \PYGZsq{}\PYGZca{}(A\textbar{}The\textbar{}An)
shortened = shorten(stripped, 4, \PYGZsq{}\PYGZhy{}\PYGZsq{} ,4);
initials = re(stripped, \PYGZsq{}[\PYGZca{}\PYGZbs{}w]*(\PYGZbs{}w?)[\PYGZca{}\PYGZbs{}s]+(\P
\PYGZsh{}
Format the series index. Ends up as empty if there is no series index.
\PYGZsh{}
Note that leading and trailing spaces will be removed by the formatter,
\PYGZsh{}
so we cannot add them here. We will do that in the strcat below.
\PYGZsh{}
Also note that because we are in \PYGZsq{}program\PYGZsq{} mode, we can freely us
\PYGZsh{}
curly brackets in strings, something we cannot do in template mode.
s\PYGZus{}index = template(\PYGZsq{}\PYGZob{}series\PYGZus{}index:PYGZgt{}2.\PYGZcb{}\PYGZsq{
\PYGZsh{}
print(stripped, shortened, initials, s\PYGZus{}index);
\PYGZsh{}
\PYGZsh{}
\PYGZsh{}
\PYGZsh{}
\PYGZsh{}
strcat(
switch(
Now concatenate all the bits together. The switch picks between
initials and shortened, depending on whether there is a space
in stripped. We then add the brackets around s\PYGZus{}index if it is
not empty. Finally, add the title. As this is the last function in
the program, its value will be returned.
stripped,
\PYGZsq{}.\PYGZbs{}s\PYGZsq{}, initials,
\PYGZsq{}.\PYGZsq{}, shortened,
field(\PYGZsq{}series\PYGZsq{})),
test(s\PYGZus{}index, strcat(\PYGZsq{} [\PYGZsq{}, s\PYGZus{}index, \PYGZsq{}] \PYGZsq{})
field(\PYGZsq{}title\PYGZsq{}));
Plugboard expression:
Template:\PYGZob{}\PYGZsh{}special\PYGZus{}title\PYGZcb{}
Destination field: title
Programı santralin şablon kutusuna koyarak yukardaki özel sütunlar kullanmadan yapmak da mümkün olurdu. Ancak
böyle yapmak için, santral metni birden çok satır düzenlemeye izin vermediğinden tüm yorum satırlarının kaldırılması
gerekirdi. Özel sütuna sahip olmamanın programın koca tek bir satır olarak getirdiği zorluk artışına deyip deymeyeceği
tartışılır.
162
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Kullanıcı-tanımlı Şablon Fonksiyonları
Şablon işlemcisine kendi fonksiyonlarınızı ekleyebilirsiniz. Bu fonksiyonlar python ile yazılır, ve her üç şablon programlama kipinde de kullanılabilir. Fonksiyonlar Seçenekler -> Gelişmiş -> Şablon Fonksiyonları ile eklenebilirler.
Yönergeler bu iletişim penceresinde gösterilir.
Kayıt et/gönder şablonları ile ilgili özel notlar
Bir şablon diske kaydet veya aygıta gönder şablonu ile kullanıldığında özel işlemler uygulanır. Alanların değerleri
temizlenir, dosya sistemine özel karakterler alt çizgiler ile değiştirilir, yatık çizgiler dahil. Bunun anlamı alan metni
kullanılarak klasör oluşturulamayacağıdır. Ancak yatık çizgiler ön ek veya son ek karakter dizilerinden değiştirilmezler, yani bu karakter dizilerindeki yatık çizgiler klasörlerin oluşturulmasına sebep olur. Bu sebepten, değişken derinlikli
klasör yapıları oluşturabilirsiniz.
Örneğin, series/series_index - title dizin yapısını istediğimizi varsayın, series’in olmama durumunda, başlık en üst
klasörde olmalıdır. Bunu yapan şablon şu şekildedir:
=
{}=
{}@default
=0=1=2=0=1=2\PYGZob{}series:\textbar{}\textbar{}/\PYGZcb{}\PYGZob{}series\PYGZus{}index:\textbar{}\tex
Yatık çizgi ve tire sadece seriler boş değilken görülür.
Arama fonksiyonu daha da ince işlemler yapmamıza olanak verir. Örneğin, bir kitabın serisi varsa, series/series index
- title.fmt şeklinde bir dizin yapısı istediğimizi varsayalım. Kitabın serisi yoksa da genre/author_sort/title.fmt. Kitabın
türü de yoksa, ‘Unknown’ kullanmak istiyoruz. Serinin değerine bağlı olarak, iki tane tamamen değişik yol istiyoruz.
Bunu elde etmek için:
1. {series}/{series_index} - {title’} içeren bir bileşik alan (AA diyelim) oluştururuz. Seri
boş değilse, bu şablon series/series_index - title üretecektir.
2. Create a composite field (call it BB) containing {#genre:ifempty(Unknown)}/{author_sort}/{title}.
This template produces genre/author_sort/title, where an empty genre is replaced with Unknown.
3. Kayıt şablonunu {series:lookup(.,AA,BB)} olarak ayarlayın. Bu şablon seri boş değilse bileşik
alan AA’yı, boşsa BB’yi seçer. Yani serinin boş olup olmamasına bağlı iki tamamen değişik kayıt yolumuz
olmuş oldu.
Şablonlar ve Santrallar
Santraller kitaba yazılan metadata’yı diske kaydetme ve aygıta gönderme işlemlerinde değiştirmeye yarar. Bir santral
size kitabın metadata’sına yazılacak veriyi sağlayan şablonu belirtme izni verir. Santraller kullanarak şu alanları değiştirebilirsiniz: authors, author_sort, language, publisher, tags, title, title_sort. Bu özellik sıralama ya da görüntüleme
sorunlarını aygıttaki kitapta değişik metadata kullanarak çözmek isteyen insanlara yardımcı olur.
Bir santral oluşturduğunuzda, santralin kullanılacağı biçim ve aygıtı belirtirsiniz. Biçimleri (bir aygıta göndermenin
aksine) kaydederken kullanılan, save_to_disk adında özel bir aygıt sağlanır. Biçim ve aygıtı seçtiğinizde yeni değerleri
sağlayacak şablonları sağlar ve değiştirilecek metadata alanlarını seçersiniz. Bu şablonlar hedef alanlarına bağlıdırlar,
santral adı da burdan gelir. Tabi ki bu şablonlarda bileşik sütunlar kullanabilirsiniz.
Bir santralin uygulanacağı durumda (içerik sunucusu, diske kaydet, veya aygıta gönder), calibre verilen biçim ve aygıt
için doğru olanı tanımlı santraller içinden arar. Örneğin, ANDROID aygıta gönderilen bir EPUB kitap için uygun
santrali ararken, calibre santralleri aşağıdaki arama sırasını kullanarak arar:
• biçim ve aygıtla birebir eşleşen bir santral, örn., EPUB ve ANDROID
• biçim ve özel any device seçimi ile birebir eşleşen bir santral, örn., EPUB ve any device
1.9. Rehberler
163
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
• özel any format seçimi ve aygıtla birebir eşleşmeli bir santral, örn., any format ve ANDROID
• any format ve any device olan bir santral
Etiket ve yazar alanları özel işlem gerektirir, çünkü her iki alan da birden fazla öğe tutabilir. Bir kitabın birden çok
etiketi ve yazarı olabilir. Bu iki alandan birinin değişeceğini belirttiğinizde, şablonun sonucu birden fazla öğenin
orada olup olmadığı hususunda incelenir. Etiketler için, sonuç, calibre’nin virgül bulduğu yerlerden kesilerek ayrılır.
Örneğin, şablon Thriller, Horror değerini üretiyorsa, sonuç iki etiket olur Thriller ve Horror. Etiketin
ortasına virgül koymanın bir yolu yoktur.
Aynı şey yazarlar için de geçerlidir, ama ayırma için virgül yerine & (ampersand) karakteri kullanılır. Örneğin, şablon Blogs, Joe&Posts, Susan değerini üretiyorsa, kitap iki yazarı var olarak sonlanacaktır, Blogs, Joe
ve Posts, Susan. Şablon Blogs, Joe;Posts, Susan üretiyorsa, kitabın biraz garip isimli tek bir yazarı
olacaktır.
Santraller diske kaydedilirken ya da aygıta yazılırken kitaba yazılan metadata’yı etkilerler. Santraller diske
kaydet ve aygıta gönder tarafından dosya isimlerini oluşturmakta kullanılan metadata’yı etkilemezler. Bunun
yerine, dosya isimleri, uygun seçenekler penceresinde girilen şablonlar kullanılarak oluştururlur.
Yardımcı İpuçları
Şu ipuçlarını faydalı bulabilirsiniz.
• Şablonları test etmek için özel bir bileşik sütun oluşturun. Sütunu oluşturduğunuzda, sütuna çift tıklayarak
şablonunu değiştirebilirsiniz. Test etmediğinizde sütunu gizleyin.
• Şablonlar bir bileşik özel sütuna referans vererek diğer şablonları kullanabilirler.
• Bir santralde, özel şablon {} kullanarak bir alanı boş olarak ayarlayabilirsiniz (ya da boşla eş değer neyse). Bu
şablon her zaman boş karakter dizisi olarak değerlenecektir.
• Yukarıda sıfır değeri olsa bile sayıları göstermeye yarayan teknik standart alan series_index ile de çalışır.
1.9.4 Calibre’de düzenli ifadeleri kullanmak hakkında herşey
Düzenli ifadeler calibre’nin bir çok noktasında kullanılan ve e-kitap içerik ve metadata’sında karmaşık değişiklikler
yapmaya yarayan özelliklerdir. Bu kılavuz calibre’de düzenli ifade kullanmaya giriş niteliğindedir.
164
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
İçindekiler
•
•
•
•
•
•
•
•
•
•
•
•
Öncelikle, bir uyarı ve bir kaç cesaret kelimesi (sayfa 165)
Calibre’de nerelerde düzenli ifadeler kullanabilirsiniz? (sayfa 165)
Yahu nedir bu düzenli ifade? (sayfa 165)
Açıklamak istemez misin? (sayfa 166)
Çok kötü görünmüyor. Sırada ne var? (sayfa 166)
Güzel! Mantıklı gelmeye başladı! (sayfa 166)
Bu özel karakterler değişik ve temiz, ama ya bir nokta ya da soru işareti eşleştirmek istersem? (sayfa 167)
Peki, en kullanışlı kümeler hangileri? (sayfa 167)
Ama bir kaç çeşit karakter dizim varsa, işler karmaşıklaşıyor? (sayfa 167)
Şunu atladın... (sayfa 168)
Başlangıçta, düzenli ifadeleri büyük küçük harf bağımsız yapabileceğimizi söylemiştin? (sayfa 168)
Galiba artık bu düzenli ifadeleri anlamaya başlıyorum... calibre’de bunları nasıl kullanırım? (sayfa 168)
– Dönüştürmeler (sayfa 168)
– Kitap Ekleme (sayfa 169)
– Metadata’nın toplu düzenlenmesi (sayfa 169)
• Hazırlayanlar (sayfa 169)
Öncelikle, bir uyarı ve bir kaç cesaret kelimesi
Bu, kaçınılmaz şekilde bir şekilde teknik olacaktır- neticede, düzenli ifadeler teknik şeyler yapmak için teknik araçlardır. Karmaşık ya da anlaşılmaz görünebilecek bazı kavramlar veya jargon kullanmam gerekecek. Bu kavramları
olabildiğince basit anlatmaya çalışacağım, ama hiç anlatmadan da yapamam. Bunu söyledikten sonra, gördüğünüz
jargonlar cesaretinizi kırmasın, herşeyi baştan anlatmaya çalışıyorum. Ve düzenli ifadeler kara büyü ya da gizli saklı
şeyler gibi görünseler de (ya da rastgele karakter dizileri ve işaretler gibi), bu kadar karmaşık olmadıkları konusunda
sözüme güvenebilirsiniz. Düzenli ifadeleri gerçekten anlayan insanlar bile daha karmaşık olanları okumakta zorlanabilirler, ama yazması o kadar da zor değildir- ifadeyi adım adım oluşturursunuz. Şimdi bir adım atın ve beni tavşan
deliğine doğru takip edin.
Calibre’de nerelerde düzenli ifadeler kullanabilirsiniz?
Calibre’nin düzenli ifade kullandığı bir kaç yer vardır. Dönüştürme seçeneklerinde Arama & Değiştirme, içe aktarma
ayarlarında metadata algılama ve toptan kitapların metadata’sını düzenlerken Arama & Değiştirme. Calibre kitap düzenleyici de arama ve değiştirme özelliğinde düzenli ifadeler kullanabilir.
Yahu nedir bu düzenli ifade?
Bir düzenli ifade karakter dizisi kümelerini tanımlama yöntemidir. Tek bir düzenli ifade değişik belirli sayıda karakter
dizisiyle eşleşebilir. Düzenli ifadeyi bu kadar güçlü kılan budur – çok sayıda çeşitlemeyi ifade edecek öz bir yöntemdir.
Not: Burada karakter dizisini programlama dillerinde olduğu gibi kullanıyorum: bir veya daha çok karakterin dizisi,
karakterler gerçek karakterler, sayılar, noktalama işaretleri ve boşluk (satır sonu, sekmeler vs.) olabilir. Genellikle
büyük ve küçük harflerin aynı geçmediğini unutmayın, yani “a” ve “A” farklı karakterlerdir. Calibre’de, düzenli ifadeler arama çubuğunda büyük küçük harf duyarsızdır, ama bundan daha sonra bahsedeceğiz. Karmaşıklaşıyor çünkü
düzenli ifadeler eşleştikleri karakter dizilerinde çeşitlemelere izin verirler, yani bir ifade birden çok karakter dizisiyle
eşleşebilir, zaten kullanılma sebepleri de budur. Birazdan buna değineceğiz.
1.9. Rehberler
165
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Açıklamak istemez misin?
Peki, zaten bu yüzden burdayız. Öncelikle, düzenli ifadelerdeki en önemli kavram şudur: Bir karakter dizisi kendisiyle
eşleşen bir düzenli ifadedir. Yani, "Hello, World!" karakter dizisiyle eşleşen bir düzenli ifade istesem, kullanmam gereken düzenli ifade Hello, World!‘‘olurdu. Ve evet, gerçekten bu kadar basit.
Fark edeceğiniz üzere, bu *yalnızca* bire bir karakter dizisiyle eşleşir yani
‘‘"Hello, World!" ile, "Hello, wOrld!" veya "hello, world!" ile ya da başka bir çeşidiyle değil.
Çok kötü görünmüyor. Sırada ne var?
Sırada gerçekten iyi şeyler başlıyor. Düzenli ifadelerin birden çok karakter dizisiyle eşleşebildiğini söylemiştim hatırlıyorsunuz değil mi? Burası işlerin biraz karmaşıklaştığı yerdir. Daha pratik bir örnek olması açısından, diyelim dönüştürmek istediğiniz kitabın kötü bir alt metni var, sayfaları “Page 5 of 423” gibi sayıyor. Sayfa numaralarının 1’den
423’e saydığı aşikardır, yani 423 değişik karakter dizisini eşleştirmeniz gerekir, değil mi? Yanlış, aslında: düzenli ifadeler size eşleşecek karakter kümelerini tanımlamanızı sağlar. Bir küme belirtmek için, kümede olmasını istediğiniz
tüm karakterleri köşeli parantezlere alırsınız. Yani, [abc] kümesi “a”, “b”, “c” karakterlerinden herhangi biriyle eşleşir. Kümeler her zaman kümedeki karakterlerden biriyle eşleşir. Karakter aralıklarını “anlarlar”, yani tüm küçük harfli
karakterlerle eşleşme isterseniz, [a-z] kümesini kullanırsınız ve küçük- ve büyük harfler için de [a-zA-Z] vb.
Fikri kaptınız mı? Yani Page [0-9] of 423 ifadesi ile ilk 9 sayfayı eşleştirmiş olur, böylece gerekli ifadeleri üçe
indirmiş olurdunuz: İkinci ifade Page [0-9][0-9] of 423 tüm iki basamaklı numaralarla eşleşirdi, ve üçüncü
ifadeyi de tahmin edeceksinizdir. Hadi yazın bakalım.
Güzel! Mantıklı gelmeye başladı!
Bunu söyleyeceğinizi umuyordum. Ama kendinizi hazırlayın, şimdi daha da iyi olacak! Kümeleri kullanarak bir çok
karakterden biriyle eşleşme yapabileceğimizi öğrendik. Hatta bir karakter veya kümeyi tekrar kullanarak yukardaki
sayfa numarası örneğinde gerekli ifade sayısını teke indirebilirsiniz. Evet, BİR! İlginizi çekti mi? Çekmeli! Şu şekilde
çalışır: Bazı özel karakterler, “+”, ”?” ve “*”, önlerindeki elemanı tekrarlarlar. (Eleman ya tek bir karakter, ya bir
karakter kümesi, kaçış serisi ya da bir grup demektir (son ikisine daha sonra göz atacağız)- kısaca, düzenli ifadedeki
herhangi tekil öğe.). Bu karakterlere genel arama karakterleri ya da nicelik sözcükleri denir. Daha açık olmak gerekirse,
”?” önceki elemandan 0 veya 1 tane ile eşleşir, “*” 0 veya daha fazla ile ve “+” 1 veya daha fazla ile eşleşme demektir.
Birkaç örnek: a? ifadesi ya “” (boş karakter dizisi, bu durumda pek faydalı değil) veya “a”, a* ifadesi “”, “a”,
“aa” veya bir satırdaki herhangi sayıda a ile, ve son olarak, a+ ifadesi “a”, “aa” veya bir satırdaki herhangi sayıda a
ile eşleşir (Not: boş karakter dizisiyle eşleşmez!). Kümeler için de olay aynıdır: [0-9]+ ifadesi tüm tam sayılarla
eşleşir! Ne düşündüğünüzü biliyorum, ve haklısınız: Bunu yukardaki sayfa numaraları eşleştirmesinde kullansak, bu
tüm sayfa numaralarıyla eşleşen bir ifade olmaz mıydı? Evet, Page [0-9]+ of 423 ifadesi bu kitaptaki tüm sayfa
numaralarıyla eşleşirdi!
Not: Bu nicelik sözcükleriyle ilgili bir not: Genellikle olabildiğince çok metinle eşleşmeye çalışırlar, yani kullanırken
dikkatli olun. Buna “hırslı davranış” denir - neden olduğunu anladığınıza eminim. Bu, bir etiketi eşleştirmeye çalıştığınızda problem olmaya başlar. "<p class="calibre2">Başlık buraya</p>" karakter dizisi örneğini ele
alalım ve açılış etiketini eşleştirmek istediğinizi farz edelim (ilk açı işaretleri arasındaki kısım, etiketlerle ilgili daha
sonra konuşacağız). <p.*> ifadesinin bu etiketle eşleşeceğini düşünebilirsiniz, ama aslında tüm karakter dizisiyle
eşleşir! (”.” karakteri başka bir özel karakterdir. Satır sonları hariç herşeyle eşleşir, yani, .* ifadesi düşünebileceğiniz
tüm tek satırlar ile eşleşir.) Bunun yerine <p.*?> kullanmayı deneyin, bu "*" nicelik sözcüğünün hırslı olmamasını
sağlar. Bu ifade yalnızca ilk açılış etiketiyle eşleşirdi, istediğimiz gibi. Aslında bunu elde etmenin bir yolu daha vardır:
<p[^>]*> ifadesi aynı açılış etiketiyle eşleşir- sonraki kısımda neden olduğunu göreceksiniz. Şimdilik bir düzenli
ifadeyi yazmanın birden çok yolu olabileceğini not edin.
166
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Bu özel karakterler değişik ve temiz, ama ya bir nokta ya da soru işareti eşleştirmek istersem?
Bunu da tabi ki yapabilirsiniz: Herhangi özel karakterin önüne ters bölü işareti koyarsanız, bu karakter herhangi bir
özel anlamı olmadan neyse o olarak yorumlanır. Bir ters bölü işareti çifti ve ardından gelen tek bir karaktere kaçış
düzeni denir, ve özel bir karakterin önüne ters bölü koymaya da karakteri kaçırmak denir. Kaçış düzeni tek bir öğe gibi
yorumlanır. Tabi ki yalnızca özel karakterleri kaçırmaktan fazlasınnı yapan kaçış düzenleri de vardır, örneğin "\t"
bir sekme anlamına gelir. Bazı kaçış düzenlerinden daha sonra bahsedeceğiz. Ve bu arada, bu özel karakterlerle ilgili
olarak: Bu girişte bahsi geçen karakterleri bir fonksiyona sahipmiş ve karakterin aslını kullanmak için kaçırmanız
gerekiyormuş gibi düşünebilirsiniz.
Peki, en kullanışlı kümeler hangileri?
Soracağınızı biliyordum, Kullanışlı kümelerden bazıları tek bir sayıyla eşleşen [0-9], tek bir küçük harfle eşleşen
[a-z], tek bir büyük harfle eşleşen [A-Z], tek bir harfle eşleşen [a-zA-Z] ve tel bir harf ya da sayıyla eşleşen
[a-zA-Z0-9] olabilir. Ayrıca kısayol olarak bir kaçış düzeni kullanabilirsiniz:
=
{}=
{}@default
=0=1=2=0=1=2\PYGZbs{}d is equivalent to [
\PYGZbs{}s is equivalent to any whitespace
PYGZhy{}9]
\PY
Not: “Boşluk” yazdırılmayacak herşeyi ifade eden bir terimdir. Bu karakterler boşluk, sekme, satır besleme, form
besleme ve satır başını içerir.
Kümelerle ilgili son bir not olarak, bir kümeyi herhangi bir karakter gibi ama kümedeki karakterler gibi tanımlayabileceğinizi söyleyelim. Bunu "^" karakterini kümedeki ilk karakter olarak ekleyerek yapabilirsiniz. Böylece, [^a] “a”
olmayan herhangi bir karakterle eşleşir. Buna kümeyi tümleme denir. Daha önce gördüğümüz kaçış düzeni kısayolları
de tümlenebilirler: "\D" sayı olmayan herhangi bir karakter demektir, yani [^0-9] ile eşittir. Diğer kısayollar da
tahmin edeceğiniz üzere, küçük harf olan yerine büyük harf kullanarak tümlenebilir. Önceki kısımdan <p[^>]*>
örneğine gidersek, kullandığı karakter kümesinin kapanan bir açı işareti dışındaki herhangi bir karakterle eşleştiğini
görebilirsiniz.
Ama bir kaç çeşit karakter dizim varsa, işler karmaşıklaşıyor?
Korkmayın, hayat hala kolay ve iyi. Şu örneği ele alın: Dönüştürdüğünüz kitabın her tekil sayfasında “Title” yazıyor
ve her çift sayfada “Author” yazsın. Yazdırınca güzel görünür değil mi? Ama e-kitaplarda, can sıkıcıdır. Tam ifadeleri
normal parantezler içinde gruplayabilirsiniz, ve "|" karakteri size ya sağındaki ya da solundaki ile eşleşme sağlar.
Bunları birleştirdiğinizde tamamsınız. Çok mu hızlı oldu? Tamam, öncelikle, tek ve çift sayfalar için ifadeleri birleştiriyoruz, böylece ihtiyacımız olan iki ifade (Title)(Author) oluyor: (Title|Author) ifadesi kullanırsanız
ya “Title” (tek sayfalarda) ya da “Author” (çift sayfalarda) ile eşleşirsiniz. Kolay değil miydi?
Tabi ki, grup parantezleri kullanmadan da dik çubuğu kullanabilirsiniz. Nicelik sözcüklerinin önlerindeki öğeleri tekrarladıklarını söylediğimi hatırlıyorsunuz değil mi? Dikey çubuk biraz daha değişik çalışır: “Title|Author” ifadesi de
ya “Title” ya da “Author” karakter dizisiyle eşleşir, yukardaki örnekteki gibi gruplamayla. Dikey çubuk tüm ifade
arasından önce geleni seçer ve takip eder. Yani, “Calibre” ve “calibre” karakter dizileriyle eşleşme istediğinizde ve
yalnızca büyük harf- ve küçük harf “c” arasını seçmek istediğinizde , (c|C)alibre ifadesini kullanmanız gerekir,
gruplama “c” nin seçildiğinden emin olmanızı sağlar. c|Calibre kullansaydınız, “c” karakterinde eşleşme alırdınız
ya da “Calibre” karakter dizisinde, ki burada istediğimiz bu değil. Kısaca: şüphe duyarsanız, gruplamayı dikey çubukla
kullanın.
1.9. Rehberler
167
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Şunu atladın...
...bir dakika, gruplarla yapabileceğiniz bir tane son, gerçekten hoş şey var. Daha önce eşleşen bir grubunuz varsa,
sonraki ifadelerde bu gruba başvurabilirsiniz: Gruplar 1 ile başlayarak numaralandırılır, ve başvurmak için grup numarasını kaçırmanız gerekir, yani beşinci gruba \5 ile başvurulur. “Test Test” karakter dizisinde ([^ ]+) \1 aradıysanız, tüm karakter dizisiyle eşleşirsiniz!
Başlangıçta, düzenli ifadeleri büyük küçük harf bağımsız yapabileceğimizi söylemiştin?
Evet söyeldim, dikkat edip hatırlattığınız için teşekkürler. Calibre’ye bazı şeyleri nasıl ele almasını istediğinizi bayraklar kullanarak söyleyebilirsiniz. İfadenize bayrakları özel bir yapı olan (?bayraklar buraya konuyor)
ile ekleyebilirsiniz, ki burada “bayraklar buraya konuyor” yerine belli olduğu üzere bayrakları koyuyorsunuz. Göz
ardı etme durumunda, bayrak i olur, yani ifadenizde (?i) eklersiniz. Böylece test(?i) “Test”, “tEst”, “TEst” ve
düşünebileceğiniz tüm büyük küçük harf çeşitlemeleriyle eşleşir.
Başka bir kullanışlı bayrak noktanın tüm karakterlerle satır başı dahil eşleşmesini sağlar, s bayrağı. Bir ifadede birden
fazla bayrak kullanmak isterseniz, hepsini aynı ifadeye koyun: (?is) büyük küçük harfi göz ardı eder, ve noktanın
herşeyle eşleşmesini sağlar. İlk önce hangi bayrağı belirttiğiniz önemli değildir, (?si) ile yukardaki aynıdır. Bu arada,
ifadenize bayrakları koyabileceğiniz iyi yerler ya ifadenin başı ya da sonudur. Bu şekilde, başka bir şeyle karışmazlar.
Galiba artık bu düzenli ifadeleri anlamaya başlıyorum... calibre’de bunları nasıl kullanırım?
Dönüştürmeler
Oldukça tertipli olan dönüştürme ayarlarıyla başlayalım. Arama ve Değiştirme kısmında, dönüştürme sırasında değiştirilecek karakter dizisini tanımlayan bir regexp (düzenli ifadenin kısaltması) kullanabilirsiniz. Güzel kısmı sihirbazdır. Sihirbaz değneğine tıklayarak calibre’nin dönüştürme sırasında ne “gördüğünün” önizlemesini alabilirsiniz.
Silmek istediğiniz karakter dizisine gidin, seçin ve kopyalayın, pencerenin üstündeki regexp alanına yapıştırın. Değişken kısımlar varsa, sayfa numaraları gibi, bunları da kapasayacak kümeler ya da nicelik sözcükleri kullanın, ve hazır
el atmışken, varsa özel karakterleri kaçırmayı da unutmayın. Test ile etiketlenmiş düğmeye bastığınızda calibre regexp kullandığınızda değiştireceği kısımları vurgular. Tatmin olduğunuzda, Tamam’a basıp dönüştürün. Dönüştürme
kaynağınızda şu şekilde etiketler varsa dikkatli olun:
=
{}=
{}@default
=0=1=2=0=1=2Maybe, but the cops feel like you do, Anita. What\PYGZsq{}s one more dead vampire?
New
\PYGZlt{}p class=\PYGZdq{}calibre4\PYGZdq{}\PYGZgt{} \PYGZlt{}b class=\PYGZdq{}calibre2\PYGZdq{}\PYGZ
\PYGZlt{}a href=\PYGZdq{}http://www.processtext.com/abclit.html\PYGZdq{} class=\PYGZdq{}calibre3\PYGZ
http://www.processtext.com/abclit.html\PYGZlt{}/a\PYGZgt{}\PYGZlt{}/b\PYGZgt{}\PYGZlt{}/p\PYGZgt{}
\PYGZlt{}p class=\PYGZdq{}calibre4\PYGZdq{}\PYGZgt{} It had only been two years since Addison v. Clar
The court case gave us a revised version of what life was
(şu başlıktan71 utanamdan kopyaladım). Bazı etiketleri kopyalamanız da gerekebilir. Bu örnekte <b
class="calibre2"> etiketiyle başlamanızı öneririm, şimdi ilgili kapanış etiketiyle bitirmeniz gerekir (açılış
etiketleri <tag>, kapanış etiketleri </tag>‘‘lardır), ki bu durumda basitçe sonraki ‘‘</b>
olur. (Bu noktada aklınızda bir şey kaldıysa forumda sorun ya da iyi bir HTML kılavuzunda göz atın) Açılış etiketi <b.*?> kullanılarak tanımlanabilir, kapanış etiketi de </b>, böylece bu etiketler arasındaki her şeyi
<b.*?>.*?</b> ile silebiliriz. Ama bu ifadeyi kullanmak kötü bir fikir olurdu, çünkü <b>- etiketleriyle kapsanmış herşeyi silerdi (bu arada bu etiketler metni koyu yazmaya yarar), kitaptan bir sürü bölümü silebileceğini
tahmin edebiliriz. Bunun yerine, düzenli ifadeyi kapsanan karakter dizisinin başını da içerecek şekilde değişebiliriz
<b.*?>\s*Generated\s+by\s+ABC\s+Amber\s+LIT.*?</b>. Nicelikli \s burada doğrudan boşluk kullanmak yerine karakter dizisinin tüm çeşitlemelerini yakalamak için kullanıldı. Yeni bir ifade test ederken calibre’nin
71
http://www.mobileread.com/forums/showthread.php?t=75594”
168
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
neyi sileceğine bakarak silmek istemediğiniz bir şeyi silmediğinizden emin olun. Yalnızca bir yeri kontrol ederseniz
metnin başka bir yerindeki bir eşleşmeyi atlayabilirsiniz. Ayrıca istemeden fazla ya da az etiket silerseniz, calibre
zedelenen kodu silmeyi yaptıktan sonra düzeltmeye çalışır.
Kitap Ekleme
Düzenli ifadelerin kullanılabileceği başka bir yer de dosya isimlerinden metadata çıkarmaktır. Bu özelliği ayarların “Kitap ekleme” kısmında bulabilirsiniz. Burada özel bir özellik vardır: Metadata alanları için alan isimlerini kullanabilirsiniz, örneğin (?P<title>) calibre’nin kitap başlığı olarak karakter dizisinin bu kısmını kullanacağı anlamına gelir. İzin verilen alan isimleri güzel bir test alanıyla beraber pencerelerde listelenir. Örnek:
Klasik Metinler: The Divine Comedy by Dante Alighieri.mobi (Klasik İtalyan şiirini hepimiz sevdiğimizden, bu tabi ki zaten kitaplığınızda) veya Bilim Kurgu harikaları: The Foundation
Trilogy by Isaac Asimov.epub gibi bir takım dosyaları içe aktarmak istediğinizi varsayalım. Bu kesinlikle calibre’nin anlamlı bir veri çıkaramayacağı bir isimlendirme şeması - çünkü metadata çıkarmak için kullandığı
standart ifade (?P<title>.+) - (?P<author>[^_]+). Burada çalışacak bir düzenli ifade [a-zA-Z]+:
(?P<title>.+) by (?P<author>.+) olurdu. Metadata alanı için olan grup içinde, alanın gerçekten neyle
eşleşeceğini tanımlayan ifadeler kullanmanız gerektiğini de not alın lütfen. Ayrıca calibre’nin sağladığı test alanını
kullanırken test dosya isminize dosya uzantısını da girmelisiniz, aksi halde çalışan bir ifadeniz olsa da hiçbir eşleşme
almazsınız.
Metadata’nın toplu düzenlenmesi
Son kısım metadata alanlarında düzenli ifade arama ve değiştirme. Buna kitaplıktan birden çok kitap seçin toplu metadata düzenleme seçerek erişebilirsiniz. Bu son özelliği kullanırken çok dikkatli olun, çünkü kitaplığınıza Çok Kötü
Şeyler yapabilir! Test alanlarını kullanarak ifadelerinizin yapmasını istediklerinizi yaptığından tekrar emin olun, ve
yalnızca değiştirmek istediğiniz kitapları seçin! Düzenli ifade arama kipinde, bir alanda arama yapabilirsiniz, metni
başkasıyla değiştirebilirsiniz hatta sonucu başka bir alan yazabilirsiniz. Pratik bir örnek: Kitaplığınızın Frank Herbert’in Dune serisini içerdiğini düşünelim, Dune 1 - Dune, Dune 2 - Dune Messiah gibi isimlendirilmiş
olsun. Şimdi seri alanına Dune getirmek istediğinizi düşünelim. Bunu başlık alanında (.*?) \d+ - .* arayarak
ve seri alanında \1 ile değiştirerek yapabilirsiniz. Ne yaptığımı anladınız mı? Seri alanını ilk gruba referansla değiştiriyoruz. Şimdi serileri ayarladığınıza göre, yalnızca başlık alanında .*? - araması yapmak ve "" (boş karakter
dizisi) ile değiştirmek kaldı. Harika değil mi? Bu arada, tüm alanı değiştirmek yerine, alanın başına ya da sonuna ekleme de yapabilirsiniz, böylece kitap başlığının önüne seri bilgisi getirmek isterseniz, bunu da yapabilirsiniz. Şimdiye
kadar fark ettiğiniz üzere, Büyük küçük harf duyarlı olarak etiketlenmiş bir kontrol kutusu var, yani bu davranış için
burada bayrak kullanmak zorunda değilsiniz.
Bu, düzenli ifadelere çok kısa giriş turumuzun sonu. Umarım en azından başlamanıza yetecek kadar ve kendi kendinize
öğrenmeye devam edecek kadar şey anlatabilmişimdir- iyi bir başlangıç noktası Python düzenli ifade belgeleridir72 .
Son bir uyarı: Düzenli ifadeler güçlüdür, ama aynı zamanda yanlış anlaşılması oldukça kolaydır. calibre ifadelerinizi
beklediğiniz gibi çalışıp çalışmadığını gösteren gerçekten güzel test imkanları sunar. Kullanın onları. Kendinizi ayağınızdan vurmayın. (Bu ifadeye bayılıyorum...) Ama bu uyarıya rağmen kendinizi vurursanız, bundan ders çıkarmaya
çalışın.
Hazırlayanlar
İpuçları, düzeltmeler vs. için teşekkürler:
• ldolse
• kovidgoyal
72
https://docs.python.org/2/library/re.html
1.9. Rehberler
169
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
• chaley
• dwanthny
• kacir
• Starson17
Düzenli ifadelerle ilgili fazlası için bknz Python Kullanıcı Kılavuzu73 .
1.9.5 calibre içerik sunucusunu başka sunucularla bütünleştirmek
Burada size calibre içerik sunucusunun başka bir sunucu ile nasıl bütünleştirileceğini göstereceğiz. Bunun için en
yaygın neden SSL veya daha gelişmiş bir kimlik doğrulama yönteminin kullanılmasıdır. İki ana teknik bulunmaktadır: calibre içerik sunucusunu tek başına çalışan bir süreç olarak çalıştırmak ve ana sunucunuza bağlanmak için ters
vekil sunucu kullanmak veya içerik sunucusunu ana sunucunuzun içerisinde WSGI ile bir süreç olarak çalıştırmak.
Aşağıdaki örneklerin tümü Linux üzerinde Apache 2.x sürümleri için geçerli olsa da kolaylıkla diğer platformlara
uyarlanabilirler.
İçindekiler
• Ters vekil sunucu kullanmak (sayfa 170)
• Uygulama içinde (sayfa 171)
Not: Bu sadece calibre 0.7.25 ve üzeri sürümlerde uygulanabilir
Ters vekil sunucu kullanmak
Bir ters vekil sunucu gelen istekleri kabul eden ve onları calibre sunucusuna ileten bir sunucudur. Yanıtı da calibre
sunucusundan okur ve istemciye iletir. Bu calibre sunucusunu ana sunucunuza bütünleştirmek için uğraşmadan normal
bir şekilde çalıştıracağınız ve ana sunucunuzun sağladığı kimlik doğrulama sisteminden faydalanabileceğiniz anlamına
gelir. Bu calibre kurulumuna ilave biçbir dış bağımlılık veya sistem bütünleştirmesi ihtiyacı ile uğraşmayacağınız
en basit yaklaşımdır. Aşağıda ana sunucunuz olarak Apache kullanıldığında bu işlemin nasıl yapıldığının bir örneği
bulunmaktaysa da Ters Vekil Sunucu destekli her sunucu ile çalışacaktır.
İlk olarak calibre içerik sunucusunu aşağıdaki gibi başlatın:
=
{}=
{}@default
=0=1=2=0=1=2
Buradaki
anahtar
parametre
--url-prefix /calibre‘‘dir. Bu içerik sunucusunun
tüm adresleri calibre önekiyle sunacağı anlamına gelir. Bunu görmek için
tarayıcınıza ‘‘http://localhost:8080/calibre yazın. Normal içeriğinizin web sayfasında
göründüğünü ama artık /calibre dizininde bulunduğunu göreceksiniz.
Şimdi ana sunucunuz olarak Apache kullandığınızı düşünelim. Önce Apache vekil sunucu modüllerini httpd.conf
dosyasına aşağıdakileri ekleyerek etkinleştirin:
73
https://docs.python.org/2/library/re.html
170
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
=
{}=
{}@default
=0=1=2=0=1=2LoadModule proxy\PYGZus{}module modules/mod\PYGZus{}proxy.so
LoadModule proxy\PYGZus{}http\PYGZus{}module modules/mod\PYGZus{}proxy\PYGZus{}http.so
Vekil sunucu modüllerinin tam olarak nasıl etkinleştirileceği Apache kurulumunuza bağlıdır. Bir defa vekil sunucu modüllerini etkinleştirdiğinizde aşağıdaki kuralları httpd.conf dosyasına (veya sanal host kullanıyorsanız ilgili dosyaya)
ekleyin:
=
{}=
{}@default
=0=1=2=0=1=2RewriteEngine on
RewriteRule \PYGZca{}/calibre/(.*) http://localhost:8calibre/\PYGZdl{}1 [proxy]
RewriteRule \PYGZca{}/calibre http://localhost:8 [proxy]
SetEnv force\PYGZhy{}proxy\PYGZhy{}request\PYGZhy{}1. 1
SetEnv proxy\PYGZhy{}nokeepalive 1
Hepsi bu kadar, artık apache sunucunuzda adresin sonuna /calibre yazarak calibre içerik sunucunuza ulaşabilirsiniz.
Yukarıdaki kurallar /calibre dizini altındaki tüm istekleri calibre sunucunuzun 8080 portuna iletir ve yukarıdaki –urlprefix seçeneği sayesinde calibre sunucusu onları şeffaf olarak işler.
Not: Eğer bir Sanal Hst’un tamamını içerik sunucusuna ayırmak istiyorsanız –url-prefix ve RewriteRule ifadelerini
kullanmanıza gerek yoktur, sadece ProxyPass kullanmanız yeterli olacaktır.
Not: calibre’nin kullandığı sunucu motoru, CherryPy, vekil sunucu ve KeepAlive istekleri ile sorun yaşayabileceğinden onları yukarıda gösterildiği gibi SetEnv ifadeleriyle Apache içinden kapatın.
Uygulama içinde
calibre içerik sunucusu Apache gibi bir sunucu içinde WSGI çatısı kullanılarak uygulama içinde çalıştırılabilir.
Not: Bu işlem için calibre’nin tüm bağımlılıkları sisteminize kurulu olmalıdır. Bunu yapmak pek açık olmadığından
sunucular içinde çalıştırmanız önerilmemektedir. Sunucu sorunlarının hatalarını ayıklamak için yardım alamayacaksınız.
İlk olarak calibre içerik sunucunuza bir WSGI *bağdaştırıcı*oluşturmalısınız. Burada bu amaç için kullanabileceğiniz
bir şablon bulacaksınız. Yolları uygun şekilde değiştirmelisiniz
=
{}=
{}@default
=0=1=2=0=1=2\PYG{c}{\PYGZsh{} WSGI script file to run calibre content server as a WSGI app}
\PYG{k+kn}{import} \PYG{n+nn}{sys}\PYG{o}{,} \PYG{n+nn}{os}
\PYG{c}{\PYGZsh{} You can get the paths referenced here by running}
\PYG{c}{\PYGZsh{} calibre\PYGZhy{}debug \PYGZhy{}\PYGZhy{}paths}
\PYG{c}{\PYGZsh{} on your server}
1.9. Rehberler
171
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
\PYG{c}{\PYGZsh{} The first entry from CALIBRE\PYGZus{}PYTHON\PYGZus{}PATH}
\PYG{n}{sys}\PYG{o}{.}\PYG{n}{path}\PYG{o}{.}\PYG{n}{insert}\PYG{p}{(}\PYG{l+m+mi}{}\PYG{p}{,} \PYG{l
\PYG{c}{\PYGZsh{} CALIBRE\PYGZus{}RESOURCES\PYGZus{}PATH}
\PYG{n}{sys}\PYG{o}{.}\PYG{n}{resources\PYGZus{}location} \PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{/h
\PYG{c}{\PYGZsh{} CALIBRE\PYGZus{}EXTENSIONS\PYGZus{}PATH}
\PYG{n}{sys}\PYG{o}{.}\PYG{n}{extensions\PYGZus{}location} \PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{/
\PYG{c}{\PYGZsh{} Path to directory containing calibre executables}
\PYG{n}{sys}\PYG{o}{.}\PYG{n}{executables\PYGZus{}location} \PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{
\PYG{c}{\PYGZsh{} Path to a directory for which the server has read/write permissions}
\PYG{c}{\PYGZsh{} calibre config will be stored here}
\PYG{n}{os}\PYG{o}{.}\PYG{n}{environ}\PYG{p}{[}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{CALIBRE\PYGZus{}CONFIG\P
\PYG{k}{del} \PYG{n}{sys}
\PYG{k}{del} \PYG{n}{os}
\PYG{k+kn}{from} \PYG{n+nn}{calibre.library.server.main} \PYG{k+kn}{import} \PYG{n}{create\PYGZus{}ws
\PYG{n}{application} \PYG{o}{=} \PYG{n}{create\PYGZus{}wsgi\PYGZus{}app}\PYG{p}{(}
\PYG{c}{\PYGZsh{} The mount point of this WSGI application (i.e. the first argument to}
\PYG{c}{\PYGZsh{} the WSGIScriptAlias directive). Set to empty string is mounted at /}
\PYG{n}{prefix}\PYG{o}{=}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{/calibre}\PYG{l+s}{\PYGZsq{}}\PYG{p}{,
\PYG{c}{\PYGZsh{} Path to the calibre library to be served}
\PYG{c}{\PYGZsh{} The server process must have write permission for all files/dirs}
\PYG{c}{\PYGZsh{} in this directory or BAD things will happen}
\PYG{n}{path\PYGZus{}to\PYGZus{}library}\PYG{o}{=}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{/home/kovid/d
\PYG{c}{\PYGZsh{} The virtual library (restriction) to be used when serving this}
\PYG{c}{\PYGZsh{} library.}
\PYG{n}{virtual\PYGZus{}library}\PYG{o}{=}\PYG{n+nb+bp}{None}
\PYG{p}{)}
\PYG{k}{del} \PYG{n}{create\PYGZus{}wsgi\PYGZus{}app}
Bu bağdaştırıcıyı sunucunuzun erişebileceği bir yere calibre-wsgi-adpater.py adıyla kaydedin.
Şimdi Apache içinde WSGI kullanmak istediğinizi varsayalım. İlk olarak :file:‘httpd.conf‘dosyasına aşağıdaki satırı
ekleyerek Apache içinde WSGI’yı etkinleştirin:
=
{}=
{}@default
=0=1=2=0=1=2LoadModule wsgi\PYGZus{}module modules/mod\PYGZus{}wsgi.so
WSGI modülünün tam olarak etkinleştirilmesi Apache kurulumunuza bağlıdır. Vekil sunucu modülleri etkinleştirildiğinde aşağıdaki kuralı httpd.conf (veya ilgili sanal suncuu dosyasına) dosyasına ekleyin:
=
{}=
{}@default
=0=1=2=0=1=2\PYG{n}{WSGIScriptAlias} \PYG{o}{/}\PYG{n}{calibre} \PYG{o}{/}\PYG{n}{var}\PYG{o}{/}\PYG{n
calibre-wsgi-adapter.py dosyasının yolunu önceden kaydettiğiniz şekilde değiştirin (Apache’nin buraya erişimi olduğundan emin olun).
Hepsi bu kadar, artık Apache sunucunuzdan /calibre adresi altından calibre İçerik Sunucusuna erişebilirsiniz.
172
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Not: Apache ile mod_wsgi kullanımı için mod_wsgi74 sayfasına bakabilirsiniz.
1.9.6 Calibre’nin işlevselliğini artırmak için kendi eklentilerinizi yazmak
calibre çok modüler bir tasarıma sahiptir. calibre’nin tüm işlevselliği neredeyse eklentilerinden gelmektedir. Eklentiler
iletişim, haberleri indirmek (bunlara tarif denilmektedir), kullanıcı arayüzündeki çeşitli bileşenler için, farklı aygıtlara
bağlanmak ve dosyaları calibre’ye eklerken işlemek gibi amaçlar için kullanılırlar. Kurulumda gelen eklentilerin bir
listesini Tercihler->Eklentiler menüsünde bulabilirsiniz.
Burda, calibre’ye yeni işlevler kazandırmak için kendi eklentilerinizi nasıl oluşturacağınızı öğreteceğiz.
İçindekiler
• Bir calibre eklentisinin anatomisi (sayfa 173)
• Kullanıcı Arayüzü eklentisi (sayfa 174)
– __init__.py (sayfa 175)
– ui.py (sayfa 177)
– main.py (sayfa 178)
– Eklenti zip dosyasından kaynakların alınması (sayfa 180)
– Eklentiniz için kullanıcı yapılandırmasını etkinleştirmek (sayfa 180)
• Kitap eklentilerini düzenle (sayfa 182)
– main.py (sayfa 183)
• Eklentinize çeviriler eklemek (sayfa 186)
• Eklenti API’si (sayfa 186)
• Eklentilerde hata ayıklama (sayfa 186)
• Daha fazla eklenti örneği (sayfa 187)
• Eklentilerinizi başkalarıyla paylaşmak (sayfa 187)
Not: Bu yalnızca >= 0.8.60 calibre sürümleri ile mümkündür
Bir calibre eklentisinin anatomisi
Calibre eklentisi oldukça basittir, bir miktar python kodu ve eklentilerin ihtiyaç duyduğu resim dosyaları gibi diğer
kaynakları içeren bir zip dosyasıdır. Devam etmeden, basit bir örnek görelim.
Çeşitli e-belgeleri EPUB ve MOBI biçimlerinde dağıtmak için kullandığınız bir calibre kurulumunuz olduğunu varsayın. Calibre tarafından üretilen tüm dosyaların yayıncısının “Merhaba dünya” olmasını istersiniz, bunu şu şekilde
yapabilirsiniz. __init__.py isimli bir dosya oluşturun (bu özel bir isimdir ve eklentinizin ana dosyası için her
zaman kullanılmak zorundadır) ve aşağıdaki Python kodunu girin:
=
{}=
{}@default
=0=1=2=0=1=2\PYG{k+kn}{import} \PYG{n+nn}{os}
\PYG{k+kn}{from} \PYG{n+nn}{calibre.customize} \PYG{k+kn}{import} \PYG{n}{FileTypePlugin}
\PYG{k}{class} \PYG{n+nc}{HelloWorld}\PYG{p}{(}\PYG{n}{FileTypePlugin}\PYG{p}{)}\PYG{p}{:}
74
http://code.google.com/p/modwsgi/wiki/WhereToGetHelp
1.9. Rehberler
173
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
\PYG{n}{name}
\PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{Hello World Plugin}\PYG{l+s
\PYG{n}{description}
\PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{Set the publisher to Hello
\PYG{n}{supported\PYGZus{}platforms} \PYG{o}{=} \PYG{p}{[}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{windows}\
\PYG{n}{author}
\PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{Acme Inc.}\PYG{l+s}{\PYGZsq
\PYG{n}{version}
\PYG{o}{=} \PYG{p}{(}\PYG{l+m+mi}{1}\PYG{p}{,} \PYG{l+m+mi}{}\PYG{p}
\PYG{n}{file\PYGZus{}types}
\PYG{o}{=} \PYG{n+nb}{set}\PYG{p}{(}\PYG{p}{[}\PYG{l+s}{\PYG
\PYG{n}{on\PYGZus{}postprocess}
\PYG{o}{=} \PYG{n+nb+bp}{True} \PYG{c}{\PYGZsh{} Run this pl
\PYG{n}{minimum\PYGZus{}calibre\PYGZus{}version} \PYG{o}{=} \PYG{p}{(}\PYG{l+m+mi}{}\PYG{p}{,} \P
\PYG{k}{def} \PYG{n+nf}{run}\PYG{p}{(}\PYG{n+nb+bp}{self}\PYG{p}{,} \PYG{n}{path\PYGZus{}to\PYGZu
\PYG{k+kn}{from} \PYG{n+nn}{calibre.ebooks.metadata.meta} \PYG{k+kn}{import} \PYG{n}{get\PYGZ
\PYG{n+nb}{file} \PYG{o}{=} \PYG{n+nb}{open}\PYG{p}{(}\PYG{n}{path\PYGZus{}to\PYGZus{}ebook}\
\PYG{n}{ext} \PYG{o}{=} \PYG{n}{os}\PYG{o}{.}\PYG{n}{path}\PYG{o}{.}\PYG{n}{splitext}\PYG{p}
\PYG{n}{mi} \PYG{o}{=} \PYG{n}{get\PYGZus{}metadata}\PYG{p}{(}\PYG{n+nb}{file}\PYG{p}{,} \PYG
\PYG{n}{mi}\PYG{o}{.}\PYG{n}{publisher} \PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{Hello World}
\PYG{n}{set\PYGZus{}metadata}\PYG{p}{(}\PYG{n+nb}{file}\PYG{p}{,} \PYG{n}{mi}\PYG{p}{,} \PYG{
\PYG{k}{return} \PYG{n}{path\PYGZus{}to\PYGZus{}ebook}
Bu kadar. Bu kodu calibre’ye eklenti olarak eklemek için __init__.py dosyasını oluşturduğunuz dizinde aşağıdaki
komutu çalıştırın:
=
{}=
{}@default
=0=1=2=0=1=2calibre\PYGZhy{}customize \PYGZhy{}b .
Not:
OS
X
üzerinde,
komut
satırı
araçları
calibre
bohçası
içindedir,
örneğin,
calibre’yi
/Applications
altına
kurduysanız
komut
satırı
araçları
/Applications/calibre.app/Contents/console.app/Contents/MacOS/ içinde olacaktır.
Merhaba Dünya eklentisini şuradan indirebilirsiniz helloworld_plugin.zip75 .
Calibre kullanarak her bir kitap dönüştürme işlemi yaptığınızda, eklentinin run() metodu çağrılacak ve dönüştürülen
kitabın yayımcısı olarak “Merhaba Dünya” ayarlanacak. Bu önemsiz bir eklenti, daha karmaşık ve kullanıcı arayüzüne
bir şeyler ekleyen bir tanesine geçelim.
Kullanıcı Arayüzü eklentisi
Bu eklenti bir kaç dosyaya dağılacak (kodu temiz tutmak için). Eklenti zip dosyasındaki kaynakları nasıl alacağınızı
(resimler ve veri dosyaları), kullanıcıların eklentinizi nasıl yapılandıracağını, calibre kullanıcı arayüzünde öğeleri
oluşturmayı ve calibre veri tabanındaki kitapları sorgulamayı ve kitaplara erişmeyi gösterecek.
Bu eklentiyi şuradan indirebilirsiniz interface_demo_plugin.zip76 Dikkat çeken ilk şey, aşağıda açıklanacağı üzere bu
zip dosyasının daha fazla dosya içermesi, plugin-import-name-interface_demo.txt dosyasına özellikle
dikkat edin.
plugin-import-name-interface_demo.txt Çoklu-dosya sihrini etkinleştirmek için boş bir metin dosyası.
Bu dosya birden fazla .py dosyası içeren tüm eklentilerde bulunmalıdır. Boş olmalıdır ve dosya ismi
plugin-import-name-bir_isim.txt biçiminde olmalıdır. Bu dosyanın varlığı zip dosyası içerisindeki
.py kodlarını içe aktarmanıza şu şekilde bir ifade ile izin verir:
75
76
http://calibre-ebook.com/downloads/helloworld_plugin.zip
http://calibre-ebook.com/downloads/interface_demo_plugin.zip
174
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
=
{}=
{}@default
=0=1=2=0=1=2
\PYG{k+kn}{from} \PYG{n+nn}{calibre\PYGZus{}plugins.some\PYGZus{}name.so
The prefix calibre_plugins must always be present. some_name comes from the filename of
the empty text file. some_module refers to some_module.py file inside the zip file. Note that
this importing is just as powerful as regular python imports. You can create packages and subpackages of .py modules inside the zip file, just like you would normally (by defining __init__.py in each
sub-directory), and everything should Just Work.
bir_isim için kullandığınız isim tüm eklentiler tarafından paylaşılan bir isim uzayına girer, yani
olabildiğince benzersiz bir isim seçin. Ama geçerli bir python belirteci olmasına da dikkat edin
(alfabetik harfler, sayılar ve alt çizgi).
__init__.py Daha önce olduğu gibi, eklenti sınıfını belirleyen dosya
main.py Bu dosya işe yarar bir şeyler yapan gerçek kodu içerir
ui.py Bu dosya eklentinin arayüz kısmını tanımlar
images/icon.png Eklenti için simge
about.txt Eklenti hakkında bilgi veren bir metin dosyası
translations Eklentinizin değişik dillere çevirilerini içeren .mo dosyalarını içeren bir dizin. Detaylar için
aşağıya bakın.
Şimdi koda bakalım.
__init__.py
Önce, eklenti metadatasını tanımlamak için zorunlu __init__.py:
=
{}=
{}@default
=0=1=2=0=1=2\PYG{c}{\PYGZsh{} The class that all Interface Action plugin wrappers must inherit from}
\PY
\PYG{k}{class} \PYG{n+nc}{InterfacePluginDemo}\PYG{p}{(}\PYG{n}{InterfaceActionBase}\PYG{p}{)}\PYG{p}
\PYG{l+s+sd}{\PYGZsq{}\PYGZsq{}\PYGZsq{}}
\PYG{l+s+sd}{
This class is a simple wrapper that provides information about the actual}
\PYG{l+s+sd}{
plugin class. The actual interface plugin class is called InterfacePlugin}
\PYG{l+s+sd}{
and is defined in the ui.py file, as specified in the actual\PYGZus{}plugin field}
\PYG{l+s+sd}{
below.}
\PYG{l+s+sd}{
The reason for having two classes is that it allows the command line}
\PYG{l+s+sd}{
calibre utilities to run without needing to load the GUI libraries.}
\PYG{l+s+sd}{
\PYGZsq{}\PYGZsq{}\PYGZsq{}}
\PYG{n}{name}
\PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{Interface Plugin Demo}\PYG{
\PYG{n}{description}
\PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{An advanced plugin demo}\PY
\PYG{n}{supported\PYGZus{}platforms} \PYG{o}{=} \PYG{p}{[}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{windows}\
\PYG{n}{author}
\PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{Kovid Goyal}\PYG{l+s}{\PYGZ
\PYG{n}{version}
\PYG{o}{=} \PYG{p}{(}\PYG{l+m+mi}{1}\PYG{p}{,} \PYG{l+m+mi}{}\PYG{p}
\PYG{n}{minimum\PYGZus{}calibre\PYGZus{}version} \PYG{o}{=} \PYG{p}{(}\PYG{l+m+mi}{}\PYG{p}{,} \P
\PYG{c}{\PYGZsh{}: This field defines the GUI plugin class that contains all the code}
\PYG{c}{\PYGZsh{}: that actually does something. Its format is module\PYGZus{}path:class\PYGZus{}
\PYG{c}{\PYGZsh{}: The specified class must be defined in the specified module.}
\PYG{n}{actual\PYGZus{}plugin}
\PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{calibre\PYGZus{}plu
1.9. Rehberler
175
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
\PYG{k}{def} \PYG{n+nf}{is\PYGZus{}customizable}\PYG{p}{(}\PYG{n+nb+bp}{self}\PYG{p}{)}\PYG{p}{:}
\PYG{l+s+sd}{\PYGZsq{}\PYGZsq{}\PYGZsq{}}
\PYG{l+s+sd}{
This method must return True to enable customization via}
\PYG{l+s+sd}{
Preferences\PYGZhy{}\PYGZgt{}Plugins}
\PYG{l+s+sd}{
\PYGZsq{}\PYGZsq{}\PYGZsq{}}
\PYG{k}{return} \PYG{n+nb+bp}{True}
\PYG{k}{def} \PYG{n+nf}{config\PYGZus{}widget}\PYG{p}{(}\PYG{n+nb+bp}{self}\PYG{p}{)}\PYG{p}{:}
\PYG{l+s+sd}{\PYGZsq{}\PYGZsq{}\PYGZsq{}}
\PYG{l+s+sd}{
Implement this method and :meth:{}`save\PYGZus{}settings{}` in your plugin to}
\PYG{l+s+sd}{
use a custom configuration dialog.}
\PYG{l+s+sd}{
\PYG{l+s+sd}{
\PYG{l+s+sd}{
\PYG{l+s+sd}{
This method, if implemented, must return a QWidget. The widget can have}
an optional method validate() that takes no arguments and is called}
immediately after the user clicks OK. Changes are applied if and only}
if the method returns True.}
\PYG{l+s+sd}{
\PYG{l+s+sd}{
\PYG{l+s+sd}{
\PYG{l+s+sd}{
If for some reason you cannot perform the configuration at this time,}
return a tuple of two strings (message, details), these will be}
displayed as a warning dialog to the user and the process will be}
aborted.}
\PYG{l+s+sd}{
The base class implementation of this method raises NotImplementedError}
\PYG{l+s+sd}{
so by default no user configuration is possible.}
\PYG{l+s+sd}{
\PYGZsq{}\PYGZsq{}\PYGZsq{}}
\PYG{c}{\PYGZsh{} It is important to put this import statement here rather than at the}
\PYG{c}{\PYGZsh{} top of the module as importing the config class will also cause the}
\PYG{c}{\PYGZsh{} GUI libraries to be loaded, which we do not want when using calibre}
\PYG{c}{\PYGZsh{} from the command line}
\PYG{k+kn}{from} \PYG{n+nn}{calibre\PYGZus{}plugins.interface\PYGZus{}demo.config} \PYG{k+kn}
\PYG{k}{return} \PYG{n}{ConfigWidget}\PYG{p}{(}\PYG{p}{)}
\PYG{k}{def} \PYG{n+nf}{save\PYGZus{}settings}\PYG{p}{(}\PYG{n+nb+bp}{self}\PYG{p}{,} \PYG{n}{con
\PYG{l+s+sd}{\PYGZsq{}\PYGZsq{}\PYGZsq{}}
\PYG{l+s+sd}{
Save the settings specified by the user with config\PYGZus{}widget.}
\PYG{l+s+sd}{
:param config\PYGZus{}widget: The widget returned by :meth:{}`config\PYGZus{}wid
\PYG{l+s+sd}{
\PYGZsq{}\PYGZsq{}\PYGZsq{}}
\PYG{n}{config\PYGZus{}widget}\PYG{o}{.}\PYG{n}{save\PYGZus{}settings}\PYG{p}{(}\PYG{p}{)}
\PYG{c}{\PYGZsh{} Apply the changes}
\PYG{n}{ac} \PYG{o}{=} \PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{actual\PYGZus{}plugin\PYGZus{}}
\PYG{k}{if} \PYG{n}{ac} \PYG{o+ow}{is} \PYG{o+ow}{not} \PYG{n+nb+bp}{None}\PYG{p}{:}
\PYG{n}{ac}\PYG{o}{.}\PYG{n}{apply\PYGZus{}settings}\PYG{p}{(}\PYG{p}{)}
Kayda değer tek özelli actual_plugin. Calibre’nin hem komut satırı hem GUI arayüzleri olduğundan, bu gibi
GUI eklentileri herhangi GUI kitaplıklarını __init.py__ içinde yüklememelidir. actual_plugin alanı bunu calibre’ye
asıl eklentinin zip arşivinde başka bir dosyada olduğunu söyleyerek sizin için yapar, bu da sadece GUI bağlamında
yüklenir.
Bunun çalışması için eklenti zip dosyanızda yukarıda anlatıldığı gibi plugin-import-name-bir_isim.txt dosyası olması
gerektiğini unutmayın.
Ayrıca eklentinin kullanıcı yapılandırmasının etkinleştirilmesi için bir kaç metod bulunmaktadır. Bunlardan aşağıda
söz edilmektedir.
176
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
ui.py
Şimdi asıl GUI eklentisini tanımlayan ui.py ye bakalım. Kaynak kod yoğun şekilde yorumlanmıştır, kendini açıklıyor
olması lazım:
=
{}=
{}@default
=0=1=2=0=1=2\PYG{c}{\PYGZsh{} The class that all interface action plugins must inherit from}
\PY
\PYG{k+kn}{from} \PYG{n+nn}{calibre\PYGZus{}plugins.interface\PYGZus{}demo.main} \PYG{k+kn}{import} \
\PYG{k}{class} \PYG{n+nc}{InterfacePlugin}\PYG{p}{(}\PYG{n}{InterfaceAction}\PYG{p}{)}\PYG{p}{:}
\PYG{n}{name} \PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{Interface Plugin Demo}\PYG{l+s}{\PYGZsq{}}
\PYG{c}{\PYGZsh{} Declare the main action associated with this plugin}
\PYG{c}{\PYGZsh{} The keyboard shortcut can be None if you dont want to use a keyboard}
\PYG{c}{\PYGZsh{} shortcut. Remember that currently calibre has no central management for}
\PYG{c}{\PYGZsh{} keyboard shortcuts, so try to use an unusual/unused shortcut.}
\PYG{n}{action\PYGZus{}spec} \PYG{o}{=} \PYG{p}{(}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{Interface Plugin
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{Run the Interface Plugin Demo}\PYG{l+s}{\PYGZsq{}}\PYG{p}{,
\PYG{k}{def} \PYG{n+nf}{genesis}\PYG{p}{(}\PYG{n+nb+bp}{self}\PYG{p}{)}\PYG{p}{:}
\PYG{c}{\PYGZsh{} This method is called once per plugin, do initial setup here}
\PYG{c}{\PYGZsh{} Set the icon for this interface action}
\PYG{c}{\PYGZsh{} The get\PYGZus{}icons function is a builtin function defined for all your}
\PYG{c}{\PYGZsh{} plugin code. It loads icons from the plugin zip file. It returns}
\PYG{c}{\PYGZsh{} QIcon objects, if you want the actual data, use the analogous}
\PYG{c}{\PYGZsh{} get\PYGZus{}resources builtin function.}
\PYG{c}{\PYGZsh{}}
\PYG{c}{\PYGZsh{} Note that if you are loading more than one icon, for performance, you}
\PYG{c}{\PYGZsh{} should pass a list of names to get\PYGZus{}icons. In this case, get\PYGZus{
\PYG{c}{\PYGZsh{} will return a dictionary mapping names to QIcons. Names that}
\PYG{c}{\PYGZsh{} are not found in the zip file will result in null QIcons.}
\PYG{n}{icon} \PYG{o}{=} \PYG{n}{get\PYGZus{}icons}\PYG{p}{(}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{im
\PYG{c}{\PYGZsh{} The qaction is automatically created from the action\PYGZus{}spec defined}
\PYG{c}{\PYGZsh{} above}
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{qaction}\PYG{o}{.}\PYG{n}{setIcon}\PYG{p}{(}\PYG{n}{icon
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{qaction}\PYG{o}{.}\PYG{n}{triggered}\PYG{o}{.}\PYG{n}{co
\PYG{k}{def} \PYG{n+nf}{show\PYGZus{}dialog}\PYG{p}{(}\PYG{n+nb+bp}{self}\PYG{p}{)}\PYG{p}{:}
\PYG{c}{\PYGZsh{} The base plugin object defined in \PYGZus{}\PYGZus{}init\PYGZus{}\PYGZus{}.
\PYG{n}{base\PYGZus{}plugin\PYGZus{}object} \PYG{o}{=} \PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{i
\PYG{c}{\PYGZsh{} Show the config dialog}
\PYG{c}{\PYGZsh{} The config dialog can also be shown from within}
\PYG{c}{\PYGZsh{} Preferences\PYGZhy{}\PYGZgt{}Plugins, which is why the do\PYGZus{}user\PYGZ
\PYG{c}{\PYGZsh{} method is defined on the base plugin class}
\PYG{n}{do\PYGZus{}user\PYGZus{}config} \PYG{o}{=} \PYG{n}{base\PYGZus{}plugin\PYGZus{}object
\PYG{c}{\PYGZsh{} self.gui is the main calibre GUI. It acts as the gateway to access}
\PYG{c}{\PYGZsh{} all the elements of the calibre user interface, it should also be the}
\PYG{c}{\PYGZsh{} parent of the dialog}
\PYG{n}{d} \PYG{o}{=} \PYG{n}{DemoDialog}\PYG{p}{(}\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{gui}\
\PYG{n}{d}\PYG{o}{.}\PYG{n}{show}\PYG{p}{(}\PYG{p}{)}
\PYG{k}{def} \PYG{n+nf}{apply\PYGZus{}settings}\PYG{p}{(}\PYG{n+nb+bp}{self}\PYG{p}{)}\PYG{p}{:}
1.9. Rehberler
177
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
\PYG{k+kn}{from} \PYG{n+nn}{calibre\PYGZus{}plugins.interface\PYGZus{}demo.config} \PYG{k+kn}
\PYG{c}{\PYGZsh{} In an actual non trivial plugin, you would probably need to}
\PYG{c}{\PYGZsh{} do something based on the settings in prefs}
\PYG{n}{prefs}
main.py
Arayüz Eklenti Tanıtım iletişim penceresini uygulayan asıl mantıksal kısım.
=
{}=
{}@default
=0=1=2=0=1=2\PYG{k+kn}{from} \PYG{n+nn}{PyQt5.Qt} \PYG{k+kn}{import} \PYG{n}{QDialog}\PYG{p}{,} \PYG{n
\PYG{k+kn}{from} \PYG{n+nn}{calibre\PYGZus{}plugins.interface\PYGZus{}demo.config} \PYG{k+kn}{import}
\PYG{k}{class} \PYG{n+nc}{DemoDialog}\PYG{p}{(}\PYG{n}{QDialog}\PYG{p}{)}\PYG{p}{:}
\PYG{k}{def} \PYG{n+nf}{\PYGZus{}\PYGZus{}init\PYGZus{}\PYGZus{}}\PYG{p}{(}\PYG{n+nb+bp}{self}\PY
\PYG{n}{QDialog}\PYG{o}{.}\PYG{n}{\PYGZus{}\PYGZus{}init\PYGZus{}\PYGZus{}}\PYG{p}{(}\PYG{n+n
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{gui} \PYG{o}{=} \PYG{n}{gui}
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{do\PYGZus{}user\PYGZus{}config} \PYG{o}{=} \PYG{n}{do\PY
\PYG{c}{\PYGZsh{} The current database shown in the GUI}
\PYG{c}{\PYGZsh{} db is an instance of the class LibraryDatabase from db/legacy.py}
\PYG{c}{\PYGZsh{} This class has many, many methods that allow you to do a lot of}
\PYG{c}{\PYGZsh{} things. For most purposes you should use db.new\PYGZus{}api, which has}
\PYG{c}{\PYGZsh{} a much nicer interface from db/cache.py}
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{db} \PYG{o}{=} \PYG{n}{gui}\PYG{o}{.}\PYG{n}{current\PYG
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{l} \PYG{o}{=} \PYG{n}{QVBoxLayout}\PYG{p}{(}\PYG{p}{)}
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{setLayout}\PYG{p}{(}\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{label} \PYG{o}{=} \PYG{n}{QLabel}\PYG{p}{(}\PYG{n}{prefs
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{l}\PYG{o}{.}\PYG{n}{addWidget}\PYG{p}{(}\PYG{n+nb+bp}{se
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{setWindowTitle}\PYG{p}{(}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{I
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{setWindowIcon}\PYG{p}{(}\PYG{n}{icon}\PYG{p}{)}
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{about\PYGZus{}button} \PYG{o}{=} \PYG{n}{QPushButton}\PY
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{about\PYGZus{}button}\PYG{o}{.}\PYG{n}{clicked}\PYG{o}{.
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{l}\PYG{o}{.}\PYG{n}{addWidget}\PYG{p}{(}\PYG{n+nb+bp}{se
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{marked\PYGZus{}button} \PYG{o}{=} \PYG{n}{QPushButton}\P
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{Show books with only one format in the calibre GUI}\PYG{l+s
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{marked\PYGZus{}button}\PYG{o}{.}\PYG{n}{clicked}\PYG{o}{
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{l}\PYG{o}{.}\PYG{n}{addWidget}\PYG{p}{(}\PYG{n+nb+bp}{se
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{view\PYGZus{}button} \PYG{o}{=} \PYG{n}{QPushButton}\PYG
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{View the most recently added book}\PYG{l+s}{\PYGZsq{}}\PYG{
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{view\PYGZus{}button}\PYG{o}{.}\PYG{n}{clicked}\PYG{o}{.}
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{l}\PYG{o}{.}\PYG{n}{addWidget}\PYG{p}{(}\PYG{n+nb+bp}{se
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{update\PYGZus{}metadata\PYGZus{}button} \PYG{o}{=} \PYG{
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{Update metadata in a book}\PYG{l+s+se}{\PYGZbs{}\PYGZsq{}}\
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{update\PYGZus{}metadata\PYGZus{}button}\PYG{o}{.}\PYG{n}
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{l}\PYG{o}{.}\PYG{n}{addWidget}\PYG{p}{(}\PYG{n+nb+bp}{se
178
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{conf\PYGZus{}button} \PYG{o}{=} \PYG{n}{QPushButton}\PYG
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{Configure this plugin}\PYG{l+s}{\PYGZsq{}}\PYG{p}{,} \P
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{conf\PYGZus{}button}\PYG{o}{.}\PYG{n}{clicked}\PYG{o}{.}
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{l}\PYG{o}{.}\PYG{n}{addWidget}\PYG{p}{(}\PYG{n+nb+bp}{se
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{resize}\PYG{p}{(}\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{si
\PYG{k}{def} \PYG{n+nf}{about}\PYG{p}{(}\PYG{n+nb+bp}{self}\PYG{p}{)}\PYG{p}{:}
\PYG{c}{\PYGZsh{} Get the about text from a file inside the plugin zip file}
\PYG{c}{\PYGZsh{} The get\PYGZus{}resources function is a builtin function defined for all yo
\PYG{c}{\PYGZsh{} plugin code. It loads files from the plugin zip file. It returns}
\PYG{c}{\PYGZsh{} the bytes from the specified file.}
\PYG{c}{\PYGZsh{}}
\PYG{c}{\PYGZsh{} Note that if you are loading more than one file, for performance, you}
\PYG{c}{\PYGZsh{} should pass a list of names to get\PYGZus{}resources. In this case,}
\PYG{c}{\PYGZsh{} get\PYGZus{}resources will return a dictionary mapping names to bytes. Name
\PYG{c}{\PYGZsh{} are not found in the zip file will not be in the returned dictionary.}
\PYG{n}{text} \PYG{o}{=} \PYG{n}{get\PYGZus{}resources}\PYG{p}{(}\PYG{l+s}{\PYGZsq{}}\PYG{l+s
\PYG{n}{QMessageBox}\PYG{o}{.}\PYG{n}{about}\PYG{p}{(}\PYG{n+nb+bp}{self}\PYG{p}{,} \PYG{l+s}
\PYG{n}{text}\PYG{o}{.}\PYG{n}{decode}\PYG{p}{(}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{utf\PYG
\PYG{k}{def} \PYG{n+nf}{marked}\PYG{p}{(}\PYG{n+nb+bp}{self}\PYG{p}{)}\PYG{p}{:}
\PYG{l+s+sd}{\PYGZsq{}\PYGZsq{}\PYGZsq{} Show books with only one format \PYGZsq{}\PYGZsq{}\P
\PYG{n}{db} \PYG{o}{=} \PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{db}\PYG{o}{.}\PYG{n}{new\PYGZus{}
\PYG{n}{matched\PYGZus{}ids} \PYG{o}{=} \PYG{p}{\PYGZob{}}\PYG{n}{book\PYGZus{}id} \PYG{k}{fo
\PYG{c}{\PYGZsh{} Mark the records with the matching ids}
\PYG{c}{\PYGZsh{} new\PYGZus{}api does not know anything about marked books, so we use the fu
\PYG{c}{\PYGZsh{} db object}
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{db}\PYG{o}{.}\PYG{n}{set\PYGZus{}marked\PYGZus{}ids}\PYG
\PYG{c}{\PYGZsh{} Tell the GUI to search for all marked records}
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{gui}\PYG{o}{.}\PYG{n}{search}\PYG{o}{.}\PYG{n}{setEditTe
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{gui}\PYG{o}{.}\PYG{n}{search}\PYG{o}{.}\PYG{n}{do\PYGZus
\PYG{k}{def} \PYG{n+nf}{view}\PYG{p}{(}\PYG{n+nb+bp}{self}\PYG{p}{)}\PYG{p}{:}
\PYG{l+s+sd}{\PYGZsq{}\PYGZsq{}\PYGZsq{} View the most recently added book \PYGZsq{}\PYGZsq{}
\PYG{n}{most\PYGZus{}recent} \PYG{o}{=} \PYG{n}{most\PYGZus{}recent\PYGZus{}id} \PYG{o}{=} \P
\PYG{n}{db} \PYG{o}{=} \PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{db}\PYG{o}{.}\PYG{n}{new\PYGZus{}
\PYG{k}{for} \PYG{n}{book\PYGZus{}id}\PYG{p}{,} \PYG{n}{timestamp} \PYG{o+ow}{in} \PYG{n}{db}
\PYG{k}{if} \PYG{n}{most\PYGZus{}recent} \PYG{o+ow}{is} \PYG{n+nb+bp}{None} \PYG{o+ow}{or
\PYG{n}{most\PYGZus{}recent} \PYG{o}{=} \PYG{n}{timestamp}
\PYG{n}{most\PYGZus{}recent\PYGZus{}id} \PYG{o}{=} \PYG{n}{book\PYGZus{}id}
\PYG{k}{if} \PYG{n}{most\PYGZus{}recent\PYGZus{}id} \PYG{o+ow}{is} \PYG{o+ow}{not} \PYG{n+nb+
\PYG{c}{\PYGZsh{} Get a reference to the View plugin}
\PYG{n}{view\PYGZus{}plugin} \PYG{o}{=} \PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{gui}\PYG{o}{
\PYG{c}{\PYGZsh{} Ask the view plugin to launch the viewer for row\PYGZus{}number}
\PYG{n}{view\PYGZus{}plugin}\PYG{o}{.}\PYG{n}{\PYGZus{}view\PYGZus{}calibre\PYGZus{}books
\PYG{k}{def} \PYG{n+nf}{update\PYGZus{}metadata}\PYG{p}{(}\PYG{n+nb+bp}{self}\PYG{p}{)}\PYG{p}{:}
\PYG{l+s+sd}{\PYGZsq{}\PYGZsq{}\PYGZsq{}}
\PYG{l+s+sd}{
Set the metadata in the files in the selected book\PYGZsq{}s record to}
\PYG{l+s+sd}{
match the current metadata in the database.}
\PYG{l+s+sd}{
\PYGZsq{}\PYGZsq{}\PYGZsq{}}
\PYG{k+kn}{from} \PYG{n+nn}{calibre.ebooks.metadata.meta} \PYG{k+kn}{import} \PYG{n}{set\PYGZ
\PYG{k+kn}{from} \PYG{n+nn}{calibre.gui2} \PYG{k+kn}{import} \PYG{n}{error\PYGZus{}dialog}\PY
\PYG{c}{\PYGZsh{} Get currently selected books}
1.9. Rehberler
179
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
\PYG{n}{rows} \PYG{o}{=} \PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{gui}\PYG{o}{.}\PYG{n}{library\P
\PYG{k}{if} \PYG{o+ow}{not} \PYG{n}{rows} \PYG{o+ow}{or} \PYG{n+nb}{len}\PYG{p}{(}\PYG{n}{row
\PYG{k}{return} \PYG{n}{error\PYGZus{}dialog}\PYG{p}{(}\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{No books selected}\PYG{l+s}{\PYGZsq{}}\PYG
\PYG{c}{\PYGZsh{} Map the rows to book ids}
\PYG{n}{ids} \PYG{o}{=} \PYG{n+nb}{list}\PYG{p}{(}\PYG{n+nb}{map}\PYG{p}{(}\PYG{n+nb+bp}{self
\PYG{n}{db} \PYG{o}{=} \PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{db}\PYG{o}{.}\PYG{n}{new\PYGZus{}
\PYG{k}{for} \PYG{n}{book\PYGZus{}id} \PYG{o+ow}{in} \PYG{n}{ids}\PYG{p}{:}
\PYG{c}{\PYGZsh{} Get the current metadata for this book from the db}
\PYG{n}{mi} \PYG{o}{=} \PYG{n}{db}\PYG{o}{.}\PYG{n}{get\PYGZus{}metadata}\PYG{p}{(}\PYG{n
\PYG{n}{fmts} \PYG{o}{=} \PYG{n}{db}\PYG{o}{.}\PYG{n}{formats}\PYG{p}{(}\PYG{n}{book\PYGZ
\PYG{k}{if} \PYG{o+ow}{not} \PYG{n}{fmts}\PYG{p}{:}
\PYG{k}{continue}
\PYG{k}{for} \PYG{n}{fmt} \PYG{o+ow}{in} \PYG{n}{fmts}\PYG{p}{:}
\PYG{n}{fmt} \PYG{o}{=} \PYG{n}{fmt}\PYG{o}{.}\PYG{n}{lower}\PYG{p}{(}\PYG{p}{)}
\PYG{c}{\PYGZsh{} Get a python file object for the format. This will be either}
\PYG{c}{\PYGZsh{} an in memory file or a temporary on disk file}
\PYG{n}{ffile} \PYG{o}{=} \PYG{n}{db}\PYG{o}{.}\PYG{n}{format}\PYG{p}{(}\PYG{n}{book\
\PYG{n}{ffile}\PYG{o}{.}\PYG{n}{seek}\PYG{p}{(}\PYG{l+m+mi}{}\PYG{p}{)}
\PYG{c}{\PYGZsh{} Set metadata in the format}
\PYG{n}{set\PYGZus{}metadata}\PYG{p}{(}\PYG{n}{ffile}\PYG{p}{,} \PYG{n}{mi}\PYG{p}{,}
\PYG{n}{ffile}\PYG{o}{.}\PYG{n}{seek}\PYG{p}{(}\PYG{l+m+mi}{}\PYG{p}{)}
\PYG{c}{\PYGZsh{} Now replace the file in the calibre library with the updated}
\PYG{c}{\PYGZsh{} file. We dont use add\PYGZus{}format\PYGZus{}with\PYGZus{}hooks as
\PYG{c}{\PYGZsh{} already run when the file was first added to calibre.}
\PYG{n}{db}\PYG{o}{.}\PYG{n}{add\PYGZus{}format}\PYG{p}{(}\PYG{n}{book\PYGZus{}id}\PY
\PYG{n}{info\PYGZus{}dialog}\PYG{p}{(}\PYG{n+nb+bp}{self}\PYG{p}{,} \PYG{l+s}{\PYGZsq{}}\PYG{
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{Updated the metadata in the files of }\PYG{l+s+si}{\PYG
\PYG{n}{show}\PYG{o}{=}\PYG{n+nb+bp}{True}\PYG{p}{)}
\PYG{k}{def} \PYG{n+nf}{config}\PYG{p}{(}\PYG{n+nb+bp}{self}\PYG{p}{)}\PYG{p}{:}
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{do\PYGZus{}user\PYGZus{}config}\PYG{p}{(}\PYG{n}{parent}
\PYG{c}{\PYGZsh{} Apply the changes}
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{label}\PYG{o}{.}\PYG{n}{setText}\PYG{p}{(}\PYG{n}{prefs}
Eklenti zip dosyasından kaynakların alınması
calibre’nin eklent yükleme sistemi eklenti zip dosyasından dosyaların alınabilmesi için bir takım yerleşik metodlar
tanımlar.
get_resources(name_or_list_of_names) Bu fonksiyon zip dosyası içindeki dosyaları gösteren yolların
listesi ile çağrılmalıdır. Örneğin zip dosyasındaki resimler klasöründeki icon.png dosyasına erişmek
için: images/icon.png kullanırsınız. Her zaman, windows’da bile yol ayracı olarak düz taksim
işareti kullanın. Tek bir isim geçirdiğinizde, fonksiyon o dosyanın ham byte sayısını veya isim zip
dosyasında bulunmazsa None döndürür. Birden fazla isim geçirirseniz, isimleri byte’lara haritayalan
bir dict döndürür. İsim bulunamazsa, döndürülen dict nesnesinde bulunmayacaktır.
get_icons(name_or_list_of_names) get_resources tarafından döndürülen ham baytlardan QIcon nesneleri yaratan bir get_resources() sargısı. Zip dosyasında bir isim bulunmazsa ilgili QIcon null döner.
Eklentiniz için kullanıcı yapılandırmasını etkinleştirmek
Kullanıcıların eklentinizi yapılandırmasına izin vermek için, temel eklenti sınıfınızda aşağıdaki gibi üç metod tanımlamalısınız, ‘is_customizable, config_widget ve save_settings:
180
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
=
{}=
{}@default
=0=1=2=0=1=2
\PYG{k}{def} \PYG{n+nf}{is\PYGZus{}customizable}\PYG{p}{(}\PYG{n+nb+bp}{self}\PYG{p}{)
\PYG{l+s+sd}{
This method must return True to enable customization via}
\PYG{l+s+sd}{
Preferences\PYGZhy{}\PYGZgt{}Plugins}
\PYG{l+s+sd}{
\PYGZsq{}\PYGZsq{}\PYGZsq{}}
\PYG{k}{return} \PYG{n+nb+bp}{True}
=
{}=
{}@default
=0=1=2=0=1=2
\PYG{l+s+sd}{
\PYG{l+s+sd}{
\PYG{k}{def} \PYG{n+nf}{config\PYGZus{}widget}\PYG{p}{(}\PYG{n+nb+bp}{self}\PYG{p}{)}\
Implement this method and :meth:{}`save\PYGZus{}settings{}` in your plugin to}
use a custom configuration dialog.}
\PYG{l+s+sd}{
\PYG{l+s+sd}{
\PYG{l+s+sd}{
\PYG{l+s+sd}{
This method, if implemented, must return a QWidget. The widget can have}
an optional method validate() that takes no arguments and is called}
immediately after the user clicks OK. Changes are applied if and only}
if the method returns True.}
\PYG{l+s+sd}{
\PYG{l+s+sd}{
\PYG{l+s+sd}{
\PYG{l+s+sd}{
If for some reason you cannot perform the configuration at this time,}
return a tuple of two strings (message, details), these will be}
displayed as a warning dialog to the user and the process will be}
aborted.}
\PYG{l+s+sd}{
The base class implementation of this method raises NotImplementedError}
\PYG{l+s+sd}{
so by default no user configuration is possible.}
\PYG{l+s+sd}{
\PYGZsq{}\PYGZsq{}\PYGZsq{}}
\PYG{c}{\PYGZsh{} It is important to put this import statement here rather than at the}
\PYG{c}{\PYGZsh{} top of the module as importing the config class will also cause the}
\PYG{c}{\PYGZsh{} GUI libraries to be loaded, which we do not want when using calibre}
\PYG{c}{\PYGZsh{} from the command line}
\PYG{k+kn}{from} \PYG{n+nn}{calibre\PYGZus{}plugins.interface\PYGZus{}demo.config} \PYG{k+kn}
\PYG{k}{return} \PYG{n}{ConfigWidget}\PYG{p}{(}\PYG{p}{)}
=
{}=
{}@default
=0=1=2=0=1=2
\PYG{l+s+sd}{
\PYG{k}{def} \PYG{n+nf}{save\PYGZus{}settings}\PYG{p}{(}\PYG{n+nb+bp}{self}\PYG{p}{,}
Save the settings specified by the user with config\PYGZus{}widget.}
\PYG{l+s+sd}{
:param config\PYGZus{}widget: The widget returned by :meth:{}`config\PYGZus{}wid
\PYG{l+s+sd}{
\PYGZsq{}\PYGZsq{}\PYGZsq{}}
\PYG{n}{config\PYGZus{}widget}\PYG{o}{.}\PYG{n}{save\PYGZus{}settings}\PYG{p}{(}\PYG{p}{)}
\PYG{c}{\PYGZsh{} Apply the changes}
\PYG{n}{ac} \PYG{o}{=} \PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{actual\PYGZus{}plugin\PYGZus{}}
\PYG{k}{if} \PYG{n}{ac} \PYG{o+ow}{is} \PYG{o+ow}{not} \PYG{n+nb+bp}{None}\PYG{p}{:}
\PYG{n}{ac}\PYG{o}{.}\PYG{n}{apply\PYGZus{}settings}\PYG{p}{(}\PYG{p}{)}
calibre’nin yapılandırma verisi saklamak için bir çok yöntemi vardır (uzun geçmişinden miras). Önerilen metod JSONConfig sınıfının kullanılmasıdır, bu da yapılandırmanızı bir .json dosyasında tutar.
Tanıtım eklentisindeki yapılandırma verisini yöneten kod config.py’de:
=
{}=
{}@default
1.9. Rehberler
181
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
=0=1=2=0=1=2\PYG{k+kn}{from} \PYG{n+nn}{PyQt5.Qt} \PYG{k+kn}{import} \PYG{n}{QWidget}\PYG{p}{,} \PYG{n
\PYG{k+kn}{from} \PYG{n+nn}{calibre.utils.config} \PYG{k+kn}{import} \PYG{n}{JSONConfig}
\PYG{c}{\PYGZsh{} This is where all preferences for this plugin will be stored}
\PYG{c}{\PYGZsh{} Remember that this name (i.e. plugins/interface\PYGZus{}demo) is also}
\PYG{c}{\PYGZsh{} in a global namespace, so make it as unique as possible.}
\PYG{c}{\PYGZsh{} You should always prefix your config file name with plugins/,}
\PYG{c}{\PYGZsh{} so as to ensure you dont accidentally clobber a calibre config file}
\PYG{n}{prefs} \PYG{o}{=} \PYG{n}{JSONConfig}\PYG{p}{(}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{plugins/interfac
\PYG{c}{\PYGZsh{} Set defaults}
\PYG{n}{prefs}\PYG{o}{.}\PYG{n}{defaults}\PYG{p}{[}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{hello\PYGZus{}world\
\PYG{k}{class} \PYG{n+nc}{ConfigWidget}\PYG{p}{(}\PYG{n}{QWidget}\PYG{p}{)}\PYG{p}{:}
\PYG{k}{def} \PYG{n+nf}{\PYGZus{}\PYGZus{}init\PYGZus{}\PYGZus{}}\PYG{p}{(}\PYG{n+nb+bp}{self}\PY
\PYG{n}{QWidget}\PYG{o}{.}\PYG{n}{\PYGZus{}\PYGZus{}init\PYGZus{}\PYGZus{}}\PYG{p}{(}\PYG{n+n
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{l} \PYG{o}{=} \PYG{n}{QHBoxLayout}\PYG{p}{(}\PYG{p}{)}
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{setLayout}\PYG{p}{(}\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{label} \PYG{o}{=} \PYG{n}{QLabel}\PYG{p}{(}\PYG{l+s}{\PY
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{l}\PYG{o}{.}\PYG{n}{addWidget}\PYG{p}{(}\PYG{n+nb+bp}{se
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{msg} \PYG{o}{=} \PYG{n}{QLineEdit}\PYG{p}{(}\PYG{n+nb+bp
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{msg}\PYG{o}{.}\PYG{n}{setText}\PYG{p}{(}\PYG{n}{prefs}\P
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{l}\PYG{o}{.}\PYG{n}{addWidget}\PYG{p}{(}\PYG{n+nb+bp}{se
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{label}\PYG{o}{.}\PYG{n}{setBuddy}\PYG{p}{(}\PYG{n+nb+bp}
\PYG{k}{def} \PYG{n+nf}{save\PYGZus{}settings}\PYG{p}{(}\PYG{n+nb+bp}{self}\PYG{p}{)}\PYG{p}{:}
\PYG{n}{prefs}\PYG{p}{[}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{hello\PYGZus{}world\PYGZus{}msg}\PYG{l+
prefs nesnesi şimdi eklenti kodunda basitçe şu şekilde kullanılabilir:
=
{}=
{}@default
=0=1=2=0=1=2\PYG{k+kn}{from} \PYG{n+nn}{calibre\PYGZus{}plugins.interface\PYGZus{}demo.config} \PYG{k+
prefs nesnesinin main.py’de kullanıldığını görebilirsiniz:
=
{}=
{}@default
=0=1=2=0=1=2
\PYG{k}{def} \PYG{n+nf}{config}\PYG{p}{(}\PYG{n+nb+bp}{self}\PYG{p}{)}\PYG{p}{:}
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{do\PYGZus{}user\PYGZus{}config}\PYG{p}{(}\PYG{n}{parent}
\PYG{c}{\PYGZsh{} Apply the changes}
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{label}\PYG{o}{.}\PYG{n}{setText}\PYG{p}{(}\PYG{n}{prefs}
Kitap eklentilerini düzenle
Şimdi dişlileri biraz değiştirelim ve calibre kitap düzenleyiciye araçlar ekleyen bir eklenti oluşturmaya göz atalım.
Eklentiyi şurada: editor_demo_plugin.zip77 .
77
http://calibre-ebook.com/downloads/editor_demo_plugin.zip
182
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
İlk adım, above (sayfa 174) de açıklandığı gibi tüm eklentiler için boş bir içe aktarma ismi dosyası oluşturmaktır.
Eklentiyi plugin-import-name-editor_plugin_demo.txt olarak adlandıralım.
Şimdi eklenti metadatasını içeren – ismi, yazarı, sürümü vs. zorunlu __init__.py dosyasını oluşturuyoruz.
=
{}=
{}@default
=0=1=2=0=1=2
\PYG{k+kn}{from} \PYG{n+nn}{calibre.customize} \PYG{k+kn}{import} \PYG{n}{EditBookToolPlugin}
\PYG{k}{class} \PYG{n+nc}{DemoPlugin}\PYG{p}{(}\PYG{n}{EditBookToolPlugin}\PYG{p}{)}\PYG{p}{:}
\PYG{n}{name} \PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{Edit Book plugin demo}\PYG{l+s}{\PYGZsq{}}
\PYG{n}{version} \PYG{o}{=} \PYG{p}{(}\PYG{l+m+mi}{1}\PYG{p}{,} \PYG{l+m+mi}{}\PYG{p}{,} \PYG{l+m
\PYG{n}{author} \PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{Kovid Goyal}\PYG{l+s}{\PYGZsq{}}
\PYG{n}{supported\PYGZus{}platforms} \PYG{o}{=} \PYG{p}{[}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{windows}\
\PYG{n}{description} \PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{A demonstration of the plugin inter
\PYG{n}{minimum\PYGZus{}calibre\PYGZus{}version} \PYG{o}{=} \PYG{p}{(}\PYG{l+m+mi}{1}\PYG{p}{,} \
Tek bir düzenleyici eklenti her biri araç çubuğunda bir simgeye ve düzenleyicide Eklentiler menüsünde bir girdiye
denk gelmek üzere bir çok araç sağlayabilir. Aracın birden çok eylemi bulunması durumunda alt menüleri de olabilir.
Araçların
her
biri
eklentinizdeki
main.py
içinde
tanımlanmalıdır.
Her
araç
calibre.gui2.tweak_book.plugin.Tool (sayfa 288) sınıfından türetilen bir sınıftır. Tanıtım eklentisindeki main.py ye bakalım, kaynak kod yoğun olarak yorumlanmış ve kendini anlatabiliyor durumdadır. Daha
fazla detay için calibre.gui2.tweak_book.plugin.Tool (sayfa 288) sınıfının API belgelerini okuyun.
main.py
Burda kitaptaki tüm yazı tipi boyutlarını kullanıcı tarafından sağlanan bir numarayla çarpan tek bir araç tanımı göreceğiz. Bu araç kendi eklentilerinizi geliştirirken ihtiyaç duyacağınız çeşitli önemli kavramı gösterir, yani (yoğun bir
şekilde yorumlanmış) kaynak kodu dikkatli okumalısınız.
=
{}=
{}@default
=0=1=2=0=1=2
\PY
\PYG{k+kn}{from} \PYG{n+nn}{PyQt5.Qt} \PYG{k+kn}{import} \PYG{n}{QAction}\PYG{p}{,} \PYG{n}{QInputDia
\PYG{k+kn}{from} \PYG{n+nn}{cssutils.css} \PYG{k+kn}{import} \PYG{n}{CSSRule}
\PYG{c}{\PYGZsh{} The base class that all tools must inherit from}
\PYG{k+kn}{from} \PYG{n+nn}{calibre.gui2.tweak\PYGZus{}book.plugin} \PYG{k+kn}{import} \PYG{n}{Tool}
\PYG{k+kn}{from} \PYG{n+nn}{calibre} \PYG{k+kn}{import} \PYG{n}{force\PYGZus{}unicode}
\PYG{k+kn}{from} \PYG{n+nn}{calibre.gui2} \PYG{k+kn}{import} \PYG{n}{error\PYGZus{}dialog}
\PYG{k+kn}{from} \PYG{n+nn}{calibre.ebooks.oeb.polish.container} \PYG{k+kn}{import} \PYG{n}{OEB\PYGZu
\PYG{k}{class} \PYG{n+nc}{DemoTool}\PYG{p}{(}\PYG{n}{Tool}\PYG{p}{)}\PYG{p}{:}
\PYG{c}{\PYGZsh{}: Set this to a unique name it will be used as a key}
\PYG{n}{name} \PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{demo\PYGZhy{}tool}\PYG{l+s}{\PYGZsq{}}
\PYG{c}{\PYGZsh{}: If True the user can choose to place this tool in the plugins toolbar}
\PYG{n}{allowed\PYGZus{}in\PYGZus{}toolbar} \PYG{o}{=} \PYG{n+nb+bp}{True}
\PYG{c}{\PYGZsh{}: If True the user can choose to place this tool in the plugins menu}
1.9. Rehberler
183
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
\PYG{n}{allowed\PYGZus{}in\PYGZus{}menu} \PYG{o}{=} \PYG{n+nb+bp}{True}
\PYG{k}{def} \PYG{n+nf}{create\PYGZus{}action}\PYG{p}{(}\PYG{n+nb+bp}{self}\PYG{p}{,} \PYG{n}{for
\PYG{c}{\PYGZsh{} Create an action, this will be added to the plugins toolbar and}
\PYG{c}{\PYGZsh{} the plugins menu}
\PYG{n}{ac} \PYG{o}{=} \PYG{n}{QAction}\PYG{p}{(}\PYG{n}{get\PYGZus{}icons}\PYG{p}{(}\PYG{l+s
\PYG{k}{if} \PYG{o+ow}{not} \PYG{n}{for\PYGZus{}toolbar}\PYG{p}{:}
\PYG{c}{\PYGZsh{} Register a keyboard shortcut for this toolbar action. We only}
\PYG{c}{\PYGZsh{} register it for the action created for the menu, not the toolbar,}
\PYG{c}{\PYGZsh{} to avoid a double trigger}
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{register\PYGZus{}shortcut}\PYG{p}{(}\PYG{n}{ac}\PYG{
\PYG{n}{ac}\PYG{o}{.}\PYG{n}{triggered}\PYG{o}{.}\PYG{n}{connect}\PYG{p}{(}\PYG{n+nb+bp}{self
\PYG{k}{return} \PYG{n}{ac}
\PYG{k}{def} \PYG{n+nf}{ask\PYGZus{}user}\PYG{p}{(}\PYG{n+nb+bp}{self}\PYG{p}{)}\PYG{p}{:}
\PYG{c}{\PYGZsh{} Ask the user for a factor by which to multiply all font sizes}
\PYG{n}{factor}\PYG{p}{,} \PYG{n}{ok} \PYG{o}{=} \PYG{n}{QInputDialog}\PYG{o}{.}\PYG{n}{getDo
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{gui}\PYG{p}{,} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{Enter a
\PYG{n}{value}\PYG{o}{=}\PYG{l+m+mi}{2}\PYG{p}{,} \PYG{n+nb}{min}\PYG{o}{=}\PYG{l+m+mf}{1̇
\PYG{p}{)}
\PYG{k}{if} \PYG{n}{ok}\PYG{p}{:}
\PYG{c}{\PYGZsh{} Ensure any in progress editing the user is doing is present in the cont
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{boss}\PYG{o}{.}\PYG{n}{commit\PYGZus{}all\PYGZus{}ed
\PYG{k}{try}\PYG{p}{:}
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{magnify\PYGZus{}fonts}\PYG{p}{(}\PYG{n}{factor}\
\PYG{k}{except} \PYG{n+ne}{Exception}\PYG{p}{:}
\PYG{c}{\PYGZsh{} Something bad happened report the error to the user}
\PYG{k+kn}{import} \PYG{n+nn}{traceback}
\PYG{n}{error\PYGZus{}dialog}\PYG{p}{(}\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{gui}\PYG{
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{Failed to magnify fonts, click }\PYG{l+s}{\PYGZdq{}
\PYG{n}{det\PYGZus{}msg}\PYG{o}{=}\PYG{n}{traceback}\PYG{o}{.}\PYG{n}{format\PYGZ
\PYG{c}{\PYGZsh{} Revert to the saved restore point}
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{boss}\PYG{o}{.}\PYG{n}{revert\PYGZus{}requested}
\PYG{k}{else}\PYG{p}{:}
\PYG{c}{\PYGZsh{} Show the user what changes we have made, allowing her to}
\PYG{c}{\PYGZsh{} revert them if necessary}
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{boss}\PYG{o}{.}\PYG{n}{show\PYGZus{}current\PYGZ
\PYG{c}{\PYGZsh{} Update the editor UI to take into account all the changes we}
\PYG{c}{\PYGZsh{} have made}
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{boss}\PYG{o}{.}\PYG{n}{apply\PYGZus{}container\P
\PYG{k}{def} \PYG{n+nf}{magnify\PYGZus{}fonts}\PYG{p}{(}\PYG{n+nb+bp}{self}\PYG{p}{,} \PYG{n}{fac
\PYG{c}{\PYGZsh{} Magnify all font sizes defined in the book by the specified factor}
\PYG{c}{\PYGZsh{} First we create a restore point so that the user can undo all changes}
\PYG{c}{\PYGZsh{} we make.}
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{boss}\PYG{o}{.}\PYG{n}{add\PYGZus{}savepoint}\PYG{p}{(}\
\PYG{n}{container} \PYG{o}{=} \PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{current\PYGZus{}container}
\PYG{c}{\PYGZsh{} Iterate over all style declarations in the book, this means css}
\PYG{c}{\PYGZsh{} stylesheets, \PYGZlt{}style\PYGZgt{} tags and style=\PYGZdq{}\PYGZdq{} attr
\PYG{k}{for} \PYG{n}{name}\PYG{p}{,} \PYG{n}{media\PYGZus{}type} \PYG{o+ow}{in} \PYG{n}{conta
\PYG{k}{if} \PYG{n}{media\PYGZus{}type} \PYG{o+ow}{in} \PYG{n}{OEB\PYGZus{}STYLES}\PYG{p}
\PYG{c}{\PYGZsh{} A stylesheet. Parsed stylesheets are cssutils CSSStylesheet}
\PYG{c}{\PYGZsh{} objects.}
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{magnify\PYGZus{}stylesheet}\PYG{p}{(}\PYG{n}{con
\PYG{n}{container}\PYG{o}{.}\PYG{n}{dirty}\PYG{p}{(}\PYG{n}{name}\PYG{p}{)} \PYG{c}{
\PYG{k}{elif} \PYG{n}{media\PYGZus{}type} \PYG{o+ow}{in} \PYG{n}{OEB\PYGZus{}DOCS}\PYG{p}
184
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
\PYG{c}{\PYGZsh{} A HTML file. Parsed HTML files are lxml elements}
\PYG{k}{for} \PYG{n}{style\PYGZus{}tag} \PYG{o+ow}{in} \PYG{n}{container}\PYG{o}{.}\P
\PYG{k}{if} \PYG{n}{style\PYGZus{}tag}\PYG{o}{.}\PYG{n}{text} \PYG{o+ow}{and} \PY
\PYG{c}{\PYGZsh{} We have an inline CSS \PYGZlt{}style\PYGZgt{} tag, parse it
\PYG{c}{\PYGZsh{} stylesheet object}
\PYG{n}{sheet} \PYG{o}{=} \PYG{n}{container}\PYG{o}{.}\PYG{n}{parse\PYGZus{}c
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{magnify\PYGZus{}stylesheet}\PYG{p}{(}\PY
\PYG{n}{style\PYGZus{}tag}\PYG{o}{.}\PYG{n}{text} \PYG{o}{=} \PYG{n}{serializ
\PYG{n}{container}\PYG{o}{.}\PYG{n}{dirty}\PYG{p}{(}\PYG{n}{name}\PYG{p}{)}
\PYG{k}{for} \PYG{n}{elem} \PYG{o+ow}{in} \PYG{n}{container}\PYG{o}{.}\PYG{n}{parsed}
\PYG{c}{\PYGZsh{} Process inline style attributes}
\PYG{n}{block} \PYG{o}{=} \PYG{n}{container}\PYG{o}{.}\PYG{n}{parse\PYGZus{}css}\
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{magnify\PYGZus{}declaration}\PYG{p}{(}\PYG{n
\PYG{n}{elem}\PYG{o}{.}\PYG{n}{set}\PYG{p}{(}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{style}
\PYG{k}{def} \PYG{n+nf}{magnify\PYGZus{}stylesheet}\PYG{p}{(}\PYG{n+nb+bp}{self}\PYG{p}{,} \PYG{n
\PYG{c}{\PYGZsh{} Magnify all fonts in the specified stylesheet by the specified}
\PYG{c}{\PYGZsh{} factor.}
\PYG{k}{for} \PYG{n}{rule} \PYG{o+ow}{in} \PYG{n}{sheet}\PYG{o}{.}\PYG{n}{cssRules}\PYG{o}{.}
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{magnify\PYGZus{}declaration}\PYG{p}{(}\PYG{n}{rule}\
\PYG{k}{def} \PYG{n+nf}{magnify\PYGZus{}declaration}\PYG{p}{(}\PYG{n+nb+bp}{self}\PYG{p}{,} \PYG{
\PYG{c}{\PYGZsh{} Magnify all fonts in the specified style declaration by the specified}
\PYG{c}{\PYGZsh{} factor}
\PYG{n}{val} \PYG{o}{=} \PYG{n}{style}\PYG{o}{.}\PYG{n}{getPropertyValue}\PYG{p}{(}\PYG{l+s}{
\PYG{k}{if} \PYG{o+ow}{not} \PYG{n}{val}\PYG{p}{:}
\PYG{k}{return}
\PYG{c}{\PYGZsh{} see if the font\PYGZhy{}size contains a number}
\PYG{n}{num} \PYG{o}{=} \PYG{n}{re}\PYG{o}{.}\PYG{n}{search}\PYG{p}{(}\PYG{l+s}{r\PYGZsq{}}\P
\PYG{k}{if} \PYG{n}{num} \PYG{o+ow}{is} \PYG{o+ow}{not} \PYG{n+nb+bp}{None}\PYG{p}{:}
\PYG{n}{num} \PYG{o}{=} \PYG{n}{num}\PYG{o}{.}\PYG{n}{group}\PYG{p}{(}\PYG{p}{)}
\PYG{n}{val} \PYG{o}{=} \PYG{n}{val}\PYG{o}{.}\PYG{n}{replace}\PYG{p}{(}\PYG{n}{num}\PYG{
\PYG{n}{style}\PYG{o}{.}\PYG{n}{setProperty}\PYG{p}{(}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{font\
\PYG{c}{\PYGZsh{} We should also be dealing with the font shorthand property and}
\PYG{c}{\PYGZsh{} font sizes specified as non numbers, but those are left as exercises}
\PYG{c}{\PYGZsh{} for the reader}
main.py yi kısımlara ayıralım. Magnify fonts adında tek bir araç tanımladığını görüyoruz. Bu araç kullanıcıya bir
sayı soracak ve kitaptaki tüm yazı tipi boyutlarını bu sayıyla çarpacak.
İlk önemli nokta, bu araç için anahtar olarak kullanılacağından benzersiz bir karakter dizisi olarak ayarlayacağınız
araç ismidir.
Sonraki önemli nokta da calibre.gui2.tweak_book.plugin.Tool.create_action() (sayfa 288). Bu
metod eklenti araç çubuğu ve eklenti menüsünde görünen QAction nesnelerini oluşturur. Bunun yanında, isteğe bağlı
olarak kullanıcının özelleştirebileceği bir klavye kısayolu atar. QAction tarafından tetiklenen sinyal kullanıcıya yazı
tipi boyutu çarpanını soran ask_user() metoduna bağlıdır, bu da çarpma kodunu çalıştırır.
Çarpma kodu iyi belgelenmiş ve oldukça basittir. Dikkate alınacan temel şeyler düzenleyici pencereye self.gui
ile, düzenleyici Boss una self.boss ile bir referans aldığınızdır. Boss düzenleyici kullanıcı arayüzünü kontrol eden
nesnedir. calibre.gui2.tweak_book.boss.Boss (sayfa 289) sınıfında belgelenmiş bir çok faydalı metodu
vardır.
Son olarak calibre.ebooks.oeb.polish.container.Container (sayfa 281) nesnesi olan düzenlenen
kitaba referans olan self.current_container bulunmaktadır. Bu, kitabı, kitabı oluşturan HTML/CSS/resim
dosyaları koleksiyonu olarak temsil eder ve daha bir çok faydalı iş yapan metodu vardır. Eklenti kodunuzda tekrar kullanabileceğiniz bir çok kullanışlı fonksiyon ve kapsayıcı nesne E-kitap düzenleme araçları için API Belgelendirmesi
(sayfa 281) içinde belgelenmiştir.
1.9. Rehberler
185
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Eklentinize çeviriler eklemek
Eklentinizdeki tüm kullanıcı arayüzü karakter dizilerini ana calibre kullanıcı arayüzü için hangi dil seçildiyse o dile
çevirip gösterebilirsiniz.
İlk adım eklentinizin kaynak kodunun üstünden geçmek ve kullanıcıya görünür tüm metinleri _() içerisine alarak
çevrilebilir olarak işaretlemektir. Örneğin:
=
{}=
{}@default
=0=1=2=0=1=2\PYG{n}{action\PYGZus{}spec} \PYG{o}{=} \PYG{p}{(}\PYG{n}{\PYGZus{}}\PYG{p}{(}\PYG{l+s}{\P
Sonra eklenti kaynak kodundan .po dosyaları oluşturmak için bir program kullanın. Çevirmek istediğiniz her dil için
bir .po dosyası olmalıdır. Örnein: Almanca için de.po, Fransızca için fr.po gibi. Bu işlem için poedit78 programını
kullanabilirsiniz.
Bu .po dosyalarını çevirmenlerinize yollayın. Geri aldığınızda .mo dosyalarına derlemeniz gerekiyor. Bu işlem için de
tekrar poedit kullanabiliriniz, yapmanız gereken:
=
{}=
{}@default
=0=1=2=0=1=2calibre\PYGZhy{}debug \PYGZhy{}c \PYGZdq{}from calibre.translations.msgfmt import main; ma
.mo dosyalarını eklentinizdeki translations dizinine koyun.
Son adım eklentinizin .py dosyalarının başına load_translations() fonksiyonunu eklemektir. Performans açısından bu
fonksiyonu yalnızca çevrilebilir karakter dizilerinin olduğu dosyalara eklemelisiniz. Yani tipik bir kullanıcı arayüzü
eklentisinde ui.py başında çağırırken ‘‘__init__.py‘‘de çağırmazsınız.
Çevirileri Seçenekler->Görünüm & Doku altından calibre kullanıcı arayüzü dilini değiştirerek veya calibre’yi şu şekilde çalıştırarak test edebilirsiniz:
=
{}=
{}@default
=0=1=2=0=1=2CALIBRE\PYGZus{}OVERRIDE\PYGZus{}LANG=de calibre
de yi test etmek istediğiniz dil koduyla değiştirin.
Eklenti API’si
Yukarda fark etmiş olabileceğiniz gibi, calibre’de eklenti bir sınıftır. Calibre’de değişik türde eklentiler için değişik sınıflar bulunur. Tüm eklentiler için temel sınıf dahil her sınıfla ilgili detay Eklentiler için API Belgelendirmesi
(sayfa 197) içinde bulunabilir.
Eklentiniz çoğu durumda calibre’den de kod kullanacaktır. calibre kod tabanındaki fonksiyonellikle ilgili çeşitli bilgiler
bulmak için, calibre’deki Kod düzeni (sayfa 267) kısmını okuyun.
Eklentilerde hata ayıklama
İlk, en önemli adım calibre’yi hata ayıklama kipinde çalıştırmaktır. Bu işlemi komut satırından şu şekilde yapabilirsiniz:
78
http://poedit.net/
186
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
=
{}=
{}@default
=0=1=2=0=1=2\PYG{n}{calibre}\PYG{o}{\PYGZhy{}}\PYG{n}{debug} \PYG{o}{\PYGZhy{}}\PYG{n}{g}
Veya calibre içinden seçenekler düğmesine sağ tıklayarak veya Ctrl+Shift+R klavye kısayolunu kullanarak yapabilirsiniz.
Komut satırından çalıştırırken, hata ayıklama çıktısı konsola yazdırılacaktır, calibre içinden çalıştırılırken çıktı bir txt
dosyasına gider.
Eklentinizde herhangi bir yere yazdırma ifadeleri ekleyebilirsiniz, bunlar da hata ayıklama kipinde yazdırılır. Bunun
python olduğunu ve hata ayıklamak için yazdırma ifadelerinden başka bir şeye ihtiyaç duymamanız gerektiğini unutmayın ;) Tüm calibre’yi bu hata ayıklama tekniğiyle geliştirdim.
Eklentinize yaptığınızı değişiklikleri hızlıca şu komut satırıyla test edebilirsiniz:
=
{}=
{}@default
=0=1=2=0=1=2\PYG{n}{calibre}\PYG{o}{\PYGZhy{}}\PYG{n}{debug} \PYG{o}{\PYGZhy{}}\PYG{n}{s}\PYG{p}{;} \P
Bu işlem calibre’yi kapatır, kapanmanın bitmesini bekler, eklentinizi calibre’de günceller ve calibre’yi baştan başlatır.
Daha fazla eklenti örneği
Bir çok, karmaşık calibre eklentisini şurada79 bulabilirsiniz.
Eklentilerinizi başkalarıyla paylaşmak
Oluşturduğunuz eklentileri başka calibre kullanıcılarıyla paylaşmak isterseniz, calibre eklentileri forumunda80 yeni bir
başlık altında eklentinizi gönderebilirsiniz.
1.9.7 E-kitaplarda matematik dizgisi
Calibre e-kitap görüntüleyicisi e-kitaplarda (ePub ve HTML dosyalarında) matematiksel ifadeleri gömülü olarak gösterme yeterliliğine sahiptir. Matematiksel ifadeleri doğrudan TeXi MathML veya AsciiMath kullanarak yazabilirsiniz.
Calibre görüntüleyicisi bunu yapmak için harika‘MathJax <http://www.mathjax.org>‘_ kitaplığını kullanır. Bu kısa
rehber calibre görüntüleyici ile uygun şekilde içinde matematik ifadeleri bulunan e-kitapların nasıl oluşturulacağını
anlatır.
Matematik ifadeleri ile basit bir HTML dosyası
Matematiksel ifadeleri basit bir HTML sayfasının içine yazabilirsiniz ve calibre onları uygun şekilde dizer. Aşağıdaki
örnekte matematiksel ifadeler için TeX gösterimini kullandık. Normal TeX komutlarını ve işareti, küçüktür ve büyüktür
işaretleri yerine &amp; &lt; ve &gt; yazmak kaydıyla kullanabileceğinizi göreceksiniz.
Bu calibre’ye matematiksel ifadeler içerdiğini bildirmenin ilk adımıdır. Bunu HTML dosyasının <head> bölümüne
aşağıdaki kod parçacığını ekleyerek yapabilirsiniz:
79
80
http://www.mobileread.com/forums/showthread.php?t=118764
http://www.mobileread.com/forums/forumdisplay.php?f=237
1.9. Rehberler
187
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
=
{}=
{}@default
=0=1=2=0=1=2\PYGZlt{}script type=\PYGZdq{}text/x\PYGZhy{}mathjax\PYGZhy{}config\PYGZdq{}\PYGZgt{}\PYGZ
İşte bu kadar, artık bir .tex dosyasına yazdığınız gibi matematiksel ifadeleri yazabilirsiniz. Örneğin Lorenz denklemlerini böyle yazabilirsiniz:
=
{}=
{}@default
=0=1=2=0=1=2\PYGZlt{}h2\PYGZgt{}The Lorenz Equations\PYGZlt{}/h2\PYGZgt{}
\PYGZlt{}p\PYGZgt{}
\PYGZbs{}begin\PYGZob{}align\PYGZcb{}
\PYGZbs{}dot\PYGZob{}x\PYGZcb{} \PYGZam{}amp; = \PYGZbs{}sigma(y\PYGZhy{}x) \PYGZbs{}\PYGZbs{}
\PYGZbs{}dot\PYGZob{}y\PYGZcb{} \PYGZam{}amp; = \PYGZbs{}rho x \PYGZhy{} y \PYGZhy{} xz \PYGZbs{}\PYG
\PYGZbs{}dot\PYGZob{}z\PYGZcb{} \PYGZam{}amp; = \PYGZhy{}\PYGZbs{}beta z + xy
\PYGZbs{}end\PYGZob{}align\PYGZcb{}
\PYGZlt{}/p\PYGZgt{}
Bu kod parçacığı calibre görüntüleyicisinde aşağıdaki şekilde görüntülenecektir.
Şekil 1.2: Lorentz Denklemleri
Daha fazla denklem ve satır içinde matematik içeren tam bir HTML dosyası aşağıda bulunmaktadır. Bu HTML dosyasını başkalarına kolayca dağıtabileceğiniz bir e-kitap olarak calibre içinden EPUB biçimine dönüştürebilrisiniz.
=
{}=
{}@default
=0=1=2=0=1=2\PYG{c+cp}{\PYGZlt{}!DOCTYPE html\PYGZgt{}}
\PYG{n+nt}{\PYGZlt{}html}\PYG{n+nt}{\PYGZgt{}}
\PYG{c}{\PYGZlt{}!\PYGZhy{}\PYGZhy{}}\PYG{c}{ Copyright (c) 22 Design Science, Inc. }\PYG{c}{\PYGZhy{
\PYG{n+nt}{\PYGZlt{}head}\PYG{n+nt}{\PYGZgt{}}
\PYG{n+nt}{\PYGZlt{}title}\PYG{n+nt}{\PYGZgt{}}Math Test Page\PYG{n+nt}{\PYGZlt{}/title\PYGZgt{}}
\PYG{n+nt}{\PYGZlt{}meta} \PYG{n+na}{http\PYGZhy{}equiv=}\PYG{l+s}{\PYGZdq{}content\PYGZhy{}type\PYGZ
\PYG{c}{\PYGZlt{}!\PYGZhy{}\PYGZhy{}}\PYG{c}{ This script tag is needed to make calibre\PYGZsq{}s ebo
\PYG{n+nt}{\PYGZlt{}script }\PYG{n+na}{type=}\PYG{l+s}{\PYGZdq{}text/x\PYGZhy{}mathjax\PYGZhy{}config
\PYG{c+c1}{// This line adds numbers to all equations automatically, unless explicitly suppressed
\PYG{n+nx}{MathJax}\PYG{p}{.}\PYG{n+nx}{Hub}\PYG{p}{.}\PYG{n+nx}{Config}\PYG{p}{(}\PYG{p}{\PYGZob
\PYG{n+nt}{\PYGZlt{}/script\PYGZgt{}}
\PYG{n+nt}{\PYGZlt{}style}\PYG{n+nt}{\PYGZgt{}}
\PYG{n+nt}{h1} \PYG{p}{\PYGZob{}}\PYG{k}{text\PYGZhy{}align}\PYG{o}{:}\PYG{k}{center}\PYG{p}{\PYGZcb{
\PYG{n+nt}{h2} \PYG{p}{\PYGZob{}}
\PYG{k}{font\PYGZhy{}weight}\PYG{o}{:} \PYG{k}{bold}\PYG{p}{;}
188
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
\PYG{k}{background\PYGZhy{}color}\PYG{o}{:} \PYG{l+m}{\PYGZsh{}DDDDDD}\PYG{p}{;}
\PYG{k}{padding}\PYG{o}{:} \PYG{l+m}{.2em} \PYG{l+m}{.5em}\PYG{p}{;}
\PYG{k}{margin\PYGZhy{}top}\PYG{o}{:} \PYG{l+m}{1.5em}\PYG{p}{;}
\PYG{k}{border\PYGZhy{}top}\PYG{o}{:} \PYG{l+m}{3px} \PYG{k}{solid} \PYG{l+m}{\PYGZsh{}666666}\PYG{
\PYG{k}{border\PYGZhy{}bottom}\PYG{o}{:} \PYG{l+m}{2px} \PYG{k}{solid} \PYG{l+m}{\PYGZsh{}999999}\P
\PYG{p}{\PYGZcb{}}
\PYG{n+nt}{\PYGZlt{}/style\PYGZgt{}}
\PYG{n+nt}{\PYGZlt{}/head\PYGZgt{}}
\PYG{n+nt}{\PYGZlt{}body}\PYG{n+nt}{\PYGZgt{}}
\PYG{n+nt}{\PYGZlt{}h1}\PYG{n+nt}{\PYGZgt{}}Sample Equations\PYG{n+nt}{\PYGZlt{}/h1\PYGZgt{}}
\PYG{n+nt}{\PYGZlt{}h2}\PYG{n+nt}{\PYGZgt{}}The Lorenz Equations\PYG{n+nt}{\PYGZlt{}/h2\PYGZgt{}}
\PYG{n+nt}{\PYGZlt{}p}\PYG{n+nt}{\PYGZgt{}}
\PYGZbs{}begin\PYGZob{}align\PYGZcb{}
\PYGZbs{}dot\PYGZob{}x\PYGZcb{} \PYG{n+ni}{\PYGZam{}amp;} = \PYGZbs{}sigma(y\PYGZhy{}x) \PYGZbs{}labe
\PYGZbs{}dot\PYGZob{}y\PYGZcb{} \PYG{n+ni}{\PYGZam{}amp;} = \PYGZbs{}rho x \PYGZhy{} y \PYGZhy{} xz \
\PYGZbs{}dot\PYGZob{}z\PYGZcb{} \PYG{n+ni}{\PYGZam{}amp;} = \PYGZhy{}\PYGZbs{}beta z + xy
\PYGZbs{}end\PYGZob{}align\PYGZcb{}
\PYG{n+nt}{\PYGZlt{}/p\PYGZgt{}}
\PYG{n+nt}{\PYGZlt{}h2}\PYG{n+nt}{\PYGZgt{}}The Cauchy\PYGZhy{}Schwarz Inequality\PYG{n+nt}{\PYGZlt{}
\PYG{n+nt}{\PYGZlt{}p}\PYG{n+nt}{\PYGZgt{}}\PYGZbs{}[
\PYGZbs{}left( \PYGZbs{}sum\PYGZus{}\PYGZob{}k=1\PYGZcb{}\PYGZca{}n a\PYGZus{}k b\PYGZus{}k \PYGZbs{}
\PYGZbs{}left( \PYGZbs{}sum\PYGZus{}\PYGZob{}k=1\PYGZcb{}\PYGZca{}n a\PYGZus{}k\PYGZca{}2 \PYGZbs{}r
\PYGZbs{}]\PYG{n+nt}{\PYGZlt{}/p\PYGZgt{}}
\PYG{n+nt}{\PYGZlt{}h2}\PYG{n+nt}{\PYGZgt{}}A Cross Product Formula\PYG{n+nt}{\PYGZlt{}/h2\PYGZgt{}}
\PYG{n+nt}{\PYGZlt{}p}\PYG{n+nt}{\PYGZgt{}}\PYGZbs{}[
\PYGZbs{}mathbf\PYGZob{}V\PYGZcb{}\PYGZus{}1 \PYGZbs{}times \PYGZbs{}mathbf\PYGZob{}V\PYGZcb{}\PYGZ
\PYGZbs{}begin\PYGZob{}vmatrix\PYGZcb{}
\PYGZbs{}mathbf\PYGZob{}i\PYGZcb{} \PYG{n+ni}{\PYGZam{}amp;} \PYGZbs{}mathbf\PYGZob{}j\PYGZcb{} \
\PYGZbs{}frac\PYGZob{}\PYGZbs{}partial X\PYGZcb{}\PYGZob{}\PYGZbs{}partial u\PYGZcb{} \PYG{n+ni}{
\PYGZbs{}frac\PYGZob{}\PYGZbs{}partial X\PYGZcb{}\PYGZob{}\PYGZbs{}partial v\PYGZcb{} \PYG{n+ni}{
\PYGZbs{}end\PYGZob{}vmatrix\PYGZcb{}
\PYGZbs{}]\PYG{n+nt}{\PYGZlt{}/p\PYGZgt{}}
\PYG{n+nt}{\PYGZlt{}h2}\PYG{n+nt}{\PYGZgt{}}The probability of getting \PYGZbs{}(k\PYGZbs{}) heads wh
\PYG{n+nt}{\PYGZlt{}p}\PYG{n+nt}{\PYGZgt{}}\PYGZbs{}[P(E) = \PYGZob{}n \PYGZbs{}choose k\PYGZcb{} p\P
\PYG{n+nt}{\PYGZlt{}h2}\PYG{n+nt}{\PYGZgt{}}An Identity of Ramanujan\PYG{n+nt}{\PYGZlt{}/h2\PYGZgt{}}
\PYG{n+nt}{\PYGZlt{}p}\PYG{n+nt}{\PYGZgt{}}\PYGZbs{}[
\PYGZbs{}frac\PYGZob{}1\PYGZcb{}\PYGZob{}(\PYGZbs{}sqrt\PYGZob{}\PYGZbs{}phi \PYGZbs{}sqrt\PYGZob{
1+\PYGZbs{}frac\PYGZob{}e\PYGZca{}\PYGZob{}\PYGZhy{}2\PYGZbs{}pi\PYGZcb{}\PYGZcb{} \PYGZob{}1+\P
\PYGZob{}1+\PYGZbs{}frac\PYGZob{}e\PYGZca{}\PYGZob{}\PYGZhy{}8\PYGZbs{}pi\PYGZcb{}\PYGZcb{} \PY
\PYGZbs{}]\PYG{n+nt}{\PYGZlt{}/p\PYGZgt{}}
\PYG{n+nt}{\PYGZlt{}h2}\PYG{n+nt}{\PYGZgt{}}A Rogers\PYGZhy{}Ramanujan Identity\PYG{n+nt}{\PYGZlt{}/h
\PYG{n+nt}{\PYGZlt{}p}\PYG{n+nt}{\PYGZgt{}}\PYGZbs{}[
1 + \PYGZbs{}frac\PYGZob{}q\PYGZca{}2\PYGZcb{}\PYGZob{}(1\PYGZhy{}q)\PYGZcb{}+\PYGZbs{}frac\PYGZob
\PYGZbs{}prod\PYGZus{}\PYGZob{}j=PYGZcb{}\PYGZca{}\PYGZob{}\PYGZbs{}infty\PYGZcb{}\PYGZbs{}frac\P
\PYGZbs{}quad\PYGZbs{}quad \PYGZbs{}text\PYGZob{}for \PYGZdl{}\textbar{}q\textbar{}\PYG{n+ni}{\P
1.9. Rehberler
189
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
\PYGZbs{}]\PYG{n+nt}{\PYGZlt{}/p\PYGZgt{}}
\PYG{n+nt}{\PYGZlt{}h2}\PYG{n+nt}{\PYGZgt{}}Maxwell\PYGZsq{}s Equations\PYG{n+nt}{\PYGZlt{}/h2\PYGZgt
\PYG{n+nt}{\PYGZlt{}p}\PYG{n+nt}{\PYGZgt{}}
\PYGZbs{}begin\PYGZob{}align\PYGZcb{}
\PYGZbs{}nabla \PYGZbs{}times \PYGZbs{}vec\PYGZob{}\PYGZbs{}mathbf\PYGZob{}B\PYGZcb{}\PYGZcb{} \PYG
\PYGZbs{}nabla \PYGZbs{}cdot \PYGZbs{}vec\PYGZob{}\PYGZbs{}mathbf\PYGZob{}E\PYGZcb{}\PYGZcb{} \PYG{
\PYGZbs{}nabla \PYGZbs{}times \PYGZbs{}vec\PYGZob{}\PYGZbs{}mathbf\PYGZob{}E\PYGZcb{}\PYGZcb{}\PYGZ
\PYGZbs{}nabla \PYGZbs{}cdot \PYGZbs{}vec\PYGZob{}\PYGZbs{}mathbf\PYGZob{}B\PYGZcb{}\PYGZcb{} \PYG{
\PYG{n+nt}{\PYGZlt{}/p\PYGZgt{}}
\PYG{n+nt}{\PYGZlt{}h2}\PYG{n+nt}{\PYGZgt{}}In\PYGZhy{}line Mathematics\PYG{n+nt}{\PYGZlt{}/h2\PYGZgt
\PYG{n+nt}{\PYGZlt{}p}\PYG{n+nt}{\PYGZgt{}}While display equations look good for a page of samples, t
ability to mix math and text in a paragraph is also important. This
expression \PYGZbs{}(\PYGZbs{}sqrt\PYGZob{}3x\PYGZhy{}1\PYGZcb{}+(1+x)\PYGZca{}2\PYGZbs{}) is an exam
you see, equations can be used this way as well, without unduly
disturbing the spacing between lines.\PYG{n+nt}{\PYGZlt{}/p\PYGZgt{}}
\PYG{n+nt}{\PYGZlt{}h2}\PYG{n+nt}{\PYGZgt{}}References to equations\PYG{n+nt}{\PYGZlt{}/h2\PYGZgt{}}
\PYG{n+nt}{\PYGZlt{}p}\PYG{n+nt}{\PYGZgt{}}Here is a reference to the Lorenz Equations (\PYGZbs{}ref\
\PYG{n+nt}{\PYGZlt{}/body\PYGZgt{}}
\PYG{n+nt}{\PYGZlt{}/html\PYGZgt{}}
Daha fazla bilgi
Calibre matematiksel ifadeleri işlemek için MathJax kitaplığını kullandığından matematiksel ifadeleri e-kitaplarda
işlemek için daha fazla bilgiyi MathJax web sayfasında81 bulabilirsiniz.
1.9.8 AZW3 • EPUB • MOBI Katalogları Oluşturmak
calibre’nin katalog oluşturma özelliği kitaplığınızda çeşitli biçimlerde dosyalardan oluşan bir katalog oluşturmanıza
imkan verir. Bu yardım dosyası AZW3, EPUB ve MOBI biçimlerinde bir katalog oluşturmanın genel seçeneklerini
tanımlar.
•
•
•
•
•
•
•
•
81
Katalog için kitap seçmek (sayfa 191)
İçerilen bölümler (sayfa 191)
Önekler (sayfa 192)
Hariç tutulan kitaplar (sayfa 192)
Hariç tutulan türler (sayfa 193)
Diğer seçenekler (sayfa 193)
Özel katalog kapakları (sayfa 194)
Ek yardım kaynakları (sayfa 194)
http://www.mathjax.org
190
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Katalog için kitap seçmek
Kitaplığınızdaki tüm kitapların kataloglanmasını isterseniz ana penceredeki tüm arama ve filtreleme seçeneklerini
kaldırın. Seçilmiş tek bir dosyayla kitaplığınızdaki tüm dosyalar oluşturulan kataloğa dahil edilmeye aday olur. Çeşitli
kriterlerle bazı kitaplar katalog dışında tutulabilir; daha fazla bilgi için aşağıdaki Hariç tutulan türler (sayfa 193)
alanına bakın.
Kitaplığınızdaki bazı kitapların kataloglanmasını isterseniz iki seçeneğiniz var:
• Kataloglamak istediğiniz kitapların bir çoklu seçimini oluşturun. Calibre’nin ana penceresinde birden çok kitap
seçildiğinde sadece seçilen kitaplar kataloglanır.
• Görüntülenen kitapları filtrelemek için Arama alanını veya Etiket Tarayıcısını kullanın. Sadece görüntülenen
kitaplar kataloglanacaktır.
Katalog oluşturmaya başlamak için Kitapları dönüştür > Calibre kitaplığınızdaki kitapların bir kataloğunu oluşturun menü ögesini seçin. Katalog oluşturma iletişim penceresine daha kolay olaşım için Tercihler > Arayüz > Araç
çubukları alanına bir Katalog Oluştur düğmesi ekleyebilirsiniz.
Katalog seçeneklerinde Katalog biçimi olarak AZW3, EPUB veya MOBI seçin. Katalog başlığı alanına oluşturulacak katalog için bir isim girin. Girdiğiniz isimde bir katalog zaten mevcutsa oluşturulacak katalog onun üzerine
yazılacaktır.
Kataloğu aygıta otomatik olarak gönder seçeneğini etkinleştirmek oluşturulan kataloğun bağlanan aygıta hemen indirilmesine neden olacaktır.
İçerilen bölümler
Onay işaretiyle etkinleştirilmiş bölümler oluşturulacak kataloğa dahil edilecektir:
• Yazarlar - tüm kitaplar yazarlarına göre sıralı halde liste biçiminde sunulur. Serisi olmayan kitaplar serilerden
önce gösterilir.
1.9. Rehberler
191
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
• Başlıklar - tüm kitaplar başlıklarına göre sıralı halde liste biçiminde sunulur.
• Seriler - bir serinin parçası olan tüm kitaplar serilerine göre sıralı halde liste biçiminde sunulur.
• Türler - türler bir liste halinde Yazar ve Serilerine göre sıralı olarak sunulurlar.
• Yakın Zamanda Eklenen - tüm kitaplar, ters tarih sırasıyla. Liste son 30 günde eklenen kitapları içerir, sonra
eklenen kitapların aydan aya listesini.
• Tanımlamalar - her kitap için kapağın küçük resmi ve yorumlar dahil ayrıntılı tanımlamalar bulunur. Yazara
göre sıralıdır ve serisi olmayan kitaplar daha önce gösterilir.
Önekler
Ön ek kuralları belirli bir kritere uyan kitaplara ön ek eklemenize imkan verir. Örneğin okuduğunuz kitapları bir onay
işaretiyle veya istek listenizdeki kitapları bir X ile işaretlemek isteyebilirsiniz.
İlk sütundaki onay kutusu kuralı etkinleştirir. İsim sizin girdiğiniz kuralın ismidir. Alan ise ya Etiketler veya kitaplığınızdaki özel bir sütun olabilir. Değer de Alan alanının eşleştiği içeriktir. Bir ön ek kuralı sağlandığında kitap seçilen
Ön Ek ile işaretlenecektir.
Yukarıdaki örnekte üç ön ek kuralı belirtilmiştir:
1. Okunmuş kitap, Son okuma özel sütununda bulunan herhangi tarihteki bir kitabın önüne bir kontrol işareti geleceğini belirtir.
2. Dileklistesi öğesi Dileklistesi etiketi olan herhangi kitabın önüne bir X sembolü geleceğini belirtir.
3. Kitaplık, Kitaplıkta Mevcut özel sütununda Doğru (veya Evet) değeri olan her kitabın önüne bir çift ok sembolü
geleceğini belirtir.
Ilk eşleşen kuralı öneki sağlar. Engelli veya eksik kurallar göz ardı edilir.
Hariç tutulan kitaplar
192
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Hariç tutma kuralları kataloglanmayacak kitapları belirtmenize imkan verir.
İlk sütundaki onay kutusu kuralı etkinleştirir. İsim kural için girdiğiniz isimdir. Alan ise ya Etiket ya da kitaplığınızdaki özel bir sütundur. Değer alanı Alan ile eşleşen içeriktir. Dışarıda tutma kurallarından biri sağlandığında kitap
oluşturulan kataloğun dışında tutulur.
Yukarıdaki örnekte iki hariç tutma kuralı belirtilmiştir:
1. Kataloglar kuralı Katalog etiketine sahip kitapların oluşturulacak kataloğa dahil edilmeyeceğini belirtir.
2. Arşivlenmiş Kitaplar kuralı Durum sütunundaki değeri Arşivlenmiş olan kitapların oluşturulacak kataloğa dahil
edilmeyeceğini belirtir.
Tüm kurallar bütün kitaplar için çalıştırılır. Kapalı veya eksik kurallar yok sayılır.
Hariç tutulan türler
Bir katalog oluşturulduğunda veritabanınızdaki etiketler türler olarak kullanılır. Örneğin; etiketleri Kurgu ve
Kurgusal Olmayan olarak kullanabilirsiniz. Bu etiketler oluşturulan katalogda türler haline gelir ve bu etiketlerle
etiketlenmiş kitaplar ilgili türlerin altında listelenir. Bir kitap taşıdığı bütün etiketlere karşılık gelen türlerin altında
listelenir.
Belirli etiketleri belirli amaçlar için kullanabilirsiniz. Örneğin; bir + işareti kitabı okumayı veya [Amazon
Freebie] gibi parantezli bir ifade kitabın kaynağını işaret edebilir. Hariç tutulan türler düzenli ifadesi oluşturulan kataloğa alınmasını istemediğiniz etiketleri belirtmenize izin verir. Varsayılan hariç tutma düzenli ifade deseni
\[.+\]\+ [etiket] şeklinde yazılan etiketleri hariç tutar. Kitap okuma için varsayılan etiket olan + kataloğa
alınmayacak türleri belirtir.
Bir düzenli ifadede ayrıca tam isim kullanabilirsiniz. Örneğin, [Amazon Freebie] veya [Project
Gutenberg]. Çıkarılması için birden çok tam etiket listelemek istiyorsanız, aralarına bir boru (dikey çubuk) koyun: [Amazon Freebie]|[Project Gutenberg].
Düzenli ifade sonucu veritabanınızdaki etiketlere ve girdiğiniz düzenli ifade desenine göre katalog oluşturulduğunda
hangi etiketlerin hariç tutulacağını gösterir. Düzenli ifade desenini düzenlediğinizde sonuçlar da güncellenir.
Diğer seçenekler
Katalog kapağı mevcut kapağın mı kullanılacağını yoksa yeni bir kapak mı oluşturulacağını belirtir. Kataloglarınız
için özel kapaklar oluşturmak mümkündür - daha fazla bilgi için Özel katalog kapakları alanına bakabilirsiniz. Yeniden
1.9. Rehberler
193
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
kullanmak istediğiniz bir özel kapak oluşturmuşsanız Mevcut kapağı kullan seçeneğini seçin. Aksi halde Yeni kapak
oluştur diyerek devam edin.
Ek Tanımlama notu özel bir sütunun içeriğinin Tanımlama sayfasına, kapak küçük resminin yanına eklenmesini belirtir.
Örneğin, kitabı okuduğunuz son tarihi bir Son okuma özel sütunuyla görüntülemek isteyebilirsiniz. Tanımlama notu
özelliğinin gelişmiş kullanımı için calibre forumundaki şu gönderiye82 göz atın.
Küçük resim genişliği Tanımlamalar sayfasındaki kapak küçük resimleri için bir genişlik tercihi belirtir. Küçük resimler performansı artırmak için zulalanır. Değişik genişlikleri deneyimlemek için tercih ettiğiniz genişliği bulana kadar
bir kaç kitap içeren bir katalok üretmeyi deneyin, sonra tam kataloğunuzu üretin. Bir katalok yeni bir küçük resim
genişliğiyle üretildiğinde performans yavaş olacaktır, fakat sonraki katalog inşaları katalog zulası avantajını kullanacaktır.
Yorumlarla Birleştir katalog üretiminde içeriği zarar vermeden Yorumlar metadatasıyla birleştirilecek bir özel sütun
belirtir. Örneğin Yorumlar metadatasına eklemek istediğiniz bir Yazar Bio özel sütununuz olabilir. Özel sütun içeriğini
Yorum kısmından önce ya da sonra eklemek isteyebilirsiniz, ve isteğe bağlı olarak eklenen içeriği yatay bir cetvel
ayraçla ayırabilirsiniz. Seçilebilir nitelikte özel sütun türleri metin, yorumlar, ve bileşik olabilir.
Özel katalog kapakları
Kurulu olan Kapak Oluşturma eklentisi83 ile kataloğunuz için
özel kapaklar oluşturabilirsiniz. Eklentiyi yüklemek için Tercihler > Gelişmiş > Eklentiler > Yeni eklentiler getir
menüsünü takip edin.
Ek yardım kaynakları
Calibre’nin Katalog özelliği hakkında daha fazla bilgi için MobileRead forumundaki sabit Katalog Oluşturmak - Buradan başlayın84 alanına bakın. Burada katalog şablonlarını nasıl özelleştirebileceğinizi ve nasıl hata raporu gireceğinizi
de bulacaksınız.
82
83
84
http://www.mobileread.com/forums/showpost.php?p=1335767&postcount=395
http://www.mobileread.com/forums/showthread.php?t=124219
http://www.mobileread.com/forums/showthread.php?t=118556
194
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Diğer kullanıcılara calibre’nin Katalog özelliği hakkında soru sormak veya tartışmak için MobileRead forumunda
Calibre Katalogları85 alanına bakabilirsiniz.
1.9.9 Sanal Kitaplıklar
Sanal kitaplık ifadesi calibre’ye normal bir kitaplığın bir alt kümesini açmasını söylemenin bir yoludur. Örneğin sadece belirli bir yazarın kitaplarıyla veya sadece belirli bir etiketi taşıyan kitaplarla çalışmak isteyebilirsiniz. Sanal
kitaplıkları kullanmak büyük kitaplığınızı daha küçük alt kitaplıklara ayırmanın tercih edilen bir yoludur. Tüm koleksiyonunuzda arama yapmak istediğinizde küçük kitaplıktan üst kitaplığa geri gelmeniz gerekir. Calibre içinde birden
fazla kitaplıkta arama yapmanın bir yöntemi bulunmamaktadır.
Bir sanal kitaplık basit bir aramadan farklıdır. Arama kitap listesinde görüntülenen kitapların listesini kısıtlar. Bir sanal
kitaplık bunun yanında solda görüntülenen Etiket Tarayıcısında gösterilen girdileri de kısıtlar. Etiket Tarayıcısı sadece
sanal kitaplıkta bulunan etiketleri, yazarları, serileri, yayıncıları ve benzerlerini gösterir. Bir sanal kitaplık sadece
kitapların kısıtlanmış kümesini barındıran bir gerçek kitaplık gibi davranır.
Sanal Kitaplıklar Oluşturmak
Bir sanal kitaplık kullanmak için arama çubuğunun solundaki Sanal Kitaplık düğmesine tıklayın ve Sanal Kitaplık Oluştur seçeneğini seçin. İlk örnek olarak sadece belrli bir yazarın kitaplarını gösteren
bir sanal kitaplık oluşturalım. Aşağıda gösterilen Yazarlar bağlantısına tıklayın ve kullanmak istediğiniz yazarı seçip
Tamam’a tıklayın.
Sanal Kitaplık Oluştur iletişim penceresi sizin için doldurulacaktır. Tamam’a tıkladığınızda sadece seçtiğiniz yazarın
kitaplarını gösteren yeni bir Sanal Kitaplık oluşturulduğunu göreceksiniz. Calibre’nin bakış açısından bu kitaplık
sadece seçtiğiniz yazarın kitaplarını barındıran bir kitaplık gibidir.
İstediğiniz herhangi bir zamada Sanal Kitaplık bağlantısından <None> girdisini seçerek tam kitaplığınıza dönebilirsiniz.
Sanal Kitaplıklar Aramaları temel alırlar. Her aramanızı bir sanal kitaplığın temeli olarak kullanabilirsiniz. Sanal
kitaplığınız aramanın sonuçlarıyla eşleşen kitapları barındıracaktır. İlk olarak aramak istediğiniz şeyi arama çubuğuna
yazın veya Etiket Tarayıcısını kullanın. Dönen sonuçlardan memnun olduğunuzda Sanal Kitaplık düğmesine tıklayın,
85
http://www.mobileread.com/forums/forumdisplay.php?f=236
1.9. Rehberler
195
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Kitaplık Oluştur bağlantısını takip ederek bu yeni kitaplık için bir isim girin. Sanal kitaplığınız az önce yaptığınız
aramaların sonuçlarını temel alarak oluşturulacaktır. Aramalar çok güçlüdür, hangi türde şeyleri arayabileceğinizi
Arama Arayüzü (sayfa 11) alanından öğrenebilirsiniz.
Faydalı Sanal Kitaplık Örnekleri
• Son gün içinde calibre’ye eklenen kitaplar: date:>1daysago
• Son ay içinde calibre’ye eklenen kitaplar: date:>30daysago
• 5 yıldız almış kitaplar: rating:5
• En az 4 yıldız almış kitaplar: rating:>=4
• Değerlendirmesi yapılmamış kitaplar: rating:false
• Calibre içinden Haberleri Getir işlevi ile indirilmiş dergiler: tags:=News and author:=calibre
• Etiketi olmayan kitaplar: tags:false
• Kapağı olmayan kitaplar: cover:false
Sanal Kitaplıklarla çalışmak
Önceden oluşturulmuş bir sanal kitaplığı Sanal Kitaplık düğmesine tıklayıp uygun eylemi seçerek düzenleyebilir veya
kaldırabilirsiniz.
Calibre’ye geçerli kitaplık her açıldığında bir özel sanal kitaplığın uygulanması gerektiğini Tercihler->Davranış yolunu kullanarak söyleyebilirsiniz.
Calibre İçerik Sunucusunu kullanıyorsanız tüm kitaplığınız yerine bir sanal kitaplığı paylaşmayı Tercihler->Ağdan
paylaşmak menüsünden yapabilirsiniz.
Mevcut aramanızı hızlıca bir geçici sanal kitaplık olarak kullanabilrisiniz, bunun için Sanal Kitaplık düğmesine tıklayın ve *mevcut arama girdisini seçin.
Kullanılabilir tüm sanal kitaplıkları kitap listesinin üstünde sekmeler olarak görebilirsiniz. Sanal kitaplıklar arasında
sıkça dolaşmak isterseniz bu kolaylık sağlayacaktır. Bunun için Sanal Kitaplık düğmesine tıklayın ve Sanal Kitaplıkları sekmelerde göster seçeneğini seçin. Sekmeleri sürükleyip bırakarak yeniden düzenleyebilir ve görmek istemediklerinizi kapatabilirsiniz. Kapatılan sekmeler sekme çubuğuna sağ tıklanarak yeniden yüklenebilirler.
Ek kısıtlamalar kullanmak
Sanal kitaplıkta görüntülenen kitaplara ek kısıtlamalar koymak için Ek kısıtlamalar düğmesini kullanabilirsiniz. Bir
ek kısıtlama sanal kitaplığınızda gösterilen kitapları daha da kısıtlamak için kullanabileceğiniz önceden kaydettiğiniz
bir arama olabilir. Örneğin Tarihi Kurgu etiketini taşıyan kitaplardan oluşan bir Sanal Kitaplığınız ve okumadığınız
kitapları gösteren bir kaydedilmiş aramanız olsun Sanal Kitaplık düğmesine tıklayıp Ek kısıtlamalar seçeneğini seçerek okunmamış Tarihi Kurgu kitapların görüntülenmesini sağlayabilirsiniz. Kaydedilmiş aramalar hakkında daha fazla
bilgi için Aramaları kaydetmek (sayfa 14) bölümüne bakabilirsiniz.
1.10 Calibreyi özelleştirmek
calibre yüksek derecede modüler bir tasarıma sahiptir. Çeşitli parçaları özelleştirilebilir. calibre’ye çevrimiçi içerğin
yeni kaynaklarını eklemek için nasıl tarifler oluşturulacağını Sık kullandığınız haber sitesini ekleme (sayfa 23) Bölümünden öğrenebilirsiniz. Burada ilk olarak çevresel değişkenlerin nasıl kullanılacağını ve calibre’nin davranışını
196
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
özelleştirmek için ince ayarları, daha sonra simgeler ve şablonlar gibi kendi sabit kaynaklarınızı nasıl belirteceğinizi
ve son olarak calibre’ye işlevsellik eklemek için eklentileri nasıl kullanacağınızı öğreneceksiniz.
•
•
•
•
•
Çevresel değişkenler (sayfa 221)
İnce Ayarlar (sayfa 222)
Simgelerin, şablonların ve benzerlerinin üzerine yazmak (sayfa 232)
Calibre için özel ikon teman oluşturuluyor (sayfa 232)
Eklentilerle calibre’yi özelleştirmek (sayfa 232)
1.10.1 Eklentiler için API Belgelendirmesi
Güçlü eklentiler oluşturmak için alt sınıf yapılabilir çeşitli soyut temel sınıfları tanımlar. Kullanışlı sınıflar şunlardır:
•
•
•
•
•
•
•
•
•
•
Eklenti (sayfa 197)
FileTypePlugin (sayfa 199)
Metadata eklentileri (sayfa 200)
Katalog eklentileri (sayfa 201)
Metadata indirme eklentileri (sayfa 201)
Dönüştürme eklentileri (sayfa 204)
Aygıt Sürücüleri (sayfa 206)
Kullanıcı Arayüzü Eylemleri (sayfa 216)
Tercihler Eklentileri (sayfa 218)
Görüntüleme eklentileri (sayfa 220)
Eklenti
class calibre.customize.Plugin(plugin_path)
Bir calibre eklentisi. Kullanışlı üyeleri şunları içerir:
•self.plugin_path: Stores path to the zip file that contains içeren zip dosyasına yolu tutar
•self.site_customization: Stores a customization string entered karakter dizisini tutar.
Alt sınıflarda ezilmesi gereken metodlar:
•initialize() (sayfa 198)
•customization_help() (sayfa 199)
Kullanışlı metodlar:
•temporary_file() (sayfa 199)
•__enter__()
•load_resources() (sayfa 198)
supported_platforms= []
Bu eklentinin çalıştığı platformların listesi. Örneğin: [’windows’, ’osx’, ’linux’]
name= ‘Trivial Plugin’
Bu eklentinin adı. Çalışması için Trivial Plugin dışında bir şeye ayarlamalısınız.
version= (1, 0, 0)
Eklentinin 3-lü demet şeklinde sürümü (majör, minör, düzeltme)
1.10. Calibreyi özelleştirmek
197
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
description= u’Hi\xe7bir \u015fey yapmaz’
Bu eklentinin ne yaptığını anlatan kısa karakter dizisi
author= u’Bilinmeyen’
Eklentinin yazarı
priority= 1
Bir dosya türü için birden fazla eklenti olduğunda, eklentiler azalan öncelikle çalıştırılır örn. yüksek öncelikli eklentiler ilk çalıştırılır. Olabilecek en yüksek öncelik ‘‘sys.maxint‘‘dır. Varsayılan öncelik 1 dir.
minimum_calibre_version= (0, 4, 118)
Bu eklentinin gerektirdiği en eski calibre sürümü
can_be_disabled= True
False ise, kullanıcının bu eklentiyi kapatma şansı olmayacaktır. Dikkatli kullanın.
type= u’Temel’
Eklenti türü. Eklentileri GUI’de kategorize etmek için kullanılır
initialize()
Calibre eklentileri ilklendirildiğinde bir defa çağrılır. Eklentiler yeni bir eklenti eklendiğinde her defasında
yeniden ilklendirilirler. Ayrıca eklenti bir çalışan süreç içinde çalıştırılırsa, kitap ekleme süreci gibi, eklenti
her yeni çalışma süreciyle ilklendirilecektir.
Eklenti zip dosyasından kaynakların çıkarılması gibi tüm eklentiye özel ilklendirmeleri burada yapın. Zip
dosyasına yol self.plugin_path olarak kullanılabilir.
self.site_customization bu noktada kullanılabilir değildir.
config_widget()
Basit karakter dizisi temelli varsayılan özelleştirmeye güvenmek yerine bu metodu ve
save_settings() (sayfa 198) metodunu eklentinizde uygulayarak özel bir yapılandırma iletişim penceresi kullanın.
Bu metod, eğer uygulanırsa, bir QWidget döndürmelidir. Parçacık isteğe bağlı olarak bağımsız değişken almayan bir validate() metoduna sahip olabilir ve kullanıcı Tamama tıklayınca anında çağrılır. Değişiklikler
yalnızca metod True döndürürse uygulanır.
Bir sebepten bu aşamada yapılandırma yapamazsanız, iki karakter dizisi içeren bir demet döndürün (ileti,
detaylar), bunlar kullanıcıya uyarı penceresi olarak gösterilir ve süreç iptal edilir.
save_settings(config_widget)
Kullanıcı tarafından config_widget ile belirtilen ayarları kaydet.
Parametreler config_widget – config_widget() (sayfa 198) tarafından döndürülen
parçacık.
do_user_config(parent=None)
Bu metod bu eklenti için bir yapılandırma iletişim penceresi gösterir. Kullanıcı Tamama tıklarsa True,
yoksa False döndürür. Değişiklikler otomatik olarak uygulanır.
load_resources(names)
Bu eklenti bir ZIP dosyasıyla gelirse (kullanıcı tarafından eklenmiş eklenti), bu metod ZIP dosyasından
kaynakları yüklemenizi sağlar.
Örneğin bir resmi yüklemek için:
=
{}=
{}@default
=0=1=2=0=1=2
\PYG{n}{pixmap} \PYG{o}{=} \PYG{n}{QPixmap}\PYG{p}{(}\PYG{p}{)}
\PYG{n}{pixmap}\PYG{o}{.}\PYG{n}{loadFromData}\PYG{p}{(}\PYG{n+nb+bp}{self}\PYG{o}{
\PYG{n}{icon} \PYG{o}{=} \PYG{n}{QIcon}\PYG{p}{(}\PYG{n}{pixmap}\PYG{p}{)}
198
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Parametreler names – / ayraç olarak kullanılmak üzere zip dosyasındaki kaynakların yollarının
listesi
Dönüş değeri: {isim: dosya_içerikleri} şeklinde bir sözlük. Zip dosyasında bulunmayan isimler sözlükte olmayacaktır.
customization_help(gui=False)
Bu eklentinin nasıl özelleştirileceği konusunda yardım veren bir metin. Varsayılan olarak
NotImplementedError yükseltilir, bu da eklentinin özelleştirmeye ihtiyaç duymadığı anlamına
gelir.
Bu metodu alt sınıflarınızda yeniden uyguluyorsanız, kullanıcıdan bu eklenti için özelleştirme olarak kullanılacak bir karakter dizisi girmesi istenir. Özelleştirme karakter dizisi self.site_customization
olarak kullanılabilir olacaktır.
Site özelleştirmesi herşey olabilir, örneğin kullanıcının bilgisayarındaki bir ikiliğin yolu.
Parametreler gui – True ise HTML yardımı döndür, yoksa düz metin yardımı.
temporary_file(suffix)
Sistemde geçici bir dosya olan dosya-benzeri nesneyi döndür. Bu dosya kapandıktan sonra bile kullanılabilir olur ve yalnızca yorumlayıcı kapandığında silinir. Oluşturulan geçici dosyanın tam yoluna erişmek
için dönen nesnenin name metodunu kullanın.
Parametreler suffix – Geçici dosyanın son eki.
cli_main(args)
Bu metod eklentinizin komut satırı arayüzü için ana giriş noktasıdır. Kullanıcı calibre-debug -r “Eklenti
İsmi” girdiğinde çağrılır. Bağımsız değişkenler args değişkenine mevcuttur.
FileTypePlugin
class calibre.customize.FileTypePlugin(plugin_path)
Taban: calibre.customize.Plugin (sayfa 197)
Belirli bir dosya türü kümesiyle ilişkili eklenti.
file_types= set([])
Bu eklentinin çalışması gereken dosya türü kümesi. Örneğin: {’lit’, ’mobi’, ’prc’}
on_import= False
True ise, bu eklenti kitaplar veri tabanına eklendiğinde çalışır
on_postimport= False
If True, this plugin is run after books are added to the database. In this case the postimport and postadd
methods of the plugin are called.
on_preprocess= False
True ise, bu eklenti dönüştürme öncesi çalışır
on_postprocess= False
True ise, bu eklenti dönüştürme çıktı eklentisi tarafından üretilen son dosyanın dönüştürmesi sonrası çalışır.
run(path_to_ebook)
Eklentiyi çalıştır. Alt sınıflarda uygulanmalıdır. E-kitapta gerekli tüm değişiklikleri yapıp değiştirilmiş ekitaba mutlak yolu döndürmelidir. Herhangi bir değişiklik gerekmiyorsa, asıl e-kitaba yolu döndürmelidir.
Bir hatayla karşılaşılırsa bir Exception yükseltmelidir. Varsayılan uygulaması basitçe asıl e-kitaba yolu
döndürür.
Değiştirilmiş e-kitap dosyası temporary_file() metoduyla oluşturulmalıdır.
1.10. Calibreyi özelleştirmek
199
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Parametreler path_to_ebook – E-kitaba mutlak yol.
Dönüş değeri: Değiştirilmiş e-kitaba mutlak yol.
postimport(book_id, book_format, db)
Called post import, i.e., after the book file has been added to the database. Note that this is different from
postadd() (sayfa 200) which is called when the book record is created for the first time. This method is
called whenever a new file is added to a book record. It is useful for modifying the book record based on
the contents of the newly added file.
Parametreler
• book_id – Eklenen kitabın veri tabanı kimliği.
• book_format – Eklenen kitabın dosya türü.
• db – Kitaplık veri tabanı.
postadd(book_id, fmt_map, db)
Called post add, i.e. after a book has been added to the db. Note that this is different from postimport()
(sayfa 200), which is called after a single book file has been added to a book. postadd() is called only when
an entire book record with possibly more than one book file has been created for the first time. This is
useful if you wish to modify the book record in the database when the book is first added to calibre.
Parametreler
• book_id – Eklenen kitabın veri tabanı kimliği.
• fmt_map – Map of file format to path from which the file format was added. Note that
this might or might not point to an actual existing file, as sometimes files are added as
streams. In which case it might be a dummy value or an on-existent path.
• db – Library database
Metadata eklentileri
class calibre.customize.MetadataReaderPlugin(*args, **kwargs)
Taban: calibre.customize.Plugin (sayfa 197)
Bir dosya türü kümesinden metadata okumayı uygulayan bir eklenti.
file_types= set([])
Bu eklentinin çalıştırılacağı dosya türü kümesi, Örneğin: set([’lit’, ’mobi’, ’prc’])
get_metadata(stream, type)
Akış tarafından temsil edilen dosya için metadata döndür (okumayı destekleyen dosya benzeri bir nesne). Girdi verisiyle ilgili bir hata olduğunda bir istisna yükselt. :param type:
Dosya türü. file_types (sayfa 200) içindeki girdilerden biri olması garantidir. :return: Bir
calibre.ebooks.metadata.book.Metadata nesnesi
class calibre.customize.MetadataWriterPlugin(*args, **kwargs)
Taban: calibre.customize.Plugin (sayfa 197)
Bir dosya türü kümesinden metadata okumayı uygulayan bir eklenti.
file_types= set([])
Bu eklentinin çalıştırılacağı dosya türü kümesi, Örneğin: set([’lit’, ’mobi’, ’prc’])
set_metadata(stream, mi, type)
Akış ile temsil edilen dosya için metadata ayarla (okumayı destekleyen dosya benzeri bir
nesne). Girdi verisiyle ilgili bir hata olduğunda bir istisna yükselt. :param type: Dosya
200
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
türü. file_types (sayfa 200) içindeki girdilerden biri olması garantidir. :param mi: Bir
calibre.ebooks.metadata.book.Metadata nesnesi
Katalog eklentileri
class calibre.customize.CatalogPlugin(plugin_path)
Taban: calibre.customize.Plugin (sayfa 197)
Bir katalog üreteci uygulayan eklenti.
file_types= set([])
Bu eklentinin çalıştırılacağı çıktı dosya türü, Örneğin: ‘epub’ veya ‘xml’
cli_options= []
Bu eklentiye özel CLI ayrıştırıcı seçenekleri, namedtuple Option ile belirtilir:
=
{}=
{}@default
=0=1=2=0=1=2
from collections import namedtuple
Option = namedtuple(\PYGZsq{}Option\PYGZsq{}, \PYGZsq{}option, default, dest, help\
cli\PYGZus{}options = [Option(\PYGZsq{}\PYGZhy{}\PYGZhy{}catalog\PYGZhy{}title\PYGZ
default = \PYGZsq{}My Catalog\PYGZsq{},
dest = \PYGZsq{}catalog\PYGZus{}title\PYGZsq{},
help = (\PYGZus{}(\PYGZsq{}Title of generated catalog. \PYGZbs
\PYGZsq{}\PYGZpc{}default\PYGZsq{} + \PYGZdq{}\PYGZsq{}\PYGZdq
cli\PYGZus{}options parsed in library.cli:catalog\PYGZus{}option\PYGZus{}parser()
initialize()
Eklenti dahili değilse, eklentinin .ui ve .py dosyalarını zip dosyasından $TMPDIR’e kopyala. Sekme dinamik olarak oluşturulup calibre.gui2.dialogs.catalog.py:Catalog içindeki Katalog Seçenekleri iletişim penceresine eklenecektir
run(path_to_output, opts, db, ids, notification=None)
Eklentiyi çalıştır. Alt sınıflarda uygulanmalıdır. file_types’da belirtilen biçimde kataloğu üretmelidir, ve
üretilen katalog dosyasına mutlak yolu döndürmelidir. Bir hataya rastlanırsa bir Exception yükseltmelidir.
Üretilen katalog dosyası temporary_file() metoduyla oluşturulmalıdır.
Parametreler
• path_to_output – Üretilen katalog dosyasına mutlak yol.
• opts – Anahtar kelime değişkenlerinden oluşan bir sözlük
• db – Bir LibraryDatabase2 nesnesi
Metadata indirme eklentileri
class calibre.ebooks.metadata.sources.base.Source(*args, **kwargs)
Taban: calibre.customize.Plugin (sayfa 197)
capabilities= frozenset([])
Bu eklenti tarafından desteklenen yetenek kümesi. Kullanışlı yetenekler: ‘identify’, ‘cover’
touched_fields= frozenset([])
Bu eklenti tarafından tanımlama aşamasında indirilebilme potansiyeline sahip metadata alanları listesi
has_html_comments= False
Eklentiniz HTML biçimli yorumlar döndürüyorsa bunu True olarak ayarlayın
1.10. Calibreyi özelleştirmek
201
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
supports_gzip_transfer_encoding= False
Bunu True olarak ayarlamak tarayıcı nesnesinin tüm isteklere Accept-Encoding: gzip eklemesi demektir.
Bu indirmeleri hızlandırabilir ama önce kaynağın gerçekten de gzip aktarım kodlamasını desteklediğinden
emin olun
cached_cover_url_is_reliable= True
Zulalanan kapak URL’leri bazen güvenilmez olabilir (örn. indirme başarısız olabilir veya döndürülen resim
sahte olabilir). Bu kaynak için durum genellikle buysa False olarak ayarlayın
options= ()
Option nesneleri listesi. Bu eklenti için otomatik olarak yapılandırma parçacığı inşa etmek için kullanılacaklar
config_help_message= None
Bu eklenti için ayar penceresinin üstünde gösterilecek bir karakter dizisi
can_get_multiple_covers= False
True ise bu kaynak verilen sorgu için birden çok kapak döndürebilir
auto_trim_covers= False
True olarak ayarlıysa bu eklenti tarafından indirilen kapaklar otomatik olarak düzeltilir.
prefer_results_with_isbn= True
True olarak ayarlanırsa, ve bu kaynak bir sorgu için bazılarında ISBN’ler olan bazılarında olmayan birden
çok sonuç döndürüyorsa, ISBN olmayan sonuçlar göz ardı edilir
is_configured()
Eklentinizin kullanılmadan önce yapılandırılması gerekiyorsa False döndür. Örneğin bir kullanıcı
adı/parola/API anahtarına ihtiyaç duyuyor olabilir.
get_author_tokens(authors, only_first_author=True)
Bir yazar listesi al ve bir AND arama sorgusu için kulanışlı olacak jeton listesi döndür. Bu fonksiyon ilk
ad göbek adı soyad sırasında jeton döndürmeye çalışır, yazar isminde bir virgül varsa, ismin soyad, diğer
ad biçiminde olduğunu farz eder.
get_title_tokens(title, strip_joiners=True, strip_subtitle=False)
Bir başlık al ve bir AND arama sorgusu için kullanışlı jeton listesi döndür. Bağlaç(isteğe bağlı) ve noktalama işaretleri hariç.
split_jobs(jobs, num)
Bir iş listesini olabildiğince eşit şekilde en fazla num gruba ayır
test_fields(mi)
self.touched_files’dan mi nesnesinde null olan ilk alanı döndür
clean_downloaded_metadata(mi)
Bu metodu eklentinizin tanımlama metodunda Metadata nesnesini result_queue’ye koymadan önce metadata’yı normalleştirmek için çağırın. Tabi ki metadata kaynağınıza uygun özel bir algoritma da kullanabilirsiniz.
get_book_url(identifiers)
Bir 3-demet veya None döndür. 3-demet şu biçimdedir: (tanımlayıcı_türü, tanımlayıcı_değeri, URL). URL
bu kaynaktaki tanımlayıcılar tarafından tanımlanan kitabın URL’sidir. tanımlayıcı_türü, tanımlayıcı_değeri
URL ile ilişkili tanımlayıcıya karşılık gelir. Bu URL bir insanın tarayıcıyla gezebileceği bir URL olmalıdır.
Kullanıcı için bu kaynaktaki kitapların sayfalarını kolayca gezebileceği bir bağlantı olması amacını taşır.
URL bulunamazsa, None döndürür. Bu metod hızlı, tutarlı olmalıdır, yani yalnızca URL’yi tanımlayıcıları
verilen bilinen bir plandan oluşturulacaksa uygulayın.
get_book_url_name(idtype, idval, url)
get_book_url()’nin döndürdüğü değerden okunabilir bir isim döndür.
202
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
get_book_urls(identifiers)
Bu kitap için birden fazla url döndürmek isterseniz bu metodun üzerine yazın. 3’lü demet listesi döndürür.
Varsayılan olarak bu metod basitçe get_book_url() (sayfa 202) çağırır.
get_cached_cover_url(identifiers)
Tanımlayıcılar sözlüğünce tanımlanan kitap için zulalanmış kapak URL’sini veya böyle bir URL yoksa
None döndür.
Bu metodun yalnızca doğrulanmış URL’ler döndürmesi gerektiğine dikkat edin, örn. genel kapak resmi
veya bulunamadı hatasına yol açacak URL’ler olmamalı.
identify_results_keygen(title=None, authors=None, identifiers={})
Bir arama sorgusu (başlık, yazarlar, tanımlayıcılar) alarak Metadata nesnelerini sıralamaya yarayacak bir
anahtar üretmeye yarayan bir fonksiyon döndür.
Bu anahtarlar identify() (sayfa 203) çağrısı sonucunu sıralamaya yarar.
Varsayılan algoritma detayları için bknz InternalMetadataCompareKeyGen (sayfa 204). Varsayılan algoritma uygun değilse bu fonksiyonu tekrar uygulayın.
identify(log, result_queue, abort, title=None, authors=None, identifiers={}, timeout=30)
Bir kitabı başlık/yazar/isbn/vs. özelliğine göre tanımla
Tanımlayıcı(lar) belirtilmiş ve bir eşleşme bulunamamışsa ve bu metadata kaynağı ilgili tüm tanımlayıcılar
kaydetmemişse (örneğin, bir kitabın tüm ISBN’leri), bu metod sadece başlık ve yazar (belirtildiklerini farz
ederek) ile tekrar denemelidir.
Bu metadata kaynağı kapak da sağlıyorsa, kapağın URL’si kapak getirme API’si ile tekrar tekrar aynı
ISBN/özel tanımlayıcı çağrısı yapıldığında getirilmek zorunda kalınmasın diye zulalanmalıdır. Zulalama
API’sini bunun için kullanın.
Bu metod tarafından result_queue’ya konan her Metadata nesnesinin bu sorgu için metadata kaynağınca
döndürülen sonuçların sırasını belirten bir tamsayı olan source_relevance özniteliği olmalıdır. Bu tam sayı
compare_identify_results() tarafından kullanılacaktır. Sıra önemli değilse, tüm sonuçlar için
sıfır olarak ayarlayın.
Metadata nesnesi result_queue’ya konmadan önce tüm kapak/isbn haritalama bilgisinin zulalandığından
emin ol.
Parametreler
• log – Bir sistem günlüğü nesnesi, hata ayıklama bilgisi/hatası çıktılamak için kullanın
• result_queue – Bir sonuç Kuyruğu, sonuçlar buna koyulmalı. Her sonuç bir Metadata
nesnesidir
• abort – Eğer abort.is_set() True döndürürse, işlemeyi durdur ve en kısa sürede dön
• title – Kitabın başlığı, None olabilir
• authors – Kitap için yazarlar listesi, None olabilir
• identifiers – Diğer tanımlayıcıları içeren bir sözlük, en yaygın şekliyle
{‘isbn’:‘1234...’}
• timeout – Saniye cinsinden zaman aşımı, hiçbir ağ isteği zaman aşımından uzun sürmemeli.
Dönüş değeri: Hataya rastlanmadıysa None, aksi halde hatanın kullanıcıya gösterilebilecek evrensel kodda temsili
1.10. Calibreyi özelleştirmek
203
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
download_cover(log, result_queue, abort, title=None, authors=None, identifiers={}, timeout=30,
get_best_cover=False)
Bir kapak indir ve result_queue’ya koy. Parametreler identify() (sayfa 203) metodundakiyle aynı
anlamdadırlar. (self, cover_data)’yı result_queue’ya koy.
Bu metod verimlilik için uygun olan her durumda zulalanmış kapak URL’lerini kullanmalıdır. Zulalı veri
olmadığında, çoğu eklenti identify’ı çağırır ve onun sonuçlarını kullanır.
get_best_cover parametresi True ise ve bu eklenti birden çok kapak alabiliyorsa, yalnızca “en iyi” olanı
almalı.
class calibre.ebooks.metadata.sources.base.InternalMetadataCompareKeyGen(mi,
source_plugin,
title,
authors,
identifiers)
Bir arama sorgusu verildiğinde, Metadata nesnelerinin uygunluğunun karşılaştırması için bir sıralama anahtarı
üret. Bu yalnızca aynı metadata kaynağından gelen sonuçları karşılaştırmak için kullanılır, farklı kaynaklar
arasında değil.
Arama anahtarı artan sırada sıralamanın azalan uygunluk sırasında sıralama olduğundan emin olur.
Algoritma:
•Sorguda olduğu gibi en az bir tanımlayıcısı olan sonuçları tercih et
•Zulalanmış kapak URL’si olan sonuçları tercih et
•Kullanılabilir alanların hepsi dolu olan sonuçları tercih et
•Mevcut kullanıcı arayüzüyle aynı dilde olan sonuçları tercih et
•Sorguyla başlığı birebir eşleşen sonuçları tercih et
•Daha uzun yorumlu sonuçları tercih et (%10 uzunluktan fazlası)
•Sonucun uygunluğunu metadata kaynağının aramasından gelen rapor olarak kullan motor
Dönüştürme eklentileri
class calibre.customize.conversion.InputFormatPlugin(*args)
Taban: calibre.customize.Plugin (sayfa 197)
InputFormatPlugins bir belgeyi HTML+OPF+CSS+vs. ye dönüştürmekle sorumludurlar. Dönüştürmenin sonuçları UTF-8 ile kodlanmış olmak zorundadır. Esas olay convert() (sayfa 205) içinde gerçekleşir.
file_types= set([])
Bu eklentinin çalışacağı dosya türü kümesi. Örneğin: set([’azw’, ’mobi’, ’prc’])
is_image_collection= False
True ise, bu girdi eklentisi HTML dosyası başına bir resim koleksiyonu üretir. Bu, dönüştürme metodunda,
girdi dosyaları hem resim koleksiyonları hem resim olmayan koleksiyonlar olabiliyorsa dinamik olarak
ayarlanabilir. True olarak ayarlarsanız, resim listesi döndüren get_images() metodunu uygulamalısınız.
core_usage= 1
Bu eklenti tarafından kullanılan CPU çekirdekleri. -1 değeri kullanılabilir tüm çekirdeklerin kullanılacağı
anlamına gelir
204
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
for_viewer= False
True olarak ayarlanırsa, girdi eklentisi çıktısını görüntülemeye uygun hale getirmek için özel işlemden
geçirir
output_encoding= ‘utf-8’
Bu girdi eklentisinin dosyaları içinde oluşturduğu kodlama. None değeri kodlamanın belirtilmemiş olduğunu ve bağımsız şekilde algılanması gerektiğini belirtir
common_options= set([<calibre.customize.conversion.OptionRecommendation object at 0x7f0233f68110>])
Tüm girdi biçim eklentilerince paylaşılan seçenekler. Alt sınıflarda ezmeyin. Bunun yerine options
(sayfa 205) kullanın. Her seçenek bir OptionRecommendation örneği olmalıdır.
options= set([])
Bu eklentinin davranışını özelleştirecek seçenekler. Tüm seçenekler OptionRecommendation örneği
olmalıdırlar.
recommendations= set([])
(seçenek_ismi, önerilen_değer, önerilen_seviye) biçiminde 3’lü demet kümesi
get_images()
Bu eklenti bir resim koleksiyonunu destekliyorsa, resimlere mutlak yol listesini döndür. Resim listesi
omurga ve İçindekiler ile aynı sıradadır.
convert(stream, options, file_ext, log, accelerators)
Bu metod alt sınıflarda uygulanmalıdır. Oluşturulan OPF dosyasına yolu veya bir OEBBook örneği döndürmelidir. Tüm çıktı mevcut dizinde içerilmelidir. Bu eklenti mevcut dizin dışında bir yerde dosya oluşturuyorsa bunların metod dönmeden önce silinmesi/silme için işaretlenmesi gerekir.
Parametreler
• stream – Girdi dosyasını içeren dosya benzeri nesne.
• options – Dönüştürme sürecini özelleştirecek seçenekler. Bu eklentice bildirilen tüm seçeneklere karşılık gelen özniteliklere sahip olacağı garantidir. Ek
olarak, tamamlayıcı değerleri sıfırdan yukarı doğru alan ayrıntılı bir özniteliği olacaktır. Yüksek sayılar daha ayrıntılı demektir. Kullanışlı başka bir öznitelik de calibre.customize.profiles.InputProfile örneği olan
input_profile özniteliğidir.
• file_ext – Girdinin uzantısı (. olmadan). Bu eklentice desteklenen dosya_türlerinden
biri olması garantidir.
• log – calibre.utils.logging.Log nesnesi. Tüm çıktı bu nesneyi kullanmalı.
• accelarators – Girdi eklentisinin kolayca alabileceği, dönüştürmenin sonraki aşamalarını hızlandıracak olan çeşitli bilgileri içeren sözlük.
postprocess_book(oeb, opts, log)
Girdi eklentisinin kitap ayrıştırıldıktan sonra işlem yapmasına izin vermek için çağrılır.
specialize(oeb, opts, log, output_fmt)
Girdi eklentisinin ayrıştırılan kitabı belli çıktı biçimine özelleştirmesine izin vermek için çağrılır. Ayrıştırılan kitaba herhangi dönüştürme yapılmadan önce postprocess_book’dan sonra çağrılır.
gui_configuration_widget(parent, get_option_by_name, get_option_help, db, book_id=None)
Bu eklentiyi calibre grafik arayüzünde yapılandırmaya yarayan pencereyi oluşturmak için çağrılır. Pencere
PluginWidget sınıfından olmalıdır. Örnekler için dahili girdi eklentilerine göz atın.
class calibre.customize.conversion.OutputFormatPlugin(*args)
Taban: calibre.customize.Plugin (sayfa 197)
OutputFormatPlugins bir OEB belgesini (OPF+HTML) bir e-kitap çıktısına dönüştürmekle sorumludurlar.
1.10. Calibreyi özelleştirmek
205
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
OEB belgesinin UTF-8 ile kodlanmış olduğu varsayılabilir. Ana olay convert() (sayfa 206) içinde gerçekleşir.
file_type= None
Bu eklentinin çıktıladığı dosya türü (noktasız son ek)
common_options= set([<calibre.customize.conversion.OptionRecommendation object at 0x7f0233f68290>])
Tüm girdi biçim eklentilerince paylaşılan seçenekler. Alt sınıflarda ezmeyin. Bunun yerine options
(sayfa 206) kullanın. Her seçenek bir OptionRecommendation örneği olmalıdır.
options= set([])
Bu eklentinin davranışını özelleştirecek seçenekler. Tüm seçenekler OptionRecommendation örneği
olmalıdırlar.
recommendations= set([])
(seçenek_ismi, önerilen_değer, önerilen_seviye) biçiminde 3’lü demet kümesi
convert(oeb_book, output, input_plugin, opts, log)
oeb_book içeriğini (calibre.ebooks.oeb.OEBBook örneğidir) çıktı ile belirtilen dosyaya gerçekle.
Parametreler
• output – Dosya benzeri bir nesne veya karakter dizisi. Karakter dizisi ise var olan veya
olmayan bir dizine yoldur. Çıktı eklentisi çıktıyı bu dizine yazmalıdır. Dosya benzeri nesne
ise, çıktı eklentisi çıktısını dosyaya yazmalıdır.
• input_plugin – Dönüştürme boru hattının başında kullanılan girdi eklentisi.
• opts – Dönüştürme seçenekleri. Bu eklentinin SeçenekÖnerilerine karşılık gelen öznitelikleri içermesi garantidir.
• log – Günlük kaydedici. Hata ayıklama/bilgi vs. iletilerini bunu kullanarak yazdırın.
specialize_css_for_output(log, opts, item, stylizer)
CSS düzleme işleminden sonra css’e değişiklik yapmak için kullanılabilir.
Parametreler
• item – İşlenen öğe (HTML dosyası)
• stylizer – Öğe için düzleştirilmiş biçemleri içeren Stylizer nesnesi. Herhangi bir öğenin biçemini stylizer.style(öğe) ile alabilirsiniz.
gui_configuration_widget(parent, get_option_by_name, get_option_help, db, book_id=None)
Bu eklentiyi calibre GUI’sinde yapılandırmak için kullanılan parçacığı oluşturmak için çağrılır. Parçacık
bir PluginWidget sınıfı örneği olmalıdır. Örnekler için dahili çıktı eklentilerine göz atın.
Aygıt Sürücüleri
Tüm aygıt sürücüleri için taban sınıf DevicePlugin (sayfa 206) dir. Ancak aygıtınız kendisini işletim sistemine
USBMS sürücüsü olarak gösteriyorsa bu tür cihazları destekeleyecek her türlü mantığı uyguladığından USBMS sınıfını kullanmalısınız.
class calibre.devices.interface.DevicePlugin(plugin_path)
Taban: calibre.customize.Plugin (sayfa 197)
Artalanlarca uygulanması gereken, bir e-kitap okuyucu ile iletişim kurmaya yarayan arayüzü tanımlar.
FORMATS= [’lrf’, ‘rtf’, ‘pdf’, ‘txt’]
Desteklenen biçimlerin sıralı listesi
206
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
VENDOR_ID= 0
VENDOR_ID bir tam sayı, tamsayı listesi veya sözlük olabilir. Bir sözlükse, sözlüklerin sözlüğü olmalıdır,
şu şekilde:
=
{}=
{}@default
=0=1=2=0=1=2
\PYGZob{}
integer\PYGZus{}vendor\PYGZus{}id : \PYGZob{} product\PYGZus{}id : [list of BCDs],
...
\PYGZcb{}
PRODUCT_ID= 0
Bir tam sayı veya tam sayı listesi
BCD= None
BCD BCD tabanlı aygıtlar arasında ayrı kalmaması için None olabilir, veya bu sürücü tarafından desteklenen tüm aygıtların BCD numaralarından oluşan liste olabilir.
THUMBNAIL_HEIGHT= 68
Küçük resimlerin aygıttaki yüksekliği
THUMBNAIL_COMPRESSION_QUALITY= 75
Küçük resimlerin aygıttaki genişliği. Bunu ayarlamak küçük resimleri bu boyutta olmaya zorlar, en-boy
oranını korumaz. Ayarlanmamışsa, en-boy oranı korunur ve küçük resim THUMBNAIL_HEIGHT’dan
yüksek olamaz. Küçük resimler için sıkıştırma kalitesi. Bunu 100’e yakın tutarak daha kaliteli ve daha az
sıkıştırma kalıntılı küçük resimler elde edebilirsiniz. Tabi ki küçük resimler büyüyecektir.
WANTS_UPDATED_THUMBNAILS= False
Aygıt sync_booklists sırasında kapak küçük resimlerini güncellemeye izin veriyorsa bunu True olarak
ayarlayın. True olarak ayarlamak kitap eşleştirme sırasında device.py’ye kapak küçük resimlerini güncellemesini söyler
CAN_SET_METADATA= [’title’, ‘authors’, ‘collections’]
Kitaplardaki metadata’nın GUI ile ayarlanıp ayarlanamayacağı.
CAN_DO_DEVICE_DB_PLUGBOARD= False
Aygıtın device_db metadata santralini ele alıp alamayacağı
path_sep= ‘/’
Bu aygıttaki kitaplara olan yollar için yol ayracı
icon= ‘/home/kovid/work/calibre/resources/images/reader.png’
Bu aygıt için simge
UserAnnotation
şunun takma adı: Annotation
OPEN_FEEDBACK_MESSAGE= None
GUI bunu None değilse bir ileti olarak gösterir. Açma uzun sürüyorsa kullanışlıdır
VIRTUAL_BOOK_EXTENSIONS= frozenset([])
Aygıtta “sanal kitap” olan ve bu yüzden kitaplıkta görüntülenemeyen/kaydedilemeyen/eklenemeyen eklentiler kümesi. Örneğin: frozenset([’kobo’])
VIRTUAL_BOOK_EXTENSION_MESSAGE= None
Message to display to user for virtual book extensions.
NUKE_COMMENTS= None
Kitabın aygıta yollanan kopyasında yorumlar tamamen silinsin mi. None değilse bunun yorumların değiştirileceği kısa bir metin olması gerekir.
1.10. Calibreyi özelleştirmek
207
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
MANAGES_DEVICE_PRESENCE= False
True ise bu aygıtın aygıt algılamayı, çıkarmayı vs. tamamen yönettiğini gösterir. Bunu True olarak ayarlarsanız, detect_managed_devices ve debug_managed_device_detection metodlarını kesinlikle uygulamalısınız. Bunun true olarak ayarlandığı bir sürücü aygıtların algılanması, aygıtların kara listesinin yönetilmesi,
çıkarılan aygıtların listesi ve benzeri işlerden sorumludur. calibre aralıklarla detect_managed_devices()
metodunu çağırır ve algılanan bir aygıt döndürürse, calibre open() çağırır. open() önceki çağrılar başarısız
olsa bile bir aygıt dönerse her zaman çağrılır, yani sürücü başarısız olunan aygıtların listesini kendisi tutmalıdır. Benzer şekilde, çıkarma durumunda, calibre eject() çağırır ve sonraki detect_managed_devices()
çağrısının None döndüğünü var sayarsak, post_yank_cleanup() çağıracaktır.
SLOW_DRIVEINFO= False
True olarak ayarlandıysa, calibre kitap listeleri yüklendikten sonra sürücü bilgisi almak için
get_driveinfo() (sayfa 209) çağıracaktır.
ASK_TO_ALLOW_CONNECT= False
True olarak ayarlandıysa, calibre kullanıcıya aygıt ilk kez algılandığında aygıtı calibre ile yönetip isteyip istemediğini sorar. Bunu True olarak ayarlarsanız get_device_uid() (sayfa 212)
ve ignore_connected_device() (sayfa 212) ve get_user_blacklisted_devices()
(sayfa 212) ve set_user_blacklisted_devices() (sayfa 212) uygulamalısınız
user_feedback_after_callback= None
Bazı geri çağrılar çalıştırıldıktan sonra (şu an yalnızca upload_books) calibre’nin bir ileti penceresi açmasını sağlamak için bunu {‘title’:başlık, ‘msg’:ileti, ‘det_msg’:detaylı_ileti} biçiminde bir sözlük olarak
ayarlayın. Kullanıcıyı bir sürü ileti ile sıkmamaya dikkat edin. Bu değişken her geri çağrıdan sonra kontrol
edilir, yalnızca gerçekten ihtiyacınız olduğunda ayarlayın.
is_usb_connected(devices_on_system, debug=False, only_presence=False)
Bu eklenti ile ele alınan bir aygıt hali hazırda bağlıysa True, device_info döndür.
Parametreler devices_on_system – Hali hazırda bağlı olan aygıtlar
detect_managed_devices(devices_on_system, force_refresh=False)
Yalnızca MANAGES_DEVICE_PRESENCE True ise çağrılır.
Bu sürücünün ele alabileceği aygıtları tara. Bir aygıt bulunursa aygıt nesnesi döndürmelidir. Bu nesne
open() metoduna connected_device olarak geçirilir. Aygıt bulunamazsa, None döndürür. Döndürülen nesne
herşey olabilir, calibre bu nesneyi kullanmaz, sadece open()’a geçirilir.
Bu metod GUI tarafından aralıklarla çağrılır, fazla kaynak tüketmediğinden emin olun. Sistemi tekrar
tekrar taramaktan kaçınmak için bir zula kullanın.
Parametreler
• devices_on_system – Sistemde bulunan USB aygıtları kümesi.
• force_refresh – True ise ve sürücü tekrar taramalardan kaçınmak için zula kullanıyorsa, zula temizlenmelidir.
debug_managed_device_detection(devices_on_system, output)
Yalnızca MANAGES_DEVICE_PRESENCE True ise çağrılır.
Sistemde algılanan sürücüler hakkında bilgiyi dosya benzeri bir nesne olan çıktıya yazmalıdır.
Bir aygıt algılanmış ve başarıyla açılmışsa True, aksi halde False döndürmelidir.
reset(key=’-1’, log_packets=False, report_progress=None, detected_device=None)
Parametreler
• key – Aygıtın kilidini açacak tuş
• log_packets – True ise aygıta giden/aygıttan gelen paket akışı kaydedilir
208
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
• report_progress – % süreciyle çeşitli işler için çağrılan fonksiyon (sayı 0 ve 100
arasında) -1 ile çağrılırsa işin süreç bilgisi olmadığı anlamına gelir
• detected_device – Aygıt tarayıcıdan gelen aygıt bilgisi
can_handle_windows(device_id, debug=False)
Bu sürücünün ele alıp alamayacağını görmek için aygıt üstünde ek kontroller yapan isteğe bağlı metod.
Ele alamayacaksa False döndürmelidir. Bu metod yalnızca satıcı, ürün kimlikleri ve bcd eşleştikten sonra
çağrılır, yani göreceli olarak zamana bağlı kontroller yapabilir. Varsayılan uygulaması True döndürür. Bu
metod yalnızca windows üstünde çağrılır. Ayrıca bakınız can_handle() (sayfa 209).
Parametreler device_info – Windows’da bir aygıt kimliği karakter dizisi. Unix’de
(satıcı_kimliği, ürün_kimliği, bcd) demeti.
can_handle(device_info, debug=False)
can_handle_windows() (sayfa 209) in Unix sürümü
Parametreler device_info – (vid, pid, bcd, imalatçı, ürün, seri numarası) demeti
open(connected_device, library_uuid)
Tüm aygıta özel ilklendirmeleri yap. Aygıt algılandıktan sonra ama aygıtla iletişim kuran diğer fonksiyonlardan önce çağrılır. Örneğin: Kendilerini USB depolama aygıtı olarak tanıtan aygıtlarda, bu metod aygıtı bağlamakla veya aygıt otomatik bağlandıysa, nereye bağlandığını öğrenmekle sorumlu olur.
calibre.devices.usbms.device.Device.open() metodunun bu fonksiyonun USB depolama aygıtlarıyla ilgili iyi bir örnek olacak uygulaması vardır.
Bu metod kullanıcıya bir ileti göstermek için bir OpenFeedback istisnası yükseltebilir.
Parametreler
• connected_device – Açmaya çalıştığımız aygıt. (satıcı kimliği, ürün kimliği, bcd,
üretici ismi, ürün ismi, aygıt seri numarası) demeti. Ancak bazı aygıtların seri numarası
yoktur ve windows üstünde yalnızca ilk üç alan mevcuttur, geri kalanı None’dir.
• library_uuid – Mevcut calibre kitaplığının UUID’si. Bir kitaplık yoksa None olabilir
(örneğin komut satırından kullanıldığında).
eject()
Aygıtın işletim sisteminden bağını ayır/çıkart. Bu aygıtla iletişim kurmaya çalışan GUI işlerinin olup olmadığını kontrol etmez.
NOT: Bu metod diğer aygıt metodlarıyla aynı iş ipliğinde çağrılamayabilir.
post_yank_cleanup()
Kullanıcı aygıtı çıkarmadan birden çektiyse çağrılır.
set_progress_reporter(report_progress)
Süreç bilgisini raporlaması için bir fonksiyon ayarla.
Parametreler report_progress – % süreciyle çeşitli işler için çağrılan fonksiyon (sayı 0
ve 100 arasında) -1 ile çağrılırsa işin süreç bilgisi olmadığı anlamına gelir
get_device_information(end_session=True)
Aygıtı aygıt bilgisi için sorgula. Bknz L{DeviceInfoQuery}.
Dönüş değeri: (aygıt ismi, aygıt sürümü, aygıttaki yazılım sürümü, mime türü) Demet isteğe
bağlı olarak beşinci bir sürücü bilgisi demeti alabilir. Örnek için usbms.driver’a göz atın.
get_driveinfo()
driveinfo sözlüğünü döndür. Genellikle get_device_information() içinden çağrılır, ama bu sürücü için driveinfo yüklenmesi yavaşsa, SLOW_DRIVEINFO’yu ayarlamalıdır. Bu durumda, bu metod calibre tarafından kitap listeleri yüklendikten sonra çağrılır. Bunun aygıt iş ipliğinde çağrılmadığına dikkat edin, yani
sürücü books() metodundaki aygıt bilgisini zulalamalı ve bu fonksiyon zulalanmış veriyi döndürmelidir.
1.10. Calibreyi özelleştirmek
209
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
card_prefix(end_session=True)
Kartlar üstündeki yollara 2 elemanlı ön ek listesi döndür. Herhangi bir kart yoksa kart ön eki olarak None
ayarlanır. ÖRN. (‘/place’, ‘/place2’) (None, ‘place2’) (‘place’, None) (None, None)
total_space(end_session=True)
2 öğeli bir kartlar üstündeki yollara ön ekler listesi döndür. Herhangi bir kart mevcut değilse kart ön eki olarak Non
1. Cihaz hafızası
2. Hafıza Kartı A
3. Hafıza Kartı B
Dönüş değeri: (1, 2, 3) bayt toplam alanlı 3 elemanlı liste. Eğer herhangi bir aygıt bu konumlardan birine sahip değilse 0 döndürmelidir.
free_space(end_session=True)
Bağlantı noktalarında kullanılabilir olan boş alanı al:
1. Cihaz hafızası
2. Kart A
3. Kart B
Dönüş değeri: (1, 2, 3) bayt boş alanlı 3 elemanlı liste. Herhangi bir aygıt bu konumlardan birine
sahip değilse -1 döndürmelidir.
books(oncard=None, end_session=True)
Aygıt üstündeki e-kitapların listesini döndürür.
Parametreler oncard – ‘karta’ veya ‘kartb’ belirtilen hafıza kartındaki e-kitap listesini döndürürse, aksi halde aygıt ana belleğindeki e-kitapların listesini döndürür.Eğer bir kart belirtilmiş
ve kartta hiç kitap yoksa boş liste döndürür.
Dönüş değeri: Bir KitapListesi.
upload_books(files, names, on_card=None, end_session=True, metadata=None)
Bir kitap listesini aygıta yükle. Aygıtta bir dosya zaten varsa, değiştirilmelidir. Bu metod aygıtta yeterli
yer yoksa FreeSpaceError yükseltmelidir. FreeSpaceError’un metni on_card None değilse “card”
kelimesini içermelidir, aksi durumda “memory” kelimesini içermelidir.
Parametreler
• files – Bir yol listesi
• names – Kitapların aygıta yüklendikten sonra sahip olması gereken isimlerin listesi.
len(isimler)== len(dosyalar)
• metadata – None değilse, Metadata nesneleri listesidir. Ana fikir kitabı aygıtta nereye
koyacağını metadata kullanarak belirlemektir. len(metadata)== len(dosyalar). Sıradan kapaktan ayrı olarak (kapağa yol), ayrıca isteğe bağlı kullanılabilecek küçük resim özniteliği
olabilir. Küçük resim özniteliği (genişlik, yükseklik, jpeg olarak kapak verisi) biçimindedir.
Dönüş değeri: 3 elemanlı demetler listesi. Liste add_books_to_metadata() (sayfa 210)
ya geçirilmek üzere düşünülmüştür.
classmethod add_books_to_metadata(locations, metadata, booklists)
Kitaplistelerine konumlar ekle. Bu fonksiyon aygıtla iletişime geçmemelidir.
210
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Parametreler
• locations – L{upload_books} çağrısı sonucu
• metadata – Metadata nesneleri listesi, upload_books() (sayfa 210) için olanın
aynısı.
• booklists – (books(oncard=None)(), books(oncard=’carda’)(), :meth‘books(oncard=’cardb’)
çağrıları sonucunu içeren bir demet.
delete_books(paths, end_session=True)
Aygıtta yollardeki kitapları sil.
classmethod remove_books_from_metadata(paths, booklists)
Kitapları metadata listesinden çıkar. Bu fonksiyon aygıtla iletişime geçmemelidir.
Parametreler
• paths – aygıttaki kitaplara yollar.
• booklists – (books(oncard=None)(), books(oncard=’carda’)(), :meth‘books(oncard=’cardb’)
çağrıları sonucunu içeren bir demet.
sync_booklists(booklists, end_session=True)
Aygıttaki metadata’yı güncelle.
Parametreler booklists
–
(books(oncard=None)(),
books(oncard=’carda’)(), :meth‘books(oncard=’cardb’)‘) çağrıları sonucunu
içeren bir demet.
get_file(path, outfile, end_session=True)
Aygıtta path yolundaki dosyayı oku ve çıktı dosyasına yaz.
Parametreler outfile – sys.stdout benzeri bir dosya nesnesi veya bir open()
(sayfa 209) çağrısı sonucu.
classmethod config_widget()
Bir QWidget döndürmelidir. QWidget aygıt arayüzü için ayarları içerir
classmethod save_settings(settings_widget)
Ayarları diske kaydetmelidir. config_widget() (sayfa 211) içinde oluşturulan parçacığı alır ve tüm
ayarları diske kaydeder.
classmethod settings()
Bir opts nesnesi döndürmelidir. opts nesnesinin aygıt için biçimlerin sıralı listesi olan en az bir format_map
özniteliği olmalıdır.
set_plugboards(plugboards, pb_func)
sürücüye mevcut santral kümesini ve belirli bir santrali seçmek için fonksiyonu sağla. Bu metod add_books
ve sync_booklists’den hemen önce çağrılır.
pb_func şu imzaya sahip bir çağrılabilirdir: def pb_func(aygıt_ismi, biçim, santraller)
Mevcut aygıt ismini (sınıf ismi veya DEVICE_PLUGBOARD_NAME), ilgilendiğiniz biçimi (‘gerçek’
bir biçim veya ‘device_db’), ve santralleri (bu metodu aldığınız yer de olan set_plugboards ile almıştınız)
verirsiniz.
Dönüş değeri: None veya tekli bir santral örneği.
set_driveinfo_name(location_code, name)
Driveinfo dosyasındaki aygıt adını ‘isim’ olarak ayarla. Bu ayar dosya tekrar oluşturulana veya ismi tekrar
değiştirilene kadar kalacaktır.
1.10. Calibreyi özelleştirmek
211
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Disk olmayan aygıtlar bu metodu get_device_information() metodundan dönen konum kodlarını temel
alarak uygulamalıdırlar.
prepare_addable_books(paths)
Bir yol listesi verildiğinde, başka bir yol listesi döndürür. Bu yollar kitapların eklenebilir sürümlerini gösterir.
Bir kitap hazırlanırken hata olursa, bir yol yerine, bu kitap için döndürülen liste içindeki konum üçlü demet
olmalıdır: (asıl_yol, istisna örneği, geri izleme)
startup()
Calibre aygıtı başlatırken çağrılır. Gerekli ilklendirmeleri yapın. Sınıfın birden fazla örneğinin ilklendirilebileceği, yani __init__’in birden çok çağrılabileceğini, ama yalnızca bir örneğinin bu metodu çağıracağını
unutmayın. Bu metod aygıt iş ipliğinde çağrılır, GUI sürecinde değil.
shutdown()
Calibre kapanırken çağrılır, tam kapanırken ya da yeniden başlatılırken. Gerekli temizliği yapın. Bu metod
GUI iş ipliğinde değil aygıt sürecinde çağrılır.
get_device_uid()
Hazırda bağlı olan aygıt için benzersiz bir kimlik döndürmelidir (başarılı open() çağrısından hemen sonra
çağrılır). ASK_TO_ALLOW_CONNECT= True ayarladıysanız bu metodu uygulamalısınız
ignore_connected_device(uid)
Gelecekte uid (get_device_uid() çağrısı sonucu) ile tanımlanan aygıtı göz ardı etmeli.
ASK_TO_ALLOW_CONNECT= True ayarladıysanız bu metodu uygulamalısınız. Bu fonksiyon
open() metodunun hemen ardından çağrılır, yani open() bir durumu zulalarsa, sürücü bu bu durumu
sıfırlamalıdır.
get_user_blacklisted_devices()
Kullanıcının göz ardı edilmesini istediği tüm aygıtlar için aygıt uid’inden okunabilir isme haritayı döndür.
set_user_blacklisted_devices(devices)
Bu sürücü tarafından göz ardı edilmesi gereken aygıt uid listesini ayarla.
specialize_global_preferences(device_prefs)
Aygıtınız belirli bir tercihi ezmek istiyorsa bu metodu uygulayın. Ezilebilir tercih isteyen tüm çağrı sitelerinin prefs[’bir şeyler’] yerine device_prefs[’bir şeyler’] kullandığından emin olmalısınız. Metodunuz
device_prefs.set_overrides(pref=val, pref=val, ...) çağırlmalıdır. Mevcut durumda şunun için kullanılır:
metadata yönetimi (prefs[’manage_device_metadata’])
set_library_info(library_name, library_uuid, field_metadata)
Mevcut calibre kitaplığıyla ilgili bilgi istiyorsanız bu metodu uygulayın. Bu metod açılışta ve bağlıyken
calibre kitaplığı değiştiğinde çağrılır.
is_dynamically_controllable()
Eklentiler başlatılırken aygıt yöneticisi tarafından çağrılır. Bu metod karakter dizisi döndürürse, a) aygıt
yöneticisinin dinamik kontrol ara yüzünü destekler, ve b) bu isim eklentiyle konuşurken kullanılır.
Bu metod GUI sürecinde çağrılabilir. Bu metodu uygulayan bir sürücü iş ipliği güvenliği sağlamalıdır.
start_plugin()
Bu metod eklentiyi başlatmak için çağrılır. Eklenti aygıt bağlantılarını her nasıl yapıyorsa öyle kabul etmeye başlamalıdır. Eklenti zaten bağlantı kabul ediyorsa, bir şey yapma.
Bu metod GUI sürecinde çağrılabilir. Bu metodu uygulayan bir sürücü iş ipliği güvenliği sağlamalıdır.
stop_plugin()
Bu metod eklentiyi durdurmak için çağrılır. Eklenti artık bağlantı kabul etmemeli, ve arkasını temizlemelidir. shutdown’u bu metodun çağırması beklenebilir. Eklenti zaten bağlantı kabul etmiyorsa, bir şey
yapma.
212
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Bu metod GUI sürecinde çağrılabilir. Bu metodu uygulayan bir sürücü iş ipliği güvenliği sağlamalıdır.
get_option(opt_string, default=None)
opt_string tarafından gösterilen seçeneğin değerini döndür. Bu metod eklenti başlatılmadığında çağrılabilir.
Seçenek mevcut değilse None döndür.
Bu metod GUI sürecinde çağrılabilir. Bu metodu uygulayan bir sürücü iş ipliği güvenliği sağlamalıdır.
set_option(opt_string, opt_value)
opt_string tarafından gösterilen seçeneğin değerini ayarla. Bu metod eklenti başlatılmadan çağrılabilir.
Bu metod GUI sürecinde çağrılabilir. Bu metodu uygulayan bir sürücü iş ipliği güvenliği sağlamalıdır.
is_running()
Eklenti başlatıldıysa True döndür, yoksa false
Bu metod GUI sürecinde çağrılabilir. Bu metodu uygulayan bir sürücü iş ipliği güvenliği sağlamalıdır.
synchronize_with_db(db, book_id, book_metadata, first_call)
Aygıttaki bir kitap calibre veri tabanındaki bir kitapla eşleşince kitap eşleştirme sırasında çağrılır. Bu metod
aygıttan calibre veri tabanına (gerekliyse) veri eşzamanlamakla yükümlüdür.
Metod iki değerli bir demet döndürmelidir. İlk değer calibre veri tabanı değiştiyse değişen kitap kimliklerinin kümesi veya değişmediyse None’dir. İlk değer boş bir kümeyse aygıttaki kitap metadata’sı calibre’nin
metadata’sıyla güncellenir ve aygıta geri verilir, ama bu kitabın GUI tazelemesi yapılmaz. Calibre verisi
doğruyken ve aygıta gönderilmesi gerekiyorken faydalıdır.
İkinci değer bir 2-li demettir. Demetteki ilk değer aygıta bir kitap biçimi gönderilip gönderilmeyeceğini
belirtir. Amaç aygıttaki kitabın calibre’deki kitapla aynı olduğunu doğrulamaktır. Bu değer gönderilecek
bir kitap yoksa None olmalıdır, aksi halde aygıttaki taban kitabın dosya ismi olmalıdır (kitap.epub gibi bir
karakter dizisi). isimde uzantıyı yazmayı ihmal etmeyin. Aygıt alt sistemi None döndürmeyen değerli tüm
kitaplar için bir send_books işi oluşturacaktır. Not: uzantıyı sonradan alma amacı dışında, aygıtın dosya
ismini üretmek için bir şablon kullandığı durumlarda dosya ismi göz ardı edilir, ki çoğu kullanır. Dönen
demetteki ikinci değer biçimin ileri tarihli olup olmadığını gösterir. İleri tarihliyse True, aksi halde False
döndürür. Calibre kullanıcıya tüm ileri tarihli kitapları listeler.
Çok önemli: bu metod GUI sürecinde çalışır. Aygıt yöneticisinin iş ipliğine dikkat ederek iş ipliği güvenli
olmalıdır.
book_id: kitap için veri tabanındaki calibre kimliği. book_metadata: aygıttan gelen kitap için Metadata
nesnesi. first_call: Bir eşzamanlama sırasında bu ilk çağrıysa True, aksi halde False
class calibre.devices.interface.BookList(oncard, prefix, settings)
Taban: list
Kitap listesi. Her bir Book nesnesinin alanları olmalıdır
1.başlık
2.yazarlar
3.boyut (kitabın dosya boyutu)
4.datetime (UTC tarih demeti)
5.yol (aygıtta kitaba olan yol)
6.küçük resim (None olabilir) küçük resim ya resim verisini tutan bir karakter dizisi/bayt nesnesi olmalı ya
da resme mutlak yolu (platforma göre) içeren bir image_path özniteliği olmalıdır
7.etiketler (bir karakter dizisi listesi, boş olabilir).
supports_collections()
Aygıt bu kitap listesi için koleksiyonları destekliyorsa True döndür.
1.10. Calibreyi özelleştirmek
213
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
add_book(book, replace_metadata)
Kitabı kitap listesine ekle. Amaç tüm aygıt-dahili metadatayı yönetmektir. Kitaplisteleri eşzamanlanmalıysa True döndür
remove_book(book)
Bir kitabı kitap listesinden çıkar. Aynı zamanda tüm aygıt metadata’sını düzelt
get_collections(collection_attributes)
collection_attributes’dan oluşturulan koleksiyon sözlüğü döndür. Sözlükteki her girdi koleksiyon_ismi:[kitap listesi] biçimindedir
Kitap listesi, serilerden oluşturulan koleksiyonlar dışında - bu durumda series_index kullanılır - kitap başlığına göre sıralanır.
Parametreler collection_attributes – Kitap nesnesinin öznitelik listesi
USB Depolama temelli aygıtlar
Bu tarz aygıtlar için temel sınıf :class:‘calibre.devices.usbms.driver.USBMS‘dir. Bu sınıf bazı işlevlerini aşağıda belgelendiği gibi temel aldıkları sınıflardan alırlar. Genel basit bir USBMS tabanlı sürücü şuna benzer:
=
{}=
{}@default
=0=1=2=0=1=2\PYG{k+kn}{from} \PYG{n+nn}{calibre.devices.usbms.driver} \PYG{k+kn}{import} \PYG{n}{USBMS
\PYG{k}{class} \PYG{n+nc}{PDNOVEL}\PYG{p}{(}\PYG{n}{USBMS}\PYG{p}{)}\PYG{p}{:}
\PYG{n}{name} \PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{Pandigital Novel device interface}\PYG{l+s
\PYG{n}{gui\PYGZus{}name} \PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{PD Novel}\PYG{l+s}{\PYGZsq{}}
\PYG{n}{description} \PYG{o}{=} \PYG{n}{\PYGZus{}}\PYG{p}{(}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{Communi
\PYG{n}{author} \PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{Kovid Goyal}\PYG{l+s}{\PYGZsq{}}
\PYG{n}{supported\PYGZus{}platforms} \PYG{o}{=} \PYG{p}{[}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{windows}\
\PYG{n}{FORMATS} \PYG{o}{=} \PYG{p}{[}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{epub}\PYG{l+s}{\PYGZsq{}}\PYG
\PYG{n}{VENDOR\PYGZus{}ID}
\PYG{o}{=} \PYG{p}{[}\PYG{l+m+mh}{18d1}\PYG{p}{]}
\PYG{n}{PRODUCT\PYGZus{}ID} \PYG{o}{=} \PYG{p}{[}\PYG{l+m+mh}{4}\PYG{p}{]}
\PYG{n}{BCD}
\PYG{o}{=} \PYG{p}{[}\PYG{l+m+mh}{224}\PYG{p}{]}
\PYG{n}{VENDOR\PYGZus{}NAME} \PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{ANDROID}\PYG{l+s}{\PYGZsq{}
\PYG{n}{WINDOWS\PYGZus{}MAIN\PYGZus{}MEM} \PYG{o}{=} \PYG{n}{WINDOWS\PYGZus{}CARD\PYGZus{}A\PYGZu
\PYG{n}{THUMBNAIL\PYGZus{}HEIGHT} \PYG{o}{=} \PYG{l+m+mi}{144}
\PYG{n}{EBOOK\PYGZus{}DIR\PYGZus{}MAIN} \PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{eBooks}\PYG{l+s}
\PYG{n}{SUPPORTS\PYGZus{}SUB\PYGZus{}DIRS} \PYG{o}{=} \PYG{n+nb+bp}{False}
\PYG{k}{def} \PYG{n+nf}{upload\PYGZus{}cover}\PYG{p}{(}\PYG{n+nb+bp}{self}\PYG{p}{,} \PYG{n}{path
\PYG{n}{coverdata} \PYG{o}{=} \PYG{n+nb}{getattr}\PYG{p}{(}\PYG{n}{metadata}\PYG{p}{,} \PYG{l
\PYG{k}{if} \PYG{n}{coverdata} \PYG{o+ow}{and} \PYG{n}{coverdata}\PYG{p}{[}\PYG{l+m+mi}{2}\PY
\PYG{k}{with} \PYG{n+nb}{open}\PYG{p}{(}\PYG{l+s}{\PYGZsq{}}\PYG{l+s+si}{\PYGZpc{}s}\PYG{
\PYG{n}{coverfile}\PYG{o}{.}\PYG{n}{write}\PYG{p}{(}\PYG{n}{coverdata}\PYG{p}{[}\PYG{
class calibre.devices.usbms.device.Device(plugin_path)
Taban:
calibre.devices.usbms.deviceconfig.DeviceConfig,
calibre.devices.interface.DevicePlugin (sayfa 206)
Bu sınıf kendini USB Depolama aygıtı olarak aktaran aygıtların tüm sürücüleri için genel mantığı sağlar. Tüm
platformlarda geçerli USBMS bağlama/çıkarma uygulamalarını sağlar.
WINDOWS_MAIN_MEM= None
214
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Windows PnP kimlik karakter dizilerinde aygıtın ana belleğini tanımlayan karakter dizisi. Bu None, karakter dizisi, karakter dizisi listesi veya derlenmiş düzenli ifade olabilir
WINDOWS_CARD_A_MEM= None
Windows PnP kimlik karakter dizisinde aygıtın ilk kartını tanımlayan karakter dizisi. Bu None, karakter
dizisi, karakter dizisi listesi veya derlenmiş düzenli ifade olabilir
WINDOWS_CARD_B_MEM= None
Windows PnP kimlik karakter dizisinde aygıtın ikinci kartını tanımlayan karakter dizisi. Bu None, karakter
dizisi, karakter dizisi listesi veya derlenmiş düzenli ifade olabilir
OSX_MAIN_MEM_VOL_PAT= None
Depolama kartlarından ana belleği ayırmak için yeni sürücü algılama tarafından kullanılır. OS X tarafından
atanan ana bellek bağlantı konumuyla eşleşen bir düzenli ifade olmalıdır
MAX_PATH_LEN= 250
Aygıtta oluşturulan azami yol uzunluğu
NEWS_IN_FOLDER= True
Haberleri kendi dizinine koy
windows_sort_drives(drives)
WINDOWS_CARD_NAME temelinde ayrım yapamayan aygıtlar için ana bellek ve hafıza kartı ayrımı
yapmak için çağrılır. Örn.: EB600
sanitize_callback(path)
Bağımsız aygıt sürücülerin create_upload_path() tarafından kullanılan yol düzenlemesini ezmesine izin veren geri çağrı.
filename_callback(default, mi)
Sürücülerin create_upload_path() tarafından ayarlanan varsayılan dosya ismini değiştirmesine
izin veren geri çağrı.
sanitize_path_components(components)
Aygıta yüklenecek dosyalar için yol bileşenlerinde aygıta özel tüm düzenlemeleri yap
get_annotations(path_map)
path_map’i aygıtta bulunan dosyaların annotation_map’ine çöz
add_annotation_to_library(db, db_id, annotation)
Calibre kitaplığına bir dipnot ekle
class calibre.devices.usbms.cli.CLI
class calibre.devices.usbms.driver.USBMS(plugin_path)
Taban: calibre.devices.usbms.cli.CLI (sayfa 215), calibre.devices.usbms.device.Device
(sayfa 214)
Tüm USBMS aygıtlar için temel sınıf. Gönderme/alma/metadata güncelleme/metadata zulalama/vs. için mantığı
uygular
upload_cover(path, filename, metadata, filepath)
Kitap kapağını aygıta yükle. Varsayılan uygulama hiçbir şey yapmaz.
Parametreler
• path – İlişkili kitabın bulunduğu dizinin tam yolu.
• filename – Kitap dosyasının uzantısız ismi.
• metadata – kitaba ait metadata. Kapak için metadata.thumbnail kullanın
• filepath – E-kitap dosyasına tam yol
1.10. Calibreyi özelleştirmek
215
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
classmethod normalize_path(path)
Yolu platforma özel yol ayraçlarıyla döndür
Kullanıcı Arayüzü Eylemleri
Kendi eklentinizi bir zip dosyasına ekliyorsanız, hem InterfaceActionBase hem InterfaceAction sınıflarını alt sınıflamalısınız. InterfaceActionBase alt sınıfınızın load_actual_plugin() metdou InterfaceBase alt sınıfınızın ilklendirilmiş nesnesini döndürmelidir.
class calibre.gui2.actions.InterfaceAction(parent, site_customization)
Taban: PyQt5.QtCore.QObject
Grafik kullanıcı arayüzüne alınabilecek bir “eylemi” temsil eden bir eklenti. Araç çubuğundaki tüm öğeler ve
içerik menüsü bu eklentilerce uygulanır.
Bu sınıfın bu eklentiler için taban sınıf olduğunu unutmayın, ancak, eklentiyi calibre’nin eklenti sistemiyle birleştirmek için, asıl eklentiye referans eden bir kapsayıcı sınıf yapmalısınız. Örnekler için
calibre.customize.builtins modülüne göz atın.
İki InterfaceAction nesnesi aynı isme sahipse, yüksek öncelikli olan önce gelir.
Alt-sınıflar genesis(), library_changed(), location_selected() shutting_down() ve
initialization_complete() metodlarını uygulamalıdırlar.
İlklendirildikten sonra, bu eklentinin gui üyesi ile ana calibre GUI’sine erişimi vardır. Diğer eklentilere isimle
erişebilirsiniz, örneğin:
=
{}=
{}@default
=0=1=2=0=1=2
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{gui}\PYG{o}{.}\PYG{n}{iactions}\PYG{p}{[}\P
Asıl eklentiye erişmek için, interface_action_base_plugin özniteliğini kullanın, bu öznitelik yalnızca eklenti kendisi ilklendirildiğinde kullanılabilir olur. do_user_config() gibi eklenti sınıfından metodlar kullanmak istediğinizde faydalıdır.
action_spec tarafından belirtilen QAction self.qaction olarak otomatik olarak oluşturulur ve kullanılabilir.
name= ‘Implement me’
Eklenti adı. Aynı isme sahip iki eklenti varsa, yüksek öncelikli olan seçilir.
priority= 1
Eklenti önceliği. Aynı isme sahip iki eklenti varsa, yüksek öncelikli olan seçilir.
popup_type= 1
Bu eklentinin araç çubuğuna eklenmesi durumu için menü açılır pencere türü
auto_repeat= False
Bu eylemin kısayol tuşu basılı tutulduğunda otomatik olarak yinelenip yinelenmeyeceği.
action_spec= (‘text’, ‘icon’, None, None)
Şu biçimde: (metin, simge_yolu, araç ipucu, klavye kısayolu) simge, araç ipucu ve klavye kısayolu None
olabilir, kısayol karakter dizisi, None veya kısa yollar demeti olmalı. None ise, bu eylemle ilişkili bir klavye
kısayolu kaydedilmez. Boş bir demet yollarsanız, kısayol varsayılan bir tuş bağı olmadan kaydedilir.
action_add_menu= False
True ise, bir menü self.qaction’a otomatik olarak oluşturulur ve eklenir
216
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
action_menu_clone_qaction= False
True ise, self.qaction’un bir kopyası self.qaction’un menüsüne eklenir. Bu eylemin metninin
self.qaction’dakinden farklı olmasını isterseniz, bu değişkeni yeni metne ayarlayın
dont_add_to= frozenset([])
Bu eylemin eklenmemesi gereken konumlar kümesi. Muhtemel konumlar listesi için :attr:‘all_locations‘a
göz atın
dont_remove_from= frozenset([])
Bu eylemin çıkarılmaması gereken konumlar kümesi. Muhtemel konumlar listesi için :attr:‘all_locations‘a
göz atın
action_type= ‘global’
‘current’ türünden bir eylem mevcut görünüm üzerinde hareket, ‘global’ ise mevcut görnüm değil bir bütün
olarak calibre üzerinde hareket anlamına gelir
accepts_drops= False
True ise, bu interfaceAction sürükle bırak eylemleriyle etkileşme şansına sahip olacaktır. Detaylar için
accept_enter_event(), :meth‘:accept_drag_move_event‘, drop_event() metodlarına göz atın.
accept_enter_event(event, mime_data)
Bu metod bu arayüz eylemi sürükleme olayını yapabilme becerisine sahipse True döndürmeli. Olayda
kabul et/göz ardı et çağırmayın, bu calibre UI’si tarafından halledilir.
accept_drag_move_event(event, mime_data)
Bu metod bu arayüz eylemi sürükleme olayını yapabilme becerisine sahipse True döndürmeli. Olayda
kabul et/göz ardı et çağırmayın, bu calibre UI’si tarafından halledilir.
drop_event(event, mime_data)
Bu metod bazı kullanışlı eylemler gerçekleştirmeli ve bu arayüz bırak eylemini yapabilme becerisine
sahipse True döndürmeli. Olayda kabul et/göz ardı et çağırmayın, bu calibre UI’si tarafından halledilir. Bu fonksiyonda engelleyici/uzun işlemler yapmayın. Bunun yerine bir sinyal yayın veeya bir QTimer.singleShot kullanın ve çabucak dönün. Örnekler için dahili eylemlere göz atabilirsiniz.
create_menu_action(menu, unique_name, text, icon=None, shortcut=None, description=None,
triggered=None, shortcut_name=None)
Bir QMenu’ye kolayca eylemler eklemek için kullanışlı bir metod. Oluşturulan QAction’u döndürür. Bu
eylemin, None olmadığında bu eylemin klavye yöneticisiyle kaydedilmiş benzersiz ismini gösteren ek bir
calibre_shortcut_unique_name özniteliği vardır.
Parametreler
• menu – Yeni oluşturulan eylemin ekleneceği QMenu
• unique_name – Bu eylem için benzersiz bir isim, bu program genelinde benzersiz olmalıdır, yani olabildiğince açıklayıcı. Kararsızsanız bir uuid ekleyebilirsiniz.
• text – Eylem metni.
• icon – Bir QIcon veya dosya adı. Dosya adı I() dahilisine geçirilir, yani resim dizininin
tam yolunu girmenize gerek yoktur.
• shortcut – Bir karakter dizisi, karakter dizisi listesi, None veya False. False ise, bu eylem için klavye kısayolu kaydedilmez. None ise, varsayılan bağlayıcısı olmayan bir klavye
kısayolu kaydedilir. Karakter dizisi ve karakter dizisi listeleri belirtilen varsayılan tuş atamasını kaydeder.
• description – Bu eylem için tanım. Araç ipuçlarını ayarlamak için kullanılır.
• triggered – Oluşturulan eylemin tetiklenen sinyaline bağlanmak üzere bir çağrılabilir.
• shortcut_name – Bu eylem için klavye kısayolları özelleştirilirken kullanıcıya gösterilecek metin. Varsayılan olarak bu ‘‘text‘‘in değerine ayarlanır.
1.10. Calibreyi özelleştirmek
217
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
load_resources(names)
Bu eklenti bir ZIP dosyasıyla gelirse (kullanıcı tarafından eklenmiş eklenti), bu metod ZIP dosyasından
kaynakları yüklemenizi sağlar.
Örneğin bir resmi yüklemek için:
=
{}=
{}@default
=0=1=2=0=1=2
\PYG{n}{pixmap} \PYG{o}{=} \PYG{n}{QPixmap}\PYG{p}{(}\PYG{p}{)}
\PYG{n}{pixmap}\PYG{o}{.}\PYG{n}{loadFromData}\PYG{p}{(}\PYG{n+nb+bp}{self}\PYG{o}{
\PYG{n}{icon} \PYG{o}{=} \PYG{n}{QIcon}\PYG{p}{(}\PYG{n}{pixmap}\PYG{p}{)}
Parametreler names – / ayraç olarak kullanılmak üzere zip dosyasındaki kaynakların yollarının
listesi
Dönüş değeri: {isim : dosya_içerikleri} biçiminde bir sözlük. Zip dosyasında bulunamayan herhangi isimler dizinde mevcut olmayacak.
genesis()
Bu eklentiyi kur. Yalnızca ilklendirme aşamasında bir kere çağrılır. self.gui kullanılabilirdir.
action_spec tarafından belirtilen eylem self.qaction ile kullanılabilir.
location_selected(loc)
Calibre’de gösterilen kitap listesi her değiştiğinde çağrılır. Şu an loc için değerler: kitaplık, ana,
kart ve kartb.
Bu metod bu eylemi ve alt eylemlerini konuma uygun olarak açmalı/kapamalı.
library_changed(db)
Mevcut kitaplık değiştiğinde çağrılır.
Parametreler db – Mevcut kitaplığa karşılık gelen LibraryDatabase.
gui_layout_complete()
Ana GUI’nin yerleşimi tamamlandığında her eylem için bir kere çağrılır. Eyleminiz yerleşimde değişiklik
yapmalıysa, bu değişiklikler initialization_complete() yerine burada olmalıdır.
initialization_complete()
Ana GUI ilklendirmesi bittiğinde her eylem için bir kere çağrılır.
shutting_down()
Ana GUI kapanma evresindeyken her eklenti için bir kere çağrılır. Kullanılan kaynakları bırakın, ama
kapatmayı uzun süre engellememeye çalışın.
Dönüş değeri: Kapatmayı durdurmak için False. Kapatmanın neden durdurulduğunu kullanıcıya söylemek sizin sorumluluğunuzda.
class calibre.customize.InterfaceActionBase(*args, **kwargs)
Taban: calibre.customize.Plugin (sayfa 197)
load_actual_plugin(gui)
Bu metod asıl arayüz eylem eklenti nesnesini döndürmeli.
Tercihler Eklentileri
class calibre.customize.PreferencesPlugin(plugin_path)
Taban: calibre.customize.Plugin (sayfa 197)
Tercihler iletişim penceresinde gösterilen bir parçacığı temsil eden eklenti.
218
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Bu eklentinin sadece bir önemli metodu var create_widget(). Eklentinin çeşitli alanları UI’de nasıl kategorilendiğini kontrol eder.
config_widget= None
ConfigWidget adında ConfigWidgetInterface’yi uygulayan sınıfı içeren modüle yolu içe aktar.
create_widget() tarafından kullanılır.
category_order= 100
Bu eklentinin :attr:‘category‘si kategori listesinden nerede bulunmalı.
name_order= 100
Bu eklentinin :attr:‘gui_name‘si bir kategorideki isimler listesinde nerede bulunmalı
category= None
Bu eklentinin bulunması gereken kategori
gui_category= None
Bu eklenti için kullanıcıya gösterilecek kategori ismi
gui_name= None
Bu eklenti için kullanıcıya gösterilecek isim
icon= None
Eklenti simgesi, mutlak yol olmalıdır
description= None
Araç ipuçları ve benzerleri için kullanılacak tanımlama
create_widget(parent=None)
Bu tercih grubunu ayarlamak için kullanılan asıl Qt parçacığını oluştur ve döndür. Parçacık :class:‘calibre.gui2.preferences.ConfigWidgetInterface‘yi uygulamalıdır.
Varsayılan uygulama parçacığı ilklendirmek için config_widget kullanır.
class calibre.gui2.preferences.ConfigWidgetInterface
Bu sınıf Tercihler iletişim penceresinde gösterilen tüm parçacıkların uygulaması gereken arayüzü tanımlar. Bu
arayüzü uygulayan ve çeşitli kolaylık sağlayıcı metod tanımlayan ConfigWidgetBase taban sınıfına göz
atın.
changed_signal= None
Bu sinyal kullanıcı bu parçacıkta her değişiklik yaptığında yayılmalıdır
supports_restoring_to_defaults= True
restore_to_defaults() metodu uygulanmışsa True olarak ayarla.
restore_defaults_desc= u”Varsay\u0131lan ayarlar\u0131 y\xfckle. Bu i\u015flemi tamamlamak i\xe7in Tamam’a
Varsayılana geri al düğmesi için araç ipucu
restart_critical= False
True ise Tercihler iletişim penceresi kullanıcının daha fazla tercih ayarlamasına izin vermez. Yalnızca
commit() True döndürdüğünde etkilidir.
genesis(gui)
Parçacık görüntülenmeden önce bir kere çağrılır, gerekli tüm kurulumu gerçekleştirmelidir.
Parametreler gui – Ana calibre grafik kullanıcı arayüzü
initialize()
Tüm yapılandırma değerlerini başlangıç değerlerine ayarlamalıdır (yapılandırma dosyalarında saklı değerler).
restore_defaults()
Tüm yapılandırma değerlerini varsayılan değerlerine ayarlamalıdır.
1.10. Calibreyi özelleştirmek
219
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
commit()
Değişen ayarları kaydet. Değişiklikler yeniden başlatma gerektiriyorsa True döndür, aksi halde False. Bir
hata olduğunu belirtmek için bir AbortCommit istisnası yükselt. Hatanın ne olduğu ve nasıl düzeltileceğiyle ilgili kullanıcıya bilgi vermek sizin sorumluluğunuzdadır.
refresh_gui(gui)
Bu parçacık işlendikten sonra bir kere çağrılır. Gui’nin değiştirilen ayarları tekrar okumasına yol açmakla
sorumludur. Varsayılan olarak GUI çeşitli öğeleri zaten tekrar ilklendirir, yani çoğu parçacığın bu metodu
kullanmasına gerek yoktur.
class calibre.gui2.preferences.ConfigWidgetBase(parent=None)
Kolayca standart kontrol kutuları, açılır kapanır kutular, metin alanları benzeri parçacıklar eklemek için kod
içeren temel sınıf. register() metoduna göz atın.
Bu sınıf kaydedilen ayarlar için bildirim değişikliği, varsayılana geri dönme, gui nesneleri ve ayar nesneleri
arası geçişleri vs. otomatik yönetir.
Eğer yapılandırma parçacığınız bu sınıftan türemiş fakat kaydedilmemiş ayarlar içeriyorsa,
ConfigWidgetInterface metodlarını ezmeli ve ezilen metodlar içinden taban sınıfın metodlarını
çağırmalısınız.
register(name,
config_obj,
gui_name=None,
choices=None,
restart_required=False,
empty_string_is_None=True, setting=<class ‘calibre.gui2.preferences.Setting’>)
Bir ayar kaydet.
Parametreler
• name – Ayar adı
• config – Ayarı okuyan/yazan yapılandırma nesnesi
• gui_name – Ayarın değiştirilebilmesi için bir arayüz sunan GUI nesnesinin adı. Varsayılan olarak ’opt_’ + isim beklenir.
• choices – Bu ayar çoklu seçim (açılır kutu) temelli bir ayarsa, seçimler listesi. Liste
[(gui ismi, değer), ...] şeklinde ikili demetler listesidir
• setting – Bu ayarı yönetmekle sorumlu sınıf. Varsayılan sınıf nerdeyse tüm durumları
ele alır, yani bu parametre nadiren kullanılır.
Görüntüleme eklentileri
class calibre.customize.ViewerPlugin(plugin_path)
Taban: calibre.customize.Plugin (sayfa 197)
type= u’G\xf6r\xfcnt\xfcleyici’
Bu eklentiler calibre görüntüleyiciye işlev eklemek için kullanılır.
load_fonts()
Bu metod görüntüleyici açılışında bir kere çağrılır. Kullanılabilir olmasını istediği tüm yazı tiplerini yüklemelidir. Örneğin:
=
{}=
{}@default
=0=1=2=0=1=2
220
\PYG{k}{def} \PYG{n+nf}{load\PYGZus{}fonts}\PYG{p}{(}\PYG{p}{)}\PYG{p}{:
\PYG{k+kn}{from} \PYG{n+nn}{PyQt5.Qt} \PYG{k+kn}{import} \PYG{n}{QFontDatabase}
\PYG{n}{font\PYGZus{}data} \PYG{o}{=} \PYG{n}{get\PYGZus{}resources}\PYG{p}{(}\
\PYG{k}{for} \PYG{n}{raw} \PYG{o+ow}{in} \PYG{n}{font\PYGZus{}data}\PYG{o}{.}\P
\PYG{n}{QFontDatabase}\PYG{o}{.}\PYG{n}{addApplicationFontFromData}\PYG{p}{
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
load_javascript(evaljs)
Bu metod görüntüleyicide yeni bir HTML belgesi yüklendiğinde çağrılır. Javascript kitaplıklarını görüntüleyiciye yüklemek için kullanın. Örneğin:
=
{}=
{}@default
=0=1=2=0=1=2
\PYG{k}{def} \PYG{n+nf}{load\PYGZus{}javascript}\PYG{p}{(}\PYG{n+nb+bp}{
\PYG{n}{js} \PYG{o}{=} \PYG{n}{get\PYGZus{}resources}\PYG{p}{(}\PYG{l+s}{\PYGZs
\PYG{n}{evaljs}\PYG{p}{(}\PYG{n}{js}\PYG{p}{)}
run_javascript(evaljs)
Bu metod bir belgenin yüklenmesi her bittiğinde çağrılır. load_javascript() kullanımı şeklinde kullanabilirsiniz.
customize_ui(ui)
Bu metod görüntüleyici oluşturulduğunda bir kere çağrılır. Görüntüleyicinin kullanıcı arayüzünde yapmak
istediğiniz özelleştirmeler için kullanın. Örneğin, araç çubuklarını ui.tool_bar ve ui.tool_bar2 ile değiştirebilirsiniz.
customize_context_menu(menu, event, hit_test_result)
Bu metod içerik menüsü (sağ-tık) gösterildiğinde çağrılır. İçerik menüsünü özelleştirmek için kullanabilirsiniz. event içerik menüsü olayıdır ve hit_test_result yüklenmiş mevcut belgedeki bu olay için QWebHitTestResult’dur.
1.10.2 Çevresel değişkenler
• CALIBRE_CONFIG_DIRECTORY - yapılandırma dosyalarının saklanacağı/okunacağı dizini ayarlar.
• CALIBRE_TEMP_DIR - calibre için geçici dizini ayarlar
• CALIBRE_CACHE_DIRECTORY - calibre’nin oturumlar arasında kalıcı veriyi saklayacağı dizini ayarlar
• CALIBRE_OVERRIDE_DATABASE_PATH - metadata.db için tam yolu belirtmenize izin verir. Bu değişkeni
kullanarak metadata.db dosyasını kitaplık dizininin dışında tutabilirsiniz. Bu kitaplık dizininizi ağ üzerinde
dosya kilitleme özelliği olmayan bir diskte tutuyorsanız faydalı olacaktır.
• CALIBRE_DEVELOP_FROM - calibre’yi geliştirme ortamından çalıştırmak için kullanılır. Calibre geliştirme
ortamı ayarlamak (sayfa 266) bölümüne bakın.
• CALIBRE_OVERRIDE_LANG - Arayüzün dilini kullanmaya zorlamak için kullanılır (ISO 639 dil kodu)
• CALIBRE_TEST_TRANSLATION - Used to test a translation .po file (should be the path to the .po file)
• CALIBRE_NO_NATIVE_FILEDIALOGS - calibre’nin dosya/dizin seçimi için doğal dosya iletişim penceresini kullanmamasına neden olur. Etkinleştirmek için 1 atayın.
• CALIBRE_NO_NATIVE_MENUBAR - calibre’nin Ubuntu Unity ve benzer linux masaüstü ortamlarında doğal
(genel) menü oluşturmamasına neden olur. Bunun yerine menü geleneksel olarak pencerenin içine yerleştirilir.
• CALIBRE_IGNORE_SYSTEM_THEME - Calibre’nin sistemdeki tüm Qt biçemli eklentileri göz ardı edip kendi
dahili eklentisini kullanmasına sebep olur. Calibre ile gelen Qt ile sistem Qt eklentisinin uyumsuzluğu sebebiyle
oluşan çökmelere çözüm bulmak açısından faydalıdır.
• CALIBRE_SHOW_DEPRECATION_WARNINGS - Calibre’nin uygunsuzluk hatalarını standart çıktıya yazmasına sebep olur. Calibre geliştiricileri için faydalıdır.
• SYSFS_PATH - sysfs, /sys dizininden başka bir dizine bağlıysa kullanın
• http_proxy - Linux’ta HTTP vekil sunucuyu belirtmek için kullanılır
1.10. Calibreyi özelleştirmek
221
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
See How to set environment variables in windows86 or How to set environment variables in OS X87 .
1.10.3 İnce Ayarlar
İnce ayarlar calibre davranışının çeşitli yönlerini kontrol etmek için belirtebileceğiniz küçük değişikliklerdir. Bunları
Tercihler -> Gelişmiş -> İnce Ayarlar alanından değiştirebilirsiniz. İnce ayarlar için varsayılan değerler aşağıdadır
=
{}=
{}@default
=0=1=2=0=1=2\PYG{c}{\PYGZsh{}!/usr/bin/env python2}
\PY
\PYG{n}{\PYGZus{}\PYGZus{}license\PYGZus{}\PYGZus{}}
\PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{GPL v
\PYG{n}{\PYGZus{}\PYGZus{}copyright\PYGZus{}\PYGZus{}} \PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{2 Kov
\PYG{n}{\PYGZus{}\PYGZus{}docformat\PYGZus{}\PYGZus{}} \PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{restr
\PYG{l+s+sd}{\PYGZsq{}\PYGZsq{}\PYGZsq{}}
\PYG{l+s+sd}{Contains various tweaks that affect calibre behavior. Only edit this file if}
\PYG{l+s+sd}{you know what you are doing. If you delete this file, it will be recreated from}
\PYG{l+s+sd}{defaults.}
\PYG{l+s+sd}{\PYGZsq{}\PYGZsq{}\PYGZsq{}}
\PYG{c}{\PYGZsh{}: Auto increment series index}
\PYG{c}{\PYGZsh{} The algorithm used to assign a book added to an existing series a series number.}
\PYG{c}{\PYGZsh{} New series numbers assigned using this tweak are always integer values, except}
\PYG{c}{\PYGZsh{} if a constant non\PYGZhy{}integer is specified.}
\PYG{c}{\PYGZsh{} Possible values are:}
\PYG{c}{\PYGZsh{} next \PYGZhy{} First available integer larger than the largest existing number}
\PYG{c}{\PYGZsh{} first\PYGZus{}free \PYGZhy{} First available integer larger than }
\PYG{c}{\PYGZsh{} next\PYGZus{}free \PYGZhy{} First available integer larger than the smallest existi
\PYG{c}{\PYGZsh{} last\PYGZus{}free \PYGZhy{} First available integer smaller than the largest existi
\PYG{c}{\PYGZsh{}
Return largest existing + 1 if no free number is found}
\PYG{c}{\PYGZsh{} const \PYGZhy{} Assign the number 1 always}
\PYG{c}{\PYGZsh{} no\PYGZus{}change \PYGZhy{} Do not change the series index}
\PYG{c}{\PYGZsh{} a number \PYGZhy{} Assign that number always. The number is not in quotes. Note tha
\PYG{c}{\PYGZsh{}
˙ can be used here.}
\PYG{c}{\PYGZsh{} Examples:}
\PYG{c}{\PYGZsh{} series\PYGZus{}index\PYGZus{}auto\PYGZus{}increment = \PYGZsq{}next\PYGZsq{}}
\PYG{c}{\PYGZsh{} series\PYGZus{}index\PYGZus{}auto\PYGZus{}increment = \PYGZsq{}next\PYGZus{}free\PY
\PYG{c}{\PYGZsh{} series\PYGZus{}index\PYGZus{}auto\PYGZus{}increment = 16.5}
\PYG{c}{\PYGZsh{}}
\PYG{c}{\PYGZsh{} Set the use\PYGZus{}series\PYGZus{}auto\PYGZus{}increment\PYGZus{}tweak\PYGZus{}whe
\PYG{c}{\PYGZsh{} use the above values when importing/adding books. If this tweak is set to}
\PYG{c}{\PYGZsh{} False (the default) then the series number will be set to 1 if it is not}
\PYG{c}{\PYGZsh{} explicitly set during the import. If set to True, then the}
\PYG{c}{\PYGZsh{} series index will be set according to the series\PYGZus{}index\PYGZus{}auto\PYGZus{
\PYG{c}{\PYGZsh{} Note that the use\PYGZus{}series\PYGZus{}auto\PYGZus{}increment\PYGZus{}tweak\PYGZu
\PYG{c}{\PYGZsh{} only when a value is not provided during import. If the importing regular}
\PYG{c}{\PYGZsh{} expression produces a value for series\PYGZus{}index, or if you are reading metadat
\PYG{c}{\PYGZsh{} from books and the import plugin produces a value, than that value will}
\PYG{c}{\PYGZsh{} be used irrespective of the setting of the tweak.}
\PYG{n}{series\PYGZus{}index\PYGZus{}auto\PYGZus{}increment} \PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}
\PYG{n}{use\PYGZus{}series\PYGZus{}auto\PYGZus{}increment\PYGZus{}tweak\PYGZus{}when\PYGZus{}importin
\PYG{c}{\PYGZsh{}: Add separator after completing an author name}
\PYG{c}{\PYGZsh{} Should the completion separator be append}
86
87
http://www.computerhope.com/issues/ch000549.htm
http://www.dowdandassociates.com/blog/content/howto-set-an-environment-variable-in-mac-os-x-launchd-plist/
222
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
\PYG{c}{\PYGZsh{} to the end of the completed text to}
\PYG{c}{\PYGZsh{} automatically begin a new completion operation}
\PYG{c}{\PYGZsh{} for authors.}
\PYG{c}{\PYGZsh{} Can be either True or False}
\PYG{n}{authors\PYGZus{}completer\PYGZus{}append\PYGZus{}separator} \PYG{o}{=} \PYG{n+nb+bp}{False}
\PYG{c}{\PYGZsh{}: Author sort name algorithm}
\PYG{c}{\PYGZsh{} The algorithm used to copy author to author\PYGZus{}sort}
\PYG{c}{\PYGZsh{} Possible values are:}
\PYG{c}{\PYGZsh{} invert: use \PYGZdq{}fn ln\PYGZdq{} \PYGZhy{}\PYGZgt{} \PYGZdq{}ln, fn\PYGZdq{}}
\PYG{c}{\PYGZsh{} copy : copy author to author\PYGZus{}sort without modification}
\PYG{c}{\PYGZsh{} comma : use \PYGZsq{}copy\PYGZsq{} if there is a \PYGZsq{},\PYGZsq{} in the name,
\PYG{c}{\PYGZsh{} nocomma : \PYGZdq{}fn ln\PYGZdq{} \PYGZhy{}\PYGZgt{} \PYGZdq{}ln fn\PYGZdq{} (with
\PYG{c}{\PYGZsh{} When this tweak is changed, the author\PYGZus{}sort values stored with each author}
\PYG{c}{\PYGZsh{} must be recomputed by right\PYGZhy{}clicking on an author in the left\PYGZhy{}hand
\PYG{c}{\PYGZsh{} selecting \PYGZsq{}manage authors\PYGZsq{}, and pressing \PYGZsq{}Recalculate all a
\PYG{c}{\PYGZsh{} The author name suffixes are words that are ignored when they occur at the}
\PYG{c}{\PYGZsh{} end of an author name. The case of the suffix is ignored and trailing}
\PYG{c}{\PYGZsh{} periods are automatically handled. The same is true for prefixes.}
\PYG{c}{\PYGZsh{} The author name copy words are a set of words which if they occur in an}
\PYG{c}{\PYGZsh{} author name cause the automatically generated author sort string to be}
\PYG{c}{\PYGZsh{} identical to the author name. This means that the sort for a string like Acme}
\PYG{c}{\PYGZsh{} Inc. will be Acme Inc. instead of Inc., Acme}
\PYG{n}{author\PYGZus{}sort\PYGZus{}copy\PYGZus{}method} \PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{com
\PYG{n}{author\PYGZus{}name\PYGZus{}suffixes} \PYG{o}{=} \PYG{p}{(}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{Jr}\
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{MD}\PYG{l+s}{\PYGZsq{}}\PYG{p}{,} \PYG{l+s}{\PY
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{Junior}\PYG{l+s}{\PYGZsq{}}\PYG{p}{,} \PYG{l+s}
\PYG{n}{author\PYGZus{}name\PYGZus{}prefixes} \PYG{o}{=} \PYG{p}{(}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{Mr}\
\PYG{n}{author\PYGZus{}name\PYGZus{}copywords} \PYG{o}{=} \PYG{p}{(}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{Cor
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{Committee}\PYG{l+s}{\PYGZsq{}}\PYG{p}{,} \PYG{l+s}{\PYGZsq{}}\P
\PYG{c}{\PYGZsh{}: Splitting multiple author names}
\PYG{c}{\PYGZsh{} By default, calibre splits a string containing multiple author names on}
\PYG{c}{\PYGZsh{} ampersands and the words \PYGZdq{}and\PYGZdq{} and \PYGZdq{}with\PYGZdq{}. You can
\PYG{c}{\PYGZsh{} by changing the regular expression below. Strings are split on whatever the}
\PYG{c}{\PYGZsh{} specified regular expression matches, in addition to ampersands.}
\PYG{c}{\PYGZsh{} Default: r\PYGZsq{}(?i),?\PYGZbs{}s+(and\textbar{}with)\PYGZbs{}s+\PYGZsq{}}
\PYG{n}{authors\PYGZus{}split\PYGZus{}regex} \PYG{o}{=} \PYG{l+s}{r\PYGZsq{}}\PYG{l+s}{(?i),?}\PYG{l+
\PYG{c}{\PYGZsh{}: Use author sort in Tag Browser}
\PYG{c}{\PYGZsh{} Set which author field to display in the tags pane (the list of authors,}
\PYG{c}{\PYGZsh{} series, publishers etc on the left hand side). The choices are author and}
\PYG{c}{\PYGZsh{} author\PYGZus{}sort. This tweak affects only what is displayed under the authors}
\PYG{c}{\PYGZsh{} category in the tags pane and content server. Please note that if you set this}
\PYG{c}{\PYGZsh{} to author\PYGZus{}sort, it is very possible to see duplicate names in the list beca
\PYG{c}{\PYGZsh{} although it is guaranteed that author names are unique, there is no such}
\PYG{c}{\PYGZsh{} guarantee for author\PYGZus{}sort values. Showing duplicates won\PYGZsq{}t break an
\PYG{c}{\PYGZsh{} it could lead to some confusion. When using \PYGZsq{}author\PYGZus{}sort\PYGZsq{},
\PYG{c}{\PYGZsh{} show the author\PYGZsq{}s name.}
\PYG{c}{\PYGZsh{} Examples:}
\PYG{c}{\PYGZsh{}
categories\PYGZus{}use\PYGZus{}field\PYGZus{}for\PYGZus{}author\PYGZus{}name = \P
\PYG{c}{\PYGZsh{}
categories\PYGZus{}use\PYGZus{}field\PYGZus{}for\PYGZus{}author\PYGZus{}name = \P
\PYG{n}{categories\PYGZus{}use\PYGZus{}field\PYGZus{}for\PYGZus{}author\PYGZus{}name} \PYG{o}{=} \PYG
\PYG{c}{\PYGZsh{}: Control partitioning of Tag Browser}
\PYG{c}{\PYGZsh{} When partitioning the tags browser, the format of the subcategory label is}
\PYG{c}{\PYGZsh{} controlled by a template: categories\PYGZus{}collapsed\PYGZus{}name\PYGZus{}templat
\PYG{c}{\PYGZsh{} name, categories\PYGZus{}collapsed\PYGZus{}rating\PYGZus{}template if sorting by av
1.10. Calibreyi özelleştirmek
223
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
\PYG{c}{\PYGZsh{} categories\PYGZus{}collapsed\PYGZus{}popularity\PYGZus{}template if sorting by popu
\PYG{c}{\PYGZsh{} two variables available to the template: first and last. The variable \PYGZsq{}firs
\PYG{c}{\PYGZsh{} is the initial item in the subcategory, and the variable \PYGZsq{}last\PYGZsq{} is
\PYG{c}{\PYGZsh{} item in the subcategory. Both variables are \PYGZsq{}objects\PYGZsq{}; they each ha
\PYG{c}{\PYGZsh{} values that are obtained by using a suffix. For example, first.name for an}
\PYG{c}{\PYGZsh{} author category will be the name of the author. The sub\PYGZhy{}values available ar
\PYG{c}{\PYGZsh{} name: the printable name of the item}
\PYG{c}{\PYGZsh{} count: the number of books that references this item}
\PYG{c}{\PYGZsh{} avg\PYGZus{}rating: the average rating of all the books referencing this item}
\PYG{c}{\PYGZsh{} sort: the sort value. For authors, this is the author\PYGZus{}sort for that author
\PYG{c}{\PYGZsh{} category: the category (e.g., authors, series) that the item is in.}
\PYG{c}{\PYGZsh{} Note that the \PYGZdq{}r\PYGZsq{}\PYGZdq{} in front of the \PYGZob{} is necessary i
\PYG{c}{\PYGZsh{} (\PYGZbs{} characters) in the template. It doesn\PYGZsq{}t hurt anything to leave i
\PYG{c}{\PYGZsh{} even if there aren\PYGZsq{}t any backslashes.}
\PYG{n}{categories\PYGZus{}collapsed\PYGZus{}name\PYGZus{}template} \PYG{o}{=} \PYG{l+s}{r\PYGZsq{}}\
\PYG{n}{categories\PYGZus{}collapsed\PYGZus{}rating\PYGZus{}template} \PYG{o}{=} \PYG{l+s}{r\PYGZsq{}
\PYG{n}{categories\PYGZus{}collapsed\PYGZus{}popularity\PYGZus{}template} \PYG{o}{=} \PYG{l+s}{r\PYGZ
\PYG{c}{\PYGZsh{}: Control order of categories in the tag browser}
\PYG{c}{\PYGZsh{} Change the following dict to change the order that categories are displayed in}
\PYG{c}{\PYGZsh{} the tag browser. Items are named using their lookup name, and will be sorted}
\PYG{c}{\PYGZsh{} using the number supplied. The lookup name \PYGZsq{}*\PYGZsq{} stands for all names
\PYG{c}{\PYGZsh{} otherwise do not appear. Two names with the same value will be sorted}
\PYG{c}{\PYGZsh{} using the default order; the one used when the dict is empty.}
\PYG{c}{\PYGZsh{} Example: tag\PYGZus{}browser\PYGZus{}category\PYGZus{}order = \PYGZob{}\PYGZsq{}ser
\PYG{c}{\PYGZsh{} resulting in the order series, tags, then everything else in default order.}
\PYG{n}{tag\PYGZus{}browser\PYGZus{}category\PYGZus{}order} \PYG{o}{=} \PYG{p}{\PYGZob{}}\PYG{l+s}{\P
\PYG{c}{\PYGZsh{}: Specify columns to sort the booklist by on startup}
\PYG{c}{\PYGZsh{} Provide a set of columns to be sorted on when calibre starts}
\PYG{c}{\PYGZsh{} The argument is None if saved sort history is to be used}
\PYG{c}{\PYGZsh{} otherwise it is a list of column,order pairs. Column is the}
\PYG{c}{\PYGZsh{} lookup/search name, found using the tooltip for the column}
\PYG{c}{\PYGZsh{} Order is for ascending, 1 for descending}
\PYG{c}{\PYGZsh{} For example, set it to [(\PYGZsq{}authors\PYGZsq{},,(\PYGZsq{}title\PYGZsq{},] to s
\PYG{c}{\PYGZsh{} title within authors.}
\PYG{n}{sort\PYGZus{}columns\PYGZus{}at\PYGZus{}startup} \PYG{o}{=} \PYG{n+nb+bp}{None}
\PYG{c}{\PYGZsh{}: Control how dates are displayed}
\PYG{c}{\PYGZsh{} Format to be used for publication date and the timestamp (date).}
\PYG{c}{\PYGZsh{} A string controlling how the publication date is displayed in the GUI}
\PYG{c}{\PYGZsh{} d
the day as number without a leading zero (1 to 31)}
\PYG{c}{\PYGZsh{} dd
the day as number with a leading zero ( to 31)}
\PYG{c}{\PYGZsh{} ddd
the abbreviated localized day name (e.g. \PYGZsq{}Mon\PYGZsq{} to \PYGZsq{}S
\PYG{c}{\PYGZsh{} dddd the long localized day name (e.g. \PYGZsq{}Monday\PYGZsq{} to \PYGZsq{}Sunda
\PYG{c}{\PYGZsh{} M
the month as number without a leading zero (1\PYGZhy{}12)}
\PYG{c}{\PYGZsh{} MM
the month as number with a leading zero (\PYGZhy{}12)}
\PYG{c}{\PYGZsh{} MMM
the abbreviated localized month name (e.g. \PYGZsq{}Jan\PYGZsq{} to \PYGZsq{
\PYG{c}{\PYGZsh{} MMMM the long localized month name (e.g. \PYGZsq{}January\PYGZsq{} to \PYGZsq{}De
\PYG{c}{\PYGZsh{} yy
the year as two digit number (\PYGZhy{}99)}
\PYG{c}{\PYGZsh{} yyyy the year as four digit number}
\PYG{c}{\PYGZsh{} h
the hours without a leading ( to 11 or to 23, depending on am/pm) \PYGZsq{
\PYG{c}{\PYGZsh{} hh
the hours with a leading ( to 11 or to 23, depending on am/pm) \PYGZsq{}}
\PYG{c}{\PYGZsh{} m
the minutes without a leading ( to 59) \PYGZsq{}}
\PYG{c}{\PYGZsh{} mm
the minutes with a leading ( to 59) \PYGZsq{}}
\PYG{c}{\PYGZsh{} s
the seconds without a leading ( to 59) \PYGZsq{}}
\PYG{c}{\PYGZsh{} ss
the seconds with a leading ( to 59) \PYGZsq{}}
224
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
\PYG{c}{\PYGZsh{} ap
use a 12\PYGZhy{}hour clock instead of a 24\PYGZhy{}hour clock, with \PYGZdq
\PYG{c}{\PYGZsh{}
replaced by the localized string for am or pm \PYGZsq{}}
\PYG{c}{\PYGZsh{} AP
use a 12\PYGZhy{}hour clock instead of a 24\PYGZhy{}hour clock, with \PYGZdq
\PYG{c}{\PYGZsh{}
replaced by the localized string for AM or PM \PYGZsq{}}
\PYG{c}{\PYGZsh{} iso
the date with time and timezone. Must be the only format present}
\PYG{c}{\PYGZsh{} For example, given the date of 9 Jan 2 the following formats show}
\PYG{c}{\PYGZsh{} MMM yyyy ==\PYGZgt{} Jan 2
yyyy ==\PYGZgt{} 2
dd MMM yyyy ==\PYGZgt{} Ja
\PYG{c}{\PYGZsh{} MM/yyyy ==\PYGZgt{} /2
d/M/yy ==\PYGZgt{} 9/1/1
yy ==\PYGZgt{} 1}
\PYG{c}{\PYGZsh{} publication default if not set: MMM yyyy}
\PYG{c}{\PYGZsh{} timestamp default if not set: dd MMM yyyy}
\PYG{c}{\PYGZsh{} last\PYGZus{}modified\PYGZus{}display\PYGZus{}format if not set: dd MMM yyyy}
\PYG{n}{gui\PYGZus{}pubdate\PYGZus{}display\PYGZus{}format} \PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{
\PYG{n}{gui\PYGZus{}timestamp\PYGZus{}display\PYGZus{}format} \PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s
\PYG{n}{gui\PYGZus{}last\PYGZus{}modified\PYGZus{}display\PYGZus{}format} \PYG{o}{=} \PYG{l+s}{\PYGZs
\PYG{c}{\PYGZsh{}: Control sorting of titles and series in the library display}
\PYG{c}{\PYGZsh{} Control title and series sorting in the library view. If set to}
\PYG{c}{\PYGZsh{} \PYGZsq{}library\PYGZus{}order\PYGZsq{}, the title sort field will be used instead
\PYG{c}{\PYGZsh{} Unless you have manually edited the title sort field, leading articles such as}
\PYG{c}{\PYGZsh{} The and A will be ignored. If set to \PYGZsq{}strictly\PYGZus{}alphabetic\PYGZsq{},
\PYG{c}{\PYGZsh{} sorted as\PYGZhy{}is (sort by title instead of title sort). For example, with}
\PYG{c}{\PYGZsh{} library\PYGZus{}order, The Client will sort under \PYGZsq{}C\PYGZsq{}. With strictl
\PYG{c}{\PYGZsh{} book will sort under \PYGZsq{}T\PYGZsq{}.}
\PYG{c}{\PYGZsh{} This flag affects Calibre\PYGZsq{}s library display. It has no effect on devices. I
\PYG{c}{\PYGZsh{} addition, titles for books added before changing the flag will retain their}
\PYG{c}{\PYGZsh{} order until the title is edited. Double\PYGZhy{}clicking on a title and hitting ret
\PYG{c}{\PYGZsh{} without changing anything is sufficient to change the sort.}
\PYG{n}{title\PYGZus{}series\PYGZus{}sorting} \PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{library\PYGZus
\PYG{c}{\PYGZsh{}: Control formatting of title and series when used in templates}
\PYG{c}{\PYGZsh{} Control how title and series names are formatted when saving to disk/sending}
\PYG{c}{\PYGZsh{} to device. The behavior depends on the field being processed. If processing}
\PYG{c}{\PYGZsh{} title, then if this tweak is set to \PYGZsq{}library\PYGZus{}order\PYGZsq{}, the ti
\PYG{c}{\PYGZsh{} replaced with title\PYGZus{}sort. If it is set to \PYGZsq{}strictly\PYGZus{}alphabe
\PYG{c}{\PYGZsh{} title will not be changed. If processing series, then if set to}
\PYG{c}{\PYGZsh{} \PYGZsq{}library\PYGZus{}order\PYGZsq{}, articles such as \PYGZsq{}The\PYGZsq{} and
\PYG{c}{\PYGZsh{} set to \PYGZsq{}strictly\PYGZus{}alphabetic\PYGZsq{}, the series will be sent witho
\PYG{c}{\PYGZsh{} For example, if the tweak is set to library\PYGZus{}order, \PYGZdq{}The Lord of the
\PYG{c}{\PYGZsh{} will become \PYGZdq{}Lord of the Rings, The\PYGZdq{}. If the tweak is set to}
\PYG{c}{\PYGZsh{} strictly\PYGZus{}alphabetic, it would remain \PYGZdq{}The Lord of the Rings\PYGZdq{
\PYG{c}{\PYGZsh{} formatter function raw\PYGZus{}field will return the base value for title and}
\PYG{c}{\PYGZsh{} series regardless of the setting of this tweak.}
\PYG{n}{save\PYGZus{}template\PYGZus{}title\PYGZus{}series\PYGZus{}sorting} \PYG{o}{=} \PYG{l+s}{\PYG
\PYG{c}{\PYGZsh{}: Set the list of words considered to be \PYGZdq{}articles\PYGZdq{} for sort strings
\PYG{c}{\PYGZsh{} Set the list of words that are to be considered \PYGZsq{}articles\PYGZsq{} when com
\PYG{c}{\PYGZsh{} title sort strings. The articles differ by language. By default, calibre uses}
\PYG{c}{\PYGZsh{} a combination of articles from English and whatever language the calibre user}
\PYG{c}{\PYGZsh{} interface is set to. In addition, in some contexts where the book language is}
\PYG{c}{\PYGZsh{} available, the language of the book is used. You can change the list of}
\PYG{c}{\PYGZsh{} articles for a given language or add a new language by editing}
\PYG{c}{\PYGZsh{} per\PYGZus{}language\PYGZus{}title\PYGZus{}sort\PYGZus{}articles. To tell calibre t
\PYG{c}{\PYGZsh{} than the user interface language, set, default\PYGZus{}language\PYGZus{}for\PYGZus{
\PYG{c}{\PYGZsh{} example, to use German, set it to \PYGZsq{}deu\PYGZsq{}. A value of None means the
\PYG{c}{\PYGZsh{} interface language is used. The setting title\PYGZus{}sort\PYGZus{}articles is igno
\PYG{c}{\PYGZsh{} (present only for legacy reasons).}
\PYG{n}{per\PYGZus{}language\PYGZus{}title\PYGZus{}sort\PYGZus{}articles} \PYG{o}{=} \PYG{p}{\PYGZob{
\PYG{c}{\PYGZsh{} English}
1.10. Calibreyi özelleştirmek
225
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{eng}\PYG{l+s}{\PYGZsq{}}
\PYG{p}{:} \PYG{p}{(}\PYG{l+s}{r\PYGZ
\PYG{c}{\PYGZsh{} Esperanto}
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{epo}\PYG{l+s}{\PYGZsq{}}\PYG{p}{:} \PYG{p}{(}\PYG{l+s}{r\PYGZsq
\PYG{c}{\PYGZsh{} Spanish}
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{spa}\PYG{l+s}{\PYGZsq{}} \PYG{p}{:} \PYG{p}{(}\PYG{l+s}{r\PYGZ
\PYG{l+s}{r\PYGZsq{}}\PYG{l+s}{Una}\PYG{l+s}{\PYGZbs{}}\PYG{l+s}{s+}\PYG{l+s}{\PYGZ
\PYG{c}{\PYGZsh{} French}
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{fra}\PYG{l+s}{\PYGZsq{}} \PYG{p}{:} \PYG{p}{(}\PYG{l+s}{r\PYGZ
\PYG{l+s}{r\PYGZsq{}}\PYG{l+s}{Des}\PYG{l+s}{\PYGZbs{}}\PYG{l+s}{s+}\PYG{l+s}{\PYGZ
\PYG{c}{\PYGZsh{} Italian}
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{ita}\PYG{l+s}{\PYGZsq{}}\PYG{p}{:} \PYG{p}{(}\PYG{l+s}{\PYGZsq{
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{I}\PYG{l+s+se}{\PYGZbs{}\PYGZbs{}}\PYG{l+s}{s+}\PYG{l+s
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{Un}\PYG{l+s+se}{\PYGZbs{}xb4}\PYG{l+s}{\PYGZsq{}}\PYG{p
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{Della}\PYG{l+s+se}{\PYGZbs{}\PYGZbs{}}\PYG{l+s}{s+}\PYG
\PYG{c}{\PYGZsh{} Portuguese}
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{por}\PYG{l+s}{\PYGZsq{}} \PYG{p}{:} \PYG{p}{(}\PYG{l+s}{r\PYGZ
\PYG{l+s}{r\PYGZsq{}}\PYG{l+s}{Uma}\PYG{l+s}{\PYGZbs{}}\PYG{l+s}{s+}\PYG{l+s}{\PYGZ
\PYG{c}{\PYGZsh{} Romanian}
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{ron}\PYG{l+s}{\PYGZsq{}} \PYG{p}{:} \PYG{p}{(}\PYG{l+s}{r\PYGZ
\PYG{c}{\PYGZsh{} German}
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{deu}\PYG{l+s}{\PYGZsq{}} \PYG{p}{:} \PYG{p}{(}\PYG{l+s}{r\PYGZ
\PYG{l+s}{r\PYGZsq{}}\PYG{l+s}{Eine}\PYG{l+s}{\PYGZbs{}}\PYG{l+s}{s+}\PYG{l+s}{\PYG
\PYG{l+s}{r\PYGZsq{}}\PYG{l+s}{Eines}\PYG{l+s}{\PYGZbs{}}\PYG{l+s}{s+}\PYG{l+s}{\PY
\PYG{c}{\PYGZsh{} Dutch}
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{nld}\PYG{l+s}{\PYGZsq{}} \PYG{p}{:} \PYG{p}{(}\PYG{l+s}{r\PYGZ
\PYG{l+s}{r\PYGZsq{}}\PYG{l+s}{Ener}\PYG{l+s}{\PYGZbs{}}\PYG{l+s}{s+}\PYG{l+s}{\PYG
\PYG{l+s}{r\PYGZdq{}}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{t}\PYG{l+s}{\PYGZbs{}}\PYG{l+s}{
\PYG{c}{\PYGZsh{} Swedish}
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{swe}\PYG{l+s}{\PYGZsq{}} \PYG{p}{:} \PYG{p}{(}\PYG{l+s}{r\PYGZ
\PYG{c}{\PYGZsh{} Turkish}
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{tur}\PYG{l+s}{\PYGZsq{}} \PYG{p}{:} \PYG{p}{(}\PYG{l+s}{r\PYGZ
\PYG{c}{\PYGZsh{} Afrikaans}
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{afr}\PYG{l+s}{\PYGZsq{}} \PYG{p}{:} \PYG{p}{(}\PYG{l+s}{r\PYGZ
\PYG{c}{\PYGZsh{} Greek}
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{ell}\PYG{l+s}{\PYGZsq{}} \PYG{p}{:} \PYG{p}{(}\PYG{l+s}{r\PYGZ
\PYG{l+s}{r\PYGZdq{}}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{Enas}\PYG{l+s}{\PYGZbs{}}\PYG{l+
\PYG{c}{\PYGZsh{} Hungarian}
\PYG{l+s}{\PYGZsq{}}\PYG{l+s}{hun}\PYG{l+s}{\PYGZsq{}} \PYG{p}{:} \PYG{p}{(}\PYG{l+s}{r\PYGZ
\PYG{p}{\PYGZcb{}}
\PYG{n}{default\PYGZus{}language\PYGZus{}for\PYGZus{}title\PYGZus{}sort} \PYG{o}{=} \PYG{n+nb+bp}{Non
\PYG{n}{title\PYGZus{}sort\PYGZus{}articles}\PYG{o}{=}\PYG{l+s}{r\PYGZsq{}}\PYG{l+s}{\PYGZca{}(A\text
\PYG{c}{\PYGZsh{}: Specify a folder calibre should connect to at startup}
\PYG{c}{\PYGZsh{} Specify a folder that calibre should connect to at startup using}
\PYG{c}{\PYGZsh{} connect\PYGZus{}to\PYGZus{}folder. This must be a full path to the folder. If the f
\PYG{c}{\PYGZsh{} not exist when calibre starts, it is ignored. If there are \PYGZsq{}\PYGZbs{}\PYGZs
\PYG{c}{\PYGZsh{} the path (such as in Windows paths), you must double them.}
\PYG{c}{\PYGZsh{} Examples:}
\PYG{c}{\PYGZsh{}
auto\PYGZus{}connect\PYGZus{}to\PYGZus{}folder = \PYGZsq{}C:\PYGZbs{}\PYGZbs{}U
\PYG{c}{\PYGZsh{}
auto\PYGZus{}connect\PYGZus{}to\PYGZus{}folder = \PYGZsq{}/home/dropbox/My Drop
\PYG{n}{auto\PYGZus{}connect\PYGZus{}to\PYGZus{}folder} \PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{\PYG
\PYG{c}{\PYGZsh{}: Specify renaming rules for SONY collections}
\PYG{c}{\PYGZsh{} Specify renaming rules for sony collections. This tweak is only applicable if}
226
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
\PYG{c}{\PYGZsh{} metadata management is set to automatic. Collections on Sonys are named}
\PYG{c}{\PYGZsh{} depending upon whether the field is standard or custom. A collection derived}
\PYG{c}{\PYGZsh{} from a standard field is named for the value in that field. For example, if}
\PYG{c}{\PYGZsh{} the standard \PYGZsq{}series\PYGZsq{} column contains the value \PYGZsq{}Darkover\P
\PYG{c}{\PYGZsh{} collection name is \PYGZsq{}Darkover\PYGZsq{}. A collection derived from a custom f
\PYG{c}{\PYGZsh{} have the name of the field added to the value. For example, if a custom series}
\PYG{c}{\PYGZsh{} column named \PYGZsq{}My Series\PYGZsq{} contains the name \PYGZsq{}Darkover\PYGZsq
\PYG{c}{\PYGZsh{} will by default be named \PYGZsq{}Darkover (My Series)\PYGZsq{}. For purposes of th
\PYG{c}{\PYGZsh{} documentation, \PYGZsq{}Darkover\PYGZsq{} is called the value and \PYGZsq{}My Serie
\PYG{c}{\PYGZsh{} category. If two books have fields that generate the same collection name,}
\PYG{c}{\PYGZsh{} then both books will be in that collection.}
\PYG{c}{\PYGZsh{} This set of tweaks lets you specify for a standard or custom field how}
\PYG{c}{\PYGZsh{} the collections are to be named. You can use it to add a description to a}
\PYG{c}{\PYGZsh{} standard field, for example \PYGZsq{}Foo (Tag)\PYGZsq{} instead of the \PYGZsq{}Foo
\PYG{c}{\PYGZsh{} it to force multiple fields to end up in the same collection. For example, you}
\PYG{c}{\PYGZsh{} could force the values in \PYGZsq{}series\PYGZsq{}, \PYGZsq{}\PYGZsh{}my\PYGZus{}se
\PYG{c}{\PYGZsh{} appear in collections named \PYGZsq{}some\PYGZus{}value (Series)\PYGZsq{}, thereby
\PYG{c}{\PYGZsh{} fields into one set of collections.}
\PYG{c}{\PYGZsh{} There are two related tweaks. The first determines the category name to use}
\PYG{c}{\PYGZsh{} for a metadata field. The second is a template, used to determines how the}
\PYG{c}{\PYGZsh{} value and category are combined to create the collection name.}
\PYG{c}{\PYGZsh{} The syntax of the first tweak, sony\PYGZus{}collection\PYGZus{}renaming\PYGZus{}rul
\PYG{c}{\PYGZsh{} \PYGZob{}\PYGZsq{}field\PYGZus{}lookup\PYGZus{}name\PYGZsq{}:\PYGZsq{}category\PYGZ
\PYG{c}{\PYGZsh{} The second tweak, sony\PYGZus{}collection\PYGZus{}name\PYGZus{}template, is a templ
\PYG{c}{\PYGZsh{} same template language as plugboards and save templates. This tweak controls}
\PYG{c}{\PYGZsh{} how the value and category are combined together to make the collection name.}
\PYG{c}{\PYGZsh{} The only two fields available are \PYGZob{}category\PYGZcb{} and \PYGZob{}value\PYG
\PYG{c}{\PYGZsh{} never empty. The \PYGZob{}category\PYGZcb{} field can be empty. The default is to p
\PYG{c}{\PYGZsh{} value first, then the category enclosed in parentheses, it isn\PYGZsq{}t empty:}
\PYG{c}{\PYGZsh{} \PYGZsq{}\PYGZob{}value\PYGZcb{} \PYGZob{}category:\textbar{}(\textbar{})\PYGZcb{}\
\PYG{c}{\PYGZsh{} Examples: The first three examples assume that the second tweak}
\PYG{c}{\PYGZsh{} has not been changed.}
\PYG{c}{\PYGZsh{} 1: I want three series columns to be merged into one set of collections. The}
\PYG{c}{\PYGZsh{} column lookup names are \PYGZsq{}series\PYGZsq{}, \PYGZsq{}\PYGZsh{}series\PYGZus{}
\PYG{c}{\PYGZsh{} in the parenthesis. The value to use in the tweak value would be:}
\PYG{c}{\PYGZsh{}
sony\PYGZus{}collection\PYGZus{}renaming\PYGZus{}rules=\PYGZob{}\PYGZsq{}series\
\PYG{c}{\PYGZsh{} 2: I want the word \PYGZsq{}(Series)\PYGZsq{} to appear on collections made from se
\PYG{c}{\PYGZsh{} the word \PYGZsq{}(Tag)\PYGZsq{} to appear on collections made from tags. Use:}
\PYG{c}{\PYGZsh{}
sony\PYGZus{}collection\PYGZus{}renaming\PYGZus{}rules=\PYGZob{}\PYGZsq{}series\
\PYG{c}{\PYGZsh{} 3: I want \PYGZsq{}series\PYGZsq{} and \PYGZsq{}\PYGZsh{}myseries\PYGZsq{} to be me
\PYG{c}{\PYGZsh{} to have \PYGZsq{}(Series)\PYGZsq{} appended. The renaming rule is:}
\PYG{c}{\PYGZsh{}
sony\PYGZus{}collection\PYGZus{}renaming\PYGZus{}rules=\PYGZob{}\PYGZsq{}series\
\PYG{c}{\PYGZsh{} 4: Same as example 2, but instead of having the category name in parentheses}
\PYG{c}{\PYGZsh{} and appended to the value, I want it prepended and separated by a colon, such}
\PYG{c}{\PYGZsh{} as in Series: Darkover. I must change the template used to format the category name
\PYG{c}{\PYGZsh{} The resulting two tweaks are:}
\PYG{c}{\PYGZsh{}
sony\PYGZus{}collection\PYGZus{}renaming\PYGZus{}rules=\PYGZob{}\PYGZsq{}series\
\PYG{c}{\PYGZsh{}
sony\PYGZus{}collection\PYGZus{}name\PYGZus{}template=\PYGZsq{}\PYGZob{}category
\PYG{n}{sony\PYGZus{}collection\PYGZus{}renaming\PYGZus{}rules}\PYG{o}{=}\PYG{p}{\PYGZob{}}\PYG{p}{\P
\PYG{n}{sony\PYGZus{}collection\PYGZus{}name\PYGZus{}template}\PYG{o}{=}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}
\PYG{c}{\PYGZsh{}: Specify how SONY collections are sorted}
\PYG{c}{\PYGZsh{} Specify how sony collections are sorted. This tweak is only applicable if}
\PYG{c}{\PYGZsh{} metadata management is set to automatic. You can indicate which metadata is to}
\PYG{c}{\PYGZsh{} be used to sort on a collection\PYGZhy{}by\PYGZhy{}collection basis. The format of
\PYG{c}{\PYGZsh{} is a list of metadata fields from which collections are made, followed by the}
\PYG{c}{\PYGZsh{} name of the metadata field containing the sort value.}
\PYG{c}{\PYGZsh{} Example: The following indicates that collections built from pubdate and tags}
1.10. Calibreyi özelleştirmek
227
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
\PYG{c}{\PYGZsh{} are to be sorted by the value in the custom column \PYGZsq{}\PYGZsh{}mydate\PYGZsq{
\PYG{c}{\PYGZsh{} built from \PYGZsq{}series\PYGZsq{} are to be sorted by \PYGZsq{}series\PYGZus{}ind
\PYG{c}{\PYGZsh{} collections are to be sorted by title. If a collection metadata field is not}
\PYG{c}{\PYGZsh{} named, then if it is a series\PYGZhy{} based collection it is sorted by series orde
\PYG{c}{\PYGZsh{} otherwise it is sorted by title order.}
\PYG{c}{\PYGZsh{} [([\PYGZsq{}pubdate\PYGZsq{}, \PYGZsq{}tags\PYGZsq{}],\PYGZsq{}\PYGZsh{}mydate\PYGZ
\PYG{c}{\PYGZsh{} Note that the bracketing and parentheses are required. The syntax is}
\PYG{c}{\PYGZsh{} [ ( [list of fields], sort field ) , ( [ list of fields ] , sort field ) ]}
\PYG{c}{\PYGZsh{} Default: empty (no rules), so no collection attributes are named.}
\PYG{n}{sony\PYGZus{}collection\PYGZus{}sorting\PYGZus{}rules} \PYG{o}{=} \PYG{p}{[}\PYG{p}{]}
\PYG{c}{\PYGZsh{}: Control how tags are applied when copying books to another library}
\PYG{c}{\PYGZsh{} Set this to True to ensure that tags in \PYGZsq{}Tags to add when adding}
\PYG{c}{\PYGZsh{} a book\PYGZsq{} are added when copying books to another library}
\PYG{n}{add\PYGZus{}new\PYGZus{}book\PYGZus{}tags\PYGZus{}when\PYGZus{}importing\PYGZus{}books} \PYG{
\PYG{c}{\PYGZsh{}: Set the maximum number of tags to show per book in the content server}
\PYG{n}{max\PYGZus{}content\PYGZus{}server\PYGZus{}tags\PYGZus{}shown}\PYG{o}{=}\PYG{l+m+mi}{5}
\PYG{c}{\PYGZsh{}: Set custom metadata fields that the content server will or will not display.}
\PYG{c}{\PYGZsh{} content\PYGZus{}server\PYGZus{}will\PYGZus{}display is a list of custom fields to b
\PYG{c}{\PYGZsh{} content\PYGZus{}server\PYGZus{}wont\PYGZus{}display is a list of custom fields not
\PYG{c}{\PYGZsh{} wont\PYGZus{}display has priority over will\PYGZus{}display.}
\PYG{c}{\PYGZsh{} The special value \PYGZsq{}*\PYGZsq{} means all custom fields. The value [] means n
\PYG{c}{\PYGZsh{} Defaults:}
\PYG{c}{\PYGZsh{}
content\PYGZus{}server\PYGZus{}will\PYGZus{}display = [\PYGZsq{}*\PYGZsq{}]}
\PYG{c}{\PYGZsh{}
content\PYGZus{}server\PYGZus{}wont\PYGZus{}display = []}
\PYG{c}{\PYGZsh{} Examples:}
\PYG{c}{\PYGZsh{} To display only the custom fields \PYGZsh{}mytags and \PYGZsh{}genre:}
\PYG{c}{\PYGZsh{}
content\PYGZus{}server\PYGZus{}will\PYGZus{}display = [\PYGZsq{}\PYGZsh{}mytags\P
\PYG{c}{\PYGZsh{}
content\PYGZus{}server\PYGZus{}wont\PYGZus{}display = []}
\PYG{c}{\PYGZsh{} To display all fields except \PYGZsh{}mycomments:}
\PYG{c}{\PYGZsh{}
content\PYGZus{}server\PYGZus{}will\PYGZus{}display = [\PYGZsq{}*\PYGZsq{}]}
\PYG{c}{\PYGZsh{}
content\PYGZus{}server\PYGZus{}wont\PYGZus{}display[\PYGZsq{}\PYGZsh{}mycomments\
\PYG{n}{content\PYGZus{}server\PYGZus{}will\PYGZus{}display} \PYG{o}{=} \PYG{p}{[}\PYG{l+s}{\PYGZsq{}
\PYG{n}{content\PYGZus{}server\PYGZus{}wont\PYGZus{}display} \PYG{o}{=} \PYG{p}{[}\PYG{p}{]}
\PYG{c}{\PYGZsh{}: Set the maximum number of sort \PYGZsq{}levels\PYGZsq{}}
\PYG{c}{\PYGZsh{} Set the maximum number of sort \PYGZsq{}levels\PYGZsq{} that calibre will use to re
\PYG{c}{\PYGZsh{} library after certain operations such as searches or device insertion. Each}
\PYG{c}{\PYGZsh{} sort level adds a performance penalty. If the database is large (thousands of}
\PYG{c}{\PYGZsh{} books) the penalty might be noticeable. If you are not concerned about multi\PYGZhy
\PYG{c}{\PYGZsh{} level sorts, and if you are seeing a slowdown, reduce the value of this tweak.}
\PYG{n}{maximum\PYGZus{}resort\PYGZus{}levels} \PYG{o}{=} \PYG{l+m+mi}{5}
\PYG{c}{\PYGZsh{}: Choose whether dates are sorted using visible fields}
\PYG{c}{\PYGZsh{} Date values contain both a date and a time. When sorted, all the fields are}
\PYG{c}{\PYGZsh{} used, regardless of what is displayed. Set this tweak to True to use only}
\PYG{c}{\PYGZsh{} the fields that are being displayed.}
\PYG{n}{sort\PYGZus{}dates\PYGZus{}using\PYGZus{}visible\PYGZus{}fields} \PYG{o}{=} \PYG{n+nb+bp}{Fal
\PYG{c}{\PYGZsh{}: Fuzz value for trimming covers}
\PYG{c}{\PYGZsh{} The value used for the fuzz distance when trimming a cover.}
\PYG{c}{\PYGZsh{} Colors within this distance are considered equal.}
\PYG{c}{\PYGZsh{} The distance is in absolute intensity units.}
\PYG{n}{cover\PYGZus{}trim\PYGZus{}fuzz\PYGZus{}value} \PYG{o}{=} \PYG{l+m+mi}{1}
\PYG{c}{\PYGZsh{}: Control behavior of the book list}
228
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
\PYG{c}{\PYGZsh{} You can control the behavior of doubleclicks on the books list.}
\PYG{c}{\PYGZsh{} Choices: open\PYGZus{}viewer, do\PYGZus{}nothing,}
\PYG{c}{\PYGZsh{} edit\PYGZus{}cell, edit\PYGZus{}metadata. Selecting anything other than open\PYGZus
\PYG{c}{\PYGZsh{} side effect of disabling editing a field using a single click.}
\PYG{c}{\PYGZsh{} Default: open\PYGZus{}viewer.}
\PYG{c}{\PYGZsh{} Example: doubleclick\PYGZus{}on\PYGZus{}library\PYGZus{}view = \PYGZsq{}do\PYGZus{}
\PYG{c}{\PYGZsh{} You can also control whether the book list scrolls horizontal per column or}
\PYG{c}{\PYGZsh{} per pixel. Default is per column.}
\PYG{n}{doubleclick\PYGZus{}on\PYGZus{}library\PYGZus{}view} \PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}
\PYG{n}{horizontal\PYGZus{}scrolling\PYGZus{}per\PYGZus{}column} \PYG{o}{=} \PYG{n+nb+bp}{True}
\PYG{c}{\PYGZsh{}: Language to use when sorting.}
\PYG{c}{\PYGZsh{} Setting this tweak will force sorting to use the}
\PYG{c}{\PYGZsh{} collating order for the specified language. This might be useful if you run}
\PYG{c}{\PYGZsh{} calibre in English but want sorting to work in the language where you live.}
\PYG{c}{\PYGZsh{} Set the tweak to the desired ISO 639\PYGZhy{}1 language code, in lower case.}
\PYG{c}{\PYGZsh{} You can find the list of supported locales at}
\PYG{c}{\PYGZsh{} http://publib.boulder.ibm.com/infocenter/iseries/v5r3/topic/nls/rbagsicusortsequenc
\PYG{c}{\PYGZsh{} Default: locale\PYGZus{}for\PYGZus{}sorting = \PYGZsq{}\PYGZsq{} \PYGZhy{}\PYGZhy{}
\PYG{c}{\PYGZsh{} Example: locale\PYGZus{}for\PYGZus{}sorting = \PYGZsq{}fr\PYGZsq{} \PYGZhy{}\PYGZhy
\PYG{c}{\PYGZsh{} Example: locale\PYGZus{}for\PYGZus{}sorting = \PYGZsq{}nb\PYGZsq{} \PYGZhy{}\PYGZhy
\PYG{n}{locale\PYGZus{}for\PYGZus{}sorting} \PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{\PYGZsq{}}
\PYG{c}{\PYGZsh{}: Number of columns for custom metadata in the edit metadata dialog}
\PYG{c}{\PYGZsh{} Set whether to use one or two columns for custom metadata when editing}
\PYG{c}{\PYGZsh{} metadata one book at a time. If True, then the fields are laid out using two}
\PYG{c}{\PYGZsh{} columns. If False, one column is used.}
\PYG{n}{metadata\PYGZus{}single\PYGZus{}use\PYGZus{}2\PYGZus{}cols\PYGZus{}for\PYGZus{}custom\PYGZus{
\PYG{c}{\PYGZsh{}: Order of custom column(s) in edit metadata}
\PYG{c}{\PYGZsh{} Controls the order that custom columns are listed in edit metadata single}
\PYG{c}{\PYGZsh{} and bulk. The columns listed in the tweak are displayed first and in the}
\PYG{c}{\PYGZsh{} order provided. Any columns not listed are dislayed after the listed ones,}
\PYG{c}{\PYGZsh{} in alphabetical order. Do note that this tweak does not change the size of}
\PYG{c}{\PYGZsh{} the edit widgets. Putting comments widgets in this list may result in some}
\PYG{c}{\PYGZsh{} odd widget spacing when using two\PYGZhy{}column mode.}
\PYG{c}{\PYGZsh{} Enter a comma\PYGZhy{}separated list of custom field lookup names, as in}
\PYG{c}{\PYGZsh{} metadata\PYGZus{}edit\PYGZus{}custom\PYGZus{}column\PYGZus{}order = [\PYGZsq{}\PYGZ
\PYG{n}{metadata\PYGZus{}edit\PYGZus{}custom\PYGZus{}column\PYGZus{}order} \PYG{o}{=} \PYG{p}{[}\PYG{
\PYG{c}{\PYGZsh{}: The number of seconds to wait before sending emails}
\PYG{c}{\PYGZsh{} The number of seconds to wait before sending emails when using a}
\PYG{c}{\PYGZsh{} public email server like gmx/hotmail/gmail. Default is: 5 minutes}
\PYG{c}{\PYGZsh{} Setting it to lower may cause the server\PYGZsq{}s SPAM controls to kick in,}
\PYG{c}{\PYGZsh{} making email sending fail. Changes will take effect only after a restart of}
\PYG{c}{\PYGZsh{} calibre.}
\PYG{n}{public\PYGZus{}smtp\PYGZus{}relay\PYGZus{}delay} \PYG{o}{=} \PYG{l+m+mi}{3}
\PYG{c}{\PYGZsh{}: The maximum width and height for covers saved in the calibre library}
\PYG{c}{\PYGZsh{} All covers in the calibre library will be resized, preserving aspect ratio,}
\PYG{c}{\PYGZsh{} to fit within this size. This is to prevent slowdowns caused by extremely}
\PYG{c}{\PYGZsh{} large covers}
\PYG{n}{maximum\PYGZus{}cover\PYGZus{}size} \PYG{o}{=} \PYG{p}{(}\PYG{l+m+mi}{165}\PYG{p}{,} \PYG{l+m
\PYG{c}{\PYGZsh{}: Where to send downloaded news}
\PYG{c}{\PYGZsh{} When automatically sending downloaded news to a connected device, calibre}
\PYG{c}{\PYGZsh{} will by default send it to the main memory. By changing this tweak, you can}
\PYG{c}{\PYGZsh{} control where it is sent. Valid values are \PYGZdq{}main\PYGZdq{}, \PYGZdq{}carda\P
1.10. Calibreyi özelleştirmek
229
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
\PYG{c}{\PYGZsh{} that if there isn\PYGZsq{}t enough free space available on the location you choose,
\PYG{c}{\PYGZsh{} the files will be sent to the location with the most free space.}
\PYG{n}{send\PYGZus{}news\PYGZus{}to\PYGZus{}device\PYGZus{}location} \PYG{o}{=} \PYG{l+s}{\PYGZdq{}}
\PYG{c}{\PYGZsh{}: What interfaces should the content server listen on}
\PYG{c}{\PYGZsh{} By default, the calibre content server listens on \PYGZsq{}˙˙˙PYGZsq{} which means
\PYG{c}{\PYGZsh{} accepts IPv4 connections on all interfaces. You can change this to, for}
\PYG{c}{\PYGZsh{} example, \PYGZsq{}127.˙˙1\PYGZsq{} to only listen for connections from the local ma
\PYG{c}{\PYGZsh{} to \PYGZsq{}::\PYGZsq{} to listen to all incoming IPv6 and IPv4 connections (this m
\PYG{c}{\PYGZsh{} work on all operating systems)}
\PYG{n}{server\PYGZus{}listen\PYGZus{}on} \PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{˙˙˙
}\PYG{l+s}{\PYGZ
\PYG{c}{\PYGZsh{}: Unified toolbar on OS X}
\PYG{c}{\PYGZsh{} If you enable this option and restart calibre, the toolbar will be \PYGZsq{}unified
\PYG{c}{\PYGZsh{} with the titlebar as is normal for OS X applications. However, doing this has}
\PYG{c}{\PYGZsh{} various bugs, for instance the minimum width of the toolbar becomes twice}
\PYG{c}{\PYGZsh{} what it should be and it causes other random bugs on some systems, so turn it}
\PYG{c}{\PYGZsh{} on at your own risk!}
\PYG{n}{unified\PYGZus{}title\PYGZus{}toolbar\PYGZus{}on\PYGZus{}osx} \PYG{o}{=} \PYG{n+nb+bp}{False}
\PYG{c}{\PYGZsh{}: Save original file when converting/polishing from same format to same format}
\PYG{c}{\PYGZsh{} When calibre does a conversion from the same format to the same format, for}
\PYG{c}{\PYGZsh{} example, from EPUB to EPUB, the original file is saved, so that in case the}
\PYG{c}{\PYGZsh{} conversion is poor, you can tweak the settings and run it again. By setting}
\PYG{c}{\PYGZsh{} this to False you can prevent calibre from saving the original file.}
\PYG{c}{\PYGZsh{} Similarly, by setting save\PYGZus{}original\PYGZus{}format\PYGZus{}when\PYGZus{}pol
\PYG{c}{\PYGZsh{} prevent calibre from saving the original file when polishing.}
\PYG{n}{save\PYGZus{}original\PYGZus{}format} \PYG{o}{=} \PYG{n+nb+bp}{True}
\PYG{n}{save\PYGZus{}original\PYGZus{}format\PYGZus{}when\PYGZus{}polishing} \PYG{o}{=} \PYG{n+nb+bp}
\PYG{c}{\PYGZsh{}: Number of recently viewed books to show}
\PYG{c}{\PYGZsh{} Right\PYGZhy{}clicking the View button shows a list of recently viewed books. Contr
\PYG{c}{\PYGZsh{} how many should be shown, here.}
\PYG{n}{gui\PYGZus{}view\PYGZus{}history\PYGZus{}size} \PYG{o}{=} \PYG{l+m+mi}{15}
\PYG{c}{\PYGZsh{}: Change the font size of book details in the interface}
\PYG{c}{\PYGZsh{} Change the font size at which book details are rendered in the side panel and}
\PYG{c}{\PYGZsh{} comments are rendered in the metadata edit dialog. Set it to a positive or}
\PYG{c}{\PYGZsh{} negative number to increase or decrease the font size.}
\PYG{n}{change\PYGZus{}book\PYGZus{}details\PYGZus{}font\PYGZus{}size\PYGZus{}by} \PYG{o}{=} \PYG{l+m
\PYG{c}{\PYGZsh{}: Compile General Program Mode templates to Python}
\PYG{c}{\PYGZsh{} Compiled general program mode templates are significantly faster than}
\PYG{c}{\PYGZsh{} interpreted templates. Setting this tweak to True causes calibre to compile}
\PYG{c}{\PYGZsh{} (in most cases) general program mode templates. Setting it to False causes}
\PYG{c}{\PYGZsh{} calibre to use the old behavior \PYGZhy{}\PYGZhy{} interpreting the templates. Set
\PYG{c}{\PYGZsh{} to False if some compiled templates produce incorrect values.}
\PYG{c}{\PYGZsh{} Default:
compile\PYGZus{}gpm\PYGZus{}templates = True}
\PYG{c}{\PYGZsh{} No compile: compile\PYGZus{}gpm\PYGZus{}templates = False}
\PYG{n}{compile\PYGZus{}gpm\PYGZus{}templates} \PYG{o}{=} \PYG{n+nb+bp}{True}
\PYG{c}{\PYGZsh{}: What format to default to when using the Tweak feature}
\PYG{c}{\PYGZsh{} The Tweak feature of calibre allows direct editing of a book format.}
\PYG{c}{\PYGZsh{} If multiple formats are available, calibre will offer you a choice}
\PYG{c}{\PYGZsh{} of formats, defaulting to your preferred output format if it is available.}
\PYG{c}{\PYGZsh{} Set this tweak to a specific value of \PYGZsq{}EPUB\PYGZsq{} or \PYGZsq{}AZW3\PYGZs
\PYG{c}{\PYGZsh{} to that format rather than your output format preference.}
\PYG{c}{\PYGZsh{} Set to a value of \PYGZsq{}remember\PYGZsq{} to use whichever format you chose last
230
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
\PYG{c}{\PYGZsh{} used the Tweak feature.}
\PYG{c}{\PYGZsh{} Examples:}
\PYG{c}{\PYGZsh{}
default\PYGZus{}tweak\PYGZus{}format
\PYG{c}{\PYGZsh{}
default\PYGZus{}tweak\PYGZus{}format
\PYG{c}{\PYGZsh{}
default\PYGZus{}tweak\PYGZus{}format
\PYG{n}{default\PYGZus{}tweak\PYGZus{}format} \PYG{o}{=}
= None
(Use output format)}
= \PYGZsq{}EPUB\PYGZsq{}}
= \PYGZsq{}remember\PYGZsq{}}
\PYG{n+nb+bp}{None}
\PYG{c}{\PYGZsh{}: Do not preselect a completion when editing authors/tags/series/etc.}
\PYG{c}{\PYGZsh{} This means that you can make changes and press Enter and your changes will}
\PYG{c}{\PYGZsh{} not be overwritten by a matching completion. However, if you wish to use the}
\PYG{c}{\PYGZsh{} completions you will now have to press Tab to select one before pressing}
\PYG{c}{\PYGZsh{} Enter. Which technique you prefer will depend on the state of metadata in}
\PYG{c}{\PYGZsh{} your library and your personal editing style.}
\PYG{n}{preselect\PYGZus{}first\PYGZus{}completion} \PYG{o}{=} \PYG{n+nb+bp}{False}
\PYG{c}{\PYGZsh{}: Completion mode when editing authors/tags/series/etc.}
\PYG{c}{\PYGZsh{} By default, when completing items, calibre will show you all the candidates}
\PYG{c}{\PYGZsh{} that start with the text you have already typed. You can instead have it show}
\PYG{c}{\PYGZsh{} all candidates that contain the text you have already typed. To do this, set}
\PYG{c}{\PYGZsh{} completion\PYGZus{}mode to \PYGZsq{}contains\PYGZsq{}. For example, if you type asi
\PYG{c}{\PYGZsh{} Asimov and Quasimodo, whereas the default behavior would match only Asimov.}
\PYG{n}{completion\PYGZus{}mode} \PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{prefix}\PYG{l+s}{\PYGZsq{}}
\PYG{c}{\PYGZsh{}: Recognize numbers inside text when sorting}
\PYG{c}{\PYGZsh{} This means that when sorting on text fields like title the text \PYGZdq{}Book 2\PYG
\PYG{c}{\PYGZsh{} will sort before the text \PYGZdq{}Book 1\PYGZdq{}. If you want this behavior, set}
\PYG{c}{\PYGZsh{} numeric\PYGZus{}collation = True note that doing so will cause problems with text}
\PYG{c}{\PYGZsh{} that starts with numbers and is a little slower.}
\PYG{n}{numeric\PYGZus{}collation} \PYG{o}{=} \PYG{n+nb+bp}{False}
\PYG{c}{\PYGZsh{}: Sort the list of libraries alphabetically}
\PYG{c}{\PYGZsh{} The list of libraries in the Copy to Library and Quick Switch menus are}
\PYG{c}{\PYGZsh{} normally sorted by most used. However, if there are more than a certain}
\PYG{c}{\PYGZsh{} number of such libraries, the sorting becomes alphabetic. You can set that}
\PYG{c}{\PYGZsh{} number here. The default is ten libraries.}
\PYG{n}{many\PYGZus{}libraries} \PYG{o}{=} \PYG{l+m+mi}{1}
\PYG{c}{\PYGZsh{}: Highlight the virtual library name when using a Virtual Library}
\PYG{c}{\PYGZsh{} The virtual library name next to the Virtual Library button is highlighted in}
\PYG{c}{\PYGZsh{} yellow when using a Virtual Library. You can choose the color used for the}
\PYG{c}{\PYGZsh{} highlight with this tweak. Set it to \PYGZsq{}transparent\PYGZsq{} to disable highl
\PYG{n}{highlight\PYGZus{}virtual\PYGZus{}library} \PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{yellow}\P
\PYG{c}{\PYGZsh{}: Choose available output formats for conversion}
\PYG{c}{\PYGZsh{} Restrict the list of available output formats in the conversion dialogs.}
\PYG{c}{\PYGZsh{} For example, if you only want to convert to EPUB and AZW3, change this to}
\PYG{c}{\PYGZsh{} restrict\PYGZus{}output\PYGZus{}formats = [\PYGZsq{}EPUB\PYGZsq{}, \PYGZsq{}AZW3\PY
\PYG{c}{\PYGZsh{} all available output formats to be present.}
\PYG{n}{restrict\PYGZus{}output\PYGZus{}formats} \PYG{o}{=} \PYG{n+nb+bp}{None}
\PYG{c}{\PYGZsh{}: Set the thumbnail image quality used by the content server}
\PYG{c}{\PYGZsh{} The quality of a thumbnail is largely controlled by the compression quality}
\PYG{c}{\PYGZsh{} used when creating it. Set this to a larger number to improve the quality.}
\PYG{c}{\PYGZsh{} Note that the thumbnails get much larger with larger compression quality}
\PYG{c}{\PYGZsh{} numbers.}
\PYG{c}{\PYGZsh{} The value can be between 5 and 99}
\PYG{n}{content\PYGZus{}server\PYGZus{}thumbnail\PYGZus{}compression\PYGZus{}quality} \PYG{o}{=} \PYG
1.10. Calibreyi özelleştirmek
231
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
1.10.4 Simgelerin, şablonların ve benzerlerinin üzerine yazmak
Not: calibre has direct support for icon themes, there are several icon themes available for calibre, that you can use
by going to Preferences->Look & Feel->Change Icon theme. The icon themes use the same mechanism as described
below for overriding static resources.
calibre simgeler, javascript ve şablonlar gibi sabit kaynakları özelleştirdiğiniz sürümleriyle değiştirmenize izin verir. Tüm sabit kaynaklar calibre kurulum dizininin kaynaklar alt-dizininde depolanırlar. Windows’ta genellikle C:\Program Files\Calibre2\resources dizini, OS X’te ise
/Applications/calibre.app/Contents/Resources/resources/ dizini bunun için kullanılır.
Linux’ta web sayfasındaki kurulum dosyasını kullanmışsanız bu dizin /opt/calibre/resources olacaktır. Bu
yollar calibre’yi nereye kurmayı seçtiğinize göre değişebilecektir.
Bir sonraki calibre güncellemesinde üzerine yazılacağı için bu kaynak dizinindeki dosyaları değiştirmemelisiniz. Bunun yerine Tercihler->Gelişmiş->Çeşitli menüsüne gidip calibre yapılandırma dizinini aç alanına tıklayın. Bu yapılandırma dizininde resources isimli bir alt dizin oluşturun ve üzerine yazmak istediğiniz dosyaları içine taşıyın. Dosyaları
uygun alt dizinlere yerleştirin; örneğin resimleri resources/images dizinine koyabilirsiniz. calibre yeniden başladığında özel dosyalarınızdaki tercihleri otomatik olarak kullanacaktır.
Örneğin; Kitapları kaldır eyleminin simgesini değiştirmek isterseniz önce gömülü olarak gelen kaynaklar dizinine
bakıp resources/images/trash.png dosyasını görürsünüz. Buna alternatif olarak PNG biçiminde kendi
mytrash.png dosyanızın olduğunu kabul edelim, bunu resources/images/trash.png yapılandırma dizinine kaydetmelisiniz. calibre’nin kullandığı bütün simgeler resources/images dizininin alt dizinlerinde bulunurlar.
1.10.5 Calibre için özel ikon teman oluşturuluyor
Güzel ikon setleri oluşturduysan ve Calibre’nin kendi ikon teması desteği ile tasarımını diğer kullanıcılarla paylaşmak istiyorsan tasarımını kolaylıkla tema paketi haline getirebilirsin. Bunu yapmak için Preferences->Miscellaneous>Create icon theme bölümünden ikonları koyduğun dosyayı seç. (Genellikle resources/images klasöründedir.)
Tema üstverilerini doldur ve OK tuşuna bas. Bu işlemden sonra tema ikonlarını içeren bir zip dosyası oluşturulacaktir.
Bu dosyayı ‘Mobileread <http://www.mobileread.com/forums/forumdisplay.php?f=166>‘deki Calibre forumuna yükleyebilirsin. Bu işlem Calibre’nin kendi ikon teması sistemiyle senin temanı herkesin ulaşabileceği hale getirecektir.
1.10.6 Eklentilerle calibre’yi özelleştirmek
calibre çok modüler bir tasarıma sahiptir. calibre’nin tüm işlevselliği neredeyse eklentilerinden gelmektedir. Eklentiler
iletişim, haberleri indirmek (bunlara tarif denilmektedir), kullanıcı arayüzündeki çeşitli bileşenler için, farklı aygıtlara
bağlanmak ve dosyaları calibre’ye eklerken işlemek gibi amaçlar için kullanılırlar. Kurulumda gelen eklentilerin bir
listesini Tercihler->Eklentiler menüsünde bulabilirsiniz.
Kendi eklentilerinizi yazarak calibre’yi özelleştirebilir ve davranışlarını genişletebilirsiniz. Eklenti mimarisi çok basittir, Calibre’nin işlevselliğini artırmak için kendi eklentilerinizi yazmak (sayfa 173) rehberine bakabilirsiniz.
1.11 Komut Satırı Arayüzü
Not:
ğin
232
OS
calibre’yi
X
üzerinde
komut
satırı
/Applications
dizinine
araçları
calibre
ile
kurmuşsanız
komut
birlikte
satırı
gelir,
örnearaçları
da
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
/Applications/calibre.app/Contents/console.app/Contents/MacOS/ dizininde bulunur.
1.11.1 Belgelendirilmiş Komutlar
calibre
=
{}=
{}@default
=0=1=2=0=1=2calibre [seçenekler] [ekitabın\PYGZus{}yolu]
Calibre Grafik Kullanıcı Arayüzünü çalıştırın ve isteğe bağlı olarak ekitabın_yolu ile veritabanına ekleyin.
calibre‘a içinde boşluklar olan bağımsız değişken verdiğinizde, değişkenleri tırnak içine aldığınızdan emin olun.
Örneğin “C:içinde boşluk olan bir yol”
[options]
--detach
Denetim terminalinden ayır (sadece linux’ta)
--help, -h
bu yardım iletisini göster ve çık
--ignore-plugins
Özel eklentileri yoksay, calibre’nin başlamasına engel olan eklentiler kurmuşsanız faydalı olacaktır
--no-update-check
Güncellemeleri denetleme
--shutdown-running-calibre, -s
Çalışmakta olan bir calibre oturumu varsa kapanmasını sağlar. Devam etmekte olan işlemler olması halinde
uyarı vermeksizin kapatılacağı için dikkatle kullanınız.
--start-in-tray
Sistem çekmecesinde küçülterek başlat.
--verbose, -v
Yoksayın, kullanmayın. Sadece eski nedenlerle mevcut
--version
programın sürüm numarasını göster ve çık
--with-library
Belirtilen konumdaki kitaplığı kullan.
calibre-customize
=
{}=
{}@default
=0=1=2=0=1=2calibre\PYGZhy{}customize Tercihleri
Harici eklentiler yükleyerek Calibre’ye özelleştirin.
calibre-customize‘a içinde boşluklar olan bağımsız değişken verdiğinizde, değişkenleri tırnak içine aldığınızdan emin olun. Örneğin “C:içinde boşluk olan bir yol”
1.11. Komut Satırı Arayüzü
233
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
[options]
--add-plugin, -a
Eklentiyi içeren ZIP dosyasının bulunduğu yeri belirterek eklenti ekleyin.
--build-plugin, -b
Eklenti geliştiricileri için:
--customize-plugin
Eklentiyi özelleştir. Eklenti ismiyle özelleştirme dizesini virgülle ayırarak belirleyin.
--disable-plugin
İsimlendirilmiş eklentiler geçersiz
--enable-plugin
İsimlendirilmiş eklentiler geçerli
--help, -h
bu yardım iletisini göster ve çık
--list-plugins, -l
Kurulu eklentileri listele
--remove-plugin, -r
İsminden yararlanarak özel bir eklentiyi çıkart. Programla gelen eklentiler üzerinde etkisi yoktur.
--version
programın sürüm numarasını göster ve çık
calibre-debug
=
{}=
{}@default
=0=1=2=0=1=2calibre\PYGZhy{}debug [options]
Calibre için kullanışlı çeşitli komut satırı arayüzleri. Seçenekler olmadan, bu komut gömülü bir python yorumlayıcı
başlatır. Ana calibre arayüzünü, calibre görüntüleyici ve calibre düzenleyiciyi de hata ayıklama kipinde başlatabilirsiniz.
Ayrıca özel bir komut satırı aracı olmayan calibre’nin çeşitli başka özelliklerini de içerir, örneğin yazı tipi alt kümeleme, e-kitap fark aracı vs.
Ayrıca calibre-debug kullanarak bağımsız betikler de çalıştırabilirsiniz. Bunu yapmak için şu şekilde çalıştırın:
calibre-debug myscript.py -- --option1 --option2 file1 file2 ...
–‘den sonraki herşey betiğe geçirilir.
calibre-debug‘a içinde boşluklar olan bağımsız değişken verdiğinizde, değişkenleri tırnak içine aldığınızdan
emin olun. Örneğin “C:içinde boşluk olan bir yol”
[options]
--add-simple-plugin
Basit bir eklenti ekleyin (mesela sadece bir .py dosyası olan). Eklenti kodunu içeren py dosyasının konumunu
belirtin.
--command, -c
Python kodunu çalıştır
234
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
--debug-device-driver, -d
Cihaz tarama hata ayıklama çıktısı
--default-programs
calibre’yi Varsayılan Windows Programlarına ekle(çıkart) --default-programs=(register|unregister)
--diff
Calibre fark aracını çalıştır. Mesela: calibre-debug --diff (sayfa 235) dosya1 dosya2
--edit-book, -t
Calibre Kitabı Düzenle aracını hata ayıklama kipinde başlat.
--exec-file, -e
Python kodunu dosyada çalıştır
--explode-book, -x
Kitabı patlat (kitabı, standart HTML araçları ile düzenleyebileceğiniz şekilde HTML dosyaları ve meta verisi
olarak dışa aktarır ve düzenlenmiş HTML dosyalarından kitabı yeniden oluşturur. Tam calibre dönüşümünün
aksine HTML üzerinde ek değişiklikler yapmaz).
--gui, -g
Arayüzü hata ayıklama etkin olara çalıştır. Hata çıktısı stdout ve stderr üzerine yazılır.
--gui-debug
Arayüzü belirtilen konuma günlük kaydı yapan bir hata ayıklama konsolu ile çalıştır. Sadece iç kullanım içindir.
Arayüzü hata ayıklama kipinde çalıştırma için -g seçeneğini kullanın
--help, -h
bu yardım iletisini göster ve çık
--inspect-mobi, -m
Belritilen konumlardaki MOBI dosyalarını denetleyin
--new-server
Run the new calibre content server. Any options specified after a -- will be passed to the server.
--paths
Calibre ortamını kurmak için zorunlu olan konumların çıktısını ver
--py-console, -p
Python konsolunu çalıştır
--reinitialize-db
Belirtilen konumdaki calibre sqlite veritabanını yeniden başlatın. Veritabanı bozulmalarından kurtarmak için
yararlıdır.
--run-plugin, -r
Bir komut satırı arayüzü sunan bir eklentiyi çalıştır. Mesela: calibre-debug -r “Add Books” --file1
--option1 -- işareti sonrasındaki her şey eklentiye argüman olarak geçirilir.
--shutdown-running-calibre, -s
Çalışmakta olan bir calibre oturumu varsa kapanmasını sağlar. Devam etmekte olan işlemler olması halinde
uyarı vermeksizin kapatılacağı için dikkatle kullanınız.
--subset-font, -f
Belirtilen yazı tipini alt kümele. Bu seçenekten sonra -- kullanarak seçeneği yazı tipi alt kümeleme programına
geçirebilirsiniz.
--test-build
Derlemede ikili modülleri dene
--version
programın sürüm numarasını göster ve çık
1.11. Komut Satırı Arayüzü
235
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
--viewer, -w
E-kitap görüntüleyiciyi hata ayıklama kipinde çalıştır
calibre-server
=
{}=
{}@default
=0=1=2=0=1=2calibre\PYGZhy{}server [seçenekler]
calibre içerik sunucusunu başlat. calibre içerik sunucusu calibre kitaplığınızı internet üzerinden yayınlar. Varsayılan
arayüz calibre kitaplığına sınıflandırmalarla göz atmanıza izin verir. Bunun yanında mobil tarayıcılar için bir arayüze
/mobile dizininden ve OPDS tabanlı arayüze /opds dizininden erişebilirsiniz.
OPDS arayüzü BonJour tarafından otomatik olarak sunulur.
calibre-server‘a içinde boşluklar olan bağımsız değişken verdiğinizde, değişkenleri tırnak içine aldığınızdan
emin olun. Örneğin “C:içinde boşluk olan bir yol”
[options]
--auto-reload
Kaynak kod değiştiğinde sunucuyu otomatik olarak yeniden yükle. Tüm ortamlarda çalışmayabilir.
--daemonize
İşlemi bir artalan süreci olarak çalıştır. Windows’ta etkisi yoktur.
--develop
Geliştirme kipi. Sunucu dosya değişikliklerinde otomatik olarak yeniden başlar ve kod dosyalarını (html, css,
js) calibre’nin kaynak sistemi yerine dosya sisteminden sunar.
--help, -h
bu yardım iletisini göster ve çık
--max-cover
Gösterilen kapaklar için maksimum boyut. Öntanımlısı ‘600x800’.
--max-opds-items
ODPS sorgusu başına döndürülecek en fazla eşleşme sayısı. Bu Stanza ve WordPlayer gibi tümleştirmeleri
etkiler.
--max-opds-ungrouped-items
Bu sayıdan fazla öğe olduğunda yazar/etiketler gibi kategorileri ilk harflerine göre grupla. Varsayılan: 100.
Gruplamayı kapatmak için büyük bir sayı olarak ayarlayın.
--password
Erişimi kısıtlamak için bir parola atayın. Varsayılan olarak erişim kısıtlı değildir.
--pidfile
Süreç kimliğini belirtilen dosyaya yaz
--port, -p
Dinlenecek bağlantı noktası. Varsayılan 8080
--restriction
Bu çağrı için kullanılacak bir sanal kitaplık belirtir. Bu seçenek grafik arayüzde belirtilen tüm kitaplık bazlı
ayarları ezer. Uyumluluk için, değer bir sanal kitaplık değil de kaydedilmiş aramaysa, bu kaydedilmiş arama
kullanılır. Ayrıca bir kısıtlama belirtmemişseniz, arayüzde (eğer varsa) belirtilen değerin kullanılacağını unutmayın.
236
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
--thread-pool
Kullanılacak en fazla iş parçacığı sayısı. Varsayılan 30
--timeout, -t
Saniye cinsinden sunucu zaman aşımı. Varsayılan 120
--url-prefix
Tüm adreslerin başına eklenecek ön ek. Bu Apache/nginx gibi sunuculardan ters vekil sunuculuk yapılırken
yararlıdır.
--username
Erişim için parola. Varsayılan: ‘calibre’
--version
programın sürüm numarasını göster ve çık
--with-library
İçerik sunucusu ile sunulacak kitaplık klasörünün yolu
calibre-smtp
=
{}=
{}@default
=0=1=2=0=1=2calibre\PYGZhy{}smtp [seçenekler] [kimden kime metin]
SMTP protokolü kullanarak e-posta gönder. calibre-smtp iki işlem kipine sahiptir. Derleme kipinde kimden kime
ve metni belirtirsiniz, bunlar e-posta iletisi göndermek için inşa edilir ve kullanılırlar. Filtre kipinde, calibre-smtp
e-posta iletisini STDIN’den okur ve gönderir.
metin e-posta iletisinin gövdesidir. metin belirtilmemişse, e-posta iletisi tamamen STDIN’den okunur. kimden gönderecinin, kime ise alıcının e-posta adresidir. STDIN’den tam bir e-posta okunduğunda, kimden ve kime yalnızca SMTP
görüşmesinde kullanılır, ileti başlıkları değiştirilmez.
calibre-smtp‘a içinde boşluklar olan bağımsız değişken verdiğinizde, değişkenleri tırnak içine aldığınızdan emin
olun. Örneğin “C:içinde boşluk olan bir yol”
[options]
--fork, -f
Çatallan ve iletiyi arka planda ilet. Bu seçeneği kullanırsanız, iletim hatalarını ele almak için ayrıca --outbox
(sayfa 237) kullanmalısınız.
--help, -h
bu yardım iletisini göster ve çık
--localhost, -l
Yerel makinenin adı. SMTP sunucusuna bağlanılırken kullanılır.
--outbox, -o
Başarısız epostaların saklanacağı maildir klasörünün yolu.
--timeout, -t
Bağlantı için zaman aşımı
--verbose, -v
Daha çok ayrıntı ver
1.11. Komut Satırı Arayüzü
237
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
--version
programın sürüm numarasını göster ve çık
COMPOSE MAIL Bir eposta oluşturma seçenekleri. Eğer metin girilmediyse yoksayılır
--attachment, -a
Epostaya eklenecek dosya
--subject, -s
Epostanın konusu
SMTP RELAY Bir SMTP sunucusunu posta göndermek için kullanma seçenekleri. calibre –relay seçeneği kullanılmadığı durumlarda postayı doğrudan göndermeye çalışacaktır
--encryption-method, -e
Bağlantıda kullanılan şifreleme yöntemi. TLS, SSL ve NONE arasından birini seçin. Varsayılan TLS’tir. NONE
seçmek çok güvensizdir
--password, -p
Giriş için parola
--port
Posta sunucusuna bağlanılacak bağlantı noktası. Şifreleme yöntemi SSL ise varsayılan olarak 465, diğer durumlarda 25’tir.
--relay, -r
Eposta göndermek için kullanılacak SMTP sunucusu.
--username, -u
Giriş için kullanıcı adı
calibredb
=
{}=
{}@default
=0=1=2=0=1=2calibredb komut [seçenekler] [değişkenler]
calibredb is the command line interface to the calibre database. It has several sub-commands, documented below:
238
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Genel seçenekler (sayfa 239)
list (sayfa 239)
add (sayfa 240)
remove (sayfa 241)
add_format (sayfa 241)
remove_format (sayfa 242)
show_metadata (sayfa 242)
set_metadata (sayfa 242)
export (sayfa 243)
catalog (sayfa 244)
saved_searches (sayfa 245)
add_custom_column (sayfa 245)
custom_columns (sayfa 246)
remove_custom_column (sayfa 246)
set_custom (sayfa 246)
restore_database (sayfa 247)
check_library (sayfa 247)
list_categories (sayfa 248)
backup_metadata (sayfa 248)
clone (sayfa 249)
embed_metadata (sayfa 249)
search (sayfa 250)
Genel seçenekler
--dont-notify-gui
Çalışan calibre arayüzünü (eğer varsa) veritabanı değişikliğinden haberdar etme. Veritabanı bozulmasına neden
olabileceğinden dikkatli kullanın!
--library-path
Calibre kitaplığının yolu. Varsayılan, ayarlardaki yolun kullanılmasıdır.
list
=
{}=
{}@default
=0=1=2=0=1=2calibredb list [seçenekler]
Calibre veritabanındaki kullanılabilir kitapları listele.
calibredb’a içinde boşluklar olan bağımsız değişken verdiğinizde, değişkenleri tırnak içine aldığınızdan emin olun.
Örneğin “C:içinde boşluk olan bir yol”
--ascending
Sonuçları artan şekilde sırala
--fields, -f
Veri tabanındaki kitaplar listelenirken gösterilecek alanlar. Alanların virgülle ayrılmış listesi olmalıdır. Kullanılabilir alanlar: author_sort, authors, comments, cover, formats, id, identifiers, isbn, languages, last_modified,
pubdate, publisher, rating, series, series_index, size, tags, timestamp, title, uuid Varsayılan: title,authors. “all”
özel alanı tüm alanları seçmek için kullanılabilir.
1.11. Komut Satırı Arayüzü
239
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
--for-machine
Makine ayrıştırması için daha uygun olan JSON biçiminde çıktı üret. Satır genişliği ve ayraç seçeneklerinin yok
sayılmasına neden olur.
--help, -h
bu yardım iletisini göster ve çık
--limit
Gösterilecek en fazla sonuç sayısı. Varsayılan: tümü
--line-width, -w
Girdideki bir satırın en fazla genişliği. Varsayılanı ekranın boyutunu algılamaktır.
--prefix
Tüm dosya yolları için önek. Varsayılan kitaplık dizininin mutlak yoludur.
--search, -s
Sonuçları arama sorgusuna göre süzün. Arama sorgusunun biçimi için lütfen Kullanıcı Kılavuzundaki ilgili
belgelendirmeye bakın. Varsayılan olarak süzme işlemi yapılmaz.
--separator
Alanları ayırmak için kullanılan karakter dizisi. Varsayılan olarak boşluk karakteridir.
--sort-by
Sonuçların sıralanacağı alan. Kullanılabilir alanlar: author_sort, authors, comments, cover, formats, identifiers,
isbn, languages, last_modified, pubdate, publisher, rating, series, series_index, size, tags, timestamp, title, uuid
Varsayılan: id
--version
programın sürüm numarasını göster ve çık
add
=
{}=
{}@default
=0=1=2=0=1=2calibredb add [seçenekler] dosya1 dosya2 dosya3 ...
Belirtilen dosyaları veritabanına kitap olarak ekle. İsterseniz dizinleri de belirtebilirsiniz, dizinlerle ilgili seçenekler
için aşağı bakın.
calibredb’a içinde boşluklar olan bağımsız değişken verdiğinizde, değişkenleri tırnak içine aldığınızdan emin olun.
Örneğin “C:içinde boşluk olan bir yol”
--authors, -a
Eklenen kitap(lar)ın yazarlarını ayarla
--cover, -c
Eklenen kitap için kullanılacak kapağın yolu
--duplicates, -d
Kitapları veritabanında olsalar bile ekle. Karşılaştırma kitap başlıklarına göre yapılır.
--empty, -e
Boş bir kitap ekle (biçimi olmayan bir kitap)
--help, -h
bu yardım iletisini göster ve çık
--identifier, -I
Bu kitap için tanımlayıcıları ayarla, örneğin -I asin:XXX -I isbn:YYY
240
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
--isbn, -i
Eklenen kitap(lar)ın ISBN’lerini ayarla
--languages, -l
Virgülle ayrılmış dillerin listesi (bazı dil isimleri anlaşılamayacağı için en iyisi ISO639 dil kodlarını kullanmak
olacaktır)
--one-book-per-directory, -1
Her dizinin sadece bir mantıksal kitap içerdiğini ve içindeki tüm dosyaların o kitabın farklı e-kitap formatları
olduğunu varsay
--recurse, -r
Dizinleri içe doğru işleme tabi tut
--series, -s
Eklenen kitap(lar)ın serilerini ayarla
--series-index, -S
Eklenen kitap(lar)ın seri numaralarını ayarla
--tags, -T
Eklenen kitap(lar)ın etiketlerini ayarla
--title, -t
Eklenen kitap(lar)ın başlıklarını ayarla
--version
programın sürüm numarasını göster ve çık
remove
=
{}=
{}@default
=0=1=2=0=1=2calibredb remove ids
ıids ile belirtilen kitapları veri tabanından sil. ids id numaralarının virgülle ayrılmış listesi olmalıdır (arama komutuyla
id numaralarını alabilirsiniz). Örneğin, 23,34,57-85 (aralık belirtirken, aralıkta son numara dahil edilmez).
calibredb’a içinde boşluklar olan bağımsız değişken verdiğinizde, değişkenleri tırnak içine aldığınızdan emin olun.
Örneğin “C:içinde boşluk olan bir yol”
--help, -h
bu yardım iletisini göster ve çık
--version
programın sürüm numarasını göster ve çık
add_format
=
{}=
{}@default
=0=1=2=0=1=2calibredb add\PYGZus{}format [seçenekler] id e\PYGZhy{}kitap\PYGZus{}dsoyası
e-kitap_dosyası’ndaki e-kitabı id ile tanımlanan mantıksal kitap için kullanılabilir biçime ekle. Arama komutunu kullanarak id alabilirsiniz. Biçim zaten mevcutsa, yer değiştirme seçeneği belirtilmediği takdirde yer değiştirilir.
1.11. Komut Satırı Arayüzü
241
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
calibredb’a içinde boşluklar olan bağımsız değişken verdiğinizde, değişkenleri tırnak içine aldığınızdan emin olun.
Örneğin “C:içinde boşluk olan bir yol”
--dont-replace
Mevcut biçimi değiştirmeyin
--help, -h
bu yardım iletisini göster ve çık
--version
programın sürüm numarasını göster ve çık
remove_format
=
{}=
{}@default
=0=1=2=0=1=2calibredb remove\PYGZus{}format [seçenekler] id fmt
id ile tanımlanan mantıksal kitaptan fmt biçimini kaldır. Arama komutunu kullanarak id numarasını alabilirsiniz. fmt
LRF veya TXT veya EPUB gibi bir dosya uzantısı olmalıdır. Mantıksal kitabın kullanılabilir fmt’si yoksa, hiçbir şey
yapma.
calibredb’a içinde boşluklar olan bağımsız değişken verdiğinizde, değişkenleri tırnak içine aldığınızdan emin olun.
Örneğin “C:içinde boşluk olan bir yol”
--help, -h
bu yardım iletisini göster ve çık
--version
programın sürüm numarasını göster ve çık
show_metadata
=
{}=
{}@default
=0=1=2=0=1=2calibredb show\PYGZus{}metadata [seçenekler] id
id ile tanımlanan kitap için calibre veri tabanında kayıtlı metadata’yı göster. id, arama komutuyla gelen id numarasıdır.
calibredb’a içinde boşluklar olan bağımsız değişken verdiğinizde, değişkenleri tırnak içine aldığınızdan emin olun.
Örneğin “C:içinde boşluk olan bir yol”
--as-opf
Üst veriyi OPF formunda yazdır (XML)
--help, -h
bu yardım iletisini göster ve çık
--version
programın sürüm numarasını göster ve çık
set_metadata
242
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
=
{}=
{}@default
=0=1=2=0=1=2calibredb set\PYGZus{}metadata [seçenekler] id [/path/to/metadata.opf]
Id ile belirtilen kitap için calibre veri tabanında kayıtlı metadata’yı metadata.opf OPF dosyasından ayarla. id arama
komutundaki id numarasıdır. show_metadata komutuna –as-opf anahtarını vererek OPF biçimi ile ilgili fikir edinebilirsiniz. Ayrıca –field seçeneği ile değişik alanların metadata’sını ayarlayabilirsiniz. –field seçeneğini kullanırsanız, bir
OPF dosyası belirtmeye gerek yoktur.
calibredb’a içinde boşluklar olan bağımsız değişken verdiğinizde, değişkenleri tırnak içine aldığınızdan emin olun.
Örneğin “C:içinde boşluk olan bir yol”
--field, -f
Ayarlanacak alan. Biçimi alan_ismi:değer şeklindedir, örneğin: --field (sayfa 243) etiketler:etiket1,etiket2.
Tüm alan isimlerinin listesini almak için --list-fields (sayfa 243) kullanın. Birden çok alan ayarlamak
için bu seçeneği birden fazla kere kullanabilirsiniz. Not: Diller için ISO639 dil kodlarını kullanmalısınız (örn.
İngilizce için en, Fransızca için fr ve benzeri). Tanımlayıcılar için, söz dizimi --field (sayfa 243) identifiers:isbn:XXXX,doi:YYYYY şeklindedir. Bool (evet/hayır) değerler için true ve false veya yes veya no kullanın.
--help, -h
bu yardım iletisini göster ve çık
--list-fields, -l
--field (sayfa 243) seçeneğiyle kullanılabilecek metadata alan isimlerini listeleyin
--version
programın sürüm numarasını göster ve çık
export
=
{}=
{}@default
=0=1=2=0=1=2calibredb export [seçenekler] id\PYGZsq{}ler
ids ile (virgülle ayrılmış liste) belirtilen kitapları dosya sistemine çıkar. Dışa aktarma işlemi kitabın tüm biçimlerini,
kapak ve metadatada’sını (opf dosyasına) kaydeder. Id numaralarını arama komutuyla alabilirsiniz.
calibredb’a içinde boşluklar olan bağımsız değişken verdiğinizde, değişkenleri tırnak içine aldığınızdan emin olun.
Örneğin “C:içinde boşluk olan bir yol”
--all
Kimlik listesine bakmadan tüm kitapları dışa aktar.
--dont-asciiize
Normalde, calibre dosya isimleri için İngilizce olmayan tüm karakterleri İngilizce eşleniklerine çevirir. UYARI:
Bunu kapatırsanız, kaydettiğiniz dosya sisteminin evrensel kod desteğine bağlı olarak kaydetme sırasında hatalar
alabilirsiniz. Bu anahtar bu davranışı kapatacaktır.
--dont-save-cover
Normal olarak calibre kapağı gerçek e-kitap dosyalarının yanına ayrı bir dosyaya yazar. Bu anahtar bu davranışı
kapatacaktır.
--dont-update-metadata
Normal olarak calibre üst veriyi calibre kitaplığındaki kaydedilmiş dosyalardan günceller. Diske kaydetmeyi
yavaşlatır. Bu anahtar bu davranışı kapatacaktır.
1.11. Komut Satırı Arayüzü
243
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
--dont-write-opf
Normal olarak calibre üst veriyi gerçek e-kitap dosyalarının yanına ayrı bir OPF dosyasına yazar. Bu anahtar bu
davranışı kapatacaktır.
--formats
Kitapların kaydedileceği biçimlerin virgülle ayrılmış listesi. Varsayılan olarak tüm biçimlerde kaydedilir.
--help, -h
bu yardım iletisini göster ve çık
--replace-whitespace
Boşlukları alt çizgi ile değiştir.
--single-dir
Tüm kitapları tek bir dizine dışa aktar
--template
Kaydedilen dosyaların dosya ismi ve dizin yapısını kontrol etmek için şablon. Varsayılan “{author_sort}/{title}/{title} - {authors}” dosya isimleri başlık ve yazar olacak şekilde kitapları yazara göre alt
dizinler. Kullnılabilir kontroller: {author_sort, authors, id, isbn, languages, last_modified, pubdate, publisher,
rating, series, series_index, tags, timestamp, title}
--timefmt
Tarihlerin görüntüleneceği biçim. %d - gün, %b - ay, %m - ay numarası, %Y - yıl. Varsayılan: %b, %Y
--to-dir
Kitapları belirtilen dizine dışa aktar. Varsayılan dizin .
--to-lowercase
Yolları küçük harflere dönüştür.
--version
programın sürüm numarasını göster ve çık
catalog
=
{}=
{}@default
=0=1=2=0=1=2calibredb catalog /hedef/yolu.(CSV\textbar{}EPUB\textbar{}MOBI\textbar{}XML ...) [seçenekl
Bir kataloğu /hedef/yolu uzantısında belirtildiği biçimde dışa aktar. Seçenekler genel katalog çıktısında girdilerin nasıl
görüneceğini kontrol eder.
calibredb’a içinde boşluklar olan bağımsız değişken verdiğinizde, değişkenleri tırnak içine aldığınızdan emin olun.
Örneğin “C:içinde boşluk olan bir yol”
--fields
Veritabanında kitapları kataloglama çıktı alanları. Alanlar virgülle ayrılmış olmadır. Kullanılabilir alanlar: all,
title, title_sort, author_sort, authors, comments, cover, formats, id, isbn, library_name, ondevice, pubdate, publisher, rating, series_index, series, size, tags, timestamp, uuid, languages, identifiers, ilave olarak kullanıcı tanımlı alanlar. Örnek: --fields=title,authors,tags Varsayılan: ‘all’ Etki alanı: CSV, XML çıktı formatları
--help, -h
bu yardım iletisini göster ve çık
--ids, -i
Kataloglanacak veritabanı kimliklerinin virgülle ayrılmış listesi. Kullanılırsa, --search (sayfa 244) yok sayılır. Varsayılan: all
244
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
--search, -s
Sonuçları arama sorgusuna göre sırala. Arama sorgusu biçimi için, lütfen Kullanıcı Kılavuzundaki aramayla
ilgili belgeye bakın. Varsayılan: filtre yok
--sort-by
Sıralama için çıktı alanı. Kullanılabilir alanlar: author_sort, id, rating, size, timestamp, title_sort Varsayılan: ‘id’
Etki alanı: CSV, XML çıktı formatları
--verbose, -v
Ayrıntılı çıktı bilgisi göster. Hata ayıklamada faydalıdır
--version
programın sürüm numarasını göster ve çık
saved_searches
=
{}=
{}@default
=0=1=2=0=1=2calibredb saved\PYGZus{}searches [seçenekler] liste
calibredb saved_searches add isim search calibredb saved_searches remove isim
Bu veri tabanında saklanan kayıtlı aramaları yönetin. Mevcut bir sorgu ile aynı isme sahip bir sorgu eklemeyi denerseniz üzerine yazılacaktır.
calibredb’a içinde boşluklar olan bağımsız değişken verdiğinizde, değişkenleri tırnak içine aldığınızdan emin olun.
Örneğin “C:içinde boşluk olan bir yol”
--help, -h
bu yardım iletisini göster ve çık
--version
programın sürüm numarasını göster ve çık
add_custom_column
=
{}=
{}@default
=0=1=2=0=1=2calibredb add\PYGZus{}custom\PYGZus{}column [seçenekler] etiket isim veritürü
Bir özel sütun oluştur. etiket sütunun makinenin anlayacağı ismidir. Boşluk veya sütun içermemelidir. name sütunun
kullanıcı dostu ismidir. veritürü şunlardan biridir: bool, comments, composite, datetime, enumeration, float, int, rating,
series, text
calibredb’a içinde boşluklar olan bağımsız değişken verdiğinizde, değişkenleri tırnak içine aldığınızdan emin olun.
Örneğin “C:içinde boşluk olan bir yol”
--display
Bu sütundaki verinin nasıl yorumlanacağının özelleştirilmesi için seçenekler sözlüğü. Bu bir JSON karater
dizisidir. Sıralama sütunları için, --display=“{“enum_values”:[”val1”, “val2”]}” kullanındisplay değişkenine verilebilecek bir çok seçenek vardır. Sütun türüne göre seçenekler: composite: composite_template, composite_sort, make_category,contains_html, use_decorations datetime: date_format enumeration: enum_values,
enum_colors, use_decorations int, float: number_format text: is_names, use_decorations Uygun kombinasyonlar bulmanın en iyi yolu grafik arayüzden uygun türde bir özel sütun oluşturmak ardından kitap için OPF yedeğine bakmaktır (Sütun eklendikten sonra yeni bir OPF oluştuğundan emin olun). OPF’de yeni sütun için
“display” JSON’unu göreceksiniz.
1.11. Komut Satırı Arayüzü
245
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
--help, -h
bu yardım iletisini göster ve çık
--is-multiple
Bu sütun etiket benzeri verileri (virgülle ayrılmış değerleri) içerir. Sadece veri tipi metin olduğunda uygulanır.
--version
programın sürüm numarasını göster ve çık
custom_columns
=
{}=
{}@default
=0=1=2=0=1=2calibredb özel\PYGZus{}sütunlar [seçenekler]
Kullanılabilir özel sütunları listele. Sütun etiketlerini ve kimliklerini gösterir.
calibredb’a içinde boşluklar olan bağımsız değişken verdiğinizde, değişkenleri tırnak içine aldığınızdan emin olun.
Örneğin “C:içinde boşluk olan bir yol”
--details, -d
Her sütun için ayrıntıları göster.
--help, -h
bu yardım iletisini göster ve çık
--version
programın sürüm numarasını göster ve çık
remove_custom_column
=
{}=
{}@default
=0=1=2=0=1=2calibredb remove\PYGZus{}custom\PYGZus{}column [seçenekler] etiket
Etiket tarafından belirlenmiş özel sütunu kaldır. Kullanılabilir sütunları custom_columns komutuyla görebilirsiniz.
calibredb’a içinde boşluklar olan bağımsız değişken verdiğinizde, değişkenleri tırnak içine aldığınızdan emin olun.
Örneğin “C:içinde boşluk olan bir yol”
--force, -f
Onaylama sorma
--help, -h
bu yardım iletisini göster ve çık
--version
programın sürüm numarasını göster ve çık
set_custom
=
{}=
{}@default
=0=1=2=0=1=2calibredb set\PYGZus{}custom [seçenekler] sütun id değer
246
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
id ile belirtilen kitap için özel bir sütunun değerini ayarla. id listesini arama komutuyla alabilirsiniz. Özel sütun isimlerinin listesini custom_columns komutuyla alabilirsiniz.
calibredb’a içinde boşluklar olan bağımsız değişken verdiğinizde, değişkenleri tırnak içine aldığınızdan emin olun.
Örneğin “C:içinde boşluk olan bir yol”
--append, -a
Sütun birden çok değer saklıyorsa, belirtilen değerleri üzerine yazmak yerine mevcut olanlara ekleyin.
--help, -h
bu yardım iletisini göster ve çık
--version
programın sürüm numarasını göster ve çık
restore_database
=
{}=
{}@default
=0=1=2=0=1=2calibredb restore\PYGZus{}database [seçenekler]
Bu veri tabanını calibre kitaplığındaki her dizindeki OPF dosyalarında saklanan metadata’dan geri yükle. Bu, metadata.db dosyanız bozulduysa faydalıdır.
UYARI: Bu komut veri tabanınızı tamamen yeniden oluşturur. Tüm kaydedilen aramaları, kullanıcı kategorilerini,
santralleri, kitap başına kaydedilmiş dönüştürme ayarlarını, ve özel tarifleri kaybedeceksiniz. Geri yüklenen metadata
OPF dosyalarında bulunan veri kadar doğru olacak.
calibredb’a içinde boşluklar olan bağımsız değişken verdiğinizde, değişkenleri tırnak içine aldığınızdan emin olun.
Örneğin “C:içinde boşluk olan bir yol”
--help, -h
bu yardım iletisini göster ve çık
--really-do-it, -r
Kurtarmayı gerçekleştir. Komut bu seçeneği seçmediğinizde çalışmayacaktır.
--version
programın sürüm numarasını göster ve çık
check_library
=
{}=
{}@default
=0=1=2=0=1=2calibredb check\PYGZus{}library [seçenekler]
Bir kitaplığı temsil eden dosya sisteminde bazı kontroller gerçekleştirir. Raporlar: invalid_titles, extra_titles, invalid_authors, extra_authors, missing_formats, extra_formats, extra_files, missing_covers, extra_covers, failed_folders
calibredb’a içinde boşluklar olan bağımsız değişken verdiğinizde, değişkenleri tırnak içine aldığınızdan emin olun.
Örneğin “C:içinde boşluk olan bir yol”
--csv, -c
CSV biçiminde çıktı
--help, -h
bu yardım iletisini göster ve çık
1.11. Komut Satırı Arayüzü
247
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
--ignore_extensions, -e
Yoksayılacak eklentilerin virgülle ayrılmış listesi. Varsayılan: tümü
--ignore_names, -n
Yoksayılacak isimlerin virgülle ayrılmış listesi. Default: tümü
--report, -r
Raporların virgülle ayrılmış listesi. Varsayılan: all
--version
programın sürüm numarasını göster ve çık
list_categories
=
{}=
{}@default
=0=1=2=0=1=2calibredb list\PYGZus{}categories [seçenekler]
Veri tabanındaki kategori bilgisinin raporunu oluştur. Bilgi etiketler panelinde gösterilenin eşidir.
calibredb’a içinde boşluklar olan bağımsız değişken verdiğinizde, değişkenleri tırnak içine aldığınızdan emin olun.
Örneğin “C:içinde boşluk olan bir yol”
--categories, -r
Virgülle ayrılmış aranacak isimler listesi. Varsayılan: tümü
--csv, -c
CSV biçiminde çıktı
--help, -h
bu yardım iletisini göster ve çık
--item_count, -i
Kategori içindeki öğe başına sayı yerine kategori içindeki öğe sayısını çıktıla
--quote, -q
CSV kipinde sınıflandırma değerinin etrafına konacak karakter. Varsayılan (”)dır.
--separator, -s
CSV kipinde alanları ayıran karakter dizisi. Varsayılan virgüldür.
--version
programın sürüm numarasını göster ve çık
--width, -w
Girdideki bir satırın en fazla genişliği. Varsayılanı ekranın boyutunu algılamaktır.
backup_metadata
=
{}=
{}@default
=0=1=2=0=1=2calibredb backup\PYGZus{}metadata [seçenekler]
Her kitabın kaydedilmiş üst verisini kendi dizinine ayrı OPF dosyasına yedekle. Bu normalde otomatik olarak yapılır
ama OPF dosyalarının yeniden oluşturulmasını zorlamak için –all seçeneğini kullanabilirsiniz.
Üst verinin her değişmesinde OPF dosyaları otomatik olarak yedeklendiğinden bunu yapmanıza gerek kalmayacağını
unutmayın.
248
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
calibredb’a içinde boşluklar olan bağımsız değişken verdiğinizde, değişkenleri tırnak içine aldığınızdan emin olun.
Örneğin “C:içinde boşluk olan bir yol”
--all
Normal olarak bu komut sadece tarihi geçmiş OPF dosyaları içeren kitaplarda çalışır. Bu seçenek onu tüm
kitaplarda çalıştırır.
--help, -h
bu yardım iletisini göster ve çık
--version
programın sürüm numarasını göster ve çık
clone
=
{}=
{}@default
=0=1=2=0=1=2calibredb clone yeni/kitaplığın/yolu
Mevcut kitaplığın bir kopyasını oluştur. Bu mevcut kitaplıkla aynı özel sütunları, sanal kitaplıkları ve diğer ayarları
içeren yeni ve boş bir kitaplık oluşturur.
Kopya kitaplık hiç kitap içermeyecektir. Eğer istediğiniz tüm kitapları da içeren tam bir kopya ise sistem araçlarını
kullanarak kitaplığın dizinini bir kopyasını oluşturun.
calibredb’a içinde boşluklar olan bağımsız değişken verdiğinizde, değişkenleri tırnak içine aldığınızdan emin olun.
Örneğin “C:içinde boşluk olan bir yol”
--help, -h
bu yardım iletisini göster ve çık
--version
programın sürüm numarasını göster ve çık
embed_metadata
=
{}=
{}@default
=0=1=2=0=1=2calibredb embed\PYGZus{}metadata [seçenekler] kitap\PYGZus{}kimliği
Calibre kitaplığında saklanan asıl kitap sayfalarını calibre veri tabanındaki metadata ile güncelle. Normalde, metadata
yalnızca calibre’den dışa aktarım yapılırken güncellenir, bu komut dosyaları olduğu gibi değiştirmek istiyorsanız faydalıdır. Değişik dosya biçimlerinin değişik miktarda metadata desteklediğini unutmayın. kitap_kimliği için özel bir
değer olan ‘all’ kullanarak tüm kitaplarda metadata güncelleyebilirsiniz. Ayrıca birden çok kitap kimliğini boşluklarla
ayırarak ve kimlik aralıklarını tire ile ayırarak belirtebilirsiniz. Örneğin: calibredb embed_metadata 1 2 10-15 23
calibredb’a içinde boşluklar olan bağımsız değişken verdiğinizde, değişkenleri tırnak içine aldığınızdan emin olun.
Örneğin “C:içinde boşluk olan bir yol”
--help, -h
bu yardım iletisini göster ve çık
--only-formats, -f
Sadece belirtilen biçimlerdeki dosyaların üst verilerini güncelle. Birden çok biçim için birden çok defa tanımlama yapmanız gerekir. Varsayılan olarak tüm biçimler güncellenir.
1.11. Komut Satırı Arayüzü
249
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
--version
programın sürüm numarasını göster ve çık
search
=
{}=
{}@default
=0=1=2=0=1=2calibredb search [seçenekler] arama ifadesi
Kitaplığı belirtilen arama ifadesi için ara, arama ifadesiyle eşleşen kitap id’lerinin virgülle ayrılmış listesini döndür.
Çıktı biçimi girdi olarak id listesi alan diğer komutlarda kullanılabilmeleri açısından faydalıdır.
Arama ifadesi calibre’nin güçlü arama sorgu dilinden herhangi bir şey olabilir, örneğin: author:asimov title:robot
calibredb’a içinde boşluklar olan bağımsız değişken verdiğinizde, değişkenleri tırnak içine aldığınızdan emin olun.
Örneğin “C:içinde boşluk olan bir yol”
--help, -h
bu yardım iletisini göster ve çık
--limit, -l
Azami döndürülecek sonuç sayısı. Varsayılan tüm sonuçlardır.
--version
programın sürüm numarasını göster ve çık
ebook-convert
=
{}=
{}@default
=0=1=2=0=1=2ebook\PYGZhy{}convert girdi\PYGZus{}dosyası çıktı\PYGZus{}dosyası [seçenekler]
Bir e-kitabı başka bir formata dönüştür.
girdi_dosyası girdiyi, çıktı_dosyası ise çıktıyı temsil eder. İkisi de komutun ilk iki değişkeni olarak belirtilmelidir.
E-kitabın çıktı biçimi çıktı_dosyası’nın uzantısına göre tahmin edilir. çıktı_dosyası özel .EXT uzantısına da sahip
olabilir; EXT çıktı dosya uzantısını gösterir. Bu durumda çıktı dosyasının uzantısı girdi dosyasının adından çıkartılır.
Dosya adlarının tire ile başlamamasına dikkat edin. Son olarak çıktı_dosyası’nın hiç uzantısı uzantısı yoksa ona bir
dizin olarak davranılır ve HTML dosyaları içeren bir “açık kitap” (OEB) bu dizine kaydedilir. Bu dosyalar normalde
çıktı eklentisine gönderilecek dosyalardır.
Girdi ve çıktı dosyalarını belirledikten sonra dönüşümü çeşitli seçeneklerle özelleştirebilirsiniz. Kullanılabilir seçenekler girdi ve çıktı dosyalarının türlerine bağlıdır. Kullanmak istediğiniz girdi ve çıktı dosyalarını belirttikten sonra
-h seçeneği ile yardım alabilirsiniz.
Dönüşüm sisteminin tüm belgelendirmesine buradan ulaşabilirsiniz E-Kitap Dönüştürme (sayfa 51)
ebook-convert‘a içinde boşluklar olan bağımsız değişken verdiğinizde, değişkenleri tırnak içine aldığınızdan
emin olun. Örneğin “C:içinde boşluk olan bir yol”
Seçenekler ve seçeneklerin varsayılan değerleri girdi ve çıktı biçimlerine göre değişiklik gösterir, her zaman şu şekilde
kontrol etmelisiniz:
=
{}=
{}@default
=0=1=2=0=1=2ebook\PYGZhy{}convert myfile.input\PYGZus{}format myfile.output\PYGZus{}format \PYGZhy{}h
250
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Aşağıda tüm dönüştürmeler için ortak seçenekler ve her girdi ve çıktıya özel seçenekler bulunabilir.
•
•
•
•
•
•
•
•
•
Girdi Ayarlari (sayfa 251)
Çikti Ayarlari (sayfa 251)
Gör Ve Hisset (sayfa 252)
Sezgisel İşleme (sayfa 254)
Bul Ve Değiştir (sayfa 255)
Yapi Algilama (sayfa 256)
İçindekiler (sayfa 256)
Metadata (sayfa 257)
Hata Ayikla (sayfa 258)
--help, -h
bu yardım iletisini göster ve çık
--input-profile
Girdi profilini belirleyin. Bu profil dönüştürme sistemine girdi dosyasındaki çeşitli bilgileri nasıl kullanacağı
bilgisini verir. örneğin çözüünürlüğe bağlı uzunluk( yani piksel cinsinden uzunluk) Seçimler şunlar:cybookg3,
cybook_opus, default, hanlinv3, hanlinv5, illiad, irexdr1000, irexdr800, kindle, msreader, mobipocket, nook,
sony, sony300, sony900
--list-recipes
Yerleşik haber tariflerini(recipe) listele. yerleşik haber tariflerinden şu şekilde e-kitaplar oluşturabilirsiniz:
ebook-convert “HaberTarifininAdı.recipe” çıktıAdı.epub
--output-profile
Çıktı profilini belirtin. Çıktı profili dönüştürme sistemine oluşturulan belgenin belirtilen aygıta göre nasıl en
iyi hale getirileceğini söyler. Bazı durumlarda, çıktı profili çıktıyı belli bir aygıt için en iyi hale getirmek
için kullanılabilir, ama bu genellikle gereksizdir. Seçenekler şunlardır:cybookg3, cybook_opus, default, generic_eink, generic_eink_hd, generic_eink_large, hanlinv3, hanlinv5, illiad, ipad, ipad3, irexdr1000, irexdr800,
jetbook5, kindle, kindle_dx, kindle_fire, kindle_pw, kindle_pw3, kindle_voyage, kobo, msreader, mobipocket, nook, nook_color, nook_hd_plus, pocketbook_900, pocketbook_pro_912, galaxy, sony, sony300, sony900,
sony-landscape, sonyt3, tablet
--version
programın sürüm numarasını göster ve çık
Girdi Ayarlari
Girdi dosyası mobi ‘iın işlenme sürecinin kontrol seçenekleri
--input-encoding
Girdi dökümanındaki dil kodlamasını belirtin. Belirtilirse, bu seçenek dökümanın kendisinde belirtilmiş herhangi bir kodlamanın üzerine yazar. Bilhassa kodlama belirtmeyen veya hatalı kodlama belirtilmiş dökümanlar
için kullanışlıdır.
Çikti Ayarlari
Çıktı dosyası epub ‘nın işlenme sürecinin kontrol seçenekleri
--dont-split-on-page-breaks
Sayfa sonlarında bölmeyi kapat. Normalde, girdi dosyaları otomatik olarak her sayfa sonunda iki dosyaya bölünür. Bu da, bir çıktı e-kitabı çözümlemeyi daha hızlı ve daha az kaynak kullanılarak yapılmasını sağlar. Ancak,
1.11. Komut Satırı Arayüzü
251
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
bölme işlemi yavaştır ve eğer kaynak dosyanız bol miktarda sayfa sonu içeriyorsa, sayfa sonunda bölmeyi kapatmalısınız.
--epub-flatten
EPUB dosyasını FBReaderJ ile kullanmayı düşünüyorsanız bu özellik gereklidir. Böylece tüm dosyaları, dosya
sisteminin en üst seviyesine koyarak düz bir dosya sistemi yaratır.
--epub-inline-toc
Ana kitap içeriğinin parçası olarak görünecek bir satır arası İçindekiler ekle.
--epub-toc-at-end
Eklenen satır arası içindekileri kitabın başı yerine sonuna koy.
--extract-to
Üretilmiş EPUB dosyasının içeriğini belirtilen klasöre çıkar. Klasörün içeriği önce silindiğinden dikkatli olmalı.
--flow-size
Bu boyutttan büyük bütün HTML dosyalarını küçük parçalara böl (KB olarak). Çoğu EPUB okuyucu büyük
boyuttaki dosyaları okuyamadığı için bu gereklidir. Öntanımlı 260KB boyutu Adobe Digital Edition’lar için
gereklidir. Boyut temelli bölmeyi devre dışı bırakmak için 0 olarak ayarlayın.
--no-default-epub-cover
Normalde, kitap kapağı yoksa ve sizde bir tane belirtmediyseniz, başlık yazarlar vb. bilgilerden öntanımlı bir
kapak oluşturulur. Bu özellikli kapak oluşturmayı kapatur.
--no-svg-cover
Kitap kapağı için SVG kullanma. Bu seçeneği yalnızca EPUB’ınızı iPhone ya da JetBook Lite gibi SVG desteklemeyen bir cihazda kullanacaksanız seçin. Bu seçenek seçili değilse, bu cihazlar kitap kapağı yerine boş bir
sayfa görüntüleyecektir.
--preserve-cover-aspect-ratio
Kitap kapağı olarak SVG kullandığınızda bu seçenek, kitap kapağının müsait ekran alanına en/boy oranının
korunarak ölçeklenmesini sağlar. Yani bazı durumlarda resmin kenarlarında beyaz alanlar bulunabilir ancak
resim asla bozulmaz. Bu seçenek seçili değilse resim bir miktar bozulabilir ama kenarlarda beyaz alanlar olmaz.
--pretty-print
Eğer belirtilirse, çıktı ektentisi en okunabilir şekilde bir çıktı yaratmaya çalışacaktır. Bazı çıktı eklentilerinde
hiç bir etkisi olmayabilir.
--toc-title
Oluşturulan İçindekiler (TOC) bölümü için başlık.
Gör Ve Hisset
Çıktı dosyasının görünümünü ayarlamak için kullanılabilecek ayarlar
--asciiize
Unicode karakterleri ASCII karakterlerle değiştirin. Bu seçenek unicode karakterleri ASCII karaktelerle değiştireceğinden dikkatli kullanın. Örneğin ‘Михаил Горбачёв’ ifadesini ‘Michael Gorbachiov’la değiştirecektir.
Eğer Japonca ve Çincenin ortak karakterleri gibi birden fazla anlamı olan bir karakter bulunursa bu durumda
değiştirme işleminde Calibre’nin arayüz dili esas alınacaktır.
--base-font-size
Pts değeri olarak temel font büyüklüğü. Üretilen kitaptaki tüm font büyüklükleri bu büyüklük temelinde ölçeklendirelecektir. Büyük sayı ayarlayarak çıktıdaki fontları büyütebilir ya da küçük sayı ile çıktıdaki fontları
küçültebilirsiniz. Varsayılan sizin seçtiğiniz çıktı profiline dayanan font büyüklüğüdür.
--change-justification
Metnin yaslama ayarlarını değiştir. “left” değeri tüm çift tarafa da dayalı (justified) yazıyı sola dayalı yapar.
252
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
“justify” ise çift tarafa dayalı olmayan yazıları çift tarafa dayalı yapar. “original” değeri ise kaynak dosyadaki
değeri korur. Tüm çıktı formatlarının çift tarafa dayalı formatı desteklemediiğini unutmayın.
--disable-font-rescaling
Tüm yazı tiplerinin yeniden boyutlandırılmasını etkisizleştir.
--embed-all-fonts
Henüz gömülmemiş ama girdi belgesinde başvurulan tüm yazı tiplerini göm. Bu sisteminizi yazı tipleri için arar,
ve bulursa, bulunanlar gömülür. Gömme yalnızca dönüştürdüğünüz yazı tipi gömülü yazı tiplerini destekliyorsa
çalışır, örneğin EPUB, AZW3, DOCX veya PDF. Lütfen bu belgede kullanılan gömülü yazı tiplerini kullanmak
için gerekli izinleriniz olduğundan emin olun.
--embed-font-family
Belirtilen yazı tipi ailesini kitaba göm. Bu kitap için kullanılan “temel” yazı tipini belirtir. Girdi belgesi kendi
yazı tiplerini belirtmişse, bu temel yazı tipini ezebilir. Filtre biçim bilgisi seçeneğini kullanarak yazı tiplerini
girdi belgesinden çıkarabilirsiniz. Yazı tipi gömmenin yalnızca bazı çıktı formatlarında çalıştığını unutmayın,
özellikle EPUB, AZW3 ve DOCX.
--expand-css
Varsayılan olarak, calibre margin, padding, border, vs. gibi çeşitli css özellikleri için kısaltılmış biçimi kullanacaktır. Bu seçenek tam genişletilmiş biçimi kullanmasına sebep olur. Nook kısaltılmış CSS’i desteklemediğinden
CSS’in çıktı profili olarak Nook profillerinden biri seçildiğinde her zaman genişletileceğini not edin.
--extra-css
CSS biçim sayfasına veya ham CSS’ye olan yol. Bu CSS, kaynak dosyadaki biçim kurallarına eklenecek, bu
sayede bu kuralların yerine kullanılabilecektir.
--filter-css
Tüm CSS biçim kurallarından çıkarılacak CSS özelliklerinin virgülle ayrılmış listesi. Bazı biçim bilgisinin varlığının aygıtınızda üzerine yazılmasını engellediği durumlarda kullanışlıdır. Örneğin: font-family,color,marginleft,margin-right
--font-size-mapping
CSS yazı tipi isimlerinden yazı tipi boyutlarına nokta olarak haritalama. Örnek bir ayar şu şekildedir
12,12,14,16,18,20,22,24. Bunlar xx-small’dan xx-large’a boyutların haritasıdır, son boyut dev yazı tipleri içindir. Yazı tipi yeniden ölçekleme algoritması bu boyutları kullanarak yazı tiplerini akıllıca yeniden boyutlandırır.
Varsayılan seçtiğiniz çıktı profiline göre bir haritalama kullanmaktır.
--insert-blank-line
Paragraflar arasına boş satır ekle. Eğer kaynak dosyası paragraf (<p> or <div> etiketlerini) içermiyorsa çalışmaz
--insert-blank-line-size
Eklenen boşlukların yüksekliğini “em” cinsinden ayarlayın. Parağraf arası boşluklar ise buradaki değerin iki
katı olarak ayarlanacaktır.
--keep-ligatures
Girdi belgesinde mevcut olan bağları koru. Bir bağ, ff, fi, fl vs. gibi bir çift karakterin özel olarak gerçeklenmesine denir. Çoğu okuyucu varsayılan yazı tiplerinde bağları desteklemezler, yani doğru gerçeklemeleri
beklenmez. Varsayılan olarak, calibre bir bağı karşılık gelen normal karakter çiftine çevirir. Bu seçenek ise
korunmalarını sağlar.
--line-height
Sayı olarak satır yüksekliği. Ardı ardına gelen satırlar arasındaki boşluğu kontrol eder. Kendi satır yüksekliğini
belirlemeyen unsurlara uygulanır. Çoğu durumda minimum satır aralığı tercihi daha kullanışlıdır. Varsayılan
olarak herhangi bir satır yüksekliği işlemi yapılmaz.
--linearize-tables
Bazı kötü dizayn edilmiş dökümanlar sayfadaki metinin düzenlemesini kontrol için tablo kullanırlar. Bu sayfalar
dönüştürüldüğünde sıklıkla metin sayfadan ve taşıyor ve başka hatalar çıkıyor. Bu seçenek içeriği tablodan
çıkaracak ve onu bildiğimiz şekilde sunacak.
1.11. Komut Satırı Arayüzü
253
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
--margin-bottom
Alt kenar boşluğunu pts cinsinden ayarlayın. Varsayılan değer: 5.0. Bu değeri sıfırın altında atamak kenar boşluğu olmayacağı anlamına gelir (özgün belgenin kenar boşluk ayarları korunacaktır). Not: 72 pts 1 inçe eşittir.
--margin-left
Sol kenar boşluğunu pts cinsinden ayarla. Varsayılan 5.0’dır. Bunu sıfırdan küçük olarak ayarlamak kenar boşluğunun olmamasına sebep olur (Asıl belgedeki kenar boşluğu ayarı korunur). Not: 72 pts 1 inçe eşittir
--margin-right
Sağ kenar boşluğunu pts cinsinden ayarlayın. Varsayılan değer: 5.0. Bu değeri sıfırın altında atamak kenar
boşluğu olmayacağı anlamına gelir (özgün belgenin kenar boşluk ayarları korunacaktır). Not: 72 pts 1 inçe
eşittir.
--margin-top
Üst kenar boşluğunu pts cinsinden ayarlayın. Varsayılan değer: 5.0. Bu değeri sıfırın altında atamak kenar boşluğu olmayacağı anlamına gelir (özgün belgenin kenar boşluk ayarları korunacaktır). Not: 72 pts 1 inçe eşittir.
--minimum-line-height
Unsurların hesaplanmış font büyüklüğünün yüzdesi olarak, minimum satır yüksekliği. Calibre bu ayar ile girdi
dokümanının ne belirttiğinden bağımsız olarak her unsura bir satır yüksekliği atayacaktır. Devre dışı bırakmak
için sıfıra ayarlayın. Varsayılan 120%. Ne yaptığınızı bilmiyorsanız, doğrudan satır yüksekliği belirmek yerine
bu ayarı kullanın. Örneğin, bunu 240’a ayarlayarak “2 kat satır aralıklı” metin elde edebilirsiniz.
--remove-paragraph-spacing
Paragraflar arası boşlukları kaldır. Ayrıca paragrafların girintilerini 1,5em olarak ayarla. Eğer kaynak dosyası
paragraları(<p> or <div> etiketleri) kullanmamışsa boşluk kaldırma çalışmayacaktır.
--remove-paragraph-spacing-indent-size
Calibre paragraflar arasındaki boş satırları kaldırdığında, paragrafların kolayca ayırt edilebilmesi için otomatik
olarak bir paragraf girintisi yapar. Bu seçenek, o girintinin genişliğini (em cinsinden) kontrol eder. Bu değeri negatif olarak ayarlarsanız girdi belgesinde belirlenen paragraf girintisi kullanılır. Yani calibre paragraf girintisini
değiştirmez.
--smarten-punctuation
Düz tırnak, tire ve üç nokta işaretlerini tipografik olarak doğru olan eşdeğerleriyle değiştir. Detaylar için bakınız
http://daringfireball.net/projects/smartypants
--subset-embedded-fonts
Tüm gömülü yazı tiplerini alt kümeye al. Gömülü tüm yazı tipleri yalnızca bu belgede kullanılan oymaları
içerecek şekilde eksiltilir. Bu yazı tipi dosyalarının boyutunu küçültür. Kullanılmayan oymalara sahip büyük bir
yazı tipi kullanıyorsanız faydalıdır.
--unsmarten-punctuation
Süslü tırnak, tire ve üç nokta işaretlerini düz versiyonlarına çevir.
Sezgisel İşleme
Genel tanımlı motifleri kullanarak dökümanın yazılarını ve yapısını değiştirin. Default olarak pasif durumdadır. Aktifleştirmek için –enable-heuristics kullanın. Komutları tek tek pasifleştirmek için –disable-* ayarını kullanabilirsiniz.
--disable-dehyphenate
Belgedeki tirelenmiş kelimeleri analiz et. Belge tirelerin kalması veya gitmesi gerekliliğini belirlemek için sözlük olarak kullanılır.
--disable-delete-blank-paragraphs
Eğer tüm paragraflar arasında boş paragraflar varsa dökümandan bunları çıkar
254
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
--disable-fix-indents
Birden çok kesintisiz boşluk girdilerinden oluşan girintiyi CSS girintilerine çevir.
--disable-format-scene-breaks
Sola dayalı sahne bitiş işaretçileri ortalanır. Birden çok boş satır kullanan yumuşak sahne kesicileri yatay kurallarla değiştir.
--disable-italicize-common-cases
İtalik olacak ortak kelimelere ve modellere bak, ve bunları italikleştir.
--disable-markup-chapter-headings
Biçimlendirilmemiş bölüm başlıklarını ve altbaşlıklarını algıla. Onları h2 ve h3 etiketlerine çevir. Bu ayar içindekiler yaratmayacak ama oluşturulurken yapı algılama ile bağlantılı kullanılabilecek.
--disable-renumber-headings
Ardarda gelen <h1> veya <h2> etiketleri olup olmadığına bakar. Etiketler bölüm başlıklarının ortasında parçalanmanın önüne geçmek için yeniden numaralandırılır.
--disable-unwrap-lines
Noktalama işaretleri ve diğer biçim işaretlerini kullanırken satırları bölme
--enable-heuristics
Heuristic işlemeyi etkinleştir. Bu seçenek gerçekleşecek herhangi bir heurostic işleme için ayarlanmalıdır.
--html-unwrap-factor
Bir satırın erişmesi gereken uzunluğa karar verme ölçeği. Geçerli değerler 0 ila 1 arası ondalık sayılardır. Varsayılan değer 0.4 olup, ortalama satır uzunluğunun biraz altındadır. Eğer bir dökümanda bir iki satır sarkıyorsa,
bu değer düşürülmelidir.
--replace-scene-breaks
Sahne kesicileri belirtilen metinle değiştir. Varsayılan olarak, girdi belgesindeki metin kullanılır.
Bul Ve Değiştir
Kullanıcı tanımlı motifleri kullanarak dökümanın yazılarını ve yapısını değiştir.
--search-replace
Arama ve değiştirme düzenli ifadelerini içeren bir dosya yolu. Dosya değiştirme örüntüsü (boş bir satır olabilir)
ile biten düzenli ifade satırları içermelidir. Düzenli ifade python düzenli ifade sözdiziminde ve dosya UTF-8 ile
kodlanmış olmalıdır.
--sr1-replace
sr1-search aramasıyle bulunan metin için yeni değer
--sr1-search
sr1-replace araması ile değiştirmek için arama şablonu (regular expression- regex).
--sr2-replace
sr2-search araması ile bulunan metin için yeni değer.
--sr2-search
sr2-replace araması ile değiştirmek için arama şablonu (regular expression- regex).
--sr3-replace
sr3-search aramasıyle bulunan metin için yeni değer.
--sr3-search
sr3-replace araması ile değiştirmek için arama şablonu (regular expression- regex).
1.11. Komut Satırı Arayüzü
255
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Yapi Algilama
dosya yapısının otomatik farkınıa varma kontrolü
--chapter
Bölüm başlıklarını algılamak için bir XPath ifadesi. Varsayılan “başlık”, “kitap”, “kısım”, “önsöz”, “sonsöz”,
veya “parça” kelimelerini bölüm başlığı olarak kullanan <h1> veya <h2> etiketlerini veya class=”bölüm” içeren
etiketleri göz önüne almaktır. Kullanılan ifade bir öğe listesine denk gelmelidir. Bölüm algılamayı kapatmak
için, “/” ifadesini kullanın. Bu özelliği kullanmakla ilgili daha fazla yardım için calibre Kullanıcı Kılavuzundaki
XPath Rehberine göz atın.
--chapter-mark
Tesbit edilen bölümlerin nasıl işaretleneceğini belirleyin. “pagebreak” değeri bölümlerden önce sayfa sonu ekler.
“rule” değeri bölümlerden önce bir çizgi ekler. “none” değeri bölüm işaretlemeyi pasifleştirir ve “both” değeri
ise bölümlerden önce hem çizgi hem sayfa sonu ekler.
--disable-remove-fake-margins
Bazı dökümanlar sayfa kenar boşluklarını (margin) her bir paragraf için sağ ve sol boşlukları belirleyerek ayarlar.
Calibre bu ayarları bulup iptal etmeye çalışır. Bu bazen kaldırılmaması gereken boşluk ayarlarının da kaldırılmasına neden olur. Böyle bir durumda bu boşlukların kaldırılması işlemini iptal edebilirsiniz.
--insert-metadata
Metadata’yı (kitap tanımlama bilgileri) kitabın başlangıcına ekleyin. Eğer ekitap okuyucunuz metadata’yı doğrudan göstermeyi desteklemiyorsa bu seçenek faydalı olabilir.
--page-breaks-before
Bir XPath ifadesi. Sayfa kesmeleri belirtilen ögelerden önce yerleştirilir. İfadenin kullanımını kapatmak için
bunu kullanın: /
--prefer-metadata-cover
Belirtilen kapak yerine kaynak dosyasındaki algılanan kapağı kullan
--remove-first-image
Kitaptaki ilk resmi çıkar. Bu seçenek eğer işlenecek döküman içinde kapak resmi olarak kullanılmayacak bir
kapak resmi varsa kullanmanız tavsiye edilir. Çünkü bu seçeneği seçmemeniz durumunda eğer başka bir resmi
kapak olarak kullanmak üzere seçerseniz çıktı iki kapak resmi içerir.
--start-reading-at
Belgede okumaya başlanacak konumu algılamak için bir XPath ifadesi. Bazı e-kitap okuyucu programlar (özellikle Kindle) bu konumu kitabı açacak konum olarak kullanırlar. Bu özelliği kullanmakla ilgili daha fazla yardım
için calibre Kullanıcı Kılavuzundaki XPath rehberine göz atın.
İçindekiler
İçindekiler(TOC)’un otomatik oluşturulma ayarını düzenleyin. Eğer kaynak içindekiler(TOC)’e sahipse varsayılan
olarak o kullanılacaktır.
--duplicate-links-in-toc
Girdideki linklerden içindekiler(TOC) oluştururken maddelerin birden fazla kopyasına izin ver. Yani farklı yerlere işaret etmesi şartıyla aynı yazıya sahip birden fazla maddeye izin ver.
--level1-toc
Birinci seviyede İçindekilere eklenmesi gereken tüm etiketleri belirten XPath ifadesi. Eğer bu belirtilirse, diğer
otomatik algılama biçimleri üzerinde öncelik alır. Örnekler için calibre Kullanıcı Kılavuzundaki XPath Rehberine göz atın.
256
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
--level2-toc
İkinci seviyede İçindekilere eklenmesi gereken tüm etiketleri belirten XPath ifadesi. Her girdi önceki birinci
seviye girdinin altına eklenir. Örnekler için calibre Kullanıcı Kılavuzundaki XPath Rehberine göz atın.
--level3-toc
Üçüncü seviyede İçindekilere eklenmesi gereken tüm etiketleri belirten XPath ifadesi. Her girdi önceki ikinci
seviye girdinin altına eklenir. Örnekler için calibre Kullanıcı Kılavuzundaki XPath Rehberine göz atın.
--max-toc-links
İçindekilere eklenecek maksimum link sayısı. Devre dışı bırakmak için 0’a ayarlayın. Varsayılan 50. Eğer eşik
sayısından az bölüm algılanırsa linkler sadece içindekilere eklenir
--no-chapters-in-toc
Otomatik algılanmış bölümleri İçindekiler kısmına ekleme
--toc-filter
Belirtilen kurallı ifadeyle eşleşen İçindekiler başlıklarını, İçindekilerden çıkarır. Eşleşen girdiler ve onların alt
girdilerinin tümü çıkartılır.
--toc-threshold
Eğer bu sayıdan daha az bölüm algılanırsa linkler İçindekiler kısmına eklenir. Varsayılan: 6
--use-auto-toc
Normalde kaynak içindekiler bilgisine sahipse otomatik üretilene tercihen bu bilgi kullanılır. Bu seçenek ile her
zaman otomatik üretilen kullanılır
Metadata
Çıkış almak için metadata seçeneklerini kaydet.
--author-sort
Yazar’a göre sıralamada kullanılacak metin
--authors
Yazarları ayarla. Birden fazla yazar varsa ampersand (&) işareti ile ayrılmalı.
--book-producer
Kitap üreticisini ata.
--comments
Ekitap açıklamasını ayarla.
--cover
Kapağı belirli bir dosya veya URL’ye ayarla
--isbn
Kitabın ISBN’ini ayarla.
--language
Dili ayarla.
--pubdate
Basım tarihini ayarla
--publisher
Ekitap yayıncısını ayarla.
--rating
Derecelendirmesini ayarla. 1 ve 5 arasında bir sayı olmalı.
1.11. Komut Satırı Arayüzü
257
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
--read-metadata-from-opf, -m
Metaveriyi seçili OPF dosyasından oku. Bu dosyadan okunacak metaveri, kaynak dosyadaki herhangi bir metaverinin yerine geçecektir.
--series
Ekitabın bağlı olduğu seriyi ayarla.
--series-index
Kitabın serideki indeksini ayarla.
--tags
Kitap için etiketleri ayarla. Virgül ile ayrılmış liste olmalı.
--timestamp
Kitap zamandamgasını tanımla(Artık kullanılmıyor)
--title
Başlığı ayarla.
--title-sort
Başlık sürümü sıralama için kullanılır.
Hata Ayikla
Dönüştürme hatalarını bulmak için yardım seçenekleri
--debug-pipeline, -d
Dönüştürme adımlarının değişik noktalarındaki sonuşları kaydet. Eğer hatanın hangi aşamadan kaynaklanadığını bilmiyorsanız faydalı olabilr.
--verbose, -v
Ayrıntı seviyesi. Daha fazla ayrıntı için birden fazla belirtin. İki kere belirtmek tam ayrıntıya sebep olur, bir kere
belirtmen orta seviye ayrıntı ve hiç belirtmemek en az ayrıntıya.
ebook-edit
=
{}=
{}@default
=0=1=2=0=1=2ebook\PYGZhy{}edit [seçenekler] [ekitabın\PYGZus{}yolu] [kitap\PYGZus{}içindeki\PYGZus{}do
Calibre kitap düzenleme aracını çalıştır. İsteğe bağlı olarak kitapta düzenlemek istediğiniz dosyaların adlarını girerek
otomatik olarak açılmalarını sağlayabilirsiniz.
ebook-edit‘a içinde boşluklar olan bağımsız değişken verdiğinizde, değişkenleri tırnak içine aldığınızdan emin
olun. Örneğin “C:içinde boşluk olan bir yol”
[options]
--detach
Denetim terminalinden ayır (sadece linux’ta)
--help, -h
bu yardım iletisini göster ve çık
--version
programın sürüm numarasını göster ve çık
258
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
ebook-meta
=
{}=
{}@default
=0=1=2=0=1=2ebook\PYGZhy{}meta ebook\PYGZus{}file [seçenekler]
E-kitap dosyalarına/dosyalarından Oku/Yaz.
Metadata okumak için desteklenen biçimler: azw, azw1, azw3, azw4, cbr, cbz, chm, docx, epub, fb2, html, htmlz, imp,
lit, lrf, lrx, mobi, odt, oebzip, opf, pdb, pdf, pml, pmlz, pobi, prc, rar, rb, rtf, snb, tpz, txt, txtz, updb, zip
Metadata yazmak için desteklenen biçimler: azw, azw1, azw3, azw4, docx, epub, fb2, htmlz, lrf, mobi, pdb, pdf, prc,
rtf, tpz, txtz
Değişik dosya türleri değişik metadata çeşitlerini destekler. Desteklemeyen bir dosya türüne metadata ayarlamaya
çalışırsanız, metadata sessizce göz ardı edilir.
ebook-meta‘a içinde boşluklar olan bağımsız değişken verdiğinizde, değişkenleri tırnak içine aldığınızdan emin
olun. Örneğin “C:içinde boşluk olan bir yol”
[options]
--author-sort
Yazarlar sıralanırken kullanılacak karakter dizisi. Belirtilmemişse ama yazar(lar) mevcutsa, otomatik olarak
başlıktan çıkartılır.
--authors, -a
Yazarları ayarla. Birden fazla yazar birbirinden & karakteri ile ayrılmalı. Yazar isimleri önce isim sonra soyad
düzeninde olmalı
--book-producer, -k
Kitap üreticisini ata.
--category
Kitap kategorisini ayarla.
--comments, -c
Ekitap açıklamasını ayarla.
--cover
Belirlenen dosyaya kapak ayarlar.
--date, -d
Yayın tarihini ayarla.
--from-opf
Üst veriyi belirtilen OPF dosyasından oku ve onu e-kitabın üst verisini ayarlamak için kullan. Komut satırında
kullanılan üst veri OPF dosyasından okunan verinin üzerine yazılır.
--get-cover
Ekitapdan kapağı al ve belirlenen dosya şeklinde kaydet.
--help, -h
bu yardım iletisini göster ve çık
--identifier
Kitap için tanımlayıcıları ayarla, birden fazla kez belirtilebilir. Örneğin: --identifier (sayfa 259)
uri:http://test.com --identifier (sayfa 259) isbn:12345 Bir tanımlayıcı kaldırmak için, değeri belirtmeyin,
--identifier (sayfa 259) isbn: EPUB dosyaları için, paket tanımlayıcı olarak işaretlenmiş tanımlayıcıların
silinemeyeceğini hatırlayın.
1.11. Komut Satırı Arayüzü
259
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
--index, -i
Kitabın serideki indeksini ayarla.
--isbn
Kitabın ISBN’ini ayarla.
--language, -l
Dili ayarla.
--lrf-bookid
LRF dosyalarına (Kitap Kimliği) koy
--publisher, -p
Ekitap yayıncısını ayarla.
--rating, -r
Derecelendirmesini ayarla. 1 ve 5 arasında bir sayı olmalı.
--series, -s
Ekitabın bağlı olduğu seriyi ayarla.
--tags
Kitap için etiketleri ayarla. Virgül ile ayrılmış liste olmalı.
--title, -t
Başlığı ayarla.
--title-sort
Sıralama için kullanılan başlığın sürümü. Belirtilmemişse ama başlık mevcutsa, otomatik olarak başlıktan çıkartılır.
--to-opf
OPF dosyasının ismini belirle. Bu metadata OPF dosyasına yazılacak.
--version
programın sürüm numarasını göster ve çık
ebook-polish
=
{}=
{}@default
=0=1=2=0=1=2ebook\PYGZhy{}polish [options] input\PYGZus{}file [output\PYGZus{}file]
Kitap cilalama mükemmelliğin parlamasını dikkatle oluşturulmuş e-kitaplarınıza uygulamaktan ibarettir.
Cilalama e-kitabınızın dahili koduna yapılan değişiklikleri asgari düzeyde tutar. Dönüştürmenin aksine, CSS’i düzleştirmez, dosyaları yeniden adlandırmaz, yazı tipi boyutlarını değiştirmez, kenar boşluklarını ayarlamaz, vs. Her eylem
gerekli etki için yalnızca asgari değişikliği uygular.
Bu aracı e-kitap dönüştürme sürecinizde yalnızca son adım olarak kullanmalısınız.
Cilalamanın yalnızca AZW3 veya EPUB biçiminde dosyalara uygulanabildiğini unutmayın.
ebook-polish‘a içinde boşluklar olan bağımsız değişken verdiğinizde, değişkenleri tırnak içine aldığınızdan emin
olun. Örneğin “C:içinde boşluk olan bir yol”
260
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
[options]
--compress-images, -i
Kitaptaki resimleri, dosya boyutunu azaltmak için ve resim kalitesini etkilemeden kayıpsız olarak sıkıştır.
--cover, -c
Kapak resminin yolu. Belirtilen e-kitabın kapağını değiştirir. Eğer kapak belirtilmemişse veya doğru tanımlanmamışsa yeni kapağı ekler.
--embed-fonts, -e
Belgede başvurulan ve hala gömülü olmayan tüm yazı tiplerini göm. Bu işlem bilgisayarınızı yazı tipleri için
tarar ve bulunurlarsa, belgeye gömülürler. Lütfen bu belgede kullanılan yazı tipleri için gerekli lisansa sahip
olduğunuzdan emin olun.
--help, -h
bu yardım iletisini göster ve çık
--jacket, -j
Kitabın başına başlık, etiketler, yazarlar, seriler, yorumlar, vs. gibi tüm kitap metadata’sını içeren bir “kitap
ceketi” ekle. Önceki herhangi kitap ceketi değiştirilir.
--opf, -o
Bir OPF dosyasının yolu. Kitabın üst verisi OPF dosyasından güncellenir.
--remove-jacket
Önceden eklenmiş bir kitap ceketi sayfasını sil.
--remove-unused-css, -u
Kullanılmayan tüm CSS kurallarını biçem sayfalarından ve <biçem> etiketlerinden kaldır. Üretim şablonlarından oluşturulan bazı kitapların asıl içerikle eşleşmeyen yüksek miktarda ek CSS kuralı olabilir. Bu ek kurallar
hepsini ayrıştırmak zorunda olan okuyucuları yavaşlatabilir.
--smarten-punctuation, -p
Düz metin tire, elipse, tırnak, çift tire, vs. gibi karakterleri tipografik olarak doğru eşitlerine çevir. Algoritmanın
bazen yanlış sonuçlar üretebildiğine dikkat edin, özellikle küçülmelerin başında tek tırnak olduğunda.
--subset-fonts, -f
Yazı tiplerinin alt kümelenmesi gömülü bir yazı tipinin kitapta yalnızca bu yazı tipinden karakterleri içerecek
hale indirgenmesi demektir. Bu yazı tipi dosyalarının boyutlarını oldukça azaltır (yarıya düşürmesine çokça
rastlanır). Örneğin, kitap başlıklar için özel bir yazı tipi kullanıyorsa, alt kümeleme bu yazı tipinin yalnızca
kitaptaki asıl başlıklarda kullanılan karakterleri kullanacak şekilde indirgenmesini sağlar. Veya gömülü yazı
tipi bir yazı tipinin kalın ve yatık sürümlerini gömüyorsa, ama kalın ve yatık metne çok az rastlanıyorsa veya
yoklarsa, kalın ve yatık yazı tipleri yalnızca birkaç karaktere indirgenebilir veya tamamen kaldırılabilir. Alt
kümelemenin tek eksi tarafı, ileri bir tarihte kitaplara daha fazla metin koymaya karar verdiğinizde, yeni eklenen
metnin alt kümelenmiş yazı tipi tarafından kapsanmayabileceğidir.
--verbose
Daha ayrıntılı çıktı üret, hata ayıklama için faydalıdır.
--version
programın sürüm numarasını göster ve çık
ebook-viewer
=
{}=
{}@default
=0=1=2=0=1=2ebook\PYGZhy{}viewer [seçenekler] dosya
1.11. Komut Satırı Arayüzü
261
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Bir e-kitabı görüntüle.
ebook-viewer‘a içinde boşluklar olan bağımsız değişken verdiğinizde, değişkenleri tırnak içine aldığınızdan emin
olun. Örneğin “C:içinde boşluk olan bir yol”
[options]
--continue
Continue reading at the previously opened book
--debug-javascript
Javascript uyarılarını ve konsol iletilerini konsola yazdır
--detach
Denetim terminalinden ayır (sadece linux’ta)
--full-screen, -f
Eğer belirtilirse görüntüleyici başlangıçta tam ekran yapılmaya çalışılacaktır.
--help, -h
bu yardım iletisini göster ve çık
--open-at
Belirtilen kitabın açılacağı konum. Konum görüntüleyicinin sol üst köşesinde görüntülenen gibi bir konumdur.
--raise-window
Eğer belirtilirse görüntüleyici penceresi başlangıçta öne gelmeye çalışacaktır.
--version
programın sürüm numarasını göster ve çık
fetch-ebook-metadata
=
{}=
{}@default
=0=1=2=0=1=2fetch\PYGZhy{}ebook\PYGZhy{}metadata [seçenekler]
Kitap üst verisini çevrim içi kaynaklardan getir. Yazar, başlık veya ISBN bilgilerinden en az birini belirtmelisiniz.
fetch-ebook-metadata‘a içinde boşluklar olan bağımsız değişken verdiğinizde, değişkenleri tırnak içine aldığınızdan emin olun. Örneğin “C:içinde boşluk olan bir yol”
[options]
--authors, -a
Kitap yazar(lar)ı
--cover, -c
Bir dosya adı belirtin. Kapak, eğer varsa, onun içine kaydedilecektir. Bu seçenek olmadan kapak indirilmeyecektir.
--help, -h
bu yardım iletisini göster ve çık
--isbn, -i
ISBN Kodu
262
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
--opf, -o
Üst veriyi insan okuyabilir metinde değil de OPF biçiminde çıktı ver.
--timeout, -d
Saniye cinsinden zaman. Varsayılan 30’dur.
--title, -t
Kitap başlığı
--verbose, -v
Sistem günlüğünü konsola yazdır (stderr)
--version
programın sürüm numarasını göster ve çık
lrf2lrs
=
{}=
{}@default
=0=1=2=0=1=2lrf2lrs book.lrf
LRF dosyasını LRS’ye çevir (XML UTF-8 kodlama) dosyası
lrf2lrs‘a içinde boşluklar olan bağımsız değişken verdiğinizde, değişkenleri tırnak içine aldığınızdan emin olun.
Örneğin “C:içinde boşluk olan bir yol”
[options]
--dont-output-resources
Gömülmüş resimleri ve font dosyalarını diske kaydetme
--help, -h
bu yardım iletisini göster ve çık
--output, -o
LRS dosyasını dışa aktar
--verbose
Daha çok ayrıntı ver
--version
programın sürüm numarasını göster ve çık
lrfviewer
=
{}=
{}@default
=0=1=2=0=1=2lrfviewer [seçenekler] book.lrf
LRF e-kitabını okuyun book.lrf
lrfviewer‘a içinde boşluklar olan bağımsız değişken verdiğinizde, değişkenleri tırnak içine aldığınızdan emin olun.
Örneğin “C:içinde boşluk olan bir yol”
1.11. Komut Satırı Arayüzü
263
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
[options]
--disable-hyphenation
Hecelemeyi kapat. Gerçeklemeyi önemli ölçüde hızlandıracaktır.
--help, -h
bu yardım iletisini göster ve çık
--profile
LRF oluşturucu profili
--verbose
Gerçekleme süreci hakkında daha fazla bilgi yazdır
--version
programın sürüm numarasını göster ve çık
--visual-debug
Gerçekleme motorunun hatalarını ayıklamak için görsel yardımları aç
--white-background
Gözler için daha kolay olduğunu düşündüğümden varsayılan olarak arkaplan kapalıdır. Bu seçeneği arkaplanı
tamamen beyaz yapmak için kullanın.
lrs2lrf
=
{}=
{}@default
=0=1=2=0=1=2lrs2lrf [options] file.lrs
Bir LRS dosyasından LRF dosya derle.
lrs2lrf‘a içinde boşluklar olan bağımsız değişken verdiğinizde, değişkenleri tırnak içine aldığınızdan emin olun.
Örneğin “C:içinde boşluk olan bir yol”
[options]
--help, -h
bu yardım iletisini göster ve çık
--lrs
LRS dosyasından LRS dosyası derle, hata ayıklama için faydalıdır.
--output, -o
Çıktı dosyasının yolu
--verbose
Ayrıntılı işleme
--version
programın sürüm numarasını göster ve çık
web2disk
264
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
=
{}=
{}@default
=0=1=2=0=1=2web2disk URL
URL’nin neresi için olduğu, örneğin http://google.com
web2disk‘a içinde boşluklar olan bağımsız değişken verdiğinizde, değişkenleri tırnak içine aldığınızdan emin olun.
Örneğin “C:içinde boşluk olan bir yol”
[options]
--base-dir, -d
URL’nin kaydedileceği temel dizin. Öntanımlısı .
--delay
Ardışık eşleştirmeler arasındaki en kısa zaman aralığı. Varsayılan 0 saniyedir
--dont-download-stylesheets
CSS stil yüklemeyin
--encoding
İndirmeye çalıştığınız web siteleri için karakter kodlaması. Varsayılan karakter kodlamasının tahmin edilmeye
çalışılmasıdır.
--filter-regexp
Bu düzenli ifadeyle eşleşen bağlantı göz ardı edilir. Bu seçenek birden fazla kez belirtilebilir, bu durumda herhangi bir düzenli ifade bağlantıyla eşleşirse, göz ardı edilir. Varsayılan olarak, hiçbir bağlantı göz ardı edilmez.
Eğer hem filtre düzenli ifadesi, hem eşleşme düzenli ifadesi belirtilmişse, filtre düzenli ifadesi önce uygulanır.
--help, -h
bu yardım iletisini göster ve çık
--match-regexp
Yalnızca bu düzenli ifade ile eşleşen bağlantılar takip edilir. Bu seçenek birden fazla kez belirtilebilir, bu durumda bağlantı düzenli ifadelerden biriyle eşleştiği sürece, takip edilecektir. Varsayılan olarak tüm bağlantılar
takip edilir.
--max-files, -n
İndirilecek maksimum dosya sayısı. Bu sadece <a href> etiketlerindeki dosyalara uygulanır. Öntanımlısı
9223372036854775807
--max-recursions, -r
İç içe takip edilecek bağlantı sayısı. Varsayılan 1
--timeout, -t
Sunucu cevabı için, saniye olarak zaman aşımı bekleme süresi . Varsayılan : 10.0 sn
--verbose
Ayrıntılı çıktı bilgisi göster. Hata ayıklamada faydalıdır
--version
programın sürüm numarasını göster ve çık
1.11.2 Belgelendirilmemiş Komutlar
• ebook-device
• markdown-calibre
1.11. Komut Satırı Arayüzü
265
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Belgelendirilmemiş komutların nasıl kullanılacağını terminalden bir parametre vermeden kullanarak görebilirsiniz.
1.12 Calibre geliştirme ortamı ayarlamak
calibre tamamen açık kaynaklıdır, GNU GPL v388 ile lisanslanmıştır. Bunun anlamı içinizden geldiğince programı
indirme değiştirme hakkına sahip olduğunuzdur. Bu kısımda, seçtiğiniz işletim sistemi üzerinde nasıl calibre geliştirme
ortamı ayarlayabileceinizi öğreneceksiniz. calibre öncelikle Python89 ile yazılmıştır, hız ve sistem arayüzü için bir
miktar C/C++ kodu da içerir. Calibre’nin Python 3 ile uyumlu olmadığını ve en az Python 2.7.9 istediğini unutmayın.
İçindekiler
• Tasarım felsefesi (sayfa 266)
– Kod düzeni (sayfa 267)
• Kodun alınması (sayfa 267)
– Değişikliklerinizin içerilmesi için gönderilmesi (sayfa 268)
• Windows geliştirme ortamı (sayfa 269)
• OS X geliştirme ortamı (sayfa 270)
• Linux geliştirme ortamı (sayfa 271)
• Aynı bilgisayarda ayrı “normal” ve “geliştirme” calibre yüklemelerini bulundurmak (sayfa 271)
• Hata ayıklama ipuçları (sayfa 272)
– Print ifadeleri kullanarak (sayfa 272)
– Etkileşimli python yorumcusu kullanarak (sayfa 272)
– Python hata ayıklayıcıyı uzak hata ayıklayıcı olarak kullanmak (sayfa 273)
– Hata ayıklayıcının favori python IDE’nizde kullanımı (sayfa 273)
– Calibre python ortamında keyfi betik çalıştırma (sayfa 273)
• Projelerinizde calibre kullanmak (sayfa 274)
– Calibre’nin ikilik kurulumu (sayfa 274)
– Linux üstünde kaynak kurulum (sayfa 274)
• Calibre’nin çeşitli kısımları için API belgelendirmesi (sayfa 274)
1.12.1 Tasarım felsefesi
calibre has its roots in the Unix world, which means that its design is highly modular. The modules interact with each
other via well defined interfaces. This makes adding new features and fixing bugs in calibre very easy, resulting in
a frenetic pace of development. Because of its roots, calibre has a comprehensive command line interface for all its
functions, documented in Komut Satırı Arayüzü (sayfa 232).
Calibre’nin modüler tasarımı Eklentiler ile ifade edilir. Calibre eklentiler yazmakla ilgili bir rehber (sayfa 196)
de vardır. Örneğin calibre’ye yeni bir cihaz desteği yazmak çoğunlukla 100 satırdan az kod bir aygıt sürücüsü eklentisi
ile gerçeklenir. Yerleşik sürücülere90 göz atabilirsiniz. Benzer olarak, yeni dönüştürme biçimlerine destek eklemek
girdİ/çıktı biçimi eklentileri yazmayı gerektirir. Modüler tasarıma bir örnek de haberleri getirmeye yarayan reçete
sistemidir (sayfa 23). Calibre’ye özellikler eklemek için tasarlanmış başka eklenti örnekleri için plugin indeksine91
göz atın.
88
89
90
91
http://www.gnu.org/copyleft/gpl.html
https://www.python.org
https://github.com/kovidgoyal/calibre/tree/master/src/calibre/devices
http://www.mobileread.com/forums/showthread.php?p=1362767#post1362767
266
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Kod düzeni
Tüm calibre python kodu calibre paketindedir. Bu paket aşağıdaki alt paketleri içerir
• devices - Tüm aygıt sürücüleri. Bazı yerleşik sürücülere bakmanız nasıl çalıştıkları konusunda fikir edinmeniz
için yeterli olacaktır.
– Detaylar için: aygıt sürücüleri tarafından desteklenen arayüzü tanımlayan devices.interface ve bir
USBMS aygıtına bağlanan genel bir sürücü tanımlayan devices.usbms e göz atın. Calibre’deki tüm
USBMS temelli sürücüler ondan türemiştir.
• e-kitaplar - Tüm e-kitap dönüştürme/metadata kodu. İyi bir başlangıç noktası ebook-convert
komutuna gücünü veren calibre.ebooks.conversion.cli modülüdür. Dönüştürme süreci
conversion.plumber ile kontrol edilir. Biçim bağımsız tüm kod ebooks.oeb içindedir ve biçim
bağımlı kodlar ebooks.format_name içindedir.
– Metadata okuma, yazma ve indirme tamamen ebooks.metadata içindedir
– Dönüştürme bir boru hattı içinde olur, bu hattın yapısı için şuraya göz atın Giriş (sayfa 52).
Hat bir girdi eklentisi, çeşitli dönüştürmeler ve bir çıktı eklentisinden oluşur. Boru hattını oluşturan ve yürüten kod plumber.py içerisindedir. Hat bir e-kitabın manifesto, omurga, toc, kılavuz, html içerik, vs. içeren sıkıştırılmamış epub gibi bir temsili üstünde çalışır. Bu sunumu yöneten sınıf ebooks.oeb.base içindeki OEBBook sınıfıdır. Dönüştürme sırasında e-kitaba uygulanan çeşitli dönüştürmeler oeb/transforms/*.py içindedir. Girdi ve çıktı eklentileri ise
conversion/plugins/*.py içinde.
– E-kitap düzenleme için değişik bir kapsayıcı nesne kullanılır. E-kitap düzenleme araçları için API Belgelendirmesi (sayfa 281) içinde belgelenmiştir.
• db - Veri tabanı arka ucu. Calibre kitaplığına arayüz için Veri tabanı arayüzü için API Belgelendirmesi
(sayfa 274) ye göz atın.
• içerik sunucu: library.server calibre İçerik Sunucusudur.
• gui2 - Grafik Kullanıcı Arayüzü. GUI ilklendirmesi gui2.main ve gui2.ui içinde gerçekleşir. E-kitap okuyucu gui2.viewer içindedir. E-kitap düzenleyici de gui2.tweak_book içinde.
Çeşitli calibre çalıştırılabilirleri için giriş noktalarını bulmak isterseniz, linux.py92 içindeki ‘‘entry_points‘‘e bakın.
Kodu anlamada yardıma ihtiyacınız olursa, geliştirici forumuna93 gönderin, muhtemelen bir çok calibre geliştiricisinden birinden yardım alırsınız.
1.12.2 Kodun alınması
You can get the calibre source code in two ways, using a version control system or directly downloading a tarball94 .
calibre, dağıtık bir sürüm kontrol sistemi olan Git95 kullanır. Git calibre’nin desteklediği tüm platformlarda kullanılabilirdir. Git’i yükledikten sonra, calibre kaynak kodunu aşağıdaki komutla alabilirsiniz:
=
{}=
{}@default
=0=1=2=0=1=2git clone git://github.com/kovidgoyal/calibre.git
Windows üstünde tam yol ismine ihtiyacınız olacaktır, şuna benzer bir şey olmalı C:\Program
Files\Git\git.exe.
92
93
94
95
https://github.com/kovidgoyal/calibre/blob/master/src/calibre/linux.py
http://www.mobileread.com/forums/forumdisplay.php?f=240
https://calibre-ebook.com/dist/src
http://www.git-scm.com/
1.12. Calibre geliştirme ortamı ayarlamak
267
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
calibre çok geniş ve çok uzun kaynak kontrol geçmişine sahip bir projedir, yani yukarıdaki işlem bir miktar sürebilir
(internet hızınıza bağlı olarak 10 dakikadan bir saate kadar).
If you want to get the code faster, the source code for the latest release is always available as an archive96 .
Bir dalı son koda güncellemek için, şu komutu kullanın:
=
{}=
{}@default
=0=1=2=0=1=2git pull \PYGZhy{}\PYGZhy{}no\PYGZhy{}edit
Değişikliklerinizin içerilmesi için gönderilmesi
Yalnızca bir kaç küçük değişiklik yapmak istiyorsanız, değişikliklerinizi yapıp calibre hata takibinde97 bir bilete ekleyebileceğiniz bir “merge talimatı” oluşturun. Bu işlem için değişikliklerinizi yapıp şunu çalıştırın:
=
{}=
{}@default
=0=1=2=0=1=2git commit \PYGZhy{}am \PYGZdq{}Comment describing your changes\PYGZdq{}
git
Bu işlem mevcut dizinde bir my-changes dosyası oluşturur, bunu basitçe calibre hata takibindeki98 bir bilete ekleyin. Bu işlemin yaptığınız tüm gönderimleri içereceğini unutmayın. Sadece bazı gönderimleri yollamak isterseniz,
yukardaki origin/master kısmını değiştirmelisiniz. Sadece son gönderiyi yollamak için:
=
{}=
{}@default
=0=1=2=0=1=2git format\PYGZhy{}patch HEAD\PYGZti{}1 \PYGZhy{}\PYGZhy{}stdout \PYGZgt{} my\PYGZhy{}chan
Son n gönderiyi yollamak için, 1 i n ile değiştirin, örneğin, son 3 gönderi için:
=
{}=
{}@default
=0=1=2=0=1=2git format\PYGZhy{}patch HEAD\PYGZti{}3 \PYGZhy{}\PYGZhy{}stdout \PYGZgt{} my\PYGZhy{}chan
Be careful to not include merges when using HEAD~n.
calibre üstünde yoğun geliştirme yapmayı planlıyorsanız, en iyi yöntem bir GitHub99 hesabı açmak olacaktır. Aşağıda
ana calibre deposuna çekme istekleri yapabileceğiniz şekilde kendi calibre çatalınızı nasıl oluşturacağınızı gösteren
basit bir kılavuz bulabilirsiniz:
• Makalede gösterildiği gibi makinenize git kurun: Git Kurulumu100
• Şurada anlatıldığı gibi, GitHub’a kimlik doğrulama için ssh anahtarları kurun: SSH anahtarları üretme101
• https://github.com/kovidgoyal/calibre adresine gidin ve Fork düğmesine tıklayın.
• Bir Terminal açın ve:
=
{}=
{}@default
96
97
98
99
100
101
https://calibre-ebook.com/dist/src
https://bugs.launchpad.net/calibre
https://bugs.launchpad.net/calibre
https://github.com
https://help.github.com/articles/set-up-git
https://help.github.com/articles/generating-ssh-keys
268
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
=0=1=2=0=1=2
git clone git@github.com:\PYGZlt{}username\PYGZgt{}/calibre.git
git remote add upstream https://github.com/kovidgoyal/calibre.git
<username> kısmını github kullanıcı adınızla değiştirin. Bu işlem sizin çatalınızı yerel olarak getirmeye yarar.
• İstediğiniz gibi değişiklikler yapabilir ve istediğiniz zaman gönderebilirsiniz. Yaptığınız işler birleştirmeye hazır
olduğunda:
=
{}=
{}@default
=0=1=2=0=1=2
git push
sonra da https://github.com/<username>/calibre adresine gidin ve Pull Request düğmesine tıklayıp birleştirme işlemi için bir çekme isteği üretin.
• Herhangi bir anda yerel kopyanızı ana depo ile şu şekilde güncel tutabilirsiniz:
=
{}=
{}@default
=0=1=2=0=1=2
git pull upstream
Ayrıca calibre geliştirici forumunu da102 takip etmelisiniz. Büyük değişiklikler yapmadan önce forumda tartışmalı
veya Kovid ile doğrudan temas kurmalısınız (e-posta adresi tüm kaynak kodunda bulunabilir).
1.12.3 Windows geliştirme ortamı
Not: Yukarda anlatıldığı gibi calibre kaynak kodunu almalısınız.
Calibre’yi Windows yükleyici kullanarak normalce kurun. Sonra bir Komut Satırı açın ve önceden getirilmiş olan
calibre kod dizinine gidin. Örneğin:
=
{}=
{}@default
=0=1=2=0=1=2cd C:\PYGZbs{}Users\PYGZbs{}kovid\PYGZbs{}work\PYGZbs{}calibre
calibre src ve kaynak alt dizinlerini içeren dizindir.
Sonraki adım çevre değişkeni CALIBRE_DEVELOP_FROM değerinin src dizininin mutlak yoluna ayarlanmasıdır.
Yani, yukardaki örneği takip edersek, C:\Users\kovid\work\calibre\src dizini olurdu. Windows üstünde
çevre değişkeni ayarlamakla ilgili kısa bir kılavuz103 .
Çevre değişkenini ayarladıktan sonra, yeni bir komut satırı açın ve şu komutu kullanarak düzgün ayarlandığını doğrulayın:
=
{}=
{}@default
=0=1=2=0=1=2echo \PYGZpc{}CALIBRE\PYGZus{}DEVELOP\PYGZus{}FROM\PYGZpc{}
Bu çevre değişkenini ayarlamak calibre’nin belirtilen konumdan tüm Python kodunu yükleyeceği anlamına gelir.
Bu kadar! Şimdi calibre kodu üstünde çalışmaya başlayabilirsiniz.
src\calibre\__init__.py dosyasını açın ve şu satırı ekleyin:
102
103
Örneğin
favori
düzenleyicinizle
http://www.mobileread.com/forums/forumdisplay.php?f=240
https://docs.python.org/2/using/windows.html#excursus-setting-environment-variables
1.12. Calibre geliştirme ortamı ayarlamak
269
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
=
{}=
{}@default
=0=1=2=0=1=2\PYG{k}{print} \PYG{p}{(}\PYG{l+s}{\PYGZdq{}}\PYG{l+s}{Hello, world!}\PYG{l+s}{\PYGZdq{}}\
dosyanın üst kısmına doğru. Şimdi calibredb komutunu çalıştırın. Çıktının ilk satırı Hello, world! olmalı.
İsterseniz, şurada104 anlatılanları takip ederek, ücretsiz Microsoft Visual Studio içinde de bir calibre geliştirme ortamı
kurabilirsiniz.
1.12.4 OS X geliştirme ortamı
Not: Yukarda anlatıldığı gibi calibre kaynak kodunu almalısınız.
Calibre’yi sağlanan .dmg dosyası ile normal olarak kurun. Sonra bir Terminal açın ve daha önceden getirilmiş calibre
kod dizinine gidin, örneğin:
=
{}=
{}@default
=0=1=2=0=1=2\PYG{n}{cd} \PYG{o}{/}\PYG{n}{Users}\PYG{o}{/}\PYG{n}{kovid}\PYG{o}{/}\PYG{n}{work}\PYG{o}
calibre src ve kaynak alt dizinlerini içeren dizindir. calibre GUI’sindeki Seçenekler->Gelişmiş->Diğer menüsünden
calibre komut satırı araçlarını yüklediğinize emin olun.
Sonraki adım calibre’yi hata ayıklama kipinde çalıştırırken CALIBRE_DEVELOP_FROM çevre değişkenini src dizininin mutlak yoluna ayarlayacak bir bash betiği oluşturmaktır.
Bir düz metin dosyası oluşturun:
=
{}=
{}@default
=0=1=2=0=1=2\PYGZsh{}!/bin/sh
export CALIBRE\PYGZus{}DEVELOP\PYGZus{}FROM=\PYGZdq{}/Users/kovid/work/calibre/src\PYGZdq{}
calibre\PYGZhy{}debug \PYGZhy{}g
Bu dosyayı /usr/bin/calibre-develop altına kaydedin, ve çalıştırılabilir olması için izinlerini ayarlayın:
=
{}=
{}@default
=0=1=2=0=1=2\PYG{n}{chmod} \PYG{o}{+}\PYG{n}{x} \PYG{o}{/}\PYG{n}{usr}\PYG{o}{/}\PYG{n+nb}{bin}\PYG{o}
Bu işlemden sonra şunu çalıştırın:
=
{}=
{}@default
=0=1=2=0=1=2\PYG{n}{calibre}\PYG{o}{\PYGZhy{}}\PYG{n}{develop}
Calibre başlarken Uç birim penceresinde bazı tanılama bilgileri görüyor olmalısınız, ve GUI penceresinde sürüm
numarasından sonra kaynaktan çalıştırdığınızı belirten bir yıldız işareti görmelisiniz.
104
http://www.mobileread.com/forums/showthread.php?t=251201
270
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
1.12.5 Linux geliştirme ortamı
Not: Yukarda anlatıldığı gibi calibre kaynak kodunu almalısınız.
calibre öncelikle Linux üzerinde geliştirilmiştir. Geliştirme ortamını seçmede iki seçeneğiniz vardır. Calibre ikiliğini
normal olarak yükleyebilir ve bunu geliştirme ortamınız için çalışma zamanı ortamı olarak kullanabilirsiniz. Bu yaklaşım Windows ve OS X’de kullanılana benzer. Alternatif olarak, calibre’yi kaynaktan yükleyebilirsiniz. Kaynaktan
geliştirme ortamı ayarlamakla ilgili yönergeler kaynak ağacındaki INSTALL dosyasındadır. Burada ikiliği çalışma
zamanında kullanacakmış gibi anlatacağız, bu önerilen yöntemdir.
Calibre’yi ikilik yükleyici ile yükleyin. Sonra bir uç birim açın ve daha önceden getirilmiş calibre kod dizinine gidin,
örneğin:
=
{}=
{}@default
=0=1=2=0=1=2\PYG{n}{cd} \PYG{o}{/}\PYG{n}{home}\PYG{o}{/}\PYG{n}{kovid}\PYG{o}{/}\PYG{n}{work}\PYG{o}{
calibre src ve kaynak alt dizinlerini içeren dizindir.
Sonraki adım CALIBRE_DEVELOP_FROM çevre değişkenini src dizininin mutlak yoluna ayarlamaktır. Yukardaki
örnek göz önüne alınırsa bu /home/kovid/work/calibre/src olur. Çevre değişkenlerinin nasıl ayarlanacağı
kullandığınız Linux dağıtımına ve kabuğa bağlıdır.
Çevre değişkenini ayarladıktan sonra, bir uç birim açın şu komutu kullanarak düzgün ayarlanıp ayarlanmadığını kontrol edin:
=
{}=
{}@default
=0=1=2=0=1=2echo \PYGZdl{}CALIBRE\PYGZus{}DEVELOP\PYGZus{}FROM
Bu çevre değişkenini ayarlamak calibre’nin belirtilen konumdan tüm Python kodunu yükleyeceği anlamına gelir.
Bu kadar! Şimdi calibre kodu üstünde çalışmaya başlayabilirsiniz.
src/calibre/__init__.py dosyasını açın ve şu satırı ekleyin:
Örneğin
favori
düzenleyicinizle
=
{}=
{}@default
=0=1=2=0=1=2\PYG{k}{print} \PYG{p}{(}\PYG{l+s}{\PYGZdq{}}\PYG{l+s}{Hello, world!}\PYG{l+s}{\PYGZdq{}}\
dosyanın üst kısmına doğru. Şimdi calibredb komutunu çalıştırın. Çıktının ilk satırı Hello, world! olmalı.
1.12.6 Aynı bilgisayarda ayrı “normal” ve “geliştirme” calibre yüklemelerini bulundurmak
Calibre kaynak ağacı oldukça kararlıdır ve çok nadiren kırılır, ama ayrı bir test kitaplığından kaynaktan çalıştırma ve
yayınlanan calibre sürümünü gündelik kitaplığınızla çalıştırma gibi bir ihtiyaç duyarsanız, .bat dosyaları veya kabuk
betikleri kullanarak calibre’yi başlatabilirsiniz. Aşağıdaki örnek Windows üzerinde .bat dosyaları (diğer platformlar
için de yönergeler aynıdır, .bat dosyası yerine kabuk betiği kullanmanız yeterli) ile bu işin nasıl yapılacağını gösteriyor
Günlük kitaplığınızla calibre’nin yayınlanan sürümünü başlatmak için:
calibre-normal.bat:
1.12. Calibre geliştirme ortamı ayarlamak
271
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
=
{}=
{}@default
=0=1=2=0=1=2calibre.exe \PYGZdq{}\PYGZhy{}\PYGZhy{}with\PYGZhy{}library=C:\PYGZbs{}path\PYGZbs{}to\PYG
calibre-dev.bat:
=
{}=
{}@default
=0=1=2=0=1=2set CALIBRE\PYGZus{}DEVELOP\PYGZus{}FROM=C:\PYGZbs{}path\PYGZbs{}to\PYGZbs{}calibre\PYGZbs
calibre.exe \PYGZdq{}\PYGZhy{}\PYGZhy{}with\PYGZhy{}library=C:\PYGZbs{}path\PYGZbs{}to\PYGZbs{}test\P
1.12.7 Hata ayıklama ipuçları
Python iç gözlem için mükemmel imkanları olan dinamik yazılan bir dildir. Kovid calibre çekirdek kodunu hata ayıklayıcı kullanmadan yazdı. Calibre kodunda hata ayıklama için bir çok taktik vardır:
Print ifadeleri kullanarak
Kovid’in favori hata ayıklama yöntemi. İlgilendiğiniz noktalara print ifadeleri koyun ve programı uç birimde çalıştırın.
Örneğin GUI’yi uç birimden şu şekilde başlatabilirsiniz:
=
{}=
{}@default
=0=1=2=0=1=2\PYG{n}{calibre}\PYG{o}{\PYGZhy{}}\PYG{n}{debug} \PYG{o}{\PYGZhy{}}\PYG{n}{g}
Benzer şekilde, e-kitap görüntüleyiciyi şu şekilde başlatabilirsiniz:
=
{}=
{}@default
=0=1=2=0=1=2\PYG{n}{calibre}\PYG{o}{\PYGZhy{}}\PYG{n}{debug} \PYG{o}{\PYGZhy{}}\PYG{n}{w} \PYG{o}{/}\P
E-kitap düzenleyici şöyle başlatılabilir:
=
{}=
{}@default
=0=1=2=0=1=2\PYG{n}{calibre}\PYG{o}{\PYGZhy{}}\PYG{n}{debug} \PYG{o}{\PYGZhy{}}\PYG{n}{t} \PYG{o}{/}\P
Etkileşimli python yorumcusu kullanarak
Aşağıdaki iki satır kodu ekleyerek o noktada etkileşimli bir python oturumu başlatabilirsiniz:
=
{}=
{}@default
=0=1=2=0=1=2\PYG{k+kn}{from} \PYG{n+nn}{calibre} \PYG{k+kn}{import} \PYG{n}{ipython}
Komut satırından çalıştırırken, tüm yerel tanımlı değişkenlere (yerek kapsamdaki değişkenler) erişimi olan etkileşimli
bir Python yorumlayıcı başlatacaktır. Etkileşimli yorumlayıcının nesne özellikleri için TAB ile tamamlama özelliği
bile vardır ayrıca dir(), type(), repr(), vs. gibi çeşitli Python olanaklarını da kullanabilirsiniz.
272
Bölüm 1. Bölümler
\PY
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Python hata ayıklayıcıyı uzak hata ayıklayıcı olarak kullanmak
Yerleşik python hata ayıklayıcısını (pdb) komut satırından uzak hata ayıklayıcı olarak kullanabilirsiniz. Önce, şu şekilde, uzak hata ayıklayıcıyı calibre kodunda ilgilendiğiniz noktada başlatın:
=
{}=
{}@default
=0=1=2=0=1=2\PYG{k+kn}{from} \PYG{n+nn}{calibre.rpdb} \PYG{k+kn}{import} \PYG{n}{set\PYGZus{}trace}\PY
Ardından calibre’yi normal ya da önceki kısımda açıklanan calibre hata ayıklama komutlarından birini kullanarak
çalıştırın. Kodda yukardaki noktaya erişildiğinde calibre donacak ve hata ayıklayıcının bağlanmasını bekleyecektir.
Şimdi bir uç birim açın ve hata ayıklama oturumunu başlatmak için aşağıdaki komutu kullanın:
=
{}=
{}@default
=0=1=2=0=1=2calibre\PYGZhy{}debug \PYGZhy{}c \PYGZdq{}from calibre.rpdb import cli; cli()\PYGZdq{}
Python hata ayıklayıcıyı nasıl kullanacağınız hakkında bilgiyi pdb modülü için python stdlib belgelerinde105 bulabilirsiniz.
Not: Varsayılan olarak, uzak hata ayıklayıcı port 4444’den bağlanmaya çalışacaktır. Yukardaki set_trace() ve cli()
fonksiyonlarına port parametresini set_trace(port=1234) ve cli(port=1234) şeklinde geçirerek değiştirebilirsiniz.
Not: Python hata ayıklayıcı birden çok iş ipini desteklemez, yani her iş ipi için set_trace’i her seferinde değişik bir
port numarasıyla bir kere çağırmalısınız.
Hata ayıklayıcının favori python IDE’nizde kullanımı
Eğer uzak hata ayıklamayı destekliyorsa, yerleşik hata ayıklayıcı favori python IDE’niz tarafından kullanılabilir.
İlk adım calibre nin indirilmiş src yolunu IDE’nizde PYTHONPATH‘‘e eklemek. Başka bir deyişle,
yukarda ‘‘CALIBRE_DEVELOP_FROM olarak ayarladığınız dizin IDE’nizin ‘‘PYTHONPATH‘‘inde de yer almalıdır.
Sonra IDE’nin uzak hata ayıklayıcı modülünü calibre kaynak kodunuzun src alt dizinine yerleştirin. Uzak hata ayıklayıcı çalıştırmak için ne gerekiyorsa calibre’de ilgilendiğiniz noktaya ekleyin. Sonra calibre’yi normal şekilde çalıştırın.
IDE’niz artık calibre içinde gelen uzak hata ayıklayıcıya bağlanabiliyor olmalı.
Calibre python ortamında keyfi betik çalıştırma
calibre-debug komutu calibre modüllerine erişimi olan kodunuzun çalışmasını sağlayan bir kaç pratik anahtar
içerir:
=
{}=
{}@default
=0=1=2=0=1=2calibre\PYGZhy{}debug \PYGZhy{}c \PYGZdq{}some python code\PYGZdq{}
105
https://docs.python.org/2/library/pdb.html#debugger-commands
1.12. Calibre geliştirme ortamı ayarlamak
273
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
komut satırında küçük bir kod parçasını test etmek için çok iyidir. Python yorumlayıcısındaki -c anahtarıyla aynı
şekilde çalışır:
=
{}=
{}@default
=0=1=2=0=1=2calibre\PYGZhy{}debug myscript.py
kendi Python betiğinizi çalıştırmak için kullanılabilir. Betiğin Python yorumlayıcısına verilmesiyle aynı şekilde çalışır,
tek fark calibre ortamının tamamen başlatılmış olması, yani betiğinizde tüm calibre kodunu kullanabilecek olmanızdır.
Betiğinizle komut satırı bağımsız değişkenlerini kullanmak için şu biçimi kullanın:
=
{}=
{}@default
=0=1=2=0=1=2calibre\PYGZhy{}debug myscript.py \PYGZhy{}\PYGZhy{} \PYGZhy{}\PYGZhy{}option1 arg1
-- takip eden tüm değişkenlerin betiğinize geçirilmesine sebep olur.
1.12.8 Projelerinizde calibre kullanmak
Python projenizde calibre fonksiyonlarını/kodunu doğrudan kullanmak mümkündür. Bunu yapmanın iki yolu vardır:
Calibre’nin ikilik kurulumu
Eğer calibre’nin ikilik kurulumuna sahipseniz, calibre ile gelen Python yorumlayıcısını şu şekilde kullanabilirsiniz:
=
{}=
{}@default
=0=1=2=0=1=2calibre\PYGZhy{}debug /path/to/your/python/script.py \PYGZhy{}\PYGZhy{} arguments to your
Linux üstünde kaynak kurulum
Yukardaki yöntemin yanında, Linux üstünde kaynaktan kurulum yaparsanız, calibre’yi doğrudan şu şekilde içe aktarabilirsiniz:
=
{}=
{}@default
=0=1=2=0=1=2\PYG{k+kn}{import} \PYG{n+nn}{init\PYGZus{}calibre}
\PY
\PYG{k}{print} \PYG{n}{calibre}\PYG{o}{.}\PYG{n}{\PYGZus{}\PYGZus{}version\PYGZus{}\PYGZus{}}
Calibre kodunu çalıştırmak için yorumlayıcıyı ayarladığından, herhangi başka calibre modülünden/paketinden önce
init_calibre modülünü içe aktarmanız önemlidir.
1.12.9 Calibre’nin çeşitli kısımları için API belgelendirmesi
Veri tabanı arayüzü için API Belgelendirmesi
Bu API süreç güvenlidir (çoklu okuma, tekil yazmalı kitleme şeması kullanır). API’ye şu şekilde erişebilirsiniz:
274
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
=
{}=
{}@default
=0=1=2=0=1=2\PYG{k+kn}{from} \PYG{n+nn}{calibre.library} \PYG{k+kn}{import} \PYG{n}{db}
\PY
Eğer ana calibre GUI’sinin bir parçası olan bir calibre eklentisi içindeyseniz, erişimi şu şekilde sağlayabilirsiniz:
=
{}=
{}@default
=0=1=2=0=1=2\PYG{n}{db} \PYG{o}{=} \PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{gui}\PYG{o}{.}\PYG{n}{current\
class calibre.db.cache.Cache(backend)
Calibre kitaplığındaki bir metadata.db dosyasının bellekteki zulası. Bu sınıf ayrıca veri tabanına erişmek için
süreç güvenli bir API olarak hizmet verir. Bellekteki zula en iyi performans için normal biçiminde devam ettirilir.
SQLITE metadata.db’den kararlı şekilde okuma yazma yapma yöntemi olarak kullanılır. Tüm tablo
okuma/sıralama/arama/zulalama mantığı tekrar uygulanmıştır. Bu işlem en iyi performans ve esneklik için gerekliydi.
add_books(books,
add_duplicates=True,
apply_import_tags=True,
preserve_uuid=False,
run_hooks=True, dbapi=None)
Belirtilen kitapları kitaplığa ekle. Kitaplar, mi bir Metadata nesnesi ve format_map {fmt:
path_or_stream} biçiminde bir sözlük nesnesi olmak üzere her biri (mi, format_map) biçiminde olan 2-tuple’ın yinelenebiliri olmalıdır, örneğin: {’EPUB’: ’/path/to/file.epub’}.
Bir çift liste döndürür: ids, duplicates. ids ver tabanında yeni oluşturulan tüm kitapların kitap
id’lerini içerir. duplicates veri tabanında zaten mevcut olan ve has_book() (sayfa 278) tarafından
kullanılan basit çift algılama sezgiseline göre (mi, format_map) içerir.
add_custom_book_data(name, val_map, delete_first=False)
val_map book_ids’in değerlere haritası olmak üzere isimler için veri ekle. delete_first True ise, isim için
daha önce kaydedilen tüm veri silinir.
add_format(book_id, fmt, stream_or_path, replace=True, run_hooks=True, dbapi=None)
Belirtilen kitaba bir biçim ekle. Biçim başarıyla eklendiyse True döndür.
Parametreler
• replace – True ise varolan biçimi değiştir, eğer biçim zaten mevcutsa, False döndür.
• run_hooks – True ise, dosya türü eklentiler eklendikten önce ve sonra biçim üzerinde
çalıştırılır.
• dbapi – Sadece dahili kullanım için.
all_book_ids(type=<type ‘frozenset’>)
Bilinen tüm kitap id’lerinin dondurulmuş kümesi.
all_field_for(field, book_ids, default_value=None)
field_for’un aynısı, farkı birden ço kitap üstünde tek seferde çalışması
all_field_ids(name)
name alanındaki tüm değerler için id’lerin donmuş kümesi.
all_field_names(field)
Tüm alan isimlerinin dondurulmuş kümesi (sadece çoktan-bire ve çoktan-çoka alanlarda kullanılmalı)
author_data(author_ids=None)
Yazar verisini isim, sıralama, bağlantı anahtarlarından oluşan sözlük olarak döndür
Belirtilen id’ye sahip yazar bulunamazsa boş bör sözlük döndürülür. author_id None ise, tüm authorların
verisi döndürülür.
1.12. Calibre geliştirme ortamı ayarlamak
275
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
author_sort_from_authors(authors)
Verilen bir yazar listesinden hesaplanan karakter dizisi üstündeki yazarla bağlantılı yazarı tercih ederek
yazarlar için author_sort karakter dizisini döndür.
books_for_field(name, item_id)
Öğe name alanına ait olmak üzere, item_id ile tanımlı öğe ile bağlantılı tüm kitapları döndür.
Döndürülen değer kitap id’leri kümesi, veya öğe veya alan mevcut değilse boş bir kümedir.
copy_cover_to(book_id, dest, use_hardlink=False, report_file_size=None)
Kapağı dosya benzeri nesne ‘‘dest‘‘e kopyala. Kapak mevcut değilse veya dest mevcut kapakla aynı dosya
ise False döndürür. dest, yalnızca yol mevcut yoldan farklı ise kapağın içine kopyalandığı bir yol olabilir
(büyük küçük harf duyarlılığı da dikkate alınarak).
copy_format_to(book_id, fmt, dest, use_hardlink=False, report_file_size=None)
fmt biçimini dosya benzeri nesne ‘‘dest‘‘e kopyala. Belirtilen biçim mevcut değilse, NoSuchFormat
hatası yükseltir. dest ayrıca yol mevcut yoldan farklı olmak şartıyla biçimin kopyalanacağı bir yol da
olabilir (büyük küçük harf duyarlılığı dikkate alınarak).
cover(book_id, as_file=False, as_image=False, as_path=False)
Kapak resmini veya None döndür. Varsayılan olarak kapağı bytestring olarak döndürür.
UYARI: as_path kullanmak kapağı geçici bir dosyaya kopyalar ve geçici dosyanın yolunu döndürür. İşiniz
bittiğinde geçici dosyayı silmelisiniz.
Parametreler
• as_file – True ise resmi bir açık dosya nesnesi (SpooledTemporaryFile) olarak döndür
• as_image – True ise resmi bir QImage nesnesi oalrak döndür
• as_path – True ise resmi geçici bir dosyaya işaret eden yol olarak döndür
data_for_find_identical_books()
db’ye erişimi olmayan bir işçi süreçte find_identical_books() (sayfa 277) uygulamak için kullanılabilecek veriyi döndür.
data_for_has_book()
has_book() (sayfa 278) içinde kullanmaya müsait veri döndür. Bu işlem db’ye erişimi olmayan bir işçi
süreçte has_book() (sayfa 278) uygulamak için kullanılabilir.
delete_custom_book_data(name, book_ids=())
İsim için veriyi sil. Varsayılan olarak tüm veri silinir, yalnızca bazı kitap id’leri için veriyi silmek istiyorsanız, kitap id listesi verin.
embed_metadata(book_ids, only_fmts=None, report_error=None, report_progress=None)
Belirtilen book_id’lerinin tüm biçimleri içindeki metadata’yı mevcut veri tabanına güncelle.
fast_field_for(field_obj, book_id, default_value=None)
field_for ile aynı, yalnızca alan nesnesini almak için fazladan arama yapmaktan kaçınır
field_for(name, book_id, default_value=None)
book_id ile belirtilen kitap için name alanının değerini döndür. Böyle bir kitap mevcut değilse veya
name alanı için belirtilmiş bir değer yoksa veya böyle bir alan yoksa default_value döndürülür.
default_value title, title_sort, authors, author_sort ve series_index için kullanılmaz. Bunun sebebi
bunları hep db’de değerleri olmasıdır. ‘‘default_value‘‘tüm özel sütunlar için kullanılır.
is_multiple alanları için döndürülen değerler hep tuple biçimindedir, hiçbir değer bulunamasa bile (başka
bir deyişle, default_value göz ardı edilir). İstisna döndürülen değerin her zaman dict biçiminde olduğu
identifier’ler durumundadır. Döndürülen tuple’ler her zaman bağlantı sırasındadır, yani oluşturulma sırasında.
276
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
field_ids_for(name, book_id)
name alanının book_id ile tanımlanan kitaptaki değerleri için id’leri (demet olarak) döndür. Bir değer
yoksa, ya da böyle bir kitap yoksa, veya böyle bir alan yoksa, boş bir demet döndürülür.
find_identical_books(mi, search_restriction=u’‘, book_ids=None)
Mi’deki yazarların üst setine sahip ve aynı başlıklı (başlıklarda bulanık eşleşme kullanılır) kitapları bulur.
Ayrıca data_for_find_identical_books() (sayfa 276) göz atın.
format(book_id, fmt, as_file=False, as_path=False, preserve_filename=False)
E-kitap biçimini bytestring olarak ya da biçim mevcut değilse, veya e-kitap dosyasına yazmaya yetkimiz
yoksa None olarak döndür.
Parametreler
• as_file – True ise e-kitap biçimi dosya nesnesi olarak döndürülür. Dosya nesnesinin
SpooledTemporaryFile olduğunu not edin, yani biçimi başka bir dosyaya kopyalamak istiyorsanız performans için bunun yerine copy_format_to() (sayfa 276) kullanın.
• as_path – Biçim dosyasını geçici bir dosyaya kopyalar ve geçici dosyanın yolunu döndürür
• preserve_filename – True ise ve bir yol döndürüyorsa, dosya adı kitaplıkta kullanılanla aynıdır. Bunun kullanımının tekrar kullanımlarda aynı geçici dosyayı döndüreceğini
not edin (her seferinde tekrar oluşturulan)
format_abspath(book_id, fmt)
format biçimindeki e-kitap için mutlak yolu döndür. API’nin iş ipi güvenliğini kırdığından bunu hemen
hemen hiç kullanmamalısınız. Bunun yerine copy_format_to() (sayfa 276) kullanın.
Şu an yalnızca calibredb listesi, görüntüleyici, kitap düzenleme, biçimi asıl biçime kıyasla, birlikte aç ve
kataloglar ile kullanılır (get_data_as_dict() ile).
Görüntüleyici, birlikte aç ve kitap düzenleden ayrı olarak, diğerlerinin bu çağrı sonucu herhangi bir dosya
yazma G/Ç yaptıklarını sanmıyorum.
format_hash(book_id, fmt)
Belirtilen kitap için belirtilen biçimin özetini döndür. Özet türü arka uca bağlıdır, ama genellikle SHA256’dır.
format_metadata(book_id, fmt, allow_cache=True, update_db=False)
Belirtilen kitap için belirtilen biçimin yolunu, boyutunu ve değiştirilme zamanını döndürür. İlla kullanmanız gerekmiyorsa yolu kullanmamalısınız, çünkü yola erişmek bu API’nin iş ipi güvenliğini bozar. Bunun
yerine copy_format_to() (sayfa 276) metodunu kullanın.
Parametreler
• allow_cache – True ise zuladaki değerler kullanılır, aksi halde yavaş bir dosya sistemine erişim gerçekleşir. Zula değerleri bu API dışından dosya sistemine erişildiyse eski
olabilir.
• update_db – True ise veri tabanındaki max_size alanı bu kitap için güncellemelerdir.
formats(book_id, verify_formats=True)
Belirtilen kitap için tüm biçimlerin demetini getir. verify_formats True ise, dosyanın diskte var olduğunu
da doğrular.
get_categories(sort=u’name’, book_ids=None, already_fixed=None, first_letter_sort=False)
Etiket Tarayıcıyı uygulamak için dahili olarak kullanılır
get_custom_book_data(name, book_ids=(), default=None)
İsim için veri alır. Varsayılan olarak tüm book_id’leri için veriyi döndürür, sadece bazı veriler lazımsa
1.12. Calibre geliştirme ortamı ayarlamak
277
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
kitap id’si listesi verin. book_id’den değere harita döndürür. Belli bir değerin kodu çözülemezse, varsayılan
değerini kullanır.
get_id_map(field)
Belirtilen alan için id numaralarından değerlere harita döndür. Alan bir çoktan teke veya çoktan çoka alan
olmalıdır, aksi durumda ValueError yükseltilir.
get_ids_for_custom_book_data(name)
İsmin verisi olan kitap id’lerin kümesini döndür.
get_item_id(field, item_name)
item_name için öğe id’sini döndür (büyük küçük harf duyarsız)
get_item_ids(field, item_names)
item_name için öğe id’sini döndür (büyük küçük harf duyarsız)
get_item_name(field, item_id)
Belirtilen alanda item_id ile belirtilen öğe için öğe ismini döndür. Ayrıca bknz get_id_map()
(sayfa 278).
get_metadata(book_id, get_cover=False, get_user_categories=True, cover_as_data=False)
book_id ile belirtilen kitap için metadata’yı Metadata nesnesi olarak döndür. Biçim listesinin doğrulanmadığını unutmayın. get_cover True ise, kapak döndürülür, geçici dosyaya yol olarak mi.cover şeklinde
veya cover_as_data True ise mi.cover_data şeklinde.
get_next_series_num_for(series, field=u’series’, current_indices=False)
Sıradaki seri numara üretecini kontrol eden çeşitli tercihleri hesaba katarak belirtilen seriler için sıradaki
seri indisini döndür,.
Parametreler
• field – Seriler benzeri alan (yerleşik seriler sütunu varsayılır)
• current_indices – True ise, book_id’den mevcut series_index değerine harita döndürür.
get_proxy_metadata(book_id)
Veri tabanından değerleri yalnızca istek üstüne okuyan bir ProxyMetadata nesnesi döndürmesi dışında
get_metadata() (sayfa 278) gibidir. get_metadata’dan döndürülen metadata nesnesinden az sayıda
alana erişilmesi gerektiğinde oldukça hızlıdır.
get_usage_count_by_id(field)
Çoktan teke veya çoktan çoka alan olmak üzere belirtilen alanın tüm değerleri için id’den kullanım sayısına
harita döndür.
has_book(mi)
Veritabanı verilen Metadata nesnesiyle aynı başlığa sahip bir girdi içeriyorsa True döndürür. Karşılaştırma
büyük küçük harf duyarsızdır. Ayrıca bknz data_for_has_book() (sayfa 276).
has_format(book_id, fmt)
Biçim diskte mevcutsa True döndür
has_id(book_id)
Belirtilen book_id veri tabanında mevcutsa True döndür
init()
Bu zulayı arka uçtaki veri ile ilklendir.
multisort(fields, ids_to_sort=None, virtual_fields=None)
Sıralanmış kitap id’leri listesi döndür. ids_to_sort None ise, tüm kitap id’leri döndürülür.
Alanlar (field_name, ascending=True veya False) biçiminde 2’li demet listesi olmalıdır. En önemli alan ilk
ikili demettir.
278
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
pref(name, default=None)
Belirtilen özellik için değeri ya da tercih belirtilmemişse default olarak belirtilen değeri döndür.
read_backup(book_id)
Kitap için OPF metadata yedeğini bytestring olarak veya böyle bir backup yoksa None olarak döndür.
remove_books(book_ids, permanent=False)
book_ids ile belirtilen kitapları veri tabanından sil ve biçim dosyalarını sil. permanent False ise, biçim
dosyaları silinmez.
remove_formats(formats_map, db_only=False)
Seçili biçimleri seçili kitaplardan çıkar.
Parametreler
• formats_map – Kitaptan çıkarılacak book_id’den biçim listesine harita.
• db_only – True ise, biçim kaydını sadece veri tabanından çıkar, asıl biçimi dosya sisteminden silme.
remove_items(field, item_ids, restrict_to_book_ids=None)
Belirtilen alandaki belirtilen kimliğe sahip tüm öğeleri sil. Etkilenen kitap kimlikleri kümesini döndürür.
restrict_to_book_ids isteğe bağlı kitap kimlikleri listesidir. Eğer belirtilirse öğeler yalnızca bu
kitaplardan çıkartılır.
rename_items(field, item_id_to_new_name_map, change_index=True, restrict_to_book_ids=None)
Etiketler veya seriler gibi çoktan teke veya çoktan çoka alanlarından öğeleri yeniden adlandır.
Parametreler
• change_index – Seri benzeri bir alanı yeniden adlandırırken series_index değerlerini
de değiştir.
• restrict_to_book_ids – Yeniden adlandırmanın yapılacağı isteğe bağlı kitap kimlikleri kümesi, varsayılan olarak tüm kitaplar.
restore_book(book_id, mi, last_modified, path, formats)
Dosya sisteminde mevcut olan bir kitabın veri tabanındaki girdisini geri yükle
restore_original_format(book_id, original_fmt)
Eğer varsa, belirtilen biçimi önceden kaydedilmiş ORIGINAL_FORMAT ile geri yükle. Başarılı olma
durumunda True döndür. ORIGINAL_FORMAT başarılı geri yüklemenin ardından silinir.
safe_read_lock
Güvenli okuma kilidi iş parçacığı zaten bir yazma kilidine sahipse hiçbir şey yapmayan, aksi durumda
okuma kilidi edinen kilittir. Arama zulasını bileşik sütunlar önünde güncellerken oluşabilecek DowngradeLockErrors hatalarını önlemek için bu gereklidir. Arama zulasını güncellemek ayrıcalıklı bir kilit tutar,
ama bileşik sütun araması paylaşılan bir kilit almaya çalışan ProxyMetadata kullanarak alan değerlerinin
okunmasını içerir. Bu durumu tetikleyen başka senaryolar da olabilir.
Bu özellik her erişimde yeni bir kilit nesnesi döndürür. Bu kilit nesnesi yinelemeli değildir (performans
için) ve yalnızca with cache.safe_read_lock: gibi bir with ifadesiyle kullanılmalıdır, aksi durumda kötü şeyler olacaktır.
save_original_format(book_id, fmt)
Mevcut herhangi ORIGINAL_FORMAT’ın üstüne yazarak belirtilen biçimin kopyasını ORIGINAL_FORMAT olarak keydet.
search(query, restriction=u’‘, virtual_fields=None, book_ids=None)
Veri tabanını belirtilen sorgu için ara, eşleşen kitap id’lerini döndür.
Parametreler
1.12. Calibre geliştirme ortamı ayarlamak
279
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
• restriction – Belirtilen sorguya AND yapılan bir kısıtlama. Kısıtlamaların zulalandığını, yani bir a AND b aramasının bir kıstılı b’li a aramasından yavaş olacağını unutmayın.
• virtual_fields – Dahili kullanım (aranacak on_device gibi sanal alanlar).
• book_ids – None değilse, tüm kitaplar yerine verilen kitapların aranacağı bir kitap id
kümesi.
set_conversion_options(options, fmt=u’PIPE’)
seçenekler {book_id:conversion_options} haritası şeklinde olmalıdır
set_cover(book_id_data_map)
Bu kitap için kapak ayarlayın. veri QImage, QPixmap, dosya nesnesi veya bytestring olabilir. Ayrıca None
da olabilir, bu durumda mevcut kapak kaldırılır.
set_field(name, book_id_to_val_map, allow_case_change=True, do_path_update=True)
name ile belirtilen alanın değerlerini ayarla. Değişiklikten etkilenen tüm kitap id’lerinin kümesini döndürür.
Parametreler
• book_id_to_val_map – book_id’lerin uygulanacak değerlere haritası.
• allow_case_change – True ise, çoktan-bire ve çoktan-çoka alanların büyük küçük
harfleri değiştirilir. Örneğin bir kitabın tag1 etiketi varsa, ve başka bir kitap için etiketi
Tag1 olarak ayarladıysanız allow_case_change True ise her iki kitap da Tag1 etiketine
sahip olur, aksi durumda ikisi de tag1 etiketine s ahip olacaktır.
• do_path_update – Dahili kullanım içindir, değiştirmemelisiniz.
set_metadata(book_id,
mi,
ignore_errors=False,
force_changes=False,
set_authors=True, allow_case_change=False)
Metadata nesnesi ‘mi‘den kitap ‘id‘si için metadata ayarla
set_title=True,
force_changes=True ayarı mi boş değerler içerse de set_metadata’nın alanları güncellemesine yol açar. Bu
durumda ‘None’ ‘boş’dan ayrılmış olur. mi.XXX None ise, XXX yer değiştirilmez, aksi durumda değiştirilir. Etiketler, tanımlayıcılar, ve kapak öznitelikleri özel durumlardır. Etiketler ve tanımlayıcılar None
olamayacağından force_changes true ise her zaman yer değiştirilirler. Mi’nin kitapta olmasını istediğiniz
değerleri içerdiğinden emin olmalısınız. Kapaklar yeni bir kapak sağlanmışsa hep değiştirilir, ama asla
silinmezler. force_changes’in başlık veya yazar ayarlarında etkisi olmadığını da unutmayın.
set_pref(name, val)
Belirtilen değere belirtilen seçeneği ayarla. Ayrıca bknz pref() (sayfa 278).
tags_older_than(tag, delta=None, must_have_tag=None, must_have_authors=None)
Belirtilen zamandan eski tag etiketine sahip tüm kitapların id’lerini döndür. etiket karşılaştırma büyük
küçük harf duyarsızdır.
Parametreler
• delta – Bir timedelta nesnesi veya None. None ise, etiketli tüm id’ler döndürülür.
• must_have_tag – None değilse eşleşme listesi bu etikete sahip kitaplarla kısıtlanır
• must_have_authors – Yazarlar listesi. None değilse, eşleşme listesi bu yazarlara sahip kitaplarla kısıtlanacaktır (büyük küçük harf duyarlı).
user_categories_for_books(book_ids, proxy_metadata_map=None)
Belirtilen kitaplar için kullanıcı kategorilerini döndür. proxy_metadata_map kitapların bir ProxyMetadata nesnesine sahip olduğu durumlarda performans artırmak amaçlı kullanılabilir ve tercihe bağlıdır.
book_id’lerinin ilgili ProxyMetadata nesnesine haritası olmalıdırlar.
280
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
E-kitap düzenleme araçları için API Belgelendirmesi
E-kitap düzenleme araçları bir kitabı HTML sayfalarının ve kaynak dosyaların birleşiminden oluşan
calibre.ebooks.oeb.polish.container.Container (sayfa 281) nesnesinden ve kapsayıcı içinde çeşitli işlemler yapmakta kullanılan araçlardan oluşurlar. Tüm araçlar çeşitli calibre.ebooks.oeb.polish.*
modüllerinin modül seviye fonksiyonları formundadır. Bir kitap için sahip olduğunuz bir kapsayıcı nesnenin yolu
bunun gibidir:
=
{}=
{}@default
=0=1=2=0=1=2\PYG{k+kn}{from} \PYG{n+nn}{calibre.ebooks.oeb.polish.container} \PYG{k+kn}{import} \PYG{n
\PY
E-kitap okuyucu için bir eklenti yazıyorsanız düzenlediğiniz kitap için şöyle bir kapsayıcı elde edeceksiniz:
=
{}=
{}@default
=0=1=2=0=1=2\PYG{k+kn}{from} \PYG{n+nn}{calibre.gui2.tweak\PYGZus{}book} \PYG{k+kn}{import} \PYG{n}{cu
\PYG{n}{container} \PYG{o}{=} \PYG{n}{current\PYGZus{}container}\PYG{p}{(}\PYG{p}{)}
\PYG{k}{if} \PYG{n}{container} \PYG{o+ow}{is} \PYG{n+nb+bp}{None}\PYG{p}{:}
\PYG{n}{report\PYGZus{}error} \PYG{c}{\PYGZsh{} No book has been opened yet}
Kapsayıcı nesne
class calibre.ebooks.oeb.polish.container.Container(rootpath,
opfpath,
log,
clone_data=None)
Kapsayıcı kavramı bir çok dosya ve bir opf dosyasını içeren dizin olarak bir Açık E-kitabı temsil eder. İki önemli
kavramı vardır:
•Kök dizini. Bu kitabın temelidir. Tüm e-kitap dosyaları ya bu dizinin içinde ya da alt dizinlerindedir.
•İsimler: Bunlar kitap dosyalarının kök dizinine göre bağıl yollarıdır. Her zaman POSIX ayraçlarını kullanırlar ve tırnak işareti içermezler. Kitap içindeki dosyaların belirteçleri olarak düşünülebilirler. Kapsayıcı
içindeki metotların çoğu isimlerle çalışır. İsimler her zaman NFC normal biçiminde bulunurlar.
•Kopyalar: kapsayıcı nesnesi e-kitap düzenleyicide kontrol noktaları uygulamaya yarayan etkin bir diske
kopyalama destekler. Bunu çalıştırmak için, dosya sistemindeki dosyalara asla doğrudan erişmemelisiniz. Bunun yerine raw_data() (sayfa 283) veya open() (sayfa 283) kullanarak kitap içindeki bileşen
dosyalara okuma/yazma yapın.
Href ve isimler arasında dönüştürme yaparken bu sınıf tarafından sağlanan yöntemleri kullanın, bunlar tüm
href’lerin tırnağa alındığını varsayar.
abspath_to_name(fullpath, root=None)
Bir mutlak yolu :attr:‘root‘a göre kurallanan bir isme dönüştür
Parametreler root – Taban dizin. Varsayılan olarak bu kapsayıcı nesne için kök kullanılır.
add_file(name, data, media_type=None, spine_index=None)
Bu kapsayıcıya bir dosya ekle. Dosya için girdiler otomatik olarak OPF manifestosu ve omurgaya eklenir
(dosya bir metin belgeyse)
add_name_to_manifest(name)
Manifestoya belirtilen isme sahip bir dosya için girdi ekle. Manifesto kimliğini döndürür.
book_type= u’oeb’
Kitabın türü (EPUB dosyalar için epub ve AZW3 dosyalar için azw3)
1.12. Calibre geliştirme ortamı ayarlamak
281
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
commit(outpath=None, keep_parsed=False)
Tüm kirli ayrıştırılmış nesneleri dosya sistemine yaz ve e-kitap dosyasını çıktı yoluna yaz. :param output: Kaydedilen e-kitap dosyasının yazılacağı yol. Hiçbiri ise, asıl kitap dosyasının yolu kullanılır. :param
keep_parsed: Doğru ise, zulada, gönderilen öğelerin ayrıştırılmış temsilleri tutulur.
commit_item(name, keep_parsed=False)
Ayrıştırılmış bir nesneyi diske gönder (serileştirilir ve altında yatan dosyaya yazılır). Eğer keep_parsed
Doğru ise, ayrıştırılmış temsil zulada tutulur. Ayrıca bknz: parsed() (sayfa 283)
decode(data, normalize_to_nfc=True)
verinin kodunu otomatik olarak bir evrensel kodlama nesnesine çöz.
Parametreler normalize_to_nfc – Döndürülen evrensel kodu EPUB ve AZW3 biçimlerinin gerektirdiği gibi NFC normal biçimine normalleştir.
dirty(name)
İsme karşılık gelen ayrıştırılmış nesneyi kirli olarak işaretle. Ayrıca bknz: parsed() (sayfa 283).
exists(name)
Kuralsal isme karşılık gelen bir dosya mevcutsa Doğru. Bu fonksiyonun altta çalışan işletim sisteminin
sınırlamalarına takıldığını unutmayın, özellikle büyük küçük harf duyarlı(sız)lığı. Yani büyük küçük harfe
duyarsız bir dosya sisteminde ismin harfleri alttaki işletim sisteminde farklı büyüklükte ise bile Doğru
döndürür. Ayrıca bknz has_name() (sayfa 282)
filesize(name)
Belirtilen kuralsal isimle temsil edilen dosyanın boyutunu bayt cinsinden döndür. Kirli ayrıştırılmış nesneleri otomatik olarak halleder. Ayrıca bknz: parsed() (sayfa 283)
generate_item(name, id_prefix=None, media_type=None, unique_href=True)
Bir öğeyi manifestoya, verilen isimden türetilen href ile ekle. Href ve kimliğin benzersiz olduğunu otomatik olarak garantiler. Üretilen öğeyi döndürür.
get_file_path_for_processing(name, allow_modification=True)
Similar to open() except that it returns a file path, instead of an open file object.
guess_type(name)
Belirtilen dosya ismi için beklenen mime türünü uzantısına göre döndür.
guide_type_map
Kılavuz türden kuralsal isme harita
has_name(name)
Belirtilen ile aynı kuralsal isme sahip bir dosya mevcutsa Doğru döndür. :meth:‘exists‘in aksine, bu yöntem
her zaman büyük küçük harf duyarlıdır.
href_to_name(href, base=None)
Bir href’i (tabana göre) isme dönüştür. taban bir isim veya None olmalıdır, ki bu durumda self.root kullanılır.
insert_into_xml(parent, item, index=None)
Öğeyi girintilemeyi düzelterek üst öğeye ekle (ya da indis None ise ekle). Yalnızca kendine kapanan öğeler
ile çalışır.
is_dir= False
If this container represents an unzipped book (a directory)
iterlinks(name, get_line_numbers=True)
İsimdeki tüm bağlantılar üzerinde dön. Eğer get_line_numbers Doğru ise (bağlantı, satır_numarası, uzaklık) biçiminde sonuçlar üretir. Burda satır numarası bağlantının bulunduğu satır, uzaklık ise satır başından
kaç karakter uzakta olduğudur. Uzaklığın, uzaklık sıfır değilse bir çok satırı kapsayabileceğini unutmayın.
282
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
manifest_has_name(name)
Manifestonun isme karşılık gelen bir girdisi varsa Doğru döndürür
manifest_id_map
Manifesto kimliğinin kuralsal isimlere haritası
manifest_type_map
Manifesto ortam türünün bu ortam türünde kuralsal isimlerin listesine haritası
mi
Bu kitabın metadata’sının Metadata nesnesi. Bu nesnenin bu özellik her istendiğinde oluşturulduğunu unutmayın, tutumlu kullanın.
name_to_abspath(name)
Kuralsal bir ismi mutlak işletim sistemi yoluna çevir
name_to_href(name, base=None)
Bir ismi tabana göre yapılmış bir href’e çevir, base bir isim veya None olabilir ki bu durumda self.root
kullanılır
names_that_must_not_be_changed
Asla yeniden adlandırılmaması gereken isimler kümesi. E-kitap dosya biçimine bağlıdır.
names_that_must_not_be_removed
Kapsayıcıdan asla silinmemesi gereken isimler kümesi. E-kitap dosya biçimine bağlıdır.
names_that_need_not_be_manifested
Manifestodan eksik olmasına izin verilen isimler kümesi. E-kitap dosya biçimine bağlıdır.
open(name, mode=u’rb’)
İsmin gösterdiği dosyayı doğrudan okuma/yazma için aç. Bunun dosyayı kirli ise göndereceğini, ve ayrıştırma zulasından sileceğini unutmayın. Ayrıştırılmış sürümüne tekrar erişmeden önce bu dosyayla işinizi
bitirmelisiniz, yoksa kötü şeyler olur.
opf
Ayrıştırılmış OPF dosyası
opf_get_or_create(name)
Belirtilen isme sahip ilk XML öğesini döndüren veya mevcut değilse opf:package öğesi altında oluşturarak
döndüren kolaylaştırıcı yöntem.
opf_version
OPF’nin <package> öğesinde ayarlanmış sürüm
opf_xpath(expr)
XPath ifadesini OPF dosyasında değerlendiren kolaylık sağlayıcı yöntem, opf: ve dc: isim uzayı ön ekleri
önceden tanımlanmıştır.
parsed(name)
İsimle belirtilen dosyanın ayrıştırılmış temsilini döndürür. HTML ve XML dosyaları için lxml ağacı döndürülür. CSS dosyaları için cssutils biçim sayfaları döndürülür. Ayrıştırılmış nesnelerin performans için
zulalandıklarını unutmayın. Ayrıştırılmış nesnede değişiklik yaparsanız, dirty() (sayfa 282) metodunu
çağırmalısınız, böylece kapsayıcı zulayı güncelleyeceğini bilir. Ayrıca bknz replace() (sayfa 284).
raw_data(name, decode=True, normalize_to_nfc=True)
İsimle belirtilen dosyayla ilişkili ham veriyi döndürür
Parametreler
• decode – True ise ve dosyanın metin tabanlı bir mime türü varsa, ham baytlar yerine
kodu çözülmüş evrensel kodda nesne olarak döndür.
1.12. Calibre geliştirme ortamı ayarlamak
283
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
• normalize_to_nfc – True ise döndürülen evrensel kodda nesne EPUB ve AZW3
dosya biçimlerinin gerektirdiği şekilde NFC normal biçimine normelleştirilir.
relpath(path, base=None)
Bir mutlak yolu (işletim sistemi ayraçlarıyla) tabana göre bir yola dönüştür (varsayılan self.root).Göreceli
yol bir isim değildir. Bunun için abspath_to_name() (sayfa 281) kullanın.
remove_from_spine(spine_items, remove_if_no_longer_in_spine=True)
Belirtilen öğeleri (kuralsal isme göre) omurgadan çıkar. Eğer remove_if_no_longer_in_spine
True ise, öğeler kitaptan da silinir, sadece omurgadan değil.
remove_from_xml(item)
Öğeyi üstünden ayırır, girintiyi düzeltir (yalnızca kendi kendine kapanan öğelerde çalışır)
remove_item(name, remove_from_guide=True)
İsimle belirtilen öğeyi bu kapsayıcıdan çıkar. Bu, öğeye tüm başvuruları OPF manifestosundan, kılavuzdan
ve omurgadan, ayrıca dahili zulalardan çıkarır.
rename(current_name, new_name)
Bir dosyayı current_name’den new_name’ye yeniden adlandırır. Dosyanın bulunduğu dizin değişirse otomatik olarak dosya içindeki tüm bağlantıları tekrar temellendirir. Ancak bağlantıların bu dosyaya başvuran
diğer dosyalarda güncellenmediğini unutmayın. Bu performans yüzündendir, bu türde güncellemeler toplu
halde yapılmalıdır.
replace(name, obj)
İsme karşışlık gelen ayrıştırılmış nesneyi obj ile değiştir, ki bu da benzer bir nesne olmalıdır, örn.
HTML/XML için bir lxml ağacı veya bir CSS dosyası için cssutils biçim sayfası.
replace_links(name, replace_func)
İsimdeki tüm bağlantıları replace_func kullanarak, ki bu URL alan ve değiştirilen URL’yi döndüren bir
çağrılabilir olmalıdır, değiştir. Ayrıca gerçekten değişiklik yapıldıysa True olarak ayarlanacak bir ‘replace’
özniteliği olmalıdır. Bu gibi çağrılabilirler oluşturmanın uygun yolu LinkReplacer ve LinkRebaser
sınıflarını kullanmaktır.
serialize_item(name)
Ayrıştırılmış bir nesneyi (kuralsal isimle tanımlanan) bayt karakter dizisine çevir. Bknz parsed()
(sayfa 283).
set_spine(spine_items)
Omurgayı spine_items olacak şekilde ayarla, öyle ki spine_items (isim, doğrusal) biçiminde bir yinelenebilir olsun. İsimlerden biri manifestoda yoksa hata yükseltir.
spine_items
Kitabın omurgasındaki her öğe için kuralsal isim döndüren bir yineleyici. Ayrıca bknz: spine_iter
(sayfa 284) ve spine_items (sayfa 284).
spine_iter
Kitabın omurgasındaki her öğe için item, name is_linear döndüren bir yinelenebilir. item lxml öğesidir,
name kuralsal dosya ismidir ve is_linear öğe doğrusalsa True’dir. Ayrıca bknz: spine_names (sayfa 284)
ve spine_items (sayfa 284).
spine_names
name döndüren bir yinelenebilir ve kitap omurgasındaki her öğe için is_linear. Ayrıca bknz: spine_iter
(sayfa 284) ve spine_items (sayfa 284).
284
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Bir kapsayıcıdaki bileşen dosyalarının yönetimi
calibre.ebooks.oeb.polish.replace.replace_links(container,
link_map,
frag_map=<function
<lambda>>,
replace_in_opf=False)
Bağlantıları kapsayıcıda dosyalarla değiştir. Kapsayıcıdaki tüm dosyaların üzerinden geçerek içlerinde belirtilen
bağlantıları değiştirir.
Parametreler
• link_map – Eski kuralsal isimden yeni kuralsal
ğin:{’images/old.png’: ’images/new.png’}
isme
harita.
Örne-
• frag_map – İki bağımsız değişken (isim, çapa) alan ve yeni bir çapa döndüren bir
çağrılabilir. HTML dosyalarındaki çapaları değiştirme ihtiyacınız varsa faydalıdır. Öntanımlı olarak, hiçbir şey yapmaz.
• replace_in_opf – False ise, OPF dosyasında bağlantılar değiştirilmez.
calibre.ebooks.oeb.polish.replace.rename_files(container, file_map)
Kapsayıcı içindeki dosyaları yeniden adlandır, onlara olan tüm bağlantıları da güncelle.
Parametreler file_map – Eski kuralsal isimden yeni kuralsal
ğin:{’text/chapter1.html’: ’chapter1.html’}.
isme
harita,
örne-
calibre.ebooks.oeb.polish.replace.get_recommended_folders(container, names)
Verilen dosya isimleri için tavsiye edilen dizinleri döndür. Tavsiye aynı türde dosyaların kapsayıcı içinde nerede
olduklarını temel alır. Belirli türde hiç dosya yoksa, tavsiye edilen dizin OPF dosyasını içeren dizin olarak
varsayılır.
Güzel yazdırma ve ayrıştırma hatalarının otomatik düzeltilmesi
calibre.ebooks.oeb.polish.pretty.fix_html(container, raw)
Ham karakter dizisi olarak temsil edilen HTML’deki ayrıştırma hatalarını düzelt. Düzeltme HTML5 ayrıştırma
algoritması ile yapılır.
calibre.ebooks.oeb.polish.pretty.fix_all_html(container)
Kapsayıcıdaki tüm HTML dosyalarındaki ayrıştırma hatalarını düzelt. Düzeltme HTML5 ayrıştırma algoritmasıyla yapılır.
calibre.ebooks.oeb.polish.pretty.pretty_html(container, name, raw)
Ham karakter dizisi olarak temsil edilen HTML’yi güzel yazdır
calibre.ebooks.oeb.polish.pretty.pretty_css(container, name, raw)
Ham karakter dizisi olarak temsil edilen CSS’yi güzel yazdır
calibre.ebooks.oeb.polish.pretty.pretty_xml(container, name, raw)
Ham olarak temsil edilen karakter dizisinin XML’ini güzel yazdır. name OPF’nin ismiyse, OPF’ye özel ek
güzelleştirmeler yapılır.
calibre.ebooks.oeb.polish.pretty.pretty_all(container)
Kapsayıcıdaki tüm HTML/CSS/XML dosyalarını güzel yazdır
Kitap ceketlerinin yönetimi
calibre.ebooks.oeb.polish.jacket.remove_jacket(container)
Varsa, mevcut bir ceketi kaldır. Mevcut ceket yoksa False döndürür.
1.12. Calibre geliştirme ortamı ayarlamak
285
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
calibre.ebooks.oeb.polish.jacket.add_or_replace_jacket(container)
Ya kitap metadata’sından yeni bir ceket oluştur, ya da mevcut ceketi değiştir. Mevcut bir ceket değiştirildiyse
True döndürür.
Dosyaların ayrılması ve birleştirilmesi
calibre.ebooks.oeb.polish.split.split(container, name, loc_or_xpath, before=True, totals=None)
name ile belirtilen dosyayı loc_ veeya _xpath ile belirtilen konumdan ayır. Ayırma otomatik olarak etkilenen
dosyalardaki tüm bağlantı ve başvuruları günceller.
Parametreler
• loc_or_xpath – //h:div[@id=”burayı_ayır”] gibi bir XPath ifadesi olmalıdır. Ayrıca
önizleme panelinde dahili olarak ayırmayı uygulayan loc da olabilir.
• before – True ise ayırma tanımlanan öğeden önce olur, aksi halde sonra.
• totals – Dahili olarak kullanılır
calibre.ebooks.oeb.polish.split.multisplit(container, name, xpath, before=True)
Belirtilen dosyayı birden çok yerinden ayır (Belirtilen XPath ile eşleşen tüm etiketler. Ayrıca bknz: split()
(sayfa 286). Ayırma etkilenen dosyalardaki tüm bağlantı ve başvuruları otomatik olarak günceller.
Parametreler before – True ise ayırma tanımlanan öğeden önce yapılır, aksi halde sonra.
calibre.ebooks.oeb.polish.split.merge(container, category, names, master)
Belirtilen dosyaları tek bir dosya olarak birleştir, etkilenen dosyalardaki tüm bağlantı ve başvuruları otomatik
olarak güncelle. Dosyalar ya tamamen HTML ya da CSS olmalıdır.
Parametreler
• category – Ya HTML dosyalar için ’text’ ya da CSS dosyalar için ’styles’ olmalıdır.
• names – Birleştirilecek dosyaların listesi
• master – Birleştirilen dosyalardan hangisinin ana dosya olduğu, yani, birleştirme sonrası
kalacak olan dosya.
Kapakların yönetimi
calibre.ebooks.oeb.polish.cover.set_cover(container, cover_path,
ons=None)
Kitabın kapağını cover_path ile gösterilen resim olarak ayarla.
report=None,
opti-
Parametreler
• cover_path – Ya bir resim dosyasına mutlak yol ya da kitap içindeki bir resmin kuralsal
ismi. Kitaptaki bir resim kullanılırken, ayrıca seçenekleri de belirtmelisiniz, aşağıya göz
atın.
• report – Tek bir bağımsız değişken alan isteğe bağlı çağrılabilir. İşlenen görevlerle ilgili
bilgi ile çağrılacaktır.
• options – None veya kapağın nasıl ayarlandığını kontrol eden bir sözlük. Sözlüğün girdileri olabilir:keep_aspect: True veya False (EPUB kapaklarının en-boy oranlarını korur)
no_svg: True veeya False (EPUB başlık sayfasında bir SVG kapak sargısı kullanır) existing: True veya False (cover_path kitaptaki mevcut bir resmi gösterir)
286
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
calibre.ebooks.oeb.polish.cover.mark_as_cover(container, name)
Belirtilen resmi kapak resmi olarak işaretle.
calibre.ebooks.oeb.polish.cover.mark_as_titlepage(container,
move_to_start=True)
Belirtilen HTML dosyayı EPUB’ın başlık sayfası olarak işaretle.
name,
Parametreler move_to_start – True ise HTML dosya omurganın başına taşınır
CSS ile Çalışmak
calibre.ebooks.oeb.polish.fonts.change_font(container, old_name, new_name=None)
Bir yazı tipi ailesini old_name’den new_name’ye değiştir. Yazı tipinin biçim sayfaları, biçim etiketleri ve biçim
özniteliklerinde tamamen değişmesini sağlar. old_name gömülü bir yazı tipini gösteriyorsa, kaldırılır. Yazı tipi
ailesini değiştirmek yerine kaldırmak için new_name’yi None olarak ayarlayabilirsiniz.
calibre.ebooks.oeb.polish.css.remove_unused_css(container,
report=None,
remove_unused_classes=False)
Kullanılmayan tüm CSS kurallarını kitaptan çıkar. Kullanılmayan bir CSS kuralı herhangi bir içerikle eşleşmeyen kuraldır.
Parametreler
• report – Tek bir bağımsız değişken alan isteğe bağlı çağrılabilir. Gerçekleştirilen işlemler
hakkındaki bilgi ile çağrılır.
• remove_unused_classes – True ise, HTML’deki herhangi bir CSS kuralıyla eşleşmeyen sınıf öznitelikleri de kaldırılır.
calibre.ebooks.oeb.polish.css.filter_css(container, properties, names=())
Belirtilen CSS özelliklerini kitaptaki tüm CSS kurallarından çıkar.
Parametreler
• properties – Kaldırılacak özellikler kümesi. Örneğin: {’font-family’,
’color’}.
• names – Özelliklerin çıkarılacağı dosyalar. Öntanımlı olarak kitaptaki tüm HTML ve CSS
dosyalardır.
İçindekiler ile Çalışmak
calibre.ebooks.oeb.polish.toc.from_xpaths(container, xpaths)
XPath ifadeleri listesinden İçindekiler üret. Listedeki her ifade üretilen İçindekilerdeki bir seviyeye karşılık
gelir. Örneğin: [’//h:h1’, ’//h:h2’, ’//h:h3’] <h1>, <h2> ve <h3> etiketlerinden üç seviyeli
bir içindekiler üretir.
calibre.ebooks.oeb.polish.toc.from_links(container)
Kitaptaki bağlantılardan bir İçindekiler üret.
calibre.ebooks.oeb.polish.toc.from_files(container)
Kitaptaki dosyalardan İçindekiler üret.
calibre.ebooks.oeb.polish.toc.create_inline_toc(container, title=None)
Mevcut NCX içindekilerden dahili (HTML) bir İçindekiler oluştur.
Parametreler title – Bu içindekiler için başlık.
1.12. Calibre geliştirme ortamı ayarlamak
287
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Kitap Araçlarını Düzenle
class calibre.gui2.tweak_book.plugin.Tool
Taban: object Bir Kitap Düzenle eklentisindeki araçlar için taban sınıf. Kullanışlı üyelerden bazıları:
•self.plugin: bu aracı ait olduğu calibre.customize.Plugin (sayfa 197) nesnesine başvuru.
•self. boss (sayfa 288)
•self. gui (sayfa 288)
Alt sınıflarda ezilmesi gereken metodlar:
•create_action() (sayfa 288)
•register_shortcut() (sayfa 288)
name= None
Bunu benzersiz bir isim olarak ayarlayın anahtar olarak kullanılacaktır
allowed_in_toolbar= True
True ise kullanıcı bu aracı eklenti araç çubuğuna koymayı seçebilir
allowed_in_menu= True
True ise kullanıcı bu aracı eklenti menüsüne koymayı seçebilir
toolbar_button_popup_mode= u’delayed’
Menü (eğer varsa) için açılır pencere kipi. Muhtemel değerler ‘delayed’, ‘instant’, ‘button’
boss
calibre.gui2.tweak_book.boss.Boss (sayfa 289) nesnesi. Kullanıcı arayüzünü kontrol etmek
için kullanılır.
gui
Kullanıcı arayüzünün ana penceresi
current_container
Düzenlenen kitabı temsil eden calibre.ebooks.oeb.polish.container.Container
(sayfa 281) nesnesini döndür.
register_shortcut(qaction, unique_name, default_keys=(), short_text=None, description=None,
**extra_data)
Belirtilen ‘‘qaction‘‘u tetikleyecek bir klavye kısayolu kaydet. Bu klavye kısayolu kullanıcı tarafından
düzenleyici tercihleri bölümünde otomatik olarak özelleştirilebilir olacaktır.
Parametreler
• qaction – Bir QAction nesnesi, kullanıcı tarafından ayarlanmış tuş kombinasyonuna
basıldığında tetiklenecektir.
• unique_name – Bu kısayol/eylem için benzersiz bir isim. Dahili olarak kullanılacaktır,
bu eklentideki diğer eylemlerde kullanılmamalıdır.
• default_keys – Öntanımlı klavye kısayollarının listesi. Belirtilmezse öntanımlı
kısayol ayarlanmaz. Burada belirtilen kısayollar dahili kısayollarla ya da kullanıcı
yapılandırmasıyla/diğer eklentilerle kesişirse, göz ardı edilirler. Bu durumda, kullanıcılar kısayolları elle Tercihler yardımıyla yapılandırmak zorundadırlar. Örneğin:
default_keys=(’Ctrl+J’, ’F9’).
• short_text – Bu eylemin isteğe bağlı kısa bir tanımı. Belirtilmezse QAction’daki metin kullanılır.
• description – Bu eylem için isteğe bağlı uzun tanım, bu kısayol için tercihler girdisinde kullanılacaktır.
288
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
create_action(for_toolbar=True)
‘‘for_toolbar‘‘a bağlı olarak, ya eklenti araç çubuğuna, ya da eklentiler menüsüne eklenecek olan bir QAction oluştur. Örneğin:
=
{}=
{}@default
=0=1=2=0=1=2
\PYG{k}{def} \PYG{n+nf}{create\PYGZus{}action}\PYG{p}{(}\PYG{n+nb+bp}{se
\PYG{n}{ac} \PYG{o}{=} \PYG{n}{QAction}\PYG{p}{(}\PYG{n}{get\PYGZus{}icons}\PYG
\PYG{k}{if} \PYG{n}{for\PYGZus{}toolbar}\PYG{p}{:}
\PYG{c}{\PYGZsh{} We want the toolbar button to have a popup menu}
\PYG{n}{menu} \PYG{o}{=} \PYG{n}{QMenu}\PYG{p}{(}\PYG{p}{)}
\PYG{n}{ac}\PYG{o}{.}\PYG{n}{setMenu}\PYG{p}{(}\PYG{n}{menu}\PYG{p}{)}
\PYG{n}{menu}\PYG{o}{.}\PYG{n}{addAction}\PYG{p}{(}\PYG{l+s}{\PYGZsq{}}\PYG
\PYG{n}{subaction} \PYG{o}{=} \PYG{n}{menu}\PYG{o}{.}\PYG{n}{addAction}\PYG
\PYG{c}{\PYGZsh{} Register a keyboard shortcut for this toolbar action be}
\PYG{c}{\PYGZsh{} careful to do this for only one of the toolbar action or}
\PYG{c}{\PYGZsh{} the menu action, not both.}
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{register\PYGZus{}shortcut}\PYG{p}{(}\P
\PYG{k}{return} \PYG{n}{ac}
Ayrıca bkz.:
Metod register_shortcut() (sayfa 288).
Düzenleyicinin kullanıcı arayüzünün kontrolü
E-kitap düzenleyicinin kullanıcı arayüzü tek bir genel Patron nesne ile kontrol edilir. Bunun eklenti kodunda yaygın
görevleri gerçekleştirmek için bir çok kullanışlı metodu vardır.
class calibre.gui2.tweak_book.boss.Boss(parent, notify=None)
add_savepoint(msg)
msg ile belirtilen isimle bir geri dönüş kontrol noktası oluştur
apply_container_update_to_gui(mark_as_modified=True)
Mevcut kitap kapsayıcısındaki son veriyi yansıtması için kullanıcı arayüzünün tüm bileşenlerini güncelle.
Parametreler mark_as_modified – True ise, kitap değiştirildi olarak işaretlenir, böylece
kullanıcıya çıkışta kaydetmek isteyip istemediği sorulur.
close_editor(name)
name ile belirtilen dosyayı düzenleyen düzenleyiciyi kapat
commit_all_editors_to_container()
Kullanıcının düzenleyicilerde açık dosyalarda yaptığı değişiklikleri kapsayıcılara kaydet. Bu metodu mevcut kapsayıcıda herhangi bir eylem gerçekleştirmeden çağırmalısınız
currently_editing
Şu an düzenlenen dosya ismini veya herhangi bir dosya düzenlenmiyorsa None döndür
edit_file(name, syntax=None, use_template=None)
name ile belirtilen dosyayı bir düzenleyicide aç
Parametreler
• syntax – Dosyanın ortam türü, örneğin, ’text/html’. Belirtilmemişse dosya uzantısından tahmin edilir.
1.12. Calibre geliştirme ortamı ayarlamak
289
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
• use_template – Açılan düzenleyiciyi ilklendirmek için bir şablon
open_book(path=None, edit_file=None, clear_notify_data=True, open_folder=False)
path konumundaki e-kitabı düzenleme için aç. E-kitap desteklenmeyen bir biçimdeyse veya mevcut kitapta kaydedilmemiş değişiklikler varsa bir hata gösterilir.
Parametreler edit_file – Düzenlemeye başlamak için yeni açılmış kitap içindeki bir dosyanın ismi. İsim listesi de olabilir.
rewind_savepoint()
Geriye alma kontrol noktasının önceki oluşumundan vazgeç, bir kontrol noktası yarattınız, ama işlemi
değişiklik yapmadan iptal ettiyseniz kullanışlıdır
save_book()
Kitabı kaydet. Kaydetme arkaplanda yapılır
set_modified()
Kitabı değiştirildi olarak işaretle
show_current_diff(allow_revert=True, to_container=None)
Kitabın son kontrol noktasındaki durumuyla farkını göster
Parametreler
• allow_revert – True ise fark iletişim penceresi kullanıcının tüm değişiklikleri geri
almasını sağlayan bir düğme içerir
• to_container – Mevcut kapsayıcıyı karşılaştıracak bir kapsayıcı nesnesi. None ise,
daha önce kontrol noktasına alınan kapsayıcı kullanılır
show_editor(name)
name ile belirtilen dosyayı düzenleyen düzenleyiciyi göster
sync_preview_to_editor()
Önizleme panelinin konumunu mevcut düzenleyicideki imleç konumuyla eşzamanla
1.13 Açıklayıcı sözlük
RSS RSS (Gerçekten Basit Dağıtım) makaleler ve blog girdileri gibi sıkça güncellenen içeriklerin yayınlanmasında
kullanılan bir web besleme biçimidir. Özellikle bilgisayarlar tarafından okunması için geliştirilen bir biçim olduğundan bir e-kitaba web içeriği getirmek için tercih edilen bir yöntemdir. İnternette kullanılan bir çok başka
biçim mevcuttur ve calibre çoğu ile anlaşabilir. Özellikle bloglar için yaygın olarak kullanılan ATOM biçimi de
desteklenmektedir.
tarif Bir tarif, dergi veya blog gibi çevrim içi bir kaynağın nasıl bir e-kitaba dönüştürüleceğini calibre’ye öğreten
yönergeler bütünüdür. Tarifler aslında Python106 kodlarıdır. Bu sayede karmaşık haber kaynaklarını e-kitaplara
dönüştürebilirler. En basit düzeyde, adresler gibi calibre’nin İnternetten bilgi alıp indirebileceği bir değişkenler
kümesidir.
HTML HTML (Hyper Metin İşaretleme Dili), elektronik yayıncılık için Standart Genişletilmiş İşaretleme Dili’nin
(SGML) WWW için kullanılan bir alt kümesidir.
CSS CSS (Geçişli Stil Sayfaları) bir HTML belgesinin nasıl işleneceğini (görsel tasarım) tanımlamak için kullanılan
bir dildir.
API API (Uygulama Programlama Arayüzü) bilgisayar programları tarafından yapılan servis isteklerine destek sağlayan bir kitaplık kaynak kod arayüzüdür.
LRF LRF SONY e-kitap okuyucuların okuduğu e-kitap biçimidir.
106
https://www.python.org
290
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
Adres URL (Birörnek Kaynak Konumlayıcı) örneğin: http://ornek.com
düzenli ifade Düzenli ifadeler özel karakterler, kelimeler veya karakter desenleri gibi metinleri tanımlamak için kullanılan kısa ve esnek bir yol sunarlar. Python ile kullanılan düzenli ifadelerin sözdizimi için regexp sözdizimi107
ifadesine bakın.
107
https://docs.python.org/2.7/library/re.html
1.13. Açıklayıcı sözlük
291
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
292
Bölüm 1. Bölümler
Python Modül Dizini
c
calibre.customize, 197
calibre.customize.conversion, 204
calibre.db.cache, 274
calibre.devices.interface, 206
calibre.ebooks.metadata.book.base, 157
calibre.ebooks.metadata.sources.base,
201
calibre.ebooks.oeb.polish.container, 281
calibre.ebooks.oeb.polish.cover, 286
calibre.ebooks.oeb.polish.css, 287
calibre.ebooks.oeb.polish.jacket, 285
calibre.ebooks.oeb.polish.pretty, 285
calibre.ebooks.oeb.polish.replace, 285
calibre.ebooks.oeb.polish.split, 286
calibre.ebooks.oeb.polish.toc, 287
calibre.gui2.tweak_book.boss, 289
calibre.gui2.tweak_book.plugin.Tool, 288
calibre.utils.formatter_functions, 148
calibre.web.feeds.news, 38
293
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
294
Python Modül Dizini
Dizin
Symbols
–categories, -r
calibredb-list_categories komut satırı seçeneği, 248
–add-plugin, -a
–category
calibre-customize komut satırı seçeneği, 234
ebook-meta komut satırı seçeneği, 259
–add-simple-plugin
–change-justification
calibre-debug komut satırı seçeneği, 234
ebook-convert komut satırı seçeneği, 252
–all
–chapter
calibredb-backup_metadata komut satırı seçeneği,
ebook-convert komut satırı seçeneği, 256
249
–chapter-mark
calibredb-export komut satırı seçeneği, 243
ebook-convert komut satırı seçeneği, 256
–append, -a
–command, -c
calibredb-set_custom komut satırı seçeneği, 247
calibre-debug komut satırı seçeneği, 234
–as-opf
calibredb-show_metadata komut satırı seçeneği, 242 –comments
ebook-convert komut satırı seçeneği, 257
–ascending
–comments, -c
calibredb-list komut satırı seçeneği, 239
ebook-meta komut satırı seçeneği, 259
–asciiize
–compress-images, -i
ebook-convert komut satırı seçeneği, 252
ebook-polish komut satırı seçeneği, 261
–attachment, -a
–continue
calibre-smtp komut satırı seçeneği, 238
ebook-viewer komut satırı seçeneği, 262
–author-sort
–cover
ebook-convert komut satırı seçeneği, 257
ebook-convert komut satırı seçeneği, 257
ebook-meta komut satırı seçeneği, 259
ebook-meta komut satırı seçeneği, 259
–authors
–cover,
-c
ebook-convert komut satırı seçeneği, 257
calibredb-add
komut satırı seçeneği, 240
–authors, -a
ebook-polish
komut
satırı seçeneği, 261
calibredb-add komut satırı seçeneği, 240
fetch-ebook-metadata
komut satırı seçeneği, 262
ebook-meta komut satırı seçeneği, 259
–csv,
-c
fetch-ebook-metadata komut satırı seçeneği, 262
calibredb-check_library komut satırı seçeneği, 247
–auto-reload
calibredb-list_categories komut satırı seçeneği, 248
calibre-server komut satırı seçeneği, 236
–customize-plugin
–base-dir, -d
calibre-customize komut satırı seçeneği, 234
web2disk komut satırı seçeneği, 265
–daemonize
–base-font-size
calibre-server komut satırı seçeneği, 236
ebook-convert komut satırı seçeneği, 252
–date,
-d
–book-producer
ebook-meta
komut satırı seçeneği, 259
ebook-convert komut satırı seçeneği, 257
–debug-device-driver,
-d
–book-producer, -k
calibre-debug
komut
satırı seçeneği, 235
ebook-meta komut satırı seçeneği, 259
–debug-javascript
–build-plugin, -b
ebook-viewer komut satırı seçeneği, 262
calibre-customize komut satırı seçeneği, 234
–debug-pipeline, -d
295
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
ebook-convert komut satırı seçeneği, 258
–default-programs
calibre-debug komut satırı seçeneği, 235
–delay
web2disk komut satırı seçeneği, 265
–detach
calibre komut satırı seçeneği, 233
ebook-edit komut satırı seçeneği, 258
ebook-viewer komut satırı seçeneği, 262
–details, -d
calibredb-custom_columns komut satırı seçeneği,
246
–develop
calibre-server komut satırı seçeneği, 236
–diff
calibre-debug komut satırı seçeneği, 235
–disable-dehyphenate
ebook-convert komut satırı seçeneği, 254
–disable-delete-blank-paragraphs
ebook-convert komut satırı seçeneği, 254
–disable-fix-indents
ebook-convert komut satırı seçeneği, 254
–disable-font-rescaling
ebook-convert komut satırı seçeneği, 253
–disable-format-scene-breaks
ebook-convert komut satırı seçeneği, 255
–disable-hyphenation
lrfviewer komut satırı seçeneği, 264
–disable-italicize-common-cases
ebook-convert komut satırı seçeneği, 255
–disable-markup-chapter-headings
ebook-convert komut satırı seçeneği, 255
–disable-plugin
calibre-customize komut satırı seçeneği, 234
–disable-remove-fake-margins
ebook-convert komut satırı seçeneği, 256
–disable-renumber-headings
ebook-convert komut satırı seçeneği, 255
–disable-unwrap-lines
ebook-convert komut satırı seçeneği, 255
–display
calibredb-add_custom_column komut satırı seçeneği, 245
–dont-asciiize
calibredb-export komut satırı seçeneği, 243
–dont-download-stylesheets
web2disk komut satırı seçeneği, 265
–dont-notify-gui
komut satırı seçeneği, 239
–dont-output-resources
lrf2lrs komut satırı seçeneği, 263
–dont-replace
calibredb-add_format komut satırı seçeneği, 242
–dont-save-cover
296
calibredb-export komut satırı seçeneği, 243
–dont-split-on-page-breaks
ebook-convert komut satırı seçeneği, 251
–dont-update-metadata
calibredb-export komut satırı seçeneği, 243
–dont-write-opf
calibredb-export komut satırı seçeneği, 243
–duplicate-links-in-toc
ebook-convert komut satırı seçeneği, 256
–duplicates, -d
calibredb-add komut satırı seçeneği, 240
–edit-book, -t
calibre-debug komut satırı seçeneği, 235
–embed-all-fonts
ebook-convert komut satırı seçeneği, 253
–embed-font-family
ebook-convert komut satırı seçeneği, 253
–embed-fonts, -e
ebook-polish komut satırı seçeneği, 261
–empty, -e
calibredb-add komut satırı seçeneği, 240
–enable-heuristics
ebook-convert komut satırı seçeneği, 255
–enable-plugin
calibre-customize komut satırı seçeneği, 234
–encoding
web2disk komut satırı seçeneği, 265
–encryption-method, -e
calibre-smtp komut satırı seçeneği, 238
–epub-flatten
ebook-convert komut satırı seçeneği, 252
–epub-inline-toc
ebook-convert komut satırı seçeneği, 252
–epub-toc-at-end
ebook-convert komut satırı seçeneği, 252
–exec-file, -e
calibre-debug komut satırı seçeneği, 235
–expand-css
ebook-convert komut satırı seçeneği, 253
–explode-book, -x
calibre-debug komut satırı seçeneği, 235
–extra-css
ebook-convert komut satırı seçeneği, 253
–extract-to
ebook-convert komut satırı seçeneği, 252
–field, -f
calibredb-set_metadata komut satırı seçeneği, 243
–fields
calibredb-catalog komut satırı seçeneği, 244
–fields, -f
calibredb-list komut satırı seçeneği, 239
–filter-css
ebook-convert komut satırı seçeneği, 253
–filter-regexp
Dizin
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
web2disk komut satırı seçeneği, 265
–flow-size
ebook-convert komut satırı seçeneği, 252
–font-size-mapping
ebook-convert komut satırı seçeneği, 253
–for-machine
calibredb-list komut satırı seçeneği, 239
–force, -f
calibredb-remove_custom_column komut satırı seçeneği, 246
–fork, -f
calibre-smtp komut satırı seçeneği, 237
–formats
calibredb-export komut satırı seçeneği, 244
–from-opf
ebook-meta komut satırı seçeneği, 259
–full-screen, -f
ebook-viewer komut satırı seçeneği, 262
–get-cover
ebook-meta komut satırı seçeneği, 259
–gui, -g
calibre-debug komut satırı seçeneği, 235
–gui-debug
calibre-debug komut satırı seçeneği, 235
–help, -h
calibre komut satırı seçeneği, 233
calibre-customize komut satırı seçeneği, 234
calibre-debug komut satırı seçeneği, 235
calibre-server komut satırı seçeneği, 236
calibre-smtp komut satırı seçeneği, 237
calibredb-add komut satırı seçeneği, 240
calibredb-add_custom_column komut satırı seçeneği, 246
calibredb-add_format komut satırı seçeneği, 242
calibredb-backup_metadata komut satırı seçeneği,
249
calibredb-catalog komut satırı seçeneği, 244
calibredb-check_library komut satırı seçeneği, 247
calibredb-clone komut satırı seçeneği, 249
calibredb-custom_columns komut satırı seçeneği,
246
calibredb-embed_metadata komut satırı seçeneği,
249
calibredb-export komut satırı seçeneği, 244
calibredb-list komut satırı seçeneği, 240
calibredb-list_categories komut satırı seçeneği, 248
calibredb-remove komut satırı seçeneği, 241
calibredb-remove_custom_column komut satırı seçeneği, 246
calibredb-remove_format komut satırı seçeneği, 242
calibredb-restore_database komut satırı seçeneği,
247
calibredb-saved_searches komut satırı seçeneği, 245
calibredb-search komut satırı seçeneği, 250
Dizin
calibredb-set_custom komut satırı seçeneği, 247
calibredb-set_metadata komut satırı seçeneği, 243
calibredb-show_metadata komut satırı seçeneği, 242
ebook-convert komut satırı seçeneği, 251
ebook-edit komut satırı seçeneği, 258
ebook-meta komut satırı seçeneği, 259
ebook-polish komut satırı seçeneği, 261
ebook-viewer komut satırı seçeneği, 262
fetch-ebook-metadata komut satırı seçeneği, 262
lrf2lrs komut satırı seçeneği, 263
lrfviewer komut satırı seçeneği, 264
lrs2lrf komut satırı seçeneği, 264
web2disk komut satırı seçeneği, 265
–html-unwrap-factor
ebook-convert komut satırı seçeneği, 255
–identifier
ebook-meta komut satırı seçeneği, 259
–identifier, -I
calibredb-add komut satırı seçeneği, 240
–ids, -i
calibredb-catalog komut satırı seçeneği, 244
–ignore-plugins
calibre komut satırı seçeneği, 233
–ignore_extensions, -e
calibredb-check_library komut satırı seçeneği, 247
–ignore_names, -n
calibredb-check_library komut satırı seçeneği, 248
–index, -i
ebook-meta komut satırı seçeneği, 260
–input-encoding
ebook-convert komut satırı seçeneği, 251
–input-profile
ebook-convert komut satırı seçeneği, 251
–insert-blank-line
ebook-convert komut satırı seçeneği, 253
–insert-blank-line-size
ebook-convert komut satırı seçeneği, 253
–insert-metadata
ebook-convert komut satırı seçeneği, 256
–inspect-mobi, -m
calibre-debug komut satırı seçeneği, 235
–is-multiple
calibredb-add_custom_column komut satırı seçeneği, 246
–isbn
ebook-convert komut satırı seçeneği, 257
ebook-meta komut satırı seçeneği, 260
–isbn, -i
calibredb-add komut satırı seçeneği, 240
fetch-ebook-metadata komut satırı seçeneği, 262
–item_count, -i
calibredb-list_categories komut satırı seçeneği, 248
–jacket, -j
ebook-polish komut satırı seçeneği, 261
297
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
–keep-ligatures
ebook-convert komut satırı seçeneği, 253
–language
ebook-convert komut satırı seçeneği, 257
–language, -l
ebook-meta komut satırı seçeneği, 260
–languages, -l
calibredb-add komut satırı seçeneği, 241
–level1-toc
ebook-convert komut satırı seçeneği, 256
–level2-toc
ebook-convert komut satırı seçeneği, 256
–level3-toc
ebook-convert komut satırı seçeneği, 257
–library-path
komut satırı seçeneği, 239
–limit
calibredb-list komut satırı seçeneği, 240
–limit, -l
calibredb-search komut satırı seçeneği, 250
–line-height
ebook-convert komut satırı seçeneği, 253
–line-width, -w
calibredb-list komut satırı seçeneği, 240
–linearize-tables
ebook-convert komut satırı seçeneği, 253
–list-fields, -l
calibredb-set_metadata komut satırı seçeneği, 243
–list-plugins, -l
calibre-customize komut satırı seçeneği, 234
–list-recipes
ebook-convert komut satırı seçeneği, 251
–localhost, -l
calibre-smtp komut satırı seçeneği, 237
–lrf-bookid
ebook-meta komut satırı seçeneği, 260
–lrs
lrs2lrf komut satırı seçeneği, 264
–margin-bottom
ebook-convert komut satırı seçeneği, 253
–margin-left
ebook-convert komut satırı seçeneği, 254
–margin-right
ebook-convert komut satırı seçeneği, 254
–margin-top
ebook-convert komut satırı seçeneği, 254
–match-regexp
web2disk komut satırı seçeneği, 265
–max-cover
calibre-server komut satırı seçeneği, 236
–max-files, -n
web2disk komut satırı seçeneği, 265
–max-opds-items
calibre-server komut satırı seçeneği, 236
298
–max-opds-ungrouped-items
calibre-server komut satırı seçeneği, 236
–max-recursions, -r
web2disk komut satırı seçeneği, 265
–max-toc-links
ebook-convert komut satırı seçeneği, 257
–minimum-line-height
ebook-convert komut satırı seçeneği, 254
–new-server
calibre-debug komut satırı seçeneği, 235
–no-chapters-in-toc
ebook-convert komut satırı seçeneği, 257
–no-default-epub-cover
ebook-convert komut satırı seçeneği, 252
–no-svg-cover
ebook-convert komut satırı seçeneği, 252
–no-update-check
calibre komut satırı seçeneği, 233
–one-book-per-directory, -1
calibredb-add komut satırı seçeneği, 241
–only-formats, -f
calibredb-embed_metadata komut satırı seçeneği,
249
–open-at
ebook-viewer komut satırı seçeneği, 262
–opf, -o
ebook-polish komut satırı seçeneği, 261
fetch-ebook-metadata komut satırı seçeneği, 262
–outbox, -o
calibre-smtp komut satırı seçeneği, 237
–output, -o
lrf2lrs komut satırı seçeneği, 263
lrs2lrf komut satırı seçeneği, 264
–output-profile
ebook-convert komut satırı seçeneği, 251
–page-breaks-before
ebook-convert komut satırı seçeneği, 256
–password
calibre-server komut satırı seçeneği, 236
–password, -p
calibre-smtp komut satırı seçeneği, 238
–paths
calibre-debug komut satırı seçeneği, 235
–pidfile
calibre-server komut satırı seçeneği, 236
–port
calibre-smtp komut satırı seçeneği, 238
–port, -p
calibre-server komut satırı seçeneği, 236
–prefer-metadata-cover
ebook-convert komut satırı seçeneği, 256
–prefix
calibredb-list komut satırı seçeneği, 240
–preserve-cover-aspect-ratio
Dizin
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
ebook-convert komut satırı seçeneği, 252
–pretty-print
ebook-convert komut satırı seçeneği, 252
–profile
lrfviewer komut satırı seçeneği, 264
–pubdate
ebook-convert komut satırı seçeneği, 257
–publisher
ebook-convert komut satırı seçeneği, 257
–publisher, -p
ebook-meta komut satırı seçeneği, 260
–py-console, -p
calibre-debug komut satırı seçeneği, 235
–quote, -q
calibredb-list_categories komut satırı seçeneği, 248
–raise-window
ebook-viewer komut satırı seçeneği, 262
–rating
ebook-convert komut satırı seçeneği, 257
–rating, -r
ebook-meta komut satırı seçeneği, 260
–read-metadata-from-opf, -m
ebook-convert komut satırı seçeneği, 257
–really-do-it, -r
calibredb-restore_database komut satırı seçeneği,
247
–recurse, -r
calibredb-add komut satırı seçeneği, 241
–reinitialize-db
calibre-debug komut satırı seçeneği, 235
–relay, -r
calibre-smtp komut satırı seçeneği, 238
–remove-first-image
ebook-convert komut satırı seçeneği, 256
–remove-jacket
ebook-polish komut satırı seçeneği, 261
–remove-paragraph-spacing
ebook-convert komut satırı seçeneği, 254
–remove-paragraph-spacing-indent-size
ebook-convert komut satırı seçeneği, 254
–remove-plugin, -r
calibre-customize komut satırı seçeneği, 234
–remove-unused-css, -u
ebook-polish komut satırı seçeneği, 261
–replace-scene-breaks
ebook-convert komut satırı seçeneği, 255
–replace-whitespace
calibredb-export komut satırı seçeneği, 244
–report, -r
calibredb-check_library komut satırı seçeneği, 248
–restriction
calibre-server komut satırı seçeneği, 236
–run-plugin, -r
calibre-debug komut satırı seçeneği, 235
Dizin
–search, -s
calibredb-catalog komut satırı seçeneği, 244
calibredb-list komut satırı seçeneği, 240
–search-replace
ebook-convert komut satırı seçeneği, 255
–separator
calibredb-list komut satırı seçeneği, 240
–separator, -s
calibredb-list_categories komut satırı seçeneği, 248
–series
ebook-convert komut satırı seçeneği, 258
–series, -s
calibredb-add komut satırı seçeneği, 241
ebook-meta komut satırı seçeneği, 260
–series-index
ebook-convert komut satırı seçeneği, 258
–series-index, -S
calibredb-add komut satırı seçeneği, 241
–shutdown-running-calibre, -s
calibre komut satırı seçeneği, 233
calibre-debug komut satırı seçeneği, 235
–single-dir
calibredb-export komut satırı seçeneği, 244
–smarten-punctuation
ebook-convert komut satırı seçeneği, 254
–smarten-punctuation, -p
ebook-polish komut satırı seçeneği, 261
–sort-by
calibredb-catalog komut satırı seçeneği, 245
calibredb-list komut satırı seçeneği, 240
–sr1-replace
ebook-convert komut satırı seçeneği, 255
–sr1-search
ebook-convert komut satırı seçeneği, 255
–sr2-replace
ebook-convert komut satırı seçeneği, 255
–sr2-search
ebook-convert komut satırı seçeneği, 255
–sr3-replace
ebook-convert komut satırı seçeneği, 255
–sr3-search
ebook-convert komut satırı seçeneği, 255
–start-in-tray
calibre komut satırı seçeneği, 233
–start-reading-at
ebook-convert komut satırı seçeneği, 256
–subject, -s
calibre-smtp komut satırı seçeneği, 238
–subset-embedded-fonts
ebook-convert komut satırı seçeneği, 254
–subset-font, -f
calibre-debug komut satırı seçeneği, 235
–subset-fonts, -f
ebook-polish komut satırı seçeneği, 261
299
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
–tags
ebook-convert komut satırı seçeneği, 258
ebook-meta komut satırı seçeneği, 260
–tags, -T
calibredb-add komut satırı seçeneği, 241
–template
calibredb-export komut satırı seçeneği, 244
–test-build
calibre-debug komut satırı seçeneği, 235
–thread-pool
calibre-server komut satırı seçeneği, 236
–timefmt
calibredb-export komut satırı seçeneği, 244
–timeout, -d
fetch-ebook-metadata komut satırı seçeneği, 263
–timeout, -t
calibre-server komut satırı seçeneği, 237
calibre-smtp komut satırı seçeneği, 237
web2disk komut satırı seçeneği, 265
–timestamp
ebook-convert komut satırı seçeneği, 258
–title
ebook-convert komut satırı seçeneği, 258
–title, -t
calibredb-add komut satırı seçeneği, 241
ebook-meta komut satırı seçeneği, 260
fetch-ebook-metadata komut satırı seçeneği, 263
–title-sort
ebook-convert komut satırı seçeneği, 258
ebook-meta komut satırı seçeneği, 260
–to-dir
calibredb-export komut satırı seçeneği, 244
–to-lowercase
calibredb-export komut satırı seçeneği, 244
–to-opf
ebook-meta komut satırı seçeneği, 260
–toc-filter
ebook-convert komut satırı seçeneği, 257
–toc-threshold
ebook-convert komut satırı seçeneği, 257
–toc-title
ebook-convert komut satırı seçeneği, 252
–unsmarten-punctuation
ebook-convert komut satırı seçeneği, 254
–url-prefix
calibre-server komut satırı seçeneği, 237
–use-auto-toc
ebook-convert komut satırı seçeneği, 257
–username
calibre-server komut satırı seçeneği, 237
–username, -u
calibre-smtp komut satırı seçeneği, 238
–verbose
ebook-polish komut satırı seçeneği, 261
300
lrf2lrs komut satırı seçeneği, 263
lrfviewer komut satırı seçeneği, 264
lrs2lrf komut satırı seçeneği, 264
web2disk komut satırı seçeneği, 265
–verbose, -v
calibre komut satırı seçeneği, 233
calibre-smtp komut satırı seçeneği, 237
calibredb-catalog komut satırı seçeneği, 245
ebook-convert komut satırı seçeneği, 258
fetch-ebook-metadata komut satırı seçeneği, 263
–version
calibre komut satırı seçeneği, 233
calibre-customize komut satırı seçeneği, 234
calibre-debug komut satırı seçeneği, 235
calibre-server komut satırı seçeneği, 237
calibre-smtp komut satırı seçeneği, 237
calibredb-add komut satırı seçeneği, 241
calibredb-add_custom_column komut satırı seçeneği, 246
calibredb-add_format komut satırı seçeneği, 242
calibredb-backup_metadata komut satırı seçeneği,
249
calibredb-catalog komut satırı seçeneği, 245
calibredb-check_library komut satırı seçeneği, 248
calibredb-clone komut satırı seçeneği, 249
calibredb-custom_columns komut satırı seçeneği,
246
calibredb-embed_metadata komut satırı seçeneği,
249
calibredb-export komut satırı seçeneği, 244
calibredb-list komut satırı seçeneği, 240
calibredb-list_categories komut satırı seçeneği, 248
calibredb-remove komut satırı seçeneği, 241
calibredb-remove_custom_column komut satırı seçeneği, 246
calibredb-remove_format komut satırı seçeneği, 242
calibredb-restore_database komut satırı seçeneği,
247
calibredb-saved_searches komut satırı seçeneği, 245
calibredb-search komut satırı seçeneği, 250
calibredb-set_custom komut satırı seçeneği, 247
calibredb-set_metadata komut satırı seçeneği, 243
calibredb-show_metadata komut satırı seçeneği, 242
ebook-convert komut satırı seçeneği, 251
ebook-edit komut satırı seçeneği, 258
ebook-meta komut satırı seçeneği, 260
ebook-polish komut satırı seçeneği, 261
ebook-viewer komut satırı seçeneği, 262
fetch-ebook-metadata komut satırı seçeneği, 263
lrf2lrs komut satırı seçeneği, 263
lrfviewer komut satırı seçeneği, 264
lrs2lrf komut satırı seçeneği, 264
web2disk komut satırı seçeneği, 265
–viewer, -w
Dizin
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
calibre-debug komut satırı seçeneği, 235
–visual-debug
lrfviewer komut satırı seçeneği, 264
–white-background
lrfviewer komut satırı seçeneği, 264
–width, -w
calibredb-list_categories komut satırı seçeneği, 248
–with-library
calibre komut satırı seçeneği, 233
calibre-server komut satırı seçeneği, 237
A
add_or_replace_jacket()
(calibre.ebooks.oeb.polish.jacket modülü içinde),
285
add_savepoint() (calibre.gui2.tweak_book.boss.Boss metodu), 289
add_toc_thumbnail()
(calibre.web.feeds.news.BasicNewsRecipe
metodu), 38
adeify_images() (calibre.web.feeds.news.BasicNewsRecipe
sınıf metodu), 39
Adres, 291
all_book_ids() (calibre.db.cache.Cache metodu), 275
all_field_for() (calibre.db.cache.Cache metodu), 275
all_field_ids() (calibre.db.cache.Cache metodu), 275
all_field_keys() (calibre.ebooks.metadata.book.base.Metadata
metodu), 158
all_field_names() (calibre.db.cache.Cache metodu), 275
all_non_none_fields()
(calibre.ebooks.metadata.book.base.Metadata
metodu), 158
allowed_in_menu (calibre.gui2.tweak_book.plugin.Tool
niteliği), 288
allowed_in_toolbar
(calibre.gui2.tweak_book.plugin.Tool
niteliği),
288
API, 290
apply_container_update_to_gui()
(calibre.gui2.tweak_book.boss.Boss
metodu),
289
articles_are_obfuscated
(calibre.web.feeds.news.BasicNewsRecipe
niteliği), 43
ASK_TO_ALLOW_CONNECT
(calibre.devices.interface.DevicePlugin niteliği),
208
author (calibre.customize.Plugin niteliği), 198
author_data() (calibre.db.cache.Cache metodu), 275
author_sort_from_authors() (calibre.db.cache.Cache metodu), 275
auto_cleanup (calibre.web.feeds.news.BasicNewsRecipe
niteliği), 43
auto_cleanup_keep
(calibre.web.feeds.news.BasicNewsRecipe
niteliği), 43
auto_repeat (calibre.gui2.actions.InterfaceAction niteliği), 216
auto_trim_covers (calibre.ebooks.metadata.sources.base.Source
niteliği), 202
abort_article() (calibre.web.feeds.news.BasicNewsRecipe
metodu), 38
abort_recipe_processing()
(calibre.web.feeds.news.BasicNewsRecipe
metodu), 38
abspath_to_name()
(calibre.ebooks.oeb.polish.container.Container
metodu), 281
accept_drag_move_event()
(calibre.gui2.actions.InterfaceAction
metodu),
217
accept_enter_event()
(calibre.gui2.actions.InterfaceAction
metodu),
217
accepts_drops (calibre.gui2.actions.InterfaceAction niteliği), 217
action_add_menu (calibre.gui2.actions.InterfaceAction
niteliği), 216
action_menu_clone_qaction
(calibre.gui2.actions.InterfaceAction
niteliği),
216
action_spec (calibre.gui2.actions.InterfaceAction niteliği), 216
action_type (calibre.gui2.actions.InterfaceAction niteliği), 217
add_annotation_to_library()
(calibre.devices.usbms.device.Device
metodu),
215
add_book() (calibre.devices.interface.BookList metodu),
213
add_books() (calibre.db.cache.Cache metodu), 275
add_books_to_metadata()
(calibre.devices.interface.DevicePlugin
sınıf
metodu), 210
add_custom_book_data() (calibre.db.cache.Cache metodu), 275
add_file() (calibre.ebooks.oeb.polish.container.Container
B
metodu), 281
add_format() (calibre.db.cache.Cache metodu), 275
BasicNewsRecipe (calibre.web.feeds.news içinde bir sıadd_name_to_manifest()
(canıf), 38
libre.ebooks.oeb.polish.container.Container
BCD (calibre.devices.interface.DevicePlugin niteliği),
metodu), 281
207
Dizin
301
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
book_type (calibre.ebooks.oeb.polish.container.Container
niteliği), 281
BookList (calibre.devices.interface içinde bir sınıf), 213
books() (calibre.devices.interface.DevicePlugin metodu),
210
books_for_field() (calibre.db.cache.Cache metodu), 276
Boss (calibre.gui2.tweak_book.boss içinde bir sınıf), 289
boss (calibre.gui2.tweak_book.plugin.Tool niteliği), 288
BuiltinAdd (calibre.utils.formatter_functions içinde bir
sınıf), 148
BuiltinAnd (calibre.utils.formatter_functions içinde bir
sınıf), 148
BuiltinApproximateFormats
(calibre.utils.formatter_functions
içinde
bir
sınıf), 149
BuiltinAssign (calibre.utils.formatter_functions içinde bir
sınıf), 154
BuiltinAuthorLinks
(calibre.utils.formatter_functions
içinde bir sınıf), 149
BuiltinAuthorSorts
(calibre.utils.formatter_functions
içinde bir sınıf), 150
BuiltinBooksize (calibre.utils.formatter_functions içinde
bir sınıf), 150
BuiltinCapitalize (calibre.utils.formatter_functions içinde
bir sınıf), 155
BuiltinCmp (calibre.utils.formatter_functions içinde bir
sınıf), 155
BuiltinContains (calibre.utils.formatter_functions içinde
bir sınıf), 152
BuiltinCount (calibre.utils.formatter_functions içinde bir
sınıf), 153
BuiltinCurrentLibraryName
(calibre.utils.formatter_functions
içinde
bir
sınıf), 150
BuiltinCurrentLibraryPath
(calibre.utils.formatter_functions
içinde
bir
sınıf), 150
BuiltinDaysBetween (calibre.utils.formatter_functions
içinde bir sınıf), 148
BuiltinDivide (calibre.utils.formatter_functions içinde bir
sınıf), 148
BuiltinEval (calibre.utils.formatter_functions içinde bir
sınıf), 155
BuiltinField (calibre.utils.formatter_functions içinde bir
sınıf), 150
BuiltinFinishFormatting
(calibre.utils.formatter_functions
içinde
bir
sınıf), 149
BuiltinFirstMatchingCmp
(calibre.utils.formatter_functions
içinde
bir
sınıf), 155
BuiltinFirstNonEmpty (calibre.utils.formatter_functions
içinde bir sınıf), 152
BuiltinFormatDate
(calibre.utils.formatter_functions
302
içinde bir sınıf), 149
BuiltinFormatNumber (calibre.utils.formatter_functions
içinde bir sınıf), 149
BuiltinFormatsModtimes
(calibre.utils.formatter_functions
içinde
bir
sınıf), 150
BuiltinFormatsPaths
(calibre.utils.formatter_functions
içinde bir sınıf), 150
BuiltinFormatsSizes
(calibre.utils.formatter_functions
içinde bir sınıf), 150
BuiltinHasCover (calibre.utils.formatter_functions içinde
bir sınıf), 151
BuiltinHumanReadable (calibre.utils.formatter_functions
içinde bir sınıf), 149
BuiltinIdentifierInList (calibre.utils.formatter_functions
içinde bir sınıf), 152
BuiltinIfempty (calibre.utils.formatter_functions içinde
bir sınıf), 152
BuiltinInList (calibre.utils.formatter_functions içinde bir
sınıf), 153
BuiltinLanguageCodes (calibre.utils.formatter_functions
içinde bir sınıf), 151
BuiltinLanguageStrings (calibre.utils.formatter_functions
içinde bir sınıf), 151
BuiltinListDifference (calibre.utils.formatter_functions
içinde bir sınıf), 153
BuiltinListEquals
(calibre.utils.formatter_functions
içinde bir sınıf), 153
BuiltinListIntersection (calibre.utils.formatter_functions
içinde bir sınıf), 153
BuiltinListitem (calibre.utils.formatter_functions içinde
bir sınıf), 153
BuiltinListRe (calibre.utils.formatter_functions içinde bir
sınıf), 154
BuiltinListReGroup
(calibre.utils.formatter_functions
içinde bir sınıf), 154
BuiltinListSort (calibre.utils.formatter_functions içinde
bir sınıf), 154
BuiltinListUnion (calibre.utils.formatter_functions içinde
bir sınıf), 154
BuiltinLookup (calibre.utils.formatter_functions içinde
bir sınıf), 152
BuiltinLowercase
(calibre.utils.formatter_functions
içinde bir sınıf), 156
BuiltinMultiply (calibre.utils.formatter_functions içinde
bir sınıf), 148
BuiltinNot (calibre.utils.formatter_functions içinde bir sınıf), 148
BuiltinOndevice (calibre.utils.formatter_functions içinde
bir sınıf), 151
BuiltinOr (calibre.utils.formatter_functions içinde bir sınıf), 148
BuiltinPrint (calibre.utils.formatter_functions içinde bir
sınıf), 155
Dizin
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
BuiltinRawField (calibre.utils.formatter_functions içinde
bir sınıf), 151
BuiltinRawList (calibre.utils.formatter_functions içinde
bir sınıf), 151
BuiltinRe (calibre.utils.formatter_functions içinde bir sınıf), 156
BuiltinReGroup (calibre.utils.formatter_functions içinde
bir sınıf), 156
BuiltinSelect (calibre.utils.formatter_functions içinde bir
sınıf), 153
BuiltinSeriesSort (calibre.utils.formatter_functions içinde
bir sınıf), 151
BuiltinShorten (calibre.utils.formatter_functions içinde
bir sınıf), 156
BuiltinStrcat (calibre.utils.formatter_functions içinde bir
sınıf), 156
BuiltinStrcatMax
(calibre.utils.formatter_functions
içinde bir sınıf), 156
BuiltinStrcmp (calibre.utils.formatter_functions içinde
bir sınıf), 155
BuiltinStrInList (calibre.utils.formatter_functions içinde
bir sınıf), 153
BuiltinStrlen (calibre.utils.formatter_functions içinde bir
sınıf), 157
BuiltinSubitems (calibre.utils.formatter_functions içinde
bir sınıf), 154
BuiltinSublist (calibre.utils.formatter_functions içinde bir
sınıf), 154
BuiltinSubstr (calibre.utils.formatter_functions içinde bir
sınıf), 157
BuiltinSubtract (calibre.utils.formatter_functions içinde
bir sınıf), 148
BuiltinSwapAroundComma
(calibre.utils.formatter_functions
içinde
bir
sınıf), 157
BuiltinSwitch (calibre.utils.formatter_functions içinde bir
sınıf), 152
BuiltinTemplate (calibre.utils.formatter_functions içinde
bir sınıf), 155
BuiltinTest (calibre.utils.formatter_functions içinde bir sınıf), 152
BuiltinTitlecase (calibre.utils.formatter_functions içinde
bir sınıf), 156
BuiltinToday (calibre.utils.formatter_functions içinde bir
sınıf), 148
BuiltinTransliterate
(calibre.utils.formatter_functions
içinde bir sınıf), 157
BuiltinUppercase
(calibre.utils.formatter_functions
içinde bir sınıf), 156
BuiltinUserCategories (calibre.utils.formatter_functions
içinde bir sınıf), 151
BuiltinVirtualLibraries (calibre.utils.formatter_functions
içinde bir sınıf), 151
Dizin
C
Cache (calibre.db.cache içinde bir sınıf), 275
cached_cover_url_is_reliable
(calibre.ebooks.metadata.sources.base.Source
niteliği), 202
calibre komut satırı seçeneği
–detach, 233
–help, -h, 233
–ignore-plugins, 233
–no-update-check, 233
–shutdown-running-calibre, -s, 233
–start-in-tray, 233
–verbose, -v, 233
–version, 233
–with-library, 233
calibre-customize komut satırı seçeneği
–add-plugin, -a, 234
–build-plugin, -b, 234
–customize-plugin, 234
–disable-plugin, 234
–enable-plugin, 234
–help, -h, 234
–list-plugins, -l, 234
–remove-plugin, -r, 234
–version, 234
calibre-debug komut satırı seçeneği
–add-simple-plugin, 234
–command, -c, 234
–debug-device-driver, -d, 235
–default-programs, 235
–diff, 235
–edit-book, -t, 235
–exec-file, -e, 235
–explode-book, -x, 235
–gui, -g, 235
–gui-debug, 235
–help, -h, 235
–inspect-mobi, -m, 235
–new-server, 235
–paths, 235
–py-console, -p, 235
–reinitialize-db, 235
–run-plugin, -r, 235
–shutdown-running-calibre, -s, 235
–subset-font, -f, 235
–test-build, 235
–version, 235
–viewer, -w, 235
calibre-server komut satırı seçeneği
–auto-reload, 236
–daemonize, 236
–develop, 236
–help, -h, 236
–max-cover, 236
303
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
–max-opds-items, 236
–max-opds-ungrouped-items, 236
–password, 236
–pidfile, 236
–port, -p, 236
–restriction, 236
–thread-pool, 236
–timeout, -t, 237
–url-prefix, 237
–username, 237
–version, 237
–with-library, 237
calibre-smtp komut satırı seçeneği
–attachment, -a, 238
–encryption-method, -e, 238
–fork, -f, 237
–help, -h, 237
–localhost, -l, 237
–outbox, -o, 237
–password, -p, 238
–port, 238
–relay, -r, 238
–subject, -s, 238
–timeout, -t, 237
–username, -u, 238
–verbose, -v, 237
–version, 237
calibre.customize (modül), 197
calibre.customize.conversion (modül), 204
calibre.db.cache (modül), 274
calibre.devices.interface (modül), 206
calibre.ebooks.metadata.book.base (modül), 157
calibre.ebooks.metadata.sources.base (modül), 201
calibre.ebooks.oeb.polish.container (modül), 281
calibre.ebooks.oeb.polish.cover (modül), 286
calibre.ebooks.oeb.polish.css (modül), 287
calibre.ebooks.oeb.polish.jacket (modül), 285
calibre.ebooks.oeb.polish.pretty (modül), 285
calibre.ebooks.oeb.polish.replace (modül), 285
calibre.ebooks.oeb.polish.split (modül), 286
calibre.ebooks.oeb.polish.toc (modül), 287
calibre.gui2.tweak_book.boss (modül), 289
calibre.gui2.tweak_book.plugin.Tool (modül), 288
calibre.utils.formatter_functions (modül), 148
calibre.web.feeds.news (modül), 38
calibredb-add komut satırı seçeneği
–authors, -a, 240
–cover, -c, 240
–duplicates, -d, 240
–empty, -e, 240
–help, -h, 240
–identifier, -I, 240
–isbn, -i, 240
–languages, -l, 241
304
–one-book-per-directory, -1, 241
–recurse, -r, 241
–series, -s, 241
–series-index, -S, 241
–tags, -T, 241
–title, -t, 241
–version, 241
calibredb-add_custom_column komut satırı seçeneği
–display, 245
–help, -h, 246
–is-multiple, 246
–version, 246
calibredb-add_format komut satırı seçeneği
–dont-replace, 242
–help, -h, 242
–version, 242
calibredb-backup_metadata komut satırı seçeneği
–all, 249
–help, -h, 249
–version, 249
calibredb-catalog komut satırı seçeneği
–fields, 244
–help, -h, 244
–ids, -i, 244
–search, -s, 244
–sort-by, 245
–verbose, -v, 245
–version, 245
calibredb-check_library komut satırı seçeneği
–csv, -c, 247
–help, -h, 247
–ignore_extensions, -e, 247
–ignore_names, -n, 248
–report, -r, 248
–version, 248
calibredb-clone komut satırı seçeneği
–help, -h, 249
–version, 249
calibredb-custom_columns komut satırı seçeneği
–details, -d, 246
–help, -h, 246
–version, 246
calibredb-embed_metadata komut satırı seçeneği
–help, -h, 249
–only-formats, -f, 249
–version, 249
calibredb-export komut satırı seçeneği
–all, 243
–dont-asciiize, 243
–dont-save-cover, 243
–dont-update-metadata, 243
–dont-write-opf, 243
–formats, 244
–help, -h, 244
Dizin
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
–replace-whitespace, 244
–single-dir, 244
–template, 244
–timefmt, 244
–to-dir, 244
–to-lowercase, 244
–version, 244
calibredb-list komut satırı seçeneği
–ascending, 239
–fields, -f, 239
–for-machine, 239
–help, -h, 240
–limit, 240
–line-width, -w, 240
–prefix, 240
–search, -s, 240
–separator, 240
–sort-by, 240
–version, 240
calibredb-list_categories komut satırı seçeneği
–categories, -r, 248
–csv, -c, 248
–help, -h, 248
–item_count, -i, 248
–quote, -q, 248
–separator, -s, 248
–version, 248
–width, -w, 248
calibredb-remove komut satırı seçeneği
–help, -h, 241
–version, 241
calibredb-remove_custom_column komut satırı seçeneği
–force, -f, 246
–help, -h, 246
–version, 246
calibredb-remove_format komut satırı seçeneği
–help, -h, 242
–version, 242
calibredb-restore_database komut satırı seçeneği
–help, -h, 247
–really-do-it, -r, 247
–version, 247
calibredb-saved_searches komut satırı seçeneği
–help, -h, 245
–version, 245
calibredb-search komut satırı seçeneği
–help, -h, 250
–limit, -l, 250
–version, 250
calibredb-set_custom komut satırı seçeneği
–append, -a, 247
–help, -h, 247
–version, 247
calibredb-set_metadata komut satırı seçeneği
Dizin
–field, -f, 243
–help, -h, 243
–list-fields, -l, 243
–version, 243
calibredb-show_metadata komut satırı seçeneği
–as-opf, 242
–help, -h, 242
–version, 242
can_be_disabled (calibre.customize.Plugin niteliği), 198
CAN_DO_DEVICE_DB_PLUGBOARD
(calibre.devices.interface.DevicePlugin niteliği),
207
can_get_multiple_covers
(calibre.ebooks.metadata.sources.base.Source
niteliği), 202
can_handle() (calibre.devices.interface.DevicePlugin metodu), 209
can_handle_windows()
(calibre.devices.interface.DevicePlugin metodu),
209
CAN_SET_METADATA
(calibre.devices.interface.DevicePlugin niteliği),
207
canonicalize_internal_url()
(calibre.web.feeds.news.BasicNewsRecipe
metodu), 39
capabilities (calibre.ebooks.metadata.sources.base.Source
niteliği), 201
card_prefix() (calibre.devices.interface.DevicePlugin metodu), 209
CatalogPlugin (calibre.customize içinde bir sınıf), 201
category (calibre.customize.PreferencesPlugin niteliği),
219
category_order (calibre.customize.PreferencesPlugin niteliği), 219
center_navbar (calibre.web.feeds.news.BasicNewsRecipe
niteliği), 43
change_font() (calibre.ebooks.oeb.polish.fonts modülü
içinde), 287
changed_signal (calibre.gui2.preferences.ConfigWidgetInterface
niteliği), 219
clean_downloaded_metadata()
(calibre.ebooks.metadata.sources.base.Source
metodu), 202
cleanup() (calibre.web.feeds.news.BasicNewsRecipe metodu), 39
CLI (calibre.devices.usbms.cli içinde bir sınıf), 215
cli_main() (calibre.customize.Plugin metodu), 199
cli_options (calibre.customize.CatalogPlugin niteliği),
201
clone_browser() (calibre.web.feeds.news.BasicNewsRecipe
metodu), 39
close_editor() (calibre.gui2.tweak_book.boss.Boss metodu), 289
305
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
commit() (calibre.ebooks.oeb.polish.container.Container
içinde), 287
metodu), 281
create_menu_action()
(cacommit() (calibre.gui2.preferences.ConfigWidgetInterface
libre.gui2.actions.InterfaceAction
metodu),
metodu), 219
217
commit_all_editors_to_container()
(ca- create_widget()
(calibre.customize.PreferencesPlugin
libre.gui2.tweak_book.boss.Boss
metodu),
metodu), 219
289
CSS, 290
commit_item() (calibre.ebooks.oeb.polish.container.Container
current_container (calibre.gui2.tweak_book.plugin.Tool
metodu), 282
niteliği), 288
common_options (calibre.customize.conversion.InputFormatPlugin
currently_editing (calibre.gui2.tweak_book.boss.Boss niniteliği), 205
teliği), 289
common_options (calibre.customize.conversion.OutputFormatPlugin
custom_field_keys()
(caniteliği), 206
libre.ebooks.metadata.book.base.Metadata
compress_news_images
(cametodu), 158
libre.web.feeds.news.BasicNewsRecipe
ni- customization_help() (calibre.customize.Plugin metodu),
teliği), 43
199
compress_news_images_auto_size
(ca- customize_context_menu()
(calibre.web.feeds.news.BasicNewsRecipe
nilibre.customize.ViewerPlugin metodu), 221
teliği), 43
customize_ui() (calibre.customize.ViewerPlugin mecompress_news_images_max_size
(catodu), 221
libre.web.feeds.news.BasicNewsRecipe
niD
teliği), 43
config_help_message
(ca- düzenli ifade, 291
libre.ebooks.metadata.sources.base.Source
data_for_find_identical_books() (calibre.db.cache.Cache
niteliği), 202
metodu), 276
config_widget (calibre.customize.PreferencesPlugin nite- data_for_has_book() (calibre.db.cache.Cache metodu),
liği), 219
276
config_widget() (calibre.customize.Plugin metodu), 198
debug_managed_device_detection()
(caconfig_widget() (calibre.devices.interface.DevicePlugin
libre.devices.interface.DevicePlugin metodu),
sınıf metodu), 211
208
ConfigWidgetBase (calibre.gui2.preferences içinde bir sı- decode() (calibre.ebooks.oeb.polish.container.Container
nıf), 220
metodu), 282
ConfigWidgetInterface (calibre.gui2.preferences içinde deepcopy() (calibre.ebooks.metadata.book.base.Metadata
bir sınıf), 219
metodu), 157
Container (calibre.ebooks.oeb.polish.container içinde bir default_cover() (calibre.web.feeds.news.BasicNewsRecipe
sınıf), 281
metodu), 39
contains(), 134
delay (calibre.web.feeds.news.BasicNewsRecipe niteconversion_options
(caliği), 44
libre.web.feeds.news.BasicNewsRecipe
ni- delete_books() (calibre.devices.interface.DevicePlugin
teliği), 44
metodu), 211
convert() (calibre.customize.conversion.InputFormatPlugin delete_custom_book_data() (calibre.db.cache.Cache memetodu), 205
todu), 276
convert() (calibre.customize.conversion.OutputFormatPlugindescription (calibre.customize.Plugin niteliği), 197
metodu), 206
description (calibre.customize.PreferencesPlugin nitecopy_cover_to() (calibre.db.cache.Cache metodu), 276
liği), 219
copy_format_to() (calibre.db.cache.Cache metodu), 276
description (calibre.web.feeds.news.BasicNewsRecipe
core_usage (calibre.customize.conversion.InputFormatPlugin
niteliği), 44
niteliği), 204
detect_managed_devices()
(cacover() (calibre.db.cache.Cache metodu), 276
libre.devices.interface.DevicePlugin metodu),
cover_margins (calibre.web.feeds.news.BasicNewsRecipe
208
niteliği), 44
Device (calibre.devices.usbms.device içinde bir sınıf),
create_action()
(calibre.gui2.tweak_book.plugin.Tool
214
metodu), 288
DevicePlugin (calibre.devices.interface içinde bir sınıf),
create_inline_toc() (calibre.ebooks.oeb.polish.toc modülü
206
306
Dizin
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
dirty()
(calibre.ebooks.oeb.polish.container.Container
–input-profile, 251
metodu), 282
–insert-blank-line, 253
do_user_config() (calibre.customize.Plugin metodu), 198
–insert-blank-line-size, 253
dont_add_to (calibre.gui2.actions.InterfaceAction nite–insert-metadata, 256
liği), 217
–isbn, 257
dont_remove_from (calibre.gui2.actions.InterfaceAction
–keep-ligatures, 253
niteliği), 217
–language, 257
download() (calibre.web.feeds.news.BasicNewsRecipe
–level1-toc, 256
metodu), 39
–level2-toc, 256
download_cover() (calibre.ebooks.metadata.sources.base.Source –level3-toc, 257
metodu), 203
–line-height, 253
drop_event() (calibre.gui2.actions.InterfaceAction me–linearize-tables, 253
todu), 217
–list-recipes, 251
–margin-bottom, 253
E
–margin-left, 254
–margin-right, 254
ebook-convert komut satırı seçeneği
–margin-top, 254
–asciiize, 252
–max-toc-links, 257
–author-sort, 257
–minimum-line-height, 254
–authors, 257
–no-chapters-in-toc, 257
–base-font-size, 252
–no-default-epub-cover, 252
–book-producer, 257
–no-svg-cover, 252
–change-justification, 252
–output-profile, 251
–chapter, 256
–page-breaks-before, 256
–chapter-mark, 256
–prefer-metadata-cover, 256
–comments, 257
–preserve-cover-aspect-ratio, 252
–cover, 257
–pretty-print, 252
–debug-pipeline, -d, 258
–pubdate, 257
–disable-dehyphenate, 254
–publisher, 257
–disable-delete-blank-paragraphs, 254
–rating, 257
–disable-fix-indents, 254
–read-metadata-from-opf, -m, 257
–disable-font-rescaling, 253
–remove-first-image, 256
–disable-format-scene-breaks, 255
–remove-paragraph-spacing, 254
–disable-italicize-common-cases, 255
–remove-paragraph-spacing-indent-size, 254
–disable-markup-chapter-headings, 255
–replace-scene-breaks, 255
–disable-remove-fake-margins, 256
–search-replace, 255
–disable-renumber-headings, 255
–series, 258
–disable-unwrap-lines, 255
–series-index, 258
–dont-split-on-page-breaks, 251
–smarten-punctuation, 254
–duplicate-links-in-toc, 256
–sr1-replace, 255
–embed-all-fonts, 253
–sr1-search, 255
–embed-font-family, 253
–sr2-replace, 255
–enable-heuristics, 255
–sr2-search, 255
–epub-flatten, 252
–sr3-replace, 255
–epub-inline-toc, 252
–sr3-search, 255
–epub-toc-at-end, 252
–start-reading-at, 256
–expand-css, 253
–subset-embedded-fonts, 254
–extra-css, 253
–tags, 258
–extract-to, 252
–timestamp, 258
–filter-css, 253
–title, 258
–flow-size, 252
–title-sort, 258
–font-size-mapping, 253
–toc-filter, 257
–help, -h, 251
–toc-threshold, 257
–html-unwrap-factor, 255
–toc-title, 252
–input-encoding, 251
Dizin
307
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
–unsmarten-punctuation, 254
–use-auto-toc, 257
–verbose, -v, 258
–version, 251
ebook-edit komut satırı seçeneği
–detach, 258
–help, -h, 258
–version, 258
ebook-meta komut satırı seçeneği
–author-sort, 259
–authors, -a, 259
–book-producer, -k, 259
–category, 259
–comments, -c, 259
–cover, 259
–date, -d, 259
–from-opf, 259
–get-cover, 259
–help, -h, 259
–identifier, 259
–index, -i, 260
–isbn, 260
–language, -l, 260
–lrf-bookid, 260
–publisher, -p, 260
–rating, -r, 260
–series, -s, 260
–tags, 260
–title, -t, 260
–title-sort, 260
–to-opf, 260
–version, 260
ebook-polish komut satırı seçeneği
–compress-images, -i, 261
–cover, -c, 261
–embed-fonts, -e, 261
–help, -h, 261
–jacket, -j, 261
–opf, -o, 261
–remove-jacket, 261
–remove-unused-css, -u, 261
–smarten-punctuation, -p, 261
–subset-fonts, -f, 261
–verbose, 261
–version, 261
ebook-viewer komut satırı seçeneği
–continue, 262
–debug-javascript, 262
–detach, 262
–full-screen, -f, 262
–help, -h, 262
–open-at, 262
–raise-window, 262
–version, 262
308
edit_file() (calibre.gui2.tweak_book.boss.Boss metodu),
289
eject() (calibre.devices.interface.DevicePlugin metodu),
209
embed_metadata() (calibre.db.cache.Cache metodu), 276
encoding (calibre.web.feeds.news.BasicNewsRecipe niteliği), 44
exists() (calibre.ebooks.oeb.polish.container.Container
metodu), 282
extra_css (calibre.web.feeds.news.BasicNewsRecipe niteliği), 44
extract_readable_article()
(calibre.web.feeds.news.BasicNewsRecipe
metodu), 39
F
fast_field_for() (calibre.db.cache.Cache metodu), 276
feeds (calibre.web.feeds.news.BasicNewsRecipe niteliği),
44
fetch-ebook-metadata komut satırı seçeneği
–authors, -a, 262
–cover, -c, 262
–help, -h, 262
–isbn, -i, 262
–opf, -o, 262
–timeout, -d, 263
–title, -t, 263
–verbose, -v, 263
–version, 263
field_for() (calibre.db.cache.Cache metodu), 276
field_ids_for() (calibre.db.cache.Cache metodu), 276
file_type (calibre.customize.conversion.OutputFormatPlugin
niteliği), 206
file_types (calibre.customize.CatalogPlugin niteliği), 201
file_types (calibre.customize.conversion.InputFormatPlugin
niteliği), 204
file_types (calibre.customize.FileTypePlugin niteliği),
199
file_types (calibre.customize.MetadataReaderPlugin niteliği), 200
file_types (calibre.customize.MetadataWriterPlugin niteliği), 200
filename_callback()
(calibre.devices.usbms.device.Device
metodu),
215
filesize() (calibre.ebooks.oeb.polish.container.Container
metodu), 282
FileTypePlugin (calibre.customize içinde bir sınıf), 199
filter_css() (calibre.ebooks.oeb.polish.css modülü içinde),
287
filter_regexps (calibre.web.feeds.news.BasicNewsRecipe
niteliği), 44
find_identical_books() (calibre.db.cache.Cache metodu),
277
Dizin
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
fix_all_html() (calibre.ebooks.oeb.polish.pretty modülü get_cached_cover_url()
(caiçinde), 285
libre.ebooks.metadata.sources.base.Source
fix_html() (calibre.ebooks.oeb.polish.pretty modülü
metodu), 203
içinde), 285
get_categories() (calibre.db.cache.Cache metodu), 277
for_viewer (calibre.customize.conversion.InputFormatPluginget_collections() (calibre.devices.interface.BookList meniteliği), 204
todu), 214
format() (calibre.db.cache.Cache metodu), 277
get_cover_url() (calibre.web.feeds.news.BasicNewsRecipe
format_abspath() (calibre.db.cache.Cache metodu), 277
metodu), 40
format_field() (calibre.ebooks.metadata.book.base.Metadataget_custom_book_data() (calibre.db.cache.Cache memetodu), 158
todu), 277
format_hash() (calibre.db.cache.Cache metodu), 277
get_device_information()
(caformat_metadata() (calibre.db.cache.Cache metodu), 277
libre.devices.interface.DevicePlugin metodu),
FORMATS (calibre.devices.interface.DevicePlugin nite209
liği), 206
get_device_uid() (calibre.devices.interface.DevicePlugin
formats() (calibre.db.cache.Cache metodu), 277
metodu), 212
free_space() (calibre.devices.interface.DevicePlugin me- get_driveinfo() (calibre.devices.interface.DevicePlugin
todu), 210
metodu), 209
from_files()
(calibre.ebooks.oeb.polish.toc
modülü get_feeds() (calibre.web.feeds.news.BasicNewsRecipe
içinde), 287
metodu), 40
from_links() (calibre.ebooks.oeb.polish.toc modülü get_file() (calibre.devices.interface.DevicePlugin meiçinde), 287
todu), 211
from_xpaths() (calibre.ebooks.oeb.polish.toc modülü get_file_path_for_processing()
(caiçinde), 287
libre.ebooks.oeb.polish.container.Container
metodu), 282
G
get_id_map() (calibre.db.cache.Cache metodu), 278
get_identifiers() (calibre.ebooks.metadata.book.base.Metadata
generate_item() (calibre.ebooks.oeb.polish.container.Container
metodu), 157
metodu), 282
(cagenesis() (calibre.gui2.actions.InterfaceAction metodu), get_ids_for_custom_book_data()
libre.db.cache.Cache metodu), 278
218
genesis() (calibre.gui2.preferences.ConfigWidgetInterface get_images() (calibre.customize.conversion.InputFormatPlugin
metodu), 205
metodu), 219
get_all_standard_metadata()
(ca- get_item_id() (calibre.db.cache.Cache metodu), 278
get_item_ids() (calibre.db.cache.Cache metodu), 278
libre.ebooks.metadata.book.base.Metadata
get_item_name() (calibre.db.cache.Cache metodu), 278
metodu), 158
(caget_all_user_metadata()
(ca- get_masthead_title()
libre.web.feeds.news.BasicNewsRecipe
libre.ebooks.metadata.book.base.Metadata
metodu), 40
metodu), 158
(caget_annotations() (calibre.devices.usbms.device.Device get_masthead_url()
libre.web.feeds.news.BasicNewsRecipe
metodu), 215
metodu), 40
get_article_url() (calibre.web.feeds.news.BasicNewsRecipe
get_metadata() (calibre.customize.MetadataReaderPlugin
metodu), 39
metodu), 200
get_author_tokens()
(caget_metadata() (calibre.db.cache.Cache metodu), 278
libre.ebooks.metadata.sources.base.Source
get_next_series_num_for() (calibre.db.cache.Cache memetodu), 202
todu), 278
get_book_url() (calibre.ebooks.metadata.sources.base.Source
get_obfuscated_article()
(cametodu), 202
libre.web.feeds.news.BasicNewsRecipe
get_book_url_name()
(cametodu), 40
libre.ebooks.metadata.sources.base.Source
get_option()
(calibre.devices.interface.DevicePlugin memetodu), 202
todu),
213
get_book_urls() (calibre.ebooks.metadata.sources.base.Source
get_proxy_metadata()
(calibre.db.cache.Cache metodu),
metodu), 202
278
get_browser() (calibre.web.feeds.news.BasicNewsRecipe
get_recommended_folders()
(cametodu), 39
libre.ebooks.oeb.polish.replace modülü içinde),
Dizin
309
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
285
ignore_connected_device()
(caget_standard_metadata()
(calibre.devices.interface.DevicePlugin metodu),
libre.ebooks.metadata.book.base.Metadata
212
metodu), 158
ignore_duplicate_articles
(caget_title_tokens() (calibre.ebooks.metadata.sources.base.Source
libre.web.feeds.news.BasicNewsRecipe
nimetodu), 202
teliği), 45
get_usage_count_by_id() (calibre.db.cache.Cache me- image_url_processor()
(catodu), 278
libre.web.feeds.news.BasicNewsRecipe sınıf
get_user_blacklisted_devices()
(cametodu), 40
libre.devices.interface.DevicePlugin metodu), index_to_soup() (calibre.web.feeds.news.BasicNewsRecipe
212
metodu), 40
get_user_metadata()
(ca- init() (calibre.db.cache.Cache metodu), 278
libre.ebooks.metadata.book.base.Metadata
initialization_complete()
(cametodu), 158
libre.gui2.actions.InterfaceAction
metodu),
guess_type() (calibre.ebooks.oeb.polish.container.Container
218
metodu), 282
initialize() (calibre.customize.CatalogPlugin metodu),
gui (calibre.gui2.tweak_book.plugin.Tool niteliği), 288
201
gui_category (calibre.customize.PreferencesPlugin nite- initialize() (calibre.customize.Plugin metodu), 198
liği), 219
initialize() (calibre.gui2.preferences.ConfigWidgetInterface
gui_configuration_widget()
(cametodu), 219
libre.customize.conversion.InputFormatPlugin InputFormatPlugin (calibre.customize.conversion içinde
metodu), 205
bir sınıf), 204
gui_configuration_widget()
(ca- insert_into_xml() (calibre.ebooks.oeb.polish.container.Container
libre.customize.conversion.OutputFormatPlugin
metodu), 282
metodu), 206
InterfaceAction (calibre.gui2.actions içinde bir sınıf), 216
gui_layout_complete()
(ca- InterfaceActionBase (calibre.customize içinde bir sınıf),
libre.gui2.actions.InterfaceAction
metodu),
218
218
InternalMetadataCompareKeyGen
(cagui_name (calibre.customize.PreferencesPlugin niteliği),
libre.ebooks.metadata.sources.base
içinde
219
bir sınıf), 204
guide_type_map (calibre.ebooks.oeb.polish.container.Container
is_configured() (calibre.ebooks.metadata.sources.base.Source
niteliği), 282
metodu), 202
is_dir (calibre.ebooks.oeb.polish.container.Container niH
teliği), 282
is_dynamically_controllable()
(cahas_book() (calibre.db.cache.Cache metodu), 278
libre.devices.interface.DevicePlugin metodu),
has_format() (calibre.db.cache.Cache metodu), 278
212
has_html_comments
(cais_image_collection
(calibre.ebooks.metadata.sources.base.Source
libre.customize.conversion.InputFormatPlugin
niteliği), 201
niteliği), 204
has_id() (calibre.db.cache.Cache metodu), 278
has_name() (calibre.ebooks.oeb.polish.container.Container is_link_wanted() (calibre.web.feeds.news.BasicNewsRecipe
metodu), 40
metodu), 282
is_null() (calibre.ebooks.metadata.book.base.Metadata
href_to_name() (calibre.ebooks.oeb.polish.container.Container
metodu), 157
metodu), 282
is_running() (calibre.devices.interface.DevicePlugin meHTML, 290
todu), 213
is_usb_connected()
(caI
libre.devices.interface.DevicePlugin
metodu),
icon (calibre.customize.PreferencesPlugin niteliği), 219
208
icon (calibre.devices.interface.DevicePlugin niteliği), 207
iterlinks()
(calibre.ebooks.oeb.polish.container.Container
identify() (calibre.ebooks.metadata.sources.base.Source
metodu),
282
metodu), 203
identify_results_keygen()
(caJ
libre.ebooks.metadata.sources.base.Source
javascript_login() (calibre.web.feeds.news.BasicNewsRecipe
metodu), 203
310
Dizin
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
metodu), 40
K
keep_only_tags (calibre.web.feeds.news.BasicNewsRecipe
niteliği), 45
komut satırı seçeneği
–dont-notify-gui, 239
–library-path, 239
L
language (calibre.web.feeds.news.BasicNewsRecipe niteliği), 45
library_changed() (calibre.gui2.actions.InterfaceAction
metodu), 218
load_actual_plugin()
(calibre.customize.InterfaceActionBase metodu),
218
load_fonts() (calibre.customize.ViewerPlugin metodu),
220
load_javascript() (calibre.customize.ViewerPlugin metodu), 220
load_resources() (calibre.customize.Plugin metodu), 198
load_resources()
(calibre.gui2.actions.InterfaceAction
metodu), 218
location_selected() (calibre.gui2.actions.InterfaceAction
metodu), 218
LRF, 290
lrf2lrs komut satırı seçeneği
–dont-output-resources, 263
–help, -h, 263
–output, -o, 263
–verbose, 263
–version, 263
lrfviewer komut satırı seçeneği
–disable-hyphenation, 264
–help, -h, 264
–profile, 264
–verbose, 264
–version, 264
–visual-debug, 264
–white-background, 264
lrs2lrf komut satırı seçeneği
–help, -h, 264
–lrs, 264
–output, -o, 264
–verbose, 264
–version, 264
M
MANAGES_DEVICE_PRESENCE
libre.devices.interface.DevicePlugin
207
Dizin
manifest_has_name()
(calibre.ebooks.oeb.polish.container.Container
metodu), 282
manifest_id_map (calibre.ebooks.oeb.polish.container.Container
niteliği), 283
manifest_type_map
(calibre.ebooks.oeb.polish.container.Container
niteliği), 283
mark_as_cover() (calibre.ebooks.oeb.polish.cover modülü içinde), 286
mark_as_titlepage() (calibre.ebooks.oeb.polish.cover modülü içinde), 287
masthead_url (calibre.web.feeds.news.BasicNewsRecipe
niteliği), 45
match_regexps (calibre.web.feeds.news.BasicNewsRecipe
niteliği), 45
max_articles_per_feed
(calibre.web.feeds.news.BasicNewsRecipe
niteliği), 46
MAX_PATH_LEN (calibre.devices.usbms.device.Device
niteliği), 215
merge() (calibre.ebooks.oeb.polish.split modülü içinde),
286
Metadata (calibre.ebooks.metadata.book.base içinde bir
sınıf), 157
metadata_for_field()
(calibre.ebooks.metadata.book.base.Metadata
metodu), 158
MetadataReaderPlugin (calibre.customize içinde bir sınıf), 200
MetadataWriterPlugin (calibre.customize içinde bir sınıf),
200
mi (calibre.ebooks.oeb.polish.container.Container niteliği), 283
minimum_calibre_version (calibre.customize.Plugin niteliği), 198
multisort() (calibre.db.cache.Cache metodu), 278
multisplit() (calibre.ebooks.oeb.polish.split modülü
içinde), 286
N
name (calibre.customize.Plugin niteliği), 197
name (calibre.gui2.actions.InterfaceAction niteliği), 216
name (calibre.gui2.tweak_book.plugin.Tool niteliği), 288
name(), 134
name_order (calibre.customize.PreferencesPlugin niteliği), 219
name_to_abspath()
(calibre.ebooks.oeb.polish.container.Container
metodu), 283
(caname_to_href()
(calibre.ebooks.oeb.polish.container.Container
niteliği),
metodu), 283
names_that_must_not_be_changed
(calibre.ebooks.oeb.polish.container.Container
311
calibre Kullanıcı Kılavuzu, Sürüm 2.49.0
niteliği), 283
names_that_must_not_be_removed
(calibre.ebooks.oeb.polish.container.Container
niteliği), 283
names_that_need_not_be_manifested
(calibre.ebooks.oeb.polish.container.Container
niteliği), 283
needs_subscription
(calibre.web.feeds.news.BasicNewsRecipe
niteliği), 46
NEWS_IN_FOLDER
(calibre.devices.usbms.device.Device
niteliği),
215
no_stylesheets (calibre.web.feeds.news.BasicNewsRecipe
niteliği), 46
normalize_path() (calibre.devices.usbms.driver.USBMS
sınıf metodu), 215
NUKE_COMMENTS
(calibre.devices.interface.DevicePlugin niteliği),
207
O
oldest_article (calibre.web.feeds.news.BasicNewsRecipe
niteliği), 46
on_import (calibre.customize.FileTypePlugin niteliği),
199
on_postimport (calibre.customize.FileTypePlugin niteliği), 199
on_postprocess (calibre.customize.FileTypePlugin niteliği), 199
on_preprocess (calibre.customize.FileTypePlugin niteliği), 199
open() (calibre.devices.interface.DevicePlugin metodu),
209
open()
(calibre.ebooks.oeb.polish.container.Container
metodu), 283
open_book() (calibre.gui2.tweak_boo