PDF biçiminde - calibre User Manual

calibre Kullanıcı Kılavuzu
Sürüm 2.24.0
Kovid Goyal
April 10, 2015
˙Içindekiler
1
Bölümler
1.1 Grafik Kullanıcı Arayüzü . . . . . . .
1.2 Sık kullandı˘gınız haber sitesini ekleme
1.3 E-kitap Görüntüleyici . . . . . . . . .
1.4 E-Kitap Dönü¸stürme . . . . . . . . . .
1.5 E-kitap Düzenleme . . . . . . . . . . .
1.6 E-kitapları Kar¸sıla¸stırmak . . . . . . .
1.7 E-kitapların Üst Verisini Düzenlemek .
1.8 Sıkça Sorulan Sorular . . . . . . . . .
1.9 Rehberler . . . . . . . . . . . . . . . .
1.10 Calibreyi özelle¸stirmek . . . . . . . . .
1.11 Command Line Interface . . . . . . . .
1.12 Calibre geli¸stirme ortamı ayarlamak . .
1.13 Açıklayıcı sözlük . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3
3
21
45
48
65
94
96
99
121
229
265
297
355
Python Modül Dizini
357
Dizin
359
i
ii
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
calibre bir e-kitap kitaplık yöneticisidir. E-kitapları yaygın kullanılan biçimlerin ço˘gunda görüntüler, dönü¸stürür ve
kataloglar. Bir çok e-kitap okuyucu ile de konu¸sabilir. ˙Internetten kitaplarınız için meta veri getirebilir. Gazeteleri
indirip okumaya uygun e-kitaplara dönü¸stürebilir. Linux, Windows ve OS X platformlarında çalı¸sır.
calibre’yi yeni ba¸slattınız. Simdi
¸
ne yapacaksınız? calibre e-kitaplarınızla bir s¸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ü˘gmesine tıklayarak üzerinde
çalı¸smak istedi˘giniz e-kitapları tarayın. Bir defa kitapları ekledi˘ginizde ana görünümde a¸sa˘gı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˘gi bir biçime dönü¸stürmeniz gereklidir. Ho¸sgeldiniz Sihirbazı calibre ilk çalı¸stı˘gında sizi kar¸sılar ve calibre’yi okuyucu aygıtınıza göre ayarlar. Dönü¸süm çocuk oyunca˘gıdır. Sadece dönü¸stürmek
istedi˘giniz kitabı seçmeniz ve “Kitapları dönü¸stür” dü˘gmesine tıklamanız yeterli olacaktır. Simdilik
¸
tüm seçenekleri
görmezden gelin ve “Tamam” dü˘gmesine tıklayın. Sa˘g alt kö¸sede bir simge yanıp sönmeye ba¸slayacaktır. Yanıp sönme
bitti˘ginde dönü¸stürülmü¸s kitabınız hazırdır. Kitabı okumak için “Göster” dü˘gmesine tıklayın.
E˘ger kitabı okuyucunuzda okumak isterseniz, onu bilgisayarınıza ba˘gladıktan sonra calibre algılayana kadar (10-20
saniye) bekleyin ve “Aygıta gönder” dü˘gmesine tıklayın. Bir defa simge yeniden yanıp sönmeyi bıraktı˘gında okuyucunuzu bilgisayarınızdan ayırın ve okumaya ba¸slayın! E˘ger kitabı bir önceki adımda dönü¸stürmediyseniz, calibre
cihazınızın anlayaca˘gı biçime otomatik olarak dönü¸stürecektir.
Daha geli¸smi¸s bir kullanıma ba¸slamak için Grafik Kullanıcı Arayüzü (sayfa 3) belgesini okumalısınız. Daha da fazla
güç ve çe¸sitlilik için generated/en/cli-index belgesine bakabilirsiniz. Sıkça Sorulan Sorular (sayfa 99) belgesini de faydalı bulacaksınız.
˙Içindekiler
1
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
2
˙Iç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ü¸süm özelliklerine eri¸sim sa˘glar. calibre kullanımı için temel i¸s akı¸sı ilk olarak kitapları sabit diskinizden kitaplı˘ga eklemektir. calibre otomatik olarak kitaplardan
meta veriyi okumaya çalı¸sacak ve kendi veritabanına ekleyecektir. Bir defa veritabanına eklendiklerinde bir biçimden
di˘gerine dönü¸süm, okuma aygıtına ta¸sıma, bilgisayarınızda görüntüleme ve meta veriyi düzenleme gibi eylemleri gerçekle¸stirebilirsiniz. Sonrasında kapa˘gı, tanımlamayı ve di˘ger ayrıntıları de˘gi¸stirme gelecektir. calibre’nin ekledi˘giniz
dosyaların kopyalarını üretti˘gini unutmayın. Özgün dosyalarınız de˘gi¸stirilmeden kalacaktır.
Arayüz çe¸sitli bölümlere ayrılmı¸stır:
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Eylemler (sayfa 3)
Tercihler (sayfa 9)
Kataloglar (sayfa 10)
Ara & Sırala (sayfa 10)
Arama Arayüzü (sayfa 11)
Aramaları kaydetmek (sayfa 14)
Sanal Kitaplıklar (sayfa 14)
Metadata’nın dosya isimlerinden tahmini (sayfa 14)
Kitap Detayları (sayfa 15)
Etiket Tarayıcı (sayfa 16)
Kapak Izgarası (sayfa 18)
Kapak Tarayıcı (sayfa 19)
Hızlıgörünüm (sayfa 19)
Görevler (sayfa 20)
Klavye Kısayolları (sayfa 20)
1.1.1 Eylemler
Eylemeler araç çubu˘gu sıkça kullanılan eylemler için uygun kısayollar sunar. Dü˘gmelere sa˘g tıkladı˘gınızda varsayılan davranı¸slarını de˘gi¸stirebilirsiniz. Eylemler araç çubu˘gu bilgisayarınıza bir okuyucu ba˘glı olup olmamasına göre
farklılıklar gösterebilir.
3
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
•
•
•
•
•
•
•
•
•
•
•
Kitap ekle (sayfa 4)
Nitelik düzenleme (sayfa 5)
Kitapları dönü¸stür (sayfa 5)
Görünüm (sayfa 6)
Cihaza gönder (sayfa 6)
Haberleri çek (sayfa 6)
Kitaplık (sayfa 7)
Cihaz (sayfa 7)
Diske kaydet (sayfa 8)
Ba˘glan/Payla¸s (sayfa 8)
Kitapları Sil (sayfa 9)
Kitap ekle
Kitap ekle eylemi dü˘gmeye sa˘g tıkla eri¸silen yedi çe¸sit eylem içerir.
1. Tek bir dizinden kitapları ekle: Dosya seçim ileti¸sim penceresi açar ve bir dizindeki hangi kitapların ekleneceg˘ ini seçmenizi sa˘glar. Bu hareket ba˘glam duyarlıdır, örn. hangi katalo˘gu (sayfa 10) seçti˘ginize ba˘glıdır. Kitaplık
seçtiyseniz, kitaplar kitaplı˘ga eklenir. E-kitap okuyucu aygıt seçtiyseniz, kitaplar aygıta yüklenir gibi.
2. Dizinlerden, alt dizinleri içecek s¸ekilde kitap ekle (Her dizine bir kitap, her e-kitabın de˘gi¸sik bir biçimdeki
aynı kitap oldu˘gunu var sayar): Bir dizin seçmenizi sa˘glar. Dizin ve tüm alt dizinleri yinelemeli olarak taranır,
ve bulunan tüm e-kitaplar kitaplı˘ga eklenir. calibre her dizinin tek bir kitap içerdi˘gini var sayar. Bir dizindeki
tüm e-kitapların aynı kitabın de˘gi¸sik biçimleri oldu˘gu var sayılır. Bu hareket Diske kaydet (sayfa 8) i¸sleminin
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˘gi¸stirmedi˘ginizi 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˘gunu 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ı˘ga eklenir. calibre her dizinin birden çok kitap içerdi˘gini var
sayar. Bir dizindeki aynı isimli tüm e-kitap dosyaları aynı kitabın de˘gi¸sik biçimleri olarak ele alınır. Farklı
isimdeki e-kitaplar farklı kitaplar olarak eklenir.
4. Ar¸sivden (ZIP/RAR) çoklu kitap ekle: Seçili ZIP veya RAR dosyasından birden çok e-kitap eklemenizi sa˘glar. Önce sıkı¸stırılmı¸s ar¸sivi açıp ardından yukardaki iki seçenekten birini kullanmak zorunda kalmamanız için
kolayla¸stırıcı bir kısa yoldur.
5. Bo¸s kitap ekle. (Herhangi biçimi olmayan Kitap Girdisi): Bo¸s bir kitap kaydı olu¸sturmanızı sa˘glar. 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˘glar.
7. Dosyaları seçili kitap kayıtlarına ekle: Kitaplı˘gınızda var olan bir kitapla ili¸skili dosyaları eklemeniz veya
güncellemenize izin verir.
Add books eylemi çok çe¸sitli e-kitap biçimlerinden metadata okuyabilir. Ek olarak, dosya adından metadata tahmin
etmeye çalı¸sır. Bunu nasıl ayarlayaca˘gınızı ö˘grenmek için Metadata’nın dosya isimlerinden tahmini (sayfa 14) göz
atın.
Mevcut bir kitaba ek bir biçim eklemek için s¸u üç s¸eyden birini yapabilirsiniz:
1. Dsoyayı ana pencerenin sa˘g tarafındaki kitap detayları paneline sürükleyip bırakabilirsiniz
4
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
2. Kitap ekle dü˘gmesine sa˘g tıklayıp :guilabel:‘Dosyaları seçili kitaplara ekle‘yi seçebilirsiniz.
3. Nitelik düzenleme (sayfa 5) eylemiyle eri¸silen, Metadata Düzenle ileti¸sim penceresinin sa˘g yukarısındaki kırmızı
kitap ekle dü˘gmesine tıklayabilirsiniz.
Nitelik düzenleme
Metadata düzenle eyleminin dü˘gmeye sa˘g tıklayarak eri¸silen dört çe¸sit eylemi vardır.
1. Metadatayı ayrı ayrı düzenle: Kitapların metadata’sını tek tek internetten metadata, kapaklar da dahil çekme
seçene˘giyle düzenlemenize izin verir. Ayrıca kitaptan belirli e-kitap biçimlerini çıkarmanızı veya kitaba eklemenizi sa˘glar.
2. Toplu halde metadata düzenle: Yaygın metadata alanlarını çok sayıda kitap için aynı zamanda düzenlemenizi
sa˘glar. :ref:‘Kitaplık görünümü <search_sort>‘nde seçti˘giniz tüm kitaplar üzerinde i¸slem yapar.
3. Metadata ve kapakları indir: Kitap listesinde seçili ktiaplar için metadata ve kapakları (mevcutsa) indir.
4. Kitap kayıtlarını birle¸stir: ˙Iki veeya daha fazla kitap için metadata ve biçimleri birle¸stirme olana˘gı sunar. ˙Ilk
önce tıklanmamı¸s kayıtları silme veya tutma seçene˘giniz vardır.
Daha fazla detay için bknz E-kitapların Üst Verisini Düzenlemek (sayfa 96).
Kitapları dönüstür
¸
E-kitaplar bir sürü biçimden e-kitap okuyucunuzun tercih etti˘gi herhangi bir biçime dönü¸stü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ü¸stürmez.
Bir çok biçimden DRM’nin kaldırılması kolaydır, ama bu yasal olmayabilece˘ginden, kitaplarınız özgürlü˘ge kavu¸sturacak araçlar bulmalı ve ardından dönü¸stürme için calibre kullanmalısınız.
Ço˘gu insan için, dönü¸stürme tek tıklık bir konu olmalıdır. Dönü¸stürme süreciyle ilgili daha çok s¸ey ö˘grenmek istiyorsanız, E-Kitap Dönü¸stürme (sayfa 48) göz atın.
Kitapları dönü¸stür eyleminin dü˘gmeye sa˘g tıkla eri¸silen üç çe¸sidi vardır.
1. Ayrı ayrı dönü¸stür: Seçilen her kitap için dönü¸stürmeyi özelle¸stirmek için dönü¸stürme seçeneklerini belirtmenize izin verir.
2. Toplu dönü¸stür: Çok sayıda kitabı topluca dönü¸stürmek için seçenekleri bir kere girmenizi sa˘glar.
3. Calibre kitaplı˘gınızdaki kitapların katalo˘gunu olu¸sturun: Kitaplı˘gı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˘glar. Ek olarak, fare kullanarak birden çok kitap seçerseniz, katalo˘ga yalnızca o kitaplar eklenir. Katalo˘gu EPUB, MOBI veya AZW3 gibi bir e-kitap biçiminde üretirseniz, e-kitap okuyucunuzu
ba˘gladı˘gınızda katalog otomatik olarak cihaza gönderilir. Katalogların çalı¸sma biçimiyle ilgili daha fazla bilgi
için, :ref:‘catalog_tut‘okuyun.
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.24.0
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˘ger biçimler için varsayılan i¸sletim sistemi uygulamasını kullanır. Hangi biçimlerin
dahili okuyucu ile açılaca˘gını Seçenekler->Davranı¸s ile belirtebilirsiniz. Bir kitabın birden çok biçimi varsa, dü˘gmeye
sa˘g tıklayarak belirli bir biçimi görüntüleyebilirsiniz.
Cihaza gönder
Aygıta gönder eyleminin dü˘gmeye sa˘g tıkla eri¸silebilen sekiz de˘gi¸sik çe¸sidi vardır.
1. Ana belle˘ge gönder: Seçili kitaplar e-kitap okuyucunun ana belle˘gine 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˘giniz 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ü˘gmeye tıkladı˘gınızda hangi seçeneklerin, 1 içinde 5 üstünde
veya 7 altında, varsayılan olaca˘gı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ı¸s olabilece˘giniz dipnotları calibre kitaplı˘gındaki
kitap metadata’sına ekler.
˙
Aygıta gönderilen dosyaların dosya isimlerini ve dizin yapılarını Seçenekler->Içe/Dı¸
sa Aktar->Kitapların aygıta gönderimi içinde bir s¸ablon ayarlayarak kontrol edebilirsiniz. Ayrıca bknz Calibre s¸ablon dili (sayfa 153).
Haberleri çek
Haberleri getir eylemi haberleri çe¸sitli web sitelerinden indirir ve e-kitap okuyucunuzda okunabilecek
bir e-kitap haline dönü¸stürür. Normalde, yeni olu¸sturulan e-kitap e-kitap kitaplı˘gınıza eklenir, ama indirme bitti˘ginde
bir e-kitap okuyucu takılıysa, haberler otomatik olarak e-kitap okuyucuya yüklenir.
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¸sturaca˘gınızı ö˘grenmek için, bknz Sık kullandı˘gınız haber sitesini ekleme (sayfa 121).
Haberleri getir eyleminin sa˘g tıkla eri¸silen üç çe¸sidi vardır.
1. Haber indirimini zamanla: Seçili haber kaynaklarının indirilmesini kullanılabilir yüzlercesinin listesinden zamanlayarak yapmanıza olanak sa˘glar. Zamanlama seçti˘giniz her haber kayna˘gı için ayrı ayrı ayarlanabilir ve
haftanın belirli günlerini veya indirmeler arası belirli frekansı seçmenizi sa˘glayacak kadar esnektir.
6
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
2. Özel haber kayna˘gı ekle: Eri¸smek istedi˘giniz özel bir haber sitesinden haberlerin indirimi için kullanabileceg˘ iniz basit bir reçete olu¸sturmanızı sa˘glar. Reçeteyi olu¸sturmak bir RSS haber besleme URL’si verecek kadar
basit olabilir, veya bu i¸s için Python-tabanlı kod kullanabilir ve daha belirleyici olabilirsiniz. Daha fazla bilgi
için bknz Sık kullandı˘gınız haber sitesini ekleme (sayfa 121).
3. Tüm zamanlanmı¸s haber kaynaklarını indir: Calibre’nin zamanladı˘gınız tüm haber kayna˘gı indirmelerini
hemen ba¸slatmasına neden olur.
Kitaplık
Kitaplık eylemi bir Kitaplık olu¸sturmanıza, aralarında geçi¸s yapmanıza, yeniden adlandırmanıza veya
silmenize olanak tanır. calibre istedi˘giniz kadar kitaplık olu¸sturmanıza izin verir. Örne˘gin, bir kurgu kitaplı˘gı, bir
yabancı dil kitaplı˘gı, proje kitaplı˘gı, veya ihtiyacınıza uyacak herhangi yapıyı olu¸sturabilirsiniz. Kitaplıklar calibre
içindeki en yüksek seviye organizasyonsal yapılardır. Her kitaplı˘gın kendi kitap kümesi, etiketleri, kategorileri ve
taban depolama konumu vardır.
1. Kitaplık de˘gi¸stir/olu¸stur...: Bu kısım a) ba¸ska konumdaki calibre kitaplı˘gına ba˘glanmanıza, b) yeni bir konumda bo¸s bir kitaplık olu¸sturmanıza, c) mevcut kitaplı˘gı belirtilmi¸s yeni bir konuma ta¸sımanıza olanak tanır.
2. Hızlı de˘gi¸stir: Calibre içinde kayıtlı ya da olu¸sturulmu¸s kitaplıklar arasında hızlı geçi¸s yapmanızı sa˘glar.
3. Kitaplı˘gı yeniden adlandır: Kitaplı˘gı yeniden adlandırmanıza izin verir.
4. Kitaplı˘gı sil: Bir kitaplı˘gın kaydını calibre’den silmenize izin verir.
5. <kitaplık adı>: Eylem 5, 6 vs... olu¸sturdu˘gunuz veya ba˘glandı˘gınız kitaplıklar arasında ani geçi¸s için eri¸sim
verir. Bu liste en çok kullanılan 5 kitaplı˘gı içerir. Tam içerik için, Hızlı De˘gi¸stir menüsünü kullanın.
6. Kitaplık bakımı: Mevcut kitaplı˘gı veri tutarlılı˘gı problemleri için kontrol etmenize ve mevcut kitaplı˘gın veri
tabanını yedeklerden geri yüklemenize izin verir.
Not: E-kitaplarınız hakkında metadata, örn. ba¸slı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˘gi 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¸sa etmesini sa˘glayabilirsiniz.
Kitapları de˘gi¸sik kitaplıklar arasında (birden fazla kitaplı˘gınız ayarlanmı¸s oldu˘gunda) kitaba sa˘g tıklayıp Kitaplı˘ga
kopyala eylemini seçerek kopyalayabilirsiniz.
Cihaz
Aygıt eylemi aygıtınızın ana belle˘gi ya da depolama kartlarındaki kitapları görüntülemenizi, veya aygıtı
çıkarmanızı sa˘glar (calibre’den ayırmanızı). Desteklenen bir aygıt taktı˘gınızda bu simge calibre ana araç çubu˘gunda
otomatik olarak çıkar. Üzerine tıklayarak cihazınızdaki kitapları görebilirsiniz. Ayrıca calibre kitaplı˘gınızdaki kitapları
sürükleyip simge üzerine bırakarak cihazınıza aktarabilirsiniz. Aynı s¸ekilde, aygıtınızdan kitapları sürükleyip araç
çubu˘gundaki kitaplık simgesine bırakarak aygıtınızdan calibre’ye aktarım yapabilirsiniz.
1.1. Grafik Kullanıcı Arayüzü
7
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Diske kaydet
Diske kaydet eyleminin sa˘g tık dü˘gmesiyle eri¸silebilen be¸s çe¸sidi vardır.
1. Diske kaydet: Seçili kitapları dizin olarak organize s¸ekilde diske kaydeder. Dizin yapısı s¸una benzer:
=
{}=
{}@default
=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->Içe/Dı¸
sa Aktar->Kitapları
diske kaydet içinde bir s¸ablon olu¸sturarak kontrol edebilirsiniz. Ayrıca bknz Calibre s¸ablon dili
(sayfa 153).
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˘giniz e-kitap biçiminde. Tercih etti˘giniz biçimi Seçenekler>Davranı¸s->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˘giniz e-kitap biçiminde kaydeder. Tercih etti˘giniz biçimi Seçenekler->Davranı¸s->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˘giniz biçimde.
˘
Baglan/Payla
s¸
Ba˘glan/Payla¸s eylemi bilgisayarınızdaki bir aygıt ya da dizine elle ba˘glanmanıza izin verir. Ayrıca
web tarayıcı veya e-posta ile calibre kitaplı˘gınıza eri¸simi ayarlamanıza da izin verir.
Ba˘glan/Payla¸s eyleminin sa˘g tıkla eri¸silebilen dört çe¸sidi vardır.
1. Dizine ba˘glan: Bilgisayarınızdaki bir dizine bir aygıtmı¸sçasına ve calibre’nin aygıtlar için olan tüm
özelliklerini o dizinle kullanacak s¸ekilde ba˘glanmanıza olanak tanır. Aygıtınız calibre tarafından
desteklenemiyor fakat USB aygıtı olarak kullanılabilirse kullanı¸slıdır.
2. iTunes’e Ba˘glan: iTunes kitap veri tabanınıza bir aygıtmı¸sçasına ba˘glanmanıza olanak tanır. Kitaplar iTunes’e gönderildi˘ginde, iTunes kullanarak çe¸sitli iAygıtlarda kullanılabilir olarak ayarlayabilirsiniz.
˙
3. Içerik
Sunucusu Ba¸slat: Calibre’nin dahili web tarayıcısını ba¸slatır. Ba¸slatıldı˘gında, calibre kitaplı˘gınız internetten bir web tarayıcı ile eri¸silebilir olur (seçerseniz). Web sunucunun nasıl ba¸slatılacag˘ ını Tercihler->Payla¸sım->A˘gda payla¸sım ile eri¸silen seçeneklerde ayarlayabilirsiniz
8
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
4. Kitapların e-posta tabanlı payla¸sımını ayarla: Kitap ve haber kaynaklarının e-posta ile paylas¸ımına izin verir. Bu seçenek için e-posta adresleri ayarlandı˘gında, calibre haber ve kitap güncellemelerini girilen e-posta adresine gönderir. Calibre’nin nasıl e-posta gönderece˘gini Tercihler>Payla¸sım->Kitapların e-posta ile payla¸sımı altında ayarlayabilirsiniz. Bir ya da fazla e-posta adresi ayarladı˘gınızda, bu menü girdisi kitapları yapılandırılan e-posta adreslerine gönderen menü girdisiyle de˘gi¸stirilecektir.
Kitapları Sil
˙ ge duyarlıdır, örn hangi
Kitapları kaldır eylemi kitapları kalıcı olarak siler, dikkatli kullanın. Içeri˘
katalo˘gu (sayfa 10) seçti˘ginize 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˘g tık menüsüyle eri¸silen be¸s çe¸sidi vardır.
1. Seçili kitapları sil: Kitap listesinde seçilmi¸s tüm kitapları kalıcı olarak silmenizi sa˘glar.
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˘glar.
3. Tüm biçimleri seçili kitaplardan kaldır, s¸unun dı¸sında...: Belirtilen biçim dı¸sındaki tüm biçimlerdeki e-kitap
dosyalarını kitap listesinde seçili kitaplardan kalıcı olarak kaldırmanızı sa˘glar.
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˘glar. 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.
6. E¸sle¸sen kitapları aygıttan çıkar: Kitap listesinde seçilmi¸s kitaplardan ba˘glı aygıttaki e-kitap dosyalarıyla e¸sle¸senleri kaldırmanızı sa˘glar.
Not: Suna
¸
dikkat edin, calibre kitaplı˘gınızdan Kitapları kaldırmayı kullanarak kitapları sildi˘ginizde, kitap kaydı kalıcı
olarak silinir, ama Windows ve OS X üzerinde dosyalar geri dönü¸süm kutusuna gider. Bu da fikrinizi de˘gi¸stirirseniz
geri getirmenize izin verir.
1.1.2 Tercihler
Tercihler eylemi calibre’nin çe¸sitli yönlerinin nasıl çalı¸saca˘gını de˘gi¸stirme olana˘gı sunar. Dü˘gmeye
sa˘g tıkla eri¸silebilen dört çe¸sidi vardır.
1. Tercihler: Calibre’nin çe¸sitli yönlerinin çalı¸sma biçimini de˘gi¸stirmenize olanak sa˘glar. Dü˘gmeye tıklamak da
bu eylemi gerçekle¸stirir.
2. Ho¸sgeldin sihirbazını çalı¸stır: Calibre’yi ilk defa çalı¸stırdı˘gınızda görünen Ho¸sgeldin Sihirbazını çalı¸stırmanızı
sa˘glar.
3. Calibre’yi geli¸stirmek için eklentiler getir: Calibre için eklentileri gösteren yeni bir pencere açar. Bu eklentiler
üçüncü s¸ahıslar tarafından calibre’nin i¸slevlerini geni¸sletmek için geli¸stirilmi¸stir.
1.1. Grafik Kullanıcı Arayüzü
9
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
4. Hata ayıklama kipinde yeniden ba¸slat: Calibre geli¸stiricilerine programda rasladı˘gınız problemlerin çözümünde yardım edebilecek hata ayıklama kipini etkinle¸stirmeyi sa˘glar. Ço˘gu kullanıcı için, bir geli¸stirici tarafından yönlendirilmedi˘gi sürece kapalı kalması uygundur.
1.1.3 Kataloglar
Katalog bir kitap koleksiyonudur. calibre iki çe¸sit de˘gi¸sik katalo˘gu yönetebilir:
1. Kitaplık: Bu bilgisayarınızdaki calibre kitaplı˘gında depolanmı¸s kitap koleksiyonudur.
2. Aygıt: Bu e-kitabınızda depolanmı¸s kitap koleksiyonudur. Okuyucuyu bilgisayara taktı˘gınızda kullanılabilir
olacaktır.
Ço˘gu i¸slem, örne˘gin kitap ekleme, silme, görüntüleme, vs., ba˘glama duyarlıdır. Örne˘gin, Aygıt katalo˘gunu seçiliyken
görünüm dü˘gmesine tıklarsanız, calibre aygıttaki dosyaları göstermek için açar. Kitaplık katalo˘gu seçiliyse, bunun
yerine calibre kitaplı˘gınızdaki dosyalar açılacaktır.
1.1.4 Ara & Sırala
Ara & Sırala kısmı kitap koleksiyonunuz üstünde bir çok güçlü eylem gerçekle¸stirmenizi sa˘glar.
• Sütun ba¸slıklarına tıklayarak ba¸slı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¸slı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¸slı˘ga göre sıralanır.
• Arama çubu˘gunu kullanarak belli bir kitap veya bir kitap kümesini arayabilirsiniz. Bu konuda daha fazlası
a¸sa˘gıda.
• Listede de˘gi¸smesini istedi˘giniz ö˘geye çift tıklayarak hızlı ve kolay bir s¸ekilde metadata düzenleyebilirsiniz.
• Kitap kümeleri üzerinde eylemler gerçekle¸stirebilirsiniz. Birden çok kitabı seçmek için ya:
10
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
– Ctrl tu¸sunu basılı tutar ve seçilmesini istedi˘giniz kitaplara tıklarsınız.
– Shift tu¸suna basılı tutarak seçilmesini istedi˘giniz kitap aralı˘gının ba¸sına ve sonuna tıklarsınız.
• Hangi alanların görüntülenmesini istedi˘ginizi yapılandırma ileti¸sim 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˘gin:
=
{}=
{}@default
=0=1=2=0=1=2Asimov Foundation format:lrf
Bu kitaplı˘gınızda LRF biçiminde kullanılabilir olan ve metadata’sında Asimov ve Foundation geçen tüm kitaplarla e¸sle¸sir. Biraz daha örnek:
=
{}=
{}@default
=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¸sle¸sir.
˙Iki çe¸sit arama daha kullanılabilir: e¸sitlik araması ve düzenli ifadeler2 kullanarak arama.
E¸sitlik aramaları arama dizisini e¸sittir i¸sareti (=) ile ön eklendirerek gösterilir. Örne˘gin, etiket:"=bilim" sorgusu
“bilim” ile e¸sle¸sir, ama “bilim kurgu” ile veya “zor bilim” ile e¸sle¸smez. 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¸saretlerinin çift tırnak içine alınması gerekti˘gini unutmayın, tek
tırnaklar sorgu ayrı¸stırması esnasında çıkarılır. Örne˘gin, gerçek bir parantezi e¸sle¸stirmek için \\( girmelisiniz. ˙Ifade
çapalar içermedi˘gi sürece düzenli ifade aramaları ‘içerir’ tipi aramalardır.
Sonunda e¸sittir veya tilde olan bir karakter dizisini aramanız gerekirse, karakter dizisinin ba¸sına bir ters bölü i¸sareti
koyun.
Karakter dizisi parantez veya bo¸sluk içeriyorsa arama karakter dizilerini tırnaklar ile kapatın (”). Örne˘gin, Bilim
Kurgu etiketini aramak için etiket:"=bilim kurgu" aramanız gerekir. etiket:=bilim kurgu s¸eklinde
ararsanız ‘bilim’ ile etiketli tüm kitapları ve metadata’sında ‘kurgu’ geçen tüm kitapları bulursunuz.
dü˘gmesi ile eri¸silen :guilabel:‘Geli¸smi¸s Arama Penceresi‘ni kullanarak kolaylıkla geli¸smi¸s arama sorguları
in¸sa edebilirsiniz.
Aramalar için kullanılabilir alanlar: etiket, ba¸
slı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ı¸ssa, 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¸slı˘gı üzerine
getirin.
Tarih için arama söz dizimi s¸u s¸ekildedir:
2 http://en.wikipedia.org/wiki/Regular_expression
3 https://docs.python.org/2/library/re.html
1.1. Grafik Kullanıcı Arayüzü
11
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
=
{}=
{}@default
=0=1=2=0=1=2pubdate:\PYGZgt{}2PYGZhy{}1 Will find all books published after Jan, 2 date:\PYGZlt{}=2PYG
Tarih belirsizse, tarih kar¸sıla¸stırması için mevcut yerel kullanılır. Örne˘gin mm/dd/yyyy yerelinde 2/1/2009 1 Sub
¸ 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˘gindeki
e¸slenikleri) da çalı¸sır. Ek olarak, günönce (yine çevrilebilir) tarihten belli bir gün öncesine kar¸sıla¸stırmada kullanılabilir. Örne˘gin:
=
{}=
{}@default
=0=1=2=0=1=2date:\PYGZgt{}1
date:\PYGZlt{}=45daysago
Çevrilen karakter dizileriyle ilgili olabilecek problemleri önlemek için, calibre’nin ˙Ingilizce olmayan bir sürümünü
kullanırken, _today, _yesterday, _thismonth, ve _daysago her zaman kullanılabilir tutulmu¸stur. Bunlar
çevrilmez.
Belirli boyutta biçimi olan kitaplar için aramayı s¸u s¸ekilde yapabilirsiniz:
=
{}=
{}@default
=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¸sittir), > (büyüktür), >= (büyük e¸sit), < (küçüktür), <= (küçük e¸sit), ve != (e¸sit de˘gildir)
ili¸ski operatörlerini destekler. Oylama alanları sayısal olarak ele alınır. Örne˘gin rating:>=3 araması 3 veya yukarı
oy almı¸s tüm kitapları bulur.
Etiketler gibi birden çok de˘gerli alanlardaki ö˘ge sayısı için arama yapabilirsiniz. Bu aramalar # karakteri ile ba¸slar,
ve sayısal alanlarla aynı söz dizimi ile devam eder. Örne˘gin, 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˘gin, #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¸skisel operatörleri
kullanabilirsiniz.
search özel alanı aramalar için ayrılmı¸stır. Yani bir aramayı “E¸simin kitapları” olarak kaydederseniz arama çubug˘ una search:"E¸
simin kitapları" yazarak kaydedilmi¸s aramayı tekrar kullanabilirsiniz. Aramaları kaydetmekten daha sonra daha çok bahsedilecek.
Bir alanın varlı˘gını ya da yoklu˘gunu özel “true” ve “false” de˘gerleriyle bulabilirsiniz. Örne˘gin:
=
{}=
{}@default
=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¸
s, veya ifadesiz aramaları sütunda belirtilmemi¸s de˘gerlere sahip tüm kitapları bulur. true araması sütunda belirtilmemi¸s de˘geri olmayan kitapların hepsini bulur. evet
veya i¸
saretli araması sütunda Evet olan tüm kitapları bulur. hayır veya i¸
saretlenmemi¸
s araması sütunda
12
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Hayır olan tüm kitapları bulur. evet, hayır, ifadesiz, bo¸
s, i¸
saretli ve i¸
saretlenmemi¸
s çevrilebilirdir; ˙Ingilizcelerini ya da mevcut dildeki e¸slenik kelimeleri kullanabilirsiniz. true ve false kelimeleri ve özel
de˘gerler _yes, _no, ve _empty çevrilmez.
Sıralı dizili ö˘geler (örn. A.B.C) sıralı dizimin ilk kısımlarını e¸sle¸stirmek için geni¸sletilmi¸s bir söz dizimi kullanırlar.
Bu da tam e¸sle¸sme operatörü (=) ile metin arasına bir nokta koyarak yapılır. Örne˘gin, 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¸sletilmi¸s söz dizimi kullanır. Önce, bir tanımlayıcının tür:de˘
ger
biçimi oldu˘gunu hatırlayın, isbn:123456789 gibi. Geni¸sletilmi¸s söz dizimi ba˘gımsız olarak hangi tür ve de˘geri
arayaca˘gınızı belirtmenize izin verir. Sorgunun hem tür hem de˘ger kısımları e¸sitlik, içerir, veya düzenli ifade e¸sle¸smelerini kullanabilir. Örne˘gin:
• 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˘gerini içeren kitapları arar.
• tanımlayıcılar:=123456789 herhangi türü 123456789 de˘gerine e¸sit kitapları arar.
• tanımlayıcılar:=isbn: ve tanımlayıcılar:isbn:true herhangi bir de˘ger alan isbn’e e¸sit türde
kitapları bulur
• tanımlayıcılar:=isbn:false isbn’e e¸sit türü olmayan tüm kitapları bulur.
• tanımlayıcılar:=isbn:123 isbn’i 123 içeren de˘gere e¸sit türde kitapları bulur.
• tanımlayıcılar:=isbn:=123456789 isbn’i ‘123456789‘a e¸sit de˘gere e¸sit türde tüm kitapları bulur.
• tanımlayıcılar:i:1 1 de˘geri içeren i içeren türdeki tüm kitapları arar.
Sekil
¸
1.1: Geli¸smi¸s Arama Penceresi
1.1. Grafik Kullanıcı Arayüzü
13
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
1.1.6 Aramaları kaydetmek
calibre sıkça kullanılan aramalarınızı özel bir isimle kaydedip tek tıkla tekrar ba˘glanmanızı sa˘glar. 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˘giniz ismi yazın. Kaydedilen aramalar kutusunun yanındaki artı simgesine tıklayarak
aramayı kaydedebilirsiniz.
Simdi
¸
Etiket Tarayıcıda “Aramalar” altında kayıtlı aramanıza kolaylıkla eri¸sebilirsiniz. Tek bir tık karma¸sık bir aramayı
kolaylıkla tekrar kullanmak için yeterli, tekrar olu¸sturmanıza gerek yok.
1.1.7 Sanal Kitaplıklar
Sanal Kitaplık calibre’nizin tam bir koleksiyon yerine bir kaç kitabı varmı¸s gibi davranmanın bir yoludur. Geni¸s kitap
koleksiyonunuzu daha küçük, yönetilebilir parçalara bölmenin mükemmeli bir yoludur bu. Sanal kitaplıkları nasıl
olu¸sturup yönetece˘ginizi ö˘grenmek için klavuza göz atın: Sanal Kitaplıklar (sayfa 228)
1.1.8 Metadata’nın dosya isimlerinden tahmini
Normally, calibre reads metadata from inside the book file. However, it can be configured to read metadata from the
file name instead, via Preferences->Adding Books->Read metadata from file contents.
You can also control how metadata is read from the filename using regular expressions (see All about using regular
expressions in calibre (sayfa 197)). In the Adding Books section of the configuration dialog, you can specify a regular
expression that calibre will use to try and guess metadata from the names of ebook files that you add to the library.
The default regular expression is:
=
{}=
{}@default
=0=1=2=0=1=2\PYG{n}{title} \PYG{o}{\PYGZhy{}} \PYG{n}{author}
that is, it assumes that all characters up to the first - are the title of the book and subsequent characters are the author
of the book. For example, the filename:
=
{}=
{}@default
=0=1=2=0=1=2Foundation and Earth \PYGZhy{} Isaac Asimov.txt
ba¸slık: Foundation and Earth ve yazar: Isaac Asimov olarak yorumlanır
Tüyo: If the filename does not contain the hyphen, the above regular expression will fail.
14
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.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
sa˘g alt kö¸sesindeki dü˘gme 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ı¸s yazar ismine sa˘g tıklayıp Bu yazarı yönet seçerek özelle¸stirilebilir.
Benzer s¸ekilde, kitap için metadata indirirseniz, Kitap detayları paneli otomatik olarak kitabın amazon, worldcat, vs.
gibi metadata’nın indirildi˘gi yerlerden ba˘glantılarını gösterir.
You can right click on individual ebook formats in the Book Details panel to delete them, compare them to their
original versions, save them to disk, open them with an external program, etc.
You can change the cover of the book by simply drag and dropping an image onto the book details panel. If you wish
to edit the cover image in an external program, simply right click on it and choose Open With.
You can also add ebook files to the current book by drag and dropping the files onto the book details panel.
Kitap detayları paneline çift tıklamak yeni ayrı bir pencerede açılmasına sebep olur.
1.1. Grafik Kullanıcı Arayüzü
15
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Son olarak, Kitap Detayları panelinde hangi bilgilerin görüntülenece˘gini Tercihler->Görünüm & Doku->Kitap Detayları altından özelle¸stirebilirsiniz.
1.1.10 Etiket Tarayıcı
Etiket Tarayıcı koleksiyonunuzu kolayca Yazar/Etiket/Seri/vs. ye göre kolayca taramanızı sa˘glar. Etiket Tarayıcıdaki
herhangi bir ö˘geye tıklarsanız, örne˘gin yazar ismi Isaac Asimov’a, sa˘gdaki kitap listesi bu yazara ait kitapları gösterecek s¸ekilde kısıtlanır. Kategori adlarına da tıklayabilirsiniz. Örne˘gin, “Serilere” tıklamak herhangi bir serideki tüm
kitapları gösterir.
Ö˘geye ilk tık listeyi ö˘geyle e¸sle¸sen ya da içeren kitapları gösterecek s¸ekilde kısıtlar. Yukarıdaki örne˘ge devam edersek,
Isaac Asimov’a tıklamak bu yazarın kitaplarını gösterir. Ö˘geye tekrar tıklamak ö˘genin alt ö˘geleri olup olmadı˘gına ba˘glı
olarak (a¸sa˘gıdaki alt kategoriler ve sıralı dizili ö˘gelere göz atın) gösterileni de˘gi¸stirir. Isaac Asimov örne˘ginden 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¸slarına basılı tutup birden çok ö˘geye tıklarsanız, birden
çok ö˘geyi temel alan kısıtlamalar olu¸sturulur. Örne˘gin Ctrl tu¸suna basılı tutup Tarih ve Avrupa etiketlerine basarak
Avrupa tarihiyle ilgili kitapları bulabilirsiniz. Etiket Tarayıcı Arama çubu˘guna otomatik olarak girilen arama ifadeleri
olu¸sturarak çalı¸sır. Etiket Tarayıcının ne üretti˘gine bakmak temel arama ifadelerini ö˘grenmek için iyi bir yöntemdir.
Etiket tarayıcıdaki ö˘gelerin simgeleri kısmen renklendirilir. Rengin miktarı kitapların o kategorideki ortalama oyuna
ba˘glıdır. Yani Isaac Asimov’a ait kitapların ortalama dört yıldızı varsa, Isaac Asimov’un Etiket Tarayıcıdaki simgesi
4/5 oranında renklendirilir. Farenizi simge üzerine getirerek ortalama oyu görebilirsiniz.
Etiket tarayıcıdaki dı¸s-seviye ö˘geler, örne˘gin Yazarlar ve Seriler, kategori olarak adlandırılır. Ö˘geleri organize etmek için kullanı¸slı olan ve Kullanıcı Kategorileri denen kendi kategorilerinizi olu¸sturabilirsiniz. Örne˘gin 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¸sturabilir, sık kullanılanlarınızdaki ö˘geleri bu
16
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
kategoriye koyabilirsiniz. Kullanıcı kategorilerinin alt kategorileri olabilir. Örne˘gin, 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˘g 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¸sturulabilir.
Kullanıcı kategorilerini dahili kategorilerle aynı s¸ekilde, üzerlerine tıklayarak arayabilirsiniz. Tıklamayla döngülenen dört de˘gi
1. “kategorideki ö˘geyle e¸sle¸sen her¸sey” tek ye¸sil bir artı i¸sareti ile gösterilir.
2. “kategori veya alt kategorideki ö˘geyle e¸sle¸sen her¸sey” iki ye¸sil artı i¸sareti ile gösterilir.
3. “kategorideki ö˘geyle e¸sle¸smeyen her¸sey” tek kırmızı bir eksi i¸sareti ile gösterilir.
4. “kategori veya alt kategorideki ö˘geyle e¸sle¸smeyen her¸sey” iki kırmızı eksi i¸sareti ile gösterilir.
Etiketler, seriler ve özel sütunlar gibi bazı metin kategorileri içinde sıralı diziler olu¸sturmak da mümkündür. Bu sıralı
diziler küçük üçgenler olarak görünür, alt ö˘gelerin gizlenmesine izin verirler. Bir kategoride ö˘gelerin sıralı dizisini
kullanmak için, önce Tercihler->Görünüm & Doku altına gitmeniz ve kategori isim(ler)ini “Sıralı dizi ö˘geli kategoriler” kutusuna yazmalısınız. Bu tamamlandıktan sonra, bu kategorideki nokta içeren ö˘geler küçük üçgen kullanarak
gösterilir. Örne˘gin, “Tür” adında özel bir sütun olu¸sturdu˘gunuzu ve sıralı dizi ö˘geleri içerdi˘gini belirtti˘ginizi dü¸sünelim. Artık Gizem.Gerilim ve Gizem.˙Ingilizce gibi ö˘geler yanında küçük üçgen olan Gizem ile gösterilir. Üçgene
tıklamak Gerilim ve ˙Ingilizce alt ö˘gelerini gösterir. Daha fazla bilgi için Kitapların alt gruplarını yönetme, örne˘gin
“tür” (sayfa 145) kısmına bakınız.
Sıralı dizi ö˘geler (alt ö˘gesi olanlar) kategorilerle aynı dört ‘üstüne tıklama’ aramalarını kullanırlar. Alt ö˘gesi olmayan
ö˘geler aramaların ikisini kullanırlar: “e¸sle¸sen her¸sey” ve “e¸sle¸smeyen her¸sey”.
Etiket tarayıcıdaki ö˘geleri kullanıcı kategorileri üzerine sürükle bırak yaparak o kategoriye ekleyebilirsiniz. Kaynak
bir kullanıcı kategorisi ise, sürüklerken shift tu¸suna basılı tutmak ö˘geyi yeni kategoriye ta¸sır. Ayrıca kitap listesinden
kitapları Etiket Tarayıcıya da sürükleyip bırakabilirsiniz; kitabı bir ö˘genin üstüne bırakmak bu ö˘genin bırakılan kitaba
uygulanmasına sebep olur. Örne˘gin, 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 ö˘geleri çabucak bulmanızı sa˘glayan bir arama çubu˘gu bulunur.
Ek olarak, herhangi bir ö˘geye sa˘g tıklayabilir ve çıkan bir çok seçene˘gi seçebilirsiniz. Bazı örnekler gizleme, adını
de˘gi¸stirme, veya o türdeki ö˘geleri yönetmenizi sa˘glayacak bir “x’yi Yönet” ileti¸sim penceresi açmak olabilir. Örne˘gin,
“Yazarları Yönet” penceresi yazarları yeniden isimlendirmenizi ve isimlerinin nasıl sıralanaca˘gını belirtmenizi sa˘glar.
Etiket Tarayıcının alt kısmındaki Etiket Tarayıcıyı De˘gi¸stir dü˘gmesi ile Etiket tarayıcıdaki ö˘gelerin nasıl sıralanaca˘gını
kontrol edebilirsiniz. ˙Isme göre, ortalama oya göre veya popülerli˘ge göre (popülerlik kitaplı˘gınızdaki o ö˘geden kitap
sayısıdır; örnein Isaac Asimov’un popüleritesi kitaplı˘gınzıda Isaac Asimov’un kaç kitabı bulundu˘gudur) sıralayabilirsiniz.
1.1. Grafik Kullanıcı Arayüzü
17
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
1.1.11 Kapak Izgarası
Koleksiyonunuzu kapaklarla gezmeyi tercih ederseniz calibre’nin bir kitap listesi yerine kitap kapa˘gı ızgarası göstermesini sa˘glayabilirsiniz. Kapak Izgarası calibre ana penceresinin sa˘g alt kö¸sesindeki ızgara dü˘gmesine tıklanarak
etkinle¸stirilir. Kapak boyutlarını ve kapak arkaplanını Tercihler->Görünüm & Doku->Kapak Izgarası ile özelle¸stirebilirsiniz. Hatta calibre’nin belirtilen herhangi alanı kapa˘gın altında göstermesini sa˘glayabilirsiniz, ba¸slık, yazar veya
oy oranı veya belirtti˘giniz özel bir sütun olabilir.
18
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.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˘g alt kö¸sesindeki bir dü˘gme ile etkinle¸stirilir. Tercihler->Görünüm & Doku->Kapak Tarayıcı içinde görüntülenen
kapak sayısını de˘gi¸stirebilir, hatta kapak tarayıcının kendisini ayrı bir pencerede göstermesini sa˘glayabilirsiniz.
1.1.13 Hızlıgörünüm
Bazen bir kitabı seçtikten sonra kategoride o kitapla aynı de˘gere sahip (yazarlar, etiketler, editör, seriler, vs) di˘ger kitapları mevcut görünümü de˘gi¸stirmeden görüntülemek istersiniz. Bunu Hızlıgörünüm ile yapabilirsiniz. Hızlıgörünüm
ilgilenilen de˘gerlerle e¸sle¸sen kitapları listeleyen ikinci bir pencere açar.
Örne˘gin, o an seçili kitapla aynı yazara sahip kitapları listelemek istedi˘ginizi varsayalım. ˙Ilgilendi˘giniz yazar hücresine
tıklayın ve ‘Q’ tu¸suna basın. Bu kitabın tüm yazarlarını sol tarafta, ve seçilen yazara ait tüm kitapları sa˘gda gösteren
bir pencere açılır.
Bazı örnek Hızlıgörünüm kullanımları: di˘ger kitaplarla ilgili hızlıca bilgi almak için:
• seçili kitaba uygulanmı¸s herhangi bir etiketi olan,
• mevcut kitapla aynı seride olan
• bir özel sütunda mevcut kitapla aynı de˘gerlere sahip olan
• mevcut kitaptaki yazarların biriyle yazılmı¸s olan
kitaplık görünümünün içeri˘gi 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˘gin, 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˘gi seçili kitap için bu kategorideki
ö˘geleri sol taraftaki panelde gösterecek s¸ekilde de˘gi¸sir (örn., bu kitap için etiketler). Bu listedeki ilk ö˘ge seçilecektir,
ve Hızlıgörünüm panelin sa˘g tarafında bu ö˘geye referans veren tüm kitapları gösterecektir. Sol taraftaki panelde farklı
bir ö˘geye tıklayarak bu di˘ger ö˘geye 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) ö˘ge gösterimini de seçilen yeni kitaptaki ö˘geleri gösterecek s¸ekilde
de˘gi¸stirir.
1.1. Grafik Kullanıcı Arayüzü
19
calibre Kullanıcı Kılavuzu, Sürüm 2.24.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˘gini farenizi sütun ba¸slı˘gı üstüne getirip bu ba¸slık için açılan
araç ipucuna bakarak görebilirsiniz. Ayrıca sütun ba¸slı˘gına sa˘g tıklayarak “Hızlıgörünüm” seçene˘ginin menüde gösterilip gösterilmedi˘gine de bakabilirsiniz, bu durumda Hızlıgörünüm seçene˘gini seçmek mevcut hücrede ‘Q’ tu¸slamakla
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ı¸san görevlerin sayısını gösterir. Görevler ayrı bir süreçte çalı¸san i¸slerdir. E-kitapların dönü¸stürülmesi ve okuyucu cihazınızla ileti¸sim gibi i¸sleri içerirler. Görevler paneline tıklayarak görev listesine eri¸sebilirsiniz.
Bir görev tamamlandı˘gında bu göreve ait detaylı bir kaydı listede çift tıklayarak görebilirsiniz. Bu ba¸sarıyla sonlanmamı¸s 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˘giniz zaman), ve bir ço˘gu seçili olan ba¸slı˘gı
etkiler. Calibre e-kitap görüntüleyicinin kendi kısayolları vardır ve görüntüleyicideki Tercihler dü˘gmesine basarak
özelle¸stirilebilirler.
Not: Not: Calibre klavye kısayollarının özellikle belirtilmedi˘gi sürece bir de˘gi¸stirici tu¸sa ihtiyacı yoktur (Komut,
Seçenek, Kontrol, vs.). Yalnızca harf tu¸suna 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
Alt+V/OS X’de Cmd+V
Alt+Shift+J
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ü¸stür
Cihaza gönder
Seçili kitapları sil
Seçili kitapların metadata’sını düzenle
Kitapları Al
Kitap detaylarını göster
˙Içindekileri Düzenle
Seçili kayıtları birle¸stir
Seçili kayıtları birle¸stir, asıllarını koru
˙Içeren dizini aç
Kitapları cilala
Diske Kaydet
Kitabı Düzenle
Görünüm
Belli bir formatı görüntüle
Görev listesini tetikle
Devamı so
20
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Klavye Kısayolu
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˘guna odaklan
Esc
Shift+Esc
Ctrl+Esc
Alt+Esc
Ctrl+*
N veya F3
Shift+N veya Shift+F3
Ctrl+D
Ctrl+R
Ctrl+Shift+R
Shift+Ctrl+E
Q
Shift+Q
Shift+S
Ctrl+Q
Tablo 1.1 – önceki sayfadan devam
Eylem
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˘guna odaklan
Geli¸smi¸s arama penceresini aç
Mevcut aramayı temizle
Kitap listesine odaklan
Sanal kitaplı˘gı temizle
Ek kısıtlamaları temizle
Mevcut aramayı temel alan bir geçici sanal kitaplık olu¸stur
Mevcut aramayla e¸sle¸sen sonraki kitabı bul (yalnızca arama çubu˘gu yanındaki vurgulama kutusu i¸sa
Mevcut aramayla e¸sle¸sen sonraki kitabı bul (yalnızca arama çubu˘gu yanındaki vurgulama kutusu i¸sa
Metadata ve kısayolları indir
Calibre’yi yeniden ba¸slatın
Calibre’yi hata ayıklama kipinde yeniden ba¸slat
Calibre’ye bo¸s kitaplar ekle
Open the Quick View popup for viewing books in related series/tags/etc.
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ıgınız
haber sitesini ekleme
calibre’nin internetten haberleri indiren ve e-kitaba dönü¸stüren esnek ve güçlü, kolay kullanılabilir bir uygulama iskeleti varıdr. A¸sa˘gıda size örnekler vasıtasıyla çe¸sitli web sitelerinden haberleri nasıl alabilece˘ginizi gösterece˘giz.
Uygulama çatısını nasıl kullanaca˘gınızı anlamak için, örnekleri a¸sa˘gıda listelenen sırada takip edin:
• Tamamı otomatik alınıyor (sayfa 122)
– Calibre blog (sayfa 122)
– bbc.co.uk (sayfa 123)
• Getirme i¸sleminin özelle¸stirilmesi (sayfa 123)
– bbc.co.uk nin yazdırma sürümünün kullanılması (sayfa 123)
– Makale biçemlerinin de˘gi¸stirilmesi (sayfa 124)
– Parçalama (sayfa 125)
– Gerçek dünya örne˘gi (sayfa 132)
• Yeni reçeteler geli¸stirmek için ipuçları (sayfa 134)
• ˙Ileri okuma (sayfa 135)
• API belgelendirmesi (sayfa 135)
˘
1.2. Sık kullandıgınız
haber sitesini ekleme
21
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
1.2.1 Tamamı otomatik alınıyor
Haber kayna˘gınız yeterince basitse, calibre tamamen otomatik olarak getirebilir olabilir, tek yapmanız gereken URL’yi
sa˘glamaktır. calibre haber kayna˘gını bir recipe ye indirmek için gerekli tüm bilgiyi toparlar. calibre’ye bir haber kayna˘gından bahsetmek için bu haber kayna˘gı için bir recipe olu¸sturmalısınız. Biraz örnek görelim:
Calibre blog
Calibre blogu yeni calibre kullanıcılarına calibre’nin bir çok kullanı¸slı özelli˘gini basit ve eri¸silebilir s¸ekilde sunan blog
girdileri içerir. Bu blogu bir e-kitap olarak indirmek için blogun RSS beslemesine güveniyoruz:
=
{}=
{}@default
=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ü¸stürmesini sa˘glamak için önce Haberleri getir dü˘gmesine sa˘g tıklamanız sonra Özel
haber kayna˘gı ekle menü ö˘gesine tıklamanız, sonra da Yeni Reçete dü˘gmesine tıklamanız gerekli. A¸sa˘gıda gösterilen
benzeri bir ileti¸sim penceresi açılacaktır.
Önce Reçete ba¸slı˘gı alanın calibre Blog girin. Yukardaki beslemelerden olu¸sturulacak e-kitabın ba¸slı˘gı bu olacak.
22
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Sonraki iki alan (En eski makale ve :guilabel:‘Azami makale sayısı ‘) her beslemeden kaç makale indirilece˘gi konusunu kontrol etmenize izin verir, zaten ne oldukları epey açık.
Beslemeleri reçeteye eklemek için, besleme ba¸slı˘gı ve besleme URL’sini girin ve Besleme ekle dü˘gmesine tıklayın.
Besleme eklendikten sonra basitçe Kaydet dü˘gmesine tıklayın, hepsi bu kadar. ˙Ileti¸sim penceresini kapatın.
Yeni reçete‘nizi test etmek için :guilabel:‘Haberleri getir dü˘gmesine tıklayın ve Özel haber kayna˘gı alt menüsünde
calibre Blog tıklayın. Bir kaç dakika sonra blog gönderilerinden olu¸san yeni indirilmi¸s e-kitap ana kitaplık görünümünde görünecektir (okuyucunuz ba˘glıysa, kitaplık yerine okuyucuya konacaktır). Okumak için seçim yaptıktan sonra
Görüntüle dü˘gmesine tıklayın!
Bu i¸slemin çok iyi çalı¸smasının sebebi blogun tam-içerikli RSS beslemeleri içermesiydi, örn., makale içeri˘gi beslemenin içine gömülmü¸stü. Haberleri bu s¸ekilde sa˘glayan ço˘gu haber kayna˘gı için, yani tam-içerikli beslemeyle, e-kitaba
dönü¸stürmek için ek bir çaba harcamanıza gerek kalmaz. Simdi
¸
tam içerikli besleme sa˘glamayan bir haber kayna˘gına
bakaca˘gı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˘glantı içerir.
bbc.co.uk
The BBC den s¸u iki beslemeyi deneyelim:
1. Haber Ön Sayfası: http://newsrss.bbc.co.uk/rss/newsonline_world_edition/front_page/rss.xml
2. Bilim/Do˘ga: http://newsrss.bbc.co.uk/rss/newsonline_world_edition/science/nature/rss.xml
Yukarda Calibre blog (sayfa 122) da gösterilen yöntemi takip edip bir The BBC reçetesi olu¸suturun (yukardaki beslemeleri kullanarak). ˙Indirilen e-kitaba bakarak calibre’nin her makalenin web sayfasından sadece önemseyece˘giniz
içeri˘gi çıkararak epey iyi bir i¸s yaptı˘gını görebiliriz. Fakat çıkartma i¸slemi hatasız de˘gildir. Bazen arkasında menü ve
gezinti ö˘geleri bırakır, veya makale ba¸slıkları gibi çıkarılmaması gereken kısımları çıkarır. Mükemmel içerik çıkarmayı ba¸sarmak için, getirme sürecini sıradaki bölümde oldu˘gu gibi özelle¸stirmemiz gerekir.
1.2.2 Getirme isleminin
¸
özellestirilmesi
¸
˙Indirme i¸slemini mükemmelle¸stirmeye, ya da karma¸sık bir siteden içerik indirmeye çalı¸sırken reçete yazılım çatısının
tüm güç ve esnekli˘gini kullanabilirsiniz. Bunun için Özel haber kayna˘gı ekle ileti¸sim penceresinde Geli¸smi¸s Kipe geç
dü˘gmesine tıklamanız yeterli.
En kolay ve ço˘gunlukla en üretken özelle¸stirme çevrimiçi makalelerin yazdırma sürümlerinin kullanılmasıdır. Yazdırma sürümü genel olarak çok daha az gereksiz s¸ey bırakır ve e-kitaba çok daha pürüzsüz dönü¸stürülebilir. The BBC
deki makalelerin yazdırma sürümlerini kullanmaya çalı¸salım.
bbc.co.uk nin yazdırma sürümünün kullanılması
˙Ilk adım daha önce :ref:‘bbc‘den indirdi˘gimiz e-kitaba bakmaktır. Her makalenin sonunda, makalenin nerden indirildi˘gini söyleyen küçük bir bölüm vardır. Bu URL’yi kopyalayıp tarayıcıya yapı¸stırın. Simdi
¸
makale web sayfasında
“Yazdırılabilir sürüm”ü gösteren bir ba˘glantı 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! Simdi
¸
iki URL’yi kar¸sıla¸stırın. Benim için sonuç s¸ö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 s¸u ön ek gelmeli:
newsvote.bbc.co.uk/mpapps/pagetools/print/
˘
1.2. Sık kullandıgınız
haber sitesini ekleme
23
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Simdi
¸
Özel haber kayna˘gı ileti¸sim penceresindeki :guilabel:‘Geli¸smi¸s Kip‘de s¸unun gibi bir s¸ey görmelisiniz (geli¸smi¸s
kipe geçmeden The BBC reçetesini seçmeyi unutmayın):
Gördü˘günüz gibi :guilabel:‘Temel kip‘deki alanlar anla¸sılır s¸ekilde python koduna çevrildi. Bu reçeteye makalelerin
yazdırma sürümünü kullanmasını sa˘glayacak yönergeler yazmalıyız. Gereken tek s¸ey a¸sa˘gıdaki iki satırı eklemek:
=
{}=
{}@default
=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
Bu python, yani girintileme önemli. Satırları ekledikten sonra s¸öyle görünmeli:
Yukarıdaki def print_version(self, url) calibre tarafından her makale için ça˘grılan bir *metod*u tanımlar. url asıl makalenin URL’sidir. print_version un yaptı˘gı bu URL’yi alıp makalenin yazdırılabilir sürümünü
gösteren URL ile de˘gi¸stirmektir. Python <https://www.python.org> hakkında bilgi için tanıtıma4 göz atın.
Simdi
¸
Reçete ekle/güncelle dü˘gmesine tıkladı˘gınızda de˘gi¸siklikleriniz kaydedilecek. Çok daha geli¸smi¸s 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ü¸stürme yapıldı˘gı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¸stirme yapaca˘gız.
˘ stirilmesi
Makale biçemlerinin degi
¸
Önce bölümde, The BBC nin yazdırılabilir sürümündeki yazı tipi boyutunun çok küçük oldu˘gunu gördük. Bir çok
web sitesinde, The BBC dahil, bu yazı tipi CSS stil sayfaları ile ayarlanır. Su
¸ satırı ekleyerek bu gibi stil sayfalarının
getirilmesini engelleyebiliriz:
4 https://docs.python.org/2/tutorial/
24
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
=
{}=
{}@default
=0=1=2=0=1=2\PYG{n}{no\PYGZus{}stylesheets} \PYG{o}{=} \PYG{n+nb+bp}{True}
Tarifi s¸imdi gibi görünüyor:
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˘gin de˘gi¸stirilmesiyle 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 125) reçetesine tekrar bakalım. Bir kaç makalenin (yazdırılabilir sürüm)
kayna koduna (HTML) baktı˘gımızda i¸se yarar bir içeri˘gi olmayan alt bilgileri oldu˘gunu görürüz
=
{}=
{}@default
=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 s¸u eklenebilir:
=
{}=
{}@default
=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ı˘gımız :term:‘CSS‘in bir kısmını e-kitaba dönü¸stürmeye daha uygun olan
kendi :term:‘CSS‘imizle de˘gi¸stirelim:
=
{}=
{}@default
=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¸sa˘gıda gösterilen asıl
reçeteye de oldukça yakla¸stı:
# # **** 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 **** #
˘
1.2. Sık kullandıgınız
haber sitesini ekleme
25
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
# 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'
# 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
26
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
'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
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.
˘
1.2. Sık kullandıgınız
haber sitesini ekleme
27
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
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')
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$'
28
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
# 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.*$'
# 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',
˘
1.2. Sık kullandıgınız
haber sitesini ekleme
29
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
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
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
30
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
# End of class and file.
˘
1.2. Sık kullandıgınız
haber sitesini ekleme
31
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Bu reçete calibre’nin gücüyle ilgili buz da˘gının yalnızca görünen kısmını ke¸sfediyor. Calibre’nin yeteneklerinin daha
fazlasını ke¸sfetmek için sonraki kısımda daha karma¸sık bir gerçek dünyadan örne˘ge göz ataca˘gız.
˘
Gerçek dünya örnegi
BasicNewsRecipe :term:‘API‘sini daha çok ke¸sfeden nispeten karma¸sık bir gerçek dünya örne˘gi The New York
Times :term:‘reçete‘sidir
=
{}=
{}@default
=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}{)}
32
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.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:
=
{}=
{}@default
=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¸sturulan e-kitabın ön sayfasında gösterilen zamanı Gün, Ay, Yıl biçiminde ayarlar. Ayrıca bakınız
timefmt (sayfa 315).
Sonra indirilen :term:‘HTML‘in temizlenmesi için bir grup yönerge görüyoruz:
=
{}=
{}@default
=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¸seyi ve footer id’li ilk etiketten sonraki her¸seyi kaldırır. Ayrıca bakınız
remove_tags (sayfa 314), remove_tags_before (sayfa 315), remove_tags_after (sayfa 314).
Sonraki dikkat çekici özellik:
=
{}=
{}@default
˘
1.2. Sık kullandıgınız
haber sitesini ekleme
33
calibre Kullanıcı Kılavuzu, Sürüm 2.24.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˘ge eri¸smek için bir kullanıcı adı ve parolaya ihtiyaç duydu˘gunu söyler. Bu da bu reçeteye her eri¸smek istedi˘ginizde calibre’nin kullanıcı ve parola sormasını sa˘glar.
calibre.web.feeds.news.BasicNewsRecipe.get_browser() (sayfa 307) içindeki kod NYT sitesine
giri¸s i¸slemini gerçekle¸stirir. Giri¸s yapıldıktan sonra, calibre içeri˘gi getirmek için aynı, giri¸s yapılmı¸s tarayıcı örne˘gini
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 309) metodudur. Görevi http://www.nytimes.com/pages/todayspaper/index.html adresine gidip *bugün*e ait makale listesini
getirmektir. Do˘grudan RSS kullanmaktan karma¸sık olsa da, reçete o günün sayfasına çok yakın bir e-kitap olu¸sturur. parse_index günlük gazete web sayfasını ayrı¸stırmak için yo˘gun olarak BeautifulSoup6 kullanır. BeautifulSoup’dan ho¸slanmıyorsanız di˘ger daha modern ayrı¸stırıcıları da kullanabilirsiniz. calibre önerilen ayrı¸stırıcılar olan
lxml7 ve html5lib8 ile gelir. Kullanmak için index_to_soup() ça˘grısını s¸u s¸ekilde de˘gi¸stirin:
=
{}=
{}@default
=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 309) metodudur. ˙Indirilen her HTML sayfasında keyfi dönü¸stürmeler yapmak için kullanılabilir. Burada nytimes’ın her makaleden önce gösterdi˘gi reklamları geçmek için kullanılıyor.
1.2.3 Yeni reçeteler gelistirmek
¸
için ipuçları
Yeni reçete geli¸stirmek için en iyi yöntem komut satırı arayüzünü kullanmaktır. Reçeteyi favori python metin düzenleyicinizle olu¸sturun ve recetem.recipe gibi bir dosyaya kaydedin. .recipe son eki gereklidir. Bu reçeteyi
kullanarak içerik indirmek için s¸u komutu kullanabilirsiniz:
=
{}=
{}@default
=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ı˘gı i¸sle ilgili bir sürü bilgi dökmesini sa˘glar. --test en fazla iki beslemeden bir kaç makale
indirmesini sa˘glar. Ek olarak ebook-convert indirilen HTML’yi debug/input dizinine koyar, burada debug
--debug-pipeline seçene˘gi ile belirtti˘giniz dizindir.
˙Indirme tamamlandı˘gında, indirilen HTML‘ye :file:‘debug/input/index.html dosyasını bir tarayıcı ile açarak bakabilirsiniz. ˙Indirme ve ön i¸slemenin düzgün yapıldı˘gını dü¸sündü˘günüzde, a¸sa˘gıda gösterildi˘gi gibi de˘gi¸sik biçimlerde
e-kitaplar üretebilirsiniz:
5 http://wwwsearch.sourceforge.net/mechanize/
6 http://www.crummy.com/software/BeautifulSoup/documentation.html
7 http://lxml.de/
8 https://github.com/html5lib/html5lib-python
34
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
=
{}=
{}@default
=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¸sik reçeteler içinde bir yeri hak etti˘gini dü¸sünüyorsanız, reçeteniz di˘ger calibre
kullanıcıları ile payla¸smak için calibre reçeteleri forumu9 na yollayın.
Not:
OS
X
üzerinde,
komut
satırı
araçları
calibre
ile
birlikte
gelmektedir,
örne˘gin,
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.:
generated/en/ebook-convert Tüm e-kitap dönü¸stürmeleri için komut satırı arayüzü.
1.2.4 ˙Ileri okuma
BasicNewsRecipe ile kullanılabilir olan olanakları kullanarak geli¸smi¸s reçeteler yazmakla ilgili daha fazla s¸ey
ö˘grenmek istiyorsanız a¸sa˘gıdaki kaynaklara ba¸svurabilirsiniz:
API Belgeleri (sayfa 306) BasicNewsRecipe sınıfı ve tüm önemli metod ve alanlarının belgeleri.
BasicNewsRecipe10 BasicNewsRecipe kaynak kodu
Yerle¸sik reçeteler11 Calibre ile gelen yerle¸sik reçetelerin kaynak kodları
Calibre reçete forumu12 Bir çok bilgili calibre reçete geli¸stiricisi orada takılır.
1.2.5 API belgelendirmesi
Reçeteler için API Belgeleri
Reçete yazmaya yarayan API BasicNewsRecipe (sayfa 306) ile tanımlanmı¸stır
class calibre.web.feeds.news.BasicNewsRecipe(options, log, progress_reporter)
Tüm reçeteler için gerekli mantı˘gı içeren temel sınıf. Bu sınıf içindeki fonksiyonları kademeli olarak ezerek kademeli olarak daha özelle¸stirilmi¸s/güçlü reçeteler olu¸sturabilirsiniz. Reçete olu¸sturmakla ilgili bir giri¸s kılavuzu
için s¸uraya bakınız, Sık kullandı˘gınız haber sitesini ekleme (sayfa 121).
abort_article(msg=None)
Call this method inside any of the preprocess methods to abort the download for the current article. Useful
to skip articles that contain inappropriate content, such as pure video articles.
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.
add_toc_thumbnail(article, src)
Bunu populate_article_metadata’dan makaledeki <img> etiketinin ˙Içindekiler bölümünde makaleyi temsil
etmeye uygun küçük resim için src özniteli˘gi ile ça˘gırın. Küçük resmin gerçekten kullanılıp kullanılmayaca˘gı aygıta ba˘glıdır (¸simdilik sadece Kindle’larda kullanılır). Referans verilen resmin ba¸sarılı s¸ekilde
indirilmi¸s olmasına dikkat edin, aksi takdirde yoksayılacaktır.
9 http://www.mobileread.com/forums/forumdisplay.php?f=228
˘
1.2. Sık kullandıgınız
haber sitesini ekleme
35
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
classmethod adeify_images(soup)
Reçeteniz EPUB’a dönü¸stürüldü˘günde ve Adobe Digital Editions ile görüntülendi˘ginde resimlerle ilgili
sorun ya¸sıyorsa bu metodu postprocess_html() (sayfa 309) içinden ça˘gırın.
cleanup()
Tüm makaleler indirildikten sonra ça˘grılır. Aboneli sitelerden çıkı¸s yapmak gibi temizlik i¸slerini yapmak
için kullanın.
clone_browser(br)
Tarayıcıyı co˘galt. Ço˘galtılmı¸s tarayıcılar çok i¸s parçacıklı indirmeler yapmak için kullanılır, çünkü mechanize i¸s parçacı˘gı güvenli de˘gildir. Varsayılan ço˘galtma rutinleri ço˘gu tarayıcı özelle¸stirmesini yakalıyor
olmalıdır, ancak reçetenizde egzotik bir s¸eyler yaparsanız, reçetenizde bu metodu ezmeli ve elle ço˘galtma
yapmalısınız.
Ço˘galtılmı¸s tarayıcı örnekleri çerez yönetiminde özelle¸stirme yapmadıysanız varsayılan olarak aynı, i¸s
parçacı˘gı güvenli CookieJar’ı kullanır.
default_cover(cover_file)
Kapa˘gı olmayan reçeteler için genel bir kapak olu¸stur
download()
Bu reçetedeki beslemelerden makaleleri indir ve ön i¸sleme yap. Bu metod her Reçete örne˘gi için yalnızca
bir kere ça˘grılmalıdır. Birden fazla ça˘gırmak tanımlanmayan davranı¸slara yol açar. :return: index.html yolu
extract_readable_article(html, url)
‘html’den ana makale içeri˘gini 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˘gine i¸saret 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ı¸stırılmı¸s makaleyi temsil eden ‘article ile ça˘grılır. feedparser
<https://pythonhosted.org/feedparser/>‘_a göz atın. Varsayılan olarak asıl ba˘glantıya bakar (feedburner
veya pheedo gibi bir servis tarafından e¸slenen 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˘gi 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˘gi döndürür.
Reçeteniz önce giri¸s yapmanızı gerektiriyorsa, alt sınıfınızda bu metodu ezin. Örne˘gin, New York Times
reçetesinde kullanılan a¸sa˘gıdaki kod tam eri¸sim için giri¸s yapar:
=
{}=
{}@default
=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˘gına URL ya da None döndür. Varsayılan olarak normalde None olan self.cover_url ö˘gesi13 https://pythonhosted.org/feedparser/reference-entry-link.html
14 http://wwwsearch.sourceforge.net/mechanize/
36
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
nin de˘gerini 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˘gırmadan önce üye de˘gi¸sken ‘self.cover_url‘yi ayarlayın.
get_feeds()
Bu profil için getirilecek RSS beslemeleri listesini döndürür. Listenin her elemanı (ba¸slık, url) biçiminde
2 elemanlı demet s¸eklinde olmalıdır. Ba¸slık None veya bo¸s karakter dizisi ise, beslemedeki ba¸slık kullanılır. Bu method reçetenizin indirilecek besleme listesini anlamak için bir miktar i¸slem yapması gereken
durumlarda faydalıdır. Durum böyleyse, kendi alt sınıfınızda ezin.
get_masthead_title()
Reçete ba¸slı˘gından ba¸ska bir s¸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˘geri None
olan self.masthead_url üyesinin de˘gerini 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˘gırmadan üye de˘gi¸sken ‘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˘grılır. Dosya sisteminde makale
HTML’sini içeren bir dosyaya yol döndürmelidir. Bu dosya yinelemeli HTML motoruyla i¸slenir, yani
web’deki sayfalara ba˘glantılar/resimler içerebilir.
Bu metod makale içeri˘gine otomatik olarak eri¸smeyi zorla¸stırmaya çalı¸san siteler için faydalı olabilir.
classmethod image_url_processor(baseurl, url)
Resim url’lerinde bir takım i¸slemler yap (dinamik üretilen resimler için boyut kısıtlamalarının kaldırılması,
vs.) ve i¸slenmi¸s 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ı¸s halini döndüren bir kolayla¸stırıcı araç.
url_or_raw: Bir URL ya da karakter dizisi olarak indirilmi¸s dizin sayfası
is_link_wanted(url, tag)
Ba˘glantı 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˘gi Etiket
javascript_login(browser, username, password)
Bu metod giri¸s formu olarak javascript kullanan web sitesine giri¸s için kullanılır. Giri¸s tamamlandı˘gında,
web sayfasından dönen çerezler normal bir (javascript olmayan) tarayıcıya kopyalanır ve indirme i¸slemi
bu çerezler kullanılarak devam eder.
Örnek bir uygulama:
=
{}=
{}@default
=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
15 http://www.crummy.com/software/BeautifulSoup/bs3/documentation.html
˘
1.2. Sık kullandıgınız
haber sitesini ekleme
37
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
CSS2 seçicileri olan formları da s¸u s¸ekilde seçebilirsiniz:
=
{}=
{}@default
=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 307) tarafından döndürülen beslemelerden makale listeleri
olu¸sturur. Feed nesnesi listesi döndürür.
parse_index()
Bu metod makale listeleri yerine web sayfalarını ayrı¸stı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 308) yerine tercih edilir.
Bir liste döndürmelidir. Listenin her elemanı (’besleme ba¸
slı˘
gı’, makale listesi) biçiminde 2 elemanlı demet olmalıdır.
Her makale listesi s¸u biçimde sözlük içermelidir:
=
{}=
{}@default
=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¸slemeyi durdurmak ve calibre’nin kullanıcıya hata yerine basit bir ileti göstermesini
isterseniz, abort_recipe_processing() (sayfa 306) metodunu ça˘gırın.
populate_article_metadata(article, soup, first)
Makaleye ba˘glı her HTML sayfası indirildi˘ginde ça˘grılır. Ayrı¸stırılmı¸s HTML’den (soup) yazar/özet/vs
gibi makale metadata’sı alırken kullanmak amaçlıdır. :param article: calibre.web.feeds.Article
sınıfı bir nesne. Özeti de˘gi¸stirirseniz text_summary de˘gi¸stirmeyi de unutmayın :param soup: Bu makaleye
ait ayrı¸stırılmı¸s HTML :param first: Ayrı¸stırılmı¸s HTML makalenin ilk sayfasıysa True.
postprocess_book(oeb, opts, log)
˙Indirilmi¸s e-kitap üstünde gerekli tüm art i¸slemleri çalı¸stır.
Parametreler
• oeb – OEBBook nesnesi
• opts – Dönü¸stürme seçenekleri
postprocess_html(soup, first_fetch)
Bu metod indirilen her bir HTML dosyası kayna˘gı ile, ba˘glantılar ve resimler için ayrı¸stırıldıktan sonra
ça˘grılır. HTML üzerinde keyfi, güçlü, i¸sleme sonrası i¸slemler yapmak için kullanılabilir. ˙I¸sledikten sonra
soup döndürmelidir.
38
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Parametreler
˙Indirilen
• soup
–
:term:‘HTML‘yi
içeren
bir
‘BeautifulSoup
<http://www.crummy.com/software/BeautifulSoup/bs3/documentation.html>‘_
örne˘gi.
• first_fetch – Bu sayfa makalenin ilk sayfasıysa True.
preprocess_html(soup)
Bu metod indirilen her bir HTML dosyası kayna˘gı ile, ba˘glantılar ve resimler için ayrı¸stırılmadan önce
ça˘grılır. remote_tags vs. de tanımlandı˘gı gibi temizlik yapıldıktan sonra ça˘grılır. HTML üzerinde keyfi,
güçlü i¸sleme öncesi i¸slemler yapmak için kullanılabilir. ˙I¸slemden sonra soup döndürmelidir.
soup: ˙Indirilen :term:‘HTML‘yi içeren bir ‘BeautifulSoup <http://www.crummy.com/software/BeautifulSoup/bs3/docu
örne˘gi.
preprocess_raw_html(raw_html, url)
Bu metod indirilen her bir HTML dosyası kayna˘gı ile, bir nesne a˘gacına ayrı¸stırılmadan önce ça˘grılır.
raw_html web’den indirilen ham HTML’nin evrensel kodda karakter dizisi temsilidir. url HTML’nin indirildi˘gi URL’dir.
Bu metodun preprocess_regexps’den önce hareket etti˘gini unutmayın.
Bu metod i¸slenmi¸s raw_html’yi evrensel kod nesnesi olarak döndürmelidir.
classmethod print_version(url)
Makale içeri˘gi 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 s¸ey yapmaz. Örne˘gin:
=
{}=
{}@default
=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˘gı ile, remove_tags, keep_only_tags gibi herhangi bir temizlik özniteli˘gi uygulanmadan önce ça˘grılır. preprocess_regexps’in zaten uygulanmı¸s olaca˘gını unutmayın. Reçetenin reklam sayfalarını atlamasına olanak tanımak için dü¸sünülmü¸stür. E˘ger soup bir reklam
sayfasını temsil ederse, gerçek sayfanın HTML’sini döndür. Aksi halde None döndür.
soup: ˙Indirilen :term:‘HTML‘yi içeren bir ‘BeautifulSoup <http://www.crummy.com/software/BeautifulSoup/bs3/docu
örne˘gi.
sort_index_by(index, weights)
index‘deki ba¸slıkları ‘weights‘e göre sıralamaya yarayan kolaylık sa˘glayıcı metod. ‘index yerinde sıralanır.
index döndürür.
index: Ba¸slık listesi.
weights: A˘gırlıkları ba¸slı˘ga haritalayan bir sözlük. Index’deki herhangi bir ba¸slık a˘gırlıklı olmazsa, 0 a˘gırlıklı oldu˘gu 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˘glayıcı bir metod. Muhtemelen bo¸s bir evrensel kod metni döndürür.
use_alt: True ise metinsel içeri˘gi olmayan etiketler için alt öznitelik kullanmaya çalı¸s
tag: BeautifulSoup17 Etiketi
16 http://www.crummy.com/software/BeautifulSoup/bs3/documentation.html
17 http://www.crummy.com/software/BeautifulSoup/bs3/documentation.html
˘
1.2. Sık kullandıgınız
haber sitesini ekleme
39
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
articles_are_obfuscated= False
˙Içerik almasını zorla¸stıran web sitelerini i¸slemek için
get_obfuscated_article() (sayfa 308) metodunu uygulayın.
True
olarak
ayarlayın
ve
auto_cleanup= False
˙Indirilmi¸s makale sayfalarından tüm metni otomatik olarak çıkart. Okunabilirlik projesinden algoritmalar kullanır. True olarak ayarlamak, indirilmi¸s HTML’yi temizlemekle elle u˘gra¸smanıza gerek olmadı˘gı
anlamına gelir (Elle temizlik daha üstündür tabi).
auto_cleanup_keep= None
Otomatik temizleme algoritmasının asla kaldırmaması gereken ö˘geleri belirtin. Söz dizim XPath ifadesidir.
Örne˘gin:
=
{}=
{}@default
=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˘gu ortada hizalanır, yoksa sola hizalanır
compress_news_images= False
Tüm ölçekleme ve sıkı¸stırma parametrelerini göz ardı edip resimleri de˘gi¸stirmeden geçirmek için False
olarak ayarlayın. True ise ve di˘ger sıkı¸stırma parametreleri varsayılan ayarlarında bırakılırsa, jpeg resimler
çıktı profilinde ayarlanmı¸s ekran boyutlarına sı˘gması için ölçeklenir ve w x h ölçeklenmi¸s resim boyutları
olmak üzere en fazla (w * h)/16 boyutuna sıkı¸stırılır.
compress_news_images_auto_size= 16
Jpeg resimleri otomatik sıkı¸stırmada kullanılan etmen. None olarak ayarlanırsa, otomatik sıkı¸stırma kapatılır. Aksi halde, resimler kalite seviyesi dü¸sü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˘glayan
compress_news_images_max_size parametresi ile ezilebilir. scale_news_images_to_device’ı etkinle¸stirirseniz resim önce ölçeklenir ardından kalitesi boyutu w ve h ölçeklenmi¸s resim boyutları olmak üzere (w *
h)/etmen altına dü¸sene kadar dü¸sürülür. Di˘ger bir deyi¸sle, bu sıkı¸stırma ölçeklendirmeden sonra yapılır.
compress_news_images_max_size= None
Jpeg kalitesini resimler verilen (KBayt olarak) boyutu geçmeyecek s¸ekilde ayarla. Ayarlanırsa, bu parametre compress_news_images_auto_size vasıtasıyla otomatik sıkı¸stırmayı ezer. Asgari jpeg kalitesi 5/100
olacaktır, yani bu kısıtlamaya uyulmaması mümkündür.
conversion_options= {}
˙Indirilen içeri˘gin e-kitaba dönü¸stü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˘gin:
=
{}=
{}@default
=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{
40
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
\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˘gı geni¸sli˘gi ve yüksekli˘gi indirilen kapa˘gın yüzdesi olarak ifade edilen bir çerçeveye gerçeklemesini söyler. cover_margins= (10, 15,
‘#ffffff’) kapa˘gı soldan ve sa˘gdan 10px, yukardan ve a¸sa˘gıdan 15px doldurur. Renk isimleri
http://www.imagemagick.org/script/color.php de tanımlanmı¸stır. Beyazın bir sebepten ötürü windows’da
çalı¸smadı˘gını not edin. Yerine #ffffff kullanın
delay= 0
Saniye cinsinden ardı¸sık indirmeler arası gecime. Daha hassas bir zaman için de˘gi¸sken ondalık sayı olarak
yazılabilir.
description= u’‘
Bu reçetenin indirdi˘gi içeri˘gi 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ı¸sılır. E˘ger ça˘grılabilirse,
iki ba˘gımsız de˘gi¸sken ile ça˘grılır: Reçete nesnesi ve kodu çözülecek kaynak. Kodu çözülmü¸s kayna˘gı
döndürmelidir.
extra_css= None
˙Indirilen HTML dosyalarına eklenecek ek CSS‘i belirtin. ‘ etiketleri içine, </head> kapanı¸s etiketinden önce eklenir böylece HTML etiketlerindeki biçim özniteliklerinde tek tek ifade edilenler hariç
tüm :term:‘CSS‘i ezer. Örne˘gin:
=
{}=
{}@default
=0=1=2=0=1=2
\PYG{n}{extra\PYGZus{}css} \PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{.hea
feeds= None
˙Indirilecek besleme listesi. [url1, url2, ...] veya [(’title1’, url1), (’title2’,
url2),...] olabilir
filter_regexps= []
Hangi ba˘glantıların göz ardı edilece˘gine karar veren düzenli ifade listesi. Bo¸ssa göz ardı edilir. Yalnızca
is_link_wanted uygulanmamı¸ssa kullanılır. Örne˘gin:
=
{}=
{}@default
=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 313) veya BasicNewsRecipe.filter_regexps
(sayfa 312) 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¸slık ve/veya
URL’ye sahip makaledir. Aynı ba¸slıktaki makaleleri göz ardı etmek için, s¸u s¸ekilde ayarlayın:
=
{}=
{}@default
=0=1=2=0=1=2
\PYG{n}{ignore\PYGZus{}duplicate\PYGZus{}articles} \PYG{o}{=} \PYG{p}{\P
˘
1.2. Sık kullandıgınız
haber sitesini ekleme
41
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
URL’ler kullanmak için, s¸öyle ayarlayın:
=
{}=
{}@default
=0=1=2=0=1=2
\PYG{n}{ignore\PYGZus{}duplicate\PYGZus{}articles} \PYG{o}{=} \PYG{p}{\P
Ba¸slık veya URL e¸sle¸stirme için, s¸u s¸ekilde ayarlayın:
=
{}=
{}@default
=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 314). Bu liste bo¸s de˘gilse, <body> etiketi bo¸saltılır ve bu
listedeki girdilerle e¸sle¸sen etiketlerle tekrar doldurulur. Örne˘gin:
=
{}=
{}@default
=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˘gi olan etiketleri tutar.
language= ‘und’
Haberlerin dili. ˙Iki veya üç karakter uzunlu˘gunda 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˘glayın.
match_regexps= []
Hangi ba˘glantıların takip edilece˘gini belirten düzenli ifade listesi. Bo¸ssa, göz ardı edilir. Yalnızca
is_link_wanted uygulanmamı¸ssa kullanılır. Örne˘gin:
=
{}=
{}@default
=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¸sle¸sir.
BasicNewsRecipe.match_regexps (sayfa 313) veya BasicNewsRecipe.filter_regexps
(sayfa 312) 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˘gu besleme için BasicNewsRecipe.oldest_article (sayfa 313) kullanmalısınız
needs_subscription= False
True is GUI indirme sırasında kullanıcı ve parola sorar. “iste˘ge ba˘glı” olarak ayarlanmı¸ssa kullanıcı adı ve
parola iste˘ge ba˘glıdır
no_stylesheets= False
E-kitaba dönü¸stürmeye uygun olmayan çok karma¸sık biçim sayfalarına sahip web sitelerinde biçim sayfalarının yüklenmesini kapatmayı kolayla¸stırıcı bayrak. True ise biçim sayfaları indirilmez ve i¸slenmez
oldest_article= 7.0
Bu haber kayna˘gından indirilecek en eski makale. Gün olarak.
42
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
preprocess_regexps= []
˙Indirilen HTML üzerince çalı¸stırılacak regexp yer de˘gi¸stirme kuralları listesi. Listenin her elemanı iki
elemanlı bir demet olmalıdır. ˙Ilk eleman derlenmi¸s bir düzenli ifade, ikincisi tek bir e¸sle¸sme nesnesi alan
ve e¸sle¸smeyle yer de˘gi¸secek karakter dizisi döndüren bir ça˘grılabilir olmalıdır. Örne˘gin:
=
{}=
{}@default
=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¸seyi 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¸s olmayan bir karakter dizisi olarak ayarlayın. Karakter dizisi kapatma iletisi
olarak kullanılacaktır
recursions= 0
Makale web sitelerinde takip edilecek ba˘glantı seviyesi sayısı
remove_attributes= []
Tüm etiketlerden kaldırılacak öznitelik listesi. Örne˘gin:
=
{}=
{}@default
=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¸s beslemeler çıktıdan kaldırılır. parse_index alt sınıfta ezilmi¸sse bu seçene˘gin hiçbir etkisi yoktur. Yalnızca feeds veya get_feeds() (sayfa 307) kullanarak bir besleme listesi döndüren reçeteler
içindir. Ayrıca ignore_duplicate_articles seçene˘gini kullanırsanız da kullanılır.
remove_javascript= True
˙Indirilen HTML’den tüm javascript etiketlerini soyacak kullanı¸slı etiket
remove_tags= []
Kaldırılacak etiket listesi. Belirtilen etiketler indirilen HTML’den çıkarılır. Bir etiket s¸u biçimdeki sözlük
olarak tanımlanır:
=
{}=
{}@default
=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˘ge ba˘glıdır. Arama kriterinin tam açıklaması için, bakınız Beautiful Soup18 Yaygın bir
örnek:
=
{}=
{}@default
18 http://www.crummy.com/software/BeautifulSoup/bs3/documentation.html#Searching%20the%20Parse%20Tree
˘
1.2. Sık kullandıgınız
haber sitesini ekleme
43
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
=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 314). Örne˘gin:
=
{}=
{}@default
=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 314). Örne˘gin:
=
{}=
{}@default
=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ü
reverse_article_order= False
Her beslemedeki makalelerin sırasını tersine çevir
scale_news_images= None
Resimlerin ölçeklendirilece˘gi azamı boyut (w,h). scale_news_images_to_device True ise çıktı profilinde
ayarlanan aygıt ekran boyutuna ayarlanır, profilin ayarlanmadı˘gı durumlarda hangi de˘ger atanmı¸ssa o bırakılır (varsayılan None).
scale_news_images_to_device= True
Resmi çıktı profilinde ayarlanmı¸s aygıt ekran boyutlarına sı˘gması için ölçeklendir. Çıktı profili ayarlanmamı¸ssa göz ardı edilir.
simultaneous_downloads= 5
E¸s zamanlı indirme sayısı. Sunucu titizse 1 olarak ayarlanır. BasicNewsRecipe.delay (sayfa 312) >
0 ise otomatik olarak 1’e dü¸sü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
Sablonları
¸
biçimlendirmek için kullanılan CSS, ör., gezinti çubukları ve ˙Içindekiler. Bu de˘gi¸skeni ezmek
yerine, doku ve görünümü özelle¸stirmek için reçetenizde extra_css kullanmalısınız.
timefmt= ‘ [%a, %d %b %Y]’
˙Ilk 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¸sımı
title= u’Bilinmeyen Haber Kayna\u011f\u0131’
E-kitap için kullanılcak ba¸slık
44
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
use_embedded_content= None
Normalde bir beslemede tüm makalenin gömülü olup olmadı˘gını gömülü içeri˘gin uzunlu˘guna bakarak tahmin etmeye çalı¸sırız. None ise, varsayılan tahmin kullanılır. True ise beslemelerin gömülü içeri˘gi oldu˘gunu,
False ise beslemenin gömülü içeri˘gi olmadı˘gını var sayarız.
use_javascript_to_login= False
Bunu True olarak ayarlarsanız, calibre web sitesine giri¸s için javascript kullanır. Giri¸s için javascript
kullanan bazı web sitelerinde bu gereklidir. True olarak ayarlarsanız asıl giri¸s i¸slemini yapması için
javascript_login() (sayfa 308) 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¸sik olarak içerir. Görüntüleyici özelle¸stirilebilir ve pek çok geli¸smi¸s özellik barındırır.
•
•
•
•
•
Görüntüleyiciyi ba¸slatmak (sayfa 45)
Bir e-kitapta dola¸smak (sayfa 45)
Okuma deneyiminizin görünümünü özelle¸stirmek (sayfa 47)
Sözlük araması (sayfa 48)
Metin ve görüntü kopyalamak (sayfa 48)
1.3.1 Görüntüleyiciyi baslatmak
¸
Calibre kitaplı˘gınızdaki herhangi bir e-kitabı seçtikten sonra Görüntüle dü˘gmesine tıklayarak görüntülemeye ba¸slayabilirsiniz. Bu kitabı e-kitap görüntüleyicide açacaktır. Görüntüleyiciyi Windows’ta Ba¸slat menüsünden, Linux’ta ve
OS X’te (bunun için komut satırı araçlarını Tercihler->Geli¸smi¸s->Çe¸sitli yolunu takip ederek kurmu¸s olmanız gerekir) :command:‘ebook-viewer‘komutuyla da ba¸slatabilirsiniz.
1.3.2 Bir e-kitapta dolasmak
¸
Bir e-kitap içinde Sonraki Sayfa ve Önceki Sayfa dü˘gmelerini
kullanarak veya Page Down/Page Up tu¸slarıyla
“sayfaları çevirebilirsiniz”. Di˘ger e-kitap okuyuculardan farklı olarak calibre sizi kitapları sayfalı kipte görüntülemeye
zorlamaz. kaydırma çubu˘gunu ve özelle¸stirilebilir klavye kısayollarını kullanarak bir sayfadan daha az kaydırma da
yapabilirsiniz.
Yer ˙Imleri
Bir kitabın ortasında iken görüntüleyiciyi kapatırsanız onu tekrar açtı˘gınızda kaldı˘gınız yer hatırlanacak ve oradan
açılacaktır. Ayrıca isterseniz Yer ˙Imi dü˘gmesini
kullanarak kitaplara yer imleri de ekleyebilirsiniz. EPUB
biçimindeki kitapları görüntülüyorsanız yer imleri EPUB dosyasının kendisinde kaydedilir. Yer imleri kaydedebilir ve
bu halini arkada¸slarınıza gönderebilirsiniz. Dosyayı açtıklarında sizin yer imlerinizi görebileceklerdir.
1.3. E-kitap Görüntüleyici
45
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
˙Içindekiler
˙
˙
E˘ger okudu˘gunuz kitapta Içindekiler
bölümü varsa ona Içindekiler
dü˘gmesini kullanarak eri¸sebilirsiniz. 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˘gildir. Bunun yerine kitabı okumaya devam etti˘ginizde konumunuzun kitabın sol üst kö¸sesinde böyle
görüntülendi˘gini 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˘gımsızdır ve basılı
kitaplardaki sayfa numaralarına benzer bir rol üstlenirler. Buraya herhangi bir sayı girebilir ve kitapta ona kar¸sılık
gelen konuma gidebilirsiniz.
dü˘gmesine tıklayabilirsiniz.
Calibre çok bir referans kipine de sahiptir. Etkinle¸stirmek için Referans Kipi
Bunu bir kere yaptıktan sonra farenizi bir paragrafın üzerine her getiri¸sinizde calibre o bölümü ve paragrafı belirten
benzersiz bir numara görüntüleyecektir.
46
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Bu numarayı arkada¸slarınızla üzerinde konu¸surken veya ba¸ska i¸slerin 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˘glantılara tıklayarak kitabın farklı bölümlerine giderseniz sol kö¸sedeki geri
ve ileri tu¸slarını kullanarak eskiden bulundu˘gunuz yere gidebilirsiniz. Bu dü˘gmeler web tarayıcısında oldu˘gu gibi
davranırlar.
1.3.3 Okuma deneyiminizin görünümünü özellestirmek
¸
Yazı tipi boyutlarını havada de˘gi¸stirmek için yazı tipi boyutu
dü˘gmesini kullanabilirsiniz. Tam ekran dü˘gme-
sine
tıkladı˘gınızda görüntüleyici tam ekran olacaktır. Tercihler dü˘gmesine
tıklayarak görüntüleyicinin varsayılan olarak kullandı˘gı yazı tiplerini ve açılı¸sta kullandıklarını istedi˘giniz bir tanesiyle de˘gi¸stirebilirsiniz.
1.3. E-kitap Görüntüleyici
47
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Daha geli¸smi¸s özelle¸stirmeler Kullanıcı Stil Sayfası ayarlarından yapılabilir. Bunlar her kitaba uygulanacak de˘gi¸sikliklerdir. Bunları kullanarak siyah arkaplan üzerine beyaz yazı, paragraf stilini de˘gi¸stirmek veya metin hizalaması gibi
s¸eyleri de˘gi¸stirebilirsiniz. calibre kullanıcılarının özelle¸stirmelerini forum sayfasından19 görebilirsiniz.
1.3.4 Sözlük araması
Mevcut kitaptaki bir sözcü˘gün anlamına üzerine sa˘g 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ü˘gü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˘g tıklayarak geçici ta¸sıma panosuna kopyalayabilirsiniz. Kopyalanan nesneler ba¸ska bir uygulamaya düz metin veya görüntü olarak yapı¸stırılabilir.
1.4 E-Kitap Dönüstürme
¸
Calibre kolay kullanım için tasarlanmı¸s bir dönü¸stürme sistemine sahiptir. Normalde bir kitabı farklı bir formata dönü¸stürmek için Calibre’ye eklemeniz ve “Dönü¸stür” butonuna tıklamanız yeterlidir. Calibre kitabın orijinal formatına
olabildi˘gince sadık kalarak dönü¸süm i¸slemini yapmaya çalı¸sır. Ancak Calibre bir çok farklı dosya tipi için dönü¸sümü
desteklese de bu formatların bazıları çe¸sitli e-kitap formatlarına tam uyum sa˘glamayabilir. E˘ger dönü¸süm sürecine
daha fazla müdahale etmek isterseniz Calibre bunun için bir çok ince ayar seçene˘gi sunmaktadır. Yine de Calibre’nin
dönü¸süm aracı tam fonksiyonlu bir e-kitap düzenleyicisi de˘gildir. Bu nedenle kitapları düzenlemek için önce bunları
kaynak formatlarından EPUB ya da AZW3 gibi bir formata dönü¸stürmek ve sonrasında “Kitabı Düzenle” fonksiyonu
ile istenilen s¸ekle getirmek önerilmektedir. Sonra da bu düzenlenmi¸s kitap istenilen formata dönü¸stürmek için kaynak
format olarak kullanılabilir.
Bu belge ço˘gunlukla a¸sa˘gıda resmi olan dönü¸stürme penceresinde bulunan dönü¸stürme ayarlarına de˘ginecektir. Tüm
bu ayarlar ayrıca generated/en/ebook-convert belgesinde belgelenen dönü¸stürme komut satırı arayüzü ile
de kullanılabilirdir. Calibre’de, tüm ayarlar için yardım metnini fareyi ayar üzerinde tutarak edinebilirsiniz, ilgili ayarı
anlatan bir araç ipucu çıkacaktır.
19 http://www.mobileread.com/forums/showthread.php?t=51500
48
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
˙
Içindekiler
•
•
•
•
•
•
•
•
•
•
•
Giri¸s (sayfa 50)
Gör & Hisset (sayfa 51)
Sayfa Düzeni (sayfa 53)
Sezgisel ˙I¸sleme (sayfa 54)
Bul & De˘gi¸stir (sayfa 55)
Yapı Algılama (sayfa 56)
˙Içindekiler (sayfa 57)
HTML girdi belgelerini dönü¸stürürken resimler bölüm ba¸slı˘gı olarak kullanılıyor (sayfa 58)
˙Içindekiler bölümündeki girdilere metin temin etmek için etiket öznitelikleri kullanılıyor (sayfa 59)
Dönü¸stürme için seçeneklerin nasıl ayarlanıp/kaydedilece˘gi (sayfa 59)
Biçime özel ipuçları (sayfa 60)
1.4. E-Kitap Dönüstürme
¸
49
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
1.4.1 Giris¸
Dönü¸süm sistemi hakkında anla¸sılması gereken ilk s¸ey, bunun düz bir hat s¸eklinde tasarlandı˘gıdır. Sistemin s¸ematik
görünü¸sü s¸öyledir:
Girdi biçimi önce uygun Girdi Eklentisi ile XHTML’ye çevrilir. Bu HTML daha sonra dönü¸stürülür. Son adımda,
i¸slenmi¸s XHTML belirtilen çıktı biçimine ilgili Çıktı Eklentisi ile dönü¸stürülür. Dönü¸stürme sonuçları girdi biçimine
göre çok fazla de˘gi¸siklik gösterebilir. Bazı biçimler di˘gerlerinden oldukça iyi dönü¸stürülür. Dönü¸stürme için en iyi
kaynak biçimler listesi burada (sayfa 100) mevcuttur.
XHTML çıktısındaki dönü¸stürmeler tüm i¸sin yapıldı˘gı yerdir. Bir çok dönü¸stürme vardır, örne˘gin, bir kitap metadata’sını kitabın ba¸slangıcında bir sayfa olarak eklemek için, bölüm ba¸slıklarını algılayıp otomatik ˙Içindekiler bölümü
olu¸sturmak için, yazı tiplerini orantılı olacak s¸ekilde ayarlamak için vs. Tüm dönü¸sümlerin girdi dosyası üzerinde
de˘gil, XHTML çıktısı üzerinde Girdi Eklentisi” ile yapıldı˘gını unutmamak önemlidir. Örne˘gin calibre’ye bir RTF
dosyasını EPUB’a dönü¸stürmesini söyledi˘ginizde, önce iç i¸slem olarak XHTML’ye dönü¸stürülür, XHTML’ye bir takım
dönü¸stürmeler yapılır ve son olarak *Çıktı Eklentisi metadata, ˙Içindekiler vs. bölümlerini otomatik olu¸sturarak EPUB
çıktısı üretir.
Bu i¸slemi çalı¸sırken hata ayıklama seçene˘gi
ile görebilirsiniz. Hata ayıklama çıktısı için bir dizin
belirtmeniz yeterli. Dönü¸stürme sırasında, calibre, dönü¸stürmenin bir takım evrelerinde üretilen XHTML’yi de˘gi¸sik
alt dizinlere koyar. Dört alt dizi ise s¸unlardır:
50
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Tablo 1.2: Dönü¸süm hattı a¸samaları
Klasör
girdi
çözümlenmi¸s
yapı
i¸slenmi¸s
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¸sleme ve XHTML’e çevirme sonuçları. Yapı algılamayı ayıklamak için
kullanın.
CSS düzleme ve yazı tipi boyutu dönü¸stürmeden önce, yapı sonrası algılama. Yazı tipi ve CSS
dönü¸sü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˘ger Calibri dosyayı dönü¸stü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ü¸stürme i¸slemi 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ü¸sümde kullanılabilir bir tür olarak eklenir, sonrasında dönü¸stürme diyalog penceresinin sol üst kısmından kaynak format olarak ZIP seçilir.
Bu belge temel olarak ara XHTML üzerindeki çe¸sitli dönü¸sümler ile ve bunların nasıl kontrol edilece˘giyle ilgilenir.
Son kısımda her Gird˙I/Çıktı biçimi için bazı özel ipuçları bulunmaktadır.
1.4.2 Gör & Hisset
˙
Içindekiler
•
•
•
•
Yazı tipi boyutunu de˘gi¸stirme (sayfa 51)
Paragraf aralıkları (sayfa 52)
Fazladan CSS (sayfa 53)
Muhtelif (sayfa 53)
Bu seçenek grubu dönü¸stürülmü¸s e-kitabın, “Gör ve Hisset” niteliklerinin çe¸sitli a¸samalarını düzenler.
˘ stirme
Yazı tipi boyutunu degi
¸
E-kitap okuma deneyiminin en güzel özelliklerinden biri kitabın yazı tipi boyutunu ki¸sisel tercih ve aydınlatma ko¸sllarına uygun olarak kolayca ayarlayabilmektir. Calibre, girdi olarak verilen dökümandaki yazı tipi boyutları ne olursa
olsun, çıktı olarak üretti˘gi e-kitaplarda tutarlı yazı tipi boyutları olu¸sturmak için karma¸sı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˘ger bir ifadeyle dökümandaki içeri˘gin büyük kısmında kullanılan boyuttur. Bir Baz yazı tipi boyutu belirledi˘ginizde, Calibre otomatik
olarak dökümandaki bütün yazı tipi boyutlarını bu de˘gere oransal olarak yeniden ayarlar, böylece en çok kullanılan
yazı tipi boyutu belirlenen boyut olur ve di˘ger yazı tipi büyüklükleri de buna uygun olarak belirlenir. Örne˘gin 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˘ginde tüm yazı tipi boyutlarının küçülmesi) sa˘glanabilir. En iyi sonuca ula¸sabilmek için bir baz yazı tipi
büyüklü˘gü belirledi˘ginizde yazı tipi boyutu anahtar de˘gerinin de belirlenmesi yerinde olacaktır.
Normalde, Calibre sizin seçti˘giniz “Çıktı Profili” ile uygun olarak bir baz yazı tipi boyutunu varsayılan olarak belirler
(Bkz. Sayfa Düzeni (sayfa 53)). Ancak varsayılan de˘ger sizin için uygun de˘gilse buradan de˘gi¸stirebilirsiniz.
Yazı tipi boyutu anahtarı opsiyonu baz yazı tipi dı¸sındaki yazı tiplerinin nasıl boyutlandırılaca˘gının kontrol edilmesini
sa˘glar. Bu opsiyon temelde yazı tipi boyutlarının birbirinden virgülle ayrıldı˘gı bir listedir. Anahtar de˘geri Calibre’ye bir
yazı tipinin baz yazı tipine oranla kaç “Adım” büyük ya da küçük olaca˘gını belirtir. Normalde bir dökümanda sınırlı
sayıda yazı tipi boyutu kullanılmı¸s olmalıdır. Örne˘gin “normal metinler için bir boyut, farklı derecedeki ba¸slıklar
1.4. E-Kitap Dönüstürme
¸
51
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
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˘gı sa˘glar.
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¸slıklar biraz daha büyük (Mesela 10 ve 12 pt) ve dipnotlar da 6pt
gibi daha küçük bir boyutta olsun. E˘ger bu örnek için a¸sa˘gıdaki ayarları kullanırsak:
=
{}=
{}@default
=0=1=2=0=1=2Base font size : 12pt
Çıktı 12pt baz yazı tipi boyutuna sahipken ba¸slıklar 14 ve 16 pt, dipnotlar ise 8pt olacaktır. Simdi
¸
varsayalım ki
büyük ba¸slıkların ve dipnotların boyutunu biraz daha büyüterek bunları öne çıkarmak istiyoruz. Bunun için yazı tipi
anahtarının de˘geri s¸u s¸ekilde güncellenir:
=
{}=
{}@default
=0=1=2=0=1=2New font size key : 7, 9, 12, 14, 18, 2 22
Simdi
¸
büyük ba¸slıklar 18pt olurken dipnotlar 9pt olarak boyutlandırılacak. Hangisinin sizin için en uygun oldu˘gunu
anlamak için bu de˘gerleri yazı tipi boyutlandırma sihirbazını kullanarak de˘gi¸stirebilirsiniz. Bu sihirbaza Yazı tipi boyutu anahtarı bölümünün hemen yanındaki küçük buton ile ula¸sabilirsiniz.
Girdi belgesindeki yazı tipi boyutlarını korumak isterseniz, tüm yazı tipi yeniden ölçekleme i¸slemi buradan kapatılabilir.
˙Ilgili bir ayar da Line height‘dır. Satır yüksekli˘gi satırların dikey yüksekli˘gini kontrol eder.Ön tanımlı olarak, (0 yüksekli˘ginde bir satır), satır yüksekli˘ginde oynama yapılmaz. Varsayılan dı¸sında bir de˘ger 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¸sluk olacak s¸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¸slukları kaldır tüm
paragrafların iç paragraf bo¸slu˘gu olmamasını garantiler. Ayrıca paragrafın ba¸slangıcını i¸saretlemek için metin girintisini 1.5em olarak ayarlar (de˘gi¸stirilebilir). :guilabel: Bo¸s satır ekle tam tersini yapar, her paragraf arası bir bo¸s satır
oldu˘gundan emin olur. Bu iki seçenek de çok kapsamlıdır, bo¸slukların kaldırılması, veya tüm paragraflara eklenmesi
(teknik olarak <p> ve <div> etiketleri). Bunun sebebi seçene˘gi ayarladıktan sonra yapaca˘gını söyledi˘gi s¸eyi yaptı˘gından emin olmanızı sa˘glamaktır, girdi dosyası ne kadar da˘gınık olsa da. Bir istisna girdi dosyasının iç paragraflar için
bo¸sluksuz satır ba¸sı yaptı˘gı durumdur.
Seçilmi¸s bir kaçı hariç tüm paragraflardaki bo¸slukları kaldırmak istiyorsanız, bu seçenekleri kullanmayın. Bunun yerine a¸sa˘gıdaki CSS kodunu Fazladan CSS (sayfa 53):: e ekleyin
=
{}=
{}@default
=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{}
Sonra, kaynak belgenizde, bo¸slu˘ga ihtiyaç duyan paragrafları class=”spacious” ile i¸saretleyin. Girdi belgeniz HTML
biçiminde de˘gilse, HTML almak için giri¸s bölümünde anlatıldı˘gı gibi Hata ayıklama seçene˘gini kullanın (input alt
dizinini kullanın).
52
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
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˘gu CSS’i ezecektir. Bu seçene˘gi belgenizin sunumunda/yerle¸siminde ince ayar yapmak için kullanabilirsiniz. Örne˘gin tüm endnote sınıfı paragrafların sa˘ga dayalı
olmasını istiyorsanız , s¸unu eklemeniz yeterlidir:
=
{}=
{}@default
=0=1=2=0=1=2.endnote \PYGZob{} text\PYGZhy{}align: right \PYGZcb{}
ya da tüm paragraflardaki girintilemeyi de˘gi¸stirmek için:
=
{}=
{}@default
=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ı¸sır iyice anlamı¸s olmalısınız. Girdi belgenizde hangi CSS’lerin mevcut oldu˘gunu ö˘grenmek için a¸sa˘gıda belirtilen hata ayıklama boru hattı
seçene˘gini kullanabilirsiniz.
Muhtelif
Bu bölümde bir kaç seçenek daha var.
Metin hizalama yok Normalde, çıktı biçimi destekliyorsa, calibre çıktı e-kitabını hizalanmı¸s metne zorlar (ör., yumu¸sak bir sa˘g kenar bo¸slu˘gu). Bu seçenek bu davranı¸sı kapatır, bu durumda da girdi belgesinde ne hizalama
belirtilmi¸sse o kullanılır.
Tabloları do˘grusalla¸stır Bazı kötü tasarlanmı¸s belgeler metnin sayfadaki yerle¸simi için tablolar kullanırlar. Dönü¸stürüldüklerinde, bu tablolar genellikle sayfadan ta¸san hatalı metne sahip olurlar. Bu seçenek metni tablolardan
çıkarır ve do˘grusal s¸ekilde sunar. Bu seçene˘gin tüm tabloları do˘grusalla¸stırıldı˘gına dikkat edin, yani girdi belgesinin tabloları geçerli sebeplerle kullanmadı˘gından emin oldu˘gunuzda kullanın, örne˘gin sekmeli bilgilerin
sunumu.
Evrensel koddaki karakterlerin ba¸ska dile dönü¸stürülmesi Evrensel koddaki karakterlerin ASCII sunumuna dönü¸stürülmesi. Dikkatli kullanın çünkü bu evrensel kod karakterleri ASCII’ye çevirir. Örne˘gin “Михаил Горбачёв”
metnini “Mikhail Gorbachiov” yapar. Ayrıca bir karakterin birden çok temsili bulundu˘gu durumlarda (Çince ve
Japonca’da payla¸sı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˘gi olmayan bir cihazda görüntüleyecekseniz faydalıdır.
Girdi karakter kodlaması Eski belgeler bazen karakter kodlamalarını belirtmezler. Dönü¸stürüldü˘günde, ˙Ingilizce olmayan karakterlerin veya akıllı tırnak i¸saretlerinin bozuk olmasına yol açabilirler. calibre kaynak belgenin karakter kodlamasını otomatik algılamaya çalı¸sır ama her zaman ba¸sarılı olamaz. Bu ayarı kullanarak varsayılan bir karakter kodlamasını farz etmesini sa˘glayabilirsiniz. Windows yazılımları tarafından üretilen belgelerde
cp1252 ço˘gunlukla kullanılan bir kodlamadır. Kodlama sorunlarıyla ilgili How do I convert my file containing
non-English characters, or smart quotes? (sayfa 100) belgesini de okumalısınız.
1.4.3 Sayfa Düzeni
Sayfa Düzeni seçenekleri kenar bo¸slukları ve ekran boyutu gibi ekran yerle¸simini kontrol etmeye yarar. Çıktı Eklentisi
sayfa kenar bo¸sluklarını destekliyorsa Çıktı Eklentisi tarafından kullanılan sayfa kenar bo¸slukları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¸slarındaki ölçümlerin nasıl yorumlanaca˘gıyla ilgilenir.
1.4. E-Kitap Dönüstürme
¸
53
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
E˘ger dönü¸stürdü˘günüz dosyanın belirli bir cihaz/yazılım ile kullanılmak üzere olu¸sturuldu˘gunu biliyorsanız, ilgili
girdi profilini seçin, bilmiyorsanız varsayılan profili seçmeniz yeterli. Üretti˘giniz 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ı¸san 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˘gı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˘gin, bazı çıktı formatlarında resimlerin ekrana uyacak
s¸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 ˙Isleme
¸
Sezgisel ˙I¸sleme vasat biçimlendirilmi¸s girdi belgelerindeki genel problemlerin algılanıp düzeltilmesi için kullanılabilecek bir takım metodlar sa˘glar. Girdi belgeniz kötü biçimlenmi¸sse bu metotları kullanın. Bu metotlar sıkça görülen
kalıplara ihtiyaç duydu˘gundan, bazı durumlarda daha da kötü sonuçlar do˘gurabilecektir, yani dikkatli kullanın. Örnek olarak, bu seçeneklerin bir ço˘gu tüm satır ba¸sı yapmayan bo¸slukları silecektir, veya metoda ba˘glı yanlı¸s pozitif
e¸sle¸smeler içerebilir.
Sezgisel i¸slemeyi etkinle¸stir Bu seçenek calibre’nin Sezgisel ˙I¸sleme a¸samasını dönü¸süm boru hattında etkinle¸stirir.
Çe¸sitli alt metotların uygulanabilmesi için bu seçene˘gin etkin olması gerekir
Satırları kaydırma Bu seçene˘gi etkinle¸stirmek calibre’nin bir belgede bulunan bo¸sluksuz satır ba¸slarını noktalama
i¸saretleri ipuçları ve satır uzunlu˘gu kullanarak algılayıp düzeltmeye çalı¸smasını sa˘glar. calibre önce bo¸sluksuz
satır ba¸slarının mevcut olup olmadı˘gını algılamaya çalı¸sacak, 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ü¸sürülebilir.
Satır-kaydırmama etmeni Bu seçenek calibre’nin bo¸sluksuz satır ba¸slarının kaldırmak için kullandı˘gı algoritmayı
kontrol eder. Örne˘gin, bu seçene˘gin de˘geri 0.4 ise, calibre satır sonlarındaki bo¸sluksuz satır ba¸slarını o satır
belgedeki tüm satırların uzunlu˘gunun 40% ve a¸sa˘gısı uzunlu˘gunda ise kaldırır. Belgenizde düzeltilmesi gereken
bir kaç satır sonu varsa, bu de˘ger 0.1 ile 0.2 arası bir de˘gere dü¸sürülmelidir.
Biçimsiz bölüm ba¸slıkları ve alt ba¸slıkları algıla ve i¸saretle Belgenizin metnin geri kalanından farklı biçimlendirilmi¸s bölüm ba¸slıkları ve konuları yoksa, calibre bu seçene˘gi kullanarak onları algılamaya ve ba¸slık etiketleriyle
çevrelemeye çalı¸sabilir. Bölüm ba¸slıkları için <h2> etiketleri kullanılır; algılanan herhangi di˘ger konu için <h3>
etiketleri kullanılır.
Bu ba¸slık bir içindekiler bölümü yani TOC olu¸sturmaz, ama ço˘gu durumda calibre’nin varsayılan bölüm algılama ayarlarının do˘gru s¸ekilde bölümleri algılamasına ve bir TOC olu¸sturmasına sebep olur. Bir TOC otomatik
olarak olu¸sturulmazsa, Yapı Algılama altındaki XPath’i ayarlayın. Belgede kullanılan ba¸ska bir ba¸slık yoksa
Yapı Algılama altındaki “//h:h2” ayarı bir TOC olu¸sturmak için en kolay yöntem olacaktır.
Eklenmi¸s ba¸slıklar biçimlendirilmi¸s de˘giller, biçimleme eklemek için Görünüm ve Doku dönü¸stürme ayarları
altındaki Ek CSS seçene˘gini kullanın. Örne˘gin, ba¸slık etiketlerini ortalamak için, s¸unu kullanın:
=
{}=
{}@default
=0=1=2=0=1=2
h2, h3 \PYGZob{} text\PYGZhy{}align: center \PYGZcb{}
<h1> veya <h2> etiket serisini yeniden numaralandır Bazı da˘gıtımcılar bölüm ba¸slıklarını birden çok <h1> veya
<h2> etiketlerini sırayla kullanarak biçimlendirirler. calibre’nin varsayılan dönü¸stürme ayarları bu gibi konu
ba¸slıklarının iki parçaya ayrılmasına sebep olur. Bu seçenek ayrılmayı önlemek için ba¸slık etiketlerini yeniden
numaralandırır.
54
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Paragraflar arası bo¸s satırları sil Bu seçenek calibre’nin belgede bulunan bo¸s satırları analiz etmesine sebep olur.
Her paragraf arasında bir bo¸s satır varsa, calibre tüm bu bo¸s paragrafları siler. Birden çok bo¸s 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¸sluklarını Kaldır’ seçene˘ginden farklıdır ve aslında HTML içeri˘gi de˘gi¸stirir, di˘ger seçenek ise belge
biçemlerini. Bu seçenek ayrıca calibre’nin ‘Bo¸s satır ekle’ seçene˘giyle eklenen paragrafları da kaldırabilir.
Sahne aralarının tutarlı biçimlendirildi˘ginden emin ol Bu seçenekle, calibre, sık rastlanan sahne arası i¸saretçilerini
algılamaya ve merkezde hizalandıklarından emin olmaya çalı¸sır. ‘Yumu¸sak’ sahne arası i¸saretçilerinin, ör. sadece ek bir bo¸slukla belirtilen sahne aralarının, sayfa aralarıyla karı¸smayacak s¸ekilde biçimlendi˘ginden emin
olunur.
Sahne aralarını de˘gi¸stir Bu seçenek yapılandırılmı¸ssa, calibre kullanıcı tarafından belirtilen metinle buldu˘gu sahne
arası i¸saretçilerini de˘gi¸stirir. Lütfen bazı süsleyici karakterlerin tüm okuma aygıtlarında desteklenmiyor olabilece˘gini not edin.
Genellikle html etiketleri kullanmaktan kaçınmalısınız, calibre tüm etiketleri kaldırır ve ön tanımlı i¸saretçileri
kullanır. <hr /> etiketleri, ör. yatay kurallar, ve <img> etiketleri hariç. Yatay kurallar iste˘ge ba˘glı olarak biçemlerle tanımlanabilirler, kendi biçeminizi eklemeyi seçerseniz ‘geni¸slik’ ayarnın eklemeyi unutmayın, yoksa
biçem bilgisi kabul edilmeyecektir. Resim etiketleri kullanılabilir, ama calibre dönü¸stürme sırasında resim ekleme yetene˘gini sa˘glamaz, bu i¸slem daha sonra ‘Kitabı Düzenle’ özelli˘gi ile yapılmalıdır.
Örnek resim etiketi (Dönü¸sü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;”/>
Gereksiz kısa çizgileri sil bu seçenek etkinken calibre belgedeki tüm tireli içeri˘gi çö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˘gru
s¸ekilde kaldırmasına izin verir, uydurma ve belirsiz bilimsel kelimeler dahil. Birincil eksikli˘gi belgede yalnızca
bir kere geçen kelimelerin de˘gi¸stirilmeyecek olmasıdır. Çözümleme iki a¸samada olur, ilk a¸sama satır sonlarını
inceler. Satırlar yalnızce kelime belgede tireli veya tiresiz mevcutsa kaydırılır. ˙Ikinci a¸sama belgedeki tüm tireli
kelimeleri inceler, kelime belgede ba¸ska bir yerde e¸sle¸sme olmadan mevcutsa tireler kaldırılır.
Yaygın kelime ve kalıpları yatık yap Etkinle¸stirildi˘ginde, 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’.
Birim girintilerini CSS girintileriyle de˘gi¸stir Bazı belgeler metin girintileme için alt satıra geçirmeyen bo¸sluk girdileri kullanma gelene˘gini kullanır. Bu seçenek etkinken calibre bu tarz biçimlemeyi algılamaya ve css kullanarak
%3 metin girintisine çevirmeye çalı¸sır.
˘ stir
1.4.5 Bul & Degi
¸
Bu seçenekler birincil olarak PDF belgeleri ve OCR dönü¸sümleri için yararlıdır, tabi bir çok belgeye özel problemi
çözmek için de kullanılabilirler. Örnek olarak, bazı dönü¸sümler metinde sayfa ba¸slıkları ya da altbilgileri bırakabilirler.
Bu seçenekler düzenli ifadeler kullanarak ba¸slık, altbilgi veya keyfi metinleri bulmaya çalı¸sır ve bu metinleri kaldırır
veya de˘gi¸stirir. Dönü¸stürme hattındaki ara XHTML çıktı üzerinde i¸slem yaptıklarını unutmayın. Belgeniz için düzenli
ifadeleri özelle¸stirmenize yarayan bir sihirbaz da mevcuttur. ˙Ifade kutusu yanındaki sihirli de˘gne˘ge tıklayın ve arama
ifadenizi yazdıktan sonra ‘Test’ dü˘gmesine tıklayın. Ba¸sarılı e¸sle¸smeler Sarı olarak vurgulanacaktır.
Arama python düzenli ifadesi kullanarak çalı¸sır. E¸sle¸sen tüm metin belgeden silinir veya de˘gi¸stirme ifadesi ile deg˘ i¸stirilir. De˘gi¸stirme ifadesi iste˘ge ba˘glıdır, bo¸s bırakılırsa arama metniyle e¸sle¸sen metin belgeden silinir. Düzenli
ifadeler ve söz dizimleriyle ilgili daha çok bilgiyi s¸urada bulabilirsiniz All about using regular expressions in calibre
(sayfa 197).
1.4. E-Kitap Dönüstürme
¸
55
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
1.4.6 Yapı Algılama
Yapı algılama, yapılar tanımlanmadı˘gında calibre’nin girdi belgesinde yapısal elemanları algılamak için elinden geleni
yapması i¸sini içerir. Örne˘gin bölümler, sayfa sonları, ba¸slıklar, altbilgi, vs. Tahmin edece˘giniz gibi, bu i¸slem 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¸sıklık gelir, ama bu karma¸sıklı˘gı ö˘grenmek için biraz zaman ayırırsanız, çabanıza deydi˘gini 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˘gi vardır. Bazen biraz kafa karı¸stırıcı olsa da,
calibre varsayılan olarak, algılanan bölümlerden önce oldu˘gu gibi sayfa sonları seçene˘gi ile algılanan yerlerden önce
de sayfa sonu ekler. Bunun sebebi yaygın olarak bölüm sınırlarında olmadı˘gı halde sayfa sonu eklenmesi gereken
yerlerin bulunmasıdır. Ayrıca, algılanan bölümler iste˘ge ba˘glı olarak otomatik üretilen ˙Iç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, s¸ans eseri, Kullanıcı Kitabında bir XPath rehberi (sayfa 150) bulunmaktadır.
Yapı Algılamanın dönü¸stürme hattındaki XHTML üzerinde i¸slem yaptı˘gını unutmayın. Kitabınıza uygun ayarları bulmak için Giri¸s (sayfa 50) da anlatılan hata ayıklama seçene˘gini kullanın. Basit XPath ifadeleri üretmeye yardım etmesi
için bir de XPath sihirbazı dü˘gmesi bulunmaktadır.
Ön tanımlı olarak, calibre bölüm algılama için s¸u ifadeyi kullanır:
=
{}=
{}@default
=0=1=2=0=1=2//*[((name()=\PYGZsq{}h1\PYGZsq{} or name()=\PYGZsq{}h2\PYGZsq{}) and re:test(., \PYGZsq{}
This expression is rather complex, because it tries to handle a number of common cases simultaneously. What it means
is that calibre will assume chapters start at either <h1> or <h2> tags that have any of the words (chapter, book, section
or part) in them or that have the class=”chapter” attribute.
˙Ilgili bir seçenek de Chapter i¸sareti, calibre’nin bir bölüm algıladı˘gında ne yapaca˘gını kontrol etmenizi sa˘glayan
seçene˘gi. Ö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¸ska bir s¸ey de yaptıramazsınız.
Sayfa sonlarını algılamak için ön tanımlı ayar:
=
{}=
{}@default
=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˘gi demek oluyor.
Not: Varsayılan ifadeler dönü¸stürdü˘günüz girdi biçimine göre de˘gi¸sebilir.
Muhtelif
Bu bölümde bir kaç seçenek daha var.
Metadata’yı kitabın ba¸sına bir sayfa olarak ekle Calibre hakkındaki harika s¸eylerden biri de tüm kitaplarınız hakkındaki tam metadatayı, örne˘gin, oylama, etiketler, yorumlar, vs. korumanızı sa˘glamasıdır. Bu seçenek tüm bu
metadata’yı içeren bir sayfayı dönü¸stürme sonrası, genellikle kapak sayfasından sonra dönü¸stürülen e-kitaba
ekler. Kendi özelle¸smi¸s kitap kabınızı olu¸sturmak gibi dü¸sünebilirsiniz.
˙ resmi kaldır Bazen, dönü¸stürdü˘günüz kaynak belge kapa˘gı ayrı bir kapak olarak de˘gil, kitabın bir parçası olarak
Ilk
bulundurur. Calibre’de ayrıca bir kapak belirtirseniz, dönü¸stürülen kitabın iki kapak sayfası olur. Bu seçenek
56
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
basitçe belgedeki ilk resmi kaldırır, dönü¸stürülen kitabın tek bir kapa˘gı, calibre tarafından belirtilen kapa˘gı
olmasını sa˘glar.
1.4.7 ˙Içindekiler
Girdi belgesinin metadatasında bir ˙Içindekiler bölümü oldu˘gunda, calibre bunu kullanacak. Bazı eski biçimler ya metadata tabanlı ˙Içindekileri desteklemez, ya da bazı belgeler bunu içermiyor olabilir. Bu gibi durumlarda, bu kısımdaki
seçenekler, girdi belgesindeki içeri˘gi temel alarak dönü¸stürülen e-kitapta otomatik olarak ˙Içindekiler olu¸sturmanıza
yardım edebilir.
Not: Bu seçenekleri tam olarak kullanmayı ö˘grenmek zor olabilir. ˙Içindekiler bölümünü elle olu¸sturmak/düzenlemek
˙
isterseniz, EPUB veya AZW3 formatına çevirin ve dönü¸stürme ileti¸sim penceresinin altındaki Içindekileri
dönü¸stürmeden sonra elle ayarla etiketli onay kutusunu i¸saretleyin. Dönü¸stürme bittikten sonra ToC Düzenleyici açılır. Bu
da ˙Içindekiler bölümündeki girdileri girdilerin göstermesini istedi˘giniz yeri kitapta tıklayarak seçmenize izin veren
düzenleyicidir. ToC Düzenleyiciyi dönü¸stürme yapmadan da kullanabilirsiniz. Seçenekler->Araç çubukları menüsüne
gidin ve ToC Düzenleyiciyi ana araç çubu˘guna ekleyin. Sonra yalnızca düzenlemek istedi˘giniz kitabı seçin ve ToC
Düzenleyici dü˘gmeye tıklayın.
˙Ilk seçenek Otomatik olu¸sturulmu¸s Içindekileri
˙
kullanmaya zorla. Bunu i¸saretleyerek calibre’nin girdi belgesinde bulunan herhangi bir ˙Içindekiler bölümü yerine otomatik üretileni kullanmaya zorlamasını sa˘glayabilirsiniz.
Otomatik üretilen ˙Içindekiler bölümünün çalı¸sma s¸ekli, calibre’nin algılanan tüm bölümleri üretilen içindekiler bölümüne eklemeye çalı¸sması iledir. Bölüm algılamayı nasıl özelle¸stirebilece˘ginizi yukarıdaki Yapı Algılama (sayfa 56)
kısmı ile ö˘grenebilirsiniz. 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˘gini i¸saretleyin.
E˘ger Bölüm e¸si˘gi sayısından az sayıda bölüm algılanırsa, calibre girdi belgesinde buldu˘gu köprüleri ˙Içindekilere ekler.
Bu genellikle düzgün çalı¸sır bir çok girdi belgesi ba¸sında köprülenmi¸s bir ˙Içindekiler içerir. Ba˘glantı sayısı seçene˘gi
bu davranı¸sı kontrol etmek için kullanılabilir. Sıfıra ayarlanırsa, hiçbir ba˘glantı eklenmez. Sıfırdan büyük bir rakam
ayarlanırsa, en fazla o kadar ba˘glantı eklenir.
calibre otomatik olarak kopya girdileri ˙Içindekiler bölümünden çıkarır. Fakat istenmeyen ba¸ska girdiler de varsa, TOC
Filtresi seçene˘gi ile filtreleyebilirsiniz. Bu, üretilen içindekilerdeki girdi ba¸slıklarıyla e¸sle¸secek bir düzenli ifadedir.
Bulunan her e¸sle¸sme kaldırılacaktır. Örne˘gin, tüm “Sonraki” veya “Önceki” girdi ba¸slıklarını kaldırmak için s¸unu
kullanabilirsiniz:
=
{}=
{}@default
=0=1=2=0=1=2\PYG{n}{Next}\PYG{o}{\textbar{}}\PYG{n}{Previous}
˙
Seviye 1,2,3 TOC‘seçenekleri geli¸smi¸s çok seviyeli bir Içindekiler
olu¸sturmanıza izin verir. Bunlar dönü¸stürme hattınca
üretilen ara XHTML’de e¸sle¸sen XPath ifadeleridir. Bu XHTML’ye nasıl eri¸sece˘ginizi ö˘grenmek için :ref:‘conversionintroduction a göz atın. Her seçene˘gin yanında temel XPath ifadeleri olu¸sturmanıza yardım edecek bir sihirbaz açan
dü˘gmeler bulunur. Su
¸ basit örnek bu seçenekleri nasıl kullanaca˘gınızı gösterir.
A¸sa˘gıdakine benzer bir XHTML üreten bir girdi belgeniz oldu˘gunu farz edin:
=
{}=
{}@default
=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{}}
1.4. E-Kitap Dönüstürme
¸
57
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
...
\PYG{n+nt}{\PYGZlt{}h2}\PYG{n+nt}{\PYGZgt{}}Section
...
\PYG{n+nt}{\PYGZlt{}h2}\PYG{n+nt}{\PYGZgt{}}Section
...
\PYG{n+nt}{\PYGZlt{}h1}\PYG{n+nt}{\PYGZgt{}}Chapter
...
\PYG{n+nt}{\PYGZlt{}h2}\PYG{n+nt}{\PYGZgt{}}Section
...
\PYG{n+nt}{\PYGZlt{}/body\PYGZgt{}}
\PYG{n+nt}{\PYGZlt{}/html\PYGZgt{}}
1.1\PYG{n+nt}{\PYGZlt{}/h2\PYGZgt{}}
1.2\PYG{n+nt}{\PYGZlt{}/h2\PYGZgt{}}
2\PYG{n+nt}{\PYGZlt{}/h1\PYGZgt{}}
2.1\PYG{n+nt}{\PYGZlt{}/h2\PYGZgt{}}
Seçenekleri s¸u s¸ekilde ayarlıyoruz:
=
{}=
{}@default
=0=1=2=0=1=2Level 1 TOC : //h:h1
Level 2 TOC : //h:h2
Bu i¸slem a¸sa˘gıdaki gibi görünen, otomatik üretilmi¸s iki seviyeli bir ˙Içindekilere sebep olur:
=
{}=
{}@default
=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 ˙Içindekileri desteklemez. Önce bir EPUB Çıktısı ile denemelisiniz. Çalıs¸ırsa, seçece˘giniz bir biçimle deneyin.
˘ olarak kullanılı1.4.8 HTML girdi belgelerini dönüstürürken
¸
resimler bölüm baslı
¸ gı
yor
Bir resmi bölüm ba¸slı˘gı olarak kullanmak istedi˘ginizi var sayalım, ama yine de calibre’nin ˙Içindekileri bölüm ba¸slıklarından sizin için otomatik üretmesini istiyorsunuz. Bunu elde etmek için a¸sa˘gıdaki HTML biçimlemesini kullanın
=
{}=
{}@default
=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{}}
\PYG{n+nt}{\PYGZlt{}/body\PYGZgt{}}
\PYG{n+nt}{\PYGZlt{}/html\PYGZgt{}}
Seviye 1 TOC ayarını //h:h2 yapın. ˙Ikinci bölüm için, calibre ba¸slı˘gı etiketin metni olmadı˘gından <h2> etiketindeki
title özniteli˘ginden alır.
58
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
1.4.9 ˙Içindekiler bölümündeki girdilere metin temin etmek için etiket öznitelikleri
kullanılıyor
Kısmen uzun bölüm ba¸slıklarınız varsa ve ˙Içindekiler bölümünde kısaltılmı¸s hallerini istiyorsanız, bu i¸s için ba¸slık
özniteli˘gini kullanabilirsiniz, örne˘gin:
=
{}=
{}@default
=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:h2/@title yapın. calibre etiket içindeki metni kullanmak yerine, ba¸slı˘gı <h2> etiketlerindeki title de˘gerinden alacaktır. XPath ifadesinde sondaki /@title a dikkat edin, bu biçimi kullanarak
calibre’ye metni istedi˘giniz öznitelikten almasını söyleyebilirsiniz.
˘
1.4.10 Dönüstürme
¸
için seçeneklerin nasıl ayarlanıp/kaydedilecegi
Calibre’de dönü¸stürme i¸slemlerinin ayarlanabilece˘gi iki yer vardır. Birincisi Seçenekler->Dönü¸stürme. Bu seçenekler
dönü¸stürme için varsayılan ayarlardır. Her kitap dönü¸stürmek istedi˘ginizde, ön tanımlı olarak burada bulunan ayarlar
kullanılır.
Ayarları ayrıca her kitap dönü¸stürme i¸sleminde dönü¸stürme ileti¸sim penceresinde de de˘gi¸stirebilirsiniz. Bir kitap dönü¸stürdü˘günüzde, calibre bu kitap için kullandı˘gınız ayarları hatırlar, böylece tekrar dönü¸stürdü˘gü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ü¸stürme ileti¸sim penceresindeki Varsayılan ayarlara geri alma seçene˘giyle dönebilirsiniz. Bir grup kitap
için kaydedilen ayarları, tüm bu kitapları seçip metadata düzenle dü˘gmesine tıklayarak, açılan toplu metadata düzenleme ileti¸sim penceresinin a¸sa˘gı tarafındaki kaydedilen dönü¸stürme ayarlarını kaldırma seçene˘gi ile kaldırabilirsiniz.
Bir grup kitabı Toplu Dönü¸stürdü˘günüzde, ayarlar a¸sa˘gıdaki sırayla alınır (son gelen kazanır):
• Seçenekler->Dönü¸stürme menüsünde ayarlanan varsayılanlardan
• Dönü¸stürülen her kitaptaki (e˘ger varsa) kayıtlı dönü¸stürme ayarlarından. Bu ayar Toplu Dönü¸stürme ileti¸sim
penceresinin sol üstündeki seçenekle kapatılabilir.
• Toplu dönü¸stürme ileti¸sim penceresindeki ayarlardan
Toplu Dönü¸stürmedeki her kitap için son ayarlar kaydedilir ve kitap tekrar dönü¸stürülürse tekrar kullanılır. Toplu
Dönü¸stürmede en yüksek öncelik Toplu Dönü¸stürme ileti¸sim penceresindeki ayarlara verildi˘ginden, bu ayarlar kitaba
özel olanları ezer. Yani yalnızca benzer ayarlara ihtiyacı olan kitapları topluca dönü¸stürmelisiniz. Metadata ve girdi
biçimine özel ayarlar istisnadır. Toplu Dönü¸stürme ileti¸sim penceresi bu iki kategoride ayarları içermedi˘ginden, bu
ayarlar kitaba özel ayarlardan (e˘ger varsa) veya varsayılanlardan alınır.
Not: Herhangi bir dönü¸stürmede kullanılan ayarları görmek için a¸sa˘gı sa˘g kö¸sedeki dönen simgeye tıklayıp dönü¸stürme i¸sine çift tıklayabilirsiniz. Bu i¸slem kullanılan ayarları üst kısma yakın bir yerde gösteren dönü¸stürme kaydını
getirecektir.
1.4. E-Kitap Dönüstürme
¸
59
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
1.4.11 Biçime özel ipuçları
Burada belli biçimlerin dönü¸stü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ü¸stürme ileti¸sim penceresindedir, örne˘gin TXT Girdi veya EPUB Çıktısı.
Microsoft Word belgelerini dönüstür
¸
calibre Microsoft Word 2007 ve üzeri tarafından olu¸sturulan .docx dosyalarını otomatik dönü¸stürebilir. Dosyayı
calibre’ye ekleyin ve dönü¸stüre tıklayın (.docx dosyaları için destek çok yeni oldu˘gundan calibre’nin son sürümünü
çalı¸stırdı˘gınızdan emin olun).
Not: Calibre dönü¸stü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ü¸stürün.
Word’de ba¸slıklarda Heading 1, Heading 2, vs. biçimlerini kullanırsanız calibre otomatik olarak bu ba¸slıkları
temel alan bir ˙Içindekiler üretecektir. Üretilen ˙Içindekileri görüntülemek için çıktı e-kitabı calibre görüntüleyici ile
açın ve ˙Içindekiler dü˘gmesine tıklayın.
Eski .doc dosyaları
Eski .doc dosyalarıyla çalı¸sırken belgeyi Microsoft Word ile HTML olarak kaydedebilir, sonra bu HTML dosyasını
calibre ile dönü¸stürebilirsiniz. HTML olarak kaydederken “Web Sayfası olarak kaydet, Filtrelenmi¸s” seçene˘gini kullanmayı unutmayın, bu seçenek iyi dönü¸sebilen temiz HTML üretir. Word gerçekten karman çorman HTML üretir,
dönü¸stürme uzun sürebilece˘ginden sabırlı olun. Word’un yeni bir sürümüne sahipseniz, do˘grudan docx olarak kaydedebilirsiniz.
Bir di˘ger 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˘grudan dönü¸stürebilir.
TXT belgelerini dönüstür
¸
TXT belgelerinin kalın, yatık yazı vs. gibi iyi tanımlanmı¸s biçimleme s¸ekilleri ya da paragraflar, ba¸slıklar, kısımlar gibi
belge yapıları yoktur, ama ço˘gunlukça kullanılan bir takım genellemeler kullanılmaktadır. Varsayılan olarak calibre
do˘gru biçimleme ve i¸saretlemeleri bu genellemelere bakarak otomatik yapmaya çalı¸sır.
TXT girdisi paragrafların nasıl algılanaca˘gı ayrımına varmak için bir takım seçene˘gi destekler.
Paragraf Biçemi: Oto Paragrafların nasıl tanımlandı˘gını otomatik olarak anlamak için metin dosyalarını
analiz eder. Bu seçeneke ço˘gunlukla iyi çalı¸sır, beklenmedik sonuçlarla kar¸sıla¸sırsanız elle ayarlanan
seçeneklerden birini deneyin.
Paragraf Biçemi: Blok Bir ya da fazla bo¸s satırın paragraf sınırı oldu˘gunu varsayar:
=
{}=
{}@default
=0=1=2=0=1=2
This is the first.
This is the
second paragraph.
Paragraf Biçemi: Tekli Her satırın bir paragraf oldu˘gunu varsayar:
20 http://calibre-ebook.com/downloads/demos/demo.docx
60
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
=
{}=
{}@default
=0=1=2=0=1=2
This is the first.
This is the second.
This is the third.
Paragraf Biçemi: Yazdırma Her paragrafın bir girintiyle ba¸sladı˘gını varsayar (bir tab veya 2+ bo¸sluk).
Paragraflar sonraki satır girintiyle ba¸sladı˘gında sona erer:
=
{}=
{}@default
=0=1=2=0=1=2
This is the
first.
This is the second.
This is the
third.
Paragraf Biçemi: Biçimlendirilmemi¸s Belgenin bir biçimi olmadı˘gı, ama alt satır sonu kullandı˘gı varsayılır. Noktalama i¸saretleri ve ortalama satır uzunlu˘gu kullanılarak paragraflar tekrar olu¸sturulmaya
çalı¸sılır.
Biçimleme Biçemi: Oto Kullanılan biçimlendirme i¸saretçileri türü algılanmaya çalı¸sılır. ˙I¸saretçi kullanılmamı¸ssa sezgisel biçimleme uygulanır.
Biçimleme Biçemi: Sezgisel Belge genel bölüm ba¸slıkları, sahne araları, ve yatık kelimeler için analiz
edilir ve dönü¸stürme sırasında uygun HTML i¸saretçileri uygulanır.
Biçimleme Biçemi: Markdown calibra ayrıca TXT girdisini markdown olarak bilinen dönü¸stürme ön
i¸sleminden geçirmeyi de destekler. Markdown TXT belgelerine kalın, yatık yazı, bölüm bal¸sıkları,
tablolar, listeler, ˙Içindekiler vs. gibi temel biçimleme eklemeye yarar. Bölüm ba¸slıklarının ba¸sını
# ile i¸saretlemek ve bölüm XPath algılama ifadesini “//h:h1” olarak ayarlamak TXT belgesinden
üretilecek düzgün bir ˙Içindekiler için en kolay yöntemdir. Markdown söz dizimi ile ilgili daha fazla
bilgiyi daringfireball21 dan ö˘grenebilirsiniz.
Biçimleme Biçemi: Hiçbiri Metne ek biçimleme uygulamaz, belge de˘gi¸sikli˘ge u˘gramadan html’ye dönü¸stürülür.
PDF belgelerini dönüstür
¸
PDF belgesi dönü¸stürülebilecek en kötü biçimlerden birisidir. Sabit sayfa boyutlu ve sabit yerle¸stirilmi¸s metin biçimlidirler. Bunun anlamı, bir paragrafın nerede bitip nerede ba¸sladı˘gını anlamanın çok zor oldu˘gudur. calibre paragrafları
yapılandırılabilir bir Satır Kaydırmama Etmeni ile kaydırmamaya çalı¸sacaktır. Bu, bir satırın kaydırılmaması gereken
satır uzunlu˘gunun belirlenmesinde kullanılan bir ölçüdür. Geçerli de˘gerler 0 ve 1 arasında bir ondalık sayıdır. Varsayılanı 0.45’dir, ortalama satır uzunlu˘gunun biraz altı. Kaydırılmayan daha çok metin için bu de˘geri küçültün. Daha az
içermesi için de artırın. Bu de˘geri PDF Girdisi altındaki dönü¸stürme ayarlarından ayarlayabilirsiniz.
Ayrıca, genellikle belgenin bir parçası olarak metin içeri˘gine eklenecek ba¸slık ve altbilgileri vardır. Bu sorunu azaltmak
için Ara ve De˘gi¸stir panelini kullanarak ba¸slık ve altbilgileri kaldırın. Ba¸slık ve altbilgi metinden çıkarılmazsa, paragraf
kaydırmamayı bir kenara atabilir. Ba¸slık ve altbilgi kaldırma seçeneklerinin nasıl kullanılaca˘gını ö˘grenmek için All
about using regular expressions in calibre (sayfa 197) okuyun.
PDF girdisinin bazı kısıtlamaları:
• Karma¸sık, çok-sütunlu, ve resim temelli belgeler desteklenmez.
21 http://daringfireball.net/projects/markdown/syntax
1.4. E-Kitap Dönüstürme
¸
61
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
• Belgeden vektör resim ve tablo çıkarma i¸slemi de desteklenmez.
• Bazı PDF’ler ll veya ff veya fi vs. temsil etmek için özel kabartmalar kullanırlar. Bunların dönü¸stürülmesinin
çalı¸sıp çalı¸smayaca˘gı PDF içinde nasıl temsil edildiklerine ba˘glıdır.
• Ba˘glantılar ve ˙Içindekiler desteklenmiyor
˙
• Ingilizce
dı¸sındaki karakterleri temsil için gömülü olarak evrensel kod dı¸sı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˘grafından yapılmı¸slardır. Böyle durumlarda calibre
PDF’i görüntüledi˘ginizde görece˘ginizden çok farklı sonuç verecek olan OCRed metni kullanır
• Sa˘gdan sola yazılan diller ve matematik karakter dizisi gibi karma¸sık metin görüntülemek için kullanılan
PDF’ler düzgün dönü¸stürülmeyecektir
Tekrar üstünden geçelim PDF gerçekten, ama gerçekten kötü bir girdi formatıdır. ˙Illa PDF kullanmanız gerekiyorsa,
girdi PDF’ine ba˘glı 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˘ger CBZ/CBR dosyalarını içeren bir zip dosyasıdır.
Bunların yanında .cbc dosyası UTF-8 ile kodlanmı¸s basit bir comics.txt metin dosyası içermelidir. comics.txt dosyası
.cbc dosyasındaki çizgi roman listesini a¸sa˘gıda görüldü˘gü gibi dosyasismi:ba¸slık s¸eklinde içerir:
=
{}=
{}@default
=0=1=2=0=1=2one.cbz:Chapter One
three.cbz:Chapter Three
two
Böylece .cbc dosyası s¸unu içerecektir:
=
{}=
{}@default
=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 ˙Içindekiler bölümüyle bir
e-kitaba çevirir.
EPUB gelismi
¸ s¸ biçimleme tanıtımı
EPUB dosyaları için çe¸sitli geli¸smi¸s biçimlendirmeler s¸u tanıtım dosyasında22 gösterilmi¸stir. Dosya calibre kullanılarak kendi EPUB olu¸sturma denemelerinizde s¸ablon olarak kullanılmak için elle kodlanmı¸s HTML’den olu¸sturulmu¸stur.
Olu¸sturuldu˘gu kaynak HTML kullanılabilirdir demo.zip23 . ZIP dosyasından EPUB olu¸sturmak için kullanılan ayarlar:
=
{}=
{}@default
=0=1=2=0=1=2ebook\PYGZhy{}convert demo.zip .epub \PYGZhy{}vv \PYGZhy{}\PYGZhy{}authors \PYGZdq{}Kovid
Bu dosya EPUB’ın potansiyelini ara¸stırdı˘gından, calibre’nin yerle¸sik okuyucusu dı¸sındaki bir çok okuyucuda burdaki
geli¸smi¸s biçimlemeler çalı¸smayacaktır.
22 http://calibre-ebook.com/downloads/demos/demo.epub
23 http://calibre-ebook.com/downloads/demos/demo.zip
62
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
ODT belgelerini dönüstür
¸
calibre ODT (OpenDocument Metni) dosyalarını do˘grudan dönü¸stürebilir. Belgenizi biçimlendirmek için biçemler
kullanmalı ve do˘grudan biçimleme kullanmaktan kaçınmalısınız. Belgenize resim eklerken, resimleri paragrafa ba˘glamalısınız, bir sayfaya ba˘glanmı¸s resimlerin hepsi dönü¸stürmenin ba¸sında yer alacaktır.
Bölümleri otomatik algılamak için, onları yerle¸sik biçim ‘Heading 1’, ‘Heading 2’, ..., ‘Heading 6’ (‘Heading 1’
HTML etiketi <h1> e denktir, ‘Heading 2’ <h2> ye vs.) ile i¸saretlemelisiniz. Dönü¸stürme yaparken calibre’de kullandı˘gınız biçimi ‘Bölümleri algıla’ kutusunda girebilirsiniz. Örne˘gin:
• Bölümleri ‘Heading 2’ biçimi ile i¸saretlerseniz, ‘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¸saretlendi˘gi iç içe bir TOC için‘‘//h:h2|//h:h3‘‘ girmelisiniz. TOC - Dönü¸stürme sayfasında ‘Seviye 1 TOC’ kutusunu //h:h2 ve ‘Seviye 2 TOC’ kutusunu //h:h3
olarak ayarlayın.
˙Iyi bilinen belge özellikleri (Ba¸slık, Anahtar kelimeler, Açıklama, Olu¸sturan) 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ı˘gınızda (Dosya->Özellikler->Özel Özellikler) etkinle¸sen özel bir özellik
olan opf.metadata (‘Evet veya Hayır’ biçimli) geli¸smi¸s özellik dönü¸stürme kipi bulunmaktadır. Bu özellik calibre
tarafından algılanırsa, a¸sa˘gıdaki özellikler tanınır (opf.authors belgeyi olu¸sturanı ezer):
=
{}=
{}@default
=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˘giniz resmi opf.cover olarak isimlendirebilirsiniz (sa˘g 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˘ginden, i¸slem paragrafı belgeden çıkaracaktır (yalnızca tek içerik kapak ise!). Ama bu
yalnızca adlandırılan resimle çalı¸sır!
Kapak algılamayı kapatmak için opf.nocover (‘Evet veya Hayır’ türünde) geli¸smi¸s kipte Evet olarak ayarlayabilirsiniz.
PDF’e dönüstürme
¸
PDF’e dönü¸stürmede karar verece˘giniz ilk, en önemli ayar sayfa boyutudur. Varsayılan olarak, calibre Çıktı profili
tarafından belirlenmi¸s 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¸sturmak için dönü¸stürme penceresindeki PDF Çıktısı
altındaki Sayfa boyutunu ez seçene˘gini kullanın.
Baslıklar
¸
ve Altbilgiler
Ba¸slık ve altbilgi s¸ablonları belirleyerek PDF’in her sayfasına keyfi ba¸slık ve alt bilgi ekleyebilirsiniz. Sablonlar
¸
ba¸slık
ve altbilgi alanlarında gerçeklenen HTML kodlarından ba¸ska bir s¸ey de˘gildir. Örne˘gin her sayfanın altında ortalanmı¸s
olarak sayfa numaraları göstermek için, a¸sa˘gıdaki altbilgi s¸ablonunu kullanın:
1.4. E-Kitap Dönüstürme
¸
63
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
=
{}=
{}@default
=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˘gi¸stirir. Hatta tek ve çift sayfalar için de˘gi¸sik
içerik bile koyabilirsiniz, örne˘gin a¸sa˘gıdaki ba¸slık s¸ablonu tek sayfalarda ba¸slı˘gı, çift sayfalarda yazarı gösterir:
=
{}=
{}@default
=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ü¸stürülen belgenin ba¸slı˘gı ve yazarı ile de˘gi¸stirir.
Aynı zamanda a¸sa˘gıdaki ba¸slık s¸ablonunda gösterildi˘gi gibi metni sol ve sa˘g kö¸selerde gösterebilir, yazı tipi boyutunu
de˘gi¸stirebilirsiniz:
=
{}=
{}@default
=0=1=2=0=1=2\PYGZlt{}div style=\PYGZdq{}font\PYGZhy{}size:x\PYGZhy{}small\PYGZdq{}\PYGZgt{}\PYGZlt{}p
Bu ba¸slı˘gı solda, yazarı sa˘gda ana metinden küçük bir boyutta gösterir.
Mevcut kısmı da s¸ablonlarda a¸sa˘gıda gösterildi˘gi gibi kullanabilirsiniz:
=
{}=
{}@default
=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˘gi¸stirilir. Bu isimler belgenin (PDF Özeti) ˙Içindekiler metadatasından
alınır. Belgenin ˙Içindekileri yoksa bo¸s metinle de˘gi¸stirilir. Tek bir PDF sayfasının birden çok kısmı varsa, sayfadaki
ilk kısım kullanılacaktır.
Ba¸slık ve altbilgi içinde javascript bile kullanabilirsiniz, örne˘gin, a¸sa˘gıdaki s¸ablon sayfa numaralarının 1 yerine 4 den
ba¸slamasını sa˘glar:
=
{}=
{}@default
=0=1=2=0=1=2\PYGZlt{}p id=\PYGZdq{}pagenum\PYGZdq{} style=\PYGZdq{}text\PYGZhy{}align:center;\PYGZdq{}
Not: Ba¸slık ve altbilgi eklerken sayfa alt ve üst kenar bo¸sluklarını dönü¸stürme ileti¸sim penceresindeki Sayfa Ayarları
kısmından yeterince büyük de˘gerlere ayarladı˘gınızdan emin olun.
Yazdırılabilir ˙Içindekiler
Ayrıca PDF sonuna her kısmın sayfa numaralarını içeren y azdırılabilir bir ˙Içindekiler ekleyebilirsiniz. PDF’i sayfaya
yazdırmaya niyetiniz varsa çok faydalıdır. PDF’i elektronik cihazda kullanacaksanız, PDF Özeti bu i¸slevselli˘gi sa˘glar
ve ön tanımlı olarak üretilir.
Üretilen ˙Içindekiler bölümünün görünümünü dönü¸stürme ileti¸sim penceresindeki Görünüm & Doku altındaki Ek CSS
dönü¸stürme ayalarından özelle¸stirebilirsiniz. Kullanılan varsayılan css a¸sa˘gıda listelenmi¸stir, basitçe kopyalayın ve
istedi˘giniz de˘gi¸siklikleri yapın.
64
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
=
{}=
{}@default
=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˘gi¸siklik yaptıkça güncellenen bir canlı
ön izlemeyi gösterir. Ayrıca genel temizlik ve düzeltme i¸sleri için çe¸sitli otomatize araç da içerir.
Bu düzenleyiciyi calibre’de herhangi bir kitaba sa˘g tıklayıp Kitabı düzenle seçerek kullanabilirsiniz.
1.5. E-kitap Düzenleme
65
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
˙
Içindekiler
• Temel i¸s akı¸sı (sayfa 66)
• Dosya Tarayıcı (sayfa 69)
– Dosyaları yeniden adlandırma (sayfa 70)
– Dosyaları birle¸stirme (sayfa 70)
– Metin dosyası sırası de˘gi¸stirme (sayfa 70)
– Kapa˘gı i¸saretleme (sayfa 70)
– Dosyaları siliyor (sayfa 71)
– Dosyaların dı¸sa aktarımı (sayfa 71)
– Yeni resim/yazı tipi/vs. ekleme veya yeni bo¸s dosyalar olu¸sturma (sayfa 71)
– Dosyaları yer de˘gi¸stirme (sayfa 71)
– Biçim sayfalarını HTML dosyalarına etkin biçimde ba˘glama (sayfa 71)
• Bul & De˘gi¸stir (sayfa 71)
– Kaydedilmi¸s aramalar (sayfa 72)
– ˙I¸slev kipi (sayfa 72)
• Otomatik araçlar (sayfa 72)
– ˙Içindekileri Düzenle (sayfa 72)
– Kitabı Kontrol Et (sayfa 74)
– Bir kapak ekle (sayfa 75)
– Ba¸svurulan yazı tiplerinin gömülmesi (sayfa 75)
– Gömülü yazı tiplerini altkümeleme (sayfa 75)
– Noktalama i¸saretlerini toparlamak (sayfa 75)
– Kullanılmayan CSS kurallarını kaldırma (sayfa 75)
– HTML onar (sayfa 75)
– Dosyaların güzelle¸stirilmesi (sayfa 76)
– Satır Arası ˙Içindekiler Ekle (sayfa 76)
– Anlamsal Ayarlar (sayfa 76)
– Süzgeç biçem bilgisi (sayfa 76)
• Kontrol noktaları (sayfa 76)
• Canlı Ön ˙Izleme paneli (sayfa 78)
– HTML dosyalarının ayrılması (sayfa 79)
• Canlı CSS paneli (sayfa 80)
• Çe¸sitli Araçlar (sayfa 80)
– ˙Içerik Tablosu Görünümü (sayfa 81)
– Kitaptaki kelimelerin yazım denetimi (sayfa 81)
– Özel karakter eklemek (sayfa 82)
– Kod denetleme görünümü (sayfa 83)
– Dosyaları biçime göre klasörle (sayfa 83)
– Di˘ger e-kitap biçimlerindeki dosyaları EPUB olarak içe aktarma (sayfa 83)
– The Reports tool (sayfa 92)
• Special features in the code editor (sayfa 93)
– Syntax highlighting (sayfa 93)
– Context sensitive help (sayfa 93)
– Auto-complete (sayfa 93)
– Snippets (sayfa 94)
1.5.1 Temel is¸ akısı
¸
Not: Calibre düzenleyici için bir video tanıtımı s¸uradadır24 .
24 http://calibre-ebook.com/demo#tutorials
66
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Kitap düzenleme aracıyla bir kitabı ilk defa açtı˘gınızda, solda bir dosya listesiyle kar¸sılanırsınız. Bunlar kitap içeri˘gini
olu¸sturan HTML dosyaları, biçem sayfaları, resimler vs. dir. Bir dosyayı düzenlemek için basitçe sa˘g tıklayın. Bir kaç
küçük düzeltmeden ba¸ska bir s¸eyler yapacaksanız, HTML e˘gitimi25 ve CSS E˘gitimi26 bilmeniz gerekti˘gini unutmayın.
Düzenleyicide HTML veya CSS’e de˘gi¸siklikler yaptıkça, de˘gi¸siklikler canlı olarak sa˘gdaki panelde ön izlenecektir.
Yaptı˘gınız de˘gi¸sikliklerin görünümünden mutlu oldu oldu˘gunuzda, Kaydet dü˘gmesine tıklayın veya Dosya->Kaydet
yolunu kullanarak de˘gi¸siklikleri e-kitaba kaydedin.
Kullanı¸slı bir özellik Kontrol noktaları‘dır. Bazı iddialı düzenlemelere giri¸smeden önce, bir kontrol noktası olu¸sturabilirsiniz. Kontrol noktası kitabınızın mevcut durumunu korur ve ilerde yaptı˘gınız de˘gi¸siklikleri be˘genmezseniz kontrol
noktasını olu¸sturdu˘gunuz s¸ekline geri dönebilirsiniz. Kontrol noktası olu¸sturmak için, :guilabel:‘Düzenle->Kontrol
noktası olu¸stur kullanın. Kontrol noktaları genel arama ve yer de˘gi¸stirme gibi otomatik araçları kullandı˘gınızda sizin
için otomatik olarak da olu¸sturulurlar. Kontrol noktası mekanizması tekli dosya düzenlerken normal Geri al/yinele
mekanizmasına ekdir. Kontrol noktaları dosyalar kitapta da˘gılmı¸s durumdayken faydalıdır.
Kitap düzenleme için temel akı¸s bu s¸ekildedir – Bir dosya aç, de˘gi¸siklikler yap, ön izle ve kaydet. Bu kılavuzun devamı
belirli görevleri efektif yapabilmeniz için mevcut çe¸sitli araçları ve özellikleri tartı¸sacaktır.
25 http://html.net/tutorials/html/
26 http://html.net/tutorials/css/
1.5. E-kitap Düzenleme
67
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
68
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
1.5.2 Dosya Tarayıcı
1.5. E-kitap Düzenleme
69
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Dosya Tarayıcısı düzenledi˘giniz kitap içindeki çe¸sitli dosyaların genel görünümünü verir. Dosyalar kategorilenmi¸slerdir, üstte metin (HTML) dosyaları, ardından stil (CSS) sayfaları s¸eklinde gider. Düzenlemeye ba¸slamak 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˘ger 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ı¸stırılmı¸s oldu˘gunu unutmayın, yani kitabın son boyutu dosyaların boyutu toplamı
de˘gildir.
Bir çok dosyanın kitapta özel anlamı vardır. Bunların genellikle isminin yanında bu özel anlamı gösteren bir simge
bulunur. Örne˘gin soldaki resim içinde, cover_image.jpg ve titlepage.xhtml dosyalarının yanlarında bir kapak simgesi
oldu˘gunu görebilirsiniz, bu da onların kitap kapak resmi ve ba¸slık sayfası oldu˘gunu gösterir. Benzer olarak, content.opf
dosyası yanında da kitap metadatasını içerdi˘gini gösteren bir metadata simgesi vardır, toc.ncx dosyasının yanında da
bir T simgesi vardır, bu da ˙Içindekiler oldu˘gunu gösterir.
Tekli dosyalar üstünde bir çok hareketi sa˘g tıklayarak sa˘glayabilirsiniz.
Dosyaları yeniden adlandırma
Tek bir dosyayı sa˘g tıklayarak ve Yeniden adlandır seçerek yeniden adlandırabilirsiniz. Bir dosyayı yeniden adlandırmak kitapta ona olan tüm ba˘gları ve referansları günceller. Yani tek yapmanız gereken yeni ismi sa˘glamaktı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˘gin tüm HTML dosyalarının Chapter-1.html, Chapter-2.html s¸eklinde isimlenmesini istiyor
olabilirsiniz. Bu durumda sa˘g tıklayıp :guilabel:‘Toplu yeniden adlandırma‘yı seçin. Bir ön ek ve otomatik numaralandırmanın hangi rakamdan ba¸slamasını istiyorsanız girin, OK tıklayın ve hepsi bu kadar.
Dosyaları birlestirme
¸
Bazen, iki HTML dosyasını veya iki CSS dosyasını beraber birle¸stirmek isteyebilirsiniz. Bazen her¸seyin tek bir dosyada olması faydalı olabilir. Aklınızda olsun, fazla içeri˘gi tek bir dosyaya koymak bu e-kitabı bir okyucuda okurken
performans problemlerine yol açabilir.
Birden çok dosyayı beraber birle¸stirmek için, Ctrl tu¸suna basılı tutarak seçin (aynı biçimde dosyaları seçti˘ginize emin
olun, ya tüm HTML dosyalarını ya tüm CSS dosyalarını vs.). Sonra sa˘g tıklayın ve birle¸stiri seçin. Hepsi bu, calibre
dosyaları birle¸stirir, birle¸stirilen dosyaya tüm ba˘glantı ve referansları da düzeltir. Dosyaların birle¸stirilmesinin bazen
metin biçiminin de˘gi¸smesine yol açaca˘gını unutmayın, her dosya de˘gi¸sik biçim sayfası içeriyor olabilir.
˘ stirme
Metin dosyası sırası degi
¸
Kitabı okurken metin (HTML) dosyalarının hangi sırada açılaca˘gı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. Ö˘geleri di˘gerlerinin
arasına bırakmanız gerekir üstüne de˘gil, alı¸sana kadar bu i¸s biraz zor gelebilir.
˘ isaretleme
Kapagı
¸
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¸ska bir resim ayarlamak isterseniz, dosyaya sa˘g tıklayıp :guilabel:‘Kapak olarak
i¸saretle‘yi seçebilirsiniz.
Ek olarak, EPUB dosyalarının bir ba¸slık sayfası kavramı vardır. Ba¸slık sayfası kitabın ba¸slık sayfası/kapa˘gı olarak
davranan bir HTML dosyasıdır. EPUB düzenlerken bir HTML dosyasını ba¸slık sayfası olarak sa˘g tıklayarak ayarlayabilirsiniz. Seçti˘giniz dosyanın yalnızca kapak bilgisi içerdi˘ginden emin olun. Ba¸ska bir içeri˘gi olursa, ilk bölüm
70
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
gibi, kullanıcı calibre’de bu EPUB’I ba¸ska bir biçime dönü¸stürdü˘günde bu içerik silinir. Bunun sebebi dönü¸stürme
sırasında, calibre’nin i¸saretli ba¸slık sayfasının sadece kapak bilgisi içerdi˘gini var saymasındandır.
Dosyaları siliyor
Dosyaları sa˘g tıklayarak ya da seçip Delete tu¸suna basarak silebilirsiniz. Bir dosyayı silmek OPF dosyasından ona
olan tüm referansları da siler. Ancak ba¸ska yerlerdeki referanslar silinmez, Kitabı Kontrol Et aracını kullanarak bunları
kolayca silebilir/yer de˘gi¸stirebilirsiniz.
Dosyaların dısa
¸ aktarımı
Dosyaları kitaptan bilgisayarınızdaki ba¸ska bir yere aktarabilirsiniz. Dosya üstünde özel olarak ba¸ska araçlarla çalı¸smak istiyorsanız faydalı olabilir. Bu i¸slem için dosyaya sa˘g tıklayın ve :guilabel:‘Dı¸sa aktar‘ı seçin.
Dı¸sa aktarılan dosya üstünde çalı¸smayı bitirdi˘ginizde, kitaba yeniden, dosyaya sa˘g tıklayıp :guilabel:‘Dosya ile yer
de˘gi¸stir...‘i seçerek geri aktarabilirsiniz, bu da kitaptaki dosyayı daha önce dı¸sa aktardı˘gınız dosyayla de˘gi¸stirmenize
olanak verir.
Yeni resim/yazı tipi/vs. ekleme veya yeni bos¸ dosyalar olusturma
¸
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¸s bir html dosyası ya da biçim dosyasını basitçe yeni dosya için açılan kutuya ismini yazarak olu¸sturmanız olana˘gını verir.
Ayrıca birden çok dosyayı tek seferde Dosya->Dosya içe aktar ile kitaba aktarabilirsiniz.
˘ stirme
Dosyaları yer degi
¸
Kitapta mevcut dosyaları sa˘g tıklayıp yer de˘gi¸stiri seçerek kolayca de˘gi¸stirebilirsiniz. De˘gi¸stirilen dosyanın farklı bir
adı varsa, bu i¸slem tüm referansları ve ba˘glantıları da günceller.
˘
Biçim sayfalarını HTML dosyalarına etkin biçimde baglama
Kolay bir yöntem olarak, birden çok HTML dosyasını Dosya Tarayıcı ile seçebilir, sa˘g tıklayıp Biçim dosyalarını ba˘glamayı seçerek calibre’nin otomatik olarak seçilen tüm HTML dosyalarında bu biçim dosyaları için <link> etiketlerini
eklemesini sa˘glayabilirsiniz.
˘ stir
1.5.3 Bul & Degi
¸
Kitap Düzenlenin mevcut dosyada, tüm dosyalar içinde veya belli bir bölgede arama ve metin de˘gi¸stirme yapmanıza
imkan veren çok güçlü bir arama ve yer de˘gi¸stirme arayüzü vardır. Normal arama veya düzenli ifadelerle arama
yapabilirsiniz. Geli¸smi¸s arama için düzenli ifadelerin nasıl kullanılaca˘gını ö˘grenmek için bknz All about using regular
expressions in calibre (sayfa 197).
1.5. E-kitap Düzenleme
71
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Aramayı ba¸slatın ve Ara->Bul/de˘gi¸stir menü girdisi ile yer de˘gi¸stirin (HTML veya CSS dosyası düzenliyor olmalısınız).
Bulmak istedi˘giniz metni Arama kutusuna yazın ve Yer de˘gi¸stir kutusuna da de˘gi¸stirilecek halini. Sonraki e¸sle¸smeyi
bulmak için uygun dü˘gmelere tıklayabilir, mevcut e¸sle¸smeyi veya tüm e¸sle¸smeleri de˘gi¸stirebilirsiniz.
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ı¸smasını sa˘glayabilirsiniz. Ayrıca arama kipini normal (karakter dizisi) arama veya düzenli ifade
arama olarak seçebilirsiniz.
Bir arama için tüm e¸sle¸smeleri Ara->Hepsini say ile sayabilirsiniz. Sayma açılır kutudan hangi dosyaları/bölgeleri
seçtiyseniz onlar üzerinde çalı¸sı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˘gi¸stirmenin tüm gücünü toplamak için, düzenli ifadeler kullanmanız gerekir. Bknz
All about using regular expressions in calibre (sayfa 197).
Kaydedilmis¸ aramalar
Çokça kullandı˘gınız arama/yer de˘gi¸stirme ifadelerini kaydedip birden fazla kez kullanabilirsiniz. Bir aramayı kaydetmek için Ara kutusuna sa˘g tıklayıp :guilabel:‘Mevcut aramayı kaydet‘i seçin.
Kaydedilmi¸s aramalar ileti¸sim penceresini Ara->Kaydedilen Aramalar ile getirebilirsiniz. Bu i¸slem uygulayabileceg˘ iniz arama ve yer de˘gi¸stirme ifadelerini getirir. Ctrl Tu¸sunu basılı tutarak listeden birden çok girdiyi de seçebilir ve
birden çok arama yer de˘gi¸stirme i¸slemini tek seferde gerçekle¸stirebilirsiniz.
˙Islev
¸
kipi
˙I¸slev kipi her Arama/yer de˘gi¸stirmede çalı¸stırılacak güçlü python fonksiyonları yazmanızı sa˘glar. ˙I¸slev kipinde istedi˘giniz gibi metinle oynayabilirsiniz. Daha fazla bilgi için, bknz Düzenleyicide Arama & De˘gi¸stirme için Fonksiyon
Kipi (sayfa 83).
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¸sebilirsiniz.
˙Içindekileri Düzenle
˙Içindekileri kolayca düzenlemek için özel bir araç vardır. Araçlar->Içindekiler->
˙
˙
Içindekileri
Düzenle ile ba¸slatabilirsiniz.
72
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
˙Içindekileri Düzenle aracı solda mevcut (e˘ger varsa) ˙Içindekileri gösterir. Metnini de˘gi¸stirmek için herhangi bir girdiye
çift tıklayın. Ayrıca girdileri sa˘gdaki dü˘gmeleri kullanarak veya sürükle bırak yaparak yeniden düzenleyebilirsiniz.
Mevcut bir ˙Içindekileri olmayan kitaplar için, bu araç size metinden otomatik ˙Içindekiler olu¸sturmanız için çe¸sitli
seçenekler sunar. Belgedeki ba¸slıklardan, ba˘glantılardan, dosyalardan vs ˙Içindekiler olu¸sturabilirsiniz.
Girdileri tıklayıp Bu girdinin gösterdi˘gi konumu de˘gi¸stir ile düzenleyebilirsiniz. Bu i¸slem kitabın küçük bir ön izlemesini açar, basitçe fare i¸saretçisini kitap görüntüleme paneli üzerinde hareket ettirin ve girdinin göstermesini istedi˘giniz
noktaya tıklayın. Kalın bir yeil çizgi konumu gösterecektir. Konumdan memnun oldu˘gunuzda OK tıklayın.
1.5. E-kitap Düzenleme
73
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Kitabı Kontrol Et
Kitabı Kontrol Et aracı kitabınızı gerçek okuyucu cihazlarda olu¸sabilecek problemlere kar¸sı arar. Etkinle¸stirmek 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˘gi sunar. Hataya çift tıklayarak hatanın
bulundu˘gu noktayı düzenleyicide açabilir, kendiniz düzeltebilirsiniz.
Gerçekle¸stirilen kontrollerden bazıları:
• Bozuk HTML i¸saretçileri. ˙Iyi biçimlenmi¸s XML olarak ayrı¸stırılamayan tüm HTML i¸saretçileri raporlanır. Düzeltilmesi biçimlemenizin tüm ba˘glamda olması gibi çalı¸stı˘gını garantiler. calibre bu hataları otomatik düzeltebilir, ama otomatik düzeltmenin beklenmedik etkileri olabilir, dikkatli kullanın. Her zaman oldu˘gu gibi, otomatik
düzeltmeden önce bir kontrol noktası olu¸sturulur ki kolayca geri dönebilin. Otomatik düzeltme i¸saretçilerin
oldukça hata payı bırakan HTML5 algoritmasıyla ayrı¸stırılmasıyla, ardından XML’e dönü¸stürülmesiyle yapılır.
74
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.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˘glantılar. Kitap içinde eksik ya da bulunmayan dosyaları gösteren ba˘glantılar varsa raporlanır.
• Referansı olmayan dosyalar. Ba¸ska bir dosya tarafından referans edilmeyen veya omurgada olmayan dosyalar
raporlanır.
• OPF dosyalarında kopya omurga veya manifesto ö˘geleri, kırık idref’ler veya meta kapak etiketleri, eksik gerekli
kısımlar vs.
• Kitabın okuyucu cihazlarda bozuk çalı¸smasına sabep olacak bilinen problemlere uyumluluk kontrolleri.
Bir kapak ekle
Araçlar->Kapak ekle kullanarak kitaba kolaylıkla bir kapak ekleyebilirsiniz. Bu i¸slem mevcut bir resmi seçip kapak
yapmanızı veya yeni bir resmi içe aktarıp kapak yapmanızı sa˘glar. EPUB dosyalarını düzenlerken, kapak için HTML
kapsayıcı otomatik üretilir. Kitapta mevcut bir kapak bulunursa, yer de˘gi¸stirilir. Araç ayrıca OPF’de kapak dosyalarını
düzgünce i¸saretleme i¸sini de otomatik halleder.
Basvurulan
¸
yazı tiplerinin gömülmesi
Araçlar->Ba¸svurulan fontları göm ile eri¸silen bu araç kitapta ba¸svurulan tüm yazı tiplerini bulur ve gömülü de˘gillerse,
bilgisayarınızda arama yapar ve bulunursa kitaba gömer. Bu i¸slemi yapmadan ticari yazı tiplerini gömmek için gerekli
izniniz oldu˘gundan emin olun lütfen.
Gömülü yazı tiplerini altkümeleme
Araçlar->Gömülü yazı tiplerini altkümele ile eri¸silen bu araç, kitaptaki tüm yazı tiplerini kitapta gerçekten mevcut
olan kabartmaları içerecek s¸ekilde eksiltir. Bu i¸slem 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ı¸smayacaktır. Yani bunu i¸s akı¸sında son adım olarak yapın.
Noktalama isaretlerini
¸
toparlamak
Düz metin tire i¸saretlerini, elipsleri, tırnakları, çift çizgileri, vs. tipografik olarak düzgün denklerine dönü¸stür. Algoritmanın bazen yanlı¸s sonuç üretebilece˘gini not edin, özellikle daraltmanın ba¸sında tek tırnak i¸saretleri varken.
Araçlar->Noktalama i¸saretlerini toparla ile eri¸slebilir.
Kullanılmayan CSS kurallarını kaldırma
Biçim sayfalarından ve <style> etiketlerinden kullanılmayan tüm CSS kurallarını çıkar. Üretim s¸ablonlarından olu¸sturulan bazı kitaplar gerçekten bir içerikle e¸sle¸smeyen çok sayıda CSS kuralı içeriyor olabilir. Bu ek kurallar onları
i¸sleyecek okuyucuları yava¸slatabilir. Araçlar->Kullanılmayan CSS’i kaldır ile eri¸silebilir.
HTML onar
Bu araç XML olarak ayrı¸stırılamayan HTML’yi iyi biçimlenmi¸s XML’e döndürür. E-kitaplarda iyi biçimlenmemi¸s
XML oldukça yaygındır, bu araç bu tarz HTML’yi düzeltme i¸sini otomatik hale getirir. Araç HTML’yi HTML5 algoritmasıyla ayrı¸stırır (tüm modern tarayıcılarda kullanılan algoritma) sonucu XML’e dönü¸stürür. Otomatik düzeltmenin
1.5. E-kitap Düzenleme
75
calibre Kullanıcı Kılavuzu, Sürüm 2.24.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¸silebilir.
Dosyaların güzellestirilmesi
¸
Bu araç tüm HTML ve CSS dosyalarını otomatik biçimler böylece “güzel görünürler”. Kod otomatik girintilenir yani
satırlar güzel hizalanır, bo¸s satırlar gerekli yerlere eklenir vs. Güzelle¸stirme ayrıca kırık HTML/CSS’i de otomatik
düzeltir. Otomatik düzeltme olmasın istiyorsanız, önce Kitabı Kontrol Et kullanarak problemleri düzeltin ve ardından
güzelle¸stirmeyi çalı¸stırın. Araçlar->Tüm dosyaları güzelle¸stir ile eri¸silebilir.
Not: HTML’de her metin CSS bo¸s satır bildirimi ile çok miktarda bo¸sluk içerebilir. Yani güzelle¸stirme i¸slemi
HTML’nin gerçeklenmesini de˘gi¸stirebilir. Bundan olabildi˘gince kaçınmak için, güzelle¸stirme algoritması yalnızca
di˘ger blok seviyesinde etiketleri içeren blok seviyesi etiketleri güzelle¸stirir. Yani örne˘gin, <p> etiketi içindeki metnin bo¸slukları de˘gi¸stirilmez. Ama sadece ba¸ska <p> ve <div> etiketlerini içeren <body> etiketi güzelle¸stirilir. Bu,
uygun blok seviyesi etiketi olmadı˘gı için bazı dosyalar güzelle¸stirmeden hiç etkilenmiyor anlamına da gelir. Böyle
durumlarda daha az dikkatli de˘gi¸sik güzelle¸stirme araçları kullanabilirsiniz, örne˘gin: HTML Tidy27 .
Satır Arası ˙Içindekiler Ekle
˙
˙
Normalde e-kitaplarda, Içindekiler
ana metinden ayrıdır ve e-kitap okuma aygıtında özel bir Içindekiler
dü˘gmesi/menüsü ile eri¸silir. calibre’nin kitabın metninin bir parçası olacak olan satır arası bir ˙Içindekileri otomatik olarak
üretmesini sa˘glayabilirsiniz. Mevcut tanımlanmı¸s ˙Içindekiler temel alınarak üretilecektir.
Bu aracı birden fazla kullanırsanız, her çalı¸stırmada bir öncekinde olu¸sturulan ˙Içindekiler yer de˘gi¸stirecektir. Araca
˙
˙
Araçlar->Içindekiler->Satır
Arası Içindekiler
Ekle ile eri¸silebilir.
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˘glantılardır. Önsöz, kapak, ithaf, içindekiler vs. tanımlamak için
kullanabilirsiniz. Belirtmek istedi˘giniz anlamsal bilgi türünü seçin ve kitapta göstermesini istedi˘giniz noktayı seçin.
Bu araca Araçlar->Anlamsal Ayarlar ile eri¸sebilirsiniz.
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˘giniz
özellikleri sölyeyebilirsiniz, örne˘gin 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ı
Kontrol noktaları kitabın mevcut durumunu “özel” olarak i¸saretlemenin yoludur. Ardından kitaba istedi˘giniz de˘gis¸iklikleri yapıp sonuçları be˘genmezseniz kontrol noktası olu¸sturulan duruma dönebilirsiniz. Kontrol noktaları önceki
kısımda anlatılan tüm otomatik araçlar çalı¸stı˘gında otomatik olarak olu¸sturulur.
Düzenle->Kontrol noktası olu¸stur ile bir kontrol noktası olu¸sturabilirsiniz. Önceki bir kontrol noktasına da Düzenle>Geri al... ile dönebilirsiniz.
27 http://infohound.net/tidy/
76
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Kontrol noktası i¸slevi normal Geri al/yinele mekanizmasına ek olarak getirilmi¸stir. Kontrol noktaları de˘gi¸siklikler
kitapta birden çok dosyaya yayıldı˘gında veya birbiriyle ili¸skili büyük de˘gi¸sikliklerden önceye dönmek istedi˘ginizde
ö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¸sıla¸stırmak (sayfa 94) aracı ile kar¸sıla¸stırabilirsiniz – ilgilenilen kontrol noktasını
seçip Kar¸sıla¸stır dü˘gmesine tıklayarak. Geri al dü˘gmesi kitabı seçili kontrol noktasına kontrol noktası olu¸sturulduktan
sonra yapılan tüm de˘gi¸siklikleri geri alarak geri yükler.
1.5. E-kitap Düzenleme
77
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
1.5.6 Canlı Ön ˙Izleme paneli
Dosya Ön izleme canlı ön izleme panelinde çe¸sitli dosyalara yaptı˘gınız de˘gi¸sikliklerin 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˘gi¸sikliklerinizi yansıtır. ˙I¸saretçiyi düzenleyici etrafında gezdirdi˘ginizde, ön izleme paneli konumunu takip ederek
kitapta denk gelen konumu gösterir. Ön izleme paneline tıklama, i¸saretçinin tıklanan ö˘ge üstüne konumlanmasına
78
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
sebep olur. Kitapta ba¸ska bir dosyayı gösteren bir ba˘glantıya tıklarsanız, bu dosya otomatik olarak düzenleme ve ön
izleme panelinde açılır.
De˘gi¸sikliklerin canlı izlenmesi ve otomatik konum e¸s zamanlamayı – ön izleme paneli altındaki dü˘gmelerle kapatabilirsiniz. Ön izleme panelinin canlı güncellemesi sadece düzenleyicide yazmadı˘gınız zaman yapılır, böylece dikkatinizi
da˘gıtmaz ve yava¸slatmaz, ön izlemenin gerçeklenmesini bekler.
Ön izleme paneli metnin görüntülendi˘ginde nasıl görünece˘gini 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¸saretçilere toleransı vardır. Ayrıca size sayfa kenar bo¸sluklarını, sayfa
sonlarını ve yazı tipi örtü¸stüren gömülü yazı tiplerini göstermez. Kitap üstünde çalı¸sırken ön izleme panelini kullanın,
ama i¸siniz bitti˘ginide, 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¸smazsa 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 istedi˘giniz dosyayı görüntülerken, ön izleme paneli
altındaki :guilabel:‘ayırma kipi‘ne tıklayın. Sonra dosyayı
nerden ayırmak istiyorsanız fareyi üzerine getirin ve tıklayın. Ye¸sil kalın bir çizgi fareyi hareket ettirdi˘ginizde nerden
ayrılaca˘gını gösterecek s¸ekilde belirecektir. ˙Istedi˘giniz konumu buldu˘gunuzda, tıklayın ve ayrılma gerçele¸secektir.
Dosyayı ayırmak dosyanın alt yarısını gösteren tüm ba˘glantıların ve referansların otomatik güncellenmesini ve ayrılan
kısmın yeni dosya düzenleyicide açılmasını sa˘glar.
Tek bir HTML dosyasını birden çok konumdan otomatik olarak düzenleyicideki dosyaya sa˘g tıklayıp Birden fazla
konumdan ayır seçerek ayırabilirsiniz. Bu i¸slem büyük bir dosyayı tüm ba¸slık etiketlerinde veya belli sınıfta etikete
sahip her yerde ayırma imkanı sa˘glar.
1.5. E-kitap Düzenleme
79
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
1.5.7 Canlı CSS paneli
Canlı CSS paneli o an düzenledi˘giniz etikete uygulanabilir tüm biçim kurallarını gösterir. Etiket adı, düzenleyicideki
satırı ile birlikte gösterilir, ardından e¸sle¸sme kuralları listesi gelir.
Herhangi bir etikete hangi biçim kurallarının uygulandı˘gını görmek için çok iyi bir yöntemdir. Görünüm ayrıca tıklanabilir ba˘glantılar (mavi renkte) içerir, bu ba˘glantılar biçim kurallarında de˘gi¸siklik yapmak isterseniz biçimin tanımlandı˘gı noktaya do˘grudan götürür. Do˘grudan 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.
Canlı CSS panelini Görünüm->Canlı CSS ile etkinle¸stirebilirsiniz.
1.5.8 Çesitli
¸
Araçlar
Kitabı düzenlerken faydalı olabilecek bir kaç araç daha var.
80
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
˙Içerik Tablosu Görünümü
˙Içerik Tablosu görünümü kitaptaki mevcut içerik tablosunu gösterir. Bir girdiye çift tıklamak girdinin gösterdi˘gi konumu düzenleyicide açar. ˙Içerik Tablosunu düzenlemek için sa˘g tıklayabilir, görünümü yenileyebilir, tüm ö˘geleri ge˙
ni¸sletebilir/daraltabilirsiniz. Görünümler->Içerik
Tablosu ile eri¸sebilirsiniz.
Kitaptaki kelimelerin yazım denetimi
You can run a spelling checker via Tools->Check spelling.
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˘ginden alınır. Bu da birden çok dil içeren kitaplarda bile yazım denetiminin
çalı¸smasına olanak verir. Örne˘gin, a¸sa˘gıdaki HTML çıktısında, color kelimesi Amerikan ˙Ingilizcesiyle, colour kelimesi
˙Ingiliz ˙Ingilizcesiyle kontrol edilir:
1.5. E-kitap Düzenleme
81
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
=
{}=
{}@default
=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˘gunu görmek istiyorsanız faydalıdır.
Bir kelimeyi de˘gi¸stirmek için, sa˘gdaki önerilen yazımlardan birine çift tıklayın, veya kendi düzeltilmi¸s yazımınızı
yazın ve Seçili kelimeyi de˘gi¸stir dü˘gmesine tıklayın. Bu i¸slem kelimeyi tüm kitapta de˘gi¸stirir. Ayrıca ana kelime listesindeki bir kelimeye sa˘g tıklayarak sa˘g tık menüsünden kolayca de˘gi¸stirebilirsiniz.
Yazım denetiminin mevcut oturum için bir kelimeyi göz ardı etmesini Yoksay dü˘gmesi ile sa˘glayabilirsiniz. Ayrıca Sözlü˘ge ekle dü˘gmesiyle bir kelimeyi sözlü˘ge ekleyebilirsiniz. Yazım denetimi birden çok kullanıcı sözlü˘günü destekler,
yani kelimenin eklenece˘gi sözlü˘gü de seçebilirsiniz.
Ayrıca yazım denetiminin kitaptaki, sadece yanlı¸s olanlar de˘gil, tüm kelimeleri göstermesini sa˘glayabilirsiniz. Kitabınızdan hangi kelimelere en sık rastlandı˘gını görmek için ve belli kelimeler için arama ve de˘gi¸stirme çalı¸stırmak için
faydalıdır.
Not: Yazım denetim aracı açıkken kitapta dosyaları düzenleyerek de˘gi¸siklik yaparsanız, yazım denetimi aracındaki
Tazele dü˘gmesine tıklamanız gerekir. Bunu yapmadan yazım denetimi kullanmaya devam ederseniz, düzenleyicide
yaptı˘gınız de˘gi¸siklikleri kaybedebilirsiniz.
Yeni sözlük ekleme
Yazım denetimi ˙Ingilizce ve ˙Ispanyolca için yerle¸sik sözlüklerle gelir. Kendi sözlüklerinizi Özellikler->Düzenleyici>Yazım denetimi sözlüklerini yönet ile yükleyebilirsiniz. Yazım denetimi OpenOffice programının sözlüklerini kullanabilir (.oxt biçiminde). Bu sözlükleri The OpenOffice Eklenti deposundan28 indirebilirsiniz.
Ö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˘giniz karaktere tıklayın. Tıklarken Ctrl tu¸suna basılı tutarsanız, karakter eklendikten
sonra pencere kapatılır. Bu araç ana metinde ya da Ara ve yer de˘gi¸stir aracı gibi kullanıcı arayüzündeki herhangi ba¸ska
bir alanda kullanılabilir.
Bir çok karakter oldu˘gundan, ilk önce gösterilmesi için kendi Sık kullanılanlar karakterlerinizi belirtebilirsiniz. Basitçe
bir karaktere sa˘g tıklayıp sık kullanılan olarak i¸saretleyin. Ayrıca sık kullanılanlardan kaldırmak için sık kullanılanlardaki bir karaktere sa˘g tıklayabilirsiniz. Son olarak, karakterlerin sırasını Sık kullanılanları yeniden düzenle dü˘gmesine
tıklayarak ve karakterleri sürükle bırak yaparak ayarlayabilirsiniz.
Klavye kullanarak da do˘grudan özel bir karakter yazabilirsiniz. Bunu yapmak için, karakterin evrensel kodunu (onaltılık olarak) girin ve yazılmı¸s kodu kar¸sılık geldi˘gi karaktere çevirecek olan Alt+X e basın. Örne˘gin, ÿ yazmak için ff
yazar sonra da Alt+X basarsınız. Satır ba¸sı yapmayan bir bo¸sluk için a0 ve ardından Alt+X, yatay elips için 2026 ve
yine ardından Alt+X.
Son olarak, HTML isimlendirilmi¸s birimleri kullanarak da özel karakterleri girebilirsiniz. Örne˘gin &nbsp; yazmak
noktalı virgülü girdi˘ginizde bir bo¸slukla de˘gi¸smesini sa˘glar. Yer de˘gi¸stirme yalnızca noktalı virgülü yazarken gerçekle¸sir.
28 http://extensions.openoffice.org/
82
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Kod denetleme görünümü
Bu görünüm ilgilenilen mevcut ö˘geye uygulanan CSS ve HTML kodunu gösterir. Ön izleme panelinde bir yere sa˘g
tıklayıp Denetle seçerek açabilirsiniz. Bu ö˘ge 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˘gi¸sikliklerinizin getirdi˘gi etkileri anında görebilirsiniz.
Biçimi düzenlemenin kitap içeri˘ginde de˘gi¸siklik yapmayaca˘gını not edin, yalnızca hızlıca deneyler yapmaya izin verir.
Denetleyici içinde canlı düzenleme yapma i¸slevi geli¸stirme altındadır.
Dosyaları biçime göre klasörle
Genellikle ba¸ska bir yerden aldı˘gınız EPUB dosyalarını düzenlerken EPUB içindeki dosyaların de˘gi¸sik alt dizinlerde
rastgele ayarlanmı¸s oldu˘gunu görürsünüz. Bu araç tüm dosyaları biçimlerine göre otomatik olarak alt dizinlere ta¸sımanızı sa˘glar. Araçlar->Dizinlere ayarla ile eri¸sebilirsiniz. Bu araç yalnızca EPUB içindeki dosyaların nasıl ayarlandı˘gını
de˘gi¸stirir, Dosya Tarayıcısında nasıl görüntülendiklerini de˘gil.
˘ e-kitap biçimlerindeki dosyaları EPUB olarak içe aktarma
Diger
Düzenleyici ba¸ska bir e-kitap biçimindeki dosyaları tam bir dönü¸stürmeye sokmadan EPUB olarak içe aktarmayı
destekler. Özellikle kendi elle düzenlenmi¸s HTML dosyalarınızdan EPUB dosyaları olu¸sturmak için faydalıdır. Bu
i¸slemi Dosya->HTML veya DOCX dosyasını yeni kitap olarak içe aktar ile yapabilirsiniz.
˘ stirme
Düzenleyicide Arama & Degi
¸
için Fonksiyon Kipi
Düzenleyicideki Arama & De˘gi¸stirme aracı bir fonksiyon kipini destekler. Bu kipte, düzenli ifadeleri (bknz All about
using regular expressions in calibre (sayfa 197)) güçlü python fonksiyonlarıyla birle¸stirip her çe¸sit geli¸smi¸s metin
i¸slemeyi gerçekle¸stirebilirsiniz.
Arama ve de˘gi¸stirme için standart düzenli ifade kipinde, hem arama için bir düzenli ifade hem tüm bulunan e¸sle¸smeleri
de˘gi¸stirmek için bir s¸ablon belirtirsiniz. Fonksiyon kipinde, sabit bir s¸ablon kullanmak yerine, python programlama
dilinde29 keyfi bir fonksiyon belirtirsiniz. Bu basit s¸ablonlarla yapamayaca˘gınız bir sürü s¸eyi yapmanızı sa˘glar.
Fonksiyon kipi ve söz dizimi kullanım teknikleri örneklerle açıklanacak, gittikçe zorla¸san görevleri fonksiyon kipiyle
nasıl yapaca˘gınız gösterilecektir.
Belgedeki ba¸slık büyük küçük harflerinin otomatik düzeltilmesi Burda, düzenleyicideki dahili fonksiyonlardan
birini göz önüne alıp ba¸slık etiketleri içindeki tüm metnin harflerini nasıl otomatik olarak ba¸slık boyutuna de˘gi¸stireceg˘ imize bakaca˘gız:
=
{}=
{}@default
=0=1=2=0=1=2Find expression: \PYGZlt{}([Hh][1\PYGZhy{}6])[\PYGZca{}\PYGZgt{}]*\PYGZgt{}.+?\PYGZlt{}/\P
29 https://docs.python.org/2.7/
1.5. E-kitap Düzenleme
83
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
For the function, simply choose the Title-case text (ignore tags) builtin function. The will change titles that look like:
<h1>some TITLE</h1> to <h1>Some Title</h1>. It will work even if there are other HTML tags inside the
heading tags.
˙ özel fonksiyonunuz - akıllı tireler Fonksiyon kipinin asıl gücü metni keyfi s¸ekillerde i¸slemenizi sa˘glayan kendi
Ilk
fonksiyonlarınızı yazabilmenizden gelir. Düzenleyicideki Akıllı Noktalama aracı ba˘gımsız tirelere dokunmaz, yani bu
fonksiyonu kullanarak onları uzun tirelerle de˘gi¸stirebilirsiniz.
Yeni bir fonksiyon olu¸sturmak için, Olu¸stur/Düzenle dü˘gmesine tıklayıp yeni bir fonksiyon olu¸sturun ve a¸sa˘gıdaki
python kodunu kopyalayın.
=
{}=
{}@default
=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˘gi¸stirme özel fonksiyonunun benzersiz bir ismi ve yukarıda gösterilen tüm ba˘gımsız de˘gi¸skenleri
kabul eden replace adında bir python fonksiyonu olmalı. Simdilik
¸
replace() fonksiyonuna giden tüm farklı deg˘ i¸skenler ile ilgilenmeyece˘giz. Yalnızca match() ba˘gımsız de˘gi¸skenine odaklanın. Bir arama de˘gi¸stirme sırasındaki
e¸sle¸smeyi ifade eder. Tam belgeleri buradadır30 . match.group() basitçe e¸sle¸sen tüm metni döndürür ve tek yaptıg˘ ımız bu metindeki tireleri uzun tire ile de˘gi¸stirmektir, önce çift tireleri ardından tek tireleri de˘gi¸stirerek.
Bu fonksiyonu arama düzenli ifadesi ile kullanın:
=
{}=
{}@default
=0=1=2=0=1=2\PYGZgt{}[\PYGZca{}\PYGZlt{}\PYGZgt{}]+\PYGZlt{}
Tüm tireleri uzun tire ile de˘gi¸stirecektir, ama yalnızca asıl metin içinde HTML etiket tanımlarında de˘gil.
Fonksiyon kipinin gücü - yanlı¸s tirelenmi¸s kelimeler için bir yazım denetim sözlü˘gü kullanmak Genellikle,
basılı kitaplardan taranarak olu¸sturulan e-kitaplar yanlı¸s tirelenmi¸s kelimeler içerir – basılı kitapta satır sonunda bölünmü¸s kelimeler gibi. Bu tür kelimeleri otomatik olarak bulup düzeltecek basit bir fonksiyon yazaca˘gız.
=
{}=
{}@default
=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
30 https://docs.python.org/2.7/library/re.html#match-objects
84
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Bu fonksiyonu aynı bulma ifadesi ile kullanın, açmak gerekirse:
=
{}=
{}@default
=0=1=2=0=1=2\PYGZgt{}[\PYGZca{}\PYGZlt{}\PYGZgt{}]+\PYGZlt{}
Böylece kitap metnindeki tüm yanlı¸s tirelenmi¸s kelimeleri sihirli bir s¸ekilde düzeltecektir. Ana nokta replace fonksiyonuna verilen kullanı¸slı bir ek ba˘gımsız de˘gi¸sken olan dictionaries. Bu düzenleyicinin kitap metninde yazım
denetimi yaptı˘gı sözlükleri kasteder. Bu fonksiyonun yaptı˘gı ise bir tire ile ayrılmı¸s kelimelere bakmak, tireyi kaldırmak ve karma kelimenin sözlük tarafından tanınıp tanınmadı˘gına bakmaktır, e˘ger tanınıyorsa asıl kelimeler tire
olmayan karma kelimelerle de˘gi¸stirilir.
Bu tekni˘gin kısıtlarından biri yalnızca tek dilli kitaplarda çalı¸sacak olmasıdır, çünkü var sayılan olarak,
dictionaries.recognized() kitabın ana dilini kullanır.
Kısımların otomatik numaralandırılması Simdi
¸
biraz daha farklı bir s¸ey görece˘giz. HTML dosyanızın birçok
kısmı oldu˘gunu farz edin, her biri bir <h2> etiketi içinde <h2>Bir metin</h2> gibi görünen ba¸slıkla. Özel bir
fonksiyon olu¸sturup bu ba¸slıkları otomatik olarak sıralı numaralar s¸eklinde numaralandırabilirsiniz, böylece <h2>1.
Bir metin</h2> olarak görünürler.
=
{}=
{}@default
=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:
=
{}=
{}@default
=0=1=2=0=1=2(?s)(\PYGZlt{}h2[\PYGZca{}\PYGZlt{}\PYGZgt{}]*\PYGZgt{})(.+?\PYGZlt{}/h2\PYGZgt{})
˙Imleci dosyanın üstüne konumlandırın ve Hepsini de˘gi¸stir tıklayın.
Bu fonksiyon replace() fonksiyonuna ek ba¸ska kullanı¸slı bir ba˘gımsız de˘gi¸sken kullanır: number de˘gi¸skeni.
Hepsini de˘gi¸stir yaparken sayı otomatik olarak her ba¸sarılı e¸sle¸smede artırılır.
Yeni ba¸ska 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¸slenmesini anlamına gelir.
Detaylar için bknz Çoklu HTML dosyalarında çalı¸sırkenki dosya sırasını seç (sayfa 88).
˙
Otomatik olarak bir Içindekiler
olu¸stur Son olarak, biraz daha iddialı bir s¸ey deneyelim. Kitabınızda <h1
id="birtakimid">Bir Metin</h1> gibi görünen h1 ve h2 etiketli ba¸slıklar oldu˘gunu var sayın. Bu ba¸slıklara dayalı bir ˙Içindekileri otomatik olarak üretece˘giz. A¸sa˘gıdaki özel fonksiyonu olu¸sturun:
=
{}=
{}@default
=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}{
1.5. E-kitap Düzenleme
85
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
\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
\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:
=
{}=
{}@default
=0=1=2=0=1=2\PYGZlt{}(h[12]) [\PYGZca{}\PYGZlt{}\PYGZgt{}]* id=[\PYGZsq{}\PYGZdq{}]([\PYGZca{}\PYGZsq{
Aramayı Tüm metin dosyaları üzerinde çalı¸stırın, arama sonunda :file:‘toc.html‘ye yapı¸stırılmaya hazır olan “Fonksiyonunuzdan Hata Ayıklama” ve HTML olarak ˙Içindekileri içeren bir açılır pencere açılır.
Yukarıdaki fonksiyon oldukça iyi yorumlanmı¸stır, takip etmesi kolay olacaktır. Anahtar yeni özellik replace()
fonksiyonuna verilen ba¸ska bir kullanı¸slı ek ba˘gımsız de˘gi¸skendir, data nesnesi. data nesnesi tek bir Hepsini Deg˘ i¸stir i¸slemi sırasındaki tüm ba¸sarılı replace() ça˘grımları sırasında kalan bir python dict nesnesidir.
Ba¸ska yeni bir özellik de call_after_last_match kullanımıdır – bunu replace() fonksiyonunda True
olarak ayarlamak düzenleyicinin tüm e¸sle¸smeler bulunduktan sonra bir kere daha replace() ça˘gırması demektir.
Bu ek ça˘grı için, e¸sle¸sme nesnesi None olacaktır.
˙
Bu yalnızca fonksiyon kipinin gücünü göstermek için bir gösteriydi, gerçekten bir kitaptaki ba¸slıklardan Içindekiler
˙
olu¸sturmaya ihtiyacınız varsa, Araçlar->Içindekiler
içindeki bu i¸s için atanmı¸s ˙Iç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¸sa˘gıdaki imzayı ta¸sımalıdır:
=
{}=
{}@default
=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}{
86
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Bir bul/de˘gi¸stir çalı¸stı˘gında, bulunan her e¸sle¸sme için, bu e¸sle¸sme için de˘gi¸stirme karater dizisini döndürmesi gereken replace() fonksiyonu ça˘grılacaktır. Herhangi bir de˘gi¸stirme yapılmayacaksa, asıl karakter dizisi olan
match.group() döndürmelidir. replace() fonksiyonuna verilen çe¸sitli ba˘gımsız de˘gi¸skenler a¸sa˘gıda belgelenmi¸stir.
match ba˘gımsız de˘gi¸skeni match ba˘gımsız de˘gi¸skeni o an bulunan e¸sle¸smeyi temsil eder. Bir python Match nesnesidir31 . En kullanı¸slı metodu arama düzenli ifadesindeki tekli yakalama gruplarına ili¸skili e¸sle¸sen metni almaya
yarayan group() metodudur.
number ba˘gımsız de˘gi¸skeni number ba˘gımsız de˘gi¸skeni mevcut e¸sle¸smenin sayısıdır. Hepsini De˘gi¸stir çalı¸stırdı˘gınızda, her ba¸sarılı e¸sle¸sme ‘‘replace()‘‘in artan bir sayıyla ça˘grılmasına sebep olur. ˙Ilk e¸sle¸smenin 1 numarası
vardır.
file_name ba˘gımsız de˘gi¸skeni Mevcut e¸sle¸smenin bulundu˘gu dosyanın dosya ismidir. ˙I¸saretli metin içinde arama
yaparken, file_name bo¸stur. file_name kuralsal biçimindedir, ayraç olarak / kullanan kitabın köküne göreceli
bir yol.
metadata ba˘gımsız de˘gi¸skeni Bu mevcut kitabın metadata’sını temsil eder, ba¸slık, yazarlar, dil, vs. Bir
calibre.ebooks.metadata.book.base.Metadata (sayfa 193) nesnesidir. Kullanı¸slı öznitelikler arasında
ba¸
slık, yazarlar (yazar listesi) ve dil (dil kodu) bulunur.
dictionaries ba˘gımsız de˘gi¸skeni Mevcut kitapta yazım denetimi yaparken kullanılan sözlük koleksiyonunu
temsil eder. En kullanı¸slı metodu mevcut kitabın dilindeki sözlükte geçirilen kelimenin bulunması halinde True döndüren dictionaries.recognized(word) metodudur.
data ba˘gımsız de˘gi¸skeni Bu basit bir python dict nesnesidir. Hepsini De˘gi¸stir çalı¸stırdı˘gınızda,
ba¸sarılı her e¸sle¸sme veri olarak aynı dict ile replace()‘‘in ça˘
grılmasına sebep olur.
Böylece :guilabel:‘Hepsini De˘
gi¸
stir‘ sırasındaki ‘‘replace() ça˘grıları arasında keyfi
verileri depolamak için kullanabilirsiniz.
functions ba˘gımsız de˘gi¸skeni functions ba˘gımsız de˘gi¸skeni di˘ger tüm kullanıcı tanımlı fonksiyonlara eri¸sim
verir. Bu kod tekrar kullanımı için faydalıdır. Yardımcı fonksiyonları bir yerde tanımlayabilir ve di˘ger tüm fonksiyonlarınızda tekrar kullanabilirsiniz. Örne˘gin, s¸u s¸ekilde My Function isimli bir fonksiyon tanımladı˘gınızı var sayalım:
=
{}=
{}@default
=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¸ska bir fonksiyon içinde, utility() fonksiyonuna s¸u s¸ekilde eri¸sebilirsiniz:
=
{}=
{}@default
=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
87
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Fonksiyonlar nesnesini di˘ger fonksiyonlarca tekrar kullanılabilen kalıcı veri depolamak için de kullanabilirsiniz. Örne˘gin, Hepsini De˘gi¸stir ile ça˘grıldı˘gında veri toplayan bir fonksiyonunuz ve daha sonra ça˘grıldı˘gında bunu kullanan
ikinci bir fonksiyonunuz olabilir. Su
¸ iki fonksiyonu göz önüne alın:
=
{}=
{}@default
=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¸sturdu˘gunuz fonksiyonları python’dan gelen standart print() fonksiyonu
ile ayıklayabilirsiniz. Print çıktısı açılır bir pencerede Bul/de˘gi¸stir i¸slemi sonrasında görüntülenecektir. Yukarıdaki
örnekte tüm bir içindekilerin print() kullanılarak çıktılanması örne˘gini gördünüz.
Çoklu HTML dosyalarında çalı¸sırkenki dosya sırasını seç Birden fazla HTML dosyasında Hepsini De˘gi¸stir çalı¸stırdı˘gınızda, dosyaların i¸sleni¸s sırası düzenlemek için hangi dosyaların açık oldu˘guna göre de˘gi¸sir. Aramanın dosyaları
görünen sırada i¸slemesine fonksiyonunuzda file_order özniteli˘gini ayarlayarak, s¸u s¸ekilde zorlayabilirsiniz:
=
{}=
{}@default
=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˘ger alır, aramanın birden çok dosyayı kitapta göründükleri sırada i¸slemesine sebep olan ve sırayla
ileri veya geri anlamına gelen‘‘spine‘‘ ve spine-reverse.
Fonksiyonunuzun son e¸sle¸sme bulunduktan sonra ek bir sefer daha ça˘grılması Bazen, yukarıdaki içindekileri
otomatik olarak üreten örnek gibi, son e¸sle¸sme bulunduktan sonra fonksiyonunuzu bir kere daha ça˘gırmak faydalı
olabilir. Bunu fonksiyonunuzda call_after_last_match özniteli˘gini s¸u s¸ekilde ayarlayarak yapabilirsiniz:
=
{}=
{}@default
=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
Snippets
The calibre editor supports snippets. A snippet is a piece of text that is either re-used often or contains a lot of redundant
text. The editor allows you to insert a snippet with only a few key strokes. For example, suppose you often find yourself
inserting link tags when editing HTML files, then you can simply type <a in the editor and press Control+J. The
editor will expand it to:
88
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
=
{}=
{}@default
=0=1=2=0=1=2\PYGZlt{}a href=\PYGZdq{}filename\PYGZdq{}\PYGZgt{}\PYGZlt{}/a\PYGZgt{}
Not only that, the word filename will be selected, with the cursor placed over it, so that you can easily type in the
real filename, using the editor’s nifty Auto-complete (sayfa 93) feature. And once you are done typing the filename,
press Control+J again and the cursor will jump to the position in between the <a> tags so you can easily type in
the text for the link.
The snippets system in the editor is very sophisticated, there are a few built-in snippets and you can create your own
to suit your editing style.
The following discussion of the built-in snippets should help illustrate the power of the snippets system.
Not: You can also use snippets in the text entry fields in the Search and Replace panel, however, placeholders (using
Control+J to jump around) will not work.
The built-in snippets The built-in snippets are described below. Note that you can override them by creating your
own snippets with the same trigger text.
Inserting filler text [Lorem] The first built-in snippet, and the simplest is used to insert filler text into a document.
The filler text is taken from De finibus bonorum et malorum32 a philosophical work by Cicero (translated to English).
To use it simply type Lorem in an HTML file and press Control+J. It will be replaced by a couple of paragraphs
of filler.
The definition of this snippet is very simple, the trigger text is defined as Lorem and the template is defined simply as
the literal text to be inserted. You can easily customize it to use your favorite form of filler text.
Inserting a self-closing HTML tag [<>] Now let’s look at a simple example of the powerful concept of placeholders. Say you want to insert the self-closing tag <hr/>. Just type <>, and press Control+J, the editor will expand
the snippet to:
=
{}=
{}@default
=0=1=2=0=1=2\PYGZlt{}\textbar{}/\PYGZgt{}
Here, the | symbol represents the current cursor position. You can then type hr and press Control+J to move the
cursor to after the end of the tag. This snippet is defined as:
=
{}=
{}@default
=0=1=2=0=1=2Trigger: \PYGZlt{}\PYGZgt{}
Template: \PYGZlt{}\PYGZdl{}1/\PYGZgt{}\PYGZdl{}2
Placeholders are simply the dollar ($) sign followed by a number. When the snippet is expanded by pressing
Control+J the cursor is positioned at the first placeholder (the placeholder with the lowest number). When you
press Control+J again the cursor jumps to the next placeholder (the placeholder with the next higher number).
32 http://en.wikipedia.org/wiki/De_finibus_bonorum_et_malorum
1.5. E-kitap Düzenleme
89
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Inserting an HTML link tag [<a] HTML link tags all share a common structure. They have an href attribute
and some text between the opening and closing tags. A snippet to make typing them more efficient will introduce us
to some more features of placeholders. To use this snippet, simply type <a and press Control+J. The editor will
expand this to:
=
{}=
{}@default
=0=1=2=0=1=2\PYGZlt{}a href=\PYGZdq{}filename\textbar{}\PYGZdq{}\PYGZgt{}\PYGZlt{}/a\PYGZgt{}
Not only that, the word filename will be selected, with the cursor placed over it, so that you can easily type in the
real filename, using the editor’s nifty Auto-complete (sayfa 93) feature. And once you are done typing the filename,
press Control+J again and the cursor will jump to the position in between the <a> tags so you can easily type in
the text for the link. After you are done typing the text, press Control+J again to jump to the point after the closing
tag. This snippet is defined as:
=
{}=
{}@default
=0=1=2=0=1=2Trigger: \PYGZlt{}a
Template: \PYGZlt{}a href=\PYGZdq{}\PYGZdl{}\PYGZob{}1:filename\PYGZcb{}\PYGZdq{}\PYGZgt{}\PYGZdl{}\P
There are a couple of new features here. First the $1 placeholder has become more complex. It now includes some
default text (the word filename. If a placeholder contains default text, the default text is substituted for the placeholder when the snippet is expanded. Also when you jump to a placeholder with default text using Control+J, the
default text is selected. In this way, you can use default text to act as a reminder to you to fill in important parts of the
template. You can specify default text for a placeholder by using the syntax: ${<number>:default text}.
The other new feature is that the second placeholder has an asterisk after it (${2*}). This means that any text that
was selected before expanding the template is substituted for the placeholder. To see this in action, select some text in
the editor, press Control+J, type <a and press Control+J again, the template will be expanded to:
=
{}=
{}@default
=0=1=2=0=1=2\PYGZlt{}a href=\PYGZdq{}filename\PYGZdq{}\PYGZgt{}whatever text you selected\PYGZlt{}/a\P
Inserting a HTML image tag [<i] This is very similar to inserting an HTML link, as we saw above. It allows you to
quickly input an <img src="filename" alt="description" /> tag and jump between the src and alt
attributes:
=
{}=
{}@default
=0=1=2=0=1=2Trigger: \PYGZlt{}i
Tem
Insert an arbitrary HTML tag [<<] This allows you to insert an arbitrary full HTML tag (or wrap previously
selected text in the tag). To use it, simply type << and press Control+J.The editor will expand it to:
=
{}=
{}@default
=0=1=2=0=1=2\PYGZlt{}\textbar{}\PYGZgt{}\PYGZlt{}/\PYGZgt{}
Type the tag name, for example: span and press Control+J, that will result in:
90
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
=
{}=
{}@default
=0=1=2=0=1=2\PYGZlt{}span\PYGZgt{}\textbar{}\PYGZlt{}/span\PYGZgt{}
You will note that the closing tag has been automatically filled with span. This is achieved with yet another feature
of placeholders, mirroring. Mirroring simply means that if you specify the sample placeholder more than once in a
template, the second and all later positions will be automatically filled in with whatever you type in the first position,
when you press Control+J. The definition for this snippet is:
=
{}=
{}@default
=0=1=2=0=1=2Trigger: \PYGZlt{}\PYGZlt{}
Template: \PYGZlt{}\PYGZdl{}1\PYGZgt{}\PYGZdl{}\PYGZob{}2*\PYGZcb{}\PYGZlt{}/\PYGZdl{}1\PYGZgt{}\PYGZ
As you can see, the first placeholder ($1) has been specified twice, the second time in the closing tag, which will
simply copy whatever you type in the opening tag.
Inserting an arbitrary HTML tag with a class attribute [<c] This is very similar to the insert arbitrary tag example
above, except that it assumes that you want to specify a class for the tag:
=
{}=
{}@default
=0=1=2=0=1=2Trigger: \PYGZlt{}c
Tem
This will allow you to first type the tag name, press Control+J, type the class name, press Control+J type the
contents of the tag and press Control+J one last time to jump out of the tag. The closing tag will be auto-filled.
Creating your own snippets Snippets really shine because you can create your own to suit your editing style. To
create your own snippets go to Edit->Preferences->Editor settings->Manage snippets in the editor. This will pop-up
an easy to use dialog to help you create your own snippets. Simply click the Add snippet button and you will see a
dialog that looks like:
1.5. E-kitap Düzenleme
91
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
First give your snippet a name, something descriptive, to help identify the snippet in the future. Then specify the
trigger. A trigger is simply the text that you have to type in the editor before pressing Control+J in order to expand
the snippet.
Then specify the snippet template. You should start with one of the example above and modify it to suit your needs.
Finally, specify which file types you want the snippet to be active for. This way you can have multiple snippets with
the same trigger text that work differently in different file types.
The next step is to test your newly created snippet. Use the Test box at the bottom. Type in the trigger text and press
Control+J to expand the snippet and jump between placeholders.
The Reports tool
The editor includes a nice Reports tool (via Tools->Reports) that shows summaries of the files, images, links, words,
characters and styles used in the book. Every line in the report is hot-linked. Double clicking a line jumps to the place
in the book where that item is used or defined (as appropriate). For example, in the Links view, you can double click
entries the Source column to jump to where the link is defined and entries in the Target column to jump to where the
link points.
92
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
1.5.9 Special features in the code editor
The calibre HTML editor is very powerful. It has many features that make editing of HTML (and CSS) easier.
Syntax highlighting
The HTML editor has very sophisticated syntax highlighting. Features include:
• The text inside bold, italic and heading tags is made bold/italic
• As you move your cursor through the HTML, the matching HTML tags are highlighted
• Invalid HTML is highlighted with a red underline
• Spelling errors in the text inside HTML tags and attributes such as title are highlighted. The spell checking is
language aware, based on the value of the lang attribute of the current tag and the overall book language.
• CSS embedded inside <style> tags is highlighted
• Special characters that can be hard to distinguish such as non-breaking spaces, different types of hyphens, etc.
are highlighted.
• Links to other files in <a> tags, <img> and <link> tags all have the filenames highlighted. If the filename
they point to does not exist, the filename is marked with a red underline.
Context sensitive help
You can right click on an HTML tag name or a CSS property name to get help for that tag or property.
You can also hold down the Ctrl key and click on any filename inside a link tag to open that file in the editor automatically.
Auto-complete
When editing an ebook, one of the most tedious tasks is creating links to other files inside the book, or to CSS
stylesheets, or images. You have to figure out the correct filename and relative path to the file. The editor has autocomplete to make that easier.
As you type a filename, the editor automatically pops up suggestions. Simply use the Tab key to select the correct file
name. The editor even offers suggestions for links pointing to an anchor inside another HTML file. After you type
1.5. E-kitap Düzenleme
93
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
the # character, the editor will show you a list of all anchors in the target file, with a small snippet of text to help you
choose the right anchor.
Note that unlike most other completion systems, the editor’s completion system uses subsequence matching. This
means that you can type just two or three letters from anywhere in the filename to complete the filename. For example,
say you want the filename ../images/arrow1.png, you can simply type ia1 and press Tab to complete the
filename. When searching for matches, the completion system prioritizes letters that are at the start of a word, or
immediately after a path separator. Once you get used to this system, you will find it saves you a lot of time and effort.
Snippets
The calibre editor supports snippets. A snippet is a piece of text that is either re-used often or contains a lot of
redundant text. The editor allows you to insert a snippet with only a few key strokes. The snippets are very powerful,
with many features, such as placeholders you can jump between, automatic mirroring of repeated text and so on. For
more information, see Snippets (sayfa 88).
1.6 E-kitapları Kar¸sılastırmak
¸
Calibre bir kitap düzenlendikten veya dönü¸stürüldükten sonra nelerin de˘gi¸sti˘ginin görülebilece˘gi tümle¸sik bir e-kitap
kar¸sıla¸stırma aracı içerir. EPUB ve AZW3 biçimindeki kitapları kar¸sıla¸stırabilir.
Bu aracı kullanmak için ya e-kitabı düzenleme yapmak için açın ve Dosya->Ba¸ska bir e-kitap ile kar¸sıla¸stır seçene˘gini
seçin ya da Kitap Detayları (sayfa 15) panelini kullanın. E˘ger EPUB’tan EPUB’a dönü¸süm yaparsanız özgün EPUB
dosyası ORIGINAL_EPUB adıyla kaydedilir. Basitçe Kitap Ayrıntıları panelinden ORIGINAL_EPUB girdisine sa˘g
tıklayarak EPUB biçimi ile kar¸sıla¸stır seçene˘gini seçebilirsiniz.
Kar¸sıla¸stırma aracı a¸sa˘gı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.
94
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
1.6.1 Kar¸sılastırma
¸
görünümünü anlamak
Yukarıdaki ekran görüntüsünden anla¸sılabilece˘gi gibi kar¸sıla¸stı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˘gi¸sti˘gini anlamak kolayla¸sır.
Eklenen metin ye¸sil, çıkartılan metin kırmızı ve de˘gi¸stirilen metinler de mavi arkaplanla gösterilir.
De˘gi¸stirilen satırların numaraları düzenleyici ile de˘gi¸siklik yapılmasını sa˘glamak için yanlarında görüntülenir. Kars¸ıla¸stırma aracını düzenleyicinin içinde açtı˘gınızda sa˘g paneldeki bir satıra çift tıklayarak düzenleyicinin otomatik
olarak o satıra gitmesini sa˘glayabilirsiniz.
Kitapları kar¸sıla¸stırmanın kullanı¸slı bir tekni˘gi de kar¸sıla¸stırma aracına farklılıkları hesaplamadan önce metni ve biçem
dosyalarını güzelle¸stirmesini söylemektir. Bu genellikle daha temiz ve takip edilebilir bir çıktı verir. Bunu yapmak için
Seçenekler dü˘gmesine tıkladıktan sonra Dosyaları kar¸sıla¸stırmadan önce güzelle¸stir seçene˘gini seçmelisiniz. Dosyaları güzelle¸stirmenin bazı istenmeyen sonuçları olabilece˘gini unutmayın. Farkların etrafında gösterilecek içeri˘gin satır
1.6. E-kitapları Kar¸sılastırmak
¸
95
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
sayısını da Seçenekler dü˘gmesi ile de˘gi¸stirebilirsiniz.
Farklar içinde alttaki arama çubu˘gunu kullanarak bir metin arayabilirsiniz. Hangi panelde arama yapaca˘gınızı Sol veya
Sa˘g seçmeniz gerekecektir.
1.6.2 Kar¸sılastırma
¸
aracı nasıl baslatılır
¸
Kar¸sıla¸stırma aracı bir kitabın iki sürümü elinizde oldu˘gunda ve nelerin de˘gi¸sti˘gini görmek istedi˘ginizde çok faydalı
olur. Ba¸slatılmasının bir çok yolu vardır.
˙Iki e-kitap dosyasını kar¸sıalstırmak
¸
˙Ilk dosyayı düzenle aracında açın. Simdi
¸
Dosya->Ba¸ska bir kitapla kar¸sıla¸stır dü˘gmesine tıklayarak ikinci dosyayı
seçin (ilkiyle aynı biçimde olmalıdır). Kar¸sıla¸stırma görünümü düzenlenen dosya sa˘gda, ikinci dosya solda olacak
s¸ekilde açılacaktır.
ORIGINAL_FMT ile FMT dosyalarının kar¸sılastırılması
¸
Calibre içinde bir FMT dosyasından kendisine bir dönü¸süm yaparsanız özgün dosya ORIGINAL_FMT adıyla kaydedilir. Dönü¸süm sonrası neyin de˘gi¸sti˘gini ana calibre penceresindeki Kitap Detayları (sayfa 15) panelinde ORIGINAL_FMT girdisine sa˘g tıklayıp FMT ile kar¸sıla¸stır seçene˘gini seçerek görebilirsiniz. Kar¸sıla¸stırma görünümü solda
ORIGINAL_FMT dosyasını, sa˘gda da FMT dosyasını açacaktır.
Bir kontrol noktasını ile kitabın mevcut durumunu düzenlerken kar¸sılastırmak
¸
düzenle aracının kontrol noktaları isimli çok yararlı bir özelli˘gi vardır. Bu özellik kitabın mevcut durumunu kontrol noktası adıyla kaydetmenize imkan verir, kontrol noktasından sonra yaptı˘gınız ve ho¸slanmadı˘gınız de˘gi¸siklikleri
geri alabilirsiniz. Kontrol noktaları düzenleyicide otomatikle¸stirilmi¸s eylemler gerçekle¸stirdi˘ginizde de otomatik olarak olu¸sturulur. Kontrol noktalarının listesini Görünüm->Kontrol noktaları alanına giderek görebilir ve Kar¸sıla¸stır
dü˘gmesine tıklayarak kitabın mevcut durumunu seçti˘giniz kontrol noktası ile kar¸sıla¸stırabilirsiniz. Kar¸sıla¸stırma aracı
kar¸sıla¸stırma noktasını solda, mevcut durumu da sa˘gda görüntüleyecektir.
1.7 E-kitapların Üst Verisini Düzenlemek
˙
Içindekiler
• Bir defada bir kitabın üst verisini düzenlemek (sayfa 97)
– Üst veri indiriliyor (sayfa 97)
– Kitap biçimlerini yönetmek (sayfa 97)
– Kapaklar hakkında (sayfa 97)
• Birden fazla kitabın üst verisini birden de˘gi¸stirmek (sayfa 98)
– Ara ve de˘gi¸stir (sayfa 98)
– Metadata’nın toplu indirilmesi (sayfa 99)
E-kitaplar farklı s¸ekillerde ve boyutlarda olmalarının yanı sıra üst verileri de (ba¸slık/yazar/seri/yayıncı gibi) genellikle
eksik veya hatalı olarak gelir. Üst veriyi de˘gi¸stirmenin en kolay yolu bir girdinin üzerine çift tıklamak ve do˘gru bilgiyi
girmektir. Hada karma¸sık “güçlü düzenleme” için a¸sa˘gıda açıklanan üst veri düzenleme araçlarını kullanabilirsiniz.
96
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
1.7.1 Bir defada bir kitabın üst verisini düzenlemek
Düzenlemek istedi˘giniz kitaba tıkladıktan sonra Üst veriyi düzenle dü˘gmesine veya E tu¸suna basın. Üst verinin tüm
alanlarını düzenleyebilece˘giniz bir ileti¸sim 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¸slık ve yazar arasında dü˘gmeye tıklayarak ikisini birden otomatik kaydırabilirsiniz.
• Yazar sıralamasının yanındaki dü˘gmeye tıklayarak calibre’nin otomatik olarak her yazar için sıralama de˘gerleriyle doldurmasını sa˘glayabilirsiniz. Yazarları yönet ileti¸sim penceresini kullanarak yazarların sıralama de˘gerlerini görebilir ve de˘gi¸stirebilirsiniz. Bu pencere yazar sıralamasının yanındaki dü˘gmeye tıklayıp basılı tutarak
açılabilir.
• Kitapla ili¸skili etiketleri yönetmek için Etiket Düzenleyicisini, etiketlerin yanındaki dü˘gmeye tıklayarak kullanabilirsiniz.
• ISBN kutusunun arka planı hatalı bir ISBN numarası girdi˘ginizde kırmızı olacaktır. Geçerli bir ISBN için renk
ye¸sile dönecektir.
• Yazar sıralama kutusu calibre’nin dü¸sündü˘günden ba¸ska bir de˘ger alırsa kırmızı olacaktır.
Üst veri indiriliyor
Üst veriyi düzenleme ileti¸sim 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¸slık, yazar, seri, etiketler, derecelendirme ve ISBN numaraları sizin
için doldurulabilir.
˙Indirmeyi kullanmak için ba¸slık ve yazar alanlarını doldurduktan sonra Üst veriyi getir dü˘gmesine tıklayın. calibre size
en yakın e¸sle¸smelerin oldu˘gu bir liste döndürecektir. E˘ger önce ISBN alanını doldurursanız ba¸slı˘gı ve yazarı bulmak
için kullanılacaktır. E¸sle¸sme 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¸skili farklı biçimler bulunabilir. Örne˘gin Shakespeare’in Bütün Eserlerini EPUB
biçiminde bulundurdu˘gunuzu ve sonradan Kindle’ınızda okumak için MOBI biçimine dönü¸stürdü˘günüzü dü¸sünelim.
calibre sizin için çoklu biçimleri yönetecektir. Üst veriyi düzenle ileti¸sim 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˘gı almasını atayabilirsiniz.
Kapaklar hakkında
Calibre’den geçerli bir ISBN numarası olan kitapların kapaklarını indirmesini isteyebilirsiniz. Bir di˘ger seçenek olarak
bilgisayarınızdaki bir dosyanın kapak olarak kullanılmasını da sa˘glayabilirsiniz. Hatta calibre sizin için bir üst veriye
sahip varsayılan bir kapak bile üretebilir. Kapa˘gı de˘gi¸stirmek için üzerine resimler sürükleyip bırakabilece˘giniz gibi,
resimleri kopyalayıp yapı¸stırmak için sa˘g tıklamayı da kullanabilirsiniz.
Buna ek olarak, e˘ger kapa˘gınız kötü kenarlıklara sahipse kapakları otomatik olarak kırpmak için de bir dü˘gme bulunmaktadır.
1.7. E-kitapların Üst Verisini Düzenlemek
97
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
˘ stirmek
1.7.2 Birden fazla kitabın üst verisini birden degi
¸
˙Ilk olarak düzenlemek istedi˘giniz kitapları Ctrl veya Shift tu¸slarını basılı tutarken üzerlerine tıklayarak seçin. E˘ger
birden fazla kitap seçerseniz Üst veriyi düzenle dü˘gmesine 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˘ger olarak atayabilirsiniz. Bu özellikle aynı üst veriye sahip bir grup kitap indirdi˘ginizde faydalıdır.
Bu ileti¸sim penceresi içinde Ara ve De˘gi¸stir sekmeleri barındıran, üst veri ile toplu i¸slemler yapabildi˘giniz ve hatta üst
veriyi bir sütundan di˘gerine kopyalayabilece˘giniz kadar güçlüdür.
Normal üst veri düzenleme penceresinin ˙Ileri ve Geri tu¸slarını da kullanarak birden çok kitabın üst verisini art arda
de˘gi¸stirebilirsiniz.
˘ stir
Ara ve degi
¸
Toplu üst veri düzenleme penceresi seçili kitaplar üzerinde güçlü arama ve de˘gi¸stirme i¸slemleri yapmanıza imkan verir.
Varsayılan olarak basit bir arama ve de˘gi¸stirme kullanmasına ra˘gmen düzenli ifadeleri de destekler. Düzenli ifadeler
hakkında daha fazla bilgi için, bakınız All about using regular expressions in calibre (sayfa 197).
Yukarıda da belirtildi˘gi gibi iki farklı arama ve de˘gi¸stirme kipi vardır: karakter e¸sle¸smesi ve düzenli ifadeler. Karakter
e¸sle¸smesi Arama alanına bakar ve Ara kutusuna yazdı˘gınız karakterleri ile de˘gi¸stir kutusuna yazdıklarınızla de˘gi¸stirir. Alandaki arama karakterlerinin her tekrarlaması de˘gi¸stirilecektir. Örne˘gin aranacak alanın a bad cat ifadesini
içeriyorsa ve her a karakterinin HELLO ile de˘gi¸stirilmesini istemi¸sseniz sonuç HELLO bHELLOd cHELLOt olacaktır.
Aradı˘gınız alan etiketler gibi çoklu bir alansa, her etikete ayrı ayrı davranılır. Örne˘gin etiketiniz Korku,Korkutucu içeriyorsa, arama ifadesi r herhangi bir s¸eyle e¸sle¸smeyecektir, çü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¸sareti kaldırın.
Calibre’nin sonucun harflerini büyütmesini ya da küçütmesini isterseniz (yer de˘gi¸stirme gerçekle¸stikten sonraki bilgi)
Yer de˘gi¸stirmeden sonra fonksiyon uygula kutusundaki fonksiyonlardan birini seçebilirsiniz. Kullanılabilir i¸slemler
s¸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¸slık boyutu – Sonuçtaki tüm kelimelerin ilk harfini büyüt.
Sizin testiniz kutusu arama/yer de˘gi¸stirmenin yapmasını istedi˘giniz s¸eyi yapıp yapmadı˘gını kontrol edebilmek için
metin girebilmenizi sa˘glar. Ço˘gu durumda bu kutular yeterli olur, ama bazı durumlarda kontrol etmek istedi˘giniz
durum bu kutularda gösterilmemi¸s 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¸sle¸sen kısımlarına uygulanır, tüm alana de˘gil. ˙Ikincisi fonksiyonlar yer de˘gi¸stirme karakter
dizisine uygulanır, tüm alana de˘gil.
Üçüncü ve en önemlisi yer de˘gi¸stirme karakter dizisi geri referanslar kullanarak arama dizisinin bazı kısımlarına
referans verebilir. Geri referans s¸udur \\n burada n arama ifadesindeki n’inci parantezli gruba i¸saret eden bir tam
sayıdır. Örne˘gin yukardaki aynı örnek kullanıldı˘gında, kötü bir kedi, arama ifadesi kötü (...) (...), ve yer de˘gi¸stirme
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ı¸slı bir kalıp: tüm bir alanda büyük küçük harf de˘gi¸stirmesi yapmak istedi˘ginizi var sayın. Bunu yapmanın en
kolay yolu karakter kipini kullanmaktır, ama ileri gidip düzenli ifade kipini kullanmak istedi˘ginizi var sayalım. Arama
ifadesi (.*) yer de˘gi¸stirme ifadesi \1, ve istenilen büyük küçük harf durumu de˘gi¸stirme fonksiyonu seçilmelidir.
Son olarak, düzenli ifade kipinde de˘gerleri bir alandan di˘gerine kopyalayabilirsiniz. Basitçe kaynak ve hedef alanları
farklı yapın. Kopyalama hedef alanın yerini de˘gi¸stirebilir, bir alanın ba¸sı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
98
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
arasına virgül koymasını (veya koymamasını) söyler. Hedef çoklu ise (örn., etiketler), bu kutuyu i¸saretlemek zorundasınız.
Ara ve yer de˘gi¸stir di˘ger sekmelerdeki di˘ger tüm metadata de˘gi¸siklikleri uygulandıktan sonra yapılır. Bu kafaları karı¸stırabilir, çünkü test kutuları di˘ger de˘gi¸sikliklerden önceki bilgiyi gösterir, ama i¸slem de˘gi¸sikliklerden sonra uygulanır.
Ne olaca˘gıyla ilgili s¸üpheleriniz varsa, arama/yer de˘gi¸stirmeyi ba¸ska de˘gi¸sikliklerle karı¸stırmayın.
Metadata’nın toplu indirilmesi
Birden çok kitap için metadata’yı topluca indirmek istiyorsanız, Metadata düzenle dü˘gmesine sa˘g 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
˙
Içindekiler
•
•
•
•
Ebook Format Conversion (sayfa 99)
Device Integration (sayfa 102)
Library Management (sayfa 110)
Muhtelif (sayfa 114)
1.8.1 Ebook Format Conversion
˙
Içindekiler
•
•
•
•
•
•
What formats does calibre support conversion to/from? (sayfa 99)
What are the best source formats to convert? (sayfa 100)
I converted a PDF file, but the result has various problems? (sayfa 100)
How do I convert my file containing non-English characters, or smart quotes? (sayfa 100)
What’s the deal with Table of Contents in MOBI files? (sayfa 100)
The covers for my MOBI files have stopped showing up in Kindle for PC/Kindle for Android/iPad etc.
(sayfa 101)
• How do I convert a collection of HTML files in a specific order? (sayfa 101)
• The EPUB I produced with calibre is not valid? (sayfa 102)
• How do I use some of the advanced features of the conversion tools? (sayfa 102)
What formats does calibre support conversion to/from?
calibre supports the conversion of many input formats to many output formats. It can convert every input format in the
following list, to every output format.
Input Formats: 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
Output Formats: AZW3, EPUB, DOCX, FB2, HTMLZ, OEB, LIT, LRF, MOBI, PDB, PMLZ, RB, PDF, RTF, SNB,
TCR, TXT, TXTZ, ZIP
Not: PRC is a generic format, calibre supports PRC files with TextRead and MOBIBook headers. PDB is also a
1.8. Sıkça Sorulan Sorular
99
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
generic format. calibre supports eReader, Plucker, PML and zTxt PDB files. DJVU support is only for converting
DJVU files that contain embedded text. These are typically generated by OCR software. MOBI books can be of two
types Mobi6 and KF8. calibre fully supports both. MOBI files often have .azw or .azw3 file extensions. DOCX files
from Microsoft Word 2007 and newer are supported.
What are the best source formats to convert?
In order of decreasing preference: LIT, MOBI, AZW, EPUB, AZW3, FB2, DOCX, HTML, PRC, ODT, RTF, PDB,
TXT, PDF
I converted a PDF file, but the result has various problems?
PDF is a terrible format to convert from. For a list of the various issues you will encounter when converting PDF, see:
PDF belgelerini dönü¸stür (sayfa 61).
How do I convert my file containing non-English characters, or smart quotes?
There are two aspects to this problem:
1. Knowing the encoding of the source file: calibre tries to guess what character encoding your source files
use, but often, this is impossible, so you need to tell it what encoding to use. This can be done in the GUI
via the Input character encoding field in the Look & Feel section. The command-line tools all have an
--input-encoding option.
2. When adding HTML files to calibre, you may need to tell calibre what encoding the files are in. To do this
go to Preferences->Plugins->File Type plugins and customize the HTML2Zip plugin, telling it what encoding your HTML files are in. Now when you add HTML files to calibre they will be correctly processed.
HTML files from different sources often have different encodings, so you may have to change this setting
repeatedly. A common encoding for many files from the web is cp1252 and I would suggest you try that
first. Note that when converting HTML files, leave the input encoding setting mentioned above blank. This
is because the HTML2ZIP plugin automatically converts the HTML files to a standard encoding (utf-8).
What’s the deal with Table of Contents in MOBI files?
The first thing to realize is that most ebooks have two tables of contents. One is the traditional Table of Contents, like
the ToC you find in paper books. This Table of Contents is part of the main document flow and can be styled however
you like. This ToC is called the content ToC.
Then there is the metadata ToC. A metadata ToC is a ToC that is not part of the book text and is typically accessed by
some special button on a reader. For example, in the calibre viewer, you use the Show Table of Contents button to see
this ToC. This ToC cannot be styled by the book creator. How it is represented is up to the viewer program.
In the MOBI format, the situation is a little confused. This is because the MOBI format, alone amongst mainstream
ebook formats, does not have decent support for a metadata ToC. A MOBI book simulates the presence of a metadata
ToC by putting an extra content ToC at the end of the book. When you click Goto Table of Contents on your Kindle,
it is to this extra content ToC that the Kindle takes you.
Now it might well seem to you that the MOBI book has two identical ToCs. Remember that one is semantically a
content ToC and the other is a metadata ToC, even though both might have exactly the same entries and look the same.
One can be accessed directly from the Kindle’s menus, the other cannot.
When converting to MOBI, calibre detects the metadata ToC in the input document and generates an end-of-file ToC
in the output MOBI file. You can turn this off by an option in the MOBI Output settings. You can also tell calibre
100
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
whether to put it and the start or the end of the book via an option in the MOBI Output settings. Remember this ToC is
semantically a metadata ToC, in any format other than MOBI it cannot not be part of the text. The fact that it is part of
the text in MOBI is an accident caused by the limitations of MOBI. If you want a ToC at a particular location in your
document text, create one by hand. So we strongly recommend that you leave the default as it is, i.e. with the metadata
ToC at the end of the book. Also note that if you disable the generation of the end-of-file ToC the resulting MOBI file
may not function correctly on a Kindle, since the Kindle’s use the metadata ToC for many things, including the Page
Flip feature.
If you have a hand edited ToC in the input document, you can use the ToC detection options in calibre to automatically
generate the metadata ToC from it. See the conversion section of the User Manual for more details on how to use these
options.
Finally, I encourage you to ditch the content ToC and only have a metadata ToC in your ebooks. Metadata ToCs will
give the people reading your ebooks a much superior navigation experience (except on the Kindle, where they are
essentially the same as a content ToC).
Not: The newer AZW3 format has proper support for a metadata ToC. However, the Kindle firmware tends to malfunction if you disable the generation of the end-of-file inline ToC. So it is recommended that you leave the generated
ToC alone. If you create an AZW3 file with a metadata ToC and no end-of-file generated ToC, some features on the
Kindle will not work, such as the Page Flip feature.
The covers for my MOBI files have stopped showing up in Kindle for PC/Kindle for Android/iPad etc.
This is caused by a bug in the Amazon software. You can work around it by going to Preferences->Output Options>MOBI output and setting the “Enable sharing of book content” option. If you are reconverting a previously converted
book, you will also have to enable the option in the conversion dialog for that individual book (as per book conversion
settings are saved and take precedence).
Note that doing this will mean that the generated MOBI will show up under personal documents instead of Books on
the Kindle Fire and Amazon whispersync will not work, but the covers will. It’s your choice which functionality is
more important to you. I encourage you to contact Amazon and ask them to fix this bug.
The bug in Amazon’s software is that when you put a MOBI file on a Kindle, unless the file is marked as a Personal
document, Amazon assumes you bought the book from it and tries to download the cover thumbnail for it from its
servers. When the download fails, it refuses to fallback to the cover defined in the MOBI file. This is likely deliberate
on Amazon’s part to try to force authors to sell only through them. In other words, Kindle’s only display covers for
books marked as Personal Documents or books bought directly from Amazon.
If you send a MOBI file to a Kindle with calibre using a USB connection, calibre works around this Amazon bug
by uploading a cover thumbnail itself. However, that workaround is only possible when using a USB connection and
sending with calibre. Note that if you send using email, Amazon will automatically mark the MOBI file as a Personal
Document and the cover will work, but the book will show up in Personal Documents.
How do I convert a collection of HTML files in a specific order?
In order to convert a collection of HTML files in a specific order, you have to create a table of contents file. That is,
another HTML file that contains links to all the other files in the desired order. Such a file looks like:
=
{}=
{}@default
=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
1.8. Sıkça Sorulan Sorular
101
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
\PYGZlt{}a href=\PYGZdq{}file2.html\PYGZdq{}\PYGZgt{}Second File\PYGZlt{}/a\PYGZgt{}\PYGZlt{}
.
.
.
\PYGZlt{}/p\PYGZgt{}
\PYGZlt{}/body\PYGZgt{}
\PYGZlt{}/html\PYGZgt{}
Then, just add this HTML file to the GUI and use the convert button to create your ebook. You can use the option in
the Table of Contents section in the conversion dialog to control how the Table of Contents is generated.
Not: By default, when adding HTML files, calibre follows links in the files in depth first order. This means that if
file A.html links to B.html and C.html and D.html, but B.html also links to D.html, then the files will be in the order
A.html, B.html, D.html, C.html. If instead you want the order to be A.html, B.html, C.html, D.html then you must tell
calibre to add your files in breadth first order. Do this by going to Preferences->Plugins and customizing the HTML
to ZIP plugin.
The EPUB I produced with calibre is not valid?
calibre does not guarantee that an EPUB produced by it is valid. The only guarantee it makes is that if you feed it valid
XHTML 1.1 + CSS 2.1 it will output a valid EPUB. calibre tries hard to ensure that EPUBs it produces actually work
as intended on a wide variety of devices, a goal that is incompatible with producing valid EPUBs, and one that is far
more important to the vast majority of its users. If you need a tool that always produces valid EPUBs, calibre is not
for you. This means, that if you want to send a calibre produced EPUB to an online store that uses an EPUB validity
checker, you have to make sure that the EPUB is valid yourself, calibre will not do it for you – in other words you
must feed calibre valid XHTML + CSS as the input documents.
How do I use some of the advanced features of the conversion tools?
You can get help on any individual feature of the converters by mousing over it in the GUI or running
ebook-convert dummy.html .epub -h at a terminal. A good place to start is to look at the following demo
file that demonstrates some of the advanced features html-demo.zip33
1.8.2 Device Integration
33 http://calibre-ebook.com/downloads/html-demo.zip
102
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
˙
Içindekiler
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
What devices does calibre support? (sayfa 103)
How can I help get my device supported in calibre? (sayfa 103)
My device is not being detected by calibre? (sayfa 103)
My device is non-standard or unusual. What can I do to connect to it? (sayfa 104)
How does calibre manage collections on my SONY reader? (sayfa 104)
Can I use both calibre and the SONY software to manage my reader? (sayfa 105)
How do I use calibre with my iPad/iPhone/iPod touch? (sayfa 105)
How do I use calibre with my Android phone/tablet or Kindle Fire HD? (sayfa 106)
Can I access my calibre books using the web browser in my Kindle or other reading device? (sayfa 107)
I get the error message “Failed to start content server: Port 8080 not free on ‘0.0.0.0”’? (sayfa 108)
I cannot send emails using calibre? (sayfa 108)
Why is my device not detected in linux? (sayfa 108)
My device is getting mounted read-only in linux, so calibre cannot connect to it? (sayfa 109)
Why does calibre not support collections on the Kindle or shelves on the Nook? (sayfa 109)
I am getting an error when I try to use calibre with my Kobo Touch/Glo/etc.? (sayfa 109)
What devices does calibre support?
calibre can directly connect to all the major (and most of the minor) ebook reading devices, smarthphones, tablets, etc.
In addition, using the Connect to folder function you can use it with any ebook reader that exports itself as a USB disk.
You can even connect to Apple devices (via iTunes), using the Connect to iTunes function.
How can I help get my device supported in calibre?
If your device appears as a USB disk to the operating system, adding support for it to calibre is very easy. We just need
some information from you:
• Complete list of ebook formats that your device supports.
• 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?
• We also need information about your device that calibre will collect automatically. First, if your device supports
SD cards, insert them. Then connect your device to the computer. In calibre go to Preferences->Miscellaneous
and click the “Debug device detection” button. This will create some debug output. Copy it to a file and repeat
the process, this time with your device disconnected from your computer.
• Send both the above outputs to us with the other information and we will write a device driver for your device.
Once you send us the output for a particular operating system, support for the device in that operating system will
appear in the next release of calibre. To send us the output, open a bug report and attach the output to it. See calibre
bugs34 .
My device is not being detected by calibre?
Follow these steps to find the problem:
• Make sure that you are connecting only a single device to your computer at a time. Do not have another calibre
supported device like an iPhone/iPad etc. at the same time.
34 http://calibre-ebook.com/bugs
1.8. Sıkça Sorulan Sorular
103
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
• If you are connecting an Apple iDevice (iPad, iPod Touch, iPhone), use the ‘Connect to iTunes’ method in the
‘Getting started’ instructions in Calibre + Apple iDevices: Start here35 .
• Make sure you are running the latest version of calibre. The latest version can always be downloaded from the
calibre website36 . You can tell what version of calibre you are currently running by looking at the bottom line
of the main calibre window.
• Ensure your operating system is seeing the device. That is, the device should show up in Windows Explorer (in
Windows) or Finder (in OS X).
• In calibre, go to Preferences->Ignored Devices and check that your device is not being ignored
• If all the above steps fail, go to Preferences->Miscellaneous and click Debug device detection with your device
attached and post the output as a ticket on the calibre bug tracker37 .
My device is non-standard or unusual. What can I do to connect to it?
In addition to the Connect to Folder function found under the Connect/Share button, calibre provides a User
Defined device plugin that can be used to connect to any USB device that shows up as a disk drive in your
operating system. Note: on windows, the device must have a drive letter for calibre to use it. See the device
plugin Preferences -> Plugins -> Device Plugins -> User Defined and Preferences ->
Miscellaneous -> Get information to setup the user defined device for more information. Note that if you are using the user defined plugin for a device normally detected by a builtin calibre plugin,
you must disable the builtin plugin first, so that your user defined plugin is used instead.
How does calibre manage collections on my SONY reader?
When calibre connects with the reader, it retrieves all collections for the books on the reader. The collections of which
books are members are shown on the device view.
When you send a book to the reader, calibre will add the book to collections based on the metadata for that book. By
default, collections are created from tags and series. You can control what metadata is used by going to Preferences>Plugins->Device Interface plugins and customizing the SONY device interface plugin. If you remove all values,
calibre will not add the book to any collection.
Collection management is largely controlled by the ‘Metadata management’ option found at Preferences>Import/Export->Sending books to devices. If set to ‘Manual’ (the default), managing collections is left to the user;
calibre will not delete already existing collections for a book on your reader when you resend the book to the reader,
but calibre will add the book to collections if necessary. To ensure that the collections for a book are based only on
current calibre metadata, first delete the books from the reader, then resend the books. You can edit collections directly
on the device view by double-clicking or right-clicking in the collections column.
If ‘Metadata management’ is set to ‘Only on send’, then calibre will manage collections more aggressively. Collections
will be built using calibre metadata exclusively. Sending a book to the reader will correct the collections for that book
so its collections exactly match the book’s metadata, adding and deleting collections as necessary. Editing collections
on the device view is not permitted, because collections not in the metadata will be removed automatically.
If ‘Metadata management’ is set to ‘Automatic management’, then calibre will update metadata and collections both
when the reader is connected and when books are sent. When calibre detects the reader and generates the list of books
on the reader, it will send metadata from the library to the reader for all books on the reader that are in the library (On
device is True), adding and removing books from collections as indicated by the metadata and device customization.
When a book is sent, calibre corrects the metadata for that book, adding and deleting collections. Manual editing of
35 http://www.mobileread.com/forums/showthread.php?t=118559
36 http://calibre-ebook.com/download
37 https://bugs.launchpad.net/calibre
104
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
metadata on the device view is not allowed. Note that this option specifies sending metadata, not books. The book files
on the reader are not changed.
In summary, choose ‘manual management’ if you want to manage collections yourself. Collections for a book will
never be removed by calibre, but can be removed by you by editing on the device view. Choose ‘Only on send’ if you
want calibre to manage collections when you send a book, adding books to and removing books from collections as
needed. Choose ‘Automatic management’ if you want calibre to keep collections up to date whenever the reader is
connected.
If you use multiple installations of calibre to manage your reader, then option ‘Automatic management’ may not be
what you want. Connecting the reader to one library will reset the metadata to what is in that library. Connecting to
the other library will reset the metadata to what is in that other library. Metadata in books found in both libraries will
be flopped back and forth.
Can I use both calibre and the SONY software to manage my reader?
Yes, you can use both, provided you do not run them at the same time. That is, you should use the following sequence:
Connect reader->Use one of the programs->Disconnect reader. Reconnect reader->Use the other program->disconnect
reader.
The underlying reason is that the Reader uses a single file to keep track of ‘meta’ information, such as collections, and
this is written to by both calibre and the Sony software when either updates something on the Reader. The file will be
saved when the Reader is (safely) disconnected, so using one or the other is safe if there’s a disconnection between
them, but if you’re not the type to remember this, then the simple answer is to stick to one or the other for the transfer
and just export/import from/to the other via the computers hard disk.
If you do need to reset your metadata due to problems caused by using both at the same time, then just delete the
media.xml file on the Reader using your PC’s file explorer and it will be recreated after disconnection.
With recent reader iterations, SONY, in all its wisdom has decided to try to force you to use their software. If you
install it, it auto-launches whenever you connect the reader. If you don’t want to uninstall it altogether, there are a
couple of tricks you can use. The simplest is to simply re-name the executable file that launches the library program.
More detail in the forums38 .
How do I use calibre with my iPad/iPhone/iPod touch?
Over the air
The easiest way to browse your calibre collection on your Apple device (iPad/iPhone/iPod) is by using the calibre
content server, which makes your collection available over the net. First perform the following steps in calibre
• Set the Preferred Output Format in calibre to EPUB (The output format can be set under Preferences->Interface>Behavior)
• Set the output profile to iPad (this will work for iPhone/iPods as well), under Preferences->Conversion>Common Options->Page Setup
• Convert the books you want to read on your iDevice to EPUB format by selecting them and clicking the Convert
button.
• Turn on the Content Server by clicking the Connect/Share button and leave calibre running. You can also tell
calibre to automatically start the content server via Preferences->Sharing over the net.
There are many apps for your iDevice that can connect to calibre. Here we describe using two of them, iBooks and
Stanza.
38 http://www.mobileread.com/forums/showthread.php?t=65809
1.8. Sıkça Sorulan Sorular
105
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Using Stanza You should be able to access your books on your iPhone by opening Stanza. Go to “Get Books” and
then click the “Shared” tab. Under Shared you will see an entry “Books in calibre”. If you don’t, make sure your
iPad/iPhone is connected using the WiFi network in your house, not 3G. If the calibre catalog is still not detected in
Stanza, you can add it manually in Stanza. To do this, click the “Shared” tab, then click the “Edit” button and then
click “Add book source” to add a new book source. In the Add Book Source screen enter whatever name you like and
in the URL field, enter the following:
=
{}=
{}@default
=0=1=2=0=1=2http://192.168.1.2:8
Replace 192.168.1.2 with the local IP address of the computer running calibre. If you have changed the port the
calibre content server is running on, you will have to change 8080 as well to the new port. The local IP address is the
IP address you computer is assigned on your home network. A quick Google search will tell you how to find out your
local IP address. Now click “Save” and you are done.
If you get timeout errors while browsing the calibre catalog in Stanza, try increasing the connection timeout value in
the stanza settings. Go to Info->Settings and increase the value of Download Timeout.
Using iBooks Start the Safari browser and type in the IP address and port of the computer running the calibre server,
like this:
=
{}=
{}@default
=0=1=2=0=1=2http://192.168.1.2:8
Replace 192.168.1.2 with the local IP address of the computer running calibre. If you have changed the port the
calibre content server is running on, you will have to change 8080 as well to the new port. The local IP address is the
IP address you computer is assigned on your home network. A quick Google search will tell you how to find out your
local IP address.
You will see a list of books in Safari, just click on the epub link for whichever book you want to read, Safari will then
prompt you to open it with iBooks.
With the USB cable + iTunes
Use the ‘Connect to iTunes’ method in the ‘Getting started’ instructions in Calibre + Apple iDevices: Start here39 .
This method only works on Windows Vista and higher, and OS X upto 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.
How do I use calibre with my Android phone/tablet or Kindle Fire HD?
There are two ways that you can connect your Android device to calibre. Using a USB cable – or wirelessly, over
the air. The first step to using an Android device is installing an ebook reading application on it. There are many
free and paid ebook reading applications for Android: Some examples (in no particular order): FBReader40 , Moon+41 ,
Mantano42 , Aldiko43 , Kindle44 .
39 http://www.mobileread.com/forums/showthread.php?t=118559
40 https://play.google.com/store/apps/details?id=org.geometerplus.zlibrary.ui.android&hl=en
41 https://play.google.com/store/apps/details?id=com.flyersoft.moonreader&hl=en
42 https://play.google.com/store/apps/details?id=com.mantano.reader.android.lite&hl=en
43 https://play.google.com/store/apps/details?id=com.aldiko.android&hl=en
44 https://play.google.com/store/apps/details?id=com.amazon.kindle&feature=related_apps
106
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Using a USB cable
Simply plug your device into the computer with a USB cable. calibre should automatically detect the device and then
you can transfer books to it by clicking the Send to Device button. calibre does not have support for every single
android device out there, so if your device is not automatically detected, follow the instructions at How can I help get
my device supported in calibre? (sayfa 103) to get your device supported in calibre.
Not: With newer Android devices, the USB connection is not supported on Windows XP and OS X before Mavericks
(10.9). If you are on Windows XP or old versions of OS X, you should use one of the wireless connection methods.
Over the air
The easiest way to transfer books wirelessly to your Android device is to use the Calibre Companion45 Android app.
This app is maintained by a core calibre developer and allows calibre to connect to your Android device wirelessly,
just as though you plugged in the device with a USB cable. You can browse files on the device in calibre and use the
Send to device button to transfer files to your device wirelessly.
calibre also has a builtin web server, the Content Server. You can browse your calibre collection on your Android
device is by using the calibre content server, which makes your collection available over the net. First perform the
following steps in calibre
• Set the Preferred Output Format in calibre to EPUB for normal Android devices or MOBI for Kindles (The
output format can be set under Preferences->Interface->Behavior)
• Convert the books you want to read on your device to EPUB/MOBI format by selecting them and clicking the
Convert button.
• Turn on the Content Server in calibre’s preferences and leave calibre running.
Now on your Android device, open the browser and browse to
http://192.168.1.2:8080/
Replace 192.168.1.2 with the local IP address of the computer running calibre. If your local network supports the
use of computer names, you can replace the IP address with the network name of the computer. If you have changed
the port the calibre content server is running on, you will have to change 8080 as well to the new port.
The local IP address is the IP address you computer is assigned on your home network. A quick Google search will
tell you how to find out your local IP address. You can now browse your book collection and download books from
calibre to your device to open with whatever ebook reading software you have on your android device.
Some reading programs support browsing the Calibre library directly. For example, in Aldiko, click My Catalogs, then
+ to add a catalog, then give the catalog a title such as “Calibre” and provide the URL listed above. You can now
browse the Calibre library and download directly into the reading software.
Can I access my calibre books using the web browser in my Kindle or other reading device?
calibre has a Content Server that exports the books in calibre as a web page. You can turn it on under Preferences>Sharing over the net. Then just point the web browser on your device to the computer running the Content Server
and you will be able to browse your book collection. For example, if the computer running the server has IP address
63.45.128.5, in the browser, you would type:
=
{}=
{}@default
45 http://www.multipie.co.uk/calibre-companion/
1.8. Sıkça Sorulan Sorular
107
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
=0=1=2=0=1=2
Some devices, like the Kindle (1/2/DX), do not allow you to access port 8080 (the default port on which the content
server runs. In that case, change the port in the calibre Preferences to 80. (On some operating systems, you may not be
able to run the server on a port number less than 1024 because of security settings. In this case the simplest solution is
to adjust your router to forward requests on port 80 to port 8080).
I get the error message “Failed to start content server: Port 8080 not free on ‘0.0.0.0”’?
The most likely cause of this is your antivirus program. Try temporarily disabling it and see if it does the trick.
I cannot send emails using calibre?
Because of the large amount of spam in email, sending email can be tricky, as different mail servers use different
strategies to block email. The most common problem is if you are sending email directly (without a mail relay) in
calibre. Many servers (for example, Amazon) block email that does not come from a well known relay. The most
robust way to setup email sending in calibre is to do the following:
• Create a free GMX account at GMX46 .
• Goto Preferences->Sharing by Email in calibre and click the Use GMX button and fill in the information asked
for.
• calibre will then use GMX to send the mail.
• If you are sending to your Kindle, remember to update the email preferences on your Amazon Kindle page to
allow email sent from your GMX email address. Also note that Amazon does not allow email delivery of AZW3
and new style (KF8) MOBI files.
Even after doing this, you may have problems. One common source of problems is that some poorly designed antivirus
programs block calibre from opening a connection to send email. Try adding an exclusion for calibre in your antivirus
program.
Not: Microsoft/Google can disable your account if you use it to send large amounts of email. So, when using Hotmail/Gmail 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 descibed
here47 .
Not: If you are concerned about giving calibre access to your email account, simply create a new free email account
with GMX or Hotmail and use it only for calibre.
Why is my device not detected in linux?
calibre needs your linux kernel to have been setup correctly to detect devices. If your devices are not detected, perform
the following tests:
46 http://www.gmx.com
47 https://support.google.com/accounts/answer/6010255
108
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
=
{}=
{}@default
=0=1=2=0=1=2grep SYSFS\PYGZus{}DEPRECATED /boot/config\PYGZhy{}{}`uname \PYGZhy{}r{}`
You should see something like CONFIG_SYSFS_DEPRECATED_V2 is not set. Also,
=
{}=
{}@default
=0=1=2=0=1=2grep CONFIG\PYGZus{}SCSI\PYGZus{}MULTI\PYGZus{}LUN /boot/config\PYGZhy{}{}`uname \PYGZhy{}
must return CONFIG_SCSI_MULTI_LUN=y. If you don’t see either, you have to recompile your kernel with the
correct settings.
My device is getting mounted read-only in linux, so calibre cannot connect to it?
Linux kernels mount devices read-only when their filesystems have errors. You can repair the filesystem with:
=
{}=
{}@default
=0=1=2=0=1=2sudo fsck.vfat \PYGZhy{}y /dev/sdc
Replace /dev/sdc with the path to the device node of your device. You can find the device node of your device, which
will always be under /dev by examining the output of:
=
{}=
{}@default
=0=1=2=0=1=2\PYG{n}{mount}
Why does calibre not support collections on the Kindle or shelves on the Nook?
Neither the Kindle nor the Nook provide any way to manipulate collections over a USB connection. If you really care
about using collections, I would urge you to sell your Kindle/Nook and get a Kobo. Only Kobo seems to understand
that life is too short to be entering collections one by one on an e-ink screen :)
Note that in the case of the Kindle, there is a way to manipulate collections via USB, but it requires that the Kindle
be rebooted every time it is disconnected from the computer, for the changes to the collections to be recognized. As
such, it is unlikely that any calibre developers will ever feel motivated enough to support it. There is however, a calibre
plugin that allows you to create collections on your Kindle from the calibre metadata. It is available from here48 .
Not: Amazon have removed the ability to manipulate collections completely in their newer models, like the Kindle
Touch and Kindle Fire, making even the above plugin useless, unless you root your Kindle and install custom firmware.
I am getting an error when I try to use calibre with my Kobo Touch/Glo/etc.?
The Kobo has very buggy firmware. Connecting to it has been known to fail at random. Certain combinations of
motherboard, USB ports/cables/hubs can exacerbate this tendency to fail. If you are getting an error when connecting
to your touch with calibre try the following, each of which has solved the problem for some calibre users.
• Connect the Kobo directly to your computer, not via USB Hub
48 http://www.mobileread.com/forums/showthread.php?t=244202
1.8. Sıkça Sorulan Sorular
109
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
• Try a different USB cable and a different USB port on your computer
• Try a different computer, in particular the Kobo does not work well with some Windows XP machines. If you
are on Windows XP, try a computer with a newer version of windows.
• Try upgrading the firmware on your Kobo Touch to the latest
• Try resetting the Kobo (sometimes this cures the problem for a little while, but then it re-appears, in which case
you have to reset again and again)
• Try only putting one or two books onto the Kobo at a time and do not keep large collections on the Kobo
1.8.3 Library Management
˙
Içindekiler
•
•
•
•
•
•
•
•
•
What formats does calibre read metadata from? (sayfa 110)
Where are the book files stored? (sayfa 110)
How does calibre manage author names and sorting? (sayfa 111)
Why doesn’t calibre let me store books in my own directory structure? (sayfa 112)
Why doesn’t calibre have a column for foo? (sayfa 113)
Can I have a column showing the formats or the ISBN? (sayfa 113)
How do I move my calibre library from one computer to another? (sayfa 113)
The list of books in calibre is blank! (sayfa 113)
I am getting errors with my calibre library on a networked drive/NAS? (sayfa 114)
What formats does calibre read metadata from?
calibre reads metadata from the following formats: CHM, LRF, PDF, LIT, RTF, OPF, MOBI, PRC, EPUB, FB2, IMP,
RB, HTML. In addition it can write metadata to: LRF, RTF, OPF, EPUB, PDF, MOBI
Where are the book files stored?
When you first run calibre, it will ask you for a folder in which to store your books. Whenever you add a book to
calibre, it will copy the book into that folder. Books in the folder are nicely arranged into sub-folders by Author and
Title. Note that the contents of this folder are automatically managed by calibre, do not add any files/folders manually
to this folder, as they may be automatically deleted. If you want to add a file associated to a particular book, use the
top right area of Edit metadata dialog to do so. Then, calibre will automatically put that file into the correct folder and
move it around when the title/author changes.
Metadata about the books is stored in the file metadata.db at the top level of the library folder This file is is a sqlite
database. When backing up your library make sure you copy the entire folder and all its sub-folders.
The library folder and all it’s contents make up what is called a calibre library. You can have multiple such libraries.
To manage the libraries, click the calibre icon on the toolbar. You can create new libraries, remove/rename existing
ones and switch between libraries easily.
You can copy or move books between different libraries (once you have more than one library setup) by right clicking
on a book and selecting the Copy to library action.
110
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
How does calibre manage author names and sorting?
Author names are complex, especially across cultures, see this note49 for some of complexities. calibre has a very
flexible strategy for managing author names. The first thing to understand is that books and authors are separate
entities in calibre. A book can have more than one author, and an author can have more than one book. You can
manage the authors of a book by the edit metadata dialog. You can manage individual authors by right clicking on the
author in the Tag Browser on the left of the main calibre screen and selecting Manage authors. Using this dialog you
can change the name of an author and also how that name is sorted. This will automatically change the name of the
author in all the books of that author. When a book has multiple authors, separate their names using the & character.
Now coming to author name sorting:
• When a new author is added to calibre (this happens whenever a book by a new author is added), calibre
automatically computes a sort string for both the book and the author.
• Authors in the Tag Browser are sorted by the sort value for the authors. Remember that this is different from
the Author sort field for a book.
• By default, this sort algorithm assumes that the author name is in First name Last name format and
generates a Last name, First name sort value.
• You can change this algorithm by going to Preferences->Tweaks and setting the author_sort_copy_method
tweak.
• You can force calibre to recalculate the author sort values for every author by right clicking on any author and
selecting Manage authors, then pushing the Recalculate all author sort values button. Do this after you have set
the author_sort_copy_method tweak to what you want.
• You can force calibre to recalculate the author sort values for all books by using the bulk metadata edit dialog
(select all books and click edit metadata, check the Automatically set author sort checkbox, then press OK.)
• When recalculating the author sort values for books, calibre uses the author sort values for each individual
author. Therefore, ensure that the individual author sort values are correct before recalculating the books’ author
sort values.
• You can control whether the Tag Browser display authors using their names or their sort values by setting the
categories_use_field_for_author_name tweak in Preferences->Tweaks
Note that you can set an individual author’s sort value to whatever you want using Manage authors. This is useful
when dealing with names that calibre will not get right, such as complex multi-part names like Miguel de Cervantes
Saavedra or when dealing with Asian names like Sun Tzu.
With all this flexibility, it is possible to have calibre manage your author names however you like. For example, one common req
• Set the author_sort_copy_method tweak to copy as described above.
• Restart calibre. Do not change any book metadata before doing the remaining steps.
• Change all author names to LN, FN using the Manage authors dialog.
• After you have changed all the authors, press the Recalculate all author sort values button.
• Press OK, at which point calibre will change the authors in all your books. This can take a while.
Not:
When changing from FN LN to LN, FN, it is often the case that the values in author_sort are already in LN, FN format. If this is
• set the author_sort_copy_method tweak to copy as described above.
49 http://www.w3.org/International/questions/qa-personal-names.en.php?changelang=en
1.8. Sıkça Sorulan Sorular
111
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
• restart calibre. Do not change any book metadata before doing the remaining steps.
• open the Manage authors dialog. Press the copy all author sort values to author button.
• Check through the authors to be sure you are happy. You can still press Cancel to abandon the changes.
Once you press OK, there is no undo.
• Press OK, at which point calibre will change the authors in all your books. This can take a while.
Why doesn’t calibre let me store books in my own directory structure?
The whole point of calibre’s library management features is that they provide a search and sort based interface for
locating books that is much more efficient than any possible directory scheme you could come up with for your collection. Indeed, once you become comfortable using calibre’s interface to find, sort and browse your collection, you wont
ever feel the need to hunt through the files on your disk to find a book again. By managing books in its own directory
structure of Author -> Title -> Book files, calibre is able to achieve a high level of reliability and standardization.
To illustrate why a search/tagging based interface is superior to folders, consider the following. Suppose your book
collection is nicely sorted into folders with the following scheme:
=
{}=
{}@default
=0=1=2=0=1=2Genre \PYGZhy{}\PYGZgt{} Author \PYGZhy{}\PYGZgt{} Series \PYGZhy{}\PYGZgt{} ReadStatus
Now this makes it very easy to find for example all science fiction books by Isaac Asimov in the Foundation series.
But suppose you want to find all unread science fiction books. There’s no easy way to do this with this folder scheme,
you would instead need a folder scheme that looks like:
=
{}=
{}@default
=0=1=2=0=1=2ReadStatus \PYGZhy{}\PYGZgt{} Genre \PYGZhy{}\PYGZgt{} Author \PYGZhy{}\PYGZgt{} Series
In calibre, you would instead use tags to mark genre and read status and then just use a simple search query like
tag:scifi and not tag:read. calibre even has a nice graphical interface, so you don’t need to learn its
search language instead you can just click on tags to include or exclude them from the search.
To those of you that claim that you need access to the filesystem to 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.
Finally, the reason there are numbers at the end of every title folder, is for robustness. That number is the id number of
the book record in the calibre database. The presence of the number allows you to have multiple records with the same
title and author names. It is also part of what allows calibre to magically regenerate the database with all metadata if
the database file gets corrupted. Given that calibre’s mission is to get you to stop storing metadata in filenames and
stop using the filesystem to find things, the increased robustness afforded by the id numbers is well worth the uglier
folder names.
If you are still not convinced, then I’m afraid calibre is not for you. Look elsewhere for your book cataloguing needs.
Just so we’re clear, this is not going to change. Kindly do not contact us in an attempt to get us to change this.
112
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Why doesn’t calibre have a column for foo?
calibre is designed to have columns for the most frequently and widely used fields. In addition, you can add any
columns you like. Columns can be added via Preferences->Interface->Add your own columns. Watch the tutorial UI
Power tips50 to learn how to create your own columns, or read this blog post51 .
You can also create “virtual columns” that contain combinations of the metadata from other columns. In the add
column dialog use the Quick create links to easily create columns to show the book ISBN or formats. You can use
the powerful calibre template language to do much more with columns. For more details, see Calibre s¸ablon dili
(sayfa 153).
Can I have a column showing the formats or the ISBN?
Yes, you can. Follow the instructions in the answer above for adding custom columns.
How do I move my calibre library from one computer to another?
Simply copy the calibre library folder from the old to the new computer. You can find out what the library folder is by
clicking the calibre icon in the toolbar. The very first item is the path to the library folder. Now on the new computer,
start calibre for the first time. It will run the Welcome Wizard asking you for the location of the calibre library. Point
it to the previously copied folder. If the computer you are transferring to already has a calibre installation, then the
Welcome wizard wont run. In that case, right-click the calibre icon in the tooolbar and point it to the newly copied
directory. You will now have two calibre libraries on your computer and you can switch between them by clicking the
calibre icon on the toolbar. Transferring your library in this manner preserver all your metadata, tags, custom columns,
etc.
Note that if you are transferring between different types of computers (for example Windows to OS X) then after doing
the above you should also right-click the calibre icon on the tool bar, select Library Maintenance and run the Check
Library action. It will warn you about any problems in your library, which you should fix by hand.
Not: A calibre library is just a folder which contains all the book files and their metadata. All the metadata is stored in
a single file called metadata.db, in the top level folder. If this file gets corrupted, you may see an empty list of books in
calibre. In this case you can ask calibre to restore your books by doing a right-click on the calibre icon in the toolbar
and selecting Library Maintenance->Restore database
The list of books in calibre is blank!
In order to understand why that happened, you have to understand what a calibre library is. At the most basic level,
a calibre library is just a folder. Whenever you add a book to calibre, that book’s files are copied into this folder
(arranged into sub folders by author and title). Inside the calibre library folder, at the top level, you will see a file
called metadata.db. This file is where calibre stores the metadata like title/author/rating/tags etc. for every book in your
calibre library. The list of books that calibre displays is created by reading the contents of this metadata.db file.
There can be two reasons why calibre is showing a empty list of books:
• 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 dont know the new location search your computer for the file metadata.db.
50 http://calibre-ebook.com/demo#tutorials
51 http://blog.calibre-ebook.com/2011/11/calibre-custom-columns.html
1.8. Sıkça Sorulan Sorular
113
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
• Your metadata.db file was deleted/corrupted. In this case, you can ask calibre to rebuild the metadata.db from its
backups. Right click the calibre icon in the calibre toolbar and select Library maintenance->Restore database.
calibre will automatically rebuild metadata.db.
I am getting errors with my calibre library on a networked drive/NAS?
Do not put your calibre library on a networked drive.
A filesystem is a complex beast. Most network filesystems lack various filesystem features that calibre uses. Some
dont support file locking, some dont 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.
Consider using the calibre Content Server to make your books available on other computers. Run calibre on a single
computer and access it via the Content Server or a Remote Desktop solution.
If you must share the actual library, use a file syncing tool like DropBox or rsync instead of a networked drive. If you
are using a file-syncing tool it is essential that you make sure that both calibre and the file syncing tool do not try to
access the calibre library at the same time. In other words, do not run the file syncing tool and calibre at the same time.
Even with these tools there is danger of data corruption/loss, so only do this if you are willing to live with that risk. In
particular, be aware that Google Drive is incompatible with calibre, if you put your calibre library in Google Drive,
you will suffer data loss. See this thread52 for details.
1.8.4 Muhtelif
˙
Içindekiler
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
I want calibre to download news from my favorite news website. (sayfa 115)
Why the name calibre? (sayfa 115)
Why does calibre show only some of my fonts on OS X? (sayfa 115)
calibre is not starting on Windows? (sayfa 115)
calibre freezes/crashes occasionally? (sayfa 116)
Using the viewer or doing any conversions results in a permission denied error on windows (sayfa 117)
calibre is not starting on OS X? (sayfa 117)
I downloaded the installer, but it is not working? (sayfa 117)
My antivirus program claims calibre is a virus/trojan? (sayfa 118)
How do I backup calibre? (sayfa 118)
How do I use purchased EPUB books with calibre (or what do I do with .acsm files)? (sayfa 118)
I am getting a “Permission Denied” error? (sayfa 119)
Can I have the comment metadata show up on my reader? (sayfa 119)
How do I get calibre to use my HTTP proxy? (sayfa 119)
I want some feature added to calibre. What can I do? (sayfa 119)
Why doesn’t calibre have an automatic update? (sayfa 120)
How is calibre licensed? (sayfa 120)
How do I run calibre from my USB stick? (sayfa 120)
How do I run parts of calibre like news download and the content server on my own linux server?
(sayfa 120)
52 http://www.mobileread.com/forums/showthread.php?t=205581
114
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
I want calibre to download news from my favorite news website.
If you are reasonably proficient with computers, you can teach calibre to download news from any website of your
choosing. To learn how to do this see Sık kullandı˘gınız haber sitesini ekleme (sayfa 121).
Otherwise, you can request a particular news site by posting in the calibre Recipes forum53 .
Why the name calibre?
Take your pick:
• Convertor And LIBRary for Ebooks
• A high calibre product
• A tribute to the SONY Librie which was the first e-ink based ebook reader
• My wife chose it ;-)
calibre is pronounced as cal-i-ber not ca-li-bre. If you’re wondering, calibre is the British/commonwealth spelling for
caliber. Being Indian, that’s the natural spelling for me.
Why does calibre show only some of my fonts on OS X?
calibre embeds fonts in ebook files it creates. Ebook files support embedding only TrueType and OpenType (.ttf and
.otf) fonts. Most fonts on OS X systems are in .dfont format, thus they cannot be embedded. calibre shows only
TrueType and OpenType fonts found on your system. You can obtain many such fonts on the web. Simply download
the .ttf/.otf files and add them to the Library/Fonts directory in your home directory.
calibre is not starting on Windows?
There can be several causes for this:
• If you are on Windows XP, or on a computer with a processor that does not support SSE2 (such as AMD
processors from before 2003) try installing calibre version 1.4854 . calibre 2.0 and newer use Qt 5 which is
known to be incompatible with Windows XP machines, and requires SSE2. Simply un-install calibre and then
install version 1.48, doing so will not affect your books/settings.
• If you get an error about calibre not being able to open a file because it is in use by another program, do the
following:
– Uninstall calibre
– Reboot your computer
– Re-install calibre. But do not start calibre from the installation wizard.
– Temporarily disable your antivirus program (disconnect from the Internet before doing so, to be safe)
– Look inside the folder you chose for your calibre library. If you see a file named metadata.db, delete it.
– Start calibre
– From now on you should be able to start calibre normally.
• If you get an error about a Python function terminating unexpectedly after upgrading calibre, first uninstall calibre, then delete the folders (if they exists) C:\Program Files\Calibre and C:\Program
Files\Calibre2. Now re-install and you should be fine.
53 http://www.mobileread.com/forums/forumdisplay.php?f=228
54 http://download.calibre-ebook.com/1.48.0/
1.8. Sıkça Sorulan Sorular
115
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
• If you get an error in the welcome wizard on an initial run of calibre, try choosing a folder like C:\library
as the calibre library (calibre sometimes has trouble with library locations if the path contains non-English
characters, or only numbers, etc.)
• Try running it as Administrator (Right click on the icon and select “Run as Administrator”)
If it still wont launch, start a command prompt (press the windows key and R; then type cmd.exe in the Run dialog
that appears). At the command prompt type the following command and press Enter:
=
{}=
{}@default
=0=1=2=0=1=2\PYG{n}{calibre}\PYG{o}{\PYGZhy{}}\PYG{n}{debug} \PYG{o}{\PYGZhy{}}\PYG{n}{g}
Post any output you see in a help message on the Forum55 .
calibre freezes/crashes occasionally?
There are several possible things I know of, that can cause this:
• 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
dont notice it and so you think calibre has frozen. Disconnect your second monitor and restart calibre.
• If you use RoboForm, it is known to cause calibre to crash. Add calibre to the blacklist of programs inside
RoboForm to fix this. Or uninstall RoboForm.
• The Logitech SetPoint Settings application causes random crashes in calibre when it is open. Close it before
starting calibre.
• Constant Guard Protection by Xfinity causes crashes in calibre. You have to manually allow calibre in it or
uninstall Constant Guard Protection.
• Spybot - Search & Destroy blocks calibre from accessing its temporary files breaking viewing and converting
of books.
• You are using a Wacom branded USB mouse. There is an incompatibility between Wacom mice and the graphics
toolkit calibre uses. Try using a non-Wacom mouse.
• On some 64 bit versions of Windows there are security software/settings that prevent 64-bit calibre from working
properly. If you are using the 64-bit version of calibre try switching to the 32-bit version.
• If the crashes happen specifically when you are using a file open dialog, like clicking on the Add Books button or
the Save to Disk button, then you may have an issue with the windows file open dialogs on your computer. Some
calibre users have reported that uninstalling the SpiderOak encrypted backup software also fixes these crashes.
If you do not wish to uninstall SpiderOak, you can also turn off “Enable OS integration” in the SpiderOak
preferences.
If none of the above apply to you, then there is some other program on your computer that is interfering with calibre.
First reboot your computer in safe mode, to have as few running programs as possible, and see if the crashes still
happen. If they do not, then you know it is some program causing the problem. The most likely such culprit is a
program that modifies other programs’ behavior, such as an antivirus, a device driver, something like RoboForm (an
automatic form filling app) or an assistive technology like Voice Control or a Screen Reader.
The only way to find the culprit is to eliminate the programs one by one and see which one is causing the issue.
Basically, stop a program, run calibre, check for crashes. If they still happen, stop another program and repeat.
55 http://www.mobileread.com/forums/forumdisplay.php?f=166
116
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Using the viewer or doing any conversions results in a permission denied error on windows
Something on your computer is preventing calibre from accessing its own temporary files. Most likely the permissions
on your Temp folder are incorrect. Go to the folder file:C:\Users\USERNAME\AppData\Local in Windows Explorer
and then right click on the file:Temp folder, select Properties and go to the Security tab. Make sure that your user
account has full control for this folder.
Some users have reported that running the following command in an Administrator Command Prompt fixed their
permissions. To get an Administrator Command Prompt search for cmd.exe in the start menu, then right click on the
command prompt entry and select Run as Administrator. At the command prompt type the following command and
press Enter:
=
{}=
{}@default
=0=1=2=0=1=2icacls \PYGZdq{}\PYGZpc{}appdata\PYGZpc{}\PYGZbs{}..\PYGZbs{}Local\PYGZbs{}Temp\PYGZdq{} /
Alternately, you can run calibre as Administrator, but doing so will cause some functionality, such as drag and drop to
not work.
Finally, some users have reported that disabling UAC fixes the problem.
calibre is not starting on OS X?
One common cause of failures on OS X is the use of accessibility technologies that are incompatible with the graphics
toolkit calibre uses. Try turning off VoiceOver if you have it on. Also go to System Preferences->System->Universal
Access and turn off the setting for enabling access for assistive devices in all the tabs.
You can obtain debug output about why calibre is not starting by running Console.app. Debug output will be printed
to it. If the debug output contains a line that looks like:
=
{}=
{}@default
=0=1=2=0=1=2Qt: internal: \PYGZhy{}1: Error ATSUMeasureTextImage text/qfontengine\PYGZus{}mac.mm
then the problem is probably a corrupted font cache. You can clear the cache by following these instructions56 . If that
doesn’t solve it, look for a corrupted font file on your system, in ~/Library/Fonts or the like. An easy way to check
for corrupted fonts in OS X is to start the “Font Book” application, select all fonts and then in the File menu, choose
“Validate fonts”.
I downloaded the installer, but it is not working?
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.
• Try temporarily disabling your antivirus program (Microsoft Security Essentials, or Kaspersky or Norton or
McAfee or whatever). This is most likely the culprit if the upgrade process is hanging in the middle.
• Try rebooting your computer and running a registry cleaner like Wise registry cleaner58 .
• Try a clean install. That is, uninstall calibre, delete C:\Program Files\Calibre2 (or wherever you previously chose to install calibre). Then re-install calibre. Note that uninstalling does not touch your books or
settings.
56 http://www.macworld.com/article/1139383/fontcacheclear.html
57 http://sourceforge.net/projects/calibre/files/
58 http://www.wisecleaner.com
1.8. Sıkça Sorulan Sorular
117
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
• Try downloading the installer with an alternate browser. For example if you are using Internet Explorer, try using
Firefox or Chrome instead.
• If you get an error about a missing DLL on windows, then most likely, the permissions on your temporary
folder are incorrect. Go to the folder C:\Users\USERNAME\AppData\Local in Windows explorer and
then right click on the Temp folder and select Properties and go to the Security tab. Make sure that your user
account has full control for this folder.
If you still cannot get the installer to work and you are on windows, you can use the calibre portable install59 , which
does not need an installer (it is just a zip file).
My antivirus program claims calibre is a virus/trojan?
The first thing to check is that you are downloading calibre from the official website: http://calibreebook.com/download. Make sure you are clicking the download links on the left, not the advertisements on the right.
calibre is a very popular program and unscrupulous people try to setup websites offering it for download to fool the
unwary.
If you have the official download and your antivirus program is still claiming calibre is a virus, then, your antivirus
program is wrong. Antivirus programs use heuristics, patterns of code that “look suspicious” to detect viruses. It’s
rather like racial profiling. calibre is a completely open source product. You can actually browse the source code
yourself (or hire someone to do it for you) to verify that it is not a virus. Please report the false identification to whatever
company you buy your antivirus software from. If the antivirus program is preventing you from downloading/installing
calibre, disable it temporarily, install calibre and then re-enable it.
How do I backup calibre?
The most important thing to backup is the calibre library folder, that contains all your books and metadata. This is the
folder you chose for your calibre library when you ran calibre for the first time. You can get the path to the library
folder by clicking the calibre icon on the main toolbar. You must backup this complete folder with all its files and
sub-folders.
You can switch calibre to using a backed up library folder by simply clicking the calibre icon on the toolbar and
choosing your backup library folder. A backed up library folder backs up your custom columns and saved searches as
well as all your books and metadata.
If you want to backup the calibre configuration/plugins, you have to backup the config directory. You can find this config directory via Preferences->Miscellaneous. Note that restoring configuration directories is not officially supported,
but should work in most cases. Just copy the contents of the backup directory into the current configuration directory
to restore.
How do I use purchased EPUB books with calibre (or what do I do with .acsm files)?
Most purchased EPUB books have DRM60 . This prevents calibre from opening them. You can still use calibre to store
and transfer them to your ebook reader. First, you must authorize your reader on a windows machine with Adobe
Digital Editions. Once this is done, EPUB books transferred with calibre will work fine on your reader. When you
purchase an epub book from a website, you will get an ”.acsm” file. This file should be opened with Adobe Digital
Editions, which will then download the actual ”.epub” ebook. The ebook file will be stored in the folder “My Digital
Editions”, from where you can add it to calibre.
59 http://calibre-ebook.com/download_portable
60 http://drmfree.calibre-ebook.com/about#drm
118
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
I am getting a “Permission Denied” error?
A permission denied error can occur because of many possible reasons, none of them having anything to do with
calibre.
• You can get permission denied errors if you are using an SD card with write protect enabled.
• If you, or some program you used changed the file permissions of the files in question to read only.
• If there is a filesystem error on the device which caused your operating system to mount the filesystem in read
only mode or mark a particular file as read only pending recovery.
• If the files have their owner set to a user other than you.
• If your file is open in another program.
• 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 referered to in the error message with a FAT32 filesystem,
or delete some files from the SD card/device memory.
You will need to fix the underlying cause of the permissions error before resuming to use calibre. Read the error
message carefully, see what file it points to and fix the permissions on that file or its containing folders.
Can I have the comment metadata show up on my reader?
Most readers do not support this. You should complain to the manufacturer about it and hopefully if enough people
complain, things will change. In the meantime, you can insert the metadata, including comments into a “Jacket page”
at the start of the ebook, by using the option to “Insert metadata as page at start of book” during conversion. The
option is found in the Structure Detection section of the conversion settings. Note that for this to have effect you have
to convert the book. If your book is already in a format that does not need conversion, you can convert from that format
to the same format.
Another alternative is to create a catalog in ebook form containing a listing of all the books in your calibre library,
with their metadata. Click-and-hold the convert button to access the catalog creation tool. And before you ask, no you
cannot have the catalog “link directly to” books on your reader.
How do I get calibre to use my HTTP proxy?
By default, calibre uses whatever proxy settings are set in your OS. Sometimes these are incorrect, for example,
on windows if you don’t use Internet Explorer then the proxy settings may not be up to date. You can tell calibre
to use a particular proxy server by setting the http_proxy environment variable. The format of the variable is:
http://username:password@servername you should ask your network administrator to give you the correct value for this variable. Note that calibre only supports HTTP proxies not SOCKS proxies. You can see the current
proxies used by calibre in Preferences->Miscellaneous.
I want some feature added to calibre. What can I do?
You have two choices:
1. Create a patch by hacking on calibre and send it to me for review and inclusion. See Development61 .
2. Open a bug requesting the feature62 . Remember that while you may think your feature request is extremely
important/essential, calibre developers might not agree. Fortunately, calibre is open source, which means
you always have the option of implementing your feature yourself, or hiring someone to do it for you.
61 http://calibre-ebook.com/get-involved
62 http://calibre-ebook.com/bugs
1.8. Sıkça Sorulan Sorular
119
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Furthermore, calibre has a comprehensive plugin architecture, so you might be able to develop your feature
as a plugin, see Calibre’nin i¸slevselli˘gini artırmak için kendi eklentilerinizi yazmak (sayfa 206).
Why doesn’t calibre have an automatic update?
For many reasons:
• There is no need to update every week. If you are happy with how calibre works turn off the update notification
and be on your merry way. Check back to see if you want to update once a year or so. There is a check box to
turn off the update notification, on the update notification itself.
• calibre downloads currently use about 100TB of bandwidth a month63 . Implementing automatic updates would
greatly increase that and end up costing thousands of dollars a month, which someone has to pay.
• If I implement a dialog that downloads the update and launches it, instead of going to the website as it does now,
that would save the most ardent calibre updater, at most five clicks a week. There are far higher priority things
to do in calibre development.
• If you really, really hate downloading calibre every week but still want to be up to the latest, I encourage you to
run from source, which makes updating trivial. Instructions are available here (sayfa 297).
• There are third party automatic updaters for calibre made by calibre users in the calibre forum64 .
How is calibre licensed?
calibre is licensed under the GNU General Public License v3 (an open source license). This means that you are free
to redistribute calibre as long as you make the source code available. So if you want to put calibre on a CD with your
product, you must also put the calibre source code on the CD. The source code is available for download65 . You are
free to use the results of conversions from calibre however you want. You cannot use either code or libraries from
calibre in your software without making your software open source. For details, see The GNU GPL v366 .
How do I run calibre from my USB stick?
A portable version of calibre is available here67 .
How do I run parts of calibre like news download and the content server on my own linux server?
First, you must install calibre onto your linux server. If your server is using a modern linux distro, you should have no
problems installing calibre onto it.
Not: calibre needs GLIBC >= 2.13 and libstdc++ >= 6.0.17. If you have an older server, you will either need to
compile these from source, or use calibre 1.48 which requires only GLIBC >= 2.10. In addition, although the calibre
command line utilities do not need a running X server, some of them do require the X server libraries to be installed
on your system. This is because the use Qt, which links against these libraries. If you get an ImportError about some
Qt modules, you are likely missing some X libraries.
You can run the calibre server via the command:
63 http://calibre-ebook.com/dynamic/downloads
64 http://www.mobileread.com/forums/forumdisplay.php?f=238
65 http://download.calibre-ebook.com
66 http://www.gnu.org/licenses/gpl.html
67 http://calibre-ebook.com/download_portable
120
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
=
{}=
{}@default
=0=1=2=0=1=2/opt/calibre/calibre\PYGZhy{}server \PYGZhy{}\PYGZhy{}with\PYGZhy{}library /path/to/the/li
You can download news and convert it into an ebook with the command:
=
{}=
{}@default
=0=1=2=0=1=2/opt/calibre/ebook\PYGZhy{}convert \PYGZdq{}Title of news source.recipe\PYGZdq{} outputfil
If you want to generate MOBI, use outputfile.mobi instead and use --output-profile kindle.
You can email downloaded news with the command:
=
{}=
{}@default
=0=1=2=0=1=2/opt/calibre/calibre\PYGZhy{}smtp
I leave figuring out the exact command line as an exercise for the reader.
Finally, you can add downloaded news to the calibre library with:
=
{}=
{}@default
=0=1=2=0=1=2/opt/calibre/calibredb add \PYGZhy{}\PYGZhy{}with\PYGZhy{}library /path/to/library outfile
Remember to read the command line documentation section of the calibre User Manual to learn more about these, and
other commands.
1.9 Rehberler
Burada calibre’nin Xpath ve s¸ablonlar gibi geli¸smi¸s özelliklerini kullanmaya ba¸slayaca˘gınız rehberleri bulacaksınız.
˘
1.9.1 Sık kullandıgınız
haber sitesini ekleme
calibre’nin internetten haberleri indiren ve e-kitaba dönü¸stüren esnek ve güçlü, kolay kullanılabilir bir uygulama iskeleti varıdr. A¸sa˘gıda size örnekler vasıtasıyla çe¸sitli web sitelerinden haberleri nasıl alabilece˘ginizi gösterece˘giz.
Uygulama çatısını nasıl kullanaca˘gınızı anlamak için, örnekleri a¸sa˘gıda listelenen sırada takip edin:
• Tamamı otomatik alınıyor (sayfa 122)
– Calibre blog (sayfa 122)
– bbc.co.uk (sayfa 123)
• Getirme i¸sleminin özelle¸stirilmesi (sayfa 123)
– bbc.co.uk nin yazdırma sürümünün kullanılması (sayfa 123)
– Makale biçemlerinin de˘gi¸stirilmesi (sayfa 124)
– Parçalama (sayfa 125)
– Gerçek dünya örne˘gi (sayfa 132)
• Yeni reçeteler geli¸stirmek için ipuçları (sayfa 134)
• ˙Ileri okuma (sayfa 135)
• API belgelendirmesi (sayfa 135)
1.9. Rehberler
121
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Tamamı otomatik alınıyor
Haber kayna˘gınız yeterince basitse, calibre tamamen otomatik olarak getirebilir olabilir, tek yapmanız gereken URL’yi
sa˘glamaktır. calibre haber kayna˘gını bir recipe ye indirmek için gerekli tüm bilgiyi toparlar. calibre’ye bir haber kayna˘gından bahsetmek için bu haber kayna˘gı için bir recipe olu¸sturmalısınız. Biraz örnek görelim:
Calibre blog
Calibre blogu yeni calibre kullanıcılarına calibre’nin bir çok kullanı¸slı özelli˘gini basit ve eri¸silebilir s¸ekilde sunan blog
girdileri içerir. Bu blogu bir e-kitap olarak indirmek için blogun RSS beslemesine güveniyoruz:
=
{}=
{}@default
=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ü¸stürmesini sa˘glamak için önce Haberleri getir dü˘gmesine sa˘g tıklamanız sonra Özel
haber kayna˘gı ekle menü ö˘gesine tıklamanız, sonra da Yeni Reçete dü˘gmesine tıklamanız gerekli. A¸sa˘gıda gösterilen
benzeri bir ileti¸sim penceresi açılacaktır.
Önce Reçete ba¸slı˘gı alanın calibre Blog girin. Yukardaki beslemelerden olu¸sturulacak e-kitabın ba¸slı˘gı bu olacak.
122
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Sonraki iki alan (En eski makale ve :guilabel:‘Azami makale sayısı ‘) her beslemeden kaç makale indirilece˘gi konusunu kontrol etmenize izin verir, zaten ne oldukları epey açık.
Beslemeleri reçeteye eklemek için, besleme ba¸slı˘gı ve besleme URL’sini girin ve Besleme ekle dü˘gmesine tıklayın.
Besleme eklendikten sonra basitçe Kaydet dü˘gmesine tıklayın, hepsi bu kadar. ˙Ileti¸sim penceresini kapatın.
Yeni reçete‘nizi test etmek için :guilabel:‘Haberleri getir dü˘gmesine tıklayın ve Özel haber kayna˘gı alt menüsünde
calibre Blog tıklayın. Bir kaç dakika sonra blog gönderilerinden olu¸san yeni indirilmi¸s e-kitap ana kitaplık görünümünde görünecektir (okuyucunuz ba˘glıysa, kitaplık yerine okuyucuya konacaktır). Okumak için seçim yaptıktan sonra
Görüntüle dü˘gmesine tıklayın!
Bu i¸slemin çok iyi çalı¸smasının sebebi blogun tam-içerikli RSS beslemeleri içermesiydi, örn., makale içeri˘gi beslemenin içine gömülmü¸stü. Haberleri bu s¸ekilde sa˘glayan ço˘gu haber kayna˘gı için, yani tam-içerikli beslemeyle, e-kitaba
dönü¸stürmek için ek bir çaba harcamanıza gerek kalmaz. Simdi
¸
tam içerikli besleme sa˘glamayan bir haber kayna˘gına
bakaca˘gı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˘glantı içerir.
bbc.co.uk
The BBC den s¸u iki beslemeyi deneyelim:
1. Haber Ön Sayfası: http://newsrss.bbc.co.uk/rss/newsonline_world_edition/front_page/rss.xml
2. Bilim/Do˘ga: http://newsrss.bbc.co.uk/rss/newsonline_world_edition/science/nature/rss.xml
Yukarda Calibre blog (sayfa 122) da gösterilen yöntemi takip edip bir The BBC reçetesi olu¸suturun (yukardaki beslemeleri kullanarak). ˙Indirilen e-kitaba bakarak calibre’nin her makalenin web sayfasından sadece önemseyece˘giniz
içeri˘gi çıkararak epey iyi bir i¸s yaptı˘gını görebiliriz. Fakat çıkartma i¸slemi hatasız de˘gildir. Bazen arkasında menü ve
gezinti ö˘geleri bırakır, veya makale ba¸slıkları gibi çıkarılmaması gereken kısımları çıkarır. Mükemmel içerik çıkarmayı ba¸sarmak için, getirme sürecini sıradaki bölümde oldu˘gu gibi özelle¸stirmemiz gerekir.
Getirme isleminin
¸
özellestirilmesi
¸
˙Indirme i¸slemini mükemmelle¸stirmeye, ya da karma¸sık bir siteden içerik indirmeye çalı¸sırken reçete yazılım çatısının
tüm güç ve esnekli˘gini kullanabilirsiniz. Bunun için Özel haber kayna˘gı ekle ileti¸sim penceresinde Geli¸smi¸s Kipe geç
dü˘gmesine tıklamanız yeterli.
En kolay ve ço˘gunlukla en üretken özelle¸stirme çevrimiçi makalelerin yazdırma sürümlerinin kullanılmasıdır. Yazdırma sürümü genel olarak çok daha az gereksiz s¸ey bırakır ve e-kitaba çok daha pürüzsüz dönü¸stürülebilir. The BBC
deki makalelerin yazdırma sürümlerini kullanmaya çalı¸salım.
bbc.co.uk nin yazdırma sürümünün kullanılması
˙Ilk adım daha önce :ref:‘bbc‘den indirdi˘gimiz e-kitaba bakmaktır. Her makalenin sonunda, makalenin nerden indirildi˘gini söyleyen küçük bir bölüm vardır. Bu URL’yi kopyalayıp tarayıcıya yapı¸stırın. Simdi
¸
makale web sayfasında
“Yazdırılabilir sürüm”ü gösteren bir ba˘glantı 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! Simdi
¸
iki URL’yi kar¸sıla¸stırın. Benim için sonuç s¸ö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 s¸u ön ek gelmeli:
newsvote.bbc.co.uk/mpapps/pagetools/print/
1.9. Rehberler
123
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Simdi
¸
Özel haber kayna˘gı ileti¸sim penceresindeki :guilabel:‘Geli¸smi¸s Kip‘de s¸unun gibi bir s¸ey görmelisiniz (geli¸smi¸s
kipe geçmeden The BBC reçetesini seçmeyi unutmayın):
Gördü˘günüz gibi :guilabel:‘Temel kip‘deki alanlar anla¸sılır s¸ekilde python koduna çevrildi. Bu reçeteye makalelerin
yazdırma sürümünü kullanmasını sa˘glayacak yönergeler yazmalıyız. Gereken tek s¸ey a¸sa˘gıdaki iki satırı eklemek:
=
{}=
{}@default
=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
Bu python, yani girintileme önemli. Satırları ekledikten sonra s¸öyle görünmeli:
Yukarıdaki def print_version(self, url) calibre tarafından her makale için ça˘grılan bir *metod*u tanımlar. url asıl makalenin URL’sidir. print_version un yaptı˘gı bu URL’yi alıp makalenin yazdırılabilir sürümünü
gösteren URL ile de˘gi¸stirmektir. Python <https://www.python.org> hakkında bilgi için tanıtıma68 göz atın.
Simdi
¸
Reçete ekle/güncelle dü˘gmesine tıkladı˘gınızda de˘gi¸siklikleriniz kaydedilecek. Çok daha geli¸smi¸s 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ü¸stürme yapıldı˘gı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¸stirme yapaca˘gız.
˘ stirilmesi
Makale biçemlerinin degi
¸
Önce bölümde, The BBC nin yazdırılabilir sürümündeki yazı tipi boyutunun çok küçük oldu˘gunu gördük. Bir çok
web sitesinde, The BBC dahil, bu yazı tipi CSS stil sayfaları ile ayarlanır. Su
¸ satırı ekleyerek bu gibi stil sayfalarının
getirilmesini engelleyebiliriz:
68 https://docs.python.org/2/tutorial/
124
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
=
{}=
{}@default
=0=1=2=0=1=2\PYG{n}{no\PYGZus{}stylesheets} \PYG{o}{=} \PYG{n+nb+bp}{True}
Tarifi s¸imdi gibi görünüyor:
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˘gin de˘gi¸stirilmesiyle 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 125) reçetesine tekrar bakalım. Bir kaç makalenin (yazdırılabilir sürüm)
kayna koduna (HTML) baktı˘gımızda i¸se yarar bir içeri˘gi olmayan alt bilgileri oldu˘gunu görürüz
=
{}=
{}@default
=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 s¸u eklenebilir:
=
{}=
{}@default
=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ı˘gımız :term:‘CSS‘in bir kısmını e-kitaba dönü¸stürmeye daha uygun olan
kendi :term:‘CSS‘imizle de˘gi¸stirelim:
=
{}=
{}@default
=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¸sa˘gıda gösterilen asıl
reçeteye de oldukça yakla¸stı:
# # **** 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 **** #
1.9. Rehberler
125
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
# 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'
# 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
126
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
'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
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.
1.9. Rehberler
127
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
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')
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$'
128
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
# 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.*$'
# 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',
1.9. Rehberler
129
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
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
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
130
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
# End of class and file.
1.9. Rehberler
131
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Bu reçete calibre’nin gücüyle ilgili buz da˘gının yalnızca görünen kısmını ke¸sfediyor. Calibre’nin yeteneklerinin daha
fazlasını ke¸sfetmek için sonraki kısımda daha karma¸sık bir gerçek dünyadan örne˘ge göz ataca˘gız.
˘
Gerçek dünya örnegi
BasicNewsRecipe :term:‘API‘sini daha çok ke¸sfeden nispeten karma¸sık bir gerçek dünya örne˘gi The New York
Times :term:‘reçete‘sidir
=
{}=
{}@default
=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}{)}
132
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.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:
=
{}=
{}@default
=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¸sturulan e-kitabın ön sayfasında gösterilen zamanı Gün, Ay, Yıl biçiminde ayarlar. Ayrıca bakınız
timefmt (sayfa 315).
Sonra indirilen :term:‘HTML‘in temizlenmesi için bir grup yönerge görüyoruz:
=
{}=
{}@default
=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¸seyi ve footer id’li ilk etiketten sonraki her¸seyi kaldırır. Ayrıca bakınız
remove_tags (sayfa 314), remove_tags_before (sayfa 315), remove_tags_after (sayfa 314).
Sonraki dikkat çekici özellik:
=
{}=
{}@default
1.9. Rehberler
133
calibre Kullanıcı Kılavuzu, Sürüm 2.24.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˘ge eri¸smek için bir kullanıcı adı ve parolaya ihtiyaç duydu˘gunu söyler. Bu da bu reçeteye her eri¸smek istedi˘ginizde calibre’nin kullanıcı ve parola sormasını sa˘glar.
calibre.web.feeds.news.BasicNewsRecipe.get_browser() (sayfa 307) içindeki kod NYT sitesine
giri¸s i¸slemini gerçekle¸stirir. Giri¸s yapıldıktan sonra, calibre içeri˘gi getirmek için aynı, giri¸s yapılmı¸s tarayıcı örne˘gini
kullanır. get_browser içindeki kodu anlamak için mechanize69 ye göz atın.
Sıradaki yeni özellik calibre.web.feeds.news.BasicNewsRecipe.parse_index() (sayfa 309) metodudur. Görevi http://www.nytimes.com/pages/todayspaper/index.html adresine gidip *bugün*e ait makale listesini
getirmektir. Do˘grudan RSS kullanmaktan karma¸sık olsa da, reçete o günün sayfasına çok yakın bir e-kitap olu¸sturur. parse_index günlük gazete web sayfasını ayrı¸stırmak için yo˘gun olarak BeautifulSoup70 kullanır. BeautifulSoup’dan ho¸slanmıyorsanız di˘ger daha modern ayrı¸stırıcıları da kullanabilirsiniz. calibre önerilen ayrı¸stırıcılar olan
lxml71 ve html5lib72 ile gelir. Kullanmak için index_to_soup() ça˘grısını s¸u s¸ekilde de˘gi¸stirin:
=
{}=
{}@default
=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 309) metodudur. ˙Indirilen her HTML sayfasında keyfi dönü¸stürmeler yapmak için kullanılabilir. Burada nytimes’ın her makaleden önce gösterdi˘gi reklamları geçmek için kullanılıyor.
Yeni reçeteler gelistirmek
¸
için ipuçları
Yeni reçete geli¸stirmek için en iyi yöntem komut satırı arayüzünü kullanmaktır. Reçeteyi favori python metin düzenleyicinizle olu¸sturun ve recetem.recipe gibi bir dosyaya kaydedin. .recipe son eki gereklidir. Bu reçeteyi
kullanarak içerik indirmek için s¸u komutu kullanabilirsiniz:
=
{}=
{}@default
=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ı˘gı i¸sle ilgili bir sürü bilgi dökmesini sa˘glar. --test en fazla iki beslemeden bir kaç makale
indirmesini sa˘glar. Ek olarak ebook-convert indirilen HTML’yi debug/input dizinine koyar, burada debug
--debug-pipeline seçene˘gi ile belirtti˘giniz dizindir.
˙Indirme tamamlandı˘gında, indirilen HTML‘ye :file:‘debug/input/index.html dosyasını bir tarayıcı ile açarak bakabilirsiniz. ˙Indirme ve ön i¸slemenin düzgün yapıldı˘gını dü¸sündü˘günüzde, a¸sa˘gıda gösterildi˘gi gibi de˘gi¸sik biçimlerde
e-kitaplar üretebilirsiniz:
69 http://wwwsearch.sourceforge.net/mechanize/
70 http://www.crummy.com/software/BeautifulSoup/documentation.html
71 http://lxml.de/
72 https://github.com/html5lib/html5lib-python
134
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
=
{}=
{}@default
=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¸sik reçeteler içinde bir yeri hak etti˘gini dü¸sünüyorsanız, reçeteniz di˘ger calibre
kullanıcıları ile payla¸smak için calibre reçeteleri forumu73 na yollayın.
Not:
OS
X
üzerinde,
komut
satırı
araçları
calibre
ile
birlikte
gelmektedir,
örne˘gin,
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.:
generated/en/ebook-convert Tüm e-kitap dönü¸stürmeleri için komut satırı arayüzü.
˙Ileri okuma
BasicNewsRecipe ile kullanılabilir olan olanakları kullanarak geli¸smi¸s reçeteler yazmakla ilgili daha fazla s¸ey
ö˘grenmek istiyorsanız a¸sa˘gıdaki kaynaklara ba¸svurabilirsiniz:
API Belgeleri (sayfa 306) BasicNewsRecipe sınıfı ve tüm önemli metod ve alanlarının belgeleri.
BasicNewsRecipe74 BasicNewsRecipe kaynak kodu
Yerle¸sik reçeteler75 Calibre ile gelen yerle¸sik reçetelerin kaynak kodları
Calibre reçete forumu76 Bir çok bilgili calibre reçete geli¸stiricisi orada takılır.
API belgelendirmesi
Reçeteler için API Belgeleri
Reçete yazmaya yarayan API BasicNewsRecipe (sayfa 306) ile tanımlanmı¸stır
class calibre.web.feeds.news.BasicNewsRecipe(options, log, progress_reporter)
Tüm reçeteler için gerekli mantı˘gı içeren temel sınıf. Bu sınıf içindeki fonksiyonları kademeli olarak ezerek kademeli olarak daha özelle¸stirilmi¸s/güçlü reçeteler olu¸sturabilirsiniz. Reçete olu¸sturmakla ilgili bir giri¸s kılavuzu
için s¸uraya bakınız, Sık kullandı˘gınız haber sitesini ekleme (sayfa 121).
abort_article(msg=None)
Call this method inside any of the preprocess methods to abort the download for the current article. Useful
to skip articles that contain inappropriate content, such as pure video articles.
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.
add_toc_thumbnail(article, src)
Bunu populate_article_metadata’dan makaledeki <img> etiketinin ˙Içindekiler bölümünde makaleyi temsil
etmeye uygun küçük resim için src özniteli˘gi ile ça˘gırın. Küçük resmin gerçekten kullanılıp kullanılmayaca˘gı aygıta ba˘glıdır (¸simdilik sadece Kindle’larda kullanılır). Referans verilen resmin ba¸sarılı s¸ekilde
indirilmi¸s olmasına dikkat edin, aksi takdirde yoksayılacaktır.
73 http://www.mobileread.com/forums/forumdisplay.php?f=228
1.9. Rehberler
135
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
classmethod adeify_images(soup)
Reçeteniz EPUB’a dönü¸stürüldü˘günde ve Adobe Digital Editions ile görüntülendi˘ginde resimlerle ilgili
sorun ya¸sıyorsa bu metodu postprocess_html() (sayfa 309) içinden ça˘gırın.
cleanup()
Tüm makaleler indirildikten sonra ça˘grılır. Aboneli sitelerden çıkı¸s yapmak gibi temizlik i¸slerini yapmak
için kullanın.
clone_browser(br)
Tarayıcıyı co˘galt. Ço˘galtılmı¸s tarayıcılar çok i¸s parçacıklı indirmeler yapmak için kullanılır, çünkü mechanize i¸s parçacı˘gı güvenli de˘gildir. Varsayılan ço˘galtma rutinleri ço˘gu tarayıcı özelle¸stirmesini yakalıyor
olmalıdır, ancak reçetenizde egzotik bir s¸eyler yaparsanız, reçetenizde bu metodu ezmeli ve elle ço˘galtma
yapmalısınız.
Ço˘galtılmı¸s tarayıcı örnekleri çerez yönetiminde özelle¸stirme yapmadıysanız varsayılan olarak aynı, i¸s
parçacı˘gı güvenli CookieJar’ı kullanır.
default_cover(cover_file)
Kapa˘gı olmayan reçeteler için genel bir kapak olu¸stur
download()
Bu reçetedeki beslemelerden makaleleri indir ve ön i¸sleme yap. Bu metod her Reçete örne˘gi için yalnızca
bir kere ça˘grılmalıdır. Birden fazla ça˘gırmak tanımlanmayan davranı¸slara yol açar. :return: index.html yolu
extract_readable_article(html, url)
‘html’den ana makale içeri˘gini 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˘gine i¸saret 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ı¸stırılmı¸s makaleyi temsil eden ‘article ile ça˘grılır. feedparser
<https://pythonhosted.org/feedparser/>‘_a göz atın. Varsayılan olarak asıl ba˘glantıya bakar (feedburner
veya pheedo gibi bir servis tarafından e¸slenen beslemeler için) ve bulunursa bunu döndürür, aksi durumda
‘article.link77 döndürür.
get_browser(*args, **kwargs)
Web’de belge getirmeye yarayan bir tarayıcı örne˘gi 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 mechanize78
tarayıcı örne˘gi döndürür.
Reçeteniz önce giri¸s yapmanızı gerektiriyorsa, alt sınıfınızda bu metodu ezin. Örne˘gin, New York Times
reçetesinde kullanılan a¸sa˘gıdaki kod tam eri¸sim için giri¸s yapar:
=
{}=
{}@default
=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˘gına URL ya da None döndür. Varsayılan olarak normalde None olan self.cover_url ö˘gesi77 https://pythonhosted.org/feedparser/reference-entry-link.html
78 http://wwwsearch.sourceforge.net/mechanize/
136
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
nin de˘gerini 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˘gırmadan önce üye de˘gi¸sken ‘self.cover_url‘yi ayarlayın.
get_feeds()
Bu profil için getirilecek RSS beslemeleri listesini döndürür. Listenin her elemanı (ba¸slık, url) biçiminde
2 elemanlı demet s¸eklinde olmalıdır. Ba¸slık None veya bo¸s karakter dizisi ise, beslemedeki ba¸slık kullanılır. Bu method reçetenizin indirilecek besleme listesini anlamak için bir miktar i¸slem yapması gereken
durumlarda faydalıdır. Durum böyleyse, kendi alt sınıfınızda ezin.
get_masthead_title()
Reçete ba¸slı˘gından ba¸ska bir s¸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˘geri None
olan self.masthead_url üyesinin de˘gerini 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˘gırmadan üye de˘gi¸sken ‘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˘grılır. Dosya sisteminde makale
HTML’sini içeren bir dosyaya yol döndürmelidir. Bu dosya yinelemeli HTML motoruyla i¸slenir, yani
web’deki sayfalara ba˘glantılar/resimler içerebilir.
Bu metod makale içeri˘gine otomatik olarak eri¸smeyi zorla¸stırmaya çalı¸san siteler için faydalı olabilir.
classmethod image_url_processor(baseurl, url)
Resim url’lerinde bir takım i¸slemler yap (dinamik üretilen resimler için boyut kısıtlamalarının kaldırılması,
vs.) ve i¸slenmi¸s URL’yi döndür.
index_to_soup(url_or_raw, raw=False, as_tree=False)
Dizin sayfasına URL’yi alıp BeautifulSoup79 lanmı¸s halini döndüren bir kolayla¸stırıcı araç.
url_or_raw: Bir URL ya da karakter dizisi olarak indirilmi¸s dizin sayfası
is_link_wanted(url, tag)
Ba˘glantı 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˘gi Etiket
javascript_login(browser, username, password)
Bu metod giri¸s formu olarak javascript kullanan web sitesine giri¸s için kullanılır. Giri¸s tamamlandı˘gında,
web sayfasından dönen çerezler normal bir (javascript olmayan) tarayıcıya kopyalanır ve indirme i¸slemi
bu çerezler kullanılarak devam eder.
Örnek bir uygulama:
=
{}=
{}@default
=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
79 http://www.crummy.com/software/BeautifulSoup/bs3/documentation.html
1.9. Rehberler
137
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
CSS2 seçicileri olan formları da s¸u s¸ekilde seçebilirsiniz:
=
{}=
{}@default
=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 307) tarafından döndürülen beslemelerden makale listeleri
olu¸sturur. Feed nesnesi listesi döndürür.
parse_index()
Bu metod makale listeleri yerine web sayfalarını ayrı¸stı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 308) yerine tercih edilir.
Bir liste döndürmelidir. Listenin her elemanı (’besleme ba¸
slı˘
gı’, makale listesi) biçiminde 2 elemanlı demet olmalıdır.
Her makale listesi s¸u biçimde sözlük içermelidir:
=
{}=
{}@default
=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¸slemeyi durdurmak ve calibre’nin kullanıcıya hata yerine basit bir ileti göstermesini
isterseniz, abort_recipe_processing() (sayfa 306) metodunu ça˘gırın.
populate_article_metadata(article, soup, first)
Makaleye ba˘glı her HTML sayfası indirildi˘ginde ça˘grılır. Ayrı¸stırılmı¸s HTML’den (soup) yazar/özet/vs
gibi makale metadata’sı alırken kullanmak amaçlıdır. :param article: calibre.web.feeds.Article
sınıfı bir nesne. Özeti de˘gi¸stirirseniz text_summary de˘gi¸stirmeyi de unutmayın :param soup: Bu makaleye
ait ayrı¸stırılmı¸s HTML :param first: Ayrı¸stırılmı¸s HTML makalenin ilk sayfasıysa True.
postprocess_book(oeb, opts, log)
˙Indirilmi¸s e-kitap üstünde gerekli tüm art i¸slemleri çalı¸stır.
Parametreler
• oeb – OEBBook nesnesi
• opts – Dönü¸stürme seçenekleri
postprocess_html(soup, first_fetch)
Bu metod indirilen her bir HTML dosyası kayna˘gı ile, ba˘glantılar ve resimler için ayrı¸stırıldıktan sonra
ça˘grılır. HTML üzerinde keyfi, güçlü, i¸sleme sonrası i¸slemler yapmak için kullanılabilir. ˙I¸sledikten sonra
soup döndürmelidir.
138
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Parametreler
˙Indirilen
• soup
–
:term:‘HTML‘yi
içeren
bir
‘BeautifulSoup
<http://www.crummy.com/software/BeautifulSoup/bs3/documentation.html>‘_
örne˘gi.
• first_fetch – Bu sayfa makalenin ilk sayfasıysa True.
preprocess_html(soup)
Bu metod indirilen her bir HTML dosyası kayna˘gı ile, ba˘glantılar ve resimler için ayrı¸stırılmadan önce
ça˘grılır. remote_tags vs. de tanımlandı˘gı gibi temizlik yapıldıktan sonra ça˘grılır. HTML üzerinde keyfi,
güçlü i¸sleme öncesi i¸slemler yapmak için kullanılabilir. ˙I¸slemden sonra soup döndürmelidir.
soup: ˙Indirilen :term:‘HTML‘yi içeren bir ‘BeautifulSoup <http://www.crummy.com/software/BeautifulSoup/bs3/docu
örne˘gi.
preprocess_raw_html(raw_html, url)
Bu metod indirilen her bir HTML dosyası kayna˘gı ile, bir nesne a˘gacına ayrı¸stırılmadan önce ça˘grılır.
raw_html web’den indirilen ham HTML’nin evrensel kodda karakter dizisi temsilidir. url HTML’nin indirildi˘gi URL’dir.
Bu metodun preprocess_regexps’den önce hareket etti˘gini unutmayın.
Bu metod i¸slenmi¸s raw_html’yi evrensel kod nesnesi olarak döndürmelidir.
classmethod print_version(url)
Makale içeri˘gi 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 s¸ey yapmaz. Örne˘gin:
=
{}=
{}@default
=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˘gı ile, remove_tags, keep_only_tags gibi herhangi bir temizlik özniteli˘gi uygulanmadan önce ça˘grılır. preprocess_regexps’in zaten uygulanmı¸s olaca˘gını unutmayın. Reçetenin reklam sayfalarını atlamasına olanak tanımak için dü¸sünülmü¸stür. E˘ger soup bir reklam
sayfasını temsil ederse, gerçek sayfanın HTML’sini döndür. Aksi halde None döndür.
soup: ˙Indirilen :term:‘HTML‘yi içeren bir ‘BeautifulSoup <http://www.crummy.com/software/BeautifulSoup/bs3/docu
örne˘gi.
sort_index_by(index, weights)
index‘deki ba¸slıkları ‘weights‘e göre sıralamaya yarayan kolaylık sa˘glayıcı metod. ‘index yerinde sıralanır.
index döndürür.
index: Ba¸slık listesi.
weights: A˘gırlıkları ba¸slı˘ga haritalayan bir sözlük. Index’deki herhangi bir ba¸slık a˘gırlıklı olmazsa, 0 a˘gırlıklı oldu˘gu varsayılır.
classmethod tag_to_string(tag, use_alt=True, normalize_whitespace=True)
Bir BeautifulSoup80 ‘Tag‘ını alıp tüm CDATA kısımları ve alt etiket öznitelikleri dahil metni yinelemeli
olarak çıkaran kolaylık sa˘glayıcı bir metod. Muhtemelen bo¸s bir evrensel kod metni döndürür.
use_alt: True ise metinsel içeri˘gi olmayan etiketler için alt öznitelik kullanmaya çalı¸s
tag: BeautifulSoup81 Etiketi
80 http://www.crummy.com/software/BeautifulSoup/bs3/documentation.html
81 http://www.crummy.com/software/BeautifulSoup/bs3/documentation.html
1.9. Rehberler
139
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
articles_are_obfuscated= False
˙Içerik almasını zorla¸stıran web sitelerini i¸slemek için
get_obfuscated_article() (sayfa 308) metodunu uygulayın.
True
olarak
ayarlayın
ve
auto_cleanup= False
˙Indirilmi¸s makale sayfalarından tüm metni otomatik olarak çıkart. Okunabilirlik projesinden algoritmalar kullanır. True olarak ayarlamak, indirilmi¸s HTML’yi temizlemekle elle u˘gra¸smanıza gerek olmadı˘gı
anlamına gelir (Elle temizlik daha üstündür tabi).
auto_cleanup_keep= None
Otomatik temizleme algoritmasının asla kaldırmaması gereken ö˘geleri belirtin. Söz dizim XPath ifadesidir.
Örne˘gin:
=
{}=
{}@default
=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˘gu ortada hizalanır, yoksa sola hizalanır
compress_news_images= False
Tüm ölçekleme ve sıkı¸stırma parametrelerini göz ardı edip resimleri de˘gi¸stirmeden geçirmek için False
olarak ayarlayın. True ise ve di˘ger sıkı¸stırma parametreleri varsayılan ayarlarında bırakılırsa, jpeg resimler
çıktı profilinde ayarlanmı¸s ekran boyutlarına sı˘gması için ölçeklenir ve w x h ölçeklenmi¸s resim boyutları
olmak üzere en fazla (w * h)/16 boyutuna sıkı¸stırılır.
compress_news_images_auto_size= 16
Jpeg resimleri otomatik sıkı¸stırmada kullanılan etmen. None olarak ayarlanırsa, otomatik sıkı¸stırma kapatılır. Aksi halde, resimler kalite seviyesi dü¸sü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˘glayan
compress_news_images_max_size parametresi ile ezilebilir. scale_news_images_to_device’ı etkinle¸stirirseniz resim önce ölçeklenir ardından kalitesi boyutu w ve h ölçeklenmi¸s resim boyutları olmak üzere (w *
h)/etmen altına dü¸sene kadar dü¸sürülür. Di˘ger bir deyi¸sle, bu sıkı¸stırma ölçeklendirmeden sonra yapılır.
compress_news_images_max_size= None
Jpeg kalitesini resimler verilen (KBayt olarak) boyutu geçmeyecek s¸ekilde ayarla. Ayarlanırsa, bu parametre compress_news_images_auto_size vasıtasıyla otomatik sıkı¸stırmayı ezer. Asgari jpeg kalitesi 5/100
olacaktır, yani bu kısıtlamaya uyulmaması mümkündür.
conversion_options= {}
˙Indirilen içeri˘gin e-kitaba dönü¸stü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˘gin:
=
{}=
{}@default
=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{
140
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
\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˘gı geni¸sli˘gi ve yüksekli˘gi indirilen kapa˘gın yüzdesi olarak ifade edilen bir çerçeveye gerçeklemesini söyler. cover_margins= (10, 15,
‘#ffffff’) kapa˘gı soldan ve sa˘gdan 10px, yukardan ve a¸sa˘gıdan 15px doldurur. Renk isimleri
http://www.imagemagick.org/script/color.php de tanımlanmı¸stır. Beyazın bir sebepten ötürü windows’da
çalı¸smadı˘gını not edin. Yerine #ffffff kullanın
delay= 0
Saniye cinsinden ardı¸sık indirmeler arası gecime. Daha hassas bir zaman için de˘gi¸sken ondalık sayı olarak
yazılabilir.
description= u’‘
Bu reçetenin indirdi˘gi içeri˘gi 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ı¸sılır. E˘ger ça˘grılabilirse,
iki ba˘gımsız de˘gi¸sken ile ça˘grılır: Reçete nesnesi ve kodu çözülecek kaynak. Kodu çözülmü¸s kayna˘gı
döndürmelidir.
extra_css= None
˙Indirilen HTML dosyalarına eklenecek ek CSS‘i belirtin. ‘ etiketleri içine, </head> kapanı¸s etiketinden önce eklenir böylece HTML etiketlerindeki biçim özniteliklerinde tek tek ifade edilenler hariç
tüm :term:‘CSS‘i ezer. Örne˘gin:
=
{}=
{}@default
=0=1=2=0=1=2
\PYG{n}{extra\PYGZus{}css} \PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{.hea
feeds= None
˙Indirilecek besleme listesi. [url1, url2, ...] veya [(’title1’, url1), (’title2’,
url2),...] olabilir
filter_regexps= []
Hangi ba˘glantıların göz ardı edilece˘gine karar veren düzenli ifade listesi. Bo¸ssa göz ardı edilir. Yalnızca
is_link_wanted uygulanmamı¸ssa kullanılır. Örne˘gin:
=
{}=
{}@default
=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 313) veya BasicNewsRecipe.filter_regexps
(sayfa 312) 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¸slık ve/veya
URL’ye sahip makaledir. Aynı ba¸slıktaki makaleleri göz ardı etmek için, s¸u s¸ekilde ayarlayın:
=
{}=
{}@default
=0=1=2=0=1=2
1.9. Rehberler
\PYG{n}{ignore\PYGZus{}duplicate\PYGZus{}articles} \PYG{o}{=} \PYG{p}{\P
141
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
URL’ler kullanmak için, s¸öyle ayarlayın:
=
{}=
{}@default
=0=1=2=0=1=2
\PYG{n}{ignore\PYGZus{}duplicate\PYGZus{}articles} \PYG{o}{=} \PYG{p}{\P
Ba¸slık veya URL e¸sle¸stirme için, s¸u s¸ekilde ayarlayın:
=
{}=
{}@default
=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 314). Bu liste bo¸s de˘gilse, <body> etiketi bo¸saltılır ve bu
listedeki girdilerle e¸sle¸sen etiketlerle tekrar doldurulur. Örne˘gin:
=
{}=
{}@default
=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˘gi olan etiketleri tutar.
language= ‘und’
Haberlerin dili. ˙Iki veya üç karakter uzunlu˘gunda 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˘glayın.
match_regexps= []
Hangi ba˘glantıların takip edilece˘gini belirten düzenli ifade listesi. Bo¸ssa, göz ardı edilir. Yalnızca
is_link_wanted uygulanmamı¸ssa kullanılır. Örne˘gin:
=
{}=
{}@default
=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¸sle¸sir.
BasicNewsRecipe.match_regexps (sayfa 313) veya BasicNewsRecipe.filter_regexps
(sayfa 312) 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˘gu besleme için BasicNewsRecipe.oldest_article (sayfa 313) kullanmalısınız
needs_subscription= False
True is GUI indirme sırasında kullanıcı ve parola sorar. “iste˘ge ba˘glı” olarak ayarlanmı¸ssa kullanıcı adı ve
parola iste˘ge ba˘glıdır
no_stylesheets= False
E-kitaba dönü¸stürmeye uygun olmayan çok karma¸sık biçim sayfalarına sahip web sitelerinde biçim sayfalarının yüklenmesini kapatmayı kolayla¸stırıcı bayrak. True ise biçim sayfaları indirilmez ve i¸slenmez
oldest_article= 7.0
Bu haber kayna˘gından indirilecek en eski makale. Gün olarak.
142
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
preprocess_regexps= []
˙Indirilen HTML üzerince çalı¸stırılacak regexp yer de˘gi¸stirme kuralları listesi. Listenin her elemanı iki
elemanlı bir demet olmalıdır. ˙Ilk eleman derlenmi¸s bir düzenli ifade, ikincisi tek bir e¸sle¸sme nesnesi alan
ve e¸sle¸smeyle yer de˘gi¸secek karakter dizisi döndüren bir ça˘grılabilir olmalıdır. Örne˘gin:
=
{}=
{}@default
=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¸seyi 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¸s olmayan bir karakter dizisi olarak ayarlayın. Karakter dizisi kapatma iletisi
olarak kullanılacaktır
recursions= 0
Makale web sitelerinde takip edilecek ba˘glantı seviyesi sayısı
remove_attributes= []
Tüm etiketlerden kaldırılacak öznitelik listesi. Örne˘gin:
=
{}=
{}@default
=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¸s beslemeler çıktıdan kaldırılır. parse_index alt sınıfta ezilmi¸sse bu seçene˘gin hiçbir etkisi yoktur. Yalnızca feeds veya get_feeds() (sayfa 307) kullanarak bir besleme listesi döndüren reçeteler
içindir. Ayrıca ignore_duplicate_articles seçene˘gini kullanırsanız da kullanılır.
remove_javascript= True
˙Indirilen HTML’den tüm javascript etiketlerini soyacak kullanı¸slı etiket
remove_tags= []
Kaldırılacak etiket listesi. Belirtilen etiketler indirilen HTML’den çıkarılır. Bir etiket s¸u biçimdeki sözlük
olarak tanımlanır:
=
{}=
{}@default
=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˘ge ba˘glıdır. Arama kriterinin tam açıklaması için, bakınız Beautiful Soup82 Yaygın bir
örnek:
=
{}=
{}@default
82 http://www.crummy.com/software/BeautifulSoup/bs3/documentation.html#Searching%20the%20Parse%20Tree
1.9. Rehberler
143
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
=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 314). Örne˘gin:
=
{}=
{}@default
=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 314). Örne˘gin:
=
{}=
{}@default
=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ü
reverse_article_order= False
Her beslemedeki makalelerin sırasını tersine çevir
scale_news_images= None
Resimlerin ölçeklendirilece˘gi azamı boyut (w,h). scale_news_images_to_device True ise çıktı profilinde
ayarlanan aygıt ekran boyutuna ayarlanır, profilin ayarlanmadı˘gı durumlarda hangi de˘ger atanmı¸ssa o bırakılır (varsayılan None).
scale_news_images_to_device= True
Resmi çıktı profilinde ayarlanmı¸s aygıt ekran boyutlarına sı˘gması için ölçeklendir. Çıktı profili ayarlanmamı¸ssa göz ardı edilir.
simultaneous_downloads= 5
E¸s zamanlı indirme sayısı. Sunucu titizse 1 olarak ayarlanır. BasicNewsRecipe.delay (sayfa 312) >
0 ise otomatik olarak 1’e dü¸sü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
Sablonları
¸
biçimlendirmek için kullanılan CSS, ör., gezinti çubukları ve ˙Içindekiler. Bu de˘gi¸skeni ezmek
yerine, doku ve görünümü özelle¸stirmek için reçetenizde extra_css kullanmalısınız.
timefmt= ‘ [%a, %d %b %Y]’
˙Ilk 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¸sımı
title= u’Bilinmeyen Haber Kayna\u011f\u0131’
E-kitap için kullanılcak ba¸slık
144
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
use_embedded_content= None
Normalde bir beslemede tüm makalenin gömülü olup olmadı˘gını gömülü içeri˘gin uzunlu˘guna bakarak tahmin etmeye çalı¸sırız. None ise, varsayılan tahmin kullanılır. True ise beslemelerin gömülü içeri˘gi oldu˘gunu,
False ise beslemenin gömülü içeri˘gi olmadı˘gını var sayarız.
use_javascript_to_login= False
Bunu True olarak ayarlarsanız, calibre web sitesine giri¸s için javascript kullanır. Giri¸s için javascript
kullanan bazı web sitelerinde bu gereklidir. True olarak ayarlarsanız asıl giri¸s i¸slemini yapması için
javascript_login() (sayfa 308) metodunu uygulamalısınız.
˘ “tür”
1.9.2 Kitap alt gruplarını yönetim, örnegin
Bazı insanlar kitaplıklarındaki kitapları alt dizinlere benzer s¸ekilde alt gruplara düzenlemek isterler. En çok verilen
yanıt tür sıralı dizisi olu¸sturmak istemeleridir, ama ba¸ska 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¸skası hediyeleri konu ve alıcıya göre saklamak istedi. Bu
klavuz bu gönderinin devamında tür örne˘gi üzerinden devam edecek.
Devam etmeden önce, sabit diskteki dizinlerden bahsetmidi˘gimize dikkat edin. Alt gruplar dosya dizinler de˘gillerdir.
Kitaplar herhangi bir yere kopyalanmaz. Calibre’nin kitaplık dosya yapısı etkilenmez. Bunun yerine, kalibre kitaplı˘gı
içinde kitapları alt gruplar halinde göstermek için bir düzenleme yöntemi sunuyoruz.
•
•
•
•
Kurulum (sayfa 147)
Aranıyor (sayfa 149)
Kısıtlamalar (sayfa 149)
Kullanı¸slı Sablon
¸
Fonksiyonlar (sayfa 150)
Tür gibi alt gruplar için yaygın olarak sa˘glanan gereksinimler:
• Bir alt grup (örn., tür) kitap içermelidir (göstermelidir), kitap kategorileri de˘gil. 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¸sturmalıdır; alt gruplar ba¸ska 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˘gi 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¸sturmazlar.
1.9. Rehberler
145
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Calibre’nin sıralı dizin özelli˘gi üçüncü özelli˘gi, türleri
‘a˘gaç’ olarak görme ve tür veya alt tür içinde kolaylıkla kitap arama olana˘gını verir. Örne˘gin, tür yapınızın a¸sa˘gıdaki
gibi oldu˘gunu 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˘gini kullanarak, bu türleri etiket tarayıcıda ekran görüntüsünde gösterildi˘gi gibi a˘gaç biçiminde görebilirsiniz. Bu örnekte en dı¸staki seviye (Tür) türleri içeren özel bir sütundur. Alt türleri içeren türlerin yanında küçük
bir üçgen bulunur. Bu üçgene tıklamak ö˘geyi açar ve alt türleri gösterir, Geçmi¸s ve Bilim Kurgu ile görebilece˘giniz
gibi.
Bir türe tıklamak o türdeki ya da onun alt türlerindeki tüm kitapları arar. Örne˘gin, 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ı˘gınızda bu kitabı görürsünüz. Arama a¸sa˘gıda daha detaylı tartı¸sılmı¸stır.
Resimden görebilece˘ginz bir ba¸ska s¸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 s¸eklinde oldukları için, bunlar iki ayrı türdür. Kitap birinde olabilir, di˘gerinde olabilir,
146
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
veya (¸süpheli s¸ekilde) ikisinde de. Örne˘gin, Winston Churchill’in “˙Ikinci Dünya Sava¸sı” 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˘gunda, ki bu en az bir kitabın bu türde olması demektir, bu türü di˘ger kitaplara kitaplık görünümünden kitapları istedi˘giniz tür üzerine sürükleyerek kolaylıkla uygulayabilirsiniz. Türleri ayrıca metadata düzenleyicilerde de uygulayabilirsiniz; bu konuda daha fazlası a¸sa˘gıda.
Kurulum
Simdi,
¸
“Bunların hepsi nasıl oldu?” diye sorabilirsiniz. Üç adımda: 1) özel sütun olu¸sturun, 2) calibre’ye yeni sütunun
bir sıralı dizi oldu˘gunu söyleyin, ve 3) türleri ekleyin.
Özel sütunu ola˘gan s¸ekilde olu¸sturun, Seçenekler -> Kendi sütunlarınızı ekleyin. Bu örnek arama ismi olarak “#genre”
ve sütun ba¸slı˘gı olarak “Tür” kullanır. Sütun türü “Virgülle ayrılmı¸s metin, etiketler gibi, etiket tarayıcıda gösterilir.”
Calibre’yi yeniden ba¸slattıktan sonra, calibre’ye sütunun bir sıralı dizi oldu˘gunu söylemelisiniz. Seçenekler -> Görünüm ve Doku -> Etiket Taryıcıyı açın ve “Sıralı dizili ö˘geli kategoriler” kutusuna “#genre” yazın. Uygula’ya tıklayın,
ve ayarlama i¸sini bitirdiniz.
1.9. Rehberler
147
calibre Kullanıcı Kılavuzu, Sürüm 2.24.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. ˙Ilk defa bir türün nasıl uygulanaca˘gını ö˘grenmek için, bir türün kitap metadata’sında
nasıl göründü˘günden biraz bahsetmeliyiz.
Bir “¸seylerin” sıralı dizisi noktalarla ayrılmı¸s ifadelerden olu¸san ö˘geler olu¸sturmakla in¸sa edilir. Tür örne˘ginden devam edersek, bu ö˘geler “Tarih.Askeri”, “Gizem.Vampir”, “Bilim Kurgu.Uzay Operası”, vs. olur. Yani yeni bir tür
olu¸sturmak için, bu türe ait olması gereken bir kitap seçer, metadata’sını düzenler, ve olu¸sturdu˘gunuz 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¸sa˘gıda
gösterildi˘gi gibi “Çizgiroman.Süper Kahramanlar” girersiniz (di˘ger özel sütunları göz ardı edin):
Yukarıdakileri yaptıktan sonra, etiket tarayıcıda s¸unları görürsünüz:
148
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.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ı˘gı gibi aynı s¸ekilde metadata düzenleyerek kitaba ekleyebilirsiniz.
Aranıyor
Tür aramanın en kolay yolu etiket tarayıcıyı kullanarak görmek istedi˘giniz 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¸sareti getirebilir. Sırf bir türün
alt türü var diye, kendi ba¸sına bir tür de˘gildir anlamına gelmez de˘gil mi. Örne˘gin, bir kitabın “Tarih” türü olabilir ama
“Tarih.Askeri” türde de˘gildir. Yalnızca “Tarih”e sahip kitapları nasıl arayabiliriz ?
Etiket tarayıcı arama mkenizması bir ö˘genin alt ö˘gesi olup olmadı˘gını bilir. Varsa, ö˘geye tıklamak normal üç yerine
5 aramadan geçer. ˙Ilki normal ye¸sil artıdır, yalnızca o türde kitapları gösterir (örn., Tarih). ˙Ikincisi 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¸sinci ba¸sa dönü¸stür, i¸saretsiz, 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¸san sanal
bir kitaplık yapabilirsiniz. Tür içinde ba¸ska aramalar yapmak istedi˘ginizde veya bu türdeki kitapların metadata’sını yönetmek/güncellemek için faydalıdır. Örne˘gimize 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¸s bir arama olu¸sturabilirsiniz, kaydedilmi¸s aramaya Tarih.Japonca girebilir, ve “aramayı kaydet” dü˘gmesine (sa˘g taraftaki beyaz artı i¸sareti olan ye¸sil kutu)
tıklayabilirsiniz.
1.9. Rehberler
149
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Kaydedilmi¸s aramayı olu¸sturduktan sonra, bunu bir kısıtlama olarak kullanabilirsiniz.
Kullanıslı
¸ Sablon
¸
Fonksiyonlar
Tür bilgisini diske kaydet veya aygıta göndermek gibi bir s¸ablonda kullanmak isteyebilirsiniz. O zaman
soru “En dı¸staki tür isim veya isimlerini nasıl alırım?” olur. Bir calibre s¸ablon fonksiyonu, alt ö˘geler, bu
i¸si daha kolay yapmak için sa˘glanmı¸stır.
Örne˘gin, “Tarih/The Gathering Storm - Churchill, Winston” gibi, tür dizinleri yapmak için en dı¸staki
tür seviyesini diske-kaydet s¸ablonuna eklemek istedi˘ginizi 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¸sa˘gıdaki s¸ablon bu i¸si görür:
=
{}=
{}@default
=0=1=2=0=1=2
\PYGZob{}\PYGZsh{}genre:subitems( 1)\textbar{}\textbar{}/\PYGZcb{}\PYGZob{}title\
Sablonlar
¸
ve subitems() fonksiyonu ile ilgili daha fazla bilgi için S¸ ablon diline (sayfa 153) göz atın.
1.9.3 XPath Rehberi
Bu rehberde calibre içinde HTML83 belgelerinin rasgele parçalarını seçmekte kullanılabilen XPath84 sorgu dili için
bir giri¸s 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ı¸s bir HTML belgesi içinde bölüm ba¸slıklarını bulmak gibi e-kitaplarla ilgili görevlere
odaklanacaktır.
83 http://en.wikipedia.org/wiki/HTML
84 http://en.wikipedia.org/wiki/XPath
150
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
˙
Içindekiler
•
•
•
•
•
Etiket adına göre seçmek (sayfa 151)
Özniteli˘ge göre seçmek (sayfa 152)
Etiket içeri˘gine göre seçmek (sayfa 152)
Örnek e-kitap (sayfa 152)
XPath tümle¸sik fonksiyonları (sayfa 152)
Etiket adına göre seçmek
Seçimin en basit formu etiketleri isme göre seçmektir. Örne˘gin; belgedeki tüm <h2> etiketlerini seçmek istedi˘ginizi
dü¸sünelim. XPath sorgusu basitçe s¸öyle olacaktır:
=
{}=
{}@default
=0=1=2=0=1=2//h:h2
(Selects all \PYGZlt{}h2\PYGZgt{} tags)
Ba¸staki // öneki belgedeki tüm düzeylerde ara anlamına gelmektedir. Simdi
¸
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˘ger belgedeki belirli bir düzeydeki etiketleri arayacak olursanız öneki de˘gi¸stirin:
=
{}=
{}@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 152) içinde sadece <p>A very short ebook to demonstrate the use of
XPath.</p> ifadesiyle e¸sle¸secek ama di˘ger <p> etiketleriyle e¸sle¸smeyecektir. Yukarıdaki örneklerdeki h: öneki
XHTML etiketleriyle e¸sle¸smesi içindir. Bunun nedeni calibre’nin tüm içeri˘gi XHTML olarak tutmasıdır. XHTML
etiketlerinde bir isim alanı bulunur ve h: HTML etiketleri için isim alanı önekidir.
Simdi
¸
<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¸sturulur:
=
{}=
{}@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¸sle¸s anlamına
gelmektedir. Simdi
¸
test ifadesine bakalım name()=’h1’ or name()=’h2’. name() tümle¸sik fonksiyona bir örnektir. Basitçe etiketin adını de˘gerlendirir. Bu nedenle onu kullanarak, isimleri h1 veya h2 olan etiketleri seçebiliriz.
name() fonksiyonunun isim alanlarını yok saydı˘gını ve bu nedenle h: ön ekine ihtiyaç olmadı˘gına dikkat edin. XPath
çok fazla tümle¸sik fonksiyona sahiptir. Bunlardan bir kaçına bu rehberde de˘ginilecektir.
1.9. Rehberler
151
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
˘ göre seçmek
Öznitelige
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˘gine kar¸sılık gelir. Öznitelik de˘gerleriyle ilgili daha karma¸sık e¸sle¸smeler için
‘XPath tümle¸sik fonksiyonlarını‘_ kullanabilirsiniz.
˘
Etiket içerigine
göre seçmek
XPath kullanarak etiketleri içerdikleri metinlere göre seçebilirsiniz. Bunu yapmanın en iyi yolu re:test() tümle¸sik
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˘gine kar¸sılık gelir, @ operatörünün özniteliklere kar¸sı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ümlesik
¸ fonksiyonları
name() Mevcut etiketin adı.
contains() contains(s1, s2) ifadesi e˘ger s1, s2’yi içerirse true döndürür.
152
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
re:test() re:test(src, desen, bayraklar) ifadesi e˘ger src karakter dizisi desen düzenli ifadesiyle e¸sles¸irse true döndürür. E¸sle¸smeyi büyük küçük harfe duyarlı yapan i özellikle yararlı bir bayraktır. Düzenli ifadeler
için iyi bir giri¸s regexp sözdizimi85 sayfasında bulunabilir
1.9.4 Calibre sablon
¸
dili
Calibre s¸ablon dili çe¸sitli yerlerde kullanılır. Calibre kitaplı˘gından diske veya e-kitap okuyucuya dosyaları kaydederken dizin yapısını ve dosya isimlerini kontrol etmede kullanılır. Ayrıca di˘ger sütunlardan veri içeren “sanal” sütunlar
tanımlamada kullanılır vs.
Temel s¸ablon dili çok basittir, ama çok güçlü geli¸smi¸s özellikleri vardır. Ana fikir s¸ablonun metinden olu¸sması ve isimlerin i¸slenen kitaptan gelen ilgili metadata ile de˘gi¸stirilecek süslü parantez içinde olmasıdır. Yani örne˘gin, calibre’de
kitapları aygıta kaydetmede kullanılan ön tanımlı s¸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 s¸u s¸ekle gelir:
=
{}=
{}@default
=0=1=2=0=1=2Asimov, Isaac/The Foundation/The Foundation \PYGZhy{} Isaac Asimov
Yatık çizgiler metindir, belirdikleri yerde s¸ablona koyulurlar. Örne˘gin, s¸ablonunuz s¸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 s¸u s¸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¸sturdu˘gunuz özel sütunlar da dahil olmak üzere bir s¸ablonda
kullanabilirsiniz. Bir sütunun s¸ablon adını bulmak için farenizi sütun ba¸slı˘gı üzerine getirin. Özel alanlar için isimler
(kendi olu¸sturdu˘gunuz 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, s¸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, s¸ablondaki alan otomatik olarak bu kitap için kaldırılır. Su
¸
örne˘gi dü¸sünün:
85 https://docs.python.org/2.7/library/re.html
1.9. Rehberler
153
calibre Kullanıcı Kılavuzu, Sürüm 2.24.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, s¸ablon s¸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¸slukları otomatik olarak kaldırır).
Gelismi
¸ s¸ biçimleme
Sablonlarla
¸
basit yer de˘gi¸sikliklerinden fazlasını yapabilirsiniz. Duruma ba˘glı olarak metin ekleyebilir ve de˘gi¸stirilen
verinin nasıl biçimlenece˘gini kontrol edebilirsiniz.
Önce, duruma göre metin ilavesi. Bazı durumlarda metnin çıktıda yalnızca bir alan bo¸s olmadı˘gı zaman bulunmasını istersiniz. Yaygın bir durum ya hiçbir s¸ey, ya da aralarında tire olan iki de˘ger olsun istedi˘giniz series ve
series_index durumudur. Calibre bu durumu özel bir alan söz dizimi kullanarak ele alır.
Örne˘gin, s¸ablonu kullanmak istedi˘ginizi 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˘gu insan sonucun tire i¸saretleri olmadan basitçe title olmasını
terchi eder. Bunu yapmak için geni¸sletilmi¸s söz dizimi kullanın {field:|prefix_text|suffix_text}. Bu
söz dizimini kullandı˘gınızda, alanın SERIES de˘geri varsa sonuç ‘‘prefix_textSERIESsuffix_text‘‘olacaktır. Alanın bir
de˘geri yoksa, sonuç bo¸s karakter dizisi olur (hiçbir s¸ey); ön ek ve son ek göz ardı edilir. Ön ek ve son ek bo¸sluk
içerebilir. Ön ek ve son ek olarak alt s¸ablonlar (‘{ ... }‘) veya fonskiyonlar (a¸sa˘gıya göz atın) kullanmayın.
Bu söz dizimini kullanarak yukardaki seri problemini s¸ablonda s¸ö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˘
gu gibi birini kullanmaya izin verilmez.
‘‘{series:|| - }‘‘de oldu˘
gu gibi herhangi bir tarafa metin sa˘
glanmayabilir.
‘‘{title:||} kullanmak {title} kullanmak ile aynıdır.
˙Ikincisi: biçimleme. series_index’in her zaman takip eden sıfırları olan üç rakam s¸eklinde biçimlenmesini istedi˘ginizi
farz edelim. Bu i¸simizi görürdü:
154
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.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¸sluklar için, s¸unu kullanın:
=
{}=
{}@default
=0=1=2=0=1=2\PYGZob{}series\PYGZus{}index:\PYGZgt{}3s\PYGZcb{} \PYGZhy{} Three digits with leading spa
˙Izleyen sıfırlar için, s¸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˘gerleri olan (ör., 1.1) seri indisleri kullanırsanız, kesirli noktaların sıralanmasından emin olmak isteyebilirsiniz. Örne˘gin, 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, s¸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, s¸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 s¸ablon dili python’dan gelir ve bu geli¸smi¸s biçimleme i¸slemleri hakkında daha çok detay için, Python belgelerine86 göz atabilirsiniz.
Gelismi
¸ s¸ özellikler
Özel sütunlarda sablon
¸
kullanmak
Bazı durumlarda calibre’nin normalde göstermedi˘gi metadata’yı göstermek isteyebilirsiniz, veyea veriyi calibre’nin normalde gösterdi˘ginden farklı biçimde göstermek isteyebilirsiniz. Örne˘gin, calibre’nin göstermedi˘gi
ISBN’i göstermek isteyebilirsiniz. Bu i¸s için ‘di˘ger sütunlardan in¸sa edilen sütun’ (burdan sonra birle¸sik sütunlar olarak geçecektir) olu¸sturarak özel sütunlar kullanabilir, ve bir s¸ablon girebilirsiniz. Sonuç: calibre
bu s¸ablonun de˘gerlendirme sonuçlarını bir sütunda gösterir. ISBN göstermek için, sütun olu¸sturun ve s¸ablon kutusuna {identifiers:select(isbn)} girin. Virgülle ayrılmı¸s iki seri özel sütun göstermek için,
{#series1:||,}{#series2} kullanın.
Birle¸sik sütunlar, biçimleme dahil tüm s¸ablon seçeneklerini kullanabilirler.
Birle¸sik sütundaki veriyi de˘gi¸stiremezsiniz. Bir birle¸sik sütunu herhangi bir ö˘geye çift tıklayarak düzenlerseniz, s¸ablonu düzenleme için açarsınız, altındaki veriyi de˘gil. GUI üzerinde s¸ablon düzenleme birle¸sik sütunları de˘gi¸stirme ve
test etme için hızlı bir yöntemdir.
86 https://docs.python.org/2/library/string.html#format-string-syntax
1.9. Rehberler
155
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Sablonlarda
¸
fonksiyon kullanma - tekli-fonksiyon kipi
Normalde ba¸slık harfleri boyutundayken, bir alanın de˘gerini büyük harflerler göstermek istiyorsunuz diyelim. Bunu (ve
daha bir çok s¸eyi) s¸ablonlar için kullanılabilir fonksiyonlarla yapabilirsiniz. Örne˘gin, ba¸slı˘gı büyük harfle göstermek
için {title:uppercase()} kullanın. Ba¸slı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˘gerler (ba˘gımsız de˘gi¸sken) 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˘gi bir örnek için a¸sa˘gıya göz atın.
Fonksiyon söz dizimi {field:function(arguments)} veya {field:function(arguments)|prefix|suffix}
s¸eklindedir. Ba˘gımsız de˘gi¸skenler virgülle ayrılır. Ba˘gımsız de˘gi¸skenler içindeki virgüllerin önüne bir ters yatık çizgi
( ‘\’ ) gelir. Son (veya tek) ba˘gımsız de˘gi¸sken kapatan parantez ( ‘)’ ) içeremez. Fonksiyonlar s¸ablonda kullanılan
alanın de˘gerini uygun s¸ekilde düzenlenmi¸s olarak döndürür.
Önemli: Programlama deneyiminiz varsa, bu kipteki söz diziminin (tekli fonksiyon) bekledi˘giniz gibi olmayabileceg˘ ine dikkat edin. Karakter dizileri tırnak içinde de˘gildir. Bo¸sluklar belirgindir. Tüm ba˘gımsız de˘gi¸skenler sabit olmalıdır; alt-de˘gerlendirme yoktur. Alt s¸ablonları (‘{ ... }‘) fonksiyon de˘gi¸skeni olarak kullanmayın. Bunun yerine,
s¸ablon program kipi (sayfa 158) ve genel program kipi (sayfa 179) kullanın.
Bir çok fonksiyon düzenli ifadeler kullanır. Tüm durumlarda, düzenli ifade e¸sle¸smeleri büyük küçük harf ba˘gımsızdır.
Kullanılabilir fonksyionlar a¸sa˘gıda listelenmi¸stir. Fonksiyonlar için tanımlayıcı belgelendirme Fonksiyon sınıflandırma
(sayfa 164) kısmındadır:
• lowercase() – alanın de˘gerini küçük harfle döndür.
• uppercase() – alanın de˘gerini büyük harfle döndür.
• titlecase() – alanın de˘gerini ba¸slık boyutunda döndür.
• capitalize() – de˘geri ilk harfi büyük di˘gerleri küçük olacak s¸ekilde döndür.
• contains(örüntü, e¸
sle¸
sirse metin, e¸
sle¸
smezse metin) – alanın örüntü düzenli ifadesi ile
e¸sle¸sme içerip içermedi˘gini kontrol eder. E¸sle¸sme olursa e¸sle¸sirse metin aksi durumda e¸sle¸smezse metin döndürür.
• count(separator) – de˘geri separator ile ayrılmı¸s bir ö˘ge listesi olarak yorumlar, listedeki ö˘ge sayısını döndürür. Ço˘gu liste ayraç olarak virgül kullanır, ama yazarlar ampersan i¸sareti kullanır. Örnekler: {tags:count(,)},
{authors:count(&)}
• format_number(template) – de˘geri bir sayı olarak yorumlar ve bu numarayı python biçimleme s¸ablonu
kullanarak “{0:5.2f}” veya “{0:,d}” veya “${0:5,.2f}” gibi biçimlendirir. Sablonun
¸
field_name kısmı 0 (sıfır)
olmalıdır (yukarıdaki örneklerdeki “{0:”). Daha çok örnek için s¸ablon dili ve python belgelerine göz atın. Biçimlendirme ba¸sarısız olursa bo¸s karakter dizisi döndürür.
• human_readable() – de˘gerin 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¸s de˘gilse, alanın de˘gerini 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ı¸s
ö˘ge listesi olarak yorumlar, listedeki her de˘geri pattern ile kar¸sıla¸stırır. Örüntü bir de˘gerle e¸sle¸sirse, 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ı¸s bir listedir.
156
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.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 ˙Ingilizce olarak döndürür. localize sıfır de˘gilse, karakter dizilerini mevcut yerel dilinde döndürür. Lang_codes virgülle ayrılmı¸s listedir.
• list_item(index, separator) – alanı separator ile ayrılmı¸s ö˘ge listesi olarak yorumla, index‘inci
˙ ö˘ge sıfır rakamıdır. Son ö˘ge ‘list_item(-1,separator) kullanarak döndürülebilir. Ö˘ge listede
elemanı döndür. Ilk
de˘gilse, bo¸s de˘ger döndürülür. Ayraç count fonksiyonundakiyle aynı anlamı ta¸sır.
• lookup(pattern, field, pattern, field, ..., else_field) – switch gibidir, farkı bag˘ ımsız de˘gi¸skenlerin metin de˘gil, alan (metadata) ismi olmasıdır. Uygun alanın de˘geri çekilecek ve kullanılacaktır. Bile¸sik sütunlar alanlar olduklarından, bu fonksiyonu bir bile¸sik alanda kullanarak ba¸ska bir bile¸sik
alanın de˘gerini kullanabilirsiniz. De˘gi¸sken kayıt yolları in¸sa ederken oldukç faydalıdır (bu konuya sonra de˘ginilecek).
• re(pattern, replacement) – alanı, düzenli ifade uyguladıktan sonra döndür. pattern‘in tüm örnekleri
‘replacement ile de˘gi¸stirilir. Calibre’nin tamamında oldu˘gu gibi, bunlar python-uyumlu düzenli ifadelerdir.
• select(key) – alanı, ö˘geler “id:value” biçiminde olmak üzere, virgülle ayrılmı¸s ö˘ge listesi olarak yorumlar.
id’nin anahtara e¸sit oldu˘gu çifti bul, ve ilgili de˘geri döndür. Bu fonksiyon bir kitap için tanımlayıcılardan isbn
gibi bir de˘geri çıkarmak için özellikle faydalıdır.
• shorten(left chars, middle text, right chars) – Alanın kısaltılmı¸s 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˘gından sa˘g karakterler‘den
olu¸sur. ‘Sol karakterler ve sa˘g karakterler tam sayı olmalıdır. Örne˘gin, kitabın ba¸slı˘gının Ancient English Laws
in the Times of Ivanhoe oldu˘gunu varsayalım, ve bunu en fazla 15 karakterlik bir bo¸slu˘ga sı˘gdırmaya çalı¸stıg˘ ınızı. {title:shorten(9,-,5)} kullanırsanız, sonuç Ancient E-nhoe olacaktır. Alanın uzunlu˘gu sol
karakterler + sa˘
g karakterler + middle text uzunlu˘gundan kısa olursa, alan oldu˘gu gibi kullanılır. Örne˘gin, The Dome ba¸slı˘gı de˘gi¸stirilmez.
• str_in_list(val, separator, string, found_val, not_found_val) – val, separator ile
ayrılmı¸s ö˘ge listesi olmak üzere, string’i listedeki tüm de˘gerlerle kar¸sıla¸stır. string bir de˘gerle e¸sle¸sirse, 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˘ger kontrol edilir.
• subitems(val, start_index, end_index) – Bu fonksiyon, türler gibi etiket benzeri hiyerar¸sik listeleri ayırmak için kullanılır. De˘geri, her ö˘ge nokta ile ayrılmı¸s liste olmak üzere virgülle ayrılmı¸s etiket benzeri
ö˘geler listesi olarak yorumlar. Önce nokta ile ayrılmı¸s etiket benzeri ö˘geleri bulur, sonra her ö˘ge için start_index
den ‘end_index‘e bile¸senleri çıkarır, sonra sonuçları geri birle¸stirir ve yeni bir liste döndürür. Nokta ile ayrılmı¸s listedeki ilk bile¸senin sıfır indisi olur. ˙Indis negatifse, listenin sonundan sayar. Özel bir durum olarak, sıfır
end_index’i listenin uzunlu˘gu 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˘geri separator ile ayrılmı¸s ö˘ge listesi olarak yorumla, start_index den end_index e ö˘gelerden olu¸san yeni bir liste döndür. ˙Ilk ö˘ge sıfır sayısıdır.
˙Indis 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ı¸stır) “A, B ,C” içerdi˘gini varsayarsak:
=
{}=
{}@default
1.9. Rehberler
157
calibre Kullanıcı Kılavuzu, Sürüm 2.24.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˘ger için, A B döndür. En uygun kullanım s¸ekli LN, FN biçimindeki isimleri FN LN s¸ekline dönü¸stürmedir. Virgül yoksa, fonksiyon de˘geri de˘gi¸stirmeden döndürür.
• switch(pattern, value, pattern, value, ..., else_value) – her pattern, value
çifti için, alanın pattern düzenli ifadesiyle e¸sle¸sip e¸sle¸smedi˘gini kontrol eder, ve e¸sle¸siyorsa, bu value
de˘gerini döndürür. pattern e¸sle¸smiyorsa, else_value döndürülür. ˙Istedi˘giniz kadar pattern, value
çiftiniz olabilir.
• test(text if not empty, text if empty) – alan bo¸s de˘gilse text if not empty, bo¸ssa text if empty
döndürür.
• transliterate() – Latin alfabesinden kaynak alandaki kelimelerin seslerine yakın biçimlenmi¸s karakter dizisi döndürür. Örne˘gin, kaynak alan Фёдор Михaйлович Достоевский ise fonksiyon Fiodor
Mikhailovich Dostoievskii döndürür.’
Simdi,
¸
fonksiyon ve biçimlendirmeleri aynı alanda yapmaya ne dersiniz. 003‘‘de oldu˘
gu gibi önünde
sıfırlar olan ‘‘#myint adında özel bir tam sayı sütununuz oldu˘gunu farz edin. Bunu yapmak için 0>3s
s¸eklinde bir biçim kullanırsınız. Ancak ön tanımlı olarak bir sayı (tam veya kesirli) sıfıra e¸sitse alan bo¸s de˘geri üretir,
yani sıfır de˘gerler 000 yerine hiçbir s¸ey üretmez. Gerçekten 000 de˘gerleri görmek istiyorsanız, hem biçim karakter
dizisini hem de ifempty fonksiyonunu kullanıp bo¸s de˘geri sıfıra çevirin. Alan referansı s¸u s¸ekilde olurdu:
=
{}=
{}@default
=0=1=2=0=1=2\PYGZob{}\PYGZsh{}myint:
PYGZgt{}3s:ifempty(\PYGZcb{}
Ön ve son ek kullanabilece˘ginizi de not edin. Sayının [003] veya [000] s¸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{}
Sablonlarda
¸
fonksiyon kullanma - sablom
¸
program kipi
Sablon
¸
dil program kipi tekli-fonksiyon kipinden farklı olarak di˘ger metadata alanlarına referans yapan, de˘gerleri
de˘gi¸stiren, aritmetik i¸slem yapan s¸ablon ifadeleri yazmanıza izin verir. Makul tamamlıkta bir programlama dilidir.
Yukarıda belgelenen fonksiyonları s¸ablon program kipinde kullanabilirsiniz. Detaylar için a¸sa˘gıya göz atın.
Bir örnekle ba¸slayalım, s¸ablonunuzun bir kitabın varsa serilerini, yoksa özel bir alan olan #genre yi göstermesini
istedi˘ginizi ele alalım. Temel dille bunu yapamazsınız çünkü bir s¸ablon ifadesinde ba¸ska metadata alanına referans
veremezsiniz. Program kipinde, yapabilirsiniz. A¸sa˘gıdaki ifade çalı¸sır:
=
{}=
{}@default
=0=1=2=0=1=2\PYGZob{}\PYGZsh{}series:\PYGZsq{}ifempty(\PYGZdl{}, field(\PYGZsq{}\PYGZsh{}genre\PYGZsq{
Örnek bir çok s¸ey gösteriyor:
• ifade :’ ile ba¸slıyor ve ’ ile bitiyorsa program kipi kullanılır. Di˘ger her s¸ey tekli-fonksiyon olarak ele alınır.
• $ de˘gi¸skeni ifadenin üzerinde i¸slem yaptı˘gı alan yerine geçer, bu durumda #series.
158
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
• fonksiyonlara tüm ba˘gımsız de˘gi¸skenleri verilmelidir. Varsayılan bir de˘ger yoktur. Örne˘gin, standart yerle¸sik
fonksiyonlara kaynak alanını gösteren ek bir ilk parametre verilmelidir, bu tekli-fonksiyon kipinden belirgin bir
de˘gi¸sikliktir.
• bo¸sluk karakterleri göz ardı edilir ve ifadenin herhangi bir yerinde kullanılabilir.
• sabit karakter dizileri e¸sle¸sen tırnak i¸saretleri arasındadır, ’ veyea ".
Dil nerdeyse tamamen fonksiyonlardan olu¸stu˘gundan 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˘gerleri döndüren fonksiyonlar olarak dü¸sünülebilir.
Dilin söz dizimi a¸sa˘gıdaki dil bilgisi ile gösterilmi¸stir:
=
{}=
{}@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¸sında ‘#’ karakteri olan sastırlardır.
Bir ‘‘expression‘‘ın her zaman de˘geri vardır, ya sabitin de˘geri, ya tanımlayıcıda içerilen de˘ger, ya da bir fonksiyon
tarafından döndürülen de˘ger. Bir ‘‘statement‘‘ın de˘geri ifade dizisindeki son deyimin de˘geridir. Yani programın de˘geri
(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¸sık ama pek anlamlı olmayan bir program örne˘gi 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¸sa˘gıdakileri yapar:
• bakılan alanın seris_index oldu˘gunu belirtir. Bu, $ de˘gi¸skeninin de˘gerini ayarlar.
• 3 parametre (str, start, end) alan substr fonksiyonunu ça˘gırır. Karakter dizisinden start ile end arasında karakterleri çıkararak olu¸sturulan 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˘gerlendirilmesi 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
159
calibre Kullanıcı Kılavuzu, Sürüm 2.24.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˘gi¸sken alır (x, y, lt, eq, gt). x ve y de˘gi¸skenlerini kar¸sıla¸stırır ve x< y ise üçüncü
de˘gi¸sken olan lt, x== y ise dördüncü de˘gi¸sken eq, x > y ise be¸sinci de˘gi¸sken gt yi döndürür. Tüm fonksiyonlarda oldu˘gu gibi, tüm parametreler ifade olabilirler. Bu durumda ilk parametre (x için de˘ger) series_index’in
2’ye bölümünün sonucudur. ˙Ikinci 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¸sinci parametre sabit karakter dizisi ‘‘‘gt’‘‘dir.
• Üçüncü parametre (lt için olan) bir ifadedir, veya deyimler dizisidir. Bir ifadenin aynı zamanda deyim
oldu˘gunu unutmayın (noktalı virgül ile ayrılmı¸s bir dizi deyim), listedeki son deyimin de˘gerini döndürür.
Bu durumda, program önce 1 de˘gerini yerel de˘gi¸sken 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˘
ger ‘‘1 içerece˘ginden, alt karakter dizisi ikinciden sonuncuya olan karakterleri
döndürür, veya ’t123’.
• Üçüncü parametreye de˘geri sa˘glayan ifade çalı¸stı˘gında, cmp bir de˘ger döndürebilir. Bu noktada, ‘‘strcat‘ bir
de˘ger döndürebilir, sonra ‘‘substr‘ bir de˘ger döndürebilir. Program ardından sonlanır.
series_index’in çe¸sitli de˘gerleri 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¸slem yapaca˘gı de˘geri sa˘glamalısınız. Örne˘gin, program kipinde test fonksiyonunun parametreleri s¸unlardır test(x, text_if_not_empty, text_if_empty).
Test edilecek de˘ger olan x parametresi, hemen her zaman bir de˘gi¸sken ya da fonksiyon ça˘grısı, genellikle field() olacaktır.
A¸sa˘gıdaki fonksiyonlar tekli-fonksiyon kipinde açıklananlara ek olarak kullanılabilirler. Yukarıdaki örnekten, teklifonksiyon kipi fonksiyonlarının üzerinde i¸slem yapılacak ek bir ilk de˘ger parametre alanına ihtiyaç duydu˘gunu 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 164) kısmında oldu˘gunu unutmayın.
• and(value, value, ...) – tüm de˘gerler bo¸s de˘gilse “1” karakter dizisi döndürür, aksi halde
bo¸s karakter dizisi döndürür. Bu fonksiyon test veya first_non_empty ile iyi çalı¸sır. ˙Istedi˘giniz kadar
de˘geriniz olabilir.
• add(x, y) – x + y döndürür. x veya y sayı de˘gilse 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˘gil
• approximate_formats() – bir noktada kitapla ili¸skilenmi¸s biçimlerin virgülle ayrılmı¸s listesini döndürür. Listen
– author_links(val_separator, pair_separator) – yazar listesi ve yazarın
ba˘glantı de˘gerini author1 val_separator author1link pair_separator
author2 val_separator author2link vs. s¸eklinde döndürür. Yazar ba˘glantısından val_separator karakter dizisi ile ek bo¸sluk olmadan ayrılır.
author:linkvalue çiftleri pair_separator karakter dizisi de˘gi¸skeni ile ek
bo¸sluk olmadan ayrılır. Yazar adları ya da ba˘glantılarında geçmeyen ayraç karakter
dizilerini seçmek size kalmı¸stır. Yazar ba˘glantısı bo¸s olsa da yazar eklenir.
160
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
– author_sorts(val_separator) – Kitabın yazarları için yazar sıralama de˘gerleri
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. s¸eklindedir. Bu listedeki yazar sıralama de˘gerleri kitaptaki yazarlarla
aynı sıradadır. val_separator etrafında bo¸sluklar istiyorsanız ayraç karakter dizisinde
ekleyin
• booksize() – calibre ‘size’ alanının de˘gerini 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¸sıla¸stı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ı˘
gına olan
yoldaki son ismi döndürür. Bu fonksiyon ¸
sablon program kipinde
‘‘{:’current_library_name()’} s¸ablonuyla kullanılabilir.
• current_library_path() -- ‘‘ mevcut calibre kitaplı˘
gına
yolu döndürür. Bu fonksiyon ¸
sablon program kipinde
‘‘{:’current_library_path()’} s¸ablonu kullanılarak ça˘grı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˘gilse negatiftir. date1 veya date2 tarih de˘gillerse,
fonksiyon bo¸s karakter dizisi döndürür.
• divide(x, y) – x / y döndürür. x veya y sayı de˘gilse istisna fırlatır.
• eval(string) – karakter dizisini bir program olarak de˘gerlendirir, yerel de˘gi¸skenleri geçirir
(atananları). Bu, s¸ablon i¸slemcisinin yerel de˘gi¸skenlerden karma¸sık sonuçlar olu¸sturmasına olanak verir. { ve } karakterleri özel olduklarından, { karakteri için [[ ve ‘}’ karakteri için ]] kullanmalısınız; otomatik olarak dönü¸stürüleceklerdir. Ayrıca ön ek ve son eklerin (|prefix|suffix söz dizimi)
s¸ablon program kipi kullanılırken bu fonksiyona de˘gi¸sken olarak kullanılamayaca˘gı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)
– sırayla “val < cmpN” kar¸sıla¸stırır, ba¸sarılı olan ilk kar¸sıla¸stırma için resultN döndürür. Hiçbir
kar¸sıla¸stırma ba¸sarılı olmazsa else_result döndürür. Örne˘gin:
=
{}=
{}@default
=0=1=2=0=1=2
\PYG{l+s+sb}{{}`{}`}\PYG{n}{first\PYGZus{}matching\PYGZus{}cmp}\PYG{p}{(
“large” döndürür. ˙Ilk de˘geri 16 olan aynı örnek “giant” döndürür. * first_non_empty(value,
value, ...) – bo¸s olmayan ilk de˘geri döndürür. Tüm de˘gerler bo¸ssa, bo¸s de˘ger döndürülür. ˙Istedi˘giniz kadar de˘geriniz olabilir. * format_date(x, date_format) – format_date(val, format_string)
– tarih alanı olması gereken de˘geri format_string kullanarak biçimler, karakter dizisi döndürür. Biçimleme
kodları s¸u s¸ekildedir:
=
{}=
{}@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).
161
calibre Kullanıcı Kılavuzu, Sürüm 2.24.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.
Biçimlendirdi˘giniz tarih yerelle¸smi¸s ay isimleri içeriyorsa, ki bu biçimlendirme ayarlarını
MMMM içerecek s¸ekilde yaptıysanız olabilir, beklenmeye sonuçlar alabilirsiniz. Bu durumda
{pubdate:format_date(yyyy)} gibi bir s¸ey kullanmak yerine, s¸ablonu s¸ablon program
kipinde {:’format_date(raw_field(’pubdate’),’yyyy’)’} gibi yazın.
• finish_formatting(val, fmt, prefix, suffix) – biçimlemeyi, ön ek ve son eki bir de˘gere
{series_index:05.2f| - |- } gibi bir s¸ablonda oldu˘gu gibi uygula. Bu fonksiyon GPM
s¸ablon derlemesinden faydalanmak için karma¸sık tekli-fonksiyon- veya s¸ablon-program-kipi s¸ablonlarının genel program kipine (sayfa 179) (a¸sa˘gıya göz atın) dönü¸stürülmesini kolayla¸stırmak için
sa˘glanmı¸stır. Örne˘gin, a¸sa˘gıdaki program yukardaki s¸ablonla aynı çıktıyı üretir:
=
{}=
{}@default
=0=1=2=0=1=2
program: finish\PYGZus{}formatting(field(\PYGZdq{}series\PYGZus{}index\P
Ba¸ska bir örnek: {series:re(([^\s])[^\s]+(\s|$),\1)}{series_index:0>2s| - |
- }{title} s¸ablonu için s¸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) – kitabın biçimleri için de˘gi¸stirilme zamanlarını temsil
eden sütun ile ayrılmı¸s ö˘gelerin virgülle ayrılmı¸s listesini döndür. date_format parametresi tarihin
nasıl biçimlendirilece˘gini belirtir. Detaylar için date_format fonksiyonuna bakın. Belirli bir biçim
için de˘gi¸stirilme zamanını select fonksiyonunu kullanarak alabilirsiniz. Biçim isimlerinin her zaman
büyük harfli oldu˘gunu unutmayın, EPUB gibi.
• formats_paths() – kitabın biçimlerine tam yolu temsil eden sütunla ayrılmı¸s ö˘gelerin virgülle
ayrılmı¸s listesini döndür. Belli bir biçim için yolu select fonksiyonunu kullanarak alabilirsiniz. Biçim
isimlerinin büyük harfli oldu˘gunu unutmayın, EPUB gibi.
• formats_sizes() – bir kitabın biçimlerinin boyutunu bayt cinsinden temsil eden sütunla ayrılmı¸s ö˘gelerin virgülle ayrılmı¸s listesi olarak döndür. Belirli bir biçim için boyut bilgisini select
fonksiyonu ile alabilirsiniz. Biçim isimlerinin her zaman büyük harfli olması gerekti˘gini unutmayın,
EPUB gibi.
• has_cover() – kitabın bir kapa˘gı varsa Yes, aksi durumda bo¸s karakter dizisi döndürür
• not(value) – de˘ger bo¸ssa “1” karakter dizisini döndürür, aksi halde bo¸s karakter dizisi. Bu fonksiyon test veya first_non_empty ile iyi çalı¸sır. ˙Istedi˘giniz kadar de˘geriniz olabilir.
162
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
• list_difference(list1, list2, separator) – Büyük küçük harf duyarlı olmayan
bir kar¸sıla¸stırma ile, list2 de bulunan ö˘gelerin list1‘den çıkarılmasıyla elde edilen listeyi döndürür.
‘list1 ve ‘list2‘deki ö˘geler döndürülen listede oldu˘gu gibi ayraçla ayrılmı¸slardır.
• list_equals(list1, sep1, list2, sep2, yes_val, no_val) – list1 ve list2
aynı ö˘geleri içeriyorsa yes_val, aksi halde no_val döndür. Ö˘geler iki listenin de ilgili ayraç karakterle (sep1 veya sep2) ayrılması ile belirlenir. Liste ö˘gelerinin sırası önemli de˘gildir. Kar¸sıla¸stırma
büyük küçük harf duyarlı de˘gildir.
• list_intersection(list1, list2, separator) – büyük küçük harf duyarlı olmayan
kar¸sıla¸stırma ile list1‘den ‘list2‘de bulunan ö˘gelerin çıkarılması ile elde edilen listeyi döndür. Döndürülen listede oldu˘gu gibi ‘list1 ve ‘list2‘deki ö˘geler bir ayraçla ayrılmı¸stır.
• list_re(src_list, separator, include_re, opt_replace) – Önce separator
karakterini kullanarak src_list‘i ö˘gelere ayırarak bir liste olu¸stur. Listedeki her ö˘genin ‘include_re
ile e¸sle¸sip e¸sle¸smedi˘gini kontrol et. E¸sle¸sirse, döndürülecek listeye ekle. opt_replace bo¸s karakter
dizisi de˘gilse, ö˘geyi döndürülen listeye eklemeden önce yer de˘gi¸stirmeyi uygula.
• list_re_group(src_list, separator, include_re, search_re,
template_for_group_1, for_group_2, ...) – list_re except gibi yer de˘gi¸stirmeler seçime ba˘glı de˘gildir. Yer de˘gi¸stirmeleri kullanırken re_group(item, search_re, template ...)
kullanır.
• list_sort(list, direction, separator) – büyük küçük harf ba˘gımsız sıralanmı¸s
liste döndür. direction sıfır ise, liste artan s¸ekilde sıralanır, aksi halde azalan s¸ekilde. Liste ö˘geleri
döndürülen liste gibi separator ile ayrılmı¸stır.
• list_union(list1, list2, separator) – list1 ve list2 ö˘gelerinin birle¸siminden olu¸san
bir liste döndürür, aynı ö˘geler büyük küçük harf duyarlı olmayan kar¸sıla¸stırma ile silinir. Ö˘gelerin
harfleri büyük küçük de˘gi¸siyorsa, list1 deki kullanılır. list1 ve list2 deki ö˘geler döndürülen listede
oldu˘gu gibi separator ile ayrılır.
• multiply(x, y) – x * y döndürür. x veya y sayı de˘gilse bir istisna fırlatır.
• ondevice() – ondevice ayarlanmı¸ssa “Yes” karakter dizisini, aksi halde bo¸s karakter dizisi döndürür
• or(value, value, ...) – herhangi bir de˘ger bo¸s de˘gilse “1” karakter dizisini, aksi halde
bo¸s karakter dizisi döndürür. Bu fonksiyon test veya first_non_empty ile iyi çalı¸sır. ˙Istedi˘giniz kadar
de˘geriniz olabilir.
• print(a, b, ...) – ba˘gımsız de˘gi¸skenleri standart çıktıya yazdırır. Calibre’yi komut satırından ba¸slatmadı˘gınız takdirde (calibre-debug -g) çıktı bir kara deli˘ge gideceketir.
• raw_field(name) – Herhangi biçimlendirme uygulamadan name ile isimlendirilmi¸s metadata alanını döndürür.
– raw_list(name, separator) – Herhangi biçimlendirme veya sıralama uygulamadan ve separator ile ayrılmı¸s ö˘gelerle, name ile isimlendirilmi¸s metadata listesini döndürür.
• re_group(val, pattern, template_for_group_1, for_group_2, ...) – pattern düzenli ifadesinin val de˘gerine uygulanması ve her e¸sle¸smenin her e¸sle¸sme grubunun ili¸skili
s¸ablondan dönen de˘gerle yer de˘gi¸stirmesi ile elde edilen karakter dizisini döndürür. Grup için aslen
i¸sle¸sen de˘ger $ olarak kullanılabilirdir. Sablon
¸
program kipinde, s¸ablon ve eval fonksiyonlarında
oldu˘gu gibi { için [[ ve } için ]] kullanın. Sablon
¸
program kipindeki a¸sa˘gıdaki örnek birden fazla
kelimeli serilere bakar ve ilk kelimenin ilk harfini büyütür:
=
{}=
{}@default
=0=1=2=0=1=2
1.9. Rehberler
\PYG{p}{\PYGZob{}}\PYG{n}{series}\PYG{p}{:}\PYG{l+s}{\PYGZsq{}}\PYG{l+s}
163
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
• series_sort() – seri sıralama de˘gerini döndürür.
• strcat(a, b, ...) – istenilen sayıda de˘gi¸sken alabilir. Tüm de˘gi¸skenlerin uç uca eklenmesiyle olu¸sturulmu¸s bir karakter dizisi döndürür.
• strcat_max(max, string1, prefix2, string2, ...) – Ba˘gımsız de˘gi¸skenlerin uç
uca eklenmesiyle olu¸sturulmu¸s bir karakter dizisi döndürür. Döndürülen de˘ger string1 olarak ilklendirilir. Prefix, string çiftleri elde edilen karakter dizisinin boyu max‘dan küçük oldu˘gu sürece de˘gerin
˙
sonuna eklenir. String1 max’dan büyük olsa da string1 döndürülür. Istedi˘
giniz 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˘gımsız
kar¸sıla¸stırma gerçekle¸stirir. 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˘gi¸sken olarak geçirilen karakter dizisinin uzunlu˘gunu 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˘
gdan sayıldı˘
gında kaç karakter
oldu˘
gunu ifade eder. end sıfır ise, son karakteri ifade eder.
Örne˘
gin, ‘‘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˘gilse bir istisna fırlatır.
• today() – bugün için bir karakter dizisi döndürür. Bu de˘ger format_date veyea days_between ile
kullanılması için tasarlanmı¸stır, ama her karakter dizisi gibi de˘gi¸stirilebilir. Tarih ISO biçimindedir.
• template(x) – x’i bir s¸ablon olarak de˘gerlendirir. De˘gerlendirme kendi ba˘glamında yapılır, anlamı de˘gerlerin ça˘gıran ve s¸ablon de˘gerlendirmesi arasında payla¸stırılmıyor oldu˘gudur. { ve } özel
karakterler olduklarından { yerine [[ ve ‘}’ yerine ]] kullanmalısınız; otomatik olarak dönü¸stürülürler. Örne˘gin template(’[[title_sort]]’) ‘‘{title_sort} s¸ablonunu de˘gerlendirecek ve de˘gerini döndürecektir. Ayrıca ön ek ve son eklerin (|prefix|suffix söz dizimi) s¸ablon program kipi kullanılarak bu fonksiyona ba˘gımsız de˘gi¸sken olarak verilemeyece˘gini 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.
164
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
• Arithmetic (sayfa 184)
– add(x, y) (sayfa 184)
– divide(x, y) (sayfa 184)
– multiply(x, y) (sayfa 184)
– subtract(x, y) (sayfa 184)
• Boolean (sayfa 184)
– and(value, value, ...) (sayfa 184)
– not(value) (sayfa 184)
– or(value, value, ...) (sayfa 184)
• Date functions (sayfa 184)
– days_between(date1, date2) (sayfa 184)
– today() (sayfa 184)
• Formatting values (sayfa 185)
– finish_formatting(val, fmt, prefix, suffix) (sayfa 185)
– format_date(val, format_string) (sayfa 185)
– format_number(v, template) (sayfa 185)
– human_readable(v) (sayfa 185)
• Get values from metadata (sayfa 185)
– approximate_formats() (sayfa 185)
– author_links(val_separator, pair_separator) (sayfa 185)
– author_sorts(val_separator) (sayfa 186)
– booksize() (sayfa 186)
– current_library_name() (sayfa 186)
– current_library_path() (sayfa 186)
– field(name) (sayfa 186)
– formats_modtimes(date_format) (sayfa 186)
– formats_paths() (sayfa 186)
– formats_sizes() (sayfa 187)
– has_cover() (sayfa 187)
– language_codes(lang_strings) (sayfa 187)
– language_strings(lang_codes, localize) (sayfa 187)
– ondevice() (sayfa 187)
– raw_field(name) (sayfa 187)
– raw_list(name, separator) (sayfa 187)
– series_sort() (sayfa 187)
– user_categories() (sayfa 187)
– virtual_libraries() (sayfa 188)
• If-then-else (sayfa 188)
– contains(val, pattern, text if match, text if not match) (sayfa 188)
– ifempty(val, text if empty) (sayfa 188)
– test(val, text if not empty, text if empty) (sayfa 188)
• Iterating over values (sayfa 188)
– first_non_empty(value, value, ...) (sayfa 188)
– lookup(val, pattern, field, pattern, field, ..., else_field) (sayfa 188)
– switch(val, pattern, value, pattern, value, ..., else_value) (sayfa 188)
• List lookup (sayfa 188)
– identifier_in_list(val, id, found_val, not_found_val) (sayfa 189)
– in_list(val, separator, pattern, found_val, not_found_val) (sayfa 189)
– list_item(val, index, separator) (sayfa 189)
– select(val, key) (sayfa 189)
– str_in_list(val, separator, string, found_val, not_found_val) (sayfa 189)
• List manipulation (sayfa 189)
– count(val, separator) (sayfa 189)
– list_difference(list1, list2, separator) (sayfa 189)
– list_equals(list1, sep1, list2, sep2, yes_val, no_val) (sayfa 190)
– list_intersection(list1, list2, separator) (sayfa 190)
1.9. Rehberler
– list_re(src_list, separator, include_re, opt_replace) (sayfa 190)
– list_re_group(src_list, separator, include_re, search_re, group_1_template, ...) (sayfa 190)
– list_sort(list, direction, separator) (sayfa 190)
– list_union(list1, list2, separator) (sayfa 190)
165
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Arithmetic
add(x, y)
class calibre.utils.formatter_functions.BuiltinAdd
add(x, y) – returns x + y. Throws an exception if either x or y are not numbers.
divide(x, y)
class calibre.utils.formatter_functions.BuiltinDivide
divide(x, y) – returns x / y. Throws an exception if either x or y are not numbers.
multiply(x, y)
class calibre.utils.formatter_functions.BuiltinMultiply
multiply(x, y) – returns x * y. Throws an exception if either x or y are not numbers.
subtract(x, y)
class calibre.utils.formatter_functions.BuiltinSubtract
subtract(x, y) – returns x - y. Throws an exception if either x or y are not numbers.
Boolean
and(value, value, ...)
class calibre.utils.formatter_functions.BuiltinAnd
and(value, value, ...) – returns the string “1” if all values are not empty, otherwise returns the empty string. This
function works well with test or first_non_empty. You can have as many values as you want.
not(value)
class calibre.utils.formatter_functions.BuiltinNot
not(value) – returns the string “1” if the value is empty, otherwise returns the empty string. This function works
well with test or first_non_empty. You can have as many values as you want.
or(value, value, ...)
class calibre.utils.formatter_functions.BuiltinOr
or(value, value, ...) – returns the string “1” if any value is not empty, otherwise returns the empty string. This
function works well with test or first_non_empty. You can have as many values as you want.
Date functions
days_between(date1, date2)
class calibre.utils.formatter_functions.BuiltinDaysBetween
days_between(date1, date2) – return the number of days between date1 and date2. The number is positive if
date1 is greater than date2, otherwise negative. If either date1 or date2 are not dates, the function returns the
empty string.
today()
class calibre.utils.formatter_functions.BuiltinToday
today() – return a date string for today. This value is designed for use in format_date or days_between, but can
be manipulated like any other string. The date is in ISO format.
166
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Formatting values
finish_formatting(val, fmt, prefix, suffix)
class calibre.utils.formatter_functions.BuiltinFinishFormatting
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| - |- }. For example, the following program produces the same output
as the above template: program: finish_formatting(field(“series_index”), “05.2f”, ” - ”, ” - ”)
format_date(val, format_string)
class calibre.utils.formatter_functions.BuiltinFormatDate
format_date(val, format_string) – format the value, which must be a date, using the format_string, returning a
string. The formatting codes are: d : the day as number without a leading zero (1 to 31) dd : the day as number
with a leading zero (01 to 31) ddd : the abbreviated localized day name (e.g. “Mon” to “Sun”). dddd : the long
localized day name (e.g. “Monday” to “Sunday”). M : the month as number without a leading zero (1 to 12).
MM : the month as number with a leading zero (01 to 12) MMM : the abbreviated localized month name (e.g.
“Jan” to “Dec”). MMMM : the long localized month name (e.g. “January” to “December”). yy : the year as two
digit number (00 to 99). yyyy : the year as four digit number. h : the hours without a leading 0 (0 to 11 or 0 to 23,
depending on am/pm) hh : the hours with a leading 0 (00 to 11 or 00 to 23, depending on am/pm) m : the minutes
without a leading 0 (0 to 59) mm : the minutes with a leading 0 (00 to 59) s : the seconds without a leading 0 (0
to 59) ss : the seconds with a leading 0 (00 to 59) ap : use a 12-hour clock instead of a 24-hour clock, with “ap”
replaced by the localized string for am or pm AP : use a 12-hour clock instead of a 24-hour clock, with “AP”
replaced by the localized string for AM or PM iso : the date with time and timezone. Must be the only format
present
format_number(v, template)
class calibre.utils.formatter_functions.BuiltinFormatNumber
format_number(v, template) – format the number v using a python formatting template such as “{0:5.2f}”
or “{0:,d}” or “${0:5,.2f}”. The field_name part of the template must be a 0 (zero) (the “{0:” in the above
examples). See the template language and python documentation for more examples. Returns the empty string
if formatting fails.
human_readable(v)
class calibre.utils.formatter_functions.BuiltinHumanReadable
human_readable(v) – return a string representing the number v in KB, MB, GB, etc.
Get values from metadata
approximate_formats()
class calibre.utils.formatter_functions.BuiltinApproximateFormats
approximate_formats() – return a comma-separated list of formats that at one point were associated with the
book. There is no guarantee that this list is correct, although it probably is. This function can be called in
template program mode using the template “{:’approximate_formats()’}”. Note that format names are always
uppercase, as in EPUB. This function works only in the GUI. If you want to use these values in save-to-disk or
send-to-device templates then you must make a custom “Column built from other columns”, use the function in
that column’s template, and use that column’s value in your save/send templates
author_links(val_separator, pair_separator)
1.9. Rehberler
167
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
class calibre.utils.formatter_functions.BuiltinAuthorLinks
author_links(val_separator, pair_separator) – returns a string containing a list of authors and that author’s link
values in the form author1 val_separator author1link pair_separator author2 val_separator author2link etc. An
author is separated from its link value by the val_separator string with no added spaces. author:linkvalue pairs
are separated by the pair_separator string argument with no added spaces. It is up to you to choose separator
strings that do not occur in author names or links. An author is included even if the author link is empty.
author_sorts(val_separator)
class calibre.utils.formatter_functions.BuiltinAuthorSorts
author_sorts(val_separator) – returns a string containing a list of author’s sort values for the authors of the book.
The sort is the one in the author metadata (different from the author_sort in books). The returned list has the
form author sort 1 val_separator author sort 2 etc. The author sort values in this list are in the same order as the
authors of the book. If you want spaces around val_separator then include them in the separator string
booksize()
class calibre.utils.formatter_functions.BuiltinBooksize
booksize() – return value of the size field. This function works only in the GUI. If you want to use this value in
save-to-disk or send-to-device templates then you must make a custom “Column built from other columns”, use
the function in that column’s template, and use that column’s value in your save/send templates
current_library_name()
class calibre.utils.formatter_functions.BuiltinCurrentLibraryName
current_library_name() – return the last name on the path to the current calibre library. This function can be
called in template program mode using the template “{:’current_library_name()’}”.
current_library_path()
class calibre.utils.formatter_functions.BuiltinCurrentLibraryPath
current_library_path() – return the path to the current calibre library. This function can be called in template
program mode using the template “{:’current_library_path()’}”.
field(name)
class calibre.utils.formatter_functions.BuiltinField
field(name) – returns the metadata field named by name
formats_modtimes(date_format)
class calibre.utils.formatter_functions.BuiltinFormatsModtimes
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()
class calibre.utils.formatter_functions.BuiltinFormatsPaths
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.
168
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
formats_sizes()
class calibre.utils.formatter_functions.BuiltinFormatsSizes
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()
class calibre.utils.formatter_functions.BuiltinHasCover
has_cover() – return Yes if the book has a cover, otherwise return the empty string
language_codes(lang_strings)
class calibre.utils.formatter_functions.BuiltinLanguageCodes
language_codes(lang_strings) – return the language codes for the strings passed in lang_strings. The strings
must be in the language of the current locale. Lang_strings is a comma-separated list.
language_strings(lang_codes, localize)
class calibre.utils.formatter_functions.BuiltinLanguageStrings
language_strings(lang_codes, localize) – return the strings for the language codes passed in lang_codes. If localize is zero, return the strings in English. If localize is not zero, return the strings in the language of the current
locale. Lang_codes is a comma-separated list.
ondevice()
class calibre.utils.formatter_functions.BuiltinOndevice
ondevice() – return Yes if ondevice is set, otherwise return the empty string. This function works only in the
GUI. If you want to use this value in save-to-disk or send-to-device templates then you must make a custom
“Column built from other columns”, use the function in that column’s template, and use that column’s value in
your save/send templates
raw_field(name)
class calibre.utils.formatter_functions.BuiltinRawField
raw_field(name) – returns the metadata field named by name without applying any formatting.
raw_list(name, separator)
class calibre.utils.formatter_functions.BuiltinRawList
raw_list(name, separator) – returns the metadata list named by name without applying any formatting or sorting
and with items separated by separator.
series_sort()
class calibre.utils.formatter_functions.BuiltinSeriesSort
series_sort() – return the series sort value
user_categories()
class calibre.utils.formatter_functions.BuiltinUserCategories
user_categories() – return a comma-separated list of the user categories that contain this book. This function
works only in the GUI. If you want to use these values in save-to-disk or send-to-device templates then you
must make a custom “Column built from other columns”, use the function in that column’s template, and use
that column’s value in your save/send templates
1.9. Rehberler
169
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
virtual_libraries()
class calibre.utils.formatter_functions.BuiltinVirtualLibraries
virtual_libraries() – return a comma-separated list of virtual libraries that contain this book. This function works
only in the GUI. If you want to use these values in save-to-disk or send-to-device templates then you must make
a custom “Column built from other columns”, use the function in that column’s template, and use that column’s
value in your save/send templates
If-then-else
contains(val, pattern, text if match, text if not match)
class calibre.utils.formatter_functions.BuiltinContains
contains(val, pattern, text if match, text if not match) – checks if field contains matches for the regular expression
pattern. Returns text if match if matches are found, otherwise it returns text if no match
ifempty(val, text if empty)
class calibre.utils.formatter_functions.BuiltinIfempty
ifempty(val, text if empty) – return val if val is not empty, otherwise return text if empty
test(val, text if not empty, text if empty)
class calibre.utils.formatter_functions.BuiltinTest
test(val, text if not empty, text if empty) – return text if not empty if the field is not empty, otherwise return text
if empty
Iterating over values
first_non_empty(value, value, ...)
class calibre.utils.formatter_functions.BuiltinFirstNonEmpty
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.
lookup(val, pattern, field, pattern, field, ..., else_field)
class calibre.utils.formatter_functions.BuiltinLookup
lookup(val, pattern, field, pattern, field, ..., else_field) – like switch, except the arguments are field (metadata)
names, not text. The value of the appropriate field will be fetched and used. Note that because composite columns
are fields, you can use this function in one composite field to use the value of some other composite field. This
is extremely useful when constructing variable save paths
switch(val, pattern, value, pattern, value, ..., else_value)
class calibre.utils.formatter_functions.BuiltinSwitch
switch(val, pattern, value, pattern, value, ..., else_value) – for each pattern, value pair, checks if the field matches
the regular expression pattern and if so, returns that value. If no pattern matches, then else_value is returned.
You can have as many pattern, value pairs as you want
List lookup
170
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
identifier_in_list(val, id, found_val, not_found_val)
class calibre.utils.formatter_functions.BuiltinIdentifierInList
identifier_in_list(val, id, found_val, not_found_val) – treat val as a list of identifiers separated by commas, comparing the string against each value in the list. An identifier has the format “identifier:value”. The id parameter
should be either “id” or “id:regexp”. The first case matches if there is any identifier with that id. The second
case matches if the regexp matches the identifier’s value. If there is a match, return found_val, otherwise return
not_found_val.
in_list(val, separator, pattern, found_val, not_found_val)
class calibre.utils.formatter_functions.BuiltinInList
in_list(val, separator, pattern, found_val, not_found_val) – treat val as a list of items separated by separator,
comparing the pattern against each value in the list. If the pattern matches a value, return found_val, otherwise
return not_found_val.
list_item(val, index, separator)
class calibre.utils.formatter_functions.BuiltinListitem
list_item(val, index, separator) – interpret the value as a list of items separated by separator, returning the
index‘th item. The first item is number zero. The last item can be returned using ‘list_item(-1,separator). If the
item is not in the list, then the empty value is returned. The separator has the same meaning as in the count
function.
select(val, key)
class calibre.utils.formatter_functions.BuiltinSelect
select(val, key) – interpret the value as a comma-separated list of items, with the items being “id:value”. Find
the pair with the id equal to key, and return the corresponding value.
str_in_list(val, separator, string, found_val, not_found_val)
class calibre.utils.formatter_functions.BuiltinStrInList
str_in_list(val, separator, string, found_val, not_found_val) – treat val as a list of items separated by separator,
comparing the string against each value in the list. If the string matches a value, return found_val, otherwise
return not_found_val. If the string contains separators, then it is also treated as a list and each value is checked.
List manipulation
count(val, separator)
class calibre.utils.formatter_functions.BuiltinCount
count(val, separator) – interprets the value as a list of items separated by separator, returning the number of items
in the list. Most lists use a comma as the separator, but authors uses an ampersand. Examples: {tags:count(,)},
{authors:count(&)}
list_difference(list1, list2, separator)
class calibre.utils.formatter_functions.BuiltinListDifference
list_difference(list1, list2, separator) – return a list made by removing from list1 any item found in list2, using a
case-insensitive compare. The items in list1 and list2 are separated by separator, as are the items in the returned
list.
1.9. Rehberler
171
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
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) – return yes_val if list1 and list2 contain the same items,
otherwise return no_val. The items are determined by splitting each list using the appropriate separator character
(sep1 or sep2). The order of items in the lists is not relevant. The compare is case insensitive.
list_intersection(list1, list2, separator)
class calibre.utils.formatter_functions.BuiltinListIntersection
list_intersection(list1, list2, separator) – return a list made by removing from list1 any item not found in list2,
using a case-insensitive compare. The items in list1 and list2 are separated by separator, as are the items in the
returned list.
list_re(src_list, separator, include_re, opt_replace)
class calibre.utils.formatter_functions.BuiltinListRe
list_re(src_list, separator, include_re, opt_replace) – Construct a list by first separating src_list into items using
the separator character. For each item in the list, check if it matches include_re. If it does, then add it to the list
to be returned. If opt_replace is not the empty string, then apply the replacement before adding the item to the
returned list.
list_re_group(src_list, separator, include_re, search_re, group_1_template, ...)
class calibre.utils.formatter_functions.BuiltinListReGroup
list_re_group(src_list, separator, include_re, search_re, group_1_template, ...) – Like list_re except replacements
are not optional. It uses re_group(list_item, search_re, group_1_template, ...) when doing the replacements on
the resulting list.
list_sort(list, direction, separator)
class calibre.utils.formatter_functions.BuiltinListSort
list_sort(list, direction, separator) – return list sorted using a case-insensitive sort. If direction is zero, the list is
sorted ascending, otherwise descending. The list items are separated by separator, as are the items in the returned
list.
list_union(list1, list2, separator)
class calibre.utils.formatter_functions.BuiltinListUnion
list_union(list1, list2, separator) – return a list made by merging the items in list1 and list2, removing duplicate
items using a case-insensitive compare. If items differ in case, the one in list1 is used. The items in list1 and
list2 are separated by separator, as are the items in the returned list.
subitems(val, start_index, end_index)
class calibre.utils.formatter_functions.BuiltinSubitems
subitems(val, start_index, end_index) – This function is used to break apart lists of items such as genres. It interprets the value as a comma-separated list of items, where each item is a period-separated list. Returns a new
list made by first finding all the period-separated items, then for each such item extracting the start_index to
the end_index components, then combining the results back together. The first component in a period-separated
list has an index of zero. If an index is negative, then it counts from the end of the list. As a special case,
an end_index of zero is assumed to be the length of the list. Example using basic template mode and assuming a #genre value of “A.B.C”: {#genre:subitems(0,1)} returns “A”. {#genre:subitems(0,2)} returns “A.B”.
{#genre:subitems(1,0)} returns “B.C”. Assuming a #genre value of “A.B.C, D.E.F”, {#genre:subitems(0,1)}
returns “A, D”. {#genre:subitems(0,2)} returns “A.B, D.E”
172
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
sublist(val, start_index, end_index, separator)
class calibre.utils.formatter_functions.BuiltinSublist
sublist(val, start_index, end_index, separator) – interpret the value as a list of items separated by separator, returning a new list made from the start_index to the end_index item. The first item is number zero. If an index is negative, then it counts from the end of the list. As a special case, an end_index of zero is assumed to be the length
of the list. Examples using basic template mode and assuming that the tags column (which is comma-separated)
contains “A, B, C”: {tags:sublist(0,1„)} returns “A”. {tags:sublist(-1,0„)} returns “C”. {tags:sublist(0,-1„)} returns “A, B”.
Other
assign(id, val)
class calibre.utils.formatter_functions.BuiltinAssign
assign(id, val) – assigns val to id, then returns val. id must be an identifier, not an expression
print(a, b, ...)
class calibre.utils.formatter_functions.BuiltinPrint
print(a, b, ...) – prints the arguments to standard output. Unless you start calibre from the command line (calibredebug -g), the output will go to a black hole.
Recursion
eval(template)
class calibre.utils.formatter_functions.BuiltinEval
eval(template) – evaluates the template, passing the local variables (those ‘assign’ed to) instead of the book
metadata. This permits using the template processor to construct complex results from local variables. Because
the { and } characters are special, you must use [[ for the { character and ]] for the } character; they are converted
automatically. Note also that prefixes and suffixes (the |prefix|suffix syntax) cannot be used in the argument to
this function when using template program mode.
template(x)
class calibre.utils.formatter_functions.BuiltinTemplate
template(x) – evaluates x as a template. The evaluation is done in its own context, meaning that variables are
not shared between the caller and the template evaluation. Because the { and } characters are special, you
must use [[ for the { character and ]] for the } character; they are converted automatically. For example, template(‘[[title_sort]]’) will evaluate the template {title_sort} and return its value. Note also that prefixes and suffixes
(the |prefix|suffix syntax) cannot be used in the argument to this function when using template program mode.
Relational
cmp(x, y, lt, eq, gt)
class calibre.utils.formatter_functions.BuiltinCmp
cmp(x, y, lt, eq, gt) – compares x and y after converting both to numbers. Returns lt if x < y. Returns eq if x==
y. Otherwise returns gt.
1.9. Rehberler
173
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
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) – compares “val < cmpN” in sequence, returning resultN for the first comparison that succeeds. Returns else_result if no comparison succeeds. Example:
first_matching_cmp(10,5,”small”,10,”middle”,15,”large”,”giant”) returns “large”. The same example with a first
value of 16 returns “giant”.
strcmp(x, y, lt, eq, gt)
class calibre.utils.formatter_functions.BuiltinStrcmp
strcmp(x, y, lt, eq, gt) – does a case-insensitive comparison of x and y as strings. Returns lt if x < y. Returns eq
if x== y. Otherwise returns gt.
String case changes
capitalize(val)
class calibre.utils.formatter_functions.BuiltinCapitalize
capitalize(val) – return value of the field capitalized
lowercase(val)
class calibre.utils.formatter_functions.BuiltinLowercase
lowercase(val) – return value of the field in lower case
titlecase(val)
class calibre.utils.formatter_functions.BuiltinTitlecase
titlecase(val) – return value of the field in title case
uppercase(val)
class calibre.utils.formatter_functions.BuiltinUppercase
uppercase(val) – return value of the field in upper case
String manipulation
re(val, pattern, replacement)
class calibre.utils.formatter_functions.BuiltinRe
re(val, pattern, replacement) – return the field after applying the regular expression. All instances of pattern are
replaced with replacement. As in all of calibre, these are python-compatible regular expressions
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 reqular
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()]]”, “[[$]]”)’}
174
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
shorten(val, left chars, middle text, right chars)
class calibre.utils.formatter_functions.BuiltinShorten
shorten(val, left chars, middle text, right chars) – Return a shortened version of the field, consisting of left chars
characters from the beginning of the field, followed by middle text, followed by right chars characters from
the end of the string. Left chars and right chars must be integers. For example, assume the title of the book is
Ancient English Laws in the Times of Ivanhoe, and you want it to fit in a space of at most 15 characters. If you
use {title:shorten(9,-,5)}, the result will be Ancient E-nhoe. If the field’s length is less than left chars + right
chars + the length of middle text, then the field will be used intact. For example, the title The Dome would not
be changed.
strcat(a, b, ...)
class calibre.utils.formatter_functions.BuiltinStrcat
strcat(a, b, ...) – can take any number of arguments. Returns a string formed by concatenating all the arguments
strcat_max(max, string1, prefix2, string2, ...)
class calibre.utils.formatter_functions.BuiltinStrcatMax
strcat_max(max, string1, prefix2, string2, ...) – Returns a string formed by concatenating the arguments. The
returned value is initialized to string1. Prefix, string pairs are added to the end of the value as long as the
resulting string length is less than max. String1 is returned even if string1 is longer than max. You can pass as
many prefix, string pairs as you wish.
strlen(a)
class calibre.utils.formatter_functions.BuiltinStrlen
strlen(a) – Returns the length of the string passed as the argument
substr(str, start, end)
class calibre.utils.formatter_functions.BuiltinSubstr
substr(str, start, end) – returns the start’th through the end’th characters of str. The first character in str is the
zero’th character. If end is negative, then it indicates that many characters counting from the right. If end is zero,
then it indicates the last character. For example, substr(‘12345’, 1, 0) returns ‘2345’, and substr(‘12345’, 1, -1)
returns ‘234’.
swap_around_comma(val)
class calibre.utils.formatter_functions.BuiltinSwapAroundComma
swap_around_comma(val) – given a value of the form “B, A”, return “A B”. This is most useful for converting
names in LN, FN format to FN LN. If there is no comma, the function returns val unchanged
transliterate(a)
class calibre.utils.formatter_functions.BuiltinTransliterate
transliterate(a) – Returns a string in a latin alphabet formed by approximating the sound of the words in the
source string. For example, if the source is “Фёдор Михaйлович Достоевский” the function returns “Fiodor
Mikhailovich Dostoievskii”.
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
1.9. Rehberler
175
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
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 194) 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 195).
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> at 0x7f74d42348c0>)
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.
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.
176
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
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{}}
\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{}}
\PY
\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}{,}
1.9. Rehberler
177
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
\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}{)}
\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}{)}
178
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
\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}{)}
\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¸sık s¸ablon programları için, bazen s¸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 s¸ablona program: ile ba¸slayarak yapabilirsiniz. Bu
durumda, hiçbir s¸ablon i¸sleme yapılmaz. Özel de˘gi¸sken $ ayarlanmaz. Do˘gru sonucu üretmek programınıza kalmı¸stır.
program: kipinin bir avantajı, parantezlerin artık özel olmamasıdır. Örne˘gin template() fonksiyonunu kullanırken [[
ve ]] kullanmak zorunlu de˘gildir. Ba¸ska bir avantaj, program kipi s¸ablonların Python’a derlenmesi ve di˘ger iki kipteki
s¸ablonlardan oldukça hızlı çalı¸smasıdır. Hızdaki artı¸s s¸ablonlardaki karma¸sıklı˘ga ba˘glıdır; s¸ablon ne kadar karmas¸ıkla¸sırsa geli¸sme de o kadar fazla olur. Derleme compile_gpm_templates (Genel Program Kipi s¸ablonlarını
Python’a Derle) ile açılıp kapatılabilir. Derlemenin kapatılmasının ana sebebi derlenen s¸ablonun çalı¸smı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ı¸s hallerini kullanarak ba¸slı˘ga koy. Sonundaki makaleleri seri adından (varsa) çıkar.” Örne˘gin, Lord of the Rings
serisindeki The Two Towers kitabı için, reçete LotR [02] The Two Towers verir. Standart s¸ablonlar kullanarak, a¸sa˘gıda
açıklandı˘gı gibi, reçete üç özel sütun ve bir santrala ihtiyaç duyar:
Çözüm üç özel sütun olu¸sturmaya ihtiyaç duyar. ˙Ilk sütun sondaki makaleyi silmek içindir. ˙Ikinci ‘kısaltılmı¸s’ biçimi
hesaplamak için. Üçüncü de ‘ilk harfleri’ hesaplamak için. Bu üç sütuna sahip oldu˘gunuzda, santral aralarından seçim
yapar. Kitaplık görünümünde üç sütundan herhangi birini veya tümünü gizleyebilirsiniz.
˙Ilk sütun: ˙Isim: #stripped_series. Sablon:
¸
{series:re(^(A|The|An)s+,)||}
1.9. Rehberler
179
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
˙Ikinci sütun (kısaltılmı¸s biçim): ˙Isim: #shortened. Sablon:
¸
{#stripped_series:shorten(4,-,4)}
Üçüncü sütun (ilk harfler biçimi): ˙Isim: #initials. Sablon:
¸
{#stripped_series:re(([^s])[^s]+(s|$),1)}
Santral ifadesi: Sablon:{#stripped_series:lookup(.s,#initials,.,#shortened,series)}{series_index:0>2.0f|
¸
[|]
}{title} Hedef alan: ba¸slık
Bu alan kümesi ve santral s¸unu üretir: Seri: The Lord of the Rings Series indis: 2 Ba¸slık: The Two Towers
Çıktı: LotR [02] The Two Towers
Seri: Dahak Series indis: 1 Ba¸slık: Mutineers Moon Çıktı: Dahak [01] Mutineers Moon
Seri: Berserkers Series ˙Indis: 4 Ba¸slık: Berserker Throne Çıkıt: Bers-kers [04] Berserker Throne
Seri: Meg Langslow Mysteries Series ˙Indis: 3 Ba¸slık: Revenge of the Wrought-Iron Flamingos Çıktı:
MLM [03] Revenge of the Wrought-Iron Flamingos
A¸sa˘gıdaki program özel ba¸slık de˘gerini 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 s¸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˘ginden 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˘gi zorluk artı¸sına deyip deymeyece˘gi
180
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
tartı¸sılır.
Kullanıcı-tanımlı Sablon
¸
Fonksiyonları
Sablon
¸
i¸slemcisine kendi fonksiyonlarınızı ekleyebilirsiniz. Bu fonksiyonlar python ile yazılır, ve her üç s¸ablon programlama kipinde de kullanılabilir. Fonksiyonlar Seçenekler -> Geli¸smi¸s -> Sablon
¸
Fonksiyonları ile eklenebilirler.
Yönergeler bu ileti¸sim penceresinde gösterilir.
Kayıt et/gönder sablonları
¸
ile ilgili özel notlar
Bir s¸ablon diske kaydet veya aygıta gönder s¸ablonu ile kullanıldı˘gında özel i¸slemler uygulanır. Alanların de˘gerleri
temizlenir, dosya sistemine özel karakterler alt çizgiler ile de˘gi¸stirilir, yatık çizgiler dahil. Bunun anlamı alan metni
kullanılarak klasör olu¸sturulamayaca˘gıdır. Ancak yatık çizgiler ön ek veya son ek karakter dizilerinden de˘gi¸stirilmezler, yani bu karakter dizilerindeki yatık çizgiler klasörlerin olu¸sturulmasına sebep olur. Bu sebepten, de˘gi¸sken derinlikli
klasör yapıları olu¸sturabilirsiniz.
Örne˘gin, series/series_index - title dizin yapısını istedi˘gimizi varsayın, series’in olmama durumunda, ba¸slık en üst
klasörde olmalıdır. Bunu yapan s¸ablon s¸u s¸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¸s de˘gilken görülür.
Arama fonksiyonu daha da ince i¸slemler yapmamıza olanak verir. Örne˘gin, bir kitabın serisi varsa, series/series index
- title.fmt s¸eklinde bir dizin yapısı istedi˘gimizi varsayalım. Kitabın serisi yoksa da genre/author_sort/title.fmt. Kitabın
türü de yoksa, ‘Unknown’ kullanmak istiyoruz. Serinin de˘gerine ba˘glı olarak, iki tane tamamen de˘gi¸sik yol istiyoruz.
Bunu elde etmek için:
1. {series}/{series_index} - {title’} içeren bir bile¸sik alan (AA diyelim) olu¸stururuz. Seri
bo¸s de˘gilse, bu s¸ablon series/series_index - title üretecektir.
2. {#genre:ifempty(Unknown)}/{author_sort}/{title} içeren bir bile¸sik alan olu¸stururuz
(BB diyelim). Bu s¸ablon bo¸s bir türün ‘Unknown’ ile yer de˘gi¸stirece˘gi genre/author_sort/title olu¸sturur.
3. Kayıt s¸ablonunu {series:lookup(.,AA,BB)} olarak ayarlayın. Bu s¸ablon seri bo¸s de˘gilse bile¸sik
alan AA’yı, bo¸ssa BB’yi seçer. Yani serinin bo¸s olup olmamasına ba˘glı iki tamamen de˘gi¸sik kayıt yolumuz
olmu¸s oldu.
Sablonlar
¸
ve Santrallar
Santraller kitaba yazılan metadata’yı diske kaydetme ve aygıta gönderme i¸slemlerinde de˘gi¸stirmeye yarar. Bir santral
size kitabın metadata’sına yazılacak veriyi sa˘glayan s¸ablonu belirtme izni verir. Santraller kullanarak s¸u alanları deg˘ i¸stirebilirsiniz: 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˘gi¸sik metadata kullanarak çözmek isteyen insanlara yardımcı olur.
Bir santral olu¸sturdu˘gunuzda, santralin kullanılaca˘gı 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˘glanır. Biçim ve aygıtı seçti˘ginizde yeni de˘gerleri
sa˘glayacak s¸ablonları sa˘glar ve de˘gi¸stirilecek metadata alanlarını seçersiniz. Bu s¸ablonlar hedef alanlarına ba˘glıdırlar,
santral adı da burdan gelir. Tabi ki bu s¸ablonlarda bile¸sik sütunlar kullanabilirsiniz.
Bir santralin uygulanaca˘gı durumda (içerik sunucusu, diske kaydet, veya aygıta gönder), calibre verilen biçim ve aygıt
için do˘gru olanı tanımlı santraller içinden arar. Örne˘gin, ANDROID aygıta gönderilen bir EPUB kitap için uygun
santrali ararken, calibre santralleri a¸sa˘gıdaki arama sırasını kullanarak arar:
1.9. Rehberler
181
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
• biçim ve aygıtla birebir e¸sle¸sen bir santral, örn., EPUB ve ANDROID
• biçim ve özel any device seçimi ile birebir e¸sle¸sen bir santral, örn., EPUB ve any device
• özel any format seçimi ve aygıtla birebir e¸sle¸smeli bir santral, örn., any format ve ANDROID
• any format ve any device olan bir santral
Etiket ve yazar alanları özel i¸slem gerektirir, çünkü her iki alan da birden fazla ö˘ge tutabilir. Bir kitabın birden çok
etiketi ve yazarı olabilir. Bu iki alandan birinin de˘gi¸sece˘gini belirtti˘ginizde, s¸ablonun sonucu birden fazla ö˘genin
orada olup olmadı˘gı hususunda incelenir. Etiketler için, sonuç, calibre’nin virgül buldu˘gu yerlerden kesilerek ayrılır.
Örne˘gin, s¸ablon Thriller, Horror de˘gerini üretiyorsa, sonuç iki etiket olur Thriller ve Horror. Etiketin
ortasına virgül koymanın bir yolu yoktur.
Aynı s¸ey yazarlar için de geçerlidir, ama ayırma için virgül yerine & (ampersand) karakteri kullanılır. Örne˘gin, s¸ablon Blogs, Joe&Posts, Susan de˘gerini üretiyorsa, kitap iki yazarı var olarak sonlanacaktır, Blogs, Joe
ve Posts, Susan. Sablon
¸
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¸sturmakta kullanılan metadata’yı etkilemezler. Bunun
yerine, dosya isimleri, uygun seçenekler penceresinde girilen s¸ablonlar kullanılarak olu¸stururlur.
Yardımcı ˙Ipuçları
Su
¸ ipuçlarını faydalı bulabilirsiniz.
• Sablonları
¸
test etmek için özel bir bile¸sik sütun olu¸sturun. Sütunu olu¸sturdu˘gunuzda, sütuna çift tıklayarak
s¸ablonunu de˘gi¸stirebilirsiniz. Test etmedi˘ginizde sütunu gizleyin.
• Sablonlar
¸
bir bile¸sik özel sütuna referans vererek di˘ger s¸ablonları kullanabilirler.
• Bir santralde, özel s¸ablon {} kullanarak bir alanı bo¸s olarak ayarlayabilirsiniz (ya da bo¸sla e¸s de˘ger neyse). Bu
s¸ablon her zaman bo¸s karakter dizisi olarak de˘gerlenecektir.
• Yukarıda sıfır de˘geri olsa bile sayıları göstermeye yarayan teknik standart alan series_index ile de çalı¸sır.
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.
182
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
• Arithmetic (sayfa 184)
– add(x, y) (sayfa 184)
– divide(x, y) (sayfa 184)
– multiply(x, y) (sayfa 184)
– subtract(x, y) (sayfa 184)
• Boolean (sayfa 184)
– and(value, value, ...) (sayfa 184)
– not(value) (sayfa 184)
– or(value, value, ...) (sayfa 184)
• Date functions (sayfa 184)
– days_between(date1, date2) (sayfa 184)
– today() (sayfa 184)
• Formatting values (sayfa 185)
– finish_formatting(val, fmt, prefix, suffix) (sayfa 185)
– format_date(val, format_string) (sayfa 185)
– format_number(v, template) (sayfa 185)
– human_readable(v) (sayfa 185)
• Get values from metadata (sayfa 185)
– approximate_formats() (sayfa 185)
– author_links(val_separator, pair_separator) (sayfa 185)
– author_sorts(val_separator) (sayfa 186)
– booksize() (sayfa 186)
– current_library_name() (sayfa 186)
– current_library_path() (sayfa 186)
– field(name) (sayfa 186)
– formats_modtimes(date_format) (sayfa 186)
– formats_paths() (sayfa 186)
– formats_sizes() (sayfa 187)
– has_cover() (sayfa 187)
– language_codes(lang_strings) (sayfa 187)
– language_strings(lang_codes, localize) (sayfa 187)
– ondevice() (sayfa 187)
– raw_field(name) (sayfa 187)
– raw_list(name, separator) (sayfa 187)
– series_sort() (sayfa 187)
– user_categories() (sayfa 187)
– virtual_libraries() (sayfa 188)
• If-then-else (sayfa 188)
– contains(val, pattern, text if match, text if not match) (sayfa 188)
– ifempty(val, text if empty) (sayfa 188)
– test(val, text if not empty, text if empty) (sayfa 188)
• Iterating over values (sayfa 188)
– first_non_empty(value, value, ...) (sayfa 188)
– lookup(val, pattern, field, pattern, field, ..., else_field) (sayfa 188)
– switch(val, pattern, value, pattern, value, ..., else_value) (sayfa 188)
• List lookup (sayfa 188)
– identifier_in_list(val, id, found_val, not_found_val) (sayfa 189)
– in_list(val, separator, pattern, found_val, not_found_val) (sayfa 189)
– list_item(val, index, separator) (sayfa 189)
– select(val, key) (sayfa 189)
– str_in_list(val, separator, string, found_val, not_found_val) (sayfa 189)
• List manipulation (sayfa 189)
– count(val, separator) (sayfa 189)
– list_difference(list1, list2, separator) (sayfa 189)
– list_equals(list1, sep1, list2, sep2, yes_val, no_val) (sayfa 190)
– list_intersection(list1, list2, separator) (sayfa 190)
1.9. Rehberler
– list_re(src_list, separator, include_re, opt_replace) (sayfa 190)
– list_re_group(src_list, separator, include_re, search_re, group_1_template, ...) (sayfa 190)
– list_sort(list, direction, separator) (sayfa 190)
– list_union(list1, list2, separator) (sayfa 190)
183
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Arithmetic
add(x, y)
class calibre.utils.formatter_functions.BuiltinAdd
add(x, y) – returns x + y. Throws an exception if either x or y are not numbers.
divide(x, y)
class calibre.utils.formatter_functions.BuiltinDivide
divide(x, y) – returns x / y. Throws an exception if either x or y are not numbers.
multiply(x, y)
class calibre.utils.formatter_functions.BuiltinMultiply
multiply(x, y) – returns x * y. Throws an exception if either x or y are not numbers.
subtract(x, y)
class calibre.utils.formatter_functions.BuiltinSubtract
subtract(x, y) – returns x - y. Throws an exception if either x or y are not numbers.
Boolean
and(value, value, ...)
class calibre.utils.formatter_functions.BuiltinAnd
and(value, value, ...) – returns the string “1” if all values are not empty, otherwise returns the empty string. This
function works well with test or first_non_empty. You can have as many values as you want.
not(value)
class calibre.utils.formatter_functions.BuiltinNot
not(value) – returns the string “1” if the value is empty, otherwise returns the empty string. This function works
well with test or first_non_empty. You can have as many values as you want.
or(value, value, ...)
class calibre.utils.formatter_functions.BuiltinOr
or(value, value, ...) – returns the string “1” if any value is not empty, otherwise returns the empty string. This
function works well with test or first_non_empty. You can have as many values as you want.
Date functions
days_between(date1, date2)
class calibre.utils.formatter_functions.BuiltinDaysBetween
days_between(date1, date2) – return the number of days between date1 and date2. The number is positive if
date1 is greater than date2, otherwise negative. If either date1 or date2 are not dates, the function returns the
empty string.
today()
class calibre.utils.formatter_functions.BuiltinToday
today() – return a date string for today. This value is designed for use in format_date or days_between, but can
be manipulated like any other string. The date is in ISO format.
184
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Formatting values
finish_formatting(val, fmt, prefix, suffix)
class calibre.utils.formatter_functions.BuiltinFinishFormatting
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| - |- }. For example, the following program produces the same output
as the above template: program: finish_formatting(field(“series_index”), “05.2f”, ” - ”, ” - ”)
format_date(val, format_string)
class calibre.utils.formatter_functions.BuiltinFormatDate
format_date(val, format_string) – format the value, which must be a date, using the format_string, returning a
string. The formatting codes are: d : the day as number without a leading zero (1 to 31) dd : the day as number
with a leading zero (01 to 31) ddd : the abbreviated localized day name (e.g. “Mon” to “Sun”). dddd : the long
localized day name (e.g. “Monday” to “Sunday”). M : the month as number without a leading zero (1 to 12).
MM : the month as number with a leading zero (01 to 12) MMM : the abbreviated localized month name (e.g.
“Jan” to “Dec”). MMMM : the long localized month name (e.g. “January” to “December”). yy : the year as two
digit number (00 to 99). yyyy : the year as four digit number. h : the hours without a leading 0 (0 to 11 or 0 to 23,
depending on am/pm) hh : the hours with a leading 0 (00 to 11 or 00 to 23, depending on am/pm) m : the minutes
without a leading 0 (0 to 59) mm : the minutes with a leading 0 (00 to 59) s : the seconds without a leading 0 (0
to 59) ss : the seconds with a leading 0 (00 to 59) ap : use a 12-hour clock instead of a 24-hour clock, with “ap”
replaced by the localized string for am or pm AP : use a 12-hour clock instead of a 24-hour clock, with “AP”
replaced by the localized string for AM or PM iso : the date with time and timezone. Must be the only format
present
format_number(v, template)
class calibre.utils.formatter_functions.BuiltinFormatNumber
format_number(v, template) – format the number v using a python formatting template such as “{0:5.2f}”
or “{0:,d}” or “${0:5,.2f}”. The field_name part of the template must be a 0 (zero) (the “{0:” in the above
examples). See the template language and python documentation for more examples. Returns the empty string
if formatting fails.
human_readable(v)
class calibre.utils.formatter_functions.BuiltinHumanReadable
human_readable(v) – return a string representing the number v in KB, MB, GB, etc.
Get values from metadata
approximate_formats()
class calibre.utils.formatter_functions.BuiltinApproximateFormats
approximate_formats() – return a comma-separated list of formats that at one point were associated with the
book. There is no guarantee that this list is correct, although it probably is. This function can be called in
template program mode using the template “{:’approximate_formats()’}”. Note that format names are always
uppercase, as in EPUB. This function works only in the GUI. If you want to use these values in save-to-disk or
send-to-device templates then you must make a custom “Column built from other columns”, use the function in
that column’s template, and use that column’s value in your save/send templates
author_links(val_separator, pair_separator)
1.9. Rehberler
185
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
class calibre.utils.formatter_functions.BuiltinAuthorLinks
author_links(val_separator, pair_separator) – returns a string containing a list of authors and that author’s link
values in the form author1 val_separator author1link pair_separator author2 val_separator author2link etc. An
author is separated from its link value by the val_separator string with no added spaces. author:linkvalue pairs
are separated by the pair_separator string argument with no added spaces. It is up to you to choose separator
strings that do not occur in author names or links. An author is included even if the author link is empty.
author_sorts(val_separator)
class calibre.utils.formatter_functions.BuiltinAuthorSorts
author_sorts(val_separator) – returns a string containing a list of author’s sort values for the authors of the book.
The sort is the one in the author metadata (different from the author_sort in books). The returned list has the
form author sort 1 val_separator author sort 2 etc. The author sort values in this list are in the same order as the
authors of the book. If you want spaces around val_separator then include them in the separator string
booksize()
class calibre.utils.formatter_functions.BuiltinBooksize
booksize() – return value of the size field. This function works only in the GUI. If you want to use this value in
save-to-disk or send-to-device templates then you must make a custom “Column built from other columns”, use
the function in that column’s template, and use that column’s value in your save/send templates
current_library_name()
class calibre.utils.formatter_functions.BuiltinCurrentLibraryName
current_library_name() – return the last name on the path to the current calibre library. This function can be
called in template program mode using the template “{:’current_library_name()’}”.
current_library_path()
class calibre.utils.formatter_functions.BuiltinCurrentLibraryPath
current_library_path() – return the path to the current calibre library. This function can be called in template
program mode using the template “{:’current_library_path()’}”.
field(name)
class calibre.utils.formatter_functions.BuiltinField
field(name) – returns the metadata field named by name
formats_modtimes(date_format)
class calibre.utils.formatter_functions.BuiltinFormatsModtimes
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()
class calibre.utils.formatter_functions.BuiltinFormatsPaths
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.
186
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
formats_sizes()
class calibre.utils.formatter_functions.BuiltinFormatsSizes
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()
class calibre.utils.formatter_functions.BuiltinHasCover
has_cover() – return Yes if the book has a cover, otherwise return the empty string
language_codes(lang_strings)
class calibre.utils.formatter_functions.BuiltinLanguageCodes
language_codes(lang_strings) – return the language codes for the strings passed in lang_strings. The strings
must be in the language of the current locale. Lang_strings is a comma-separated list.
language_strings(lang_codes, localize)
class calibre.utils.formatter_functions.BuiltinLanguageStrings
language_strings(lang_codes, localize) – return the strings for the language codes passed in lang_codes. If localize is zero, return the strings in English. If localize is not zero, return the strings in the language of the current
locale. Lang_codes is a comma-separated list.
ondevice()
class calibre.utils.formatter_functions.BuiltinOndevice
ondevice() – return Yes if ondevice is set, otherwise return the empty string. This function works only in the
GUI. If you want to use this value in save-to-disk or send-to-device templates then you must make a custom
“Column built from other columns”, use the function in that column’s template, and use that column’s value in
your save/send templates
raw_field(name)
class calibre.utils.formatter_functions.BuiltinRawField
raw_field(name) – returns the metadata field named by name without applying any formatting.
raw_list(name, separator)
class calibre.utils.formatter_functions.BuiltinRawList
raw_list(name, separator) – returns the metadata list named by name without applying any formatting or sorting
and with items separated by separator.
series_sort()
class calibre.utils.formatter_functions.BuiltinSeriesSort
series_sort() – return the series sort value
user_categories()
class calibre.utils.formatter_functions.BuiltinUserCategories
user_categories() – return a comma-separated list of the user categories that contain this book. This function
works only in the GUI. If you want to use these values in save-to-disk or send-to-device templates then you
must make a custom “Column built from other columns”, use the function in that column’s template, and use
that column’s value in your save/send templates
1.9. Rehberler
187
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
virtual_libraries()
class calibre.utils.formatter_functions.BuiltinVirtualLibraries
virtual_libraries() – return a comma-separated list of virtual libraries that contain this book. This function works
only in the GUI. If you want to use these values in save-to-disk or send-to-device templates then you must make
a custom “Column built from other columns”, use the function in that column’s template, and use that column’s
value in your save/send templates
If-then-else
contains(val, pattern, text if match, text if not match)
class calibre.utils.formatter_functions.BuiltinContains
contains(val, pattern, text if match, text if not match) – checks if field contains matches for the regular expression
pattern. Returns text if match if matches are found, otherwise it returns text if no match
ifempty(val, text if empty)
class calibre.utils.formatter_functions.BuiltinIfempty
ifempty(val, text if empty) – return val if val is not empty, otherwise return text if empty
test(val, text if not empty, text if empty)
class calibre.utils.formatter_functions.BuiltinTest
test(val, text if not empty, text if empty) – return text if not empty if the field is not empty, otherwise return text
if empty
Iterating over values
first_non_empty(value, value, ...)
class calibre.utils.formatter_functions.BuiltinFirstNonEmpty
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.
lookup(val, pattern, field, pattern, field, ..., else_field)
class calibre.utils.formatter_functions.BuiltinLookup
lookup(val, pattern, field, pattern, field, ..., else_field) – like switch, except the arguments are field (metadata)
names, not text. The value of the appropriate field will be fetched and used. Note that because composite columns
are fields, you can use this function in one composite field to use the value of some other composite field. This
is extremely useful when constructing variable save paths
switch(val, pattern, value, pattern, value, ..., else_value)
class calibre.utils.formatter_functions.BuiltinSwitch
switch(val, pattern, value, pattern, value, ..., else_value) – for each pattern, value pair, checks if the field matches
the regular expression pattern and if so, returns that value. If no pattern matches, then else_value is returned.
You can have as many pattern, value pairs as you want
List lookup
188
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
identifier_in_list(val, id, found_val, not_found_val)
class calibre.utils.formatter_functions.BuiltinIdentifierInList
identifier_in_list(val, id, found_val, not_found_val) – treat val as a list of identifiers separated by commas, comparing the string against each value in the list. An identifier has the format “identifier:value”. The id parameter
should be either “id” or “id:regexp”. The first case matches if there is any identifier with that id. The second
case matches if the regexp matches the identifier’s value. If there is a match, return found_val, otherwise return
not_found_val.
in_list(val, separator, pattern, found_val, not_found_val)
class calibre.utils.formatter_functions.BuiltinInList
in_list(val, separator, pattern, found_val, not_found_val) – treat val as a list of items separated by separator,
comparing the pattern against each value in the list. If the pattern matches a value, return found_val, otherwise
return not_found_val.
list_item(val, index, separator)
class calibre.utils.formatter_functions.BuiltinListitem
list_item(val, index, separator) – interpret the value as a list of items separated by separator, returning the
index‘th item. The first item is number zero. The last item can be returned using ‘list_item(-1,separator). If the
item is not in the list, then the empty value is returned. The separator has the same meaning as in the count
function.
select(val, key)
class calibre.utils.formatter_functions.BuiltinSelect
select(val, key) – interpret the value as a comma-separated list of items, with the items being “id:value”. Find
the pair with the id equal to key, and return the corresponding value.
str_in_list(val, separator, string, found_val, not_found_val)
class calibre.utils.formatter_functions.BuiltinStrInList
str_in_list(val, separator, string, found_val, not_found_val) – treat val as a list of items separated by separator,
comparing the string against each value in the list. If the string matches a value, return found_val, otherwise
return not_found_val. If the string contains separators, then it is also treated as a list and each value is checked.
List manipulation
count(val, separator)
class calibre.utils.formatter_functions.BuiltinCount
count(val, separator) – interprets the value as a list of items separated by separator, returning the number of items
in the list. Most lists use a comma as the separator, but authors uses an ampersand. Examples: {tags:count(,)},
{authors:count(&)}
list_difference(list1, list2, separator)
class calibre.utils.formatter_functions.BuiltinListDifference
list_difference(list1, list2, separator) – return a list made by removing from list1 any item found in list2, using a
case-insensitive compare. The items in list1 and list2 are separated by separator, as are the items in the returned
list.
1.9. Rehberler
189
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
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) – return yes_val if list1 and list2 contain the same items,
otherwise return no_val. The items are determined by splitting each list using the appropriate separator character
(sep1 or sep2). The order of items in the lists is not relevant. The compare is case insensitive.
list_intersection(list1, list2, separator)
class calibre.utils.formatter_functions.BuiltinListIntersection
list_intersection(list1, list2, separator) – return a list made by removing from list1 any item not found in list2,
using a case-insensitive compare. The items in list1 and list2 are separated by separator, as are the items in the
returned list.
list_re(src_list, separator, include_re, opt_replace)
class calibre.utils.formatter_functions.BuiltinListRe
list_re(src_list, separator, include_re, opt_replace) – Construct a list by first separating src_list into items using
the separator character. For each item in the list, check if it matches include_re. If it does, then add it to the list
to be returned. If opt_replace is not the empty string, then apply the replacement before adding the item to the
returned list.
list_re_group(src_list, separator, include_re, search_re, group_1_template, ...)
class calibre.utils.formatter_functions.BuiltinListReGroup
list_re_group(src_list, separator, include_re, search_re, group_1_template, ...) – Like list_re except replacements
are not optional. It uses re_group(list_item, search_re, group_1_template, ...) when doing the replacements on
the resulting list.
list_sort(list, direction, separator)
class calibre.utils.formatter_functions.BuiltinListSort
list_sort(list, direction, separator) – return list sorted using a case-insensitive sort. If direction is zero, the list is
sorted ascending, otherwise descending. The list items are separated by separator, as are the items in the returned
list.
list_union(list1, list2, separator)
class calibre.utils.formatter_functions.BuiltinListUnion
list_union(list1, list2, separator) – return a list made by merging the items in list1 and list2, removing duplicate
items using a case-insensitive compare. If items differ in case, the one in list1 is used. The items in list1 and
list2 are separated by separator, as are the items in the returned list.
subitems(val, start_index, end_index)
class calibre.utils.formatter_functions.BuiltinSubitems
subitems(val, start_index, end_index) – This function is used to break apart lists of items such as genres. It interprets the value as a comma-separated list of items, where each item is a period-separated list. Returns a new
list made by first finding all the period-separated items, then for each such item extracting the start_index to
the end_index components, then combining the results back together. The first component in a period-separated
list has an index of zero. If an index is negative, then it counts from the end of the list. As a special case,
an end_index of zero is assumed to be the length of the list. Example using basic template mode and assuming a #genre value of “A.B.C”: {#genre:subitems(0,1)} returns “A”. {#genre:subitems(0,2)} returns “A.B”.
{#genre:subitems(1,0)} returns “B.C”. Assuming a #genre value of “A.B.C, D.E.F”, {#genre:subitems(0,1)}
returns “A, D”. {#genre:subitems(0,2)} returns “A.B, D.E”
190
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
sublist(val, start_index, end_index, separator)
class calibre.utils.formatter_functions.BuiltinSublist
sublist(val, start_index, end_index, separator) – interpret the value as a list of items separated by separator, returning a new list made from the start_index to the end_index item. The first item is number zero. If an index is negative, then it counts from the end of the list. As a special case, an end_index of zero is assumed to be the length
of the list. Examples using basic template mode and assuming that the tags column (which is comma-separated)
contains “A, B, C”: {tags:sublist(0,1„)} returns “A”. {tags:sublist(-1,0„)} returns “C”. {tags:sublist(0,-1„)} returns “A, B”.
Other
assign(id, val)
class calibre.utils.formatter_functions.BuiltinAssign
assign(id, val) – assigns val to id, then returns val. id must be an identifier, not an expression
print(a, b, ...)
class calibre.utils.formatter_functions.BuiltinPrint
print(a, b, ...) – prints the arguments to standard output. Unless you start calibre from the command line (calibredebug -g), the output will go to a black hole.
Recursion
eval(template)
class calibre.utils.formatter_functions.BuiltinEval
eval(template) – evaluates the template, passing the local variables (those ‘assign’ed to) instead of the book
metadata. This permits using the template processor to construct complex results from local variables. Because
the { and } characters are special, you must use [[ for the { character and ]] for the } character; they are converted
automatically. Note also that prefixes and suffixes (the |prefix|suffix syntax) cannot be used in the argument to
this function when using template program mode.
template(x)
class calibre.utils.formatter_functions.BuiltinTemplate
template(x) – evaluates x as a template. The evaluation is done in its own context, meaning that variables are
not shared between the caller and the template evaluation. Because the { and } characters are special, you
must use [[ for the { character and ]] for the } character; they are converted automatically. For example, template(‘[[title_sort]]’) will evaluate the template {title_sort} and return its value. Note also that prefixes and suffixes
(the |prefix|suffix syntax) cannot be used in the argument to this function when using template program mode.
Relational
cmp(x, y, lt, eq, gt)
class calibre.utils.formatter_functions.BuiltinCmp
cmp(x, y, lt, eq, gt) – compares x and y after converting both to numbers. Returns lt if x < y. Returns eq if x==
y. Otherwise returns gt.
1.9. Rehberler
191
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
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) – compares “val < cmpN” in sequence, returning resultN for the first comparison that succeeds. Returns else_result if no comparison succeeds. Example:
first_matching_cmp(10,5,”small”,10,”middle”,15,”large”,”giant”) returns “large”. The same example with a first
value of 16 returns “giant”.
strcmp(x, y, lt, eq, gt)
class calibre.utils.formatter_functions.BuiltinStrcmp
strcmp(x, y, lt, eq, gt) – does a case-insensitive comparison of x and y as strings. Returns lt if x < y. Returns eq
if x== y. Otherwise returns gt.
String case changes
capitalize(val)
class calibre.utils.formatter_functions.BuiltinCapitalize
capitalize(val) – return value of the field capitalized
lowercase(val)
class calibre.utils.formatter_functions.BuiltinLowercase
lowercase(val) – return value of the field in lower case
titlecase(val)
class calibre.utils.formatter_functions.BuiltinTitlecase
titlecase(val) – return value of the field in title case
uppercase(val)
class calibre.utils.formatter_functions.BuiltinUppercase
uppercase(val) – return value of the field in upper case
String manipulation
re(val, pattern, replacement)
class calibre.utils.formatter_functions.BuiltinRe
re(val, pattern, replacement) – return the field after applying the regular expression. All instances of pattern are
replaced with replacement. As in all of calibre, these are python-compatible regular expressions
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 reqular
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()]]”, “[[$]]”)’}
192
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
shorten(val, left chars, middle text, right chars)
class calibre.utils.formatter_functions.BuiltinShorten
shorten(val, left chars, middle text, right chars) – Return a shortened version of the field, consisting of left chars
characters from the beginning of the field, followed by middle text, followed by right chars characters from
the end of the string. Left chars and right chars must be integers. For example, assume the title of the book is
Ancient English Laws in the Times of Ivanhoe, and you want it to fit in a space of at most 15 characters. If you
use {title:shorten(9,-,5)}, the result will be Ancient E-nhoe. If the field’s length is less than left chars + right
chars + the length of middle text, then the field will be used intact. For example, the title The Dome would not
be changed.
strcat(a, b, ...)
class calibre.utils.formatter_functions.BuiltinStrcat
strcat(a, b, ...) – can take any number of arguments. Returns a string formed by concatenating all the arguments
strcat_max(max, string1, prefix2, string2, ...)
class calibre.utils.formatter_functions.BuiltinStrcatMax
strcat_max(max, string1, prefix2, string2, ...) – Returns a string formed by concatenating the arguments. The
returned value is initialized to string1. Prefix, string pairs are added to the end of the value as long as the
resulting string length is less than max. String1 is returned even if string1 is longer than max. You can pass as
many prefix, string pairs as you wish.
strlen(a)
class calibre.utils.formatter_functions.BuiltinStrlen
strlen(a) – Returns the length of the string passed as the argument
substr(str, start, end)
class calibre.utils.formatter_functions.BuiltinSubstr
substr(str, start, end) – returns the start’th through the end’th characters of str. The first character in str is the
zero’th character. If end is negative, then it indicates that many characters counting from the right. If end is zero,
then it indicates the last character. For example, substr(‘12345’, 1, 0) returns ‘2345’, and substr(‘12345’, 1, -1)
returns ‘234’.
swap_around_comma(val)
class calibre.utils.formatter_functions.BuiltinSwapAroundComma
swap_around_comma(val) – given a value of the form “B, A”, return “A B”. This is most useful for converting
names in LN, FN format to FN LN. If there is no comma, the function returns val unchanged
transliterate(a)
class calibre.utils.formatter_functions.BuiltinTransliterate
transliterate(a) – Returns a string in a latin alphabet formed by approximating the sound of the words in the
source string. For example, if the source is “Фёдор Михaйлович Достоевский” the function returns “Fiodor
Mikhailovich Dostoievskii”.
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
1.9. Rehberler
193
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
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 194) 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 195).
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> at 0x7f74d42348c0>)
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.
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.
194
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
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{}}
\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{}}
\PY
\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}{,}
1.9. Rehberler
195
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
\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}{)}
\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}{)}
196
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
\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}{)}
\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}
1.9.5 All about using regular expressions in calibre
Regular expressions are features used in many places in calibre to perform sophisticated manipulation of ebook content
and metadata. This tutorial is a gentle introduction to getting you started with using regular expressions in calibre.
1.9. Rehberler
197
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
˙
Içindekiler
•
•
•
•
•
•
•
•
•
•
•
•
•
First, a word of warning and a word of courage (sayfa 198)
Where in calibre can you use regular expressions? (sayfa 198)
What on earth is a regular expression? (sayfa 198)
Care to explain? (sayfa 199)
That doesn’t sound too bad. What’s next? (sayfa 199)
Hey, neat! This is starting to make sense! (sayfa 199)
Well, these special characters are very neat and all, but what if I wanted to match a dot or a question mark?
(sayfa 200)
So, what are the most useful sets? (sayfa 200)
But if I had a few varying strings I wanted to match, things get complicated? (sayfa 200)
You missed... (sayfa 201)
In the beginning, you said there was a way to make a regular expression case insensitive? (sayfa 201)
I think I’m beginning to understand these regular expressions now... how do I use them in calibre?
(sayfa 201)
– Conversions (sayfa 201)
– Kitap Ekleme (sayfa 202)
– Bulk editing metadata (sayfa 202)
Credits (sayfa 203)
First, a word of warning and a word of courage
This is, inevitably, going to be somewhat technical- after all, regular expressions are a technical tool for doing technical
stuff. I’m going to have to use some jargon and concepts that may seem complicated or convoluted. I’m going to try
to explain those concepts as clearly as I can, but really can’t do without using them at all. That being said, don’t
be discouraged by any jargon, as I’ve tried to explain everything new. And while regular expressions themselves may
seem like an arcane, black magic (or, to be more prosaic, a random string of mumbo-jumbo letters and signs), I promise
that they are not all that complicated. Even those who understand regular expressions really well have trouble reading
the more complex ones, but writing them isn’t as difficult- you construct the expression step by step. So, take a step
and follow me into the rabbit hole.
Where in calibre can you use regular expressions?
There are a few places calibre uses regular expressions. There’s the Search & Replace in conversion options, metadata
detection from filenames in the import settings and Search & Replace when editing the metadata of books in bulk. The
calibre book editor can also use regular expressions in its search and replace feature.
What on earth is a regular expression?
A regular expression is a way to describe sets of strings. A single regular expression can match a number of different
strings. This is what makes regular expression so powerful – they are a concise way of describing a potentially large
number of variations.
Not: I’m using string here in the sense it is used in programming languages: a string of one or more characters,
characters including actual characters, numbers, punctuation and so-called whitespace (linebreaks, tabulators etc.).
Please note that generally, uppercase and lowercase characters are not considered the same, thus “a” being a different
character from “A” and so forth. In calibre, regular expressions are case insensitive in the search bar, but not in the
conversion options. There’s a way to make every regular expression case insensitive, but we’ll discuss that later. It gets
complicated because regular expressions allow for variations in the strings it matches, so one expression can match
multiple strings, which is why people bother using them at all. More on that in a bit.
198
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Care to explain?
Well, that’s why we’re here. First, this is the most important concept in regular expressions: A string by itself is a
regular expression that matches itself. That is to say, if I wanted to match the string "Hello, World!" using
a regular expression, the regular expression to use would be Hello, World!. And yes, it really is that simple.
You’ll notice, though, that this only matches the exact string "Hello, World!", not e.g. "Hello, wOrld!" or
"hello, world!" or any other such variation.
That doesn’t sound too bad. What’s next?
Next is the beginning of the really good stuff. Remember where I said that regular expressions can match multiple
strings? This is were it gets a little more complicated. Say, as a somewhat more practical exercise, the ebook you
wanted to convert had a nasty footer counting the pages, like “Page 5 of 423”. Obviously the page number would rise
from 1 to 423, thus you’d have to match 423 different strings, right? Wrong, actually: regular expressions allow you
to define sets of characters that are matched: To define a set, you put all the characters you want to be in the set into
square brackets. So, for example, the set [abc] would match either the character “a”, “b” or “c”. Sets will always
only match one of the characters in the set. They “understand” character ranges, that is, if you wanted to match all the
lower case characters, you’d use the set [a-z] for lower- and uppercase characters you’d use [a-zA-Z] and so on.
Got the idea? So, obviously, using the expression Page [0-9] of 423 you’d be able to match the first 9 pages,
thus reducing the expressions needed to three: The second expression Page [0-9][0-9] of 423 would match
all two-digit page numbers, and I’m sure you can guess what the third expression would look like. Yes, go ahead.
Write it down.
Hey, neat! This is starting to make sense!
I was hoping you’d say that. But brace yourself, now it gets even better! We just saw that using sets, we could match
one of several characters at once. But you can even repeat a character or set, reducing the number of expressions
needed to handle the above page number example to one. Yes, ONE! Excited? You should be! It works like this: Some
so-called special characters, “+”, ”?” and “*”, repeat the single element preceding them. (Element means either a single
character, a character set, an escape sequence or a group (we’ll learn about those last two later)- in short, any single
entity in a regular expression.) These characters are called wildcards or quantifiers. To be more precise, ”?” matches
0 or 1 of the preceding element, “*” matches 0 or more of the preceding element and “+” matches 1 or more of the
preceding element. A few examples: The expression a? would match either “” (which is the empty string, not strictly
useful in this case) or “a”, the expression a* would match “”, “a”, “aa” or any number of a’s in a row, and, finally, the
expression a+ would match “a”, “aa” or any number of a’s in a row (Note: it wouldn’t match the empty string!). Same
deal for sets: The expression [0-9]+ would match every integer number there is! I know what you’re thinking, and
you’re right: If you use that in the above case of matching page numbers, wouldn’t that be the single one expression to
match all the page numbers? Yes, the expression Page [0-9]+ of 423 would match every page number in that
book!
Not: A note on these quantifiers: They generally try to match as much text as possible, so be careful when using
them. This is called “greedy behaviour”- I’m sure you get why. It gets problematic when you, say, try to match a tag.
Consider, for example, the string "<p class="calibre2">Title here</p>" and let’s say you’d want to
match the opening tag (the part between the first pair of angle brackets, a little more on tags later). You’d think that the
expression <p.*> would match that tag, but actually, it matches the whole string! (The character ”.” is another special
character. It matches anything except linebreaks, so, basically, the expression .* would match any single line you can
think of.) Instead, try using <p.*?> which makes the quantifier "*" non-greedy. That expression would only match
the first opening tag, as intended. There’s actually another way to accomplish this: The expression <p[^>]*> will
match that same opening tag- you’ll see why after the next section. Just note that there quite frequently is more than
one way to write a regular expression.
1.9. Rehberler
199
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Well, these special characters are very neat and all, but what if I wanted to match a dot or a question
mark?
You can of course do that: Just put a backslash in front of any special character and it is interpreted as the literal
character, without any special meaning. This pair of a backslash followed by a single character is called an escape
sequence, and the act of putting a backslash in front of a special character is called escaping that character. An escape
sequence is interpreted as a single element. There are of course escape sequences that do more than just escaping
special characters, for example "\t" means a tabulator. We’ll get to some of the escape sequences later. Oh, and by
the way, concerning those special characters: Consider any character we discuss in this introduction as having some
function to be special and thus needing to be escaped if you want the literal character.
So, what are the most useful sets?
Knew you’d ask. Some useful sets are [0-9] matching a single number, [a-z] matching a single lowercase letter,
[A-Z] matching a single uppercase letter, [a-zA-Z] matching a single letter and [a-zA-Z0-9] matching a single
letter or number. You can also use an escape sequence as shorthand:
=
{}=
{}@default
=0=1=2=0=1=2\PYGZbs{}d is equivalent to [
\PYGZbs{}s is equivalent to any whitespace
PYGZhy{}9]
Not: “Whitespace” is a term for anything that won’t be printed. These characters include space, tabulator, line feed,
form feed and carriage return.
As a last note on sets, you can also define a set as any character but those in the set. You do that by including the
character "^" as the very first character in the set. Thus, [^a] would match any character excluding “a”. That’s
called complementing the set. Those escape sequence shorthands we saw earlier can also be complemented: "\D"
means any non-number character, thus being equivalent to [^0-9]. The other shorthands can be complemented by,
you guessed it, using the respective uppercase letter instead of the lowercase one. So, going back to the example
<p[^>]*> from the previous section, now you can see that the character set it’s using tries to match any character
except for a closing angle bracket.
But if I had a few varying strings I wanted to match, things get complicated?
Fear not, life still is good and easy. Consider this example: The book you’re converting has “Title” written on every odd
page and “Author” written on every even page. Looks great in print, right? But in ebooks, it’s annoying. You can group
whole expressions in normal parentheses, and the character "|" will let you match either the expression to its right or
the one to its left. Combine those and you’re done. Too fast for you? Okay, first off, we group the expressions for odd
and even pages, thus getting (Title)(Author) as our two needed expressions. Now we make things simpler by
using the vertical bar ("|" is called the vertical bar character): If you use the expression (Title|Author) you’ll
either get a match for “Title” (on the odd pages) or you’d match “Author” (on the even pages). Well, wasn’t that easy?
You can, of course, use the vertical bar without using grouping parentheses, as well. Remember when I said that quantifiers repeat the element preceding them? Well, the vertical bar works a little differently: The expression “Title|Author”
will also match either the string “Title” or the string “Author”, just as the above example using grouping. The vertical
bar selects between the entire expression preceding and following it. So, if you wanted to match the strings “Calibre” and “calibre” and wanted to select only between the upper- and lowercase “c”, you’d have to use the expression
(c|C)alibre, where the grouping ensures that only the “c” will be selected. If you were to use c|Calibre, you’d
200
Bölüm 1. Bölümler
\PY
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
get a match on the string “c” or on the string “Calibre”, which isn’t what we wanted. In short: If in doubt, use grouping
together with the vertical bar.
You missed...
... wait just a minute, there’s one last, really neat thing you can do with groups. If you have a group that you previously
matched, you can use references to that group later in the expression: Groups are numbered starting with 1, and you
reference them by escaping the number of the group you want to reference, thus, the fifth group would be referenced
as \5. So, if you searched for ([^ ]+) \1 in the string “Test Test”, you’d match the whole string!
In the beginning, you said there was a way to make a regular expression case insensitive?
Yes, I did, thanks for paying attention and reminding me. You can tell calibre how you want certain things handled
by using something called flags. You include flags in your expression by using the special construct (?flags go
here) where, obviously, you’d replace “flags go here” with the specific flags you want. For ignoring case, the flag
is i, thus you include (?i) in your expression. Thus, test(?i) would match “Test”, “tEst”, “TEst” and any case
variation you could think of.
Another useful flag lets the dot match any character at all, including the newline, the flag s. If you want to use multiple
flags in an expression, just put them in the same statement: (?is) would ignore case and make the dot match all. It
doesn’t matter which flag you state first, (?si) would be equivalent to the above. By the way, good places for putting
flags in your expression would be either the very beginning or the very end. That way, they don’t get mixed up with
anything else.
I think I’m beginning to understand these regular expressions now... how do I use them in calibre?
Conversions
Let’s begin with the conversion settings, which is really neat. In the Search and Replace part, you can input a regexp
(short for regular expression) that describes the string that will be replaced during the conversion. The neat part is the
wizard. Click on the wizard staff and you get a preview of what calibre “sees” during the conversion process. Scroll
down to the string you want to remove, select and copy it, paste it into the regexp field on top of the window. If there
are variable parts, like page numbers or so, use sets and quantifiers to cover those, and while you’re at it, remember to
escape special characters, if there are some. Hit the button labeled Test and calibre highlights the parts it would replace
were you to use the regexp. Once you’re satisfied, hit OK and convert. Be careful if your conversion source has tags
like this example:
=
{}=
{}@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
(shamelessly ripped out of this thread87 ). You’d have to remove some of the tags as well. In this example, I’d recommend beginning with the tag <b class="calibre2">, now you have to end with the corresponding closing tag (opening tags are <tag>, closing tags are </tag>), which is simply the next </b> in this case. (Refer to a good HTML manual or ask in the forum if you are unclear on this point.) The opening tag can be described using <b.*?>, the closing tag using </b>, thus we could remove everything between those tags using
87 http://www.mobileread.com/forums/showthread.php?t=75594"
1.9. Rehberler
201
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
<b.*?>.*?</b>. But using this expression would be a bad idea, because it removes everything enclosed by <b>tags (which, by the way, render the enclosed text in bold print), and it’s a fair bet that we’ll remove portions of
the book in this way. Instead, include the beginning of the enclosed string as well, making the regular expression
<b.*?>\s*Generated\s+by\s+ABC\s+Amber\s+LIT.*?</b> The \s with quantifiers are included here
instead of explicitly using the spaces as seen in the string to catch any variations of the string that might occur. Remember to check what calibre will remove to make sure you don’t remove any portions you want to keep if you test a
new expression. If you only check one occurrence, you might miss a mismatch somewhere else in the text. Also note
that should you accidentally remove more or fewer tags than you actually wanted to, calibre tries to repair the damaged
code after doing the removal.
Kitap Ekleme
Another thing you can use regular expressions for is to extract metadata from filenames. You can find this feature in
the “Adding books” part of the settings. There’s a special feature here: You can use field names for metadata fields, for
example (?P<title>) would indicate that calibre uses this part of the string as book title. The allowed field names
are listed in the windows, together with another nice test field. An example: Say you want to import a whole bunch
of files named like Classical Texts: The Divine Comedy by Dante Alighieri.mobi. (Obviously, this is already in your library, since we all love classical italian poetry) or Science Fiction epics:
The Foundation Trilogy by Isaac Asimov.epub. This is obviously a naming scheme that calibre
won’t extract any meaningful data out of - its standard expression for extracting metadata is (?P<title>.+) (?P<author>[^_]+). A regular expression that works here would be [a-zA-Z]+: (?P<title>.+) by
(?P<author>.+). Please note that, inside the group for the metadata field, you need to use expressions to describe
what the field actually matches. And also note that, when using the test field calibre provides, you need to add the file
extension to your testing filename, otherwise you won’t get any matches at all, despite using a working expression.
Bulk editing metadata
The last part is regular expression search and replace in metadata fields. You can access this by selecting multiple
books in the library and using bulk metadata edit. Be very careful when using this last feature, as it can do Very Bad
Things to your library! Doublecheck that your expressions do what you want them to using the test fields, and only
mark the books you really want to change! In the regular expression search mode, you can search in one field, replace
the text with something and even write the result into another field. A practical example: Say your library contained
the books of Frank Herbert’s Dune series, named after the fashion Dune 1 - Dune, Dune 2 - Dune Messiah
and so on. Now you want to get Dune into the series field. You can do that by searching for (.*?) \d+ - .* in
the title field and replacing it with \1 in the series field. See what I did there? That’s a reference to the first group
you’re replacing the series field with. Now that you have the series all set, you only need to do another search for .*?
- in the title field and replace it with "" (an empty string), again in the title field, and your metadata is all neat and tidy.
Isn’t that great? By the way, instead of replacing the entire field, you can also append or prepend to the field, so, if you
wanted the book title to be prepended with series info, you could do that as well. As you by now have undoubtedly
noticed, there’s a checkbox labeled Case sensitive, so you won’t have to use flags to select behaviour here.
Well, that just about concludes the very short introduction to regular expressions. Hopefully I’ll have shown you
enough to at least get you started and to enable you to continue learning by yourself- a good starting point would be
the Python documentation for regexps88 .
One last word of warning, though: Regexps are powerful, but also really easy to get wrong. calibre provides really
great testing possibilities to see if your expressions behave as you expect them to. Use them. Try not to shoot yourself
in the foot. (God, I love that expression...) But should you, despite the warning, injure your foot (or any other body
parts), try to learn from it.
88 https://docs.python.org/2/library/re.html
202
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Credits
Thanks for helping with tips, corrections and such:
• ldolse
• kovidgoyal
• chaley
• dwanthny
• kacir
• Starson17
For more about regexps see The Python User Manual89 .
1.9.6 calibre içerik sunucusunu baska
¸
sunucularla bütünlestirmek
¸
Burada size calibre içerik sunucusunun ba¸ska bir sunucu ile nasıl bütünle¸stirilece˘gini gösterece˘giz. Bunun için en
yaygın neden SSL veya daha geli¸smi¸s bir kimlik do˘grulama yönteminin kullanılmasıdır. ˙Iki ana teknik bulunmaktadır: calibre içerik sunucusunu tek ba¸sına çalı¸san bir süreç olarak çalı¸stırmak ve ana sunucunuza ba˘glanmak için ters
vekil sunucu kullanmak veya içerik sunucusunu ana sunucunuzun içerisinde WSGI ile bir süreç olarak çalı¸stırmak.
A¸sa˘gıdaki örneklerin tümü Linux üzerinde Apache 2.x sürümleri için geçerli olsa da kolaylıkla di˘ger platformlara
uyarlanabilirler.
˙
Içindekiler
• Ters vekil sunucu kullanmak (sayfa 203)
• Uygulama içinde (sayfa 204)
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¸stirmek için u˘gra¸smadan normal
bir s¸ekilde çalı¸stıraca˘gınız ve ana sunucunuzun sa˘gladı˘gı kimlik do˘grulama sisteminden faydalanabilece˘giniz anlamına
gelir. Bu calibre kurulumuna ilave biçbir dı¸s ba˘gımlılık veya sistem bütünle¸stirmesi ihtiyacı ile u˘gra¸smayaca˘gınız
en basit yakla¸sımdır. A¸sa˘gıda ana sunucunuz olarak Apache kullanıldı˘gında bu i¸slemin nasıl yapıldı˘gının bir örne˘gi
bulunmaktaysa da Ters Vekil Sunucu destekli her sunucu ile çalı¸sacaktır.
˙Ilk olarak calibre içerik sunucusunu a¸sa˘gıdaki gibi ba¸slatı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˘
gı anlamına gelir. Bunu görmek için
tarayıcınıza ‘‘http://localhost:8080/calibre yazın. Normal içeri˘ginizin web sayfasında
göründü˘günü ama artık /calibre dizininde bulundu˘gunu göreceksiniz.
89 https://docs.python.org/2/library/re.html
1.9. Rehberler
203
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Simdi
¸
ana sunucunuz olarak Apache kullandı˘gınızı dü¸sünelim. Önce Apache vekil sunucu modüllerini httpd.conf
dosyasına a¸sa˘gıdakileri ekleyerek etkinle¸stirin:
=
{}=
{}@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¸stirilece˘gi Apache kurulumunuza ba˘glıdır. Bir defa vekil sunucu modüllerini etkinle¸stirdi˘ginizde a¸sa˘gı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¸sabilirsiniz.
Yukarıdaki kurallar /calibre dizini altındaki tüm istekleri calibre sunucunuzun 8080 portuna iletir ve yukarıdaki –urlprefix seçene˘gi sayesinde calibre sunucusu onları s¸effaf olarak i¸sler.
Not: E˘ger 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ı˘gı sunucu motoru, CherryPy, vekil sunucu ve KeepAlive istekleri ile sorun ya¸sayabilece˘ginden onları yukarıda gösterildi˘gi 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ı¸stırılabilir.
Not: Bu i¸slem için calibre’nin tüm ba˘gımlılıkları sisteminize kurulu olmalıdır. Bunu yapmak pek açık olmadı˘gından
sunucular içinde çalı¸stırmanız önerilmemektedir. Sunucu sorunlarının hatalarını ayıklamak için yardım alamayacaksınız.
˙Ilk olarak calibre içerik sunucunuza bir WSGI *ba˘gda¸stırıcı*olu¸sturmalısınız. Burada bu amaç için kullanabilece˘giniz
bir s¸ablon bulacaksınız. Yolları uygun s¸ekilde de˘gi¸stirmelisiniz
=
{}=
{}@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}
\PYG{c}{\PYGZsh{} The first entry from CALIBRE\PYGZus{}PYTHON\PYGZus{}PATH}
204
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
\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˘gda¸stırıcıyı sunucunuzun eri¸sebilece˘gi bir yere calibre-wsgi-adpater.py adıyla kaydedin.
Simdi
¸
Apache içinde WSGI kullanmak istedi˘ginizi varsayalım. ˙Ilk olarak :file:‘httpd.conf‘dosyasına a¸sa˘gıdaki satırı
ekleyerek Apache içinde WSGI’yı etkinle¸stirin:
=
{}=
{}@default
=0=1=2=0=1=2LoadModule wsgi\PYGZus{}module modules/mod\PYGZus{}wsgi.so
WSGI modülünün tam olarak etkinle¸stirilmesi Apache kurulumunuza ba˘glıdır. Vekil sunucu modülleri etkinle¸stirildig˘ inde a¸sa˘gı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˘giniz s¸ekilde de˘gi¸stirin (Apache’nin buraya eris¸imi oldu˘gundan emin olun).
Hepsi bu kadar, artık Apache sunucunuzdan /calibre adresi altından calibre ˙Içerik Sunucusuna eri¸sebilirsiniz.
Not: Apache ile mod_wsgi kullanımı için mod_wsgi90 sayfasına bakabilirsiniz.
1.9. Rehberler
205
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
˘
1.9.7 Calibre’nin islevselli
¸
gini
artırmak için kendi eklentilerinizi yazmak
calibre çok modüler bir tasarıma sahiptir. calibre’nin tüm i¸slevselli˘gi neredeyse eklentilerinden gelmektedir. Eklentiler
ileti¸sim, haberleri indirmek (bunlara tarif denilmektedir), kullanıcı arayüzündeki çe¸sitli bile¸senler için, farklı aygıtlara
ba˘glanmak ve dosyaları calibre’ye eklerken i¸slemek gibi amaçlar için kullanılırlar. Kurulumda gelen eklentilerin bir
listesini Tercihler->Eklentiler menüsünde bulabilirsiniz.
Burda, calibre’ye yeni i¸slevler kazandırmak için kendi eklentilerinizi nasıl olu¸sturaca˘gınızı ö˘gretece˘giz.
˙
Içindekiler
• Bir calibre eklentisinin anatomisi (sayfa 206)
• Kullanıcı Arayüzü eklentisi (sayfa 207)
– __init__.py (sayfa 208)
– ui.py (sayfa 209)
– main.py (sayfa 211)
– Eklenti zip dosyasından kaynakların alınması (sayfa 213)
– Eklentiniz için kullanıcı yapılandırmasını etkinle¸stirmek (sayfa 214)
• Kitap eklentilerini düzenle (sayfa 216)
– main.py (sayfa 216)
• Eklentinize çeviriler eklemek (sayfa 219)
• Eklenti API’si (sayfa 219)
• Eklentilerde hata ayıklama (sayfa 220)
• Daha fazla eklenti örne˘gi (sayfa 220)
• Eklentilerinizi ba¸skalarıyla payla¸smak (sayfa 220)
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˘gu resim dosyaları gibi di˘ger
kaynakları içeren bir zip dosyasıdır. Devam etmeden, basit bir örnek görelim.
Çe¸sitli e-belgeleri EPUB ve MOBI biçimlerinde da˘gıtmak için kullandı˘gınız bir calibre kurulumunuz oldu˘gunu varsayın. Calibre tarafından üretilen tüm dosyaların yayıncısının “Merhaba dünya” olmasını istersiniz, bunu s¸u s¸ekilde
yapabilirsiniz. __init__.py isimli bir dosya olu¸sturun (bu özel bir isimdir ve eklentinizin ana dosyası için her
zaman kullanılmak zorundadır) ve a¸sa˘gı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}{:}
\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}\
90 http://code.google.com/p/modwsgi/wiki/WhereToGetHelp
206
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
\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¸sturdu˘gunuz dizinde a¸sa˘gıdaki
komutu çalı¸stı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˘gin,
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 s¸uradan indirebilirsiniz helloworld_plugin.zip91 .
Calibre kullanarak her bir kitap dönü¸stürme i¸slemi yaptı˘gınızda, eklentinin run() metodu ça˘grılacak ve dönü¸stürülen
kitabın yayımcısı olarak “Merhaba Dünya” ayarlanacak. Bu önemsiz bir eklenti, daha karma¸sık ve kullanıcı arayüzüne
bir s¸eyler ekleyen bir tanesine geçelim.
Kullanıcı Arayüzü eklentisi
Bu eklenti bir kaç dosyaya da˘gılacak (kodu temiz tutmak için). Eklenti zip dosyasındaki kaynakları nasıl alaca˘gınızı
(resimler ve veri dosyaları), kullanıcıların eklentinizi nasıl yapılandıraca˘gını, calibre kullanıcı arayüzünde ö˘geleri
olu¸sturmayı ve calibre veri tabanındaki kitapları sorgulamayı ve kitaplara eri¸smeyi gösterecek.
Bu eklentiyi s¸uradan indirebilirsiniz interface_demo_plugin.zip92 Dikkat çeken ilk s¸ey, a¸sa˘gıda açıklanaca˘gı ü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¸stirmek için bo¸s bir metin dosyası.
Bu dosya birden fazla .py dosyası içeren tüm eklentilerde bulunmalıdır. Bo¸s olmalıdır ve dosya ismi
plugin-import-name-bir_isim.txt biçiminde olmalıdır. Bu dosyanın varlı˘gı zip dosyası içerisindeki
.py kodlarını içe aktarmanıza s¸u s¸ekilde bir ifade ile izin verir:
=
{}=
{}@default
=0=1=2=0=1=2
\PYG{k+kn}{from} \PYG{n+nn}{calibre\PYGZus{}plugins.some\PYGZus{}name.so
calibre_plugins ön eki her zaman mevcut olmalıdır. bir_isim bo¸s metin dosyasının isminden gelir. bir_modül zip dosyasındaki file:bir_modül.py yi i¸saret eder. Bu içe aktarmanın sırada
91 http://calibre-ebook.com/downloads/helloworld_plugin.zip
92 http://calibre-ebook.com/downloads/interface_demo_plugin.zip
1.9. Rehberler
207
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
python içe aktarmaları kadar güçlü oldu˘gunu not edin. Zip dosyası içinde .py paketleri ve alt paketler olu¸sturabilirsiniz, tıpkı normalde yapaca˘gınız gibi (her alt dizinde __init__.py tanımlayarak), ve
her¸sey Oldu˘gu gibi Çalı¸smalı.
bir_isim için kullandı˘gınız isim tüm eklentiler tarafından payla¸sılan bir isim uzayına girer, yani
olabildi˘gince 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˘gu gibi, eklenti sınıfını belirleyen dosya
main.py Bu dosya i¸se yarar bir s¸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˘gi¸sik dillere çevirilerini içeren .mo dosyalarını içeren bir dizin. Detaylar için
a¸sa˘gıya bakın.
Simdi
¸
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
\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}
208
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
\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˘ger tek özelli actual_plugin. Calibre’nin hem komut satırı hem GUI arayüzleri oldu˘gundan, 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¸sivinde ba¸ska bir dosyada oldu˘gunu söyleyerek sizin için yapar, bu da sadece GUI ba˘glamında
yüklenir.
Bunun çalı¸sması için eklenti zip dosyanızda yukarıda anlatıldı˘gı gibi plugin-import-name-bir_isim.txt dosyası olması
gerekti˘gini unutmayın.
Ayrıca eklentinin kullanıcı yapılandırmasının etkinle¸stirilmesi için bir kaç metod bulunmaktadır. Bunlardan a¸sa˘gıda
söz edilmektedir.
ui.py
Simdi
¸
asıl GUI eklentisini tanımlayan ui.py ye bakalım. Kaynak kod yo˘gun s¸ekilde yorumlanmı¸stır, kendini açıklıyor
olması lazım:
=
{}=
{}@default
1.9. Rehberler
209
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
=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}{:}
\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}
210
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
main.py
Arayüz Eklenti Tanıtım ileti¸sim 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 LibraryDatabase2 from database.py}
\PYG{c}{\PYGZsh{} This class has many, many methods that allow you to do a lot of}
\PYG{c}{\PYGZsh{} things.}
\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
\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
1.9. Rehberler
211
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
\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}{fmt\PYGZus{}idx} \PYG{o}{=} \PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{db}\PYG{o}{.}\PYG{n}
\PYG{n}{matched\PYGZus{}ids} \PYG{o}{=} \PYG{n+nb}{set}\PYG{p}{(}\PYG{p}{)}
\PYG{k}{for} \PYG{n}{record} \PYG{o+ow}{in} \PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{db}\PYG{o}{.
\PYG{c}{\PYGZsh{} Iterate over all records}
\PYG{n}{fmts} \PYG{o}{=} \PYG{n}{record}\PYG{p}{[}\PYG{n}{fmt\PYGZus{}idx}\PYG{p}{]}
\PYG{c}{\PYGZsh{} fmts is either None or a comma separated list of formats}
\PYG{k}{if} \PYG{n}{fmts} \PYG{o+ow}{and} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{,}\PYG{l+s}{\PYGZ
\PYG{n}{matched\PYGZus{}ids}\PYG{o}{.}\PYG{n}{add}\PYG{p}{(}\PYG{n}{record}\PYG{p}{[}
\PYG{c}{\PYGZsh{} Mark the records with the matching ids}
\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}{timestamp\PYGZus{}idx} \PYG{o}{=} \PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{db}\PYG{o}{.}\
\PYG{k}{for} \PYG{n}{record} \PYG{o+ow}{in} \PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{db}\PYG{o}{.
\PYG{c}{\PYGZsh{} Iterate over all currently showing records}
\PYG{n}{timestamp} \PYG{o}{=} \PYG{n}{record}\PYG{p}{[}\PYG{n}{timestamp\PYGZus{}idx}\PYG
\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}{record}\PYG{p}{[}\PYG{l+m+
\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 the row number of the id as shown in the GUI}
\PYG{n}{row\PYGZus{}number} \PYG{o}{=} \PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{db}\PYG{o}{.}
\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{}books}\PYG{p}{(}\PYG{
\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
212
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
\PYG{c}{\PYGZsh{} Get currently selected books}
\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{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+nb+bp}{self}\PYG{o}{.}\PYG{n}{db}\PYG{o}{.}\PYG{n}{get\PYGZ
\PYG{n}{get\PYGZus{}cover}\PYG{o}{=}\PYG{n+nb+bp}{True}\PYG{p}{,} \PYG{n}{cover\P
\PYG{n}{fmts} \PYG{o}{=} \PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{db}\PYG{o}{.}\PYG{n}{format
\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{o}{.}\PYG{n}{split}\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+nb+bp}{self}\PYG{o}{.}\PYG{n}{db}\PYG{o}{.}\PYG{n}{f
\PYG{n}{as\PYGZus{}file}\PYG{o}{=}\PYG{n+nb+bp}{True}\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}{ffile}\PYG{o}{.}\PYG{n}{name} \PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{xxx}\P
\PYG{c}{\PYGZsh{} path of the file being added is the same}
\PYG{c}{\PYGZsh{} as the path of the file being replaced}
\PYG{n+nb+bp}{self}\PYG{o}{.}\PYG{n}{db}\PYG{o}{.}\PYG{n}{add\PYGZus{}format}\PYG{p}{
\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¸sik metodlar
tanımlar.
get_resources(isim_veya_isim_listesi) Bu fonksiyon zip dosyası içindeki dosyaları gösteren yolların listesi ile ça˘grılmalıdır. Örne˘gin zip dosyasındaki resimler klasöründeki icon.png dosyasına eri¸smek
için: images/icon.png kullanırsınız. Her zaman, windows’da bile yol ayracı olarak düz taksim
i¸sareti kullanın. Tek bir isim geçirdi˘ginizde, 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. ˙Isim bulunamazsa, döndürülen dict nesnesinde bulunmayacaktır.
get_icons(isim_veya_isim_listesi) 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.
1.9. Rehberler
213
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Eklentiniz için kullanıcı yapılandırmasını etkinlestirmek
¸
Kullanıcıların eklentinizi yapılandırmasına izin vermek için, temel eklenti sınıfınızda a¸sa˘gıdaki gibi üç metod tanımlamalısınız, ‘is_customizable, config_widget ve save_settings:
=
{}=
{}@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¸sinden miras). Önerilen metod JSONConfig sınıfının kullanılmasıdır, bu da yapılandırmanızı bir .json dosyasında tutar.
214
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Tanıtım eklentisindeki yapılandırma verisini yöneten kod config.py’de:
=
{}=
{}@default
=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 s¸imdi eklenti kodunda basitçe s¸u s¸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ı˘gı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}
1.9. Rehberler
215
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Kitap eklentilerini düzenle
Simdi
¸
di¸slileri biraz de˘gi¸stirelim ve calibre kitap düzenleyiciye araçlar ekleyen bir eklenti olu¸sturmaya göz atalım.
Eklentiyi s¸urada: editor_demo_plugin.zip93 .
˙Ilk adım, above (sayfa 207) de açıklandı˘gı gibi tüm eklentiler için bo¸s bir içe aktarma ismi dosyası olu¸sturmaktır.
Eklentiyi plugin-import-name-editor_plugin_demo.txt olarak adlandıralım.
Simdi
¸
eklenti metadatasını içeren – ismi, yazarı, sürümü vs. zorunlu __init__.py dosyasını olu¸sturuyoruz.
=
{}=
{}@default
=0=1=2=0=1=2\PYG{k+kn}{from} \PYG{n+nn}{calibre.customize} \PYG{k+kn}{import} \PYG{n}{EditBookToolPlug
\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˘gunda bir simgeye ve düzenleyicide Eklentiler menüsünde bir girdiye
denk gelmek üzere bir çok araç sa˘glayabilir. 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 352) sınıfından türetilen bir sınıftır. Tanıtım eklentisindeki main.py ye bakalım, kaynak kod yo˘gun olarak yorumlanmı¸s ve kendini anlatabiliyor durumdadır. Daha
fazla detay için calibre.gui2.tweak_book.plugin.Tool (sayfa 352) sınıfının API belgelerini okuyun.
main.py
Burda kitaptaki tüm yazı tipi boyutlarını kullanıcı tarafından sa˘glanan bir numarayla çarpan tek bir araç tanımı görece˘giz. Bu araç kendi eklentilerinizi geli¸stirirken ihtiyaç duyaca˘gınız çe¸sitli önemli kavramı gösterir, yani (yo˘gun bir
s¸ekilde yorumlanmı¸s) kaynak kodu dikkatli okumalısınız.
=
{}=
{}@default
=0=1=2=0=1=2\PYG{k+kn}{import} \PYG{n+nn}{re}
\PYG{k+kn}{from} \PYG{n+nn}{cssutils.css} \PYG{k+kn}{import} \PYG{n}{CSSRule}
\PY
\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{}}
93 http://calibre-ebook.com/downloads/editor_demo_plugin.zip
216
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
\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}
\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}
1.9. Rehberler
217
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
\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}
\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ı˘gını görüyoruz. Bu araç kullanıcıya bir
sayı soracak ve kitaptaki tüm yazı tipi boyutlarını bu sayıyla çarpacak.
˙Ilk önemli nokta, bu araç için anahtar olarak kullanılaca˘gından benzersiz bir karakter dizisi olarak ayarlayaca˘gınız
araç ismidir.
Sonraki önemli nokta da calibre.gui2.tweak_book.plugin.Tool.create_action() (sayfa 353). Bu
metod eklenti araç çubu˘gu ve eklenti menüsünde görünen QAction nesnelerini olu¸sturur. Bunun yanında, iste˘ge ba˘glı
olarak kullanıcının özelle¸stirebilece˘gi bir klavye kısayolu atar. QAction tarafından tetiklenen sinyal kullanıcıya yazı
tipi boyutu çarpanını soran ask_user() metoduna ba˘glıdır, bu da çarpma kodunu çalı¸stırır.
Çarpma kodu iyi belgelenmi¸s ve oldukça basittir. Dikkate alınacan temel s¸eyler düzenleyici pencereye self.gui
ile, düzenleyici Boss una self.boss ile bir referans aldı˘gınızdır. Boss düzenleyici kullanıcı arayüzünü kontrol eden
nesnedir. calibre.gui2.tweak_book.boss.Boss (sayfa 354) sınıfında belgelenmi¸s bir çok faydalı metodu
vardır.
Son olarak calibre.ebooks.oeb.polish.container.Container (sayfa 346) nesnesi olan düzenlenen
218
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
kitaba referans olan self.current_container bulunmaktadır. Bu, kitabı, kitabı olu¸sturan HTML/CSS/resim
dosyaları koleksiyonu olarak temsil eder ve daha bir çok faydalı i¸s yapan metodu vardır. Eklenti kodunuzda tekrar kullanabilece˘giniz bir çok kullanı¸slı fonksiyon ve kapsayıcı nesne E-kitap düzenleme araçları için API Belgelendirmesi
(sayfa 346) içinde belgelenmi¸stir.
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.
˙Ilk 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¸saretlemektir. Örne˘gin:
=
{}=
{}@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¸sturmak için bir program kullanın. Çevirmek istedi˘giniz 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¸slem için poedit94 programını
kullanabilirsiniz.
Bu .po dosyalarını çevirmenlerinize yollayın. Geri aldı˘gınızda .mo dosyalarına derlemeniz gerekiyor. Bu i¸slem 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¸sına load_translations() fonksiyonunu eklemektir. Performans açısından bu
fonksiyonu yalnızca çevrilebilir karakter dizilerinin oldu˘gu dosyalara eklemelisiniz. Yani tipik bir kullanıcı arayüzü
eklentisinde ui.py ba¸sında ça˘gırırken ‘‘__init__.py‘‘de ça˘gırmazsınız.
Çevirileri Seçenekler->Görünüm & Doku altından calibre kullanıcı arayüzü dilini de˘gi¸stirerek veya calibre’yi s¸u s¸ekilde çalı¸stırarak test edebilirsiniz:
=
{}=
{}@default
=0=1=2=0=1=2CALIBRE\PYGZus{}OVERRIDE\PYGZus{}LANG=de calibre
de yi test etmek istedi˘giniz dil koduyla de˘gi¸stirin.
Eklenti API’si
Yukarda fark etmi¸s olabilece˘giniz gibi, calibre’de eklenti bir sınıftır. Calibre’de de˘gi¸sik türde eklentiler için de˘gis¸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 316) içinde bulunabilir.
Eklentiniz ço˘gu durumda calibre’den de kod kullanacaktır. calibre kod tabanındaki fonksiyonellikle ilgili çe¸sitli bilgiler
bulmak için, calibre’deki Kod düzeni (sayfa 298) kısmını okuyun.
94 http://poedit.net/
1.9. Rehberler
219
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Eklentilerde hata ayıklama
˙Ilk, en önemli adım calibre’yi hata ayıklama kipinde çalı¸stırmaktır. Bu i¸slemi komut satırından s¸u s¸ekilde yapabilirsiniz:
=
{}=
{}@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ü˘gmesine sa˘g tıklayarak veya Ctrl+Shift+R klavye kısayolunu kullanarak yapabilirsiniz.
Komut satırından çalı¸stırırken, hata ayıklama çıktısı konsola yazdırılacaktır, calibre içinden çalı¸stı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˘gunu ve hata ayıklamak için yazdırma ifadelerinden ba¸ska bir s¸eye ihtiyaç duymamanız gerekti˘gini unutmayın ;) Tüm calibre’yi bu hata ayıklama tekni˘giyle geli¸stirdim.
Eklentinize yaptı˘gınızı de˘gi¸siklikleri hızlıca s¸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¸slem calibre’yi kapatır, kapanmanın bitmesini bekler, eklentinizi calibre’de günceller ve calibre’yi ba¸stan ba¸slatır.
˘
Daha fazla eklenti örnegi
Bir çok, karma¸sık calibre eklentisini s¸urada95 bulabilirsiniz.
Eklentilerinizi baskalarıyla
¸
paylasmak
¸
Olu¸sturdu˘gunuz eklentileri ba¸ska calibre kullanıcılarıyla payla¸smak isterseniz, calibre eklentileri forumunda96 yeni bir
ba¸slık altında eklentinizi gönderebilirsiniz.
1.9.8 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˘gine sahiptir. Matematiksel ifadeleri do˘grudan TeXi MathML veya AsciiMath kullanarak yazabilirsiniz.
Calibre görüntüleyicisi bunu yapmak için harika‘MathJax <http://www.mathjax.org>‘_ kitaplı˘gını kullanır. Bu kısa
rehber calibre görüntüleyici ile uygun s¸ekilde içinde matematik ifadeleri bulunan e-kitapların nasıl olu¸sturulaca˘gı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 s¸ekilde dizer. A¸sa˘gıdaki
örnekte matematiksel ifadeler için TeX gösterimini kullandık. Normal TeX komutlarını ve i¸sareti, küçüktür ve büyüktür
i¸saretleri yerine &amp; &lt; ve &gt; yazmak kaydıyla kullanabilece˘ginizi göreceksiniz.
95 http://www.mobileread.com/forums/showthread.php?t=118764
96 http://www.mobileread.com/forums/forumdisplay.php?f=237
220
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Bu calibre’ye matematiksel ifadeler içerdi˘gini bildirmenin ilk adımıdır. Bunu HTML dosyasının <head> bölümüne
a¸sa˘gıdaki kod parçacı˘gını ekleyerek yapabilirsiniz:
=
{}=
{}@default
=0=1=2=0=1=2\PYGZlt{}script type=\PYGZdq{}text/x\PYGZhy{}mathjax\PYGZhy{}config\PYGZdq{}\PYGZgt{}\PYGZ
˙I¸ste bu kadar, artık bir .tex dosyasına yazdı˘gınız gibi matematiksel ifadeleri yazabilirsiniz. Örne˘gin 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ı˘gı calibre görüntüleyicisinde a¸sa˘gıdaki s¸ekilde görüntülenecektir.
Sekil
¸
1.2: Lorentz Denklemleri
Daha fazla denklem ve satır içinde matematik içeren tam bir HTML dosyası a¸sa˘gıda bulunmaktadır. Bu HTML dosyasını ba¸skalarına kolayca da˘gıtabilece˘giniz bir e-kitap olarak calibre içinden EPUB biçimine dönü¸stü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}{;}
1.9. Rehberler
221
calibre Kullanıcı Kılavuzu, Sürüm 2.24.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
222
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.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¸slemek için MathJax kitaplı˘gını kullandı˘gından matematiksel ifadeleri e-kitaplarda
i¸slemek için daha fazla bilgiyi MathJax web sayfasında97 bulabilirsiniz.
1.9.9 AZW3 • EPUB • MOBI Katalogları Olusturmak
¸
calibre’nin katalog olu¸sturma özelli˘gi kitaplı˘gınızda çe¸sitli biçimlerde dosyalardan olu¸san bir katalog olu¸sturmanıza
imkan verir. Bu yardım dosyası AZW3, EPUB ve MOBI biçimlerinde bir katalog olu¸sturmanın genel seçeneklerini
tanımlar.
•
•
•
•
•
•
•
•
Katalog için kitap seçmek (sayfa 224)
˙Içerilen bölümler (sayfa 224)
Önekler (sayfa 225)
Hariç tutulan kitaplar (sayfa 225)
Hariç tutulan türler (sayfa 226)
Di˘ger seçenekler (sayfa 226)
Özel katalog kapakları (sayfa 227)
Ek yardım kaynakları (sayfa 227)
97 http://www.mathjax.org
1.9. Rehberler
223
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Katalog için kitap seçmek
Kitaplı˘gınızdaki tüm kitapların kataloglanmasını isterseniz ana penceredeki tüm arama ve filtreleme seçeneklerini
kaldırın. Seçilmi¸s tek bir dosyayla kitaplı˘gınızdaki tüm dosyalar olu¸sturulan katalo˘ga dahil edilmeye aday olur. Çe¸sitli
kriterlerle bazı kitaplar katalog dı¸sında tutulabilir; daha fazla bilgi için a¸sa˘gıdaki Hariç tutulan türler (sayfa 226)
alanına bakın.
Kitaplı˘gınızdaki bazı kitapların kataloglanmasını isterseniz iki seçene˘giniz var:
• Kataloglamak istedi˘giniz kitapların bir çoklu seçimini olu¸sturun. Calibre’nin ana penceresinde birden çok kitap
seçildi˘ginde 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¸sturmaya ba¸slamak için Kitapları dönü¸stür > Calibre kitaplı˘gınızdaki kitapların bir katalo˘gunu olu¸sturun menü ögesini seçin. Katalog olu¸sturma ileti¸sim penceresine daha kolay ola¸sım için Tercihler > Arayüz > Araç
çubukları alanına bir Katalog Olu¸stur dü˘gmesi ekleyebilirsiniz.
Katalog seçeneklerinde Katalog biçimi olarak AZW3, EPUB veya MOBI seçin. Katalog ba¸slı˘gı alanına olu¸sturulacak katalog için bir isim girin. Girdi˘giniz isimde bir katalog zaten mevcutsa olu¸sturulacak katalog onun üzerine
yazılacaktır.
Katalo˘gu aygıta otomatik olarak gönder seçene˘gini etkinle¸stirmek olu¸sturulan katalo˘gun ba˘glanan aygıta hemen indirilmesine neden olacaktır.
˙Içerilen bölümler
Onay i¸saretiyle etkinle¸stirilmi¸s bölümler olu¸sturulacak katalo˘ga dahil edilecektir:
• Yazarlar - tüm kitaplar yazarlarına göre sıralı halde liste biçiminde sunulur. Serisi olmayan kitaplar serilerden
önce gösterilir.
224
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
• Ba¸slıklar - tüm kitaplar ba¸slı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ında Eklenenler - tüm kitaplar tarihsel olarak tersten sıralı s¸ekilde sıralanır.Liste son 30 günde eklenen kitapları içerir ve ardından önceki aylarda eklenmi¸s kitaplar aylık olarak gruplanırlar.
• Tanımlamalar - her kitap için kapa˘gı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˘gin okudu˘gunuz kitapları bir onay
i¸saretiyle veya istek listenizdeki kitapları bir X ile i¸saretlemek isteyebilirsiniz.
˙Ilk sütundaki onay kutusu kuralı etkinle¸stirir. Isim
˙
sizin girdi˘giniz kuralın ismidir. Alan ise ya Etiketler veya kitaplı˘gınızdaki özel bir sütun olabilir. De˘ger de Alan alanının e¸sle¸sti˘gi içeriktir. Bir ön ek kuralı sa˘glandı˘gında kitap seçilen
Ön Ek ile i¸saretlenecektir.
Yukarıdaki örnekte üç ön ek kuralı belirtilmi¸stir:
1. Okunmu¸s kitap, Son okuma özel sütununda bulunan herhangi tarihteki bir kitabın önüne bir kontrol i¸sareti gelece˘gini belirtir.
2. Dileklistesi ö˘gesi Dileklistesi etiketi olan herhangi kitabın önüne bir X sembolü gelece˘gini belirtir.
3. Kitaplık, Kitaplıkta Mevcut özel sütununda Do˘gru (veya Evet) de˘geri olan her kitabın önüne bir çift ok sembolü
gelece˘gini belirtir.
Ilk e¸sle¸sen kuralı öneki sa˘glar. Engelli veya eksik kurallar göz ardı edilir.
Hariç tutulan kitaplar
1.9. Rehberler
225
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Hariç tutma kuralları kataloglanmayacak kitapları belirtmenize imkan verir.
˙Ilk sütundaki onay kutusu kuralı etkinle¸stirir. Isim
˙
kural için girdi˘giniz isimdir. Alan ise ya Etiket ya da kitaplı˘gınızdaki özel bir sütundur. De˘ger alanı Alan ile e¸sle¸sen içeriktir. Dı¸sarıda tutma kurallarından biri sa˘glandı˘gında kitap
olu¸sturulan katalo˘gun dı¸sında tutulur.
Yukarıdaki örnekte iki hariç tutma kuralı belirtilmi¸stir:
1. Kataloglar kuralı Katalog etiketine sahip kitapların olu¸sturulacak katalo˘ga dahil edilmeyece˘gini belirtir.
2. Ar¸sivlenmi¸s Kitaplar kuralı Durum sütunundaki de˘geri Ar¸sivlenmi¸s olan kitapların olu¸sturulacak katalo˘ga dahil
edilmeyece˘gini belirtir.
Tüm kurallar bütün kitaplar için çalı¸stırılır. Kapalı veya eksik kurallar yok sayılır.
Hariç tutulan türler
Bir katalog olu¸sturuldu˘gunda veritabanınızdaki etiketler türler olarak kullanılır. Örne˘gin; etiketleri Kurgu ve
Kurgusal Olmayan olarak kullanabilirsiniz. Bu etiketler olu¸sturulan katalogda türler haline gelir ve bu etiketlerle
etiketlenmi¸s kitaplar ilgili türlerin altında listelenir. Bir kitap ta¸sıdı˘gı bütün etiketlere kar¸sılık gelen türlerin altında
listelenir.
Belirli etiketleri belirli amaçlar için kullanabilirsiniz. Örne˘gin; bir + i¸sareti kitabı okumayı veya [Amazon
Freebie] gibi parantezli bir ifade kitabın kayna˘gını i¸saret edebilir. Hariç tutulan türler düzenli ifadesi olu¸sturulan katalo˘ga alınmasını istemedi˘giniz etiketleri belirtmenize izin verir. Varsayılan hariç tutma düzenli ifade deseni
\[.+\]\+ [etiket] s¸eklinde yazılan etiketleri hariç tutar. Kitap okuma için varsayılan etiket olan + katalo˘ga
alınmayacak türleri belirtir.
Bir düzenli ifadede ayrıca tam isim kullanabilirsiniz. Örne˘gin, [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˘giniz düzenli ifade desenine göre katalog olu¸sturuldu˘gunda
hangi etiketlerin hariç tutulaca˘gını gösterir. Düzenli ifade desenini düzenledi˘ginizde sonuçlar da güncellenir.
˘ seçenekler
Diger
Katalog kapa˘gı mevcut kapa˘gın mı kullanılaca˘gını yoksa yeni bir kapak mı olu¸sturulaca˘gını belirtir. Kataloglarınız için
özel kapaklar olu¸sturmak mümkündür - daha fazla bilgi için Özel katalog kapakları alanına bakabilirsiniz. Yeniden
226
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
kullanmak istedi˘giniz bir özel kapak olu¸sturmu¸ssanız Mevcut kapa˘gı kullan seçene˘gini seçin. Aksi halde Yeni kapak
olu¸stur diyerek devam edin.
Ek Tanımlama notu özel bir sütunun içeri˘ginin Tanımlama sayfasına, kapak küçük resminin yanına eklenmesini belirtir.
Örne˘gin, kitabı okudu˘gunuz son tarihi bir Son okuma özel sütunuyla görüntülemek isteyebilirsiniz. Tanımlama notu
özelli˘ginin geli¸smi¸s kullanımı için calibre forumundaki s¸u gönderiye98 göz atın.
Küçük resim geni¸sli˘gi Tanımlamalar sayfasındaki kapak küçük resimleri için bir geni¸slik tercihi belirtir. Küçük resimler performansı artırmak için zulalanır. De˘gi¸sik geni¸slikleri deneyimlemek için tercih etti˘giniz geni¸sli˘gi bulana kadar
bir kaç kitap içeren bir katalok üretmeyi deneyin, sonra tam katalo˘gunuzu üretin. Bir katalok yeni bir küçük resim
geni¸sli˘giyle üretildi˘ginde performans yava¸s olacaktır, fakat sonraki katalog in¸saları katalog zulası avantajını kullanacaktır.
Yorumlarla Birle¸stir katalog üretiminde içeri˘gi zarar vermeden Yorumlar metadatasıyla birle¸stirilecek bir özel sütun
belirtir. Örne˘gin Yorumlar metadatasına eklemek istedi˘giniz bir Yazar Bio özel sütununuz olabilir. Özel sütun içeri˘gini
Yorum kısmından önce ya da sonra eklemek isteyebilirsiniz, ve iste˘ge ba˘glı olarak eklenen içeri˘gi yatay bir cetvel
ayraçla ayırabilirsiniz. Seçilebilir nitelikte özel sütun türleri metin, yorumlar, ve bile¸
sik olabilir.
Özel katalog kapakları
Kurulu olan Kapak Olu¸sturma eklentisi99 ile katalo˘gunuz için
özel kapaklar olu¸sturabilirsiniz. Eklentiyi yüklemek için Tercihler > Geli¸smi¸s > Eklentiler > Yeni eklentiler getir
menüsünü takip edin.
Ek yardım kaynakları
Calibre’nin Katalog özelli˘gi hakkında daha fazla bilgi için MobileRead forumundaki sabit Katalog Olu¸sturmak - Buradan ba¸slayın100 alanına bakın. Burada katalog s¸ablonlarını nasıl özelle¸stirebilece˘ginizi ve nasıl hata raporu girece˘ginizi
de bulacaksınız.
98 http://www.mobileread.com/forums/showpost.php?p=1335767&postcount=395
99 http://www.mobileread.com/forums/showthread.php?t=124219
100 http://www.mobileread.com/forums/showthread.php?t=118556
1.9. Rehberler
227
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Di˘ger kullanıcılara calibre’nin Katalog özelli˘gi hakkında soru sormak veya tartı¸smak için MobileRead forumunda
Calibre Katalogları101 alanına bakabilirsiniz.
1.9.10 Sanal Kitaplıklar
Sanal kitaplık ifadesi calibre’ye normal bir kitaplı˘gın bir alt kümesini açmasını söylemenin bir yoludur. Örne˘gin sadece belirli bir yazarın kitaplarıyla veya sadece belirli bir etiketi ta¸sıyan kitaplarla çalı¸smak isteyebilirsiniz. Sanal
kitaplıkları kullanmak büyük kitaplı˘gınızı daha küçük alt kitaplıklara ayırmanın tercih edilen bir yoludur. Tüm koleksiyonunuzda arama yapmak istedi˘ginizde küçük kitaplıktan üst kitaplı˘ga 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ı¸s kümesini barındıran bir gerçek kitaplık gibi davranır.
Sanal Kitaplıklar Olusturmak
¸
Bir sanal kitaplık kullanmak için arama çubu˘gunun solundaki Sanal Kitaplık dü˘gmesine tıklayın ve Sanal Kitaplık Olu¸stur seçene˘gini seçin. ˙Ilk örnek olarak sadece belrli bir yazarın kitaplarını gösteren bir sanal
kitaplık olu¸sturalım. A¸sa˘gıda gösterilen Yazarlar ba˘glantısına tıklayın ve kullanmak istedi˘giniz yazarı seçip Tamam’a
tıklayın.
Sanal Kitaplık Olu¸stur ileti¸sim penceresi sizin için doldurulacaktır. Tamam’a tıkladı˘gınızda sadece seçti˘giniz yazarın
kitaplarını gösteren yeni bir Sanal Kitaplık olu¸sturuldu˘gunu göreceksiniz. Calibre’nin bakı¸s açısından bu kitaplık
sadece seçti˘giniz yazarın kitaplarını barındıran bir kitaplık gibidir.
˙Istedi˘giniz herhangi bir zamada Sanal Kitaplık ba˘glantısından <None> girdisini seçerek tam kitaplı˘gınıza dönebilirsiniz.
Sanal Kitaplıklar Aramaları temel alırlar. Her aramanızı bir sanal kitaplı˘gın temeli olarak kullanabilirsiniz. Sanal
kitaplı˘gınız aramanın sonuçlarıyla e¸sle¸sen kitapları barındıracaktır. ˙Ilk olarak aramak istedi˘giniz s¸eyi arama çubu˘guna
yazın veya Etiket Tarayıcısını kullanın. Dönen sonuçlardan memnun oldu˘gunuzda Sanal Kitaplık dü˘gmesine tıklayın,
Kitaplık Olu¸stur ba˘glantısını takip ederek bu yeni kitaplık için bir isim girin. Sanal kitaplı˘gınız az önce yaptı˘gınız
101 http://www.mobileread.com/forums/forumdisplay.php?f=236
228
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
aramaların sonuçlarını temel alarak olu¸sturulacaktır. Aramalar çok güçlüdür, hangi türde s¸eyleri arayabilece˘ginizi
Arama Arayüzü (sayfa 11) alanından ö˘grenebilirsiniz.
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ı¸s kitaplar: rating:5
• En az 4 yıldız almı¸s kitaplar: rating:>=4
• De˘gerlendirmesi yapılmamı¸s kitaplar: rating:false
• Calibre içinden Haberleri Getir i¸slevi ile indirilmi¸s dergiler: tags:=News and author:=calibre
• Etiketi olmayan kitaplar: tags:false
• Kapa˘gı olmayan kitaplar: cover:false
Sanal Kitaplıklarla çalısmak
¸
Önceden olu¸sturulmu¸s bir sanal kitaplı˘gı Sanal Kitaplık dü˘gmesine tıklayıp uygun eylemi seçerek düzenleyebilir veya
kaldırabilirsiniz.
Calibre’ye geçerli kitaplık her açıldı˘gında bir özel sanal kitaplı˘gın uygulanması gerekti˘gini Tercihler->Davranı¸s yolunu kullanarak söyleyebilirsiniz.
Calibre ˙Içerik Sunucusunu kullanıyorsanız tüm kitaplı˘gınız yerine bir sanal kitaplı˘gı payla¸smayı Tercihler->A˘gdan
payla¸smak 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ü˘gmesine 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¸smak isterseniz bu kolaylık sa˘glayacaktır. Bunun için Sanal Kitaplık dü˘gmesine tıklayın ve Sanal Kitaplıkları sekmelerde göster seçene˘gini seçin. Sekmeleri sürükleyip bırakarak yeniden düzenleyebilir ve görmek istemediklerinizi kapatabilirsiniz. Kapatılan sekmeler sekme çubu˘guna sa˘g 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ü˘gmesini kullanabilirsiniz. Bir
ek kısıtlama sanal kitaplı˘gınızda gösterilen kitapları daha da kısıtlamak için kullanabilece˘giniz önceden kaydetti˘giniz
bir arama olabilir. Örne˘gin Tarihi Kurgu etiketini ta¸sıyan kitaplardan olu¸san bir Sanal Kitaplı˘gınız ve okumadı˘gınız
kitapları gösteren bir kaydedilmi¸s aramanız olsun Sanal Kitaplık dü˘gmesine tıklayıp Ek kısıtlamalar seçene˘gini seçerek okunmamı¸s Tarihi Kurgu kitapların görüntülenmesini sa˘glayabilirsiniz. Kaydedilmi¸s aramalar hakkında daha fazla
bilgi için Aramaları kaydetmek (sayfa 14) bölümüne bakabilirsiniz.
1.10 Calibreyi özellestirmek
¸
calibre yüksek derecede modüler bir tasarıma sahiptir. Çe¸sitli parçaları özelle¸stirilebilir. calibre’ye çevrimiçi içer˘gin
yeni kaynaklarını eklemek için nasıl tarifler olu¸sturulaca˘gını Sık kullandı˘gınız haber sitesini ekleme (sayfa 121) Bölümünden ö˘grenebilirsiniz. Burada ilk olarak çevresel de˘gi¸skenlerin nasıl kullanılaca˘gını ve calibre’nin davranı¸sını
özelle¸stirmek için ince ayarları, daha sonra simgeler ve s¸ablonlar gibi kendi sabit kaynaklarınızı nasıl belirtece˘ginizi
ve son olarak calibre’ye i¸slevsellik eklemek için eklentileri nasıl kullanaca˘gınızı ö˘greneceksiniz.
1.10. Calibreyi özellestirmek
¸
229
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
•
•
•
•
Çevresel de˘gi¸skenler (sayfa 254)
˙
Ince
Ayarlar (sayfa 254)
Simgelerin, s¸ablonların ve benzerlerinin üzerine yazmak (sayfa 264)
Eklentilerle calibre’yi özelle¸stirmek (sayfa 265)
1.10.1 Eklentiler için API Belgelendirmesi
Güçlü eklentiler olu¸sturmak için alt sınıf yapılabilir çe¸sitli soyut temel sınıfları tanımlar. Kullanı¸slı sınıflar s¸unlardır:
•
•
•
•
•
•
•
•
•
•
Eklenti (sayfa 316)
FileTypePlugin (sayfa 318)
Metadata eklentileri (sayfa 319)
Katalog eklentileri (sayfa 319)
Metadata indirme eklentileri (sayfa 320)
Dönü¸stürme eklentileri (sayfa 323)
Aygıt Sürücüleri (sayfa 325)
Kullanıcı Arayüzü Eylemleri (sayfa 334)
Tercihler Eklentileri (sayfa 337)
Görüntüleme eklentileri (sayfa 339)
Eklenti
class calibre.customize.Plugin(plugin_path)
Bir calibre eklentisi. Kullanı¸slı üyeleri s¸unları içerir:
•self.plugin_path: Bu eklentiyi veya dahili bir eklentiyse None içeren zip dosyasına yolu tutar
•self.site_customization: Kullanıcı tarafından girilen bir özelle¸stirme karakter dizisini tutar.
Alt sınıflarda ezilmesi gereken metodlar:
•initialize() (sayfa 317)
•customization_help() (sayfa 318)
Kullanı¸slı metodlar:
•temporary_file() (sayfa 318)
•__enter__()
•load_resources() (sayfa 317)
supported_platforms= []
Bu eklentinin çalı¸stı˘gı platformların listesi. Örne˘gin: [’windows’, ’osx’, ’linux’]
name= ‘Trivial Plugin’
Bu eklentinin adı. Çalı¸sması için Trivial Plugin dı¸sında bir s¸eye ayarlamalısınız.
version= (1, 0, 0)
Eklentinin 3-lü demet s¸eklinde sürümü (majör, minör, düzeltme)
description= u’Bir fonksiyonu yok’
Bu eklentinin ne yaptı˘gını anlatan kısa karakter dizisi
230
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
author= u’Bilinmeyen’
Eklentinin yazarı
priority= 1
Bir dosya türü için birden fazla eklenti oldu˘gunda, eklentiler azalan öncelikle çalı¸stırılır örn. yüksek öncelikli eklentiler ilk çalı¸stı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˘gi en eski calibre sürümü
can_be_disabled= True
False ise, kullanıcının bu eklentiyi kapatma s¸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˘ginde bir defa ça˘grılır. Eklentiler yeni bir eklenti eklendi˘ginde her defasında
yeniden ilklendirilirler. Ayrıca eklenti bir çalı¸san süreç içinde çalı¸stırılırsa, kitap ekleme süreci gibi, eklenti
her yeni çalı¸sma 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˘gildir.
config_widget()
Basit karakter dizisi temelli varsayılan özelle¸stirmeye güvenmek yerine bu metodu ve
save_settings() (sayfa 317) metodunu eklentinizde uygulayarak özel bir yapılandırma iletis¸im penceresi kullanın.
Bu metod, e˘ger uygulanırsa, bir QWidget döndürmelidir. Parçacık iste˘ge ba˘glı olarak ba˘gımsız de˘gi¸sken almayan bir validate() metoduna sahip olabilir ve kullanıcı Tamama tıklayınca anında ça˘grılır. De˘gi¸siklikler
yalnızca metod True döndürürse uygulanır.
Bir sebepten bu a¸samada 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 317) 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¸sim penceresi gösterir. Kullanıcı Tamama tıklarsa True,
yoksa False döndürür. De˘gi¸siklikler otomatik olarak uygulanır.
load_resources(names)
Bu eklenti bir ZIP dosyasıyla gelirse (kullanıcı tarafından eklenmi¸s eklenti), bu metod ZIP dosyasından
kaynakları yüklemenizi sa˘glar.
Örne˘gin 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}{)}
1.10. Calibreyi özellestirmek
¸
231
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Parametreler names – / ayraç olarak kullanılmak üzere zip dosyasındaki kaynakların yollarının
listesi
Dönü¸s de˘geri: {isim: dosya_içerikleri} s¸eklinde bir sözlük. Zip dosyasında bulunmayan isimler sözlükte olmayacaktır.
customization_help(gui=False)
Bu eklentinin nasıl özelle¸stirilece˘gi konusunda yardım veren bir metin. Varsayılan olarak
NotImplementedError yükseltilir, bu da eklentinin özelle¸stirmeye ihtiyaç duymadı˘gı anlamına
gelir.
Bu metodu alt sınıflarınızda yeniden uyguluyorsanız, kullanıcıdan bu eklenti için özelle¸stirme olarak kullanılacak bir karakter dizisi girmesi istenir. Özelle¸stirme karakter dizisi self.site_customization
olarak kullanılabilir olacaktır.
Site özelle¸stirmesi her¸sey olabilir, örne˘gin kullanıcının bilgisayarındaki bir ikili˘gin 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ı˘gında silinir. Olu¸sturulan geçici dosyanın tam yoluna eri¸smek
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¸s noktasıdır. Kullanıcı calibre-debug -r “Eklenti
˙Ismi” girdi˘ginde ça˘grılır. Ba˘gımsız de˘gi¸skenler args de˘gi¸skenine mevcuttur.
FileTypePlugin
class calibre.customize.FileTypePlugin(plugin_path)
Taban: calibre.customize.Plugin (sayfa 316)
Belirli bir dosya türü kümesiyle ili¸skili eklenti.
file_types= set([])
Bu eklentinin çalı¸sması gereken dosya türü kümesi. Örne˘gin: {’lit’, ’mobi’, ’prc’}
on_import= False
True ise, bu eklenti kitaplar veri tabanına eklendi˘ginde çalı¸sır
on_postimport= False
True ise, bu eklenti kitaplar veri tabanına tekrar eklendi˘ginde çalı¸sır
on_preprocess= False
True ise, bu eklenti dönü¸stürme öncesi çalı¸sır
on_postprocess= False
True ise, bu eklenti dönü¸stürme çıktı eklentisi tarafından üretilen son dosyanın dönü¸stürmesi sonrası çalı¸sır.
run(path_to_ebook)
Eklentiyi çalı¸stır. Alt sınıflarda uygulanmalıdır. E-kitapta gerekli tüm de˘gi¸siklikleri yapıp de˘gi¸stirilmi¸s ekitaba mutlak yolu döndürmelidir. Herhangi bir de˘gi¸siklik gerekmiyorsa, asıl e-kitaba yolu döndürmelidir.
Bir hatayla kar¸sıla¸sılırsa bir Exception yükseltmelidir. Varsayılan uygulaması basitçe asıl e-kitaba yolu
döndürür.
De˘gi¸stirilmi¸s e-kitap dosyası temporary_file() metoduyla olu¸sturulmalıdır.
Parametreler path_to_ebook – E-kitaba mutlak yol.
232
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Dönü¸s de˘geri: De˘gi¸stirilmi¸s e-kitaba mutlak yol.
postimport(book_id, book_format, db)
˙Içe aktarım sonrası ça˘grılır, örn., kitap dosyası veri tabanına eklendikten sonra.
Parametreler
• book_id – Eklenen kitabın veri tabanı kimli˘gi.
• book_format – Eklenen kitabın dosya türü.
• db – Kitaplık veri tabanı.
Metadata eklentileri
class calibre.customize.MetadataReaderPlugin(*args, **kwargs)
Taban: calibre.customize.Plugin (sayfa 316)
Bir dosya türü kümesinden metadata okumayı uygulayan bir eklenti.
file_types= set([])
Bu eklentinin çalı¸stırılaca˘gı dosya türü kümesi, Örne˘gin: set([’lit’, ’mobi’, ’prc’])
get_metadata(stream, type)
Akı¸s tarafından temsil edilen dosya için metadata döndür (okumayı destekleyen dosya benzeri bir nesne). Girdi verisiyle ilgili bir hata oldu˘gunda bir istisna yükselt. :param type:
Dosya türü. file_types (sayfa 319) 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 316)
Bir dosya türü kümesinden metadata okumayı uygulayan bir eklenti.
file_types= set([])
Bu eklentinin çalı¸stırılaca˘gı dosya türü kümesi, Örne˘gin: set([’lit’, ’mobi’, ’prc’])
set_metadata(stream, mi, type)
Akı¸s ile temsil edilen dosya için metadata ayarla (okumayı destekleyen dosya benzeri bir
nesne). Girdi verisiyle ilgili bir hata oldu˘gunda bir istisna yükselt. :param type: Dosya
türü. file_types (sayfa 319) 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 316)
Bir katalog üreteci uygulayan eklenti.
file_types= set([])
Bu eklentinin çalı¸stırılaca˘gı çıktı dosya türü, Örne˘gin: ‘epub’ veya ‘xml’
cli_options= []
Bu eklentiye özel CLI ayrı¸stı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\
1.10. Calibreyi özellestirmek
¸
233
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
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˘gilse, eklentinin .ui ve .py dosyalarını zip dosyasından $TMPDIR’e kopyala. Sekme dinamik olarak olu¸sturulup calibre.gui2.dialogs.catalog.py:Catalog içindeki Katalog Seçenekleri ileti¸sim penceresine eklenecektir
run(path_to_output, opts, db, ids, notification=None)
Eklentiyi çalı¸stır. Alt sınıflarda uygulanmalıdır. file_types’da belirtilen biçimde katalo˘gu ü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¸sturulmalıdır.
Parametreler
• path_to_output – Üretilen katalog dosyasına mutlak yol.
• opts – Anahtar kelime de˘gi¸skenlerinden olu¸san 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 316)
capabilities= frozenset([])
Bu eklenti tarafından desteklenen yetenek kümesi. Kullanı¸slı yetenekler: ‘identify’, ‘cover’
touched_fields= frozenset([])
Bu eklenti tarafından tanımlama a¸saması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
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˘gın gerçekten de gzip aktarım kodlamasını destekledi˘ginden
emin olun
cached_cover_url_is_reliable= True
Zulalanan kapak URL’leri bazen güvenilmez olabilir (örn. indirme ba¸sarı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ı˘gı in¸sa 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.
234
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
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˘gin 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ı¸slı olacak jeton listesi döndür. Bu fonksiyon ilk
ad göbek adı soyad sırasında jeton döndürmeye çalı¸sır, yazar isminde bir virgül varsa, ismin soyad, di˘ger
ad biçiminde oldu˘gunu farz eder.
get_title_tokens(title, strip_joiners=True, strip_subtitle=False)
Bir ba¸slık al ve bir AND arama sorgusu için kullanı¸slı jeton listesi döndür. Ba˘glaç(iste˘ge ba˘glı) ve noktalama i¸saretleri hariç.
split_jobs(jobs, num)
Bir i¸s listesini olabildi˘gince e¸sit s¸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¸stirmek için ça˘gırın. Tabi ki metadata kayna˘gınıza uygun özel bir algoritma da kullanabilirsiniz.
get_book_url(identifiers)
Bir 3-demet veya None döndür. 3-demet s¸u biçimdedir: (tanımlayıcı_türü, tanımlayıcı_de˘geri, 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˘geri
URL ile ili¸skili tanımlayıcıya kar¸sılık gelir. Bu URL bir insanın tarayıcıyla gezebilece˘gi bir URL olmalıdır.
Kullanıcı için bu kaynaktaki kitapların sayfalarını kolayca gezebilece˘gi bir ba˘glantı olması amacını ta¸sı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¸sturulacaksa uygulayın.
get_book_url_name(idtype, idval, url)
get_book_url()’nin döndürdü˘gü de˘gerden okunabilir bir isim döndür.
get_book_urls(identifiers)
Override this method if you would like to return multiple urls for this book. Return a list of 3-tuples. By
default this method simply calls get_book_url() (sayfa 321).
get_cached_cover_url(identifiers)
Tanımlayıcılar sözlü˘günce tanımlanan kitap için zulalanmı¸s kapak URL’sini veya böyle bir URL yoksa
None döndür.
Bu metodun yalnızca do˘grulanmı¸s URL’ler döndürmesi gerekti˘gine 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¸slı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 321) ça˘grısı sonucunu sıralamaya yarar.
Varsayılan algoritma detayları için bknz InternalMetadataCompareKeyGen (sayfa 322). Varsayılan algoritma uygun de˘gilse bu fonksiyonu tekrar uygulayın.
identify(log, result_queue, abort, title=None, authors=None, identifiers={}, timeout=30)
Bir kitabı ba¸slık/yazar/isbn/vs. özelli˘gine göre tanımla
1.10. Calibreyi özellestirmek
¸
235
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Tanımlayıcı(lar) belirtilmi¸s ve bir e¸sle¸sme bulunamamı¸ssa ve bu metadata kayna˘gı ilgili tüm tanımlayıcılar
kaydetmemi¸sse (örne˘gin, bir kitabın tüm ISBN’leri), bu metod sadece ba¸slık ve yazar (belirtildiklerini farz
ederek) ile tekrar denemelidir.
Bu metadata kayna˘gı kapak da sa˘glıyorsa, kapa˘gın URL’si kapak getirme API’si ile tekrar tekrar aynı
ISBN/özel tanımlayıcı ça˘grısı yapıldı˘gı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˘gınca
döndürülen sonuçların sırasını belirten bir tamsayı olan source_relevance özniteli˘gi olmalıdır. Bu tam sayı
compare_identify_results() tarafından kullanılacaktır. Sıra önemli de˘gilse, 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ı˘gından
emin ol.
Parametreler
• log – Bir sistem günlü˘gü nesnesi, hata ayıklama bilgisi/hatası çıktılamak için kullanın
• result_queue – Bir sonuç Kuyru˘gu, sonuçlar buna koyulmalı. Her sonuç bir Metadata
nesnesidir
• abort – E˘ger abort.is_set() True döndürürse, i¸slemeyi durdur ve en kısa sürede dön
• title – Kitabın ba¸slı˘gı, None olabilir
• authors – Kitap için yazarlar listesi, None olabilir
• identifiers – Di˘ger tanımlayıcıları içeren bir sözlük, en yaygın s¸ekliyle {‘isbn’:‘1234...’}
• timeout – Saniye cinsinden zaman a¸sımı, hiçbir a˘g iste˘gi zaman a¸sımından uzun sürmemeli.
Dönü¸s de˘geri: Hataya rastlanmadıysa None, aksi halde hatanın kullanıcıya gösterilebilecek evrensel kodda temsili
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 321) metodundakiyle aynı
anlamdadırlar. (self, cover_data)’yı result_queue’ya koy.
Bu metod verimlilik için uygun olan her durumda zulalanmı¸s kapak URL’lerini kullanmalıdır. Zulalı veri
olmadı˘gında, ço˘gu eklenti identify’ı ça˘gı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˘ginde, Metadata nesnelerinin uygunlu˘gunun kar¸sıla¸stırması için bir sıralama anahtarı
üret. Bu yalnızca aynı metadata kayna˘gından gelen sonuçları kar¸sıla¸stırmak için kullanılır, farklı kaynaklar
arasında de˘gil.
Arama anahtarı artan sırada sıralamanın azalan uygunluk sırasında sıralama oldu˘gundan emin olur.
236
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Algoritma:
•Sorguda oldu˘gu gibi en az bir tanımlayıcısı olan sonuçları tercih et
•Zulalanmı¸s 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¸slı˘gı birebir e¸sle¸sen sonuçları tercih et
•Daha uzun yorumlu sonuçları tercih et (%10 uzunluktan fazlası)
•Sonucun uygunlu˘gunu metadata kayna˘gının aramasından gelen rapor olarak kullan motor
Dönüstürme
¸
eklentileri
class calibre.customize.conversion.InputFormatPlugin(*args)
Taban: calibre.customize.Plugin (sayfa 316)
InputFormatPlugins bir belgeyi HTML+OPF+CSS+vs. ye dönü¸stürmekle sorumludurlar. Dönü¸stürmenin sonuçları UTF-8 ile kodlanmı¸s olmak zorundadır. Esas olay convert() (sayfa 323) içinde gerçekle¸sir.
file_types= set([])
Bu eklentinin çalı¸saca˘gı dosya türü kümesi. Örne˘gin: set([’azw’, ’mobi’, ’prc’])
is_image_collection= False
True ise, bu girdi eklentisi HTML dosyası ba¸sına bir resim koleksiyonu üretir. Bu, dönü¸stü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˘geri kullanılabilir tüm çekirdeklerin kullanılaca˘gı
anlamına gelir
for_viewer= False
True olarak ayarlanırsa, girdi eklentisi çıktısını görüntülemeye uygun hale getirmek için özel i¸slemden
geçirir
output_encoding= ‘utf-8’
Bu girdi eklentisinin dosyaları içinde olu¸sturdu˘gu kodlama. None de˘geri kodlamanın belirtilmemi¸s oldug˘ unu ve ba˘gımsız s¸ekilde algılanması gerekti˘gini belirtir
common_options= set([<calibre.customize.conversion.OptionRecommendation object at 0x7f74d6fedb10>])
Tüm girdi biçim eklentilerince payla¸sılan seçenekler. Alt sınıflarda ezmeyin. Bunun yerine options
(sayfa 323) kullanın. Her seçenek bir OptionRecommendation örne˘gi olmalıdır.
options= set([])
Bu eklentinin davranı¸sını özelle¸stirecek seçenekler. Tüm seçenekler OptionRecommendation örne˘gi
olmalıdırlar.
recommendations= set([])
(seçenek_ismi, önerilen_de˘ger, ö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 ˙Içindekiler ile aynı sıradadır.
1.10. Calibreyi özellestirmek
¸
237
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
convert(stream, options, file_ext, log, accelerators)
Bu metod alt sınıflarda uygulanmalıdır. Olu¸sturulan OPF dosyasına yolu veya bir OEBBook örne˘gi döndürmelidir. Tüm çıktı mevcut dizinde içerilmelidir. Bu eklenti mevcut dizin dı¸sında bir yerde dosya olu¸sturuyorsa bunların metod dönmeden önce silinmesi/silme için i¸saretlenmesi gerekir.
Parametreler
• stream – Girdi dosyasını içeren dosya benzeri nesne.
• options – Dönü¸stürme sürecini özelle¸stirecek seçenekler. Bu eklentice bildirilen tüm seçeneklere kar¸sılık gelen özniteliklere sahip olaca˘gı garantidir. Ek
olarak, tamamlayıcı de˘gerleri sıfırdan yukarı do˘gru alan ayrıntılı bir özniteli˘gi olacaktır. Yüksek sayılar daha ayrıntılı demektir. Kullanı¸slı ba¸ska bir öznitelik de calibre.customize.profiles.InputProfile örne˘gi olan
input_profile özniteli˘gidir.
• 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˘gi, dönü¸stürmenin sonraki a¸samalarını
hızlandıracak olan çe¸sitli bilgileri içeren sözlük.
postprocess_book(oeb, opts, log)
Girdi eklentisinin kitap ayrı¸stırıldıktan sonra i¸slem yapmasına izin vermek için ça˘grılır.
specialize(oeb, opts, log, output_fmt)
Girdi eklentisinin ayrı¸stırılan kitabı belli çıktı biçimine özelle¸stirmesine izin vermek için ça˘grılır. Ayrı¸stırılan kitaba herhangi dönü¸stürme yapılmadan önce postprocess_book’dan sonra ça˘grılır.
gui_configuration_widget(parent, get_option_by_name, get_option_help, db, book_id=None)
Bu eklentiyi calibre GUI’sinde yapılandırmaya yarayan parçacı˘gı olu¸sturmak için ça˘grılır. Parçacık bir
PluginWidget sınıfı örne˘gi olmalıdır. Örnekler için girdi eklentileri olu¸sturmaya göz atın.
class calibre.customize.conversion.OutputFormatPlugin(*args)
Taban: calibre.customize.Plugin (sayfa 316)
OutputFormatPlugins bir OEB belgesini (OPF+HTML) bir e-kitap çıktısına dönü¸stürmekle sorumludurlar.
OEB belgesinin UTF-8 ile kodlanmı¸s oldu˘gu varsayılabilir. Ana olay convert() (sayfa 324) içinde gerçekles¸ir.
file_type= None
Bu eklentinin çıktıladı˘gı dosya türü (noktasız son ek)
common_options= set([<calibre.customize.conversion.OptionRecommendation object at 0x7f74d6fedc90>])
Tüm girdi biçim eklentilerince payla¸sılan seçenekler. Alt sınıflarda ezmeyin. Bunun yerine options
(sayfa 324) kullanın. Her seçenek bir OptionRecommendation örne˘gi olmalıdır.
options= set([])
Bu eklentinin davranı¸sını özelle¸stirecek seçenekler. Tüm seçenekler OptionRecommendation örne˘gi
olmalıdırlar.
recommendations= set([])
(seçenek_ismi, önerilen_de˘ger, önerilen_seviye) biçiminde 3’lü demet kümesi
convert(oeb_book, output, input_plugin, opts, log)
oeb_book içeri˘gini (calibre.ebooks.oeb.OEBBook örne˘gidir) çıktı ile belirtilen dosyaya gerçekle.
Parametreler
238
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
• 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ü¸stürme boru hattının ba¸sında kullanılan girdi eklentisi.
• opts – Dönü¸stürme seçenekleri. Bu eklentinin SeçenekÖnerilerine kar¸sı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¸sleminden sonra css’e de˘gi¸siklik yapmak için kullanılabilir.
Parametreler
• item – ˙I¸slenen ö˘ge (HTML dosyası)
• stylizer – Ö˘ge için düzle¸stirilmi¸s biçemleri içeren Stylizer nesnesi. Herhangi bir ö˘genin
biçemini stylizer.style(ö˘ge) 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ı˘gı olu¸sturmak için ça˘grılır. Parçacık
bir PluginWidget sınıfı örne˘gi 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 325) dir. Ancak aygıtınız kendisini i¸sletim sistemine
USBMS sürücüsü olarak gösteriyorsa bu tür cihazları destekeleyecek her türlü mantı˘gı uyguladı˘gından USBMS sınıfını kullanmalısınız.
class calibre.devices.interface.DevicePlugin(plugin_path)
Taban: calibre.customize.Plugin (sayfa 316)
Artalanlarca uygulanması gereken, bir e-kitap okuyucu ile ileti¸sim kurmaya yarayan arayüzü tanımlar.
FORMATS= [’lrf’, ‘rtf’, ‘pdf’, ‘txt’]
Desteklenen biçimlerin sıralı listesi
VENDOR_ID= 0
VENDOR_ID bir tam sayı, tamsayı listesi veya sözlük olabilir. Bir sözlükse, sözlüklerin sözlü˘gü olmalıdır,
s¸u s¸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¸san liste olabilir.
THUMBNAIL_HEIGHT= 68
Küçük resimlerin aygıttaki yüksekli˘gi
1.10. Calibreyi özellestirmek
¸
239
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
THUMBNAIL_COMPRESSION_QUALITY= 75
Küçük resimlerin aygıttaki geni¸sli˘gi. Bunu ayarlamak küçük resimleri bu boyutta olmaya zorlar, en-boy
oranını korumaz. Ayarlanmamı¸ssa, en-boy oranı korunur ve küçük resim THUMBNAIL_HEIGHT’dan
yüksek olamaz. Küçük resimler için sıkı¸stırma kalitesi. Bunu 100’e yakın tutarak daha kaliteli ve daha az
sıkı¸stı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¸sle¸stirme 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˘gı.
CAN_DO_DEVICE_DB_PLUGBOARD= False
Aygıtın device_db metadata santralini ele alıp alamayaca˘gı
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
s¸unun takma adı: Annotation
OPEN_FEEDBACK_MESSAGE= None
GUI bunu None de˘gilse bir ileti olarak gösterir. Açma uzun sürüyorsa kullanı¸slıdır
VIRTUAL_BOOK_EXTENSIONS= frozenset([])
Aygıtta “sanal kitap” olan uzantılar kümesi ve bu sebepten görüntülenemez/kaydedilemez/kitaplı˘ga eklenemez Örne˘gin: frozenset([’kobo’])
NUKE_COMMENTS= None
Kitabın aygıta yollanan kopyasında yorumlar tamamen silinsin mi. None de˘gilse bunun yorumların de˘gi¸stirilece˘gi kısa bir metin olması gerekir.
MANAGES_DEVICE_PRESENCE= False
True ise bu aygıtın aygıt algılamayı, çıkarmayı vs. tamamen yönetti˘gini 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ı˘gı 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¸slerden sorumludur. calibre aralıklarla detect_managed_devices()
metodunu ça˘gırır ve algılanan bir aygıt döndürürse, calibre open() ça˘gırır. open() önceki ça˘grılar ba¸sarısız
olsa bile bir aygıt dönerse her zaman ça˘grılır, yani sürücü ba¸sarısız olunan aygıtların listesini kendisi tutmalıdır. Benzer s¸ekilde, çıkarma durumunda, calibre eject() ça˘gırır ve sonraki detect_managed_devices()
ça˘grısının None döndü˘günü var sayarsak, post_yank_cleanup() ça˘gı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 328) ça˘gıracaktır.
ASK_TO_ALLOW_CONNECT= False
True olarak ayarlandıysa, calibre kullanıcıya aygıt ilk kez algılandı˘gında aygıtı calibre ile yönetip isteyip istemedi˘gini sorar. Bunu True olarak ayarlarsanız get_device_uid() (sayfa 330)
ve ignore_connected_device() (sayfa 330) ve get_user_blacklisted_devices()
(sayfa 331) ve set_user_blacklisted_devices() (sayfa 331) uygulamalısınız
user_feedback_after_callback= None
Bazı geri ça˘grılar çalı¸stırıldıktan sonra (¸su an yalnızca upload_books) calibre’nin bir ileti penceresi açmasını sa˘glamak için bunu {‘title’:ba¸slık, ‘msg’:ileti, ‘det_msg’:detaylı_ileti} biçiminde bir sözlük olarak
240
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
ayarlayın. Kullanıcıyı bir sürü ileti ile sıkmamaya dikkat edin. Bu de˘gi¸sken her geri ça˘grıdan sonra kontrol
edilir, yalnızca gerçekten ihtiyacınız oldu˘gunda 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˘glıysa True, device_info döndür.
Parametreler devices_on_system – Hali hazırda ba˘glı olan aygıtlar
detect_managed_devices(devices_on_system, force_refresh=False)
Yalnızca MANAGES_DEVICE_PRESENCE True ise ça˘grılır.
Bu sürücünün ele alabilece˘gi 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¸sey olabilir, calibre bu nesneyi kullanmaz, sadece open()’a geçirilir.
Bu metod GUI tarafından aralıklarla ça˘grılır, fazla kaynak tüketmedi˘ginden 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˘grı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ı¸s ve ba¸sarıyla açılmı¸ssa 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¸s
• log_packets – True ise aygıta giden/aygıttan gelen paket akı¸sı kaydedilir
• report_progress – % süreciyle çe¸sitli i¸sler için ça˘grılan fonksiyon (sayı 0 ve 100 arasında)
-1 ile ça˘grılırsa i¸sin süreç bilgisi olmadı˘gı 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˘gını görmek için aygıt üstünde ek kontroller yapan iste˘ge ba˘glı metod.
Ele alamayacaksa False döndürmelidir. Bu metod yalnızca satıcı, ürün kimlikleri ve bcd e¸sle¸stikten sonra
ça˘grılır, yani göreceli olarak zamana ba˘glı kontroller yapabilir. Varsayılan uygulaması True döndürür. Bu
metod yalnızca windows üstünde ça˘grılır. Ayrıca bakınız can_handle() (sayfa 327).
Parametreler device_info – Windows’da bir aygıt kimli˘gi karakter dizisi. Unix’de
(satıcı_kimli˘
gi, ürün_kimli˘
gi, bcd) demeti.
can_handle(device_info, debug=False)
can_handle_windows() (sayfa 327) 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¸sim kuran di˘ger fonksiyonlardan önce ça˘grılır. Örne˘gin: Kendilerini USB depolama aygıtı olarak tanıtan aygıtlarda, bu metod aygıtı ba˘glamakla veya aygıt otomatik ba˘glandıysa, nereye ba˘glandı˘gını ö˘grenmekle sorumlu olur.
calibre.devices.usbms.device.Device.open() metodunun bu fonksiyonun USB depolama aygıtlarıyla ilgili iyi bir örnek olacak uygulaması vardır.
1.10. Calibreyi özellestirmek
¸
241
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Bu metod kullanıcıya bir ileti göstermek için bir OpenFeedback istisnası yükseltebilir.
Parametreler
• connected_device – Açmaya çalı¸stı˘gımız aygıt. (satıcı kimli˘gi, ürün kimli˘gi, 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ı˘gının UUID’si. Bir kitaplık yoksa None olabilir (örne˘gin komut satırından kullanıldı˘gında).
eject()
Aygıtın i¸sletim sisteminden ba˘gını ayır/çıkart. Bu aygıtla ileti¸sim kurmaya çalı¸san GUI i¸slerinin olup olmadı˘gını kontrol etmez.
NOT: Bu metod di˘ger aygıt metodlarıyla aynı i¸s ipli˘ginde ça˘grılamayabilir.
post_yank_cleanup()
Kullanıcı aygıtı çıkarmadan birden çektiyse ça˘grılır.
set_progress_reporter(report_progress)
Süreç bilgisini raporlaması için bir fonksiyon ayarla.
Parametreler report_progress – % süreciyle çe¸sitli i¸sler için ça˘grılan fonksiyon (sayı 0 ve 100
arasında) -1 ile ça˘grılırsa i¸sin süreç bilgisi olmadı˘gı anlamına gelir
get_device_information(end_session=True)
Aygıtı aygıt bilgisi için sorgula. Bknz L{DeviceInfoQuery}.
Dönü¸s de˘geri: (aygıt ismi, aygıt sürümü, aygıttaki yazılım sürümü, mime türü) Demet iste˘ge
ba˘glı olarak be¸sinci bir sürücü bilgisi demeti alabilir. Örnek için usbms.driver’a göz atın.
get_driveinfo()
driveinfo sözlü˘günü döndür. Genellikle get_device_information() içinden ça˘grılır, ama bu sürücü için driveinfo yüklenmesi yava¸ssa, SLOW_DRIVEINFO’yu ayarlamalıdır. Bu durumda, bu metod calibre tarafından kitap listeleri yüklendikten sonra ça˘grılır. Bunun aygıt i¸s ipli˘ginde ça˘grılmadı˘gına dikkat edin, yani
sürücü books() metodundaki aygıt bilgisini zulalamalı ve bu fonksiyon zulalanmı¸s veriyi döndürmelidir.
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 ö˘geli bir kartlar üstündeki yollara ön ekler listesi döndür. Herhangi bir kart mevcut de˘gilse kart ön eki olarak Non
1. Cihaz hafızası
2. Hafıza Kartı A
3. Hafıza Kartı B
Dönü¸s de˘geri: (1, 2, 3) bayt toplam alanlı 3 elemanlı liste. E˘ger herhangi bir aygıt bu konumlardan birine sahip de˘gilse 0 döndürmelidir.
free_space(end_session=True)
Ba˘glantı noktalarında kullanılabilir olan bo¸s alanı al:
1. Cihaz hafızası
2. Kart A
242
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
3. Kart B
Dönü¸s de˘geri: (1, 2, 3) bayt bo¸s alanlı 3 elemanlı liste. Herhangi bir aygıt bu konumlardan birine
sahip de˘gilse -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˘gindeki e-kitapların listesini döndürür.E˘ger bir kart belirtilmi¸s
ve kartta hiç kitap yoksa bo¸s liste döndürür.
Dönü¸s de˘geri: 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˘gi¸stirilmelidir. Bu metod aygıtta yeterli
yer yoksa FreeSpaceError yükseltmelidir. FreeSpaceError’un metni on_card None de˘gilse “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˘gilse, Metadata nesneleri listesidir. Ana fikir kitabı aygıtta nereye
koyaca˘gını metadata kullanarak belirlemektir. len(metadata)== len(dosyalar). Sıradan kapaktan ayrı olarak (kapa˘ga yol), ayrıca iste˘ge ba˘glı kullanılabilecek küçük resim özniteli˘gi
olabilir. Küçük resim özniteli˘gi (geni¸slik, yükseklik, jpeg olarak kapak verisi) biçimindedir.
Dönü¸s de˘geri: 3 elemanlı demetler listesi. Liste add_books_to_metadata() (sayfa 329)
ya geçirilmek üzere dü¸sünülmü¸stür.
classmethod add_books_to_metadata(locations, metadata, booklists)
Kitaplistelerine konumlar ekle. Bu fonksiyon aygıtla ileti¸sime geçmemelidir.
Parametreler
• locations – L{upload_books} ça˘grısı sonucu
• metadata – Metadata nesneleri listesi, upload_books() (sayfa 329) için olanın aynısı.
• booklists – (books(oncard=None)(), books(oncard=’carda’)(), :meth‘books(oncard=’cardb’)‘)
ça˘grı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¸sime geçmemelidir.
Parametreler
• paths – aygıttaki kitaplara yollar.
• booklists – (books(oncard=None)(), books(oncard=’carda’)(), :meth‘books(oncard=’cardb’)‘)
ça˘grıları sonucunu içeren bir demet.
sync_booklists(booklists, end_session=True)
Aygıttaki metadata’yı güncelle.
1.10. Calibreyi özellestirmek
¸
243
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Parametreler booklists – (books(oncard=None)(), books(oncard=’carda’)(), :meth‘books(oncard=’ca
ça˘grı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 327)
ça˘grı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 330) içinde olu¸sturulan parçacı˘gı 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˘gi 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˘gla. Bu metod add_books
ve sync_booklists’den hemen önce ça˘grılır.
pb_func s¸u imzaya sahip bir ça˘grılabilirdir: def pb_func(aygıt_ismi, biçim, santraller)
Mevcut aygıt ismini (sınıf ismi veya DEVICE_PLUGBOARD_NAME), ilgilendi˘giniz biçimi (‘gerçek’
bir biçim veya ‘device_db’), ve santralleri (bu metodu aldı˘gınız yer de olan set_plugboards ile almı¸stınız)
verirsiniz.
Dönü¸s de˘geri: None veya tekli bir santral örne˘gi.
set_driveinfo_name(location_code, name)
Driveinfo dosyasındaki aygıt adını ‘isim’ olarak ayarla. Bu ayar dosya tekrar olu¸sturulana veya ismi tekrar
de˘gi¸stirilene kadar kalacaktır.
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˘ginde, ba¸ska 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˘gi, geri izleme)
startup()
Calibre aygıtı ba¸slatırken ça˘grılır. Gerekli ilklendirmeleri yapın. Sınıfın birden fazla örne˘ginin ilklendirilebilece˘gi, yani __init__’in birden çok ça˘grılabilece˘gini, ama yalnızca bir örne˘ginin bu metodu ça˘gıraca˘gını
unutmayın. Bu metod aygıt i¸s ipli˘ginde ça˘grılır, GUI sürecinde de˘gil.
shutdown()
Calibre kapanırken ça˘grılır, tam kapanırken ya da yeniden ba¸slatılırken. Gerekli temizli˘gi yapın. Bu metod
GUI i¸s ipli˘ginde de˘gil aygıt sürecinde ça˘grılır.
get_device_uid()
Hazırda ba˘glı olan aygıt için benzersiz bir kimlik döndürmelidir (ba¸sarılı open() ça˘grısından hemen sonra
ça˘grı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˘grı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
244
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
open() metodunun hemen ardından ça˘grı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˘gi 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˘grı sitelerinin prefs[’bir s¸eyler’] yerine device_prefs[’bir s¸eyler’] kullandı˘gından emin olmalısınız. Metodunuz
device_prefs.set_overrides(pref=val, pref=val, ...) ça˘gırlmalıdır. Mevcut durumda s¸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ı˘gıyla ilgili bilgi istiyorsanız bu metodu uygulayın. Bu metod açılı¸sta ve ba˘glıyken
calibre kitaplı˘gı de˘gi¸sti˘ginde ça˘grılır.
is_dynamically_controllable()
Eklentiler ba¸slatılırken aygıt yöneticisi tarafından ça˘grı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¸surken kullanılır.
Bu metod GUI sürecinde ça˘grılabilir. Bu metodu uygulayan bir sürücü i¸s ipli˘gi güvenli˘gi sa˘glamalıdır.
start_plugin()
Bu metod eklentiyi ba¸slatmak için ça˘grılır. Eklenti aygıt ba˘glantılarını her nasıl yapıyorsa öyle kabul etmeye ba¸slamalıdır. Eklenti zaten ba˘glantı kabul ediyorsa, bir s¸ey yapma.
Bu metod GUI sürecinde ça˘grılabilir. Bu metodu uygulayan bir sürücü i¸s ipli˘gi güvenli˘gi sa˘glamalıdır.
stop_plugin()
Bu metod eklentiyi durdurmak için ça˘grılır. Eklenti artık ba˘glantı kabul etmemeli, ve arkasını temizlemelidir. shutdown’u bu metodun ça˘gırması beklenebilir. Eklenti zaten ba˘glantı kabul etmiyorsa, bir s¸ey
yapma.
Bu metod GUI sürecinde ça˘grılabilir. Bu metodu uygulayan bir sürücü i¸s ipli˘gi güvenli˘gi sa˘glamalıdır.
get_option(opt_string, default=None)
opt_string tarafından gösterilen seçene˘gin de˘gerini döndür. Bu metod eklenti ba¸slatılmadı˘gında ça˘grılabilir.
Seçenek mevcut de˘gilse None döndür.
Bu metod GUI sürecinde ça˘grılabilir. Bu metodu uygulayan bir sürücü i¸s ipli˘gi güvenli˘gi sa˘glamalıdır.
set_option(opt_string, opt_value)
opt_string tarafından gösterilen seçene˘gin de˘gerini ayarla. Bu metod eklenti ba¸slatılmadan ça˘grılabilir.
Bu metod GUI sürecinde ça˘grılabilir. Bu metodu uygulayan bir sürücü i¸s ipli˘gi güvenli˘gi sa˘glamalıdır.
is_running()
Eklenti ba¸slatıldıysa True döndür, yoksa false
Bu metod GUI sürecinde ça˘grılabilir. Bu metodu uygulayan bir sürücü i¸s ipli˘gi güvenli˘gi sa˘glamalıdır.
synchronize_with_db(db, book_id, book_metadata, first_call)
Aygıttaki bir kitap calibre veri tabanındaki bir kitapla e¸sle¸since kitap e¸sle¸stirme sırasında ça˘grılır. Bu metod
aygıttan calibre veri tabanına (gerekliyse) veri e¸szamanlamakla yükümlüdür.
Metod iki de˘gerli bir demet döndürmelidir. ˙Ilk de˘ger calibre veri tabanı de˘gi¸stiyse de˘gi¸sen kitap kimliklerinin kümesi veya de˘gi¸smediyse None’dir. ˙Ilk de˘ger bo¸s 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˘gruyken ve aygıta gönderilmesi gerekiyorken faydalıdır.
1.10. Calibreyi özellestirmek
¸
245
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
˙Ikinci de˘ger bir 2-li demettir. Demetteki ilk de˘ger aygıta bir kitap biçimi gönderilip gönderilmeyece˘gini
belirtir. Amaç aygıttaki kitabın calibre’deki kitapla aynı oldu˘gunu do˘grulamaktır. Bu de˘ger 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˘gerli tüm
kitaplar için bir send_books i¸si olu¸sturacaktır. Not: uzantıyı sonradan alma amacı dı¸sında, aygıtın dosya
ismini üretmek için bir s¸ablon kullandı˘gı durumlarda dosya ismi göz ardı edilir, ki ço˘gu kullanır. Dönen
demetteki ikinci de˘ger biçimin ileri tarihli olup olmadı˘gını gösterir. ˙Ileri 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ı¸sır. Aygıt yöneticisinin i¸s ipli˘gine dikkat ederek i¸s ipli˘gi güvenli
olmalıdır.
book_id: kitap için veri tabanındaki calibre kimli˘gi. book_metadata: aygıttan gelen kitap için Metadata
nesnesi. first_call: Bir e¸szamanlama sırasında bu ilk ça˘grı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¸slı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˘gi olmalıdır
7.etiketler (bir karakter dizisi listesi, bo¸s olabilir).
supports_collections()
Aygıt bu kitap listesi için koleksiyonları destekliyorsa True döndür.
add_book(book, replace_metadata)
Kitabı kitap listesine ekle. Amaç tüm aygıt-dahili metadatayı yönetmektir. Kitaplisteleri e¸szamanlanmalı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¸sturulan koleksiyon sözlü˘gü döndür. Sözlükteki her girdi koleksiyon_ismi:[kitap listesi] biçimindedir
Kitap listesi, serilerden olu¸sturulan koleksiyonlar dı¸sında - bu durumda series_index kullanılır - kitap ba¸slı˘gı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¸slevlerini a¸sa˘gıda belgelendi˘gi gibi temel aldıkları sınıflardan alırlar. Genel basit bir USBMS tabanlı sürücü s¸una benzer:
=
{}=
{}@default
246
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
=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 325)
Bu sınıf kendini USB Depolama aygıtı olarak aktaran aygıtların tüm sürücüleri için genel mantı˘gı sa˘glar. Tüm
platformlarda geçerli USBMS ba˘glama/çıkarma uygulamalarını sa˘glar.
WINDOWS_MAIN_MEM= None
Windows PnP kimlik karakter dizilerinde aygıtın ana belle˘gini tanımlayan karakter dizisi. Bu None, karakter dizisi, karakter dizisi listesi veya derlenmi¸s 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¸s 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¸s düzenli ifade olabilir
OSX_MAIN_MEM_VOL_PAT= None
Depolama kartlarından ana belle˘gi ayırmak için yeni sürücü algılama tarafından kullanılır. OS X tarafından
atanan ana bellek ba˘glantı konumuyla e¸sle¸sen bir düzenli ifade olmalıdır
MAX_PATH_LEN= 250
Aygıtta olu¸sturulan azami yol uzunlu˘gu
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˘grılır. Örn.: EB600
sanitize_callback(path)
1.10. Calibreyi özellestirmek
¸
247
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Ba˘gımsız aygıt sürücülerin create_upload_path() tarafından kullanılan yol düzenlemesini ezmesine izin veren geri ça˘grı.
filename_callback(default, mi)
Sürücülerin create_upload_path() tarafından ayarlanan varsayılan dosya ismini de˘gi¸stirmesine
izin veren geri ça˘grı.
sanitize_path_components(components)
Aygıta yüklenecek dosyalar için yol bile¸senlerinde 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ı˘gı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 334), calibre.devices.usbms.device.Device
(sayfa 333)
Tüm USBMS aygıtlar için temel sınıf. Gönderme/alma/metadata güncelleme/metadata zulalama/vs. için mantı˘gı
uygular
upload_cover(path, filename, metadata, filepath)
Kitap kapa˘gını aygıta yükle. Varsayılan uygulama hiçbir s¸ey yapmaz.
Parametreler
• path – ˙Ili¸skili kitabın bulundu˘gu 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
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¸s 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˘gundaki tüm ö˘geler ve
içerik menüsü bu eklentilerce uygulanır.
Bu sınıfın bu eklentiler için taban sınıf oldu˘gunu unutmayın, ancak, eklentiyi calibre’nin eklenti sistemiyle birle¸stirmek 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.
˙Iki 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.
248
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
˙Ilklendirildikten sonra, bu eklentinin gui üyesi ile ana calibre GUI’sine eri¸simi vardır. Di˘ger eklentilere isimle
eri¸sebilirsiniz, örne˘gin:
=
{}=
{}@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¸smek için, interface_action_base_plugin özniteli˘gini kullanın, bu öznitelik yalnızca eklenti kendisi ilklendirildi˘ginde kullanılabilir olur. do_user_config() gibi eklenti sınıfından metodlar kullanmak istedi˘ginizde faydalıdır.
action_spec tarafından belirtilen QAction self.qaction olarak otomatik olarak olu¸sturulur ve kullanılabilir.
name= ‘Implement me’
Eklenti adı. Aynı isme sahip iki eklenti varsa, yüksek öncelikli olan seçilir.
priority= 1
Eklenti önceli˘gi. Aynı isme sahip iki eklenti varsa, yüksek öncelikli olan seçilir.
popup_type= 1
Bu eklentinin araç çubu˘guna eklenmesi durumu için menü açılır pencere türü
auto_repeat= False
Bu eylemin kısayol tu¸su basılı tutuldu˘gunda otomatik olarak yinelenip yinelenmeyece˘gi.
action_spec= (‘text’, ‘icon’, None, None)
Su
¸ 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¸skili bir klavye
kısayolu kaydedilmez. Bo¸s bir demet yollarsanız, kısayol varsayılan bir tu¸s ba˘gı olmadan kaydedilir.
action_add_menu= False
True ise, bir menü self.qaction’a otomatik olarak olu¸sturulur ve eklenir
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˘gi¸skeni 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˘gil 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¸sme s¸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˘gı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˘gırmayın, bu calibre UI’si tarafından halledilir.
1.10. Calibreyi özellestirmek
¸
249
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
drop_event(event, mime_data)
Bu metod bazı kullanı¸slı eylemler gerçekle¸stirmeli ve bu arayüz bırak eylemini yapabilme becerisine
sahipse True döndürmeli. Olayda kabul et/göz ardı et ça˘gırmayın, bu calibre UI’si tarafından halledilir. Bu fonksiyonda engelleyici/uzun i¸slemler 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ı¸slı bir metod. Olu¸sturulan QAction’u döndürür. Bu
eylemin, None olmadı˘gında bu eylemin klavye yöneticisiyle kaydedilmi¸s benzersiz ismini gösteren ek bir
calibre_shortcut_unique_name özniteli˘gi vardır.
Parametreler
• menu – Yeni olu¸sturulan eylemin eklenece˘gi QMenu
• unique_name – Bu eylem için benzersiz bir isim, bu program genelinde benzersiz olmalıdır, yani olabildi˘gince 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˘glayıcısı olmayan bir klavye
kısayolu kaydedilir. Karakter dizisi ve karakter dizisi listeleri belirtilen varsayılan tu¸s atamasını kaydeder.
• description – Bu eylem için tanım. Araç ipuçlarını ayarlamak için kullanılır.
• triggered – Olu¸sturulan eylemin tetiklenen sinyaline ba˘glanmak üzere bir ça˘grılabilir.
• shortcut_name – Bu eylem için klavye kısayolları özelle¸stirilirken kullanıcıya gösterilecek metin. Varsayılan olarak bu ‘‘text‘‘in de˘gerine ayarlanır.
load_resources(names)
Bu eklenti bir ZIP dosyasıyla gelirse (kullanıcı tarafından eklenmi¸s eklenti), bu metod ZIP dosyasından
kaynakları yüklemenizi sa˘glar.
Örne˘gin 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ü¸s de˘geri: {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¸samasında bir kere ça˘grı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˘gi¸sti˘ginde ça˘grılır. Su
¸ an loc için de˘gerler: kitaplık, ana,
kart ve kartb.
250
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Bu metod bu eylemi ve alt eylemlerini konuma uygun olarak açmalı/kapamalı.
library_changed(db)
Mevcut kitaplık de˘gi¸sti˘ginde ça˘grılır.
Parametreler db – Mevcut kitaplı˘ga kar¸sılık gelen LibraryDatabase.
gui_layout_complete()
Ana GUI’nin yerle¸simi tamamlandı˘gında her eylem için bir kere ça˘grılır. Eyleminiz yerle¸simde de˘gi¸siklik
yapmalıysa, bu de˘gi¸siklikler initialization_complete() yerine burada olmalıdır.
initialization_complete()
Ana GUI ilklendirmesi bitti˘ginde her eylem için bir kere ça˘grılır.
shutting_down()
Ana GUI kapanma evresindeyken her eklenti için bir kere ça˘grılır. Kullanılan kaynakları bırakın, ama
kapatmayı uzun süre engellememeye çalı¸sın.
Dönü¸s de˘geri: Kapatmayı durdurmak için False. Kapatmanın neden durduruldu˘gunu kullanıcıya söylemek sizin sorumlulu˘gunuzda.
class calibre.customize.InterfaceActionBase(*args, **kwargs)
Taban: calibre.customize.Plugin (sayfa 316)
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 316)
Tercihler ileti¸sim penceresinde gösterilen bir parçacı˘gı temsil eden eklenti.
Bu eklentinin sadece bir önemli metodu var create_widget(). Eklentinin çe¸sitli alanları UI’de nasıl kategorilendi˘gini 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
1.10. Calibreyi özellestirmek
¸
251
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
create_widget(parent=None)
Bu tercih grubunu ayarlamak için kullanılan asıl Qt parçacı˘gını olu¸stur ve döndür. Parçacık :class:‘calibre.gui2.preferences.ConfigWidgetInterface‘yi uygulamalıdır.
Varsayılan uygulama parçacı˘gı ilklendirmek için config_widget kullanır.
class calibre.gui2.preferences.ConfigWidgetInterface
Bu sınıf Tercihler ileti¸sim penceresinde gösterilen tüm parçacıkların uygulaması gereken arayüzü tanımlar. Bu
arayüzü uygulayan ve çe¸sitli kolaylık sa˘glayı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˘gi¸siklik yaptı˘gında yayılmalıdır
supports_restoring_to_defaults= True
restore_to_defaults() metodu uygulanmı¸ssa 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ü˘gmesi için araç ipucu
restart_critical= False
True ise Tercihler ileti¸sim penceresi kullanıcının daha fazla tercih ayarlamasına izin vermez. Yalnızca
commit() True döndürdü˘günde etkilidir.
genesis(gui)
Parçacık görüntülenmeden önce bir kere ça˘grılır, gerekli tüm kurulumu gerçekle¸stirmelidir.
Parametreler gui – Ana calibre grafik kullanıcı arayüzü
initialize()
Tüm yapılandırma de˘gerlerini ba¸slangıç de˘gerlerine ayarlamalıdır (yapılandırma dosyalarında saklı de˘gerler).
restore_defaults()
Tüm yapılandırma de˘gerlerini varsayılan de˘gerlerine ayarlamalıdır.
commit()
De˘gi¸sen ayarları kaydet. De˘gi¸siklikler yeniden ba¸slatma gerektiriyorsa True döndür, aksi halde False. Bir
hata oldu˘gunu belirtmek için bir AbortCommit istisnası yükselt. Hatanın ne oldu˘gu ve nasıl düzeltileceg˘ iyle ilgili kullanıcıya bilgi vermek sizin sorumlulu˘gunuzdadır.
refresh_gui(gui)
Bu parçacık i¸slendikten sonra bir kere ça˘grılır. Gui’nin de˘gi¸stirilen ayarları tekrar okumasına yol açmakla
sorumludur. Varsayılan olarak GUI çe¸sitli ö˘geleri zaten tekrar ilklendirir, yani ço˘gu parçacı˘gı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˘gi¸sikli˘gi, varsayılana geri dönme, gui nesneleri ve ayar nesneleri
arası geçi¸sleri vs. otomatik yönetir.
E˘ger yapılandırma parçacı˘gınız bu sınıftan türemi¸s fakat kaydedilmemi¸s ayarlar içeriyorsa,
ConfigWidgetInterface metodlarını ezmeli ve ezilen metodlar içinden taban sınıfın metodlarını
ça˘gı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
252
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
• name – Ayar adı
• config – Ayarı okuyan/yazan yapılandırma nesnesi
• gui_name – Ayarın de˘gi¸stirilebilmesi 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˘
ger), ...] s¸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 316)
type= u’G\xf6r\xfcnt\xfcleyici’
Bu eklentiler calibre görüntüleyiciye i¸slev eklemek için kullanılır.
load_fonts()
Bu metod görüntüleyici açılı¸sında bir kere ça˘grılır. Kullanılabilir olmasını istedi˘gi tüm yazı tiplerini yüklemelidir. Örne˘gin:
=
{}=
{}@default
=0=1=2=0=1=2
\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}{
load_javascript(evaljs)
Bu metod görüntüleyicide yeni bir HTML belgesi yüklendi˘ginde ça˘grılır. Javascript kitaplıklarını görüntüleyiciye yüklemek için kullanın. Örne˘gin:
=
{}=
{}@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˘ginde ça˘grılır. load_javascript() kullanımı s¸eklinde kullanabilirsiniz.
customize_ui(ui)
Bu metod görüntüleyici olu¸sturuldu˘gunda bir kere ça˘grılır. Görüntüleyicinin kullanıcı arayüzünde yapmak
istedi˘giniz özelle¸stirmeler için kullanın. Örne˘gin, araç çubuklarını ui.tool_bar ve ui.tool_bar2 ile de˘gi¸stirebilirsiniz.
customize_context_menu(menu, event, hit_test_result)
Bu metod içerik menüsü (sa˘g-tık) gösterildi˘ginde ça˘grılır. ˙Içerik menüsünü özelle¸stirmek için kullanabilirsiniz. event içerik menüsü olayıdır ve hit_test_result yüklenmi¸s mevcut belgedeki bu olay için QWebHitTestResult’dur.
1.10. Calibreyi özellestirmek
¸
253
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
˘ skenler
1.10.2 Çevresel degi
¸
• CALIBRE_CONFIG_DIRECTORY - yapılandırma dosyalarının saklanaca˘gı/okunaca˘gı dizini ayarlar.
• CALIBRE_TEMP_DIR - calibre için geçici dizini ayarlar
• CALIBRE_CACHE_DIRECTORY - sets the directory calibre uses to cache persistent data between sessions
• CALIBRE_OVERRIDE_DATABASE_PATH - metadata.db için tam yolu belirtmenize izin verir. Bu de˘gi¸skeni
kullanarak metadata.db dosyasını kitaplık dizininin dı¸sında tutabilirsiniz. Bu kitaplık dizininizi a˘g üzerinde
dosya kilitleme özelli˘gi olmayan bir diskte tutuyorsanız faydalı olacaktır.
• CALIBRE_DEVELOP_FROM - calibre’yi geli¸stirme ortamından çalı¸stırmak için kullanılır. Calibre geli¸stirme
ortamı ayarlamak (sayfa 297) 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_NO_NATIVE_FILEDIALOGS - calibre’nin dosya/dizin seçimi için do˘gal dosya ileti¸sim penceresini kullanmamasına neden olur. Etkinle¸stirmek için 1 atayın.
• CALIBRE_NO_NATIVE_MENUBAR - calibre’nin Ubuntu Unity ve benzer linux masaüstü ortamlarında do˘gal
(genel) menü olu¸sturmamasına neden olur. Bunun yerine menü geleneksel olarak pencerenin içine yerle¸stirilir.
• CALIBRE_IGNORE_SYSTEM_THEME - Causes calibre to ignore any system Qt style plugins and use its builtin
style plugin instead. Useful to workaround crashes caused by the system Qt plugin being incompatible with the
version of Qt shipped with calibre.
• SYSFS_PATH - sysfs, /sys dizininden ba¸ska bir dizine ba˘glıysa kullanın
• http_proxy - Linux’ta HTTP vekil sunucuyu belirtmek için kullanılır
Window’ta çevresel de˘gi¸skenler nasıl kullanılır102 veya OS X için çevresel de˘gi¸skenler nasıl kullanılır103 belgelerine
bakın.
1.10.3 ˙Ince Ayarlar
˙Ince ayarlar calibre davranı¸sının çe¸sitli yönlerini kontrol etmek için belirtebilece˘giniz küçük de˘gi¸sikliklerdir. Bunları
Tercihler -> Geli¸smi¸s -> ˙Ince Ayarlar alanından de˘gi¸stirebilirsiniz. ˙Ince ayarlar için varsayılan de˘gerler a¸sa˘gı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.}
102 http://www.computerhope.com/issues/ch000549.htm
103 http://www.dowdandassociates.com/blog/content/howto-set-an-environment-variable-in-mac-os-x-home-slash-dot-macosx-slashenvironment-dot-plist/
254
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
\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}
\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}\
1.10. Calibreyi özellestirmek
¸
255
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
\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
\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
256
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
\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{}}
\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
1.10. Calibreyi özellestirmek
¸
257
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
\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}
\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
258
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
\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}
\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:}
1.10. Calibreyi özellestirmek
¸
259
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
\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}
\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:}
260
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
\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}
\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{
1.10. Calibreyi özellestirmek
¸
261
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
\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 gmail or hotmail. 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
\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}
262
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
\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
\PYG{c}{\PYGZsh{} used the Tweak feature.}
\PYG{c}{\PYGZsh{} Examples:}
\PYG{c}{\PYGZsh{}
default\PYGZus{}tweak\PYGZus{}format = None
(Use output format)}
\PYG{c}{\PYGZsh{}
default\PYGZus{}tweak\PYGZus{}format = \PYGZsq{}EPUB\PYGZsq{}}
\PYG{c}{\PYGZsh{}
default\PYGZus{}tweak\PYGZus{}format = \PYGZsq{}remember\PYGZsq{}}
\PYG{n}{default\PYGZus{}tweak\PYGZus{}format} \PYG{o}{=} \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}
1.10. Calibreyi özellestirmek
¸
263
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
\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.4 Simgelerin, sablonların
¸
ve benzerlerinin üzerine yazmak
calibre simgeler, javascript ve s¸ablonlar gibi sabit kaynakları özelle¸stirdi˘giniz sürümleriyle de˘gi¸stirmenize 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ı¸ssanız bu dizin /opt/calibre/resources olacaktır. Bu
yollar calibre’yi nereye kurmayı seçti˘ginize göre de˘gi¸sebilecektir.
Bir sonraki calibre güncellemesinde üzerine yazılaca˘gı için bu kaynak dizinindeki dosyaları de˘gi¸stirmemelisiniz. Bunun yerine Tercihler->Geli¸smi¸s->Çe¸sitli 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¸sturun ve üzerine yazmak istedi˘giniz dosyaları içine ta¸sıyın. Dosyaları
uygun alt dizinlere yerle¸stirin; örne˘gin resimleri resources/images dizinine koyabilirsiniz. calibre yeniden ba¸sladı˘gında özel dosyalarınızdaki tercihleri otomatik olarak kullanacaktır.
Örne˘gin; Kitapları kaldır eyleminin simgesini de˘gi¸stirmek 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˘gunu kabul edelim, bunu resources/images/trash.png yapılandırma dizinine kaydetmelisiniz. calibre’nin kullandı˘gı bütün simgeler resources/images dizininin alt dizinlerinde bulunurlar.
Not: Yıllar içinde kullanıcılar tarafından calibre için olu¸sturulmu¸s pek çok simge seti bulunmaktadır. Bunları bir arada
forum ba¸slı˘gında104 bulabilirsiniz.
104 http://www.mobileread.com/forums/showthread.php?t=151397
264
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
1.10.5 Eklentilerle calibre’yi özellestirmek
¸
calibre çok modüler bir tasarıma sahiptir. calibre’nin tüm i¸slevselli˘gi neredeyse eklentilerinden gelmektedir. Eklentiler
ileti¸sim, haberleri indirmek (bunlara tarif denilmektedir), kullanıcı arayüzündeki çe¸sitli bile¸senler için, farklı aygıtlara
ba˘glanmak ve dosyaları calibre’ye eklerken i¸slemek 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¸stirebilir ve davranı¸slarını geni¸sletebilirsiniz. Eklenti mimarisi çok basittir, Calibre’nin i¸slevselli˘gini artırmak için kendi eklentilerinizi yazmak (sayfa 206) rehberine bakabilirsiniz.
1.11 Command Line Interface
Not:
OS
X
üzerinde,
komut
satırı
araçları
calibre
ile
birlikte
gelmektedir,
örne˘gin,
calibre’yi
/Applications
altına
kurduysanız
komut
satırı
araçları
/Applications/calibre.app/Contents/console.app/Contents/MacOS/ içinde olacaktır.
1.11.1 Belgelendirilmis¸ Komutlar
calibre
=
{}=
{}@default
=0=1=2=0=1=2calibre [seçenekler] [ekitabın\PYGZus{}yolu]
Calibre Grafik Kullanıcı Arayüzünü çalı¸stırın ve iste˘ge ba˘glı olarak ekitabın_yolu ile veritabanına ekleyin.
Whenever you pass arguments to calibre that have spaces in them, enclose the arguments in quotation marks. For
example “C:some path with spaces”
[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¸slamasına engel olan eklentiler kurmu¸ssanız faydalı olacaktır
--no-update-check
Güncellemeleri denetleme
--shutdown-running-calibre, -s
Çalı¸smakta olan bir calibre oturumu varsa kapanmasını sa˘glar. Devam etmekte olan i¸slemler olması halinde
uyarı vermeksizin kapatılaca˘gı için dikkatle kullanınız.
--start-in-tray
Sistem çekmecesinde küçülterek ba¸slat.
1.11. Command Line Interface
265
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
--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ı˘gı kullan.
calibre-customize
=
{}=
{}@default
=0=1=2=0=1=2calibre\PYGZhy{}customize Tercihleri
Harici eklentiler yükleyerek Calibre’ye özelle¸stirin.
Whenever you pass arguments to calibre-customize that have spaces in them, enclose the arguments in quotation
marks. For example “C:some path with spaces”
[options]
--add-plugin, -a
Eklentiyi içeren ZIP dosyasının bulundu˘gu yeri belirterek eklenti ekleyin.
--build-plugin, -b
Eklenti geli¸stiricileri için:
--customize-plugin
Eklentiyi özelle¸stir. Eklenti ismiyle özelle¸stirme dizesini virgülle ayırarak belirleyin.
--disable-plugin
˙Isimlendirilmi¸s eklentiler geçersiz
--enable-plugin
˙Isimlendirilmi¸s eklentiler geçerli
--help, -h
bu yardım iletisini göster ve çık
--list-plugins, -l
Kurulu eklentileri listele
--remove-plugin, -r
˙Isminden 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 [seçenekler]
266
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Calibre hata ayıklamaları için yararlı bir çok komut satırı arayüzleri. Seçenek verilmedi˘ginde bu komut gömülü bir
python yorumlayıcı ba¸slatır. Ayrıca ana calibre arayüzünü, calibre görüntüleyicisini ve calibre düzenleyicisini hata
ayıklama kipinde çalı¸stırabilirsiniz.
Ayrıca komut satırı araçları içermeyen yazı tipi ayarları, ekitap fark aracı gibi calibre’ nin bir çok i¸slevi için arayüzler
içerir.
Ayrıca calibre-debug uygulamasını tek betikleri çalı¸stırmak için de kullanabilirsiniz. Su
¸ s¸ekilde:
calibre-debug myscript.py --option1 --option2 dosya1 dosya2 ...
– sonrasındaki her s¸ey beti˘ge geçirilecektir.
Whenever you pass arguments to calibre-debug that have spaces in them, enclose the arguments in quotation marks.
For example “C:some path with spaces”
[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ı¸stır
--debug-device-driver, -d
Cihaz tarama hata ayıklama çıktısı
--default-programs
(Un)register calibre from Windows Default Programs. --default-programs=(register|unregister)
--diff
Calibre fark aracını çalı¸stır. Mesela: calibre-debug --diff (sayfa 267) dosya1 dosya2
--edit-book, -t
Calibre Kitabı Düzenle aracını hata ayıklama kipinde ba¸slat.
--exec-file, -e
Python kodunu dosyada çalı¸stır
--explode-book, -x
Kitabı patlat (kitabı, standart HTML araçları ile düzenleyebilece˘giniz s¸ekilde HTML dosyaları ve meta verisi
olarak dı¸sa aktarır ve düzenlenmi¸s HTML dosyalarından kitabı yeniden olu¸sturur. Tam calibre dönü¸sümünün
aksine HTML üzerinde ek de˘gi¸siklikler yapmaz).
--gui, -g
Arayüzü hata ayıklama etkin olara çalı¸stı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ı¸stır. Sadece iç kullanım içindir.
Arayüzü hata ayıklama kipinde çalı¸stırma için -g seçene˘gini kullanın
--help, -h
bu yardım iletisini göster ve çık
--inspect-mobi, -m
Belritilen konumlardaki MOBI dosyalarını denetleyin
--paths
Calibre ortamını kurmak için zorunlu olan konumların çıktısını ver
1.11. Command Line Interface
267
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
--py-console, -p
Python konsolunu çalı¸stır
--reinitialize-db
Belirtilen konumdaki calibre sqlite veritabanını yeniden ba¸slatın. Veritabanı bozulmalarından kurtarmak için
yararlıdır.
--run-plugin, -r
Bir komut satırı arayüzü sunan bir eklentiyi çalı¸stır. Mesela: calibre-debug -r “Add Books” --file1
--option1 -- i¸sareti sonrasındaki her s¸ey eklentiye argüman olarak geçirilir.
--shutdown-running-calibre, -s
Çalı¸smakta olan bir calibre oturumu varsa kapanmasını sa˘glar. Devam etmekte olan i¸slemler olması halinde
uyarı vermeksizin kapatılaca˘gı için dikkatle kullanınız.
--subset-font, -f
Belirlenen yazı tipini kümele
--test-build
Derlemede ikili modülleri dene
--version
programın sürüm numarasını göster ve çık
--viewer, -w
E-kitap görüntüleyiciyi hata ayıklama kipinde çalı¸stır
calibre-server
=
{}=
{}@default
=0=1=2=0=1=2calibre\PYGZhy{}server [options]
Start the calibre content server. The calibre content server exposes your calibre library over the internet. The default
interface allows you to browse you calibre library by categories. You can also access an interface optimized for mobile
browsers at /mobile and an OPDS based interface for use with reading applications at /opds.
The OPDS interface is advertised via BonJour automatically.
Whenever you pass arguments to calibre-server that have spaces in them, enclose the arguments in quotation marks.
For example “C:some path with spaces”
[options]
--auto-reload
Auto reload server when source code changes. May not work in all environments.
--daemonize
Run process in background as a daemon. No effect on windows.
--develop
Geli¸stirme kipi. Sunucu dosya de˘gi¸sikliklerinde otomatik olarak yeniden ba¸slar 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
268
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
--max-cover
Gösterilen kapaklar için maksimum boyut. Öntanımlısı ‘600x800’.
--max-opds-items
ODPS sorgusu ba¸sına döndürülecek en fazla e¸sle¸sme sayısı. Bu Stanza ve WordPlayer gibi tümle¸stirmeleri
etkiler.
--max-opds-ungrouped-items
Group items in categories such as author/tags by first letter when there are more than this number of items.
Default: 100. Set to a large number to disable grouping.
--password
Eri¸simi kısıtlamak için bir parola atayın. Varsayılan olarak eri¸sim kısıtlı de˘gildir.
--pidfile
Write process PID to the specified file
--port, -p
Dinlenecek ba˘glantı noktası. Varsayılan 8080
--restriction
Specifies a virtual library to be used for this invocation. This option overrides any per-library settings specified
in the GUI. For compatibility, if the value is not a virtual library but is a saved search, that saved search is used.
Also note that if you do not specify a restriction, the value specified in the GUI (if any) will be used.
--thread-pool
Kullanılacak en fazla i¸s parçacı˘gı sayısı. Varsayılan 30
--timeout, -t
Saniye cinsinden sunucu zaman a¸sımı. Varsayılan 120
--url-prefix
Tüm adreslerin ba¸sına eklenecek ön ek. Bu Apache/nginx gibi sunuculardan ters vekil sunuculuk yapılırken
yararlıdır.
--username
Eri¸sim için parola. Varsayılan: ‘calibre’
--version
programın sürüm numarasını göster ve çık
--with-library
Path to the library folder to serve with the content server
calibre-smtp
=
{}=
{}@default
=0=1=2=0=1=2calibre\PYGZhy{}smtp [options] [from to text]
Send mail using the SMTP protocol. calibre-smtp has two modes of operation. In the compose mode you specify from
to and text and these are used to build and send an email message. In the filter mode, calibre-smtp reads a complete
email message from STDIN and sends it.
text is the body of the email message. If text is not specified, a complete email message is read from STDIN. from
is the email address of the sender and to is the email address of the recipient. When a complete email is read from
STDIN, from and to are only used in the SMTP negotiation, the message headers are not modified.
Whenever you pass arguments to calibre-smtp that have spaces in them, enclose the arguments in quotation marks.
For example “C:some path with spaces”
1.11. Command Line Interface
269
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
[options]
--fork, -f
Fork and deliver message in background. If you use this option, you should also use --outbox (sayfa 270) to
handle delivery failures.
--help, -h
bu yardım iletisini göster ve çık
--localhost, -l
Host name of localhost. Used when connecting to SMTP server.
--outbox, -o
Path to maildir folder to store failed email messages in.
--timeout, -t
Ba˘glantı için zamana¸sımı
--verbose, -v
Daha çok ayrıntı ver
--version
programın sürüm numarasını göster ve çık
COMPOSE MAIL Options to compose an email. Ignored if text is not specified
--attachment, -a
File to attach to the email
--subject, -s
Subject of the email
SMTP RELAY Options to use an SMTP relay server to send mail. calibre will try to send the email directly unless
–relay is specified.
--encryption-method, -e
Encryption method to use when connecting to relay. Choices are TLS, SSL and NONE. Default is TLS. WARNING: Choosing NONE is highly insecure
--password, -p
Password for relay
--port
Port to connect to on relay server. Default is to use 465 if encryption method is SSL and 25 otherwise.
--relay, -r
An SMTP relay server to use to send mail.
--username, -u
Username for relay
calibredb
=
{}=
{}@default
=0=1=2=0=1=2calibredb komut [seçenekler] [de˘
gi¸
skenler]
calibredb is the command line interface to the calibre database. It has several sub-commands, documented below:
270
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Genel seçenekler (sayfa 271)
list (sayfa 271)
add (sayfa 272)
remove (sayfa 273)
add_format (sayfa 273)
remove_format (sayfa 274)
show_metadata (sayfa 274)
set_metadata (sayfa 274)
export (sayfa 275)
catalog (sayfa 276)
saved_searches (sayfa 277)
add_custom_column (sayfa 277)
custom_columns (sayfa 278)
remove_custom_column (sayfa 278)
set_custom (sayfa 278)
restore_database (sayfa 279)
check_library (sayfa 279)
list_categories (sayfa 280)
backup_metadata (sayfa 280)
clone (sayfa 281)
embed_metadata (sayfa 281)
Genel seçenekler
--dont-notify-gui
Çalı¸san calibre arayüzünü (e˘ger varsa) veritabanı de˘gi¸sikli˘ginden haberdar etme. Veritabanı bozulmasına neden
olabilece˘ginden dikkatli kullanın!
--library-path
Calibre kitaplı˘gı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.
Whenever you pass arguments to calibredb that have spaces in them, enclose the arguments in quotation marks. For
example “C:some path with spaces”
--ascending
Sonuçları artan s¸ekilde sırala
--fields, -f
The fields to display when listing books in the database. Should be a comma separated list of fields. Available
fields: author_sort, authors, comments, cover, formats, identifiers, isbn, last_modified, pubdate, publisher, rating,
series, series_index, size, tags, timestamp, title, uuid Default: title,authors. The special field “all” can be used to
select all fields.
1.11. Command Line Interface
271
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
--for-machine
Generate output in JSON format, which is more suitable for machine parsing. Causes the line width and separator
options to be ignored.
--help, -h
bu yardım iletisini göster ve çık
--limit
The maximum number of results to display. Default: all
--line-width, -w
Girdideki bir satırın en fazla geni¸sli˘gi. Varsayılanı ekranın boyutunu algılamaktır.
--prefix
The prefix for all file paths. Default is the absolute path to the library folder.
--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¸slemi yapılmaz.
--separator
The string used to separate fields. Default is a space.
--sort-by
Sonuçların sıralanaca˘gı alan. Kullanılabilir alanlar: author_sort, authors, comments, cover, formats, identifiers,
isbn, last_modified, pubdate, publisher, rating, series, series_index, size, tags, timestamp, title, uuid Varsayılan:
None
--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. ˙Isterseniz dizinleri de belirtebilirsiniz, dizinlerle ilgili seçenekler
için a¸sa˘gı bakın.
Whenever you pass arguments to calibredb that have spaces in them, enclose the arguments in quotation marks. For
example “C:some path with spaces”
--authors, -a
Eklenen kitap(lar)ın yazarlarını ayarla
--cover, -c
Eklenen kitap için kullanılacak kapa˘gın yolu
--duplicates, -d
Kitapları veritabanında olsalar bile ekle. Kar¸sıla¸stırma kitap ba¸slıklarına göre yapılır.
--empty, -e
Bo¸s bir kitap ekle (biçimi olmayan bir kitap)
--help, -h
bu yardım iletisini göster ve çık
--isbn, -i
Eklenen kitap(lar)ın ISBN’lerini ayarla
272
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
--languages, -l
Virgülle ayrılmı¸s dillerin listesi (bazı dil isimleri anla¸sılamayaca˘gı 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˘gini ve içindeki tüm dosyaların o kitabın farklı e-kitap formatları
oldu˘gunu varsay
--recurse, -r
Dizinleri içe do˘gru i¸sleme 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¸slı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
Remove the books identified by ids from the database. ids should be a comma separated list of id numbers (you can
get id numbers by using the list command). For example, 23,34,57-85 (when specifying a range, the last number in the
range is not included).
Whenever you pass arguments to calibredb that have spaces in them, enclose the arguments in quotation marks. For
example “C:some path with spaces”
--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 [options] id ebook\PYGZus{}file
Add the ebook in ebook_file to the available formats for the logical book identified by id. You can get id by using the
list command. If the format already exists, it is replaced, unless the do not replace option is specified.
Whenever you pass arguments to calibredb that have spaces in them, enclose the arguments in quotation marks. For
example “C:some path with spaces”
1.11. Command Line Interface
273
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
--dont-replace
Do not replace the format if it already exists
--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 [options] id fmt
Remove the format fmt from the logical book identified by id. You can get id by using the list command. fmt should
be a file extension like LRF or TXT or EPUB. If the logical book does not have fmt available, do nothing.
Whenever you pass arguments to calibredb that have spaces in them, enclose the arguments in quotation marks. For
example “C:some path with spaces”
--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 [options] id
Show the metadata stored in the calibre database for the book identified by id. id is an id number from the list command.
Whenever you pass arguments to calibredb that have spaces in them, enclose the arguments in quotation marks. For
example “C:some path with spaces”
--as-opf
Print metadata in OPF form (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
=
{}=
{}@default
=0=1=2=0=1=2calibredb set\PYGZus{}metadata [options] id [/path/to/metadata.opf]
274
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Set the metadata stored in the calibre database for the book identified by id from the OPF file metadata.opf. id is an
id number from the list command. You can get a quick feel for the OPF format by using the –as-opf switch to the
show_metadata command. You can also set the metadata of individual fields with the –field option. If you use the
–field option, there is no need to specify an OPF file.
Whenever you pass arguments to calibredb that have spaces in them, enclose the arguments in quotation marks. For
example “C:some path with spaces”
--field, -f
The field to set. Format is field_name:value, for example: --field (sayfa 275) tags:tag1,tag2. Use
--list-fields (sayfa 275) to get a list of all field names. You can specify this option multiple times to
set multiple fields. Note: For languages you must use the ISO639 language codes (e.g. en for English, fr for
French and so on). For identifiers, the syntax is --field (sayfa 275) identifiers:isbn:XXXX,doi:YYYYY. For
boolean (yes/no) fields use true and false or yes and no.
--help, -h
bu yardım iletisini göster ve çık
--list-fields, -l
List the metadata field names that can be used with the --field (sayfa 275) option
--version
programın sürüm numarasını göster ve çık
export
=
{}=
{}@default
=0=1=2=0=1=2calibredb export [options] ids
Export the books specified by ids (a comma separated list) to the filesystem. The export operation saves all formats of
the book, its cover and metadata (in an opf file). You can get id numbers from the list command.
Whenever you pass arguments to calibredb that have spaces in them, enclose the arguments in quotation marks. For
example “C:some path with spaces”
--all
Kimlik listesine bakmadan tüm kitapları dı¸sa aktar.
--dont-asciiize
Normally, calibre will convert all non English characters into English equivalents for the file names. WARNING:
If you turn this off, you may experience errors when saving, depending on how well the filesystem you are saving
to supports unicode. Bu anahtar bu davranı¸sı kapatacaktır.
--dont-save-cover
Normally, calibre will save the cover in a separate file along with the actual e-book file(s). Bu anahtar bu
davranı¸sı kapatacaktır.
--dont-update-metadata
Normally, calibre will update the metadata in the saved files from what is in the calibre library. Makes saving to
disk slower. Bu anahtar bu davranı¸sı kapatacaktır.
--dont-write-opf
Normally, calibre will write the metadata into a separate OPF file along with the actual e-book files. Bu anahtar
bu davranı¸sı kapatacaktır.
--formats
Comma separated list of formats to save for each book. By default all available formats are saved.
1.11. Command Line Interface
275
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
--help, -h
bu yardım iletisini göster ve çık
--replace-whitespace
Replace whitespace with underscores.
--single-dir
Tüm kitapları tek bir dizine dı¸sa aktar
--template
The template to control the filename and directory structure of the saved files. Default is “{author_sort}/{title}/{title} - {authors}” which will save books into a per-author subdirectory with filenames containing title and author. Available controls are: {author_sort, authors, id, isbn, languages, last_modified, pubdate,
publisher, rating, series, series_index, tags, timestamp, title}
--timefmt
The format in which to display dates. %d - day, %b - month, %m - month number, %Y - year. Default is: %b,
%Y
--to-dir
Kitapları belirtilen dizine dı¸sa aktar. Varsayılan dizin .
--to-lowercase
Convert paths to lowercase.
--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˘gu /hedef/yolu uzantısında belirtildi˘gi biçimde dı¸sa aktar. Seçenekler genel katalog çıktısında girdilerin nasıl
görünece˘gini kontrol eder.
Whenever you pass arguments to calibredb that have spaces in them, enclose the arguments in quotation marks. For
example “C:some path with spaces”
--fields
Veritabanında kitapları kataloglama çıktı alanları. Alanlar virgülle ayrılmı¸s 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ı¸s listesi. Kullanılırsa, --search (sayfa 276) yok sayılır. Varsayılan: all
--search, -s
Filter the results by the search query. For the format of the search query, please see the search-related documentation in the User Manual. Default: no filtering
276
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
--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.
Whenever you pass arguments to calibredb that have spaces in them, enclose the arguments in quotation marks. For
example “C:some path with spaces”
--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 [options] label name datatype
Create a custom column. label is the machine friendly name of the column. Should not contain spaces or colons. name
is the human friendly name of the column. datatype is one of: bool, comments, composite, datetime, enumeration,
float, int, rating, series, text
Whenever you pass arguments to calibredb that have spaces in them, enclose the arguments in quotation marks. For
example “C:some path with spaces”
--display
A dictionary of options to customize how the data in this column will be interpreted. This is a JSON string. For enumeration columns, use --display=“{“enum_values”:[”val1”, “val2”]}” There are many options
that can go into the display variable.The options by column type are: 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 The best way to find
legal combinations is to create a custom column of the appropriate type in the GUI then look at the backup OPF
for a book (ensure that a new OPF has been created since the column was added). You will see the JSON for the
“display” for the new column in the OPF.
--help, -h
bu yardım iletisini göster ve çık
1.11. Command Line Interface
277
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
--is-multiple
This column stores tag like data (i.e. multiple comma separated values). Only applies if datatype is text.
--version
programın sürüm numarasını göster ve çık
custom_columns
=
{}=
{}@default
=0=1=2=0=1=2calibredb custom\PYGZus{}columns [options]
List available custom columns. Shows column labels and ids.
Whenever you pass arguments to calibredb that have spaces in them, enclose the arguments in quotation marks. For
example “C:some path with spaces”
--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¸s özel sütunu kaldır. Kullanılabilir sütunları custom_columns komutuyla görebilirsiniz.
Whenever you pass arguments to calibredb that have spaces in them, enclose the arguments in quotation marks. For
example “C:some path with spaces”
--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 [options] column id value
Set the value of a custom column for the book identified by id. You can get a list of ids using the list command. You
can get a list of custom column names using the custom_columns command.
278
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Whenever you pass arguments to calibredb that have spaces in them, enclose the arguments in quotation marks. For
example “C:some path with spaces”
--append, -a
Sütun birden çok de˘ger saklıyorsa, belirtilen de˘gerleri ü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 [options]
Restore this database from the metadata stored in OPF files in each directory of the calibre library. This is useful if
your metadata.db file has been corrupted.
WARNING: This command completely regenerates your database. You will lose all saved searches, user categories,
plugboards, stored per-book conversion settings, and custom recipes. Restored metadata will only be as accurate as
what is found in the OPF files.
Whenever you pass arguments to calibredb that have spaces in them, enclose the arguments in quotation marks. For
example “C:some path with spaces”
--help, -h
bu yardım iletisini göster ve çık
--really-do-it, -r
Really do the recovery. The command will not run unless this option is specified.
--version
programın sürüm numarasını göster ve çık
check_library
=
{}=
{}@default
=0=1=2=0=1=2calibredb check\PYGZus{}library [options]
Perform some checks on the filesystem representing a library. Reports are invalid_titles, extra_titles, invalid_authors,
extra_authors, missing_formats, extra_formats, extra_files, missing_covers, extra_covers, failed_folders
Whenever you pass arguments to calibredb that have spaces in them, enclose the arguments in quotation marks. For
example “C:some path with spaces”
--csv, -c
Output in CSV
--help, -h
bu yardım iletisini göster ve çık
--ignore_extensions, -e
Comma-separated list of extensions to ignore. Default: all
1.11. Command Line Interface
279
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
--ignore_names, -n
Comma-separated list of names to ignore. Default: all
--report, -r
Comma-separated list of reports. Default: 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 [options]
Produce a report of the category information in the database. The information is the equivalent of what is shown in the
tags pane.
Whenever you pass arguments to calibredb that have spaces in them, enclose the arguments in quotation marks. For
example “C:some path with spaces”
--categories, -r
Comma-separated list of category lookup names. Default: all
--csv, -c
Output in CSV
--help, -h
bu yardım iletisini göster ve çık
--item_count, -i
Output only the number of items in a category instead of the counts per item within the category
--quote, -q
The character to put around the category value in CSV mode. Default is quotes (”).
--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¸sli˘gi. Varsayılanı ekranın boyutunu algılamaktır.
backup_metadata
=
{}=
{}@default
=0=1=2=0=1=2calibredb backup\PYGZus{}metadata [options]
Backup the metadata stored in the database into individual OPF files in each books directory. This normally happens
automatically, but you can run this command to force re-generation of the OPF files, with the –all option.
Note that there is normally no need to do this, as the OPF files are backed up automatically, every time metadata is
changed.
280
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Whenever you pass arguments to calibredb that have spaces in them, enclose the arguments in quotation marks. For
example “C:some path with spaces”
--all
Normally, this command only operates on books that have out of date OPF files. This option makes it operate
on all books.
--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ı˘
gın/yolu
Mevcut kitaplı˘gın bir kopyasını olu¸stur. Bu mevcut kitaplıkla aynı özel sütunları, sanal kitaplıkları ve di˘ger ayarları
içeren yeni ve bo¸s bir kitaplık olu¸sturur.
Kopya kitaplık hiç kitap içermeyecektir. E˘ger istedi˘giniz tüm kitapları da içeren tam bir kopya ise sistem araçlarını
kullanarak kitaplı˘gın dizinini bir kopyasını olu¸sturun.
Whenever you pass arguments to calibredb that have spaces in them, enclose the arguments in quotation marks. For
example “C:some path with spaces”
--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 [options] book\PYGZus{}id
Update the metadata in the actual book files stored in the calibre library from the metadata in the calibre database.
Normally, metadata is updated only when exporting files from calibre, this command is useful if you want the files to
be updated in place. Note that different file formats support different amounts of metadata. You can use the special
value ‘all’ for book_id to update metadata in all books. You can also specify many book ids separated by spaces and
id ranges separated by hyphens. For example: calibredb embed_metadata 1 2 10-15 23
Whenever you pass arguments to calibredb that have spaces in them, enclose the arguments in quotation marks. For
example “C:some path with spaces”
--help, -h
bu yardım iletisini göster ve çık
--only-formats, -f
Only update metadata in files of the specified format. Specify it multiple times for multiple formats. By default,
all formats are updated.
1.11. Command Line Interface
281
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
--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¸ska bir formata dönü¸stür.
girdi_dosyası girdiyi, çıktı_dosyası ise çıktıyı temsil eder. ˙Ikisi de komutun ilk iki de˘gi¸skeni 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¸slamaması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ü¸sümü çe¸sitli seçeneklerle özelle¸stirebilirsiniz. Kullanılabilir seçenekler girdi ve çıktı dosyalarının türlerine ba˘glıdır. Kullanmak istedi˘giniz girdi ve çıktı dosyalarını belirttikten sonra
-h seçene˘gi ile yardım alabilirsiniz.
Dönü¸süm sisteminin tüm belgelendirmesine buradan ula¸sabilirsiniz E-Kitap Dönü¸stürme (sayfa 48)
Whenever you pass arguments to ebook-convert that have spaces in them, enclose the arguments in quotation marks.
For example “C:some path with spaces”
The options and default values for the options change depending on both the input and output formats, so you should
always check with:
=
{}=
{}@default
=0=1=2=0=1=2ebook\PYGZhy{}convert myfile.input\PYGZus{}format myfile.output\PYGZus{}format \PYGZhy{}h
Below are the options that are common to all conversion, followed by the options specific to every input and output
format.
•
•
•
•
•
•
•
•
•
Girdi Ayarlari (sayfa 283)
Çikti Ayarlari (sayfa 283)
Gör Ve Hisset (sayfa 284)
Sezgisel ˙I¸sleme (sayfa 286)
Bul Ve De˘gi¸stir (sayfa 287)
Yapi Algilama (sayfa 287)
˙Içindekiler (sayfa 288)
Metadata (sayfa 289)
Hata Ayikla (sayfa 289)
--help, -h
bu yardım iletisini göster ve çık
--input-profile
Girdi profilini belirleyin. Bu profil dönü¸stürme sistemine girdi dosyasındaki çe¸sitli bilgileri nasıl kullanaca˘gı
bilgisini verir. örne˘gin çözüünürlü˘ge ba˘glı uzunluk( yani piksel cinsinden uzunluk) Seçimler s¸unlar:cybookg3,
282
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
cybook_opus, default, hanlinv3, hanlinv5, illiad, irexdr1000, irexdr800, kindle, msreader, mobipocket, nook,
sony, sony300, sony900
--list-recipes
Yerle¸sik haber tariflerini(recipe) listele. yerle¸sik haber tariflerinden s¸u s¸ekilde e-kitaplar olu¸sturabilirsiniz:
ebook-convert “HaberTarifininAdı.recipe” çıktıAdı.epub
--output-profile
Specify the output profile. The output profile tells the conversion system how to optimize the created document for the specified device. In some cases, an output profile can be used to optimize the output for a
particular device, but this is rarely necessary. Choices are:cybookg3, cybook_opus, default, generic_eink, generic_eink_large, hanlinv3, hanlinv5, illiad, ipad, ipad3, irexdr1000, irexdr800, jetbook5, kindle, kindle_dx,
kindle_fire, kindle_pw, kindle_voyage, kobo, msreader, mobipocket, nook, nook_color, nook_hd_plus, pocketbook_900, pocketbook_pro_912, galaxy, bambook, 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¸slenme 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¸s herhangi bir kodlamanın üzerine yazar. Bilhassa kodlama belirtmeyen veya hatalı kodlama belirtilmi¸s dökümanlar
için kullanı¸slıdır.
Çikti Ayarlari
Çıktı dosyası epub ‘nın i¸slenme 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˘glar. Ancak,
bölme i¸slemi yava¸stır ve e˘ger 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ü¸sü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
Insert an inline Table of Contents that will appear as part of the main book content.
--epub-toc-at-end
Put the inserted inline Table of Contents at the end of the book instead of the start.
--extract-to
Extract the contents of the generated EPUB file to the specified directory. The contents of the directory are first
deleted, so be careful.
--flow-size
Bu boyutttan büyük bütün HTML dosyalarını küçük parçalara böl (KB olarak). Ço˘gu EPUB okuyucu büyük boyuttaki dosyaları okuyamadı˘gı için bu gereklidir. Adobe Digital Edition’lar için gerekli öntanımlı boyut 260KB
--no-default-epub-cover
Normalde, kitap kapa˘gı yoksa ve sizde bir tane belirtmediyseniz, ba¸slık yazarlar vb. bilgilerden öntanımlı bir
kapak olu¸sturulur. Bu özellikli kapak olu¸sturmayı kapatur.
1.11. Command Line Interface
283
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
--no-svg-cover
Kitap kapa˘gı için SVG kullanma. Bu seçene˘gi 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˘gilse, bu cihazlar kitap kapa˘gı yerine bo¸s bir
sayfa görüntüleyecektir.
--preserve-cover-aspect-ratio
Kitap kapa˘gı olarak SVG kullandı˘gınızda bu seçenek, kitap kapa˘gının müsait ekran alanına en/boy oranının
korunarak ölçeklenmesini sa˘glar. Yani bazı durumlarda resmin kenarlarında beyaz alanlar bulunabilir ancak
resim asla bozulmaz. Bu seçenek seçili de˘gilse resim bir miktar bozulabilir ama kenarlarda beyaz alanlar olmaz.
--pretty-print
E˘ger belirtilirse, çıktı ektentisi en okunabilir s¸ekilde bir çıktı yaratmaya çalı¸sacaktır. Bazı çıktı eklentilerinde
hiç bir etkisi olmayabilir.
--toc-title
Olu¸sturulan ˙Içindekiler (TOC) bölümü için ba¸slı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˘gi¸stirin. Bu seçenek unicode karakterleri ASCII karaktelerle de˘gi¸stirece˘ginden dikkatli kullanın. Örne˘gin ‘Михаил Горбачёв’ ifadesini ‘Michael Gorbachiov’la de˘gi¸stirecektir.
E˘ger Japonca ve Çincenin ortak karakterleri gibi birden fazla anlamı olan bir karakter bulunursa bu durumda
de˘gi¸stirme i¸sleminde Calibre’nin arayüz dili esas alınacaktır.
--base-font-size
Pts de˘geri olarak temel font büyüklü˘gü. Ü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˘giniz çıktı profiline dayanan font büyüklü˘güdür.
--change-justification
Metnin yaslama ayarlarını de˘gi¸stir. “left” de˘geri tüm çift tarafa da dayalı (justified) yazıyı sola dayalı yapar.
“justify” ise çift tarafa dayalı olmayan yazıları çift tarafa dayalı yapar. “original” de˘geri ise kaynak dosyadaki
de˘geri korur. Tüm çıktı formatlarının çift tarafa dayalı formatı desteklemedii˘gini unutmayın.
--disable-font-rescaling
Tüm yazı tiplerinin yeniden boyutlandırılmasını etkisizle¸stir.
--embed-all-fonts
Embed every font that is referenced in the input document but not already embedded. This will search your
system for the fonts, and if found, they will be embedded. Embedding will only work if the format you are
converting to supports embedded fonts, such as EPUB, AZW3, DOCX or PDF. Please ensure that you have the
proper license for embedding the fonts used in this document.
--embed-font-family
Embed the specified font family into the book. This specifies the “base” font used for the book. If the input
document specifies its own fonts, they may override this base font. You can use the filter style information
option to remove fonts from the input document. Note that font embedding only works with some output formats,
principally EPUB, AZW3 and DOCX.
--expand-css
By default, calibre will use the shorthand form for various css properties such as margin, padding, border,
etc. This option will cause it to use the full expanded form instead. Note that CSS is always expanded when
generating EPUB files with the output profile set to one of the Nook profiles as the Nook cannot handle shorthand
CSS.
284
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
--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
A comma separated list of CSS properties that will be removed from all CSS style rules. This is useful if
the presence of some style information prevents it from being overridden on your device. For example: fontfamily,color,margin-left,margin-right
--font-size-mapping
Mapping from CSS font names to font sizes in pts. An example setting is 12,12,14,16,18,20,22,24. These are the
mappings for the sizes xx-small to xx-large, with the final size being for huge fonts. The font rescaling algorithm
uses these sizes to intelligently rescale fonts. The default is to use a mapping based on the output profile you
chose.
--insert-blank-line
Paragraflar arasına bo¸s satır ekle. E˘ger kaynak dosyası paragraf (<p> or <div> etiketlerini) içermiyorsa çalı¸smaz
--insert-blank-line-size
Eklenen bo¸slukların yüksekli˘gini “em” cinsinden ayarlayın. Para˘graf arası bo¸sluklar ise buradaki de˘gerin iki
katı olarak ayarlanacaktır.
--keep-ligatures
Preserve ligatures present in the input document. A ligature is a special rendering of a pair of characters like ff,
fi, fl et cetera. Most readers do not have support for ligatures in their default fonts, so they are unlikely to render
correctly. By default, calibre will turn a ligature into the corresponding pair of normal characters. This option
will preserve them instead.
--line-height
Sayı olarak satır yüksekli˘gi. Ardı ardına gelen satırlar arasındaki bo¸slu˘gu kontrol eder. Kendi satır yüksekli˘gini
belirlemeyen unsurlara uygulanır. Ço˘gu durumda minimum satır aralı˘gı tercihi daha kullanı¸slıdır. Varsayılan
olarak herhangi bir satır yüksekli˘gi i¸slemi yapılmaz.
--linearize-tables
Bazı kötü dizayn edilmi¸s dökümanlar sayfadaki metinin düzenlemesini kontrol için tablo kullanırlar. Bu sayfalar
dönü¸stürüldü˘günde sıklıkla metin sayfadan ve ta¸sıyor ve ba¸ska hatalar çıkıyor. Bu seçenek içeri˘gi tablodan
çıkaracak ve onu bildi˘gimiz s¸ekilde sunacak.
--margin-bottom
Alt kenar bo¸slu˘gunu pts cinsinden ayarlayın. Varsayılan de˘ger: 5.0. Bu de˘geri sıfırın altında atamak kenar bo¸slu˘gu olmayaca˘gı anlamına gelir (özgün belgenin kenar bo¸sluk ayarları korunacaktır). Not: 72 pts 1 inçe e¸sittir.
--margin-left
Set the left margin in pts. Default is 5.0. Setting this to less than zero will cause no margin to be set (the margin
setting in the original document will be preserved). Note: 72 pts equals 1 inch
--margin-right
Sa˘g kenar bo¸slu˘gunu pts cinsinden ayarlayın. Varsayılan de˘ger: 5.0. Bu de˘geri sıfırın altında atamak kenar
bo¸slu˘gu olmayaca˘gı anlamına gelir (özgün belgenin kenar bo¸sluk ayarları korunacaktır). Not: 72 pts 1 inçe
e¸sittir.
--margin-top
Üst kenar bo¸slu˘gunu pts cinsinden ayarlayın. Varsayılan de˘ger: 5.0. Bu de˘geri sıfırın altında atamak kenar bo¸slu˘gu olmayaca˘gı anlamına gelir (özgün belgenin kenar bo¸sluk ayarları korunacaktır). Not: 72 pts 1 inçe e¸sittir.
--minimum-line-height
Unsurların hesaplanmı¸s font büyüklü˘günün yüzdesi olarak, minimum satır yüksekli˘gi. Calibre bu ayar ile girdi
dokümanının ne belirtti˘ginden ba˘gımsız olarak her unsura bir satır yüksekli˘gi atayacaktır. Devre dı¸sı bırakmak
için sıfıra ayarlayın. Varsayılan 120%. Ne yaptı˘gınızı bilmiyorsanız, do˘grudan satır yüksekli˘gi belirmek yerine
bu ayarı kullanın. Örne˘gin, bunu 240’a ayarlayarak “2 kat satır aralıklı” metin elde edebilirsiniz.
1.11. Command Line Interface
285
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
--remove-paragraph-spacing
Paragraflar arası bo¸slukları kaldır. Ayrıca paragrafların girintilerini 1,5em olarak ayarla. E˘ger kaynak dosyası
paragraları(<p> or <div> etiketleri) kullanmamı¸ssa bo¸sluk kaldırma çalı¸smayacaktır.
--remove-paragraph-spacing-indent-size
Calibre paragraflar arasındaki bo¸s satırları kaldırdı˘gında, paragrafların kolayca ayırt edilebilmesi için otomatik
olarak bir paragraf girintisi yapar. Bu seçenek, o girintinin geni¸sli˘gini (em cinsinden) kontrol eder. Bu de˘geri negatif olarak ayarlarsanız girdi belgesinde belirlenen paragraf girintisi kullanılır. Yani calibre paragraf girintisini
de˘gi¸stirmez.
--smarten-punctuation
Düz tırnak, tire ve üç nokta i¸saretlerini tipografik olarak do˘gru olan e¸sde˘gerleriyle de˘gi¸stir. Detaylar için bakınız
http://daringfireball.net/projects/smartypants
--subset-embedded-fonts
Subset all embedded fonts. Every embedded font is reduced to contain only the glyphs used in this document.
This decreases the size of the font files. Useful if you are embedding a particularly large font with lots of unused
glyphs.
--unsmarten-punctuation
Süslü tırnak, tire ve üç nokta i¸saretlerini düz versiyonlarına çevir.
Sezgisel ˙Isleme
¸
Genel tanımlı motifleri kullanarak dökümanın yazılarını ve yapısını de˘gi¸stirin. Default olarak pasif durumdadır. Aktifle¸stirmek için –enable-heuristics kullanın. Komutları tek tek pasifle¸stirmek için –disable-* ayarını kullanabilirsiniz.
--disable-dehyphenate
Analyze hyphenated words throughout the document. The document itself is used as a dictionary to determine
whether hyphens should be retained or removed.
--disable-delete-blank-paragraphs
E˘ger tüm paragraflar arasında bo¸s paragraflar varsa dökümandan bunları çıkar
--disable-fix-indents
Turn indentation created from multiple non-breaking space entities into CSS indents.
--disable-format-scene-breaks
Left aligned scene break markers are center aligned. Replace soft scene breaks that use multiple blank lines with
horizontal rules.
--disable-italicize-common-cases
˙Italik olacak ortak kelimelere ve modellere bak, ve bunları italikle¸stir.
--disable-markup-chapter-headings
Biçimlendirilmemi¸s bölüm ba¸slıklarını ve altba¸slıklarını algıla. Onları h2 ve h3 etiketlerine çevir. Bu ayar içindekiler yaratmayacak ama olu¸sturulurken yapı algılama ile ba˘glantılı kullanılabilecek.
--disable-renumber-headings
Ardarda gelen <h1> veya <h2> etiketleri olup olmadı˘gına bakar. Etiketler bölüm ba¸slıklarının ortasında parçalanmanın önüne geçmek için yeniden numaralandırılır.
--disable-unwrap-lines
Noktalama i¸saretleri ve di˘ger biçim i¸saretlerini kullanırken satırları bölme
--enable-heuristics
Heuristic i¸slemeyi etkinle¸stir. Bu seçenek gerçekle¸secek herhangi bir heurostic i¸sleme için ayarlanmalıdır.
286
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
--html-unwrap-factor
Bir satırın eri¸smesi gereken uzunlu˘ga karar verme ölçe˘gi. Geçerli de˘gerler 0 ila 1 arası ondalık sayılardır. Varsayılan de˘ger 0.4 olup, ortalama satır uzunlu˘gunun biraz altındadır. E˘ger bir dökümanda bir iki satır sarkıyorsa,
bu de˘ger dü¸sürülmelidir.
--replace-scene-breaks
Replace scene breaks with the specified text. By default, the text from the input document is used.
˘ stir
Bul Ve Degi
¸
Kullanıcı tanımlı motifleri kullanarak dökümanın yazılarını ve yapısını de˘gi¸stir.
--search-replace
Path to a file containing search and replace regular expressions. The file must contain alternating lines of regular
expression followed by replacement pattern (which can be an empty line). The regular expression must be in the
python regex syntax and the file must be UTF-8 encoded.
--sr1-replace
sr1-search aramasıyle bulunan metin için yeni de˘ger
--sr1-search
sr1-replace araması ile de˘gi¸stirmek için arama s¸ablonu (regular expression- regex).
--sr2-replace
sr2-search araması ile bulunan metin için yeni de˘ger.
--sr2-search
sr2-replace araması ile de˘gi¸stirmek için arama s¸ablonu (regular expression- regex).
--sr3-replace
sr3-search aramasıyle bulunan metin için yeni de˘ger.
--sr3-search
sr3-replace araması ile de˘gi¸stirmek için arama s¸ablonu (regular expression- regex).
Yapi Algilama
dosya yapısının otomatik farkınıa varma kontrolü
--chapter
An XPath expression to detect chapter titles. The default is to consider <h1> or <h2> tags that contain the
words “chapter”,”book”,”section”, “prologue”, “epilogue”, or “part” as chapter titles as well as any tags that
have class=”chapter”. The expression used must evaluate to a list of elements. To disable chapter detection, use
the expression “/”. See the XPath Tutorial in the calibre User Manual for further help on using this feature.
--chapter-mark
Tesbit edilen bölümlerin nasıl i¸saretlenece˘gini belirleyin. “pagebreak” de˘geri bölümlerden önce sayfa sonu ekler.
“rule” de˘geri bölümlerden önce bir çizgi ekler. “none” de˘geri bölüm i¸saretlemeyi pasifle¸stirir ve “both” de˘geri
ise bölümlerden önce hem çizgi hem sayfa sonu ekler.
--disable-remove-fake-margins
Bazı dökümanlar sayfa kenar bo¸sluklarını (margin) her bir paragraf için sa˘g ve sol bo¸slukları belirleyerek ayarlar.
Calibre bu ayarları bulup iptal etmeye çalı¸sır. Bu bazen kaldırılmaması gereken bo¸sluk ayarlarının da kaldırılmasına neden olur. Böyle bir durumda bu bo¸slukların kaldırılması i¸slemini iptal edebilirsiniz.
--insert-metadata
Metadata’yı (kitap tanımlama bilgileri) kitabın ba¸slangıcına ekleyin. E˘ger ekitap okuyucunuz metadata’yı do˘grudan göstermeyi desteklemiyorsa bu seçenek faydalı olabilir.
1.11. Command Line Interface
287
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
--page-breaks-before
Bir XPath ifadesi. Sayfa kesmeleri belirtilen ögelerden önce yerle¸stirilir. ˙Ifadenin kullanımını kapatmak için
bunu kullanın: /
--prefer-metadata-cover
Belirtilen kapak yerine kaynak dosyasındaki algılanan kapa˘gı kullan
--remove-first-image
Kitaptaki ilk resmi çıkar. Bu seçenek e˘ger i¸slenecek döküman içinde kapak resmi olarak kullanılmayacak bir
kapak resmi varsa kullanmanız tavsiye edilir. Çünkü bu seçene˘gi seçmemeniz durumunda e˘ger ba¸ska bir resmi
kapak olarak kullanmak üzere seçerseniz çıktı iki kapak resmi içerir.
--start-reading-at
An XPath expression to detect the location in the document at which to start reading. Some ebook reading
programs (most prominently the Kindle) use this location as the position at which to open the book. See the
XPath tutorial in the calibre User Manual for further help using this feature.
˙Içindekiler
˙Içindekiler(TOC)’un otomatik olu¸sturulma ayarını düzenleyin. E˘ger kaynak içindekiler(TOC)’e sahipse varsayılan
olarak o kullanılacaktır.
--duplicate-links-in-toc
Girdideki linklerden içindekiler(TOC) olu¸stururken maddelerin birden fazla kopyasına izin ver. Yani farklı yerlere i¸saret etmesi s¸artıyla aynı yazıya sahip birden fazla maddeye izin ver.
--level1-toc
XPath expression that specifies all tags that should be added to the Table of Contents at level one. If this is
specified, it takes precedence over other forms of auto-detection. See the XPath Tutorial in the calibre User
Manual for examples.
--level2-toc
XPath expression that specifies all tags that should be added to the Table of Contents at level two. Each entry is
added under the previous level one entry. See the XPath Tutorial in the calibre User Manual for examples.
--level3-toc
XPath expression that specifies all tags that should be added to the Table of Contents at level three. Each entry
is added under the previous level two entry. See the XPath Tutorial in the calibre User Manual for examples.
--max-toc-links
˙Içindekilere eklenecek maksimum link sayısı. Devre dı¸sı bırakmak için 0’a ayarlayın. Varsayılan 50. E˘ger e¸sik
sayısından az bölüm algılanırsa linkler sadece içindekilere eklenir
--no-chapters-in-toc
Otomatik algılanmı¸s bölümleri ˙Içindekiler kısmına ekleme
--toc-filter
Belirtilen kurallı ifadeyle e¸sle¸sen ˙Içindekiler ba¸slıklarını, ˙Içindekilerden çıkarır. E¸sle¸sen girdiler ve onların alt
girdilerinin tümü çıkartılır.
--toc-threshold
E˘ger bu sayıdan daha az bölüm algılanırsa linkler ˙Iç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
288
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Metadata
Çıkı¸s 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¸sareti ile ayrılmalı.
--book-producer
Kitap üreticisini ata.
--comments
Ekitap açıklamasını ayarla.
--cover
Kapa˘gı 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ı.
--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˘glı oldu˘gu seriyi ayarla.
--series-index
Kitabın serideki indeksini ayarla.
--tags
Kitap için etiketleri ayarla. Virgül ile ayrılmı¸s liste olmalı.
--timestamp
Kitap zamandamgasını tanımla(Artık kullanılmıyor)
--title
Ba¸slı˘gı ayarla.
--title-sort
Ba¸slık sürümü sıralama için kullanılır.
Hata Ayikla
Dönü¸stürme hatalarını bulmak için yardım seçenekleri
1.11. Command Line Interface
289
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
--debug-pipeline, -d
Dönü¸stürme adımlarının de˘gi¸sik noktalarındaki sonu¸sları kaydet. E˘ger hatanın hangi a¸samadan kaynaklanadıg˘ ını bilmiyorsanız faydalı olabilr.
--verbose, -v
Level of verbosity. Specify multiple times for greater verbosity. Specifying it twice will result in full verbosity,
once medium verbosity and zero times least verbosity.
ebook-edit
=
{}=
{}@default
=0=1=2=0=1=2ebook\PYGZhy{}edit [opts] [path\PYGZus{}to\PYGZus{}ebook] [name\PYGZus{}of\PYGZus{}file\PY
Launch the calibre edit book tool. You can optionally also specify the names of files inside the book which will be
opened for editing automatically.
Whenever you pass arguments to ebook-edit that have spaces in them, enclose the arguments in quotation marks. For
example “C:some path with spaces”
[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
ebook-meta
=
{}=
{}@default
=0=1=2=0=1=2ebook\PYGZhy{}meta ebook\PYGZus{}file [seçenekler]
Read/Write metadata from/to ebook files.
Supported formats for reading metadata: 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
Supported formats for writing metadata: azw, azw1, azw3, azw4, docx, epub, fb2, htmlz, lrf, mobi, pdb, pdf, prc, rtf,
tpz, txtz
Different file types support different kinds of metadata. If you try to set some metadata on a file type that does not
support it, the metadata will be silently ignored.
Whenever you pass arguments to ebook-meta that have spaces in them, enclose the arguments in quotation marks. For
example “C:some path with spaces”
290
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
[options]
--author-sort
Yazarlar sıralanırken kullanılacak karakter dizisi. Belirtilmemi¸sse ama yazar(lar) mevcutsa, otomatik olarak
ba¸slı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˘gı al ve belirlenen dosya s¸eklinde kaydet.
--help, -h
bu yardım iletisini göster ve çık
--identifier
Set the identifiers for the book, can be specified multiple times. For example: --identifier (sayfa 291)
uri:http://acme.com --identifier (sayfa 291) isbn:12345 To remove an identifier, specify no value,
--identifier (sayfa 291) isbn: Note that for EPUB files, an identifier marked as the package identifier
cannot be removed.
--index, -i
Kitabın serideki indeksini ayarla.
--isbn
Kitabın ISBN’ini ayarla.
--language, -l
Dili ayarla.
--lrf-bookid
LRF dosyalarına (Kitap Kimli˘gi) 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˘glı oldu˘gu seriyi ayarla.
1.11. Command Line Interface
291
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
--tags
Kitap için etiketleri ayarla. Virgül ile ayrılmı¸s liste olmalı.
--title, -t
Ba¸slı˘gı ayarla.
--title-sort
Sıralama için kullanılan ba¸slı˘gın sürümü. Belirtilmemi¸sse ama ba¸slık mevcutsa, otomatik olarak ba¸slı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]
Polishing books is all about putting the shine of perfection onto your carefully crafted ebooks.
Polishing tries to minimize the changes to the internal code of your ebook. Unlike conversion, it does not flatten CSS,
rename files, change font sizes, adjust margins, etc. Every action performs only the minimum set of changes needed
for the desired effect.
You should use this tool as the last step in your ebook creation process.
Note that polishing only works on files in the AZW3 veya EPUB formats.
Whenever you pass arguments to ebook-polish that have spaces in them, enclose the arguments in quotation marks.
For example “C:some path with spaces”
[options]
--cover, -c
Kapak resminin yolu. Belirtilen e-kitabın kapa˘gını de˘gi¸stirir. E˘ger kapak belirtilmemi¸sse veya do˘gru tanımlanmamı¸ssa yeni kapa˘gı ekler.
--embed-fonts, -e
Embed all fonts that are referenced in the document and are not already embedded. This will scan your computer
for the fonts, and if they are found, they will be embedded into the document. Please ensure that you have the
proper license for embedding the fonts used in this document.
--help, -h
bu yardım iletisini göster ve çık
--jacket, -j
Insert a “book jacket” page at the start of the book that contains all the book metadata such as title, tags, authors,
series, comments, etc. Any previous book jacket will be replaced.
--opf, -o
Bir OPF dosyasının yolu. Kitabın üst verisi OPF dosyasından güncellenir.
--remove-jacket
Remove a previous inserted book jacket page.
292
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
--remove-unused-css, -u
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 dont match any actual content. These extra rules can slow down
readers that need to parse them all.
--smarten-punctuation, -p
Convert plain text dashes, ellipsis, quotes, multiple hyphens, etc. into their typographically correct equivalents.
Note that the algorithm can sometimes generate incorrect results, especially when single quotes at the start of
contractions are involved.
--subset-fonts, -f
Subsetting fonts means reducing an embedded font to contain only the characters used from that font in the
book. This greatly reduces the size of the font files (halving the font file sizes is common). For example, if the
book uses a specific font for headers, then subsetting will reduce that font to contain only the characters present
in the actual headers in the book. Or if the book embeds the bold and italic versions of a font, but bold and italic
text is relatively rare, or absent altogether, then the bold and italic fonts can either be reduced to only a few
characters or completely removed. The only downside to subsetting fonts is that if, at a later date you decide to
add more text to your books, the newly added text might not be covered by the subset font.
--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 [options] file
View an ebook.
Whenever you pass arguments to ebook-viewer that have spaces in them, enclose the arguments in quotation marks.
For example “C:some path with spaces”
[options]
--debug-javascript
Javascript uyarılarını ve konsol iletilerini konsola yazdır
--detach
Denetim terminalinden ayır (sadece linux’ta)
--full-screen, -f
E˘ger belirtilirse görüntüleyici ba¸slangıçta tam ekran yapılmaya çalı¸sılacaktır.
--help, -h
bu yardım iletisini göster ve çık
--open-at
The position at which to open the specified book. The position is a location as displayed in the top left corner of
the viewer.
--raise-window
E˘ger belirtilirse görüntüleyici penceresi ba¸slangıçta öne gelmeye çalı¸sacaktır.
1.11. Command Line Interface
293
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
--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¸slık veya ISBN bilgilerinden en az birini belirtmelisiniz.
Whenever you pass arguments to fetch-ebook-metadata that have spaces in them, enclose the arguments in quotation
marks. For example “C:some path with spaces”
[options]
--authors, -a
Kitap yazar(lar)ı
--cover, -c
Bir dosya adı belirtin. Kapak, e˘ger 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
--opf, -o
Üst veriyi insan okuyabilir metinde de˘gil de OPF biçiminde çıktı ver.
--timeout, -d
Saniye cinsinden zaman. Varsayılan 30’dur.
--title, -t
Kitap ba¸slı˘gı
--verbose, -v
Sistem günlü˘gü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ı
Whenever you pass arguments to lrf2lrs that have spaces in them, enclose the arguments in quotation marks. For
example “C:some path with spaces”
294
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
[options]
--dont-output-resources
Gömülmü¸s resimleri ve font dosyalarını diske kaydetme
--help, -h
bu yardım iletisini göster ve çık
--output, -o
LRS dosyasını dı¸sa 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
Whenever you pass arguments to lrfviewer that have spaces in them, enclose the arguments in quotation marks. For
example “C:some path with spaces”
[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¸sturucu 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˘gunu dü¸sündü˘gümden varsayılan olarak arkaplan kapalıdır. Bu seçene˘gi arkaplanı
tamamen beyaz yapmak için kullanın.
lrs2lrf
1.11. Command Line Interface
295
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
=
{}=
{}@default
=0=1=2=0=1=2lrs2lrf [options] file.lrs
Bir LRS dosyasından LRF dosya derle.
Whenever you pass arguments to lrs2lrf that have spaces in them, enclose the arguments in quotation marks. For
example “C:some path with spaces”
[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¸sleme
--version
programın sürüm numarasını göster ve çık
web2disk
=
{}=
{}@default
=0=1=2=0=1=2web2disk URL
URL’nin neresi için oldu˘gu, örne˘gin http://google.com
Whenever you pass arguments to web2disk that have spaces in them, enclose the arguments in quotation marks. For
example “C:some path with spaces”
[options]
--base-dir, -d
URL’nin kaydedilece˘gi temel dizin. Öntanımlısı .
--delay
Minimum interval in seconds between consecutive fetches. Default is 0 s
--dont-download-stylesheets
CSS stil yüklemeyin
--encoding
The character encoding for the websites you are trying to download. The default is to try and guess the encoding.
--filter-regexp
Any link that matches this regular expression will be ignored. This option can be specified multiple times, in
which case as long as any regexp matches a link, it will be ignored. By default, no links are ignored. If both filter
regexp and match regexp are specified, then filter regexp is applied first.
296
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
--help, -h
bu yardım iletisini göster ve çık
--match-regexp
Only links that match this regular expression will be followed. This option can be specified multiple times, in
which case as long as a link matches any one regexp, it will be followed. By default all links are followed.
--max-files, -n
˙Indirilecek maksimum dosya sayısı. Bu sadece <a href> etiketlerindeki dosyalara uygulanır. Öntanımlısı
9223372036854775807
--max-recursions, -r
Maximum number of levels to recurse i.e. depth of links to follow. Default 1
--timeout, -t
Sunucu cevabı için, saniye olarak zaman a¸sı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 Belgelendirilmemis¸ Komutlar
• ebook-device
• markdown-calibre
Belgelendirilmemi¸s komutların nasıl kullanılaca˘gını terminalden bir parametre vermeden kullanarak görebilirsiniz.
1.12 Calibre gelistirme
¸
ortamı ayarlamak
calibre tamamen açık kaynaklıdır ve GNU GPL v3105 ile lisanslanmı¸stır. Bunun anlamı programı keyfinizce indirip de˘gi¸stirebilme özgürlü˘günüz oldu˘gudur. Bu kısımda, istedi˘giniz i¸sletim sisteminde nasıl calibre geli¸stirme ortamı
kuraca˘gınızı ö˘greneceksiniz. calibre hız ve sistem yüzünde bir miktar C/C++ kodu dı¸sında ço˘gunlukla Python106 ile
yazılmı¸stır. Calibre’nin Python 3 ile uyumlu olmadı˘gını ve en az Python 2.7 istedi˘gini not edin.
105 http://www.gnu.org/copyleft/gpl.html
106 https://www.python.org
1.12. Calibre gelistirme
¸
ortamı ayarlamak
297
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
˙
Içindekiler
• Tasarım felsefesi (sayfa 298)
– Kod düzeni (sayfa 298)
• Kodun alınması (sayfa 299)
– De˘gi¸sikliklerinizin içerilmesi için gönderilmesi (sayfa 300)
• Windows geli¸stirme ortamı (sayfa 301)
• OS X geli¸stirme ortamı (sayfa 301)
• Linux geli¸stirme ortamı (sayfa 302)
• Aynı bilgisayarda ayrı “normal” ve “geli¸stirme” calibre yüklemelerini bulundurmak (sayfa 303)
• Hata ayıklama ipuçları (sayfa 303)
– Print ifadeleri kullanarak (sayfa 304)
– Etkile¸simli python yorumcusu kullanarak (sayfa 304)
– Python hata ayıklayıcıyı uzak hata ayıklayıcı olarak kullanmak (sayfa 304)
– Hata ayıklayıcının favori python IDE’nizde kullanımı (sayfa 305)
– Calibre python ortamında keyfi betik çalı¸stırma (sayfa 305)
• Projelerinizde calibre kullanmak (sayfa 305)
– Calibre’nin ikilik kurulumu (sayfa 306)
– Linux üstünde kaynak kurulum (sayfa 306)
• Calibre’nin çe¸sitli kısımları için API belgelendirmesi (sayfa 306)
1.12.1 Tasarım felsefesi
calibre’nin kökleri Unix dünyasına uzanır, yani tasarımı oldukça modülerdir. Modüller birbirleriyle iyi tanımlanmı¸s
arayüzlerle ileti¸sim kurarlar. Bu da calibre’ye yeni özellikler ekleme ve hata ayıklamayı çok kolay kılarak hızlı geli¸stirme temposu olu¸sturur. Kökleri sebebiyle, calibre’nin tüm fonksiyonları için generated/en/cli-index de
belgelenmi¸s kapsamlı bir komut satırı arayüzü vardır.
Calibre’nin modüler tasarımı Eklentiler ile ifade edilir. Calibre eklentiler yazmakla ilgili bir rehber (sayfa 229)
de vardır. Örne˘gin calibre’ye yeni bir cihaz deste˘gi yazmak ço˘gunlukla 100 satırdan az kod bir aygıt sürücüsü eklentisi
ile gerçeklenir. Yerle¸sik sürücülere107 göz atabilirsiniz. Benzer olarak, yeni dönü¸stürme biçimlerine destek eklemek
gird˙I/çıktı biçimi eklentileri yazmayı gerektirir. Modüler tasarıma bir örnek de haberleri getirmeye yarayan reçete
sistemidir (sayfa 121). Calibre’ye özellikler eklemek için tasarlanmı¸s ba¸ska eklenti örnekleri için plugin indeksine108
göz atın.
Kod düzeni
Tüm calibre python kodu calibre paketindedir. Bu paket a¸sa˘gıdaki alt paketleri içerir
• devices - Tüm aygıt sürücüleri. Bazı yerle¸sik sürücülere bakmanız nasıl çalı¸stı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˘glanan 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¸stir.
• e-kitaplar - Tüm e-kitap dönü¸stürme/metadata kodu. ˙Iyi bir ba¸slangıç noktası ebook-convert komutuna gücünü
veren calibre.ebooks.conversion.cli modülüdür. Dönü¸stürme süreci conversion.plumber
ile kontrol edilir. Biçim ba˘gımsız tüm kod ebooks.oeb içindedir ve biçim ba˘gımlı kodlar
ebooks.format_name içindedir.
– Metadata okuma, yazma ve indirme tamamen ebooks.metadata içindedir
107 https://github.com/kovidgoyal/calibre/tree/master/src/calibre/devices
108 http://www.mobileread.com/forums/showthread.php?p=1362767#post1362767
298
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
– Dönü¸stürme bir boru hattı içinde olur, bu hattın yapısı için s¸uraya göz atın Giri¸s (sayfa 50).
Hat bir girdi eklentisi, çe¸sitli dönü¸stürmeler ve bir çıktı eklentisinden olu¸sur. Boru hattını olu¸sturan 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ı¸stırılmamı¸s epub gibi bir temsili üstünde çalı¸sır. Bu sunumu yöneten sınıf ebooks.oeb.base içindeki OEBBook sınıfıdır. Dönü¸stürme sırasında e-kitaba uygulanan çe¸sitli dönü¸stürmeler oeb/transforms/*.py içindedir. Girdi ve çıktı eklentileri ise
conversion/plugins/*.py içinde.
– E-kitap düzenleme için de˘gi¸sik bir kapsayıcı nesne kullanılır. E-kitap düzenleme araçları için API Belgelendirmesi (sayfa 346) içinde belgelenmi¸stir.
• db - Veri tabanı arka ucu. Calibre kitaplı˘gına arayüz için Veri tabanı arayüzü için API Belgelendirmesi
(sayfa 340) ye göz atın.
• içerik sunucu: library.server calibre ˙Içerik Sunucusudur.
• gui2 - Grafik Kullanıcı Arayüzü. GUI ilklendirmesi gui2.main ve gui2.ui içinde gerçekle¸sir. E-kitap okuyucu gui2.viewer içindedir. E-kitap düzenleyici de gui2.tweak_book içinde.
Çe¸sitli calibre çalı¸stırılabilirleri için giri¸s noktalarını bulmak isterseniz, linux.py109 içindeki ‘‘entry_points‘‘e bakın.
Kodu anlamada yardıma ihtiyacınız olursa, geli¸stirici forumuna110 gönderin, muhtemelen bir çok calibre geli¸stiricisinden 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 tarball111 .
calibre, da˘gıtık bir sürüm kontrol sistemi olan Git112 kullanır. Git calibre’nin destekledi˘gi tüm platformlarda kullanılabilirdir. Git’i yükledikten sonra, calibre kaynak kodunu a¸sa˘gı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, s¸una benzer bir s¸ey olmalı C:\Program
Files\Git\git.exe.
calibre çok geni¸s ve çok uzun kaynak kontrol geçmi¸sine sahip bir projedir, yani yukarıdaki i¸slem bir miktar sürebilir
(internet hızınıza ba˘glı 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 archive113 .
Bir dalı son koda güncellemek için, s¸u komutu kullanın:
=
{}=
{}@default
=0=1=2=0=1=2git pull \PYGZhy{}\PYGZhy{}no\PYGZhy{}edit
109 https://github.com/kovidgoyal/calibre/blob/master/src/calibre/linux.py
110 http://www.mobileread.com/forums/forumdisplay.php?f=240
111 http://code.calibre-ebook.com/dist/src
112 http://www.git-scm.com/
113 http://code.calibre-ebook.com/dist/src
1.12. Calibre gelistirme
¸
ortamı ayarlamak
299
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
˘ sikliklerinizin
Degi
¸
içerilmesi için gönderilmesi
Yalnızca bir kaç küçük de˘gi¸siklik yapmak istiyorsanız, de˘gi¸sikliklerinizi yapıp calibre hata takibinde114 bir bilete
ekleyebilece˘giniz bir “merge talimatı” olu¸sturun. Bu i¸slem için de˘gi¸sikliklerinizi yapıp s¸unu çalı¸stırın:
=
{}=
{}@default
=0=1=2=0=1=2git commit \PYGZhy{}am \PYGZdq{}Comment describing your changes\PYGZdq{}
git
Bu i¸slem mevcut dizinde bir my-changes dosyası olu¸sturur, bunu basitçe calibre hata takibindeki115 bir bilete ekleyin. Bu i¸slemin yaptı˘gınız tüm gönderimleri içerece˘gini unutmayın. Sadece bazı gönderimleri yollamak isterseniz,
yukardaki origin/master kısmını de˘gi¸stirmelisiniz. 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˘gi¸stirin, örne˘gin, 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˘gun geli¸stirme yapmayı planlıyorsanız, en iyi yöntem bir GitHub116 hesabı açmak olacaktır. A¸sa˘gıda
ana calibre deposuna çekme istekleri yapabilece˘giniz s¸ekilde kendi calibre çatalınızı nasıl olu¸sturaca˘gınızı gösteren
basit bir kılavuz bulabilirsiniz:
• Makalede gösterildi˘gi gibi makinenize git kurun: Git Kurulumu117
• Surada
¸
anlatıldı˘gı gibi, GitHub’a kimlik do˘grulama için ssh anahtarları kurun: SSH anahtarları üretme118
• https://github.com/kovidgoyal/calibre adresine gidin ve Fork dü˘gmesine tıklayın.
• Bir Terminal açın ve:
=
{}=
{}@default
=0=1=2=0=1=2
git clone [email protected]:\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˘gi¸stirin. Bu i¸slem sizin çatalınızı yerel olarak getirmeye yarar.
• ˙Istedi˘giniz gibi de˘gi¸siklikler yapabilir ve istedi˘giniz zaman gönderebilirsiniz. Yaptı˘gınız i¸sler birle¸stirmeye hazır
oldu˘gunda:
=
{}=
{}@default
=0=1=2=0=1=2
git push
sonra da https://github.com/<username>/calibre adresine gidin ve Pull Request dü˘gmesine tıklayıp birle¸stirme i¸slemi için bir çekme iste˘gi üretin.
114 https://bugs.launchpad.net/calibre
115 https://bugs.launchpad.net/calibre
116 https://github.com
117 https://help.github.com/articles/set-up-git
118 https://help.github.com/articles/generating-ssh-keys
300
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
• Herhangi bir anda yerel kopyanızı ana depo ile s¸u s¸ekilde güncel tutabilirsiniz:
=
{}=
{}@default
=0=1=2=0=1=2
git pull upstream
Ayrıca calibre geli¸stirici forumunu da119 takip etmelisiniz. Büyük de˘gi¸siklikler yapmadan önce forumda tartı¸smalı
veya Kovid ile do˘grudan temas kurmalısınız (e-posta adresi tüm kaynak kodunda bulunabilir).
1.12.3 Windows gelistirme
¸
ortamı
Not: Yukarda anlatıldı˘gı 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¸s olan
calibre kod dizinine gidin. Örne˘gin:
=
{}=
{}@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˘gi¸skeni CALIBRE_DEVELOP_FROM de˘gerinin src dizininin mutlak yoluna ayarlanmasıdır.
Yani, yukardaki örne˘gi takip edersek, C:\Users\kovid\work\calibre\src dizini olurdu. Windows üstünde
çevre de˘gi¸skeni ayarlamakla ilgili kısa bir kılavuz120 .
Çevre de˘gi¸skenini ayarladıktan sonra, yeni bir komut satırı açın ve s¸u komutu kullanarak düzgün ayarlandı˘gını do˘grulayın:
=
{}=
{}@default
=0=1=2=0=1=2echo \PYGZpc{}CALIBRE\PYGZus{}DEVELOP\PYGZus{}FROM\PYGZpc{}
Bu çevre de˘gi¸skenini ayarlamak calibre’nin belirtilen konumdan tüm Python kodunu yükleyece˘gi anlamına gelir.
Bu kadar! Simdi
¸
calibre kodu üstünde çalı¸smaya ba¸slayabilirsiniz.
src\calibre\__init__.py dosyasını açın ve s¸u satırı ekleyin:
Örne˘gin
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˘gru. Simdi
¸
calibredb komutunu çalı¸stırın. Çıktının ilk satırı Hello, world! olmalı.
˙Isterseniz, s¸urada121 anlatılanları takip ederek, ücretsiz Microsoft Visual Studio içinde de bir calibre geli¸stirme ortamı
kurabilirsiniz.
1.12.4 OS X gelistirme
¸
ortamı
Not: Yukarda anlatıldı˘gı gibi calibre kaynak kodunu almalısınız.
119 http://www.mobileread.com/forums/forumdisplay.php?f=240
120 https://docs.python.org/2/using/windows.html#excursus-setting-environment-variables
121 http://www.mobileread.com/forums/showthread.php?t=251201
1.12. Calibre gelistirme
¸
ortamı ayarlamak
301
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Calibre’yi sa˘glanan .dmg dosyası ile normal olarak kurun. Sonra bir Terminal açın ve daha önceden getirilmi¸s calibre
kod dizinine gidin, örne˘gin:
=
{}=
{}@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¸smi¸s->Di˘ger menüsünden
calibre komut satırı araçlarını yükledi˘ginize emin olun.
Sonraki adım calibre’yi hata ayıklama kipinde çalı¸stırırken CALIBRE_DEVELOP_FROM çevre de˘gi¸skenini src dizininin mutlak yoluna ayarlayacak bir bash beti˘gi olu¸sturmaktır.
Bir düz metin dosyası olu¸sturun:
=
{}=
{}@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ı¸stı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¸slemden sonra s¸unu çalı¸stırın:
=
{}=
{}@default
=0=1=2=0=1=2\PYG{n}{calibre}\PYG{o}{\PYGZhy{}}\PYG{n}{develop}
Calibre ba¸slarken 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ı¸stırdı˘gınızı belirten bir yıldız i¸sareti görmelisiniz.
1.12.5 Linux gelistirme
¸
ortamı
Not: Yukarda anlatıldı˘gı gibi calibre kaynak kodunu almalısınız.
calibre birincil olarak Linux üzerinde geli¸stirilir. Geli¸stirme ortamını ayarlarken iki seçene˘giniz vardır. Calibre ikili˘gini
normal s¸ekilde yükleyip geli¸stirmenizde çalı¸sma zamanı ortamı olarak bunu kullanabilirsiniz. Bu yakla¸sım Windows
ve OS X yakla¸sımına benzer. Di˘ger bir seçenek calibre’yi kaynaktan yüklemenizdir. Kaynaktan geli¸stirme ortamı
kurma talimatları kaynak a˘gacındaki INSTALL dosyasındadır. Burada önerilen metod olan çalı¸sma zamanı ikili˘gi
kullanımını kastediyor olaca˘gız.
Calibre’yi ikilik yükleyici ile yükleyin. Sonra bir uç birim açın ve daha önceden getirilmi¸s calibre kod dizinine gidin,
örne˘gin:
=
{}=
{}@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}{
302
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
calibre src ve kaynak alt dizinlerini içeren dizindir.
Sonraki adım CALIBRE_DEVELOP_FROM çevre de˘gi¸skenini src dizininin mutlak yoluna ayarlamaktır. Yukardaki
örnek göz önüne alınırsa bu /home/kovid/work/calibre/src olur. Çevre de˘gi¸skenlerinin nasıl ayarlanaca˘gı
kullandı˘gınız Linux da˘gıtımına ve kabu˘ga ba˘glıdır.
Çevre de˘gi¸skenini ayarladıktan sonra, bir uç birim açın s¸u komutu kullanarak düzgün ayarlanıp ayarlanmadı˘gını kontrol edin:
=
{}=
{}@default
=0=1=2=0=1=2echo \PYGZdl{}CALIBRE\PYGZus{}DEVELOP\PYGZus{}FROM
Bu çevre de˘gi¸skenini ayarlamak calibre’nin belirtilen konumdan tüm Python kodunu yükleyece˘gi anlamına gelir.
Bu kadar! Simdi
¸
calibre kodu üstünde çalı¸smaya ba¸slayabilirsiniz.
src/calibre/__init__.py dosyasını açın ve s¸u satırı ekleyin:
Örne˘gin
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˘gru. Simdi
¸
calibredb komutunu çalı¸stırın. Çıktının ilk satırı Hello, world! olmalı.
1.12.6 Aynı bilgisayarda ayrı “normal” ve “gelistirme”
¸
calibre yüklemelerini bulundurmak
Calibre kaynak a˘gacı oldukça kararlıdır ve çok nadiren kırılır, ama ayrı bir test kitaplı˘gından kaynaktan çalı¸stırma ve
yayınlanan calibre sürümünü gündelik kitaplı˘gınızla çalı¸stırma gibi bir ihtiyaç duyarsanız, .bat dosyaları veya kabuk
betikleri kullanarak calibre’yi ba¸slatabilirsiniz. A¸sa˘gıdaki örnek Windows üzerinde .bat dosyaları (di˘ger platformlar
için de yönergeler aynıdır, .bat dosyası yerine kabuk beti˘gi kullanmanız yeterli) ile bu i¸sin nasıl yapılaca˘gını gösteriyor
Günlük kitaplı˘gınızla calibre’nin yayınlanan sürümünü ba¸slatmak için:
calibre-normal.bat:
=
{}=
{}@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:
1.12. Calibre gelistirme
¸
ortamı ayarlamak
303
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Print ifadeleri kullanarak
Kovid’in favori hata ayıklama yöntemi. ˙Ilgilendi˘giniz noktalara print ifadeleri koyun ve programı uç birimde çalı¸stırın.
Örne˘gin GUI’yi uç birimden s¸u s¸ekilde ba¸slatabilirsiniz:
=
{}=
{}@default
=0=1=2=0=1=2\PYG{n}{calibre}\PYG{o}{\PYGZhy{}}\PYG{n}{debug} \PYG{o}{\PYGZhy{}}\PYG{n}{g}
Benzer s¸ekilde, e-kitap görüntüleyiciyi s¸u s¸ekilde ba¸slatabilirsiniz:
=
{}=
{}@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 s¸öyle ba¸slatı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
Etkilesimli
¸
python yorumcusu kullanarak
A¸sa˘gıdaki iki satır kodu ekleyerek o noktada etkile¸simli bir python oturumu ba¸slatabilirsiniz:
=
{}=
{}@default
=0=1=2=0=1=2\PYG{k+kn}{from} \PYG{n+nn}{calibre} \PYG{k+kn}{import} \PYG{n}{ipython}
\PY
Komut satırından çalı¸stırırken, tüm yerel tanımlı de˘gi¸skenlere (yerek kapsamdaki de˘gi¸skenler) eri¸simi olan etkile¸simli
bir Python yorumlayıcı ba¸slatacaktır. Etkile¸simli yorumlayıcının nesne özellikleri için TAB ile tamamlama özelli˘gi
bile vardır ayrıca dir(), type(), repr(), vs. gibi çe¸sitli Python olanaklarını da kullanabilirsiniz.
Python hata ayıklayıcıyı uzak hata ayıklayıcı olarak kullanmak
Yerle¸sik python hata ayıklayıcısını (pdb) komut satırından uzak hata ayıklayıcı olarak kullanabilirsiniz. Önce, s¸u s¸ekilde, uzak hata ayıklayıcıyı calibre kodunda ilgilendi˘giniz noktada ba¸slatı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ı¸stırın. Kodda yukardaki noktaya eri¸sildi˘ginde calibre donacak ve hata ayıklayıcının ba˘glanmasını bekleyecektir.
Simdi
¸
bir uç birim açın ve hata ayıklama oturumunu ba¸slatmak için a¸sa˘gı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˘gınız hakkında bilgiyi pdb modülü için python stdlib belgelerinde122 bulabi122 https://docs.python.org/2/library/pdb.html#debugger-commands
304
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
lirsiniz.
Not: Varsayılan olarak, uzak hata ayıklayıcı port 4444’den ba˘glanmaya çalı¸sacaktır. Yukardaki set_trace() ve cli()
fonksiyonlarına port parametresini set_trace(port=1234) ve cli(port=1234) s¸eklinde geçirerek de˘gi¸stirebilirsiniz.
Not: Python hata ayıklayıcı birden çok i¸s ipini desteklemez, yani her i¸s ipi için set_trace’i her seferinde de˘gi¸sik bir
port numarasıyla bir kere ça˘gırmalısınız.
Hata ayıklayıcının favori python IDE’nizde kullanımı
E˘ger uzak hata ayıklamayı destekliyorsa, yerle¸sik hata ayıklayıcı favori python IDE’niz tarafından kullanılabilir.
˙Ilk adım calibre nin indirilmi¸s src yolunu IDE’nizde PYTHONPATH‘‘e eklemek. Ba¸
ska bir deyi¸
sle,
yukarda ‘‘CALIBRE_DEVELOP_FROM olarak ayarladı˘gı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¸stirin. Uzak hata ayıklayıcı çalı¸stırmak için ne gerekiyorsa calibre’de ilgilendi˘giniz noktaya ekleyin. Sonra calibre’yi normal s¸ekilde çalı¸stırın.
IDE’niz artık calibre içinde gelen uzak hata ayıklayıcıya ba˘glanabiliyor olmalı.
Calibre python ortamında keyfi betik çalıstırma
¸
calibre-debug komutu calibre modüllerine eri¸simi olan kodunuzun çalı¸smasını sa˘glayan bir kaç pratik anahtar içerir:
=
{}=
{}@default
=0=1=2=0=1=2calibre\PYGZhy{}debug \PYGZhy{}c \PYGZdq{}some python code\PYGZdq{}
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ı
s¸ekilde çalı¸sır:
=
{}=
{}@default
=0=1=2=0=1=2calibre\PYGZhy{}debug myscript.py
kendi Python beti˘ginizi çalı¸stırmak için kullanılabilir. Beti˘gin Python yorumlayıcısına verilmesiyle aynı s¸ekilde çalı¸sır,
tek fark calibre ortamının tamamen ba¸slatılmı¸s olması, yani beti˘ginizde tüm calibre kodunu kullanabilecek olmanızdır.
Beti˘ginizle komut satırı ba˘gımsız de˘gi¸skenlerini kullanmak için s¸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˘gi¸skenlerin beti˘ginize geçirilmesine sebep olur.
1.12.8 Projelerinizde calibre kullanmak
Python projenizde calibre fonksiyonlarını/kodunu do˘grudan kullanmak mümkündür. Bunu yapmanın iki yolu vardır:
1.12. Calibre gelistirme
¸
ortamı ayarlamak
305
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Calibre’nin ikilik kurulumu
E˘ger calibre’nin ikilik kurulumuna sahipseniz, calibre ile gelen Python yorumlayıcısını s¸u s¸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˘grudan s¸u s¸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ı¸stırmak için yorumlayıcıyı ayarladı˘gından, herhangi ba¸ska calibre modülünden/paketinden önce
init_calibre modülünü içe aktarmanız önemlidir.
1.12.9 Calibre’nin çesitli
¸
kısımları için API belgelendirmesi
Reçeteler için API Belgeleri
Reçete yazmaya yarayan API BasicNewsRecipe (sayfa 306) ile tanımlanmı¸stır
class calibre.web.feeds.news.BasicNewsRecipe(options, log, progress_reporter)
Tüm reçeteler için gerekli mantı˘gı içeren temel sınıf. Bu sınıf içindeki fonksiyonları kademeli olarak ezerek kademeli olarak daha özelle¸stirilmi¸s/güçlü reçeteler olu¸sturabilirsiniz. Reçete olu¸sturmakla ilgili bir giri¸s kılavuzu
için s¸uraya bakınız, Sık kullandı˘gınız haber sitesini ekleme (sayfa 121).
abort_article(msg=None)
Call this method inside any of the preprocess methods to abort the download for the current article. Useful
to skip articles that contain inappropriate content, such as pure video articles.
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.
add_toc_thumbnail(article, src)
Bunu populate_article_metadata’dan makaledeki <img> etiketinin ˙Içindekiler bölümünde makaleyi temsil
etmeye uygun küçük resim için src özniteli˘gi ile ça˘gırın. Küçük resmin gerçekten kullanılıp kullanılmayaca˘gı aygıta ba˘glıdır (¸simdilik sadece Kindle’larda kullanılır). Referans verilen resmin ba¸sarılı s¸ekilde
indirilmi¸s olmasına dikkat edin, aksi takdirde yoksayılacaktır.
classmethod adeify_images(soup)
Reçeteniz EPUB’a dönü¸stürüldü˘günde ve Adobe Digital Editions ile görüntülendi˘ginde resimlerle ilgili
sorun ya¸sıyorsa bu metodu postprocess_html() (sayfa 309) içinden ça˘gırın.
cleanup()
Tüm makaleler indirildikten sonra ça˘grılır. Aboneli sitelerden çıkı¸s yapmak gibi temizlik i¸slerini yapmak
için kullanın.
306
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
clone_browser(br)
Tarayıcıyı co˘galt. Ço˘galtılmı¸s tarayıcılar çok i¸s parçacıklı indirmeler yapmak için kullanılır, çünkü mechanize i¸s parçacı˘gı güvenli de˘gildir. Varsayılan ço˘galtma rutinleri ço˘gu tarayıcı özelle¸stirmesini yakalıyor
olmalıdır, ancak reçetenizde egzotik bir s¸eyler yaparsanız, reçetenizde bu metodu ezmeli ve elle ço˘galtma
yapmalısınız.
Ço˘galtılmı¸s tarayıcı örnekleri çerez yönetiminde özelle¸stirme yapmadıysanız varsayılan olarak aynı, i¸s
parçacı˘gı güvenli CookieJar’ı kullanır.
default_cover(cover_file)
Kapa˘gı olmayan reçeteler için genel bir kapak olu¸stur
download()
Bu reçetedeki beslemelerden makaleleri indir ve ön i¸sleme yap. Bu metod her Reçete örne˘gi için yalnızca
bir kere ça˘grılmalıdır. Birden fazla ça˘gırmak tanımlanmayan davranı¸slara yol açar. :return: index.html yolu
extract_readable_article(html, url)
‘html’den ana makale içeri˘gini 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˘gine i¸saret 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ı¸stırılmı¸s makaleyi temsil eden ‘article ile ça˘grılır. feedparser
<https://pythonhosted.org/feedparser/>‘_a göz atın. Varsayılan olarak asıl ba˘glantıya bakar (feedburner
veya pheedo gibi bir servis tarafından e¸slenen beslemeler için) ve bulunursa bunu döndürür, aksi durumda
‘article.link123 döndürür.
get_browser(*args, **kwargs)
Web’de belge getirmeye yarayan bir tarayıcı örne˘gi 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 mechanize124
tarayıcı örne˘gi döndürür.
Reçeteniz önce giri¸s yapmanızı gerektiriyorsa, alt sınıfınızda bu metodu ezin. Örne˘gin, New York Times
reçetesinde kullanılan a¸sa˘gıdaki kod tam eri¸sim için giri¸s yapar:
=
{}=
{}@default
=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˘gına URL ya da None döndür. Varsayılan olarak normalde None olan self.cover_url ö˘gesinin de˘gerini 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˘gırmadan önce üye de˘gi¸sken ‘self.cover_url‘yi ayarlayın.
get_feeds()
Bu profil için getirilecek RSS beslemeleri listesini döndürür. Listenin her elemanı (ba¸slık, url) biçiminde
2 elemanlı demet s¸eklinde olmalıdır. Ba¸slık None veya bo¸s karakter dizisi ise, beslemedeki ba¸slık kullanılır. Bu method reçetenizin indirilecek besleme listesini anlamak için bir miktar i¸slem yapması gereken
123 https://pythonhosted.org/feedparser/reference-entry-link.html
124 http://wwwsearch.sourceforge.net/mechanize/
1.12. Calibre gelistirme
¸
ortamı ayarlamak
307
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
durumlarda faydalıdır. Durum böyleyse, kendi alt sınıfınızda ezin.
get_masthead_title()
Reçete ba¸slı˘gından ba¸ska bir s¸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˘geri None
olan self.masthead_url üyesinin de˘gerini 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˘gırmadan üye de˘gi¸sken ‘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˘grılır. Dosya sisteminde makale
HTML’sini içeren bir dosyaya yol döndürmelidir. Bu dosya yinelemeli HTML motoruyla i¸slenir, yani
web’deki sayfalara ba˘glantılar/resimler içerebilir.
Bu metod makale içeri˘gine otomatik olarak eri¸smeyi zorla¸stırmaya çalı¸san siteler için faydalı olabilir.
classmethod image_url_processor(baseurl, url)
Resim url’lerinde bir takım i¸slemler yap (dinamik üretilen resimler için boyut kısıtlamalarının kaldırılması,
vs.) ve i¸slenmi¸s URL’yi döndür.
index_to_soup(url_or_raw, raw=False, as_tree=False)
Dizin sayfasına URL’yi alıp BeautifulSoup125 lanmı¸s halini döndüren bir kolayla¸stırıcı araç.
url_or_raw: Bir URL ya da karakter dizisi olarak indirilmi¸s dizin sayfası
is_link_wanted(url, tag)
Ba˘glantı 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˘gi Etiket
javascript_login(browser, username, password)
Bu metod giri¸s formu olarak javascript kullanan web sitesine giri¸s için kullanılır. Giri¸s tamamlandı˘gında,
web sayfasından dönen çerezler normal bir (javascript olmayan) tarayıcıya kopyalanır ve indirme i¸slemi
bu çerezler kullanılarak devam eder.
Örnek bir uygulama:
=
{}=
{}@default
=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 s¸u s¸ekilde seçebilirsiniz:
=
{}=
{}@default
=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{}
125 http://www.crummy.com/software/BeautifulSoup/bs3/documentation.html
308
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
parse_feeds()
BasicNewsRecipe.get_feeds() (sayfa 307) tarafından döndürülen beslemelerden makale listeleri
olu¸sturur. Feed nesnesi listesi döndürür.
parse_index()
Bu metod makale listeleri yerine web sayfalarını ayrı¸stı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 308) yerine tercih edilir.
Bir liste döndürmelidir. Listenin her elemanı (’besleme ba¸
slı˘
gı’, makale listesi) biçiminde 2 elemanlı demet olmalıdır.
Her makale listesi s¸u biçimde sözlük içermelidir:
=
{}=
{}@default
=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¸slemeyi durdurmak ve calibre’nin kullanıcıya hata yerine basit bir ileti göstermesini
isterseniz, abort_recipe_processing() (sayfa 306) metodunu ça˘gırın.
populate_article_metadata(article, soup, first)
Makaleye ba˘glı her HTML sayfası indirildi˘ginde ça˘grılır. Ayrı¸stırılmı¸s HTML’den (soup) yazar/özet/vs
gibi makale metadata’sı alırken kullanmak amaçlıdır. :param article: calibre.web.feeds.Article
sınıfı bir nesne. Özeti de˘gi¸stirirseniz text_summary de˘gi¸stirmeyi de unutmayın :param soup: Bu makaleye
ait ayrı¸stırılmı¸s HTML :param first: Ayrı¸stırılmı¸s HTML makalenin ilk sayfasıysa True.
postprocess_book(oeb, opts, log)
˙Indirilmi¸s e-kitap üstünde gerekli tüm art i¸slemleri çalı¸stır.
Parametreler
• oeb – OEBBook nesnesi
• opts – Dönü¸stürme seçenekleri
postprocess_html(soup, first_fetch)
Bu metod indirilen her bir HTML dosyası kayna˘gı ile, ba˘glantılar ve resimler için ayrı¸stırıldıktan sonra
ça˘grılır. HTML üzerinde keyfi, güçlü, i¸sleme sonrası i¸slemler yapmak için kullanılabilir. ˙I¸sledikten sonra
soup döndürmelidir.
Parametreler
˙Indirilen
• soup
–
:term:‘HTML‘yi
içeren
bir
‘BeautifulSoup
<http://www.crummy.com/software/BeautifulSoup/bs3/documentation.html>‘_
örne˘gi.
• first_fetch – Bu sayfa makalenin ilk sayfasıysa True.
1.12. Calibre gelistirme
¸
ortamı ayarlamak
309
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
preprocess_html(soup)
Bu metod indirilen her bir HTML dosyası kayna˘gı ile, ba˘glantılar ve resimler için ayrı¸stırılmadan önce
ça˘grılır. remote_tags vs. de tanımlandı˘gı gibi temizlik yapıldıktan sonra ça˘grılır. HTML üzerinde keyfi,
güçlü i¸sleme öncesi i¸slemler yapmak için kullanılabilir. ˙I¸slemden sonra soup döndürmelidir.
soup: ˙Indirilen :term:‘HTML‘yi içeren bir ‘BeautifulSoup <http://www.crummy.com/software/BeautifulSoup/bs3/docu
örne˘gi.
preprocess_raw_html(raw_html, url)
Bu metod indirilen her bir HTML dosyası kayna˘gı ile, bir nesne a˘gacına ayrı¸stırılmadan önce ça˘grılır.
raw_html web’den indirilen ham HTML’nin evrensel kodda karakter dizisi temsilidir. url HTML’nin indirildi˘gi URL’dir.
Bu metodun preprocess_regexps’den önce hareket etti˘gini unutmayın.
Bu metod i¸slenmi¸s raw_html’yi evrensel kod nesnesi olarak döndürmelidir.
classmethod print_version(url)
Makale içeri˘gi 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 s¸ey yapmaz. Örne˘gin:
=
{}=
{}@default
=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˘gı ile, remove_tags, keep_only_tags gibi herhangi bir temizlik özniteli˘gi uygulanmadan önce ça˘grılır. preprocess_regexps’in zaten uygulanmı¸s olaca˘gını unutmayın. Reçetenin reklam sayfalarını atlamasına olanak tanımak için dü¸sünülmü¸stür. E˘ger soup bir reklam
sayfasını temsil ederse, gerçek sayfanın HTML’sini döndür. Aksi halde None döndür.
soup: ˙Indirilen :term:‘HTML‘yi içeren bir ‘BeautifulSoup <http://www.crummy.com/software/BeautifulSoup/bs3/docu
örne˘gi.
sort_index_by(index, weights)
index‘deki ba¸slıkları ‘weights‘e göre sıralamaya yarayan kolaylık sa˘glayıcı metod. ‘index yerinde sıralanır.
index döndürür.
index: Ba¸slık listesi.
weights: A˘gırlıkları ba¸slı˘ga haritalayan bir sözlük. Index’deki herhangi bir ba¸slık a˘gırlıklı olmazsa, 0 a˘gırlıklı oldu˘gu varsayılır.
classmethod tag_to_string(tag, use_alt=True, normalize_whitespace=True)
Bir BeautifulSoup126 ‘Tag‘ını alıp tüm CDATA kısımları ve alt etiket öznitelikleri dahil metni yinelemeli
olarak çıkaran kolaylık sa˘glayıcı bir metod. Muhtemelen bo¸s bir evrensel kod metni döndürür.
use_alt: True ise metinsel içeri˘gi olmayan etiketler için alt öznitelik kullanmaya çalı¸s
tag: BeautifulSoup127 Etiketi
articles_are_obfuscated= False
˙Içerik almasını zorla¸stıran web sitelerini i¸slemek için
get_obfuscated_article() (sayfa 308) metodunu uygulayın.
True
olarak
ayarlayın
ve
auto_cleanup= False
˙Indirilmi¸s makale sayfalarından tüm metni otomatik olarak çıkart. Okunabilirlik projesinden algoritma126 http://www.crummy.com/software/BeautifulSoup/bs3/documentation.html
127 http://www.crummy.com/software/BeautifulSoup/bs3/documentation.html
310
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
lar kullanır. True olarak ayarlamak, indirilmi¸s HTML’yi temizlemekle elle u˘gra¸smanıza gerek olmadı˘gı
anlamına gelir (Elle temizlik daha üstündür tabi).
auto_cleanup_keep= None
Otomatik temizleme algoritmasının asla kaldırmaması gereken ö˘geleri belirtin. Söz dizim XPath ifadesidir.
Örne˘gin:
=
{}=
{}@default
=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˘gu ortada hizalanır, yoksa sola hizalanır
compress_news_images= False
Tüm ölçekleme ve sıkı¸stırma parametrelerini göz ardı edip resimleri de˘gi¸stirmeden geçirmek için False
olarak ayarlayın. True ise ve di˘ger sıkı¸stırma parametreleri varsayılan ayarlarında bırakılırsa, jpeg resimler
çıktı profilinde ayarlanmı¸s ekran boyutlarına sı˘gması için ölçeklenir ve w x h ölçeklenmi¸s resim boyutları
olmak üzere en fazla (w * h)/16 boyutuna sıkı¸stırılır.
compress_news_images_auto_size= 16
Jpeg resimleri otomatik sıkı¸stırmada kullanılan etmen. None olarak ayarlanırsa, otomatik sıkı¸stırma kapatılır. Aksi halde, resimler kalite seviyesi dü¸sü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˘glayan
compress_news_images_max_size parametresi ile ezilebilir. scale_news_images_to_device’ı etkinle¸stirirseniz resim önce ölçeklenir ardından kalitesi boyutu w ve h ölçeklenmi¸s resim boyutları olmak üzere (w *
h)/etmen altına dü¸sene kadar dü¸sürülür. Di˘ger bir deyi¸sle, bu sıkı¸stırma ölçeklendirmeden sonra yapılır.
compress_news_images_max_size= None
Jpeg kalitesini resimler verilen (KBayt olarak) boyutu geçmeyecek s¸ekilde ayarla. Ayarlanırsa, bu parametre compress_news_images_auto_size vasıtasıyla otomatik sıkı¸stırmayı ezer. Asgari jpeg kalitesi 5/100
olacaktır, yani bu kısıtlamaya uyulmaması mümkündür.
conversion_options= {}
˙Indirilen içeri˘gin e-kitaba dönü¸stü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˘gin:
=
{}=
{}@default
=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˘gı geni¸sli˘gi ve yüksekli˘gi indirilen kapa˘gın yüzdesi olarak ifade edilen bir çerçeveye gerçeklemesini söyler. cover_margins= (10, 15,
1.12. Calibre gelistirme
¸
ortamı ayarlamak
311
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
‘#ffffff’) kapa˘gı soldan ve sa˘gdan 10px, yukardan ve a¸sa˘gıdan 15px doldurur. Renk isimleri
http://www.imagemagick.org/script/color.php de tanımlanmı¸stır. Beyazın bir sebepten ötürü windows’da
çalı¸smadı˘gını not edin. Yerine #ffffff kullanın
delay= 0
Saniye cinsinden ardı¸sık indirmeler arası gecime. Daha hassas bir zaman için de˘gi¸sken ondalık sayı olarak
yazılabilir.
description= u’‘
Bu reçetenin indirdi˘gi içeri˘gi 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ı¸sılır. E˘ger ça˘grılabilirse,
iki ba˘gımsız de˘gi¸sken ile ça˘grılır: Reçete nesnesi ve kodu çözülecek kaynak. Kodu çözülmü¸s kayna˘gı
döndürmelidir.
extra_css= None
˙Indirilen HTML dosyalarına eklenecek ek CSS‘i belirtin. ‘ etiketleri içine, </head> kapanı¸s etiketinden önce eklenir böylece HTML etiketlerindeki biçim özniteliklerinde tek tek ifade edilenler hariç
tüm :term:‘CSS‘i ezer. Örne˘gin:
=
{}=
{}@default
=0=1=2=0=1=2
\PYG{n}{extra\PYGZus{}css} \PYG{o}{=} \PYG{l+s}{\PYGZsq{}}\PYG{l+s}{.hea
feeds= None
˙Indirilecek besleme listesi. [url1, url2, ...] veya [(’title1’, url1), (’title2’,
url2),...] olabilir
filter_regexps= []
Hangi ba˘glantıların göz ardı edilece˘gine karar veren düzenli ifade listesi. Bo¸ssa göz ardı edilir. Yalnızca
is_link_wanted uygulanmamı¸ssa kullanılır. Örne˘gin:
=
{}=
{}@default
=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 313) veya BasicNewsRecipe.filter_regexps
(sayfa 312) 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¸slık ve/veya
URL’ye sahip makaledir. Aynı ba¸slıktaki makaleleri göz ardı etmek için, s¸u s¸ekilde ayarlayın:
=
{}=
{}@default
=0=1=2=0=1=2
\PYG{n}{ignore\PYGZus{}duplicate\PYGZus{}articles} \PYG{o}{=} \PYG{p}{\P
URL’ler kullanmak için, s¸öyle ayarlayın:
=
{}=
{}@default
=0=1=2=0=1=2
312
\PYG{n}{ignore\PYGZus{}duplicate\PYGZus{}articles} \PYG{o}{=} \PYG{p}{\P
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Ba¸slık veya URL e¸sle¸stirme için, s¸u s¸ekilde ayarlayın:
=
{}=
{}@default
=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 314). Bu liste bo¸s de˘gilse, <body> etiketi bo¸saltılır ve bu
listedeki girdilerle e¸sle¸sen etiketlerle tekrar doldurulur. Örne˘gin:
=
{}=
{}@default
=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˘gi olan etiketleri tutar.
language= ‘und’
Haberlerin dili. ˙Iki veya üç karakter uzunlu˘gunda 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˘glayın.
match_regexps= []
Hangi ba˘glantıların takip edilece˘gini belirten düzenli ifade listesi. Bo¸ssa, göz ardı edilir. Yalnızca
is_link_wanted uygulanmamı¸ssa kullanılır. Örne˘gin:
=
{}=
{}@default
=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¸sle¸sir.
BasicNewsRecipe.match_regexps (sayfa 313) veya BasicNewsRecipe.filter_regexps
(sayfa 312) 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˘gu besleme için BasicNewsRecipe.oldest_article (sayfa 313) kullanmalısınız
needs_subscription= False
True is GUI indirme sırasında kullanıcı ve parola sorar. “iste˘ge ba˘glı” olarak ayarlanmı¸ssa kullanıcı adı ve
parola iste˘ge ba˘glıdır
no_stylesheets= False
E-kitaba dönü¸stürmeye uygun olmayan çok karma¸sık biçim sayfalarına sahip web sitelerinde biçim sayfalarının yüklenmesini kapatmayı kolayla¸stırıcı bayrak. True ise biçim sayfaları indirilmez ve i¸slenmez
oldest_article= 7.0
Bu haber kayna˘gından indirilecek en eski makale. Gün olarak.
preprocess_regexps= []
˙Indirilen HTML üzerince çalı¸stırılacak regexp yer de˘gi¸stirme kuralları listesi. Listenin her elemanı iki
elemanlı bir demet olmalıdır. ˙Ilk eleman derlenmi¸s bir düzenli ifade, ikincisi tek bir e¸sle¸sme nesnesi alan
ve e¸sle¸smeyle yer de˘gi¸secek karakter dizisi döndüren bir ça˘grılabilir olmalıdır. Örne˘gin:
1.12. Calibre gelistirme
¸
ortamı ayarlamak
313
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
=
{}=
{}@default
=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¸seyi 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¸s olmayan bir karakter dizisi olarak ayarlayın. Karakter dizisi kapatma iletisi
olarak kullanılacaktır
recursions= 0
Makale web sitelerinde takip edilecek ba˘glantı seviyesi sayısı
remove_attributes= []
Tüm etiketlerden kaldırılacak öznitelik listesi. Örne˘gin:
=
{}=
{}@default
=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¸s beslemeler çıktıdan kaldırılır. parse_index alt sınıfta ezilmi¸sse bu seçene˘gin hiçbir etkisi yoktur. Yalnızca feeds veya get_feeds() (sayfa 307) kullanarak bir besleme listesi döndüren reçeteler
içindir. Ayrıca ignore_duplicate_articles seçene˘gini kullanırsanız da kullanılır.
remove_javascript= True
˙Indirilen HTML’den tüm javascript etiketlerini soyacak kullanı¸slı etiket
remove_tags= []
Kaldırılacak etiket listesi. Belirtilen etiketler indirilen HTML’den çıkarılır. Bir etiket s¸u biçimdeki sözlük
olarak tanımlanır:
=
{}=
{}@default
=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˘ge ba˘glıdır. Arama kriterinin tam açıklaması için, bakınız Beautiful Soup128 Yaygın bir
örnek:
=
{}=
{}@default
=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.
128 http://www.crummy.com/software/BeautifulSoup/bs3/documentation.html#Searching%20the%20Parse%20Tree
314
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
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 314). Örne˘gin:
=
{}=
{}@default
=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 314). Örne˘gin:
=
{}=
{}@default
=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ü
reverse_article_order= False
Her beslemedeki makalelerin sırasını tersine çevir
scale_news_images= None
Resimlerin ölçeklendirilece˘gi azamı boyut (w,h). scale_news_images_to_device True ise çıktı profilinde
ayarlanan aygıt ekran boyutuna ayarlanır, profilin ayarlanmadı˘gı durumlarda hangi de˘ger atanmı¸ssa o bırakılır (varsayılan None).
scale_news_images_to_device= True
Resmi çıktı profilinde ayarlanmı¸s aygıt ekran boyutlarına sı˘gması için ölçeklendir. Çıktı profili ayarlanmamı¸ssa göz ardı edilir.
simultaneous_downloads= 5
E¸s zamanlı indirme sayısı. Sunucu titizse 1 olarak ayarlanır. BasicNewsRecipe.delay (sayfa 312) >
0 ise otomatik olarak 1’e dü¸sü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
Sablonları
¸
biçimlendirmek için kullanılan CSS, ör., gezinti çubukları ve ˙Içindekiler. Bu de˘gi¸skeni ezmek
yerine, doku ve görünümü özelle¸stirmek için reçetenizde extra_css kullanmalısınız.
timefmt= ‘ [%a, %d %b %Y]’
˙Ilk 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¸sımı
title= u’Bilinmeyen Haber Kayna\u011f\u0131’
E-kitap için kullanılcak ba¸slık
use_embedded_content= None
Normalde bir beslemede tüm makalenin gömülü olup olmadı˘gını gömülü içeri˘gin uzunlu˘guna bakarak tahmin etmeye çalı¸sırız. None ise, varsayılan tahmin kullanılır. True ise beslemelerin gömülü içeri˘gi oldu˘gunu,
False ise beslemenin gömülü içeri˘gi olmadı˘gını var sayarız.
1.12. Calibre gelistirme
¸
ortamı ayarlamak
315
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
use_javascript_to_login= False
Bunu True olarak ayarlarsanız, calibre web sitesine giri¸s için javascript kullanır. Giri¸s için javascript
kullanan bazı web sitelerinde bu gereklidir. True olarak ayarlarsanız asıl giri¸s i¸slemini yapması için
javascript_login() (sayfa 308) metodunu uygulamalısınız.
Eklentiler için API Belgelendirmesi
Güçlü eklentiler olu¸sturmak için alt sınıf yapılabilir çe¸sitli soyut temel sınıfları tanımlar. Kullanı¸slı sınıflar s¸unlardır:
•
•
•
•
•
•
•
•
•
•
Eklenti (sayfa 316)
FileTypePlugin (sayfa 318)
Metadata eklentileri (sayfa 319)
Katalog eklentileri (sayfa 319)
Metadata indirme eklentileri (sayfa 320)
Dönü¸stürme eklentileri (sayfa 323)
Aygıt Sürücüleri (sayfa 325)
Kullanıcı Arayüzü Eylemleri (sayfa 334)
Tercihler Eklentileri (sayfa 337)
Görüntüleme eklentileri (sayfa 339)
Eklenti
class calibre.customize.Plugin(plugin_path)
Bir calibre eklentisi. Kullanı¸slı üyeleri s¸unları içerir:
•self.plugin_path: Bu eklentiyi veya dahili bir eklentiyse None içeren zip dosyasına yolu tutar
•self.site_customization: Kullanıcı tarafından girilen bir özelle¸stirme karakter dizisini tutar.
Alt sınıflarda ezilmesi gereken metodlar:
•initialize() (sayfa 317)
•customization_help() (sayfa 318)
Kullanı¸slı metodlar:
•temporary_file() (sayfa 318)
•__enter__()
•load_resources() (sayfa 317)
supported_platforms= []
Bu eklentinin çalı¸stı˘gı platformların listesi. Örne˘gin: [’windows’, ’osx’, ’linux’]
name= ‘Trivial Plugin’
Bu eklentinin adı. Çalı¸sması için Trivial Plugin dı¸sında bir s¸eye ayarlamalısınız.
version= (1, 0, 0)
Eklentinin 3-lü demet s¸eklinde sürümü (majör, minör, düzeltme)
description= u’Bir fonksiyonu yok’
Bu eklentinin ne yaptı˘gını anlatan kısa karakter dizisi
author= u’Bilinmeyen’
Eklentinin yazarı
316
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
priority= 1
Bir dosya türü için birden fazla eklenti oldu˘gunda, eklentiler azalan öncelikle çalı¸stırılır örn. yüksek öncelikli eklentiler ilk çalı¸stı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˘gi en eski calibre sürümü
can_be_disabled= True
False ise, kullanıcının bu eklentiyi kapatma s¸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˘ginde bir defa ça˘grılır. Eklentiler yeni bir eklenti eklendi˘ginde her defasında
yeniden ilklendirilirler. Ayrıca eklenti bir çalı¸san süreç içinde çalı¸stırılırsa, kitap ekleme süreci gibi, eklenti
her yeni çalı¸sma 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˘gildir.
config_widget()
Basit karakter dizisi temelli varsayılan özelle¸stirmeye güvenmek yerine bu metodu ve
save_settings() (sayfa 317) metodunu eklentinizde uygulayarak özel bir yapılandırma iletis¸im penceresi kullanın.
Bu metod, e˘ger uygulanırsa, bir QWidget döndürmelidir. Parçacık iste˘ge ba˘glı olarak ba˘gımsız de˘gi¸sken almayan bir validate() metoduna sahip olabilir ve kullanıcı Tamama tıklayınca anında ça˘grılır. De˘gi¸siklikler
yalnızca metod True döndürürse uygulanır.
Bir sebepten bu a¸samada 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 317) 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¸sim penceresi gösterir. Kullanıcı Tamama tıklarsa True,
yoksa False döndürür. De˘gi¸siklikler otomatik olarak uygulanır.
load_resources(names)
Bu eklenti bir ZIP dosyasıyla gelirse (kullanıcı tarafından eklenmi¸s eklenti), bu metod ZIP dosyasından
kaynakları yüklemenizi sa˘glar.
Örne˘gin 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
1.12. Calibre gelistirme
¸
ortamı ayarlamak
317
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Dönü¸s de˘geri: {isim: dosya_içerikleri} s¸eklinde bir sözlük. Zip dosyasında bulunmayan isimler sözlükte olmayacaktır.
customization_help(gui=False)
Bu eklentinin nasıl özelle¸stirilece˘gi konusunda yardım veren bir metin. Varsayılan olarak
NotImplementedError yükseltilir, bu da eklentinin özelle¸stirmeye ihtiyaç duymadı˘gı anlamına
gelir.
Bu metodu alt sınıflarınızda yeniden uyguluyorsanız, kullanıcıdan bu eklenti için özelle¸stirme olarak kullanılacak bir karakter dizisi girmesi istenir. Özelle¸stirme karakter dizisi self.site_customization
olarak kullanılabilir olacaktır.
Site özelle¸stirmesi her¸sey olabilir, örne˘gin kullanıcının bilgisayarındaki bir ikili˘gin 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ı˘gında silinir. Olu¸sturulan geçici dosyanın tam yoluna eri¸smek
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¸s noktasıdır. Kullanıcı calibre-debug -r “Eklenti
˙Ismi” girdi˘ginde ça˘grılır. Ba˘gımsız de˘gi¸skenler args de˘gi¸skenine mevcuttur.
FileTypePlugin
class calibre.customize.FileTypePlugin(plugin_path)
Taban: calibre.customize.Plugin (sayfa 316)
Belirli bir dosya türü kümesiyle ili¸skili eklenti.
file_types= set([])
Bu eklentinin çalı¸sması gereken dosya türü kümesi. Örne˘gin: {’lit’, ’mobi’, ’prc’}
on_import= False
True ise, bu eklenti kitaplar veri tabanına eklendi˘ginde çalı¸sır
on_postimport= False
True ise, bu eklenti kitaplar veri tabanına tekrar eklendi˘ginde çalı¸sır
on_preprocess= False
True ise, bu eklenti dönü¸stürme öncesi çalı¸sır
on_postprocess= False
True ise, bu eklenti dönü¸stürme çıktı eklentisi tarafından üretilen son dosyanın dönü¸stürmesi sonrası çalı¸sır.
run(path_to_ebook)
Eklentiyi çalı¸stır. Alt sınıflarda uygulanmalıdır. E-kitapta gerekli tüm de˘gi¸siklikleri yapıp de˘gi¸stirilmi¸s ekitaba mutlak yolu döndürmelidir. Herhangi bir de˘gi¸siklik gerekmiyorsa, asıl e-kitaba yolu döndürmelidir.
Bir hatayla kar¸sıla¸sılırsa bir Exception yükseltmelidir. Varsayılan uygulaması basitçe asıl e-kitaba yolu
döndürür.
De˘gi¸stirilmi¸s e-kitap dosyası temporary_file() metoduyla olu¸sturulmalıdır.
Parametreler path_to_ebook – E-kitaba mutlak yol.
Dönü¸s de˘geri: De˘gi¸stirilmi¸s e-kitaba mutlak yol.
318
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
postimport(book_id, book_format, db)
˙Içe aktarım sonrası ça˘grılır, örn., kitap dosyası veri tabanına eklendikten sonra.
Parametreler
• book_id – Eklenen kitabın veri tabanı kimli˘gi.
• book_format – Eklenen kitabın dosya türü.
• db – Kitaplık veri tabanı.
Metadata eklentileri
class calibre.customize.MetadataReaderPlugin(*args, **kwargs)
Taban: calibre.customize.Plugin (sayfa 316)
Bir dosya türü kümesinden metadata okumayı uygulayan bir eklenti.
file_types= set([])
Bu eklentinin çalı¸stırılaca˘gı dosya türü kümesi, Örne˘gin: set([’lit’, ’mobi’, ’prc’])
get_metadata(stream, type)
Akı¸s tarafından temsil edilen dosya için metadata döndür (okumayı destekleyen dosya benzeri bir nesne). Girdi verisiyle ilgili bir hata oldu˘gunda bir istisna yükselt. :param type:
Dosya türü. file_types (sayfa 319) 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 316)
Bir dosya türü kümesinden metadata okumayı uygulayan bir eklenti.
file_types= set([])
Bu eklentinin çalı¸stırılaca˘gı dosya türü kümesi, Örne˘gin: set([’lit’, ’mobi’, ’prc’])
set_metadata(stream, mi, type)
Akı¸s ile temsil edilen dosya için metadata ayarla (okumayı destekleyen dosya benzeri bir
nesne). Girdi verisiyle ilgili bir hata oldu˘gunda bir istisna yükselt. :param type: Dosya
türü. file_types (sayfa 319) 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 316)
Bir katalog üreteci uygulayan eklenti.
file_types= set([])
Bu eklentinin çalı¸stırılaca˘gı çıktı dosya türü, Örne˘gin: ‘epub’ veya ‘xml’
cli_options= []
Bu eklentiye özel CLI ayrı¸stı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
1.12. Calibre gelistirme
¸
ortamı ayarlamak
319
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
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˘gilse, eklentinin .ui ve .py dosyalarını zip dosyasından $TMPDIR’e kopyala. Sekme dinamik olarak olu¸sturulup calibre.gui2.dialogs.catalog.py:Catalog içindeki Katalog Seçenekleri ileti¸sim penceresine eklenecektir
run(path_to_output, opts, db, ids, notification=None)
Eklentiyi çalı¸stır. Alt sınıflarda uygulanmalıdır. file_types’da belirtilen biçimde katalo˘gu ü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¸sturulmalıdır.
Parametreler
• path_to_output – Üretilen katalog dosyasına mutlak yol.
• opts – Anahtar kelime de˘gi¸skenlerinden olu¸san 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 316)
capabilities= frozenset([])
Bu eklenti tarafından desteklenen yetenek kümesi. Kullanı¸slı yetenekler: ‘identify’, ‘cover’
touched_fields= frozenset([])
Bu eklenti tarafından tanımlama a¸saması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
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˘gın gerçekten de gzip aktarım kodlamasını destekledi˘ginden
emin olun
cached_cover_url_is_reliable= True
Zulalanan kapak URL’leri bazen güvenilmez olabilir (örn. indirme ba¸sarı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ı˘gı in¸sa 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.
320
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
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˘gin 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ı¸slı olacak jeton listesi döndür. Bu fonksiyon ilk
ad göbek adı soyad sırasında jeton döndürmeye çalı¸sır, yazar isminde bir virgül varsa, ismin soyad, di˘ger
ad biçiminde oldu˘gunu farz eder.
get_title_tokens(title, strip_joiners=True, strip_subtitle=False)
Bir ba¸slık al ve bir AND arama sorgusu için kullanı¸slı jeton listesi döndür. Ba˘glaç(iste˘ge ba˘glı) ve noktalama i¸saretleri hariç.
split_jobs(jobs, num)
Bir i¸s listesini olabildi˘gince e¸sit s¸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¸stirmek için ça˘gırın. Tabi ki metadata kayna˘gınıza uygun özel bir algoritma da kullanabilirsiniz.
get_book_url(identifiers)
Bir 3-demet veya None döndür. 3-demet s¸u biçimdedir: (tanımlayıcı_türü, tanımlayıcı_de˘geri, 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˘geri
URL ile ili¸skili tanımlayıcıya kar¸sılık gelir. Bu URL bir insanın tarayıcıyla gezebilece˘gi bir URL olmalıdır.
Kullanıcı için bu kaynaktaki kitapların sayfalarını kolayca gezebilece˘gi bir ba˘glantı olması amacını ta¸sı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¸sturulacaksa uygulayın.
get_book_url_name(idtype, idval, url)
get_book_url()’nin döndürdü˘gü de˘gerden okunabilir bir isim döndür.
get_book_urls(identifiers)
Override this method if you would like to return multiple urls for this book. Return a list of 3-tuples. By
default this method simply calls get_book_url() (sayfa 321).
get_cached_cover_url(identifiers)
Tanımlayıcılar sözlü˘günce tanımlanan kitap için zulalanmı¸s kapak URL’sini veya böyle bir URL yoksa
None döndür.
Bu metodun yalnızca do˘grulanmı¸s URL’ler döndürmesi gerekti˘gine 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¸slı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 321) ça˘grısı sonucunu sıralamaya yarar.
Varsayılan algoritma detayları için bknz InternalMetadataCompareKeyGen (sayfa 322). Varsayılan algoritma uygun de˘gilse bu fonksiyonu tekrar uygulayın.
identify(log, result_queue, abort, title=None, authors=None, identifiers={}, timeout=30)
Bir kitabı ba¸slık/yazar/isbn/vs. özelli˘gine göre tanımla
1.12. Calibre gelistirme
¸
ortamı ayarlamak
321
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Tanımlayıcı(lar) belirtilmi¸s ve bir e¸sle¸sme bulunamamı¸ssa ve bu metadata kayna˘gı ilgili tüm tanımlayıcılar
kaydetmemi¸sse (örne˘gin, bir kitabın tüm ISBN’leri), bu metod sadece ba¸slık ve yazar (belirtildiklerini farz
ederek) ile tekrar denemelidir.
Bu metadata kayna˘gı kapak da sa˘glıyorsa, kapa˘gın URL’si kapak getirme API’si ile tekrar tekrar aynı
ISBN/özel tanımlayıcı ça˘grısı yapıldı˘gı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˘gınca
döndürülen sonuçların sırasını belirten bir tamsayı olan source_relevance özniteli˘gi olmalıdır. Bu tam sayı
compare_identify_results() tarafından kullanılacaktır. Sıra önemli de˘gilse, 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ı˘gından
emin ol.
Parametreler
• log – Bir sistem günlü˘gü nesnesi, hata ayıklama bilgisi/hatası çıktılamak için kullanın
• result_queue – Bir sonuç Kuyru˘gu, sonuçlar buna koyulmalı. Her sonuç bir Metadata
nesnesidir
• abort – E˘ger abort.is_set() True döndürürse, i¸slemeyi durdur ve en kısa sürede dön
• title – Kitabın ba¸slı˘gı, None olabilir
• authors – Kitap için yazarlar listesi, None olabilir
• identifiers – Di˘ger tanımlayıcıları içeren bir sözlük, en yaygın s¸ekliyle {‘isbn’:‘1234...’}
• timeout – Saniye cinsinden zaman a¸sımı, hiçbir a˘g iste˘gi zaman a¸sımından uzun sürmemeli.
Dönü¸s de˘geri: Hataya rastlanmadıysa None, aksi halde hatanın kullanıcıya gösterilebilecek evrensel kodda temsili
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 321) metodundakiyle aynı
anlamdadırlar. (self, cover_data)’yı result_queue’ya koy.
Bu metod verimlilik için uygun olan her durumda zulalanmı¸s kapak URL’lerini kullanmalıdır. Zulalı veri
olmadı˘gında, ço˘gu eklenti identify’ı ça˘gı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˘ginde, Metadata nesnelerinin uygunlu˘gunun kar¸sıla¸stırması için bir sıralama anahtarı
üret. Bu yalnızca aynı metadata kayna˘gından gelen sonuçları kar¸sıla¸stırmak için kullanılır, farklı kaynaklar
arasında de˘gil.
Arama anahtarı artan sırada sıralamanın azalan uygunluk sırasında sıralama oldu˘gundan emin olur.
322
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Algoritma:
•Sorguda oldu˘gu gibi en az bir tanımlayıcısı olan sonuçları tercih et
•Zulalanmı¸s 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¸slı˘gı birebir e¸sle¸sen sonuçları tercih et
•Daha uzun yorumlu sonuçları tercih et (%10 uzunluktan fazlası)
•Sonucun uygunlu˘gunu metadata kayna˘gının aramasından gelen rapor olarak kullan motor
Dönüstürme
¸
eklentileri
class calibre.customize.conversion.InputFormatPlugin(*args)
Taban: calibre.customize.Plugin (sayfa 316)
InputFormatPlugins bir belgeyi HTML+OPF+CSS+vs. ye dönü¸stürmekle sorumludurlar. Dönü¸stürmenin sonuçları UTF-8 ile kodlanmı¸s olmak zorundadır. Esas olay convert() (sayfa 323) içinde gerçekle¸sir.
file_types= set([])
Bu eklentinin çalı¸saca˘gı dosya türü kümesi. Örne˘gin: set([’azw’, ’mobi’, ’prc’])
is_image_collection= False
True ise, bu girdi eklentisi HTML dosyası ba¸sına bir resim koleksiyonu üretir. Bu, dönü¸stü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˘geri kullanılabilir tüm çekirdeklerin kullanılaca˘gı
anlamına gelir
for_viewer= False
True olarak ayarlanırsa, girdi eklentisi çıktısını görüntülemeye uygun hale getirmek için özel i¸slemden
geçirir
output_encoding= ‘utf-8’
Bu girdi eklentisinin dosyaları içinde olu¸sturdu˘gu kodlama. None de˘geri kodlamanın belirtilmemi¸s oldug˘ unu ve ba˘gımsız s¸ekilde algılanması gerekti˘gini belirtir
common_options= set([<calibre.customize.conversion.OptionRecommendation object at 0x7f74d6fedb10>])
Tüm girdi biçim eklentilerince payla¸sılan seçenekler. Alt sınıflarda ezmeyin. Bunun yerine options
(sayfa 323) kullanın. Her seçenek bir OptionRecommendation örne˘gi olmalıdır.
options= set([])
Bu eklentinin davranı¸sını özelle¸stirecek seçenekler. Tüm seçenekler OptionRecommendation örne˘gi
olmalıdırlar.
recommendations= set([])
(seçenek_ismi, önerilen_de˘ger, ö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 ˙Içindekiler ile aynı sıradadır.
1.12. Calibre gelistirme
¸
ortamı ayarlamak
323
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
convert(stream, options, file_ext, log, accelerators)
Bu metod alt sınıflarda uygulanmalıdır. Olu¸sturulan OPF dosyasına yolu veya bir OEBBook örne˘gi döndürmelidir. Tüm çıktı mevcut dizinde içerilmelidir. Bu eklenti mevcut dizin dı¸sında bir yerde dosya olu¸sturuyorsa bunların metod dönmeden önce silinmesi/silme için i¸saretlenmesi gerekir.
Parametreler
• stream – Girdi dosyasını içeren dosya benzeri nesne.
• options – Dönü¸stürme sürecini özelle¸stirecek seçenekler. Bu eklentice bildirilen tüm seçeneklere kar¸sılık gelen özniteliklere sahip olaca˘gı garantidir. Ek
olarak, tamamlayıcı de˘gerleri sıfırdan yukarı do˘gru alan ayrıntılı bir özniteli˘gi olacaktır. Yüksek sayılar daha ayrıntılı demektir. Kullanı¸slı ba¸ska bir öznitelik de calibre.customize.profiles.InputProfile örne˘gi olan
input_profile özniteli˘gidir.
• 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˘gi, dönü¸stürmenin sonraki a¸samalarını
hızlandıracak olan çe¸sitli bilgileri içeren sözlük.
postprocess_book(oeb, opts, log)
Girdi eklentisinin kitap ayrı¸stırıldıktan sonra i¸slem yapmasına izin vermek için ça˘grılır.
specialize(oeb, opts, log, output_fmt)
Girdi eklentisinin ayrı¸stırılan kitabı belli çıktı biçimine özelle¸stirmesine izin vermek için ça˘grılır. Ayrı¸stırılan kitaba herhangi dönü¸stürme yapılmadan önce postprocess_book’dan sonra ça˘grılır.
gui_configuration_widget(parent, get_option_by_name, get_option_help, db, book_id=None)
Bu eklentiyi calibre GUI’sinde yapılandırmaya yarayan parçacı˘gı olu¸sturmak için ça˘grılır. Parçacık bir
PluginWidget sınıfı örne˘gi olmalıdır. Örnekler için girdi eklentileri olu¸sturmaya göz atın.
class calibre.customize.conversion.OutputFormatPlugin(*args)
Taban: calibre.customize.Plugin (sayfa 316)
OutputFormatPlugins bir OEB belgesini (OPF+HTML) bir e-kitap çıktısına dönü¸stürmekle sorumludurlar.
OEB belgesinin UTF-8 ile kodlanmı¸s oldu˘gu varsayılabilir. Ana olay convert() (sayfa 324) içinde gerçekles¸ir.
file_type= None
Bu eklentinin çıktıladı˘gı dosya türü (noktasız son ek)
common_options= set([<calibre.customize.conversion.OptionRecommendation object at 0x7f74d6fedc90>])
Tüm girdi biçim eklentilerince payla¸sılan seçenekler. Alt sınıflarda ezmeyin. Bunun yerine options
(sayfa 324) kullanın. Her seçenek bir OptionRecommendation örne˘gi olmalıdır.
options= set([])
Bu eklentinin davranı¸sını özelle¸stirecek seçenekler. Tüm seçenekler OptionRecommendation örne˘gi
olmalıdırlar.
recommendations= set([])
(seçenek_ismi, önerilen_de˘ger, önerilen_seviye) biçiminde 3’lü demet kümesi
convert(oeb_book, output, input_plugin, opts, log)
oeb_book içeri˘gini (calibre.ebooks.oeb.OEBBook örne˘gidir) çıktı ile belirtilen dosyaya gerçekle.
Parametreler
324
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
• 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ü¸stürme boru hattının ba¸sında kullanılan girdi eklentisi.
• opts – Dönü¸stürme seçenekleri. Bu eklentinin SeçenekÖnerilerine kar¸sı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¸sleminden sonra css’e de˘gi¸siklik yapmak için kullanılabilir.
Parametreler
• item – ˙I¸slenen ö˘ge (HTML dosyası)
• stylizer – Ö˘ge için düzle¸stirilmi¸s biçemleri içeren Stylizer nesnesi. Herhangi bir ö˘genin
biçemini stylizer.style(ö˘ge) 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ı˘gı olu¸sturmak için ça˘grılır. Parçacık
bir PluginWidget sınıfı örne˘gi 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 325) dir. Ancak aygıtınız kendisini i¸sletim sistemine
USBMS sürücüsü olarak gösteriyorsa bu tür cihazları destekeleyecek her türlü mantı˘gı uyguladı˘gından USBMS sınıfını kullanmalısınız.
class calibre.devices.interface.DevicePlugin(plugin_path)
Taban: calibre.customize.Plugin (sayfa 316)
Artalanlarca uygulanması gereken, bir e-kitap okuyucu ile ileti¸sim kurmaya yarayan arayüzü tanımlar.
FORMATS= [’lrf’, ‘rtf’, ‘pdf’, ‘txt’]
Desteklenen biçimlerin sıralı listesi
VENDOR_ID= 0
VENDOR_ID bir tam sayı, tamsayı listesi veya sözlük olabilir. Bir sözlükse, sözlüklerin sözlü˘gü olmalıdır,
s¸u s¸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¸san liste olabilir.
THUMBNAIL_HEIGHT= 68
Küçük resimlerin aygıttaki yüksekli˘gi
1.12. Calibre gelistirme
¸
ortamı ayarlamak
325
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
THUMBNAIL_COMPRESSION_QUALITY= 75
Küçük resimlerin aygıttaki geni¸sli˘gi. Bunu ayarlamak küçük resimleri bu boyutta olmaya zorlar, en-boy
oranını korumaz. Ayarlanmamı¸ssa, en-boy oranı korunur ve küçük resim THUMBNAIL_HEIGHT’dan
yüksek olamaz. Küçük resimler için sıkı¸stırma kalitesi. Bunu 100’e yakın tutarak daha kaliteli ve daha az
sıkı¸stı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¸sle¸stirme 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˘gı.
CAN_DO_DEVICE_DB_PLUGBOARD= False
Aygıtın device_db metadata santralini ele alıp alamayaca˘gı
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
s¸unun takma adı: Annotation
OPEN_FEEDBACK_MESSAGE= None
GUI bunu None de˘gilse bir ileti olarak gösterir. Açma uzun sürüyorsa kullanı¸slıdır
VIRTUAL_BOOK_EXTENSIONS= frozenset([])
Aygıtta “sanal kitap” olan uzantılar kümesi ve bu sebepten görüntülenemez/kaydedilemez/kitaplı˘ga eklenemez Örne˘gin: frozenset([’kobo’])
NUKE_COMMENTS= None
Kitabın aygıta yollanan kopyasında yorumlar tamamen silinsin mi. None de˘gilse bunun yorumların de˘gi¸stirilece˘gi kısa bir metin olması gerekir.
MANAGES_DEVICE_PRESENCE= False
True ise bu aygıtın aygıt algılamayı, çıkarmayı vs. tamamen yönetti˘gini 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ı˘gı 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¸slerden sorumludur. calibre aralıklarla detect_managed_devices()
metodunu ça˘gırır ve algılanan bir aygıt döndürürse, calibre open() ça˘gırır. open() önceki ça˘grılar ba¸sarısız
olsa bile bir aygıt dönerse her zaman ça˘grılır, yani sürücü ba¸sarısız olunan aygıtların listesini kendisi tutmalıdır. Benzer s¸ekilde, çıkarma durumunda, calibre eject() ça˘gırır ve sonraki detect_managed_devices()
ça˘grısının None döndü˘günü var sayarsak, post_yank_cleanup() ça˘gı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 328) ça˘gıracaktır.
ASK_TO_ALLOW_CONNECT= False
True olarak ayarlandıysa, calibre kullanıcıya aygıt ilk kez algılandı˘gında aygıtı calibre ile yönetip isteyip istemedi˘gini sorar. Bunu True olarak ayarlarsanız get_device_uid() (sayfa 330)
ve ignore_connected_device() (sayfa 330) ve get_user_blacklisted_devices()
(sayfa 331) ve set_user_blacklisted_devices() (sayfa 331) uygulamalısınız
user_feedback_after_callback= None
Bazı geri ça˘grılar çalı¸stırıldıktan sonra (¸su an yalnızca upload_books) calibre’nin bir ileti penceresi açmasını sa˘glamak için bunu {‘title’:ba¸slık, ‘msg’:ileti, ‘det_msg’:detaylı_ileti} biçiminde bir sözlük olarak
326
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
ayarlayın. Kullanıcıyı bir sürü ileti ile sıkmamaya dikkat edin. Bu de˘gi¸sken her geri ça˘grıdan sonra kontrol
edilir, yalnızca gerçekten ihtiyacınız oldu˘gunda 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˘glıysa True, device_info döndür.
Parametreler devices_on_system – Hali hazırda ba˘glı olan aygıtlar
detect_managed_devices(devices_on_system, force_refresh=False)
Yalnızca MANAGES_DEVICE_PRESENCE True ise ça˘grılır.
Bu sürücünün ele alabilece˘gi 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¸sey olabilir, calibre bu nesneyi kullanmaz, sadece open()’a geçirilir.
Bu metod GUI tarafından aralıklarla ça˘grılır, fazla kaynak tüketmedi˘ginden 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˘grı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ı¸s ve ba¸sarıyla açılmı¸ssa 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¸s
• log_packets – True ise aygıta giden/aygıttan gelen paket akı¸sı kaydedilir
• report_progress – % süreciyle çe¸sitli i¸sler için ça˘grılan fonksiyon (sayı 0 ve 100 arasında)
-1 ile ça˘grılırsa i¸sin süreç bilgisi olmadı˘gı 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˘gını görmek için aygıt üstünde ek kontroller yapan iste˘ge ba˘glı metod.
Ele alamayacaksa False döndürmelidir. Bu metod yalnızca satıcı, ürün kimlikleri ve bcd e¸sle¸stikten sonra
ça˘grılır, yani göreceli olarak zamana ba˘glı kontroller yapabilir. Varsayılan uygulaması True döndürür. Bu
metod yalnızca windows üstünde ça˘grılır. Ayrıca bakınız can_handle() (sayfa 327).
Parametreler device_info – Windows’da bir aygıt kimli˘gi karakter dizisi. Unix’de
(satıcı_kimli˘
gi, ürün_kimli˘
gi, bcd) demeti.
can_handle(device_info, debug=False)
can_handle_windows() (sayfa 327) 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¸sim kuran di˘ger fonksiyonlardan önce ça˘grılır. Örne˘gin: Kendilerini USB depolama aygıtı olarak tanıtan aygıtlarda, bu metod aygıtı ba˘glamakla veya aygıt otomatik ba˘glandıysa, nereye ba˘glandı˘gını ö˘grenmekle sorumlu olur.
calibre.devices.usbms.device.Device.open() metodunun bu fonksiyonun USB depolama aygıtlarıyla ilgili iyi bir örnek olacak uygulaması vardır.
1.12. Calibre gelistirme
¸
ortamı ayarlamak
327
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Bu metod kullanıcıya bir ileti göstermek için bir OpenFeedback istisnası yükseltebilir.
Parametreler
• connected_device – Açmaya çalı¸stı˘gımız aygıt. (satıcı kimli˘gi, ürün kimli˘gi, 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ı˘gının UUID’si. Bir kitaplık yoksa None olabilir (örne˘gin komut satırından kullanıldı˘gında).
eject()
Aygıtın i¸sletim sisteminden ba˘gını ayır/çıkart. Bu aygıtla ileti¸sim kurmaya çalı¸san GUI i¸slerinin olup olmadı˘gını kontrol etmez.
NOT: Bu metod di˘ger aygıt metodlarıyla aynı i¸s ipli˘ginde ça˘grılamayabilir.
post_yank_cleanup()
Kullanıcı aygıtı çıkarmadan birden çektiyse ça˘grılır.
set_progress_reporter(report_progress)
Süreç bilgisini raporlaması için bir fonksiyon ayarla.
Parametreler report_progress – % süreciyle çe¸sitli i¸sler için ça˘grılan fonksiyon (sayı 0 ve 100
arasında) -1 ile ça˘grılırsa i¸sin süreç bilgisi olmadı˘gı anlamına gelir
get_device_information(end_session=True)
Aygıtı aygıt bilgisi için sorgula. Bknz L{DeviceInfoQuery}.
Dönü¸s de˘geri: (aygıt ismi, aygıt sürümü, aygıttaki yazılım sürümü, mime türü) Demet iste˘ge
ba˘glı olarak be¸sinci bir sürücü bilgisi demeti alabilir. Örnek için usbms.driver’a göz atın.
get_driveinfo()
driveinfo sözlü˘günü döndür. Genellikle get_device_information() içinden ça˘grılır, ama bu sürücü için driveinfo yüklenmesi yava¸ssa, SLOW_DRIVEINFO’yu ayarlamalıdır. Bu durumda, bu metod calibre tarafından kitap listeleri yüklendikten sonra ça˘grılır. Bunun aygıt i¸s ipli˘ginde ça˘grılmadı˘gına dikkat edin, yani
sürücü books() metodundaki aygıt bilgisini zulalamalı ve bu fonksiyon zulalanmı¸s veriyi döndürmelidir.
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 ö˘geli bir kartlar üstündeki yollara ön ekler listesi döndür. Herhangi bir kart mevcut de˘gilse kart ön eki olarak Non
1. Cihaz hafızası
2. Hafıza Kartı A
3. Hafıza Kartı B
Dönü¸s de˘geri: (1, 2, 3) bayt toplam alanlı 3 elemanlı liste. E˘ger herhangi bir aygıt bu konumlardan birine sahip de˘gilse 0 döndürmelidir.
free_space(end_session=True)
Ba˘glantı noktalarında kullanılabilir olan bo¸s alanı al:
1. Cihaz hafızası
2. Kart A
328
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
3. Kart B
Dönü¸s de˘geri: (1, 2, 3) bayt bo¸s alanlı 3 elemanlı liste. Herhangi bir aygıt bu konumlardan birine
sahip de˘gilse -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˘gindeki e-kitapların listesini döndürür.E˘ger bir kart belirtilmi¸s
ve kartta hiç kitap yoksa bo¸s liste döndürür.
Dönü¸s de˘geri: 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˘gi¸stirilmelidir. Bu metod aygıtta yeterli
yer yoksa FreeSpaceError yükseltmelidir. FreeSpaceError’un metni on_card None de˘gilse “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˘gilse, Metadata nesneleri listesidir. Ana fikir kitabı aygıtta nereye
koyaca˘gını metadata kullanarak belirlemektir. len(metadata)== len(dosyalar). Sıradan kapaktan ayrı olarak (kapa˘ga yol), ayrıca iste˘ge ba˘glı kullanılabilecek küçük resim özniteli˘gi
olabilir. Küçük resim özniteli˘gi (geni¸slik, yükseklik, jpeg olarak kapak verisi) biçimindedir.
Dönü¸s de˘geri: 3 elemanlı demetler listesi. Liste add_books_to_metadata() (sayfa 329)
ya geçirilmek üzere dü¸sünülmü¸stür.
classmethod add_books_to_metadata(locations, metadata, booklists)
Kitaplistelerine konumlar ekle. Bu fonksiyon aygıtla ileti¸sime geçmemelidir.
Parametreler
• locations – L{upload_books} ça˘grısı sonucu
• metadata – Metadata nesneleri listesi, upload_books() (sayfa 329) için olanın aynısı.
• booklists – (books(oncard=None)(), books(oncard=’carda’)(), :meth‘books(oncard=’cardb’)‘)
ça˘grı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¸sime geçmemelidir.
Parametreler
• paths – aygıttaki kitaplara yollar.
• booklists – (books(oncard=None)(), books(oncard=’carda’)(), :meth‘books(oncard=’cardb’)‘)
ça˘grıları sonucunu içeren bir demet.
sync_booklists(booklists, end_session=True)
Aygıttaki metadata’yı güncelle.
1.12. Calibre gelistirme
¸
ortamı ayarlamak
329
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Parametreler booklists – (books(oncard=None)(), books(oncard=’carda’)(), :meth‘books(oncard=’ca
ça˘grı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 327)
ça˘grı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 330) içinde olu¸sturulan parçacı˘gı 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˘gi 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˘gla. Bu metod add_books
ve sync_booklists’den hemen önce ça˘grılır.
pb_func s¸u imzaya sahip bir ça˘grılabilirdir: def pb_func(aygıt_ismi, biçim, santraller)
Mevcut aygıt ismini (sınıf ismi veya DEVICE_PLUGBOARD_NAME), ilgilendi˘giniz biçimi (‘gerçek’
bir biçim veya ‘device_db’), ve santralleri (bu metodu aldı˘gınız yer de olan set_plugboards ile almı¸stınız)
verirsiniz.
Dönü¸s de˘geri: None veya tekli bir santral örne˘gi.
set_driveinfo_name(location_code, name)
Driveinfo dosyasındaki aygıt adını ‘isim’ olarak ayarla. Bu ayar dosya tekrar olu¸sturulana veya ismi tekrar
de˘gi¸stirilene kadar kalacaktır.
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˘ginde, ba¸ska 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˘gi, geri izleme)
startup()
Calibre aygıtı ba¸slatırken ça˘grılır. Gerekli ilklendirmeleri yapın. Sınıfın birden fazla örne˘ginin ilklendirilebilece˘gi, yani __init__’in birden çok ça˘grılabilece˘gini, ama yalnızca bir örne˘ginin bu metodu ça˘gıraca˘gını
unutmayın. Bu metod aygıt i¸s ipli˘ginde ça˘grılır, GUI sürecinde de˘gil.
shutdown()
Calibre kapanırken ça˘grılır, tam kapanırken ya da yeniden ba¸slatılırken. Gerekli temizli˘gi yapın. Bu metod
GUI i¸s ipli˘ginde de˘gil aygıt sürecinde ça˘grılır.
get_device_uid()
Hazırda ba˘glı olan aygıt için benzersiz bir kimlik döndürmelidir (ba¸sarılı open() ça˘grısından hemen sonra
ça˘grı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˘grı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
330
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
open() metodunun hemen ardından ça˘grı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˘gi 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˘grı sitelerinin prefs[’bir s¸eyler’] yerine device_prefs[’bir s¸eyler’] kullandı˘gından emin olmalısınız. Metodunuz
device_prefs.set_overrides(pref=val, pref=val, ...) ça˘gırlmalıdır. Mevcut durumda s¸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ı˘gıyla ilgili bilgi istiyorsanız bu metodu uygulayın. Bu metod açılı¸sta ve ba˘glıyken
calibre kitaplı˘gı de˘gi¸sti˘ginde ça˘grılır.
is_dynamically_controllable()
Eklentiler ba¸slatılırken aygıt yöneticisi tarafından ça˘grı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¸surken kullanılır.
Bu metod GUI sürecinde ça˘grılabilir. Bu metodu uygulayan bir sürücü i¸s ipli˘gi güvenli˘gi sa˘glamalıdır.
start_plugin()
Bu metod eklentiyi ba¸slatmak için ça˘grılır. Eklenti aygıt ba˘glantılarını her nasıl yapıyorsa öyle kabul etmeye ba¸slamalıdır. Eklenti zaten ba˘glantı kabul ediyorsa, bir s¸ey yapma.
Bu metod GUI sürecinde ça˘grılabilir. Bu metodu uygulayan bir sürücü i¸s ipli˘gi güvenli˘gi sa˘glamalıdır.
stop_plugin()
Bu metod eklentiyi durdurmak için ça˘grılır. Eklenti artık ba˘glantı kabul etmemeli, ve arkasını temizlemelidir. shutdown’u bu metodun ça˘gırması beklenebilir. Eklenti zaten ba˘glantı kabul etmiyorsa, bir s¸ey
yapma.
Bu metod GUI sürecinde ça˘grılabilir. Bu metodu uygulayan bir sürücü i¸s ipli˘gi güvenli˘gi sa˘glamalıdır.
get_option(opt_string, default=None)
opt_string tarafından gösterilen seçene˘gin de˘gerini döndür. Bu metod eklenti ba¸slatılmadı˘gında ça˘grılabilir.
Seçenek mevcut de˘gilse None döndür.
Bu metod GUI sürecinde ça˘grılabilir. Bu metodu uygulayan bir sürücü i¸s ipli˘gi güvenli˘gi sa˘glamalıdır.
set_option(opt_string, opt_value)
opt_string tarafından gösterilen seçene˘gin de˘gerini ayarla. Bu metod eklenti ba¸slatılmadan ça˘grılabilir.
Bu metod GUI sürecinde ça˘grılabilir. Bu metodu uygulayan bir sürücü i¸s ipli˘gi güvenli˘gi sa˘glamalıdır.
is_running()
Eklenti ba¸slatıldıysa True döndür, yoksa false
Bu metod GUI sürecinde ça˘grılabilir. Bu metodu uygulayan bir sürücü i¸s ipli˘gi güvenli˘gi sa˘glamalıdır.
synchronize_with_db(db, book_id, book_metadata, first_call)
Aygıttaki bir kitap calibre veri tabanındaki bir kitapla e¸sle¸since kitap e¸sle¸stirme sırasında ça˘grılır. Bu metod
aygıttan calibre veri tabanına (gerekliyse) veri e¸szamanlamakla yükümlüdür.
Metod iki de˘gerli bir demet döndürmelidir. ˙Ilk de˘ger calibre veri tabanı de˘gi¸stiyse de˘gi¸sen kitap kimliklerinin kümesi veya de˘gi¸smediyse None’dir. ˙Ilk de˘ger bo¸s 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˘gruyken ve aygıta gönderilmesi gerekiyorken faydalıdır.
1.12. Calibre gelistirme
¸
ortamı ayarlamak
331
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
˙Ikinci de˘ger bir 2-li demettir. Demetteki ilk de˘ger aygıta bir kitap biçimi gönderilip gönderilmeyece˘gini
belirtir. Amaç aygıttaki kitabın calibre’deki kitapla aynı oldu˘gunu do˘grulamaktır. Bu de˘ger 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˘gerli tüm
kitaplar için bir send_books i¸si olu¸sturacaktır. Not: uzantıyı sonradan alma amacı dı¸sında, aygıtın dosya
ismini üretmek için bir s¸ablon kullandı˘gı durumlarda dosya ismi göz ardı edilir, ki ço˘gu kullanır. Dönen
demetteki ikinci de˘ger biçimin ileri tarihli olup olmadı˘gını gösterir. ˙Ileri 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ı¸sır. Aygıt yöneticisinin i¸s ipli˘gine dikkat ederek i¸s ipli˘gi güvenli
olmalıdır.
book_id: kitap için veri tabanındaki calibre kimli˘gi. book_metadata: aygıttan gelen kitap için Metadata
nesnesi. first_call: Bir e¸szamanlama sırasında bu ilk ça˘grı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¸slı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˘gi olmalıdır
7.etiketler (bir karakter dizisi listesi, bo¸s olabilir).
supports_collections()
Aygıt bu kitap listesi için koleksiyonları destekliyorsa True döndür.
add_book(book, replace_metadata)
Kitabı kitap listesine ekle. Amaç tüm aygıt-dahili metadatayı yönetmektir. Kitaplisteleri e¸szamanlanmalı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¸sturulan koleksiyon sözlü˘gü döndür. Sözlükteki her girdi koleksiyon_ismi:[kitap listesi] biçimindedir
Kitap listesi, serilerden olu¸sturulan koleksiyonlar dı¸sında - bu durumda series_index kullanılır - kitap ba¸slı˘gı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¸slevlerini a¸sa˘gıda belgelendi˘gi gibi temel aldıkları sınıflardan alırlar. Genel basit bir USBMS tabanlı
sürücü s¸una benzer:
=
{}=
{}@default
332
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
=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 325)
Bu sınıf kendini USB Depolama aygıtı olarak aktaran aygıtların tüm sürücüleri için genel mantı˘gı sa˘glar. Tüm
platformlarda geçerli USBMS ba˘glama/çıkarma uygulamalarını sa˘glar.
WINDOWS_MAIN_MEM= None
Windows PnP kimlik karakter dizilerinde aygıtın ana belle˘gini tanımlayan karakter dizisi. Bu None, karakter dizisi, karakter dizisi listesi veya derlenmi¸s 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¸s 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¸s düzenli ifade olabilir
OSX_MAIN_MEM_VOL_PAT= None
Depolama kartlarından ana belle˘gi ayırmak için yeni sürücü algılama tarafından kullanılır. OS X tarafından
atanan ana bellek ba˘glantı konumuyla e¸sle¸sen bir düzenli ifade olmalıdır
MAX_PATH_LEN= 250
Aygıtta olu¸sturulan azami yol uzunlu˘gu
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˘grılır. Örn.: EB600
sanitize_callback(path)
1.12. Calibre gelistirme
¸
ortamı ayarlamak
333
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Ba˘gımsız aygıt sürücülerin create_upload_path() tarafından kullanılan yol düzenlemesini ezmesine izin veren geri ça˘grı.
filename_callback(default, mi)
Sürücülerin create_upload_path() tarafından ayarlanan varsayılan dosya ismini de˘gi¸stirmesine
izin veren geri ça˘grı.
sanitize_path_components(components)
Aygıta yüklenecek dosyalar için yol bile¸senlerinde 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ı˘gı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 334), calibre.devices.usbms.device.Device
(sayfa 333)
Tüm USBMS aygıtlar için temel sınıf. Gönderme/alma/metadata güncelleme/metadata zulalama/vs. için mantı˘gı
uygular
upload_cover(path, filename, metadata, filepath)
Kitap kapa˘gını aygıta yükle. Varsayılan uygulama hiçbir s¸ey yapmaz.
Parametreler
• path – ˙Ili¸skili kitabın bulundu˘gu 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
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¸s 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˘gundaki tüm ö˘geler ve
içerik menüsü bu eklentilerce uygulanır.
Bu sınıfın bu eklentiler için taban sınıf oldu˘gunu unutmayın, ancak, eklentiyi calibre’nin eklenti sistemiyle birle¸stirmek 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.
˙Iki 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.
334
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
˙Ilklendirildikten sonra, bu eklentinin gui üyesi ile ana calibre GUI’sine eri¸simi vardır. Di˘ger eklentilere isimle
eri¸sebilirsiniz, örne˘gin:
=
{}=
{}@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¸smek için, interface_action_base_plugin özniteli˘gini kullanın, bu öznitelik yalnızca eklenti kendisi ilklendirildi˘ginde kullanılabilir olur. do_user_config() gibi eklenti sınıfından metodlar kullanmak istedi˘ginizde faydalıdır.
action_spec tarafından belirtilen QAction self.qaction olarak otomatik olarak olu¸sturulur ve kullanılabilir.
name= ‘Implement me’
Eklenti adı. Aynı isme sahip iki eklenti varsa, yüksek öncelikli olan seçilir.
priority= 1
Eklenti önceli˘gi. Aynı isme sahip iki eklenti varsa, yüksek öncelikli olan seçilir.
popup_type= 1
Bu eklentinin araç çubu˘guna eklenmesi durumu için menü açılır pencere türü
auto_repeat= False
Bu eylemin kısayol tu¸su basılı tutuldu˘gunda otomatik olarak yinelenip yinelenmeyece˘gi.
action_spec= (‘text’, ‘icon’, None, None)
Su
¸ 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¸skili bir klavye
kısayolu kaydedilmez. Bo¸s bir demet yollarsanız, kısayol varsayılan bir tu¸s ba˘gı olmadan kaydedilir.
action_add_menu= False
True ise, bir menü self.qaction’a otomatik olarak olu¸sturulur ve eklenir
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˘gi¸skeni 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˘gil 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¸sme s¸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˘gı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˘gırmayın, bu calibre UI’si tarafından halledilir.
1.12. Calibre gelistirme
¸
ortamı ayarlamak
335
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
drop_event(event, mime_data)
Bu metod bazı kullanı¸slı eylemler gerçekle¸stirmeli ve bu arayüz bırak eylemini yapabilme becerisine
sahipse True döndürmeli. Olayda kabul et/göz ardı et ça˘gırmayın, bu calibre UI’si tarafından halledilir. Bu fonksiyonda engelleyici/uzun i¸slemler 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ı¸slı bir metod. Olu¸sturulan QAction’u döndürür. Bu
eylemin, None olmadı˘gında bu eylemin klavye yöneticisiyle kaydedilmi¸s benzersiz ismini gösteren ek bir
calibre_shortcut_unique_name özniteli˘gi vardır.
Parametreler
• menu – Yeni olu¸sturulan eylemin eklenece˘gi QMenu
• unique_name – Bu eylem için benzersiz bir isim, bu program genelinde benzersiz olmalıdır, yani olabildi˘gince 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˘glayıcısı olmayan bir klavye
kısayolu kaydedilir. Karakter dizisi ve karakter dizisi listeleri belirtilen varsayılan tu¸s atamasını kaydeder.
• description – Bu eylem için tanım. Araç ipuçlarını ayarlamak için kullanılır.
• triggered – Olu¸sturulan eylemin tetiklenen sinyaline ba˘glanmak üzere bir ça˘grılabilir.
• shortcut_name – Bu eylem için klavye kısayolları özelle¸stirilirken kullanıcıya gösterilecek metin. Varsayılan olarak bu ‘‘text‘‘in de˘gerine ayarlanır.
load_resources(names)
Bu eklenti bir ZIP dosyasıyla gelirse (kullanıcı tarafından eklenmi¸s eklenti), bu metod ZIP dosyasından
kaynakları yüklemenizi sa˘glar.
Örne˘gin 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ü¸s de˘geri: {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¸samasında bir kere ça˘grı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˘gi¸sti˘ginde ça˘grılır. Su
¸ an loc için de˘gerler: kitaplık, ana,
kart ve kartb.
336
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Bu metod bu eylemi ve alt eylemlerini konuma uygun olarak açmalı/kapamalı.
library_changed(db)
Mevcut kitaplık de˘gi¸sti˘ginde ça˘grılır.
Parametreler db – Mevcut kitaplı˘ga kar¸sılık gelen LibraryDatabase.
gui_layout_complete()
Ana GUI’nin yerle¸simi tamamlandı˘gında her eylem için bir kere ça˘grılır. Eyleminiz yerle¸simde de˘gi¸siklik
yapmalıysa, bu de˘gi¸siklikler initialization_complete() yerine burada olmalıdır.
initialization_complete()
Ana GUI ilklendirmesi bitti˘ginde her eylem için bir kere ça˘grılır.
shutting_down()
Ana GUI kapanma evresindeyken her eklenti için bir kere ça˘grılır. Kullanılan kaynakları bırakın, ama
kapatmayı uzun süre engellememeye çalı¸sın.
Dönü¸s de˘geri: Kapatmayı durdurmak için False. Kapatmanın neden durduruldu˘gunu kullanıcıya söylemek sizin sorumlulu˘gunuzda.
class calibre.customize.InterfaceActionBase(*args, **kwargs)
Taban: calibre.customize.Plugin (sayfa 316)
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 316)
Tercihler ileti¸sim penceresinde gösterilen bir parçacı˘gı temsil eden eklenti.
Bu eklentinin sadece bir önemli metodu var create_widget(). Eklentinin çe¸sitli alanları UI’de nasıl kategorilendi˘gini 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
1.12. Calibre gelistirme
¸
ortamı ayarlamak
337
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
create_widget(parent=None)
Bu tercih grubunu ayarlamak için kullanılan asıl Qt parçacı˘gını olu¸stur ve döndür. Parçacık :class:‘calibre.gui2.preferences.ConfigWidgetInterface‘yi uygulamalıdır.
Varsayılan uygulama parçacı˘gı ilklendirmek için config_widget kullanır.
class calibre.gui2.preferences.ConfigWidgetInterface
Bu sınıf Tercihler ileti¸sim penceresinde gösterilen tüm parçacıkların uygulaması gereken arayüzü tanımlar. Bu
arayüzü uygulayan ve çe¸sitli kolaylık sa˘glayı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˘gi¸siklik yaptı˘gında yayılmalıdır
supports_restoring_to_defaults= True
restore_to_defaults() metodu uygulanmı¸ssa 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ü˘gmesi için araç ipucu
restart_critical= False
True ise Tercihler ileti¸sim penceresi kullanıcının daha fazla tercih ayarlamasına izin vermez. Yalnızca
commit() True döndürdü˘günde etkilidir.
genesis(gui)
Parçacık görüntülenmeden önce bir kere ça˘grılır, gerekli tüm kurulumu gerçekle¸stirmelidir.
Parametreler gui – Ana calibre grafik kullanıcı arayüzü
initialize()
Tüm yapılandırma de˘gerlerini ba¸slangıç de˘gerlerine ayarlamalıdır (yapılandırma dosyalarında saklı de˘gerler).
restore_defaults()
Tüm yapılandırma de˘gerlerini varsayılan de˘gerlerine ayarlamalıdır.
commit()
De˘gi¸sen ayarları kaydet. De˘gi¸siklikler yeniden ba¸slatma gerektiriyorsa True döndür, aksi halde False. Bir
hata oldu˘gunu belirtmek için bir AbortCommit istisnası yükselt. Hatanın ne oldu˘gu ve nasıl düzeltileceg˘ iyle ilgili kullanıcıya bilgi vermek sizin sorumlulu˘gunuzdadır.
refresh_gui(gui)
Bu parçacık i¸slendikten sonra bir kere ça˘grılır. Gui’nin de˘gi¸stirilen ayarları tekrar okumasına yol açmakla
sorumludur. Varsayılan olarak GUI çe¸sitli ö˘geleri zaten tekrar ilklendirir, yani ço˘gu parçacı˘gı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˘gi¸sikli˘gi, varsayılana geri dönme, gui nesneleri ve ayar nesneleri
arası geçi¸sleri vs. otomatik yönetir.
E˘ger yapılandırma parçacı˘gınız bu sınıftan türemi¸s fakat kaydedilmemi¸s ayarlar içeriyorsa,
ConfigWidgetInterface metodlarını ezmeli ve ezilen metodlar içinden taban sınıfın metodlarını
ça˘gı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
338
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
• name – Ayar adı
• config – Ayarı okuyan/yazan yapılandırma nesnesi
• gui_name – Ayarın de˘gi¸stirilebilmesi 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˘
ger), ...] s¸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 316)
type= u’G\xf6r\xfcnt\xfcleyici’
Bu eklentiler calibre görüntüleyiciye i¸slev eklemek için kullanılır.
load_fonts()
Bu metod görüntüleyici açılı¸sında bir kere ça˘grılır. Kullanılabilir olmasını istedi˘gi tüm yazı tiplerini yüklemelidir. Örne˘gin:
=
{}=
{}@default
=0=1=2=0=1=2
\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}{
load_javascript(evaljs)
Bu metod görüntüleyicide yeni bir HTML belgesi yüklendi˘ginde ça˘grılır. Javascript kitaplıklarını görüntüleyiciye yüklemek için kullanın. Örne˘gin:
=
{}=
{}@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˘ginde ça˘grılır. load_javascript() kullanımı s¸eklinde kullanabilirsiniz.
customize_ui(ui)
Bu metod görüntüleyici olu¸sturuldu˘gunda bir kere ça˘grılır. Görüntüleyicinin kullanıcı arayüzünde yapmak
istedi˘giniz özelle¸stirmeler için kullanın. Örne˘gin, araç çubuklarını ui.tool_bar ve ui.tool_bar2 ile de˘gi¸stirebilirsiniz.
customize_context_menu(menu, event, hit_test_result)
Bu metod içerik menüsü (sa˘g-tık) gösterildi˘ginde ça˘grılır. ˙Içerik menüsünü özelle¸stirmek için kullanabilirsiniz. event içerik menüsü olayıdır ve hit_test_result yüklenmi¸s mevcut belgedeki bu olay için QWebHitTestResult’dur.
1.12. Calibre gelistirme
¸
ortamı ayarlamak
339
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Veri tabanı arayüzü için API Belgelendirmesi
Bu API süreç güvenlidir (çoklu okuma, tekil yazmalı kitleme s¸eması kullanır). API’ye s¸u s¸ekilde eri¸sebilirsiniz:
=
{}=
{}@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˘ger ana calibre GUI’sinin bir parçası olan bir calibre eklentisi içindeyseniz, eri¸simi s¸u s¸ekilde sa˘glayabilirsiniz:
=
{}=
{}@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ı˘gındaki bir metadata.db dosyasının bellekteki zulası. Bu sınıf ayrıca veri tabanına eri¸smek 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ı s¸ekilde okuma yazma yapma yöntemi olarak kullanılır. Tüm tablo
okuma/sıralama/arama/zulalama mantı˘gı tekrar uygulanmı¸stır. Bu i¸slem 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ı˘ga 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˘gin: {’EPUB’: ’/path/to/file.epub’}.
Bir çift liste döndürür: ids, duplicates. ids ver tabanında yeni olu¸sturulan tüm kitapların kitap
id’lerini içerir. duplicates veri tabanında zaten mevcut olan ve has_book() (sayfa 343) 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˘gerlere 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¸sarıyla eklendiyse True döndür.
Parametreler
• replace – True ise varolan biçimi de˘gi¸stir, e˘ger biçim zaten mevcutsa, False döndür.
• run_hooks – True ise, dosya türü eklentiler eklendikten önce ve sonra biçim üzerinde
çalı¸stırılır.
• dbapi – Sadece dahili kullanım için.
all_book_ids(type=<type ‘frozenset’>)
Bilinen tüm kitap id’lerinin dondurulmu¸s 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ı¸sması
all_field_ids(name)
name alanındaki tüm de˘gerler için id’lerin donmu¸s kümesi.
all_field_names(field)
Tüm alan isimlerinin dondurulmu¸s kümesi (sadece çoktan-bire ve çoktan-çoka alanlarda kullanılmalı)
340
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
author_data(author_ids=None)
Yazar verisini isim, sıralama, ba˘glantı anahtarlarından olu¸san sözlük olarak döndür
Belirtilen id’ye sahip yazar bulunamazsa bo¸s bör sözlük döndürülür. author_id None ise, tüm authorların
verisi döndürülür.
author_sort_from_authors(authors)
Verilen bir yazar listesinden hesaplanan karakter dizisi üstündeki yazarla ba˘glantılı yazarı tercih ederek
yazarlar için author_sort karakter dizisini döndür.
books_for_field(name, item_id)
Ö˘ge name alanına ait olmak üzere, item_id ile tanımlı ö˘ge ile ba˘glantılı tüm kitapları döndür.
Döndürülen de˘ger kitap id’leri kümesi, veya ö˘ge veya alan mevcut de˘gilse bo¸s bir kümedir.
copy_cover_to(book_id, dest, use_hardlink=False)
Kapa˘gı dosya benzeri nesne ‘‘dest‘‘e kopyala. Kapak mevcut de˘gilse veya dest mevcut kapakla aynı dosya
ise False döndürür. dest, yalnızca yol mevcut yoldan farklı ise kapa˘gın içine kopyalandı˘gı bir yol olabilir
(büyük küçük harf duyarlılı˘gı da dikkate alınarak).
copy_format_to(book_id, fmt, dest, use_hardlink=False)
fmt biçimini dosya benzeri nesne ‘‘dest‘‘e kopyala. Belirtilen biçim mevcut de˘gilse, NoSuchFormat
hatası yükseltir. dest ayrıca yol mevcut yoldan farklı olmak s¸artıyla biçimin kopyalanaca˘gı bir yol da
olabilir (büyük küçük harf duyarlılı˘gı 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˘gı bytestring olarak döndürür.
UYARI: as_path kullanmak kapa˘gı geçici bir dosyaya kopyalar ve geçici dosyanın yolunu döndürür. ˙I¸siniz
bitti˘ginde 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¸saret eden yol olarak döndür
data_for_find_identical_books()
db’ye eri¸simi olmayan bir i¸sçi süreçte find_identical_books() (sayfa 342) uygulamak için kullanılabilecek veriyi döndür.
data_for_has_book()
has_book() (sayfa 343) içinde kullanmaya müsait veri döndür. Bu i¸slem db’ye eri¸simi olmayan bir i¸sçi
süreçte has_book() (sayfa 343) uygulamak için kullanılabilir.
delete_custom_book_data(name, book_ids=())
˙Isim 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˘gerini döndür. Böyle bir kitap mevcut de˘gilse veya
name alanı için belirtilmi¸s bir de˘ger 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˘gerleri olmasıdır. ‘‘default_value‘‘tüm özel sütunlar için kullanılır.
1.12. Calibre gelistirme
¸
ortamı ayarlamak
341
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
is_multiple alanları için döndürülen de˘gerler hep tuple biçimindedir, hiçbir de˘ger bulunamasa bile (ba¸ska
bir deyi¸sle, default_value göz ardı edilir). ˙Istisna döndürülen de˘gerin her zaman dict biçiminde oldu˘gu
identifier’ler durumundadır. Döndürülen tuple’ler her zaman ba˘glantı sırasındadır, yani olu¸sturulma sırasında.
field_ids_for(name, book_id)
name alanının book_id ile tanımlanan kitaptaki de˘gerleri için id’leri (demet olarak) döndür. Bir de˘ger
yoksa, ya da böyle bir kitap yoksa, veya böyle bir alan yoksa, bo¸s 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¸slıklı (ba¸slıklarda bulanık e¸sle¸sme kullanılır) kitapları bulur.
Ayrıca data_for_find_identical_books() (sayfa 341) 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˘gilse, 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˘gunu not edin, yani biçimi ba¸ska bir dosyaya kopyalamak istiyorsanız performans için bunun yerine copy_format_to() (sayfa 341) 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˘gini not
edin (her seferinde tekrar olu¸sturulan)
format_abspath(book_id, fmt)
format biçimindeki e-kitap için mutlak yolu döndür. API’nin i¸s ipi güvenli˘gini kırdı˘gından bunu hemen
hemen hiç kullanmamalısınız. Bunun yerine copy_format_to() (sayfa 341) kullanın.
Currently used only in calibredb list, the viewer, edit book, compare_format to original format, open with
and the catalogs (via get_data_as_dict()).
Apart from the viewer, open with and edit book, I don’t believe any of the others do any file write I/O with
the results of this call.
format_hash(book_id, fmt)
Belirtilen kitap için belirtilen biçimin özetini döndür. Özet türü arka uca ba˘glı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˘gi¸stirilme zamanını döndürür. ˙Illa kullanmanız gerekmiyorsa yolu kullanmamalısınız, çünkü yola eri¸smek bu API’nin i¸s ipi güvenli˘gini bozar. Bunun
yerine copy_format_to() (sayfa 341) metodunu kullanın.
Parametreler
• allow_cache – True ise zuladaki de˘gerler kullanılır, aksi halde yava¸s bir dosya sistemine
eri¸sim gerçekle¸sir. Zula de˘gerleri bu API dı¸sından dosya sistemine eri¸sildiyse 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˘gunu
da do˘grular.
get_categories(sort=u’name’,
book_ids=None,
icon_map=None,
first_letter_sort=False)
Etiket Tarayıcıyı uygulamak için dahili olarak kullanılır
342
already_fixed=None,
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
get_custom_book_data(name, book_ids=(), default=None)
˙Isim 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
kitap id’si listesi verin. book_id’den de˘gere harita döndürür. Belli bir de˘gerin kodu çözülemezse, varsayılan
de˘gerini kullanır.
get_id_map(field)
Belirtilen alan için id numaralarından de˘gerlere 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)
˙Ismin verisi olan kitap id’lerin kümesini döndür.
get_item_id(field, item_name)
item_name için ö˘ge id’sini döndür (büyük küçük harf duyarsız)
get_item_ids(field, item_names)
item_name için ö˘ge 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 ö˘ge için ö˘ge ismini döndür. Ayrıca bknz get_id_map()
(sayfa 343).
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˘grulanmadı˘gını unutmayın. get_cover True ise, kapak döndürülür, geçici dosyaya yol olarak mi.cover s¸eklinde
veya cover_as_data True ise mi.cover_data s¸eklinde.
get_next_series_num_for(series, field=u’series’, current_indices=False)
Sıradaki seri numara üretecini kontrol eden çe¸sitli tercihleri hesaba katarak belirtilen seriler için sıradaki
seri indisini döndür,.
Parametreler
• field – Seriler benzeri alan (yerle¸sik seriler sütunu varsayılır)
• current_indices – True ise, book_id’den mevcut series_index de˘gerine harita döndürür.
get_proxy_metadata(book_id)
Veri tabanından de˘gerleri yalnızca istek üstüne okuyan bir ProxyMetadata nesnesi döndürmesi dı¸sında
get_metadata() (sayfa 343) gibidir. get_metadata’dan döndürülen metadata nesnesinden az sayıda
alana eri¸silmesi gerekti˘ginde 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˘gerleri için id’den kullanım sayısına
harita döndür.
has_book(mi)
Veritabanı verilen Metadata nesnesiyle aynı ba¸slı˘ga sahip bir girdi içeriyorsa True döndürür. Kar¸sıla¸stırma
büyük küçük harf duyarsızdır. Ayrıca bknz data_for_has_book() (sayfa 341).
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ı¸s kitap id’leri listesi döndür. ids_to_sort None ise, tüm kitap id’leri döndürülür.
1.12. Calibre gelistirme
¸
ortamı ayarlamak
343
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Alanlar (field_name, ascending=True veya False) biçiminde 2’li demet listesi olmalıdır. En önemli alan ilk
ikili demettir.
pref(name, default=None)
Belirtilen özellik için de˘geri ya da tercih belirtilmemi¸sse default olarak belirtilen de˘geri döndür.
read_backup(book_id)
Kitap için OPF metadata yede˘gini 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)
Delete all items in the specified field with the specified ids. Returns the set of affected book ids.
restrict_to_book_ids is an optional set of books ids. If specified the items will only be removed from those books.
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 ö˘geleri yeniden adlandır.
Parametreler
• change_index – Seri benzeri bir alanı yeniden adlandırırken series_index de˘gerlerini de
de˘gi¸stir.
• restrict_to_book_ids – An optional set of book ids for which the rename is to be performed, defaults to all books.
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˘ger varsa, belirtilen biçimi önceden kaydedilmi¸s ORIGINAL_FORMAT ile geri yükle. Ba¸sarılı olma
durumunda True döndür. ORIGINAL_FORMAT ba¸sarılı geri yüklemenin ardından silinir.
safe_read_lock
Güvenli okuma kilidi i¸s parçacı˘gı zaten bir yazma kilidine sahipse hiçbir s¸ey yapmayan, aksi durumda
okuma kilidi edinen kilittir. Arama zulasını bile¸sik sütunlar önünde güncellerken olu¸sabilecek DowngradeLockErrors hatalarını önlemek için bu gereklidir. Arama zulasını güncellemek ayrıcalıklı bir kilit tutar,
ama bile¸sik sütun araması payla¸sılan bir kilit almaya çalı¸san ProxyMetadata kullanarak alan de˘gerlerinin
okunmasını içerir. Bu durumu tetikleyen ba¸ska senaryolar da olabilir.
Bu özellik her eri¸simde yeni bir kilit nesnesi döndürür. Bu kilit nesnesi yinelemeli de˘gildir (performans
için) ve yalnızca with cache.safe_read_lock: gibi bir with ifadesiyle kullanılmalıdır, aksi durumda kötü s¸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¸sle¸sen kitap id’lerini döndür.
344
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
Parametreler
• restriction – Belirtilen sorguya AND yapılan bir kısıtlama. Kısıtlamaların zulalandı˘gını,
yani bir a AND b aramasının bir kıstılı b’li a aramasından yava¸s olaca˘gını unutmayın.
• virtual_fields – Dahili kullanım (aranacak on_device gibi sanal alanlar).
• book_ids – None de˘gilse, tüm kitaplar yerine verilen kitapların aranaca˘gı bir kitap id kümesi.
set_conversion_options(options, fmt=u’PIPE’)
seçenekler {book_id:conversion_options} haritası s¸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˘gerlerini ayarla. De˘gi¸siklikten etkilenen tüm kitap id’lerinin kümesini döndürür.
Parametreler
• book_id_to_val_map – book_id’lerin uygulanacak de˘gerlere haritası.
• allow_case_change – True ise, çoktan-bire ve çoktan-çoka alanların büyük küçük harfleri
de˘gi¸stirilir. Örne˘gin bir kitabın tag1 etiketi varsa, ve ba¸ska 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˘gi¸stirmemelisiniz.
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¸s de˘gerler içerse de set_metadata’nın alanları güncellemesine yol açar. Bu
durumda ‘None’ ‘bo¸s’dan ayrılmı¸s olur. mi.XXX None ise, XXX yer de˘gi¸stirilmez, aksi durumda de˘gi¸stirilir. Etiketler, tanımlayıcılar, ve kapak öznitelikleri özel durumlardır. Etiketler ve tanımlayıcılar None
olamayaca˘gından force_changes true ise her zaman yer de˘gi¸stirilirler. Mi’nin kitapta olmasını istedi˘giniz
de˘gerleri içerdi˘ginden emin olmalısınız. Kapaklar yeni bir kapak sa˘glanmı¸ssa hep de˘gi¸stirilir, ama asla
silinmezler. force_changes’in ba¸slık veya yazar ayarlarında etkisi olmadı˘gını da unutmayın.
set_pref(name, val)
Belirtilen de˘gere belirtilen seçene˘gi ayarla. Ayrıca bknz pref() (sayfa 344).
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¸sıla¸stı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˘gilse e¸sle¸sme listesi bu etikete sahip kitaplarla kısıtlanır
• must_have_authors – Yazarlar listesi. None de˘gilse, e¸sle¸sme 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˘gu durumlarda performans artırmak amaçlı kullanılabilir ve tercihe ba˘glıdır.
book_id’lerinin ilgili ProxyMetadata nesnesine haritası olmalıdırlar.
1.12. Calibre gelistirme
¸
ortamı ayarlamak
345
calibre Kullanıcı Kılavuzu, Sürüm 2.24.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¸siminden olu¸san
calibre.ebooks.oeb.polish.container.Container (sayfa 346) nesnesinden ve kap içinde çe¸sitli i¸slemler yapmakta kullanılan araçlardan olu¸surlar. Tüm araçlar çe¸sitli calibre.ebooks.oeb.polish.* modüllerinin modül seviye fonksiyonları formundadır. Bir kitap için sahip oldu˘gunuz bir kap nesnesinin 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˘giniz kitap için s¸öyle bir kap 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}
Kap nesnesi
class calibre.ebooks.oeb.polish.container.Container(rootpath,
opfpath,
log,
clone_data=None)
Kap kavramı bir çok dosya ve bir opf dosyasını içeren dizin olarak bir Açık E-kitabı temsil eder. ˙Iki ö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.
•˙Isimler: Bunlar kitap dosyalarının kök dizinine göre ba˘gıl yollarıdır. Her zaman POSIX ayraçlarını kullanırlar ve tırnak i¸sareti içermezler. Kitap içindeki dosyaların belirteçleri olarak dü¸sünülebilirler. Kap içindeki metotların ço˘gu isimlerle çalı¸sır. ˙Isimler her zaman NFC normal biçiminde bulunurlar.
•Clones: the container object supports efficient on-disk cloning, which is used to implement checkpoints
in the ebook editor. In order to make this work, you should never access files on the filesystem directly.
Instead, use raw_data() (sayfa 348) or open() (sayfa 348) to read/write to component files in the
book.
When converting between hrefs and names use the methods provided by this class, they assume all hrefs are
quoted.
abspath_to_name(fullpath, root=None)
Convert an absolute path to a canonical name relative to root
Parametreler root – The base directory. By default the root for this container object is used.
add_file(name, data, media_type=None, spine_index=None)
Add a file to this container. Entries for the file are automatically created in the OPF manifest and spine (if
the file is a text document)
add_name_to_manifest(name)
Add an entry to the manifest for a file with the specified name. Returns the manifest id.
book_type= u’oeb’
The type of book (epub for EPUB files and azw3 for AZW3 files)
346
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
commit(outpath=None, keep_parsed=False)
Commit all dirtied parsed objects to the filesystem and write out the ebook file at outpath. :param output: The path to write the saved ebook file to. If None, the path of the original book file is used. :param
keep_parsed: If True the parsed representations of committed items are kept in the cache.
commit_item(name, keep_parsed=False)
Commit a parsed object to disk (it is serialized and written to the underlying file). If keep_parsed is
True the parsed representation is retained in the cache. See also: parsed() (sayfa 348)
decode(data, normalize_to_nfc=True)
Automatically decode data into a unicode object.
Parametreler normalize_to_nfc – Normalize returned unicode to the NFC normal form as is
required by both the EPUB and AZW3 formats.
dirty(name)
Mark the parsed object corresponding to name as dirty. See also: parsed() (sayfa 348).
exists(name)
True iff a file corresponding to the canonical name exists. Note that this function suffers from the limitations of the underlying OS filesystem, in particular case (in)sensitivity. So on a case insensitive filesystem
this will return True even if the case of name is different from the case of the underlying filesystem file.
See also has_name() (sayfa 347)
filesize(name)
Return the size in bytes of the file represented by the specified canonical name. Automatically handles
dirtied parsed objects. See also: parsed() (sayfa 348)
generate_item(name, id_prefix=None, media_type=None, unique_href=True)
Add an item to the manifest with href derived from the given name. Ensures uniqueness of href and id
automatically. Returns generated item.
guess_type(name)
Return the expected mimetype for the specified file name based on its extension.
guide_type_map
Mapping of guide type to canonical name
has_name(name)
Return True iff a file with the same canonical name as that specified exists. Unlike exists() (sayfa 347)
this method is always case-sensitive.
href_to_name(href, base=None)
Convert an href (relative to base) to a name. base must be a name or None, in which case self.root is used.
insert_into_xml(parent, item, index=None)
Insert item into parent (or append if index is None), fixing indentation. Only works with self closing items.
iterlinks(name, get_line_numbers=True)
Iterate over all links in name. If get_line_numbers is True the yields results of the form (link, line_number,
offset). Where line_number is the line_number at which the link occurs and offset is the number of characters from the start of the line. Note that offset could actually encompass several lines if not zero.
manifest_has_name(name)
Return True if the manifest has an entry corresponding to name
manifest_id_map
Mapping of manifest id to canonical names
manifest_type_map
Mapping of manifest media-type to list of canonical names of that media-type
1.12. Calibre gelistirme
¸
ortamı ayarlamak
347
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
mi
The metadata of this book as a Metadata object. Note that this object is constructed on the fly every time
this property is requested, so use it sparingly.
name_to_abspath(name)
Convert a canonical name to an absolute OS dependant path
name_to_href(name, base=None)
Convert a name to a href relative to base, which must be a name or None in which case self.root is used as
the base
names_that_must_not_be_changed
Set of names that must never be renamed. Depends on the ebook file format.
names_that_must_not_be_removed
Set of names that must never be deleted from the container. Depends on the ebook file format.
names_that_need_not_be_manifested
Set of names that are allowed to be missing from the manifest. Depends on the ebook file format.
open(name, mode=u’rb’)
Open the file pointed to by name for direct read/write. Note that this will commit the file if it is dirtied
and remove it from the parse cache. You must finish with this file before accessing the parsed version of it
again, or bad things will happen.
opf
The parsed OPF file
opf_get_or_create(name)
Convenience method to either return the first XML element with the specified name or create it under the
opf:package element and then return it, if it does not already exist.
opf_version
The version set on the OPF’s <package> element
opf_xpath(expr)
Convenience method to evaluate an XPath expression on the OPF file, has the opf: and dc: namespace
prefixes pre-defined.
parsed(name)
Return a parsed representation of the file specified by name. For HTML and XML files an lxml tree is returned. For CSS files a cssutils stylesheet is returned. Note that parsed objects are cached for performance.
If you make any changes to the parsed object, you must call dirty() (sayfa 347) so that the container
knows to update the cache. See also replace() (sayfa 349).
raw_data(name, decode=True, normalize_to_nfc=True)
Return the raw data corresponding to the file specified by name
Parametreler
• decode – If True and the file has a text based mimetype, decode it and return a unicode
object instead of raw bytes.
• normalize_to_nfc – If True the returned unicode object is normalized to the NFC normal
form as is required for the EPUB and AZW3 file formats.
relpath(path, base=None)
Convert an absolute path (with os separators) to a path relative to base (defaults to self.root). The relative
path is not a name. Use abspath_to_name() (sayfa 346) for that.
remove_from_spine(spine_items, remove_if_no_longer_in_spine=True)
Remove
the
specified
items
(by
canonical
name)
348
from
the
spine.
If
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
remove_if_no_longer_in_spine is True, the items are also deleted from the book, not just
from the spine.
remove_from_xml(item)
Removes item from parent, fixing indentation (works only with self closing items)
remove_item(name, remove_from_guide=True)
Remove the item identified by name from this container. This removes all references to the item in the
OPF manifest, guide and spine as well as from any internal caches.
rename(current_name, new_name)
Renames a file from current_name to new_name. It automatically rebases all links inside the file if the
directory the file is in changes. Note however, that links are not updated in the other files that could
reference this file. This is for performance, such updates should be done once, in bulk.
replace(name, obj)
Replace the parsed object corresponding to name with obj, which must be a similar object, i.e. an lxml tree
for HTML/XML or a cssutils stylesheet for a CSS file.
replace_links(name, replace_func)
Replace all links in name using replace_func, which must be a callable that accepts a URL and returns the
replaced URL. It must also have a ‘replaced’ attribute that is set to True if any actual replacement is done.
Convenient ways of creating such callables are using the LinkReplacer and LinkRebaser classes.
serialize_item(name)
Convert a parsed object (identified by canonical name) into a bytestring. See parsed() (sayfa 348).
set_spine(spine_items)
Set the spine to be spine_items where spine_items is an iterable of the form (name, linear). Will raise an
error if one of the names is not present in the manifest.
spine_items
An iterator yielding canonical name for every item in the books’ spine. See also: spine_iter (sayfa 349)
and spine_items (sayfa 349).
spine_iter
An iterator that yields item, name is_linear for every item in the books’ spine. item is the lxml element,
name is the canonical file name and is_linear is True if the item is linear. See also: spine_names
(sayfa 349) and spine_items (sayfa 349).
spine_names
An iterator yielding name and is_linear for every item in the books’ spine. See also: spine_iter
(sayfa 349) and spine_items (sayfa 349).
Managing component files in a container
calibre.ebooks.oeb.polish.replace.replace_links(container,
link_map,
frag_map=<function
<lambda>
at
0x7f74b6848578>,
replace_in_opf=False)
Replace links to files in the container. Will iterate over all files in the container and change the specified links in
them.
Parametreler
• link_map – A mapping of old canonical name to new canonical name. For example:
{’images/old.png’: ’images/new.png’}
1.12. Calibre gelistirme
¸
ortamı ayarlamak
349
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
• frag_map – A callable that takes two arguments (name, anchor) and returns a new
anchor. This is useful if you need to change the anchors in HTML files. By default, it does
nothing.
• replace_in_opf – If False, links are not replaced in the OPF file.
calibre.ebooks.oeb.polish.replace.rename_files(container, file_map)
Rename files in the container, automatically updating all links to them.
Parametreler file_map – A mapping of old canonical name to new canonical name, for example:
{’text/chapter1.html’: ’chapter1.html’}.
calibre.ebooks.oeb.polish.replace.get_recommended_folders(container, names)
Return the folders that are recommended for the given filenames. The recommendation is based on where the
majority of files of the same type are located in the container. If no files of a particular type are present, the
recommended folder is assumed to be the folder containing the OPF file.
Pretty printing and auto fixing parse errors
calibre.ebooks.oeb.polish.pretty.fix_html(container, raw)
Fix any parsing errors in the HTML represented as a string in raw. Fixing is done using the HTML5 parsing
algorithm.
calibre.ebooks.oeb.polish.pretty.fix_all_html(container)
Fix any parsing errors in all HTML files in the container. Fixing is done using the HTML5 parsing algorithm.
calibre.ebooks.oeb.polish.pretty.pretty_html(container, name, raw)
Pretty print the HTML represented as a string in raw
calibre.ebooks.oeb.polish.pretty.pretty_css(container, name, raw)
Pretty print the CSS represented as a string in raw
calibre.ebooks.oeb.polish.pretty.pretty_xml(container, name, raw)
Pretty print the XML represented as a string in raw. If name is the name of the OPF, extra OPF-specific prettying
is performed.
calibre.ebooks.oeb.polish.pretty.pretty_all(container)
Pretty print all HTML/CSS/XML files in the container
Managing book jackets
calibre.ebooks.oeb.polish.jacket.remove_jacket(container)
Remove an existing jacket, if any. Returns False if no existing jacket was found.
calibre.ebooks.oeb.polish.jacket.add_or_replace_jacket(container)
Either create a new jacket from the book’s metadata or replace an existing jacket. Returns True if an existing
jacket was replaced.
Splitting and merging of files
calibre.ebooks.oeb.polish.split.split(container, name, loc_or_xpath, before=True, totals=None)
Split the file specified by name at the position specified by loc_or_xpath. Splitting automatically migrates all
links and references to the affected files.
Parametreler
350
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
• loc_or_xpath – Should be an XPath expression such as //h:div[@id=”split_here”]. Can also
be a loc which is used internally to implement splitting in the preview panel.
• before – If True the split occurs before the identified element otherwise after it.
• totals – Used internally
calibre.ebooks.oeb.polish.split.multisplit(container, name, xpath, before=True)
Split the specified file at multiple locations (all tags that match the specified XPath expression. See also:
split() (sayfa 350). Splitting automatically migrates all links and references to the affected files.
Parametreler before – If True the splits occur before the identified element otherwise after it.
calibre.ebooks.oeb.polish.split.merge(container, category, names, master)
Merge the specified files into a single file, automatically migrating all links and references to the affected files.
The file must all either be HTML or CSS files.
Parametreler
• category – Must be either ’text’ for HTML files or ’styles’ for CSS files
• names – The list of files to be merged
• master – Which of the merged files is the master file, that is, the file that will remain after
merging.
Managing covers
calibre.ebooks.oeb.polish.cover.set_cover(container, cover_path,
ons=None)
Set the cover of the book to the image pointed to by cover_path.
report=None,
opti-
Parametreler
• cover_path – Either the absolute path to an image file or the canonical name of an image in
the book. When using an image in the book, you must also set options, see below.
• report – An optional callable that takes a single argument. It will be called with information
about the tasks being processed.
• options – None or a dictionary that controls how the cover is set. The dictionary can have
entries: keep_aspect: True or False (Preserve aspect ratio of covers in EPUB) no_svg:
True or False (Use an SVG cover wrapper in the EPUB titlepage) existing: True or False
(cover_path refers to an existing image in the book)
calibre.ebooks.oeb.polish.cover.mark_as_cover(container, name)
Mark the specified image as the cover image.
calibre.ebooks.oeb.polish.cover.mark_as_titlepage(container,
move_to_start=True)
Mark the specified HTML file as the titlepage of the EPUB.
name,
Parametreler move_to_start – If True the HTML file is moved to the start of the spine
Working with CSS
calibre.ebooks.oeb.polish.fonts.change_font(container, old_name, new_name=None)
Change a font family from old_name to new_name. Changes all occurrences of the font family in stylesheets,
style tags and style attributes. If the old_name refers to an embedded font, it is removed. You can set new_name
to None to remove the font family instead of changing it.
1.12. Calibre gelistirme
¸
ortamı ayarlamak
351
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
calibre.ebooks.oeb.polish.css.remove_unused_css(container,
report=None,
remove_unused_classes=False)
Remove all unused CSS rules from the book. An unused CSS rule is one that does not match any actual content.
Parametreler
• report – An optional callable that takes a single argument. It is called with information
about the operations being performed.
• remove_unused_classes – If True, class attributes in the HTML that do not match any CSS
rules are also removed.
calibre.ebooks.oeb.polish.css.filter_css(container, properties, names=())
Remove the specified CSS properties from all CSS rules in the book.
Parametreler
• properties – Set of properties to remove. For example: {’font-family’, ’color’}.
• names – The files from which to remove the properties. Defaults to all HTML and CSS files
in the book.
Working with the Table of Contents
calibre.ebooks.oeb.polish.toc.from_xpaths(container, xpaths)
Generate a Table of Contents from a list of XPath expressions. Each expression in the list corresponds to a level
of the generate ToC. For example: [’//h:h1’, ’//h:h2’, ’//h:h3’] will generate a three level table
of contents from the <h1>, <h2> and <h3> tags.
calibre.ebooks.oeb.polish.toc.from_links(container)
Generate a Table of Contents from links in the book.
calibre.ebooks.oeb.polish.toc.from_files(container)
Generate a Table of Contents from files in the book.
calibre.ebooks.oeb.polish.toc.create_inline_toc(container, title=None)
Create an inline (HTML) Table of Contents from an existing NCX table of contents.
Parametreler title – The title for this table of contents.
Kitap Araçlarını Düzenle
class calibre.gui2.tweak_book.plugin.Tool
Taban: object The base class for individual tools in an Edit Book plugin. Useful members include:
•self.plugin: A reference to the calibre.customize.Plugin (sayfa 316) object to which this
tool belongs.
•self. boss (sayfa 353)
•self. gui (sayfa 353)
Methods that must be overridden in sub classes:
•create_action() (sayfa 353)
•register_shortcut() (sayfa 353)
name= None
Set this to a unique name it will be used as a key
352
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
allowed_in_toolbar= True
If True the user can choose to place this tool in the plugins toolbar
allowed_in_menu= True
If True the user can choose to place this tool in the plugins menu
toolbar_button_popup_mode= u’delayed’
The popup mode for the menu (if any) of the toolbar button. Possible values are ‘delayed’, ‘instant’,
‘button’
boss
The calibre.gui2.tweak_book.boss.Boss (sayfa 354) object. Used to control the user interface.
gui
The main window of the user interface
current_container
Return the current calibre.ebooks.oeb.polish.container.Container (sayfa 346) object
that represents the book being edited.
register_shortcut(qaction, unique_name, default_keys=(), short_text=None, description=None,
**extra_data)
Register a keyboard shortcut that will trigger the specified qaction. This keyboard shortcut will become
automatically customizable by the user in the Keyboard section of the editor preferences.
Parametreler
• qaction – A QAction object, it will be triggered when the configured key combination is
pressed by the user.
• unique_name – A unique name for this shortcut/action. It will be used internally, it must
not be shared by any other actions in this plugin.
• default_keys – A list of the default keyboard shortcuts. If not specified no default
shortcuts will be set. If the shortcuts specified here conflict with either builtin shortcuts or shortcuts from user configuration/other plugins, they will be ignored. In that
case, users will have to configure the shortcuts manually via Preferences. For example:
default_keys=(’Ctrl+J’, ’F9’).
• short_text – An optional short description of this action. If not specified the text from the
QAction will be used.
• description – An optional longer description of this action, it will be used in the preferences entry for this shortcut.
create_action(for_toolbar=True)
Create a QAction that will be added to either the plugins toolbar or the plugins menu depending on
for_toolbar. For example:
=
{}=
{}@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
1.12. Calibre gelistirme
¸
ortamı ayarlamak
353
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
\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.:
Method register_shortcut() (sayfa 353).
Controlling the editor’s user interface
The ebook editor’s user interface is controlled by a single global Boss object. This has many useful methods that can
be used in plugin code to perform common tasks.
class calibre.gui2.tweak_book.boss.Boss(parent, notify=None)
add_savepoint(msg)
Create a restore checkpoint with the name specified as msg
apply_container_update_to_gui(mark_as_modified=True)
Update all the components of the user interface to reflect the latest data in the current book container.
Parametreler mark_as_modified – If True, the book will be marked as modified, so the user
will be prompted to save it when quitting.
close_editor(name)
Close the editor that is editing the file specified by name
commit_all_editors_to_container()
Commit any changes that the user has made to files open in editors to the container. You should call this
method before performing any actions on the current container
currently_editing
Return the name of the file being edited currently or None if no file is being edited
edit_file(name, syntax=None, use_template=None)
Open the file specified by name in an editor
Parametreler
• syntax – The media type of the file, for example, ’text/html’. If not specified it is
guessed from the file extension.
• use_template – A template to initialize the opened editor with
open_book(path=None, edit_file=None, clear_notify_data=True)
Open the ebook at path for editing. Will show an error if the ebook is not in a supported format or the
current book has unsaved changes.
Parametreler edit_file – The name of a file inside the newly opened book to start editing. Can
also be a list of names.
rewind_savepoint()
Undo the previous creation of a restore checkpoint, useful if you create a checkpoint, then abort the operation with no changes
save_book()
Save the book. Saving is performed in the background
354
Bölüm 1. Bölümler
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
set_modified()
Mark the book as having been modified
show_current_diff(allow_revert=True, to_container=None)
Show the changes to the book from its last checkpointed state
Parametreler
• allow_revert – If True the diff dialog will have a button to allow the user to revert all
changes
• to_container – A container object to compare the current container to. If None, the previously checkpointed container is used
show_editor(name)
Show the editor that is editing the file specified by name
sync_preview_to_editor()
Sync the position of the preview panel to the current cursor position in the current editor
1.13 Açıklayıcı sözlük
RSS RSS (Gerçekten Basit Da˘gı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¸stirilen bir biçim oldu˘gundan bir e-kitaba web içeri˘gi getirmek için tercih edilen bir yöntemdir. ˙Internette kullanılan bir çok ba¸ska
biçim mevcuttur ve calibre ço˘gu ile anla¸sabilir. Ö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˘gın nasıl bir e-kitaba dönü¸stürülece˘gini calibre’ye ö˘greten
yönergeler bütünüdür. Tarifler aslında Python129 kodlarıdır. Bu sayede karma¸sık haber kaynaklarını e-kitaplara
dönü¸stürebilirler. En basit düzeyde, adresler gibi calibre’nin ˙Internetten bilgi alıp indirebilece˘gi bir de˘gi¸skenler
kümesidir.
˙saretleme Dili), elektronik yayıncılık için Standart Geni¸sletilmi¸s ˙I¸saretleme Dili’nin
HTML HTML (Hyper Metin I¸
(SGML) WWW için kullanılan bir alt kümesidir.
CSS CSS (Geçi¸sli Stil Sayfaları) bir HTML belgesinin nasıl i¸slenece˘gini (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˘glayan bir kitaplık kaynak kod arayüzüdür.
LRF LRF SONY e-kitap okuyucuların okudu˘gu e-kitap biçimidir.
Adres URL (Birörnek Kaynak Konumlayıcı) örne˘gin: 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özdizimi130
ifadesine bakın.
129 https://www.python.org
130 https://docs.python.org/2.7/library/re.html
1.13. Açıklayıcı sözlük
355
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
356
Bölüm 1. Bölümler
Python Modül Dizini
c
calibre.customize, 316
calibre.customize.conversion, 323
calibre.db.cache, 340
calibre.devices.interface, 325
calibre.ebooks.metadata.book.base, 193
calibre.ebooks.metadata.sources.base,
320
calibre.ebooks.oeb.polish.container, 346
calibre.ebooks.oeb.polish.cover, 351
calibre.ebooks.oeb.polish.css, 351
calibre.ebooks.oeb.polish.jacket, 350
calibre.ebooks.oeb.polish.pretty, 350
calibre.ebooks.oeb.polish.replace, 349
calibre.ebooks.oeb.polish.split, 350
calibre.ebooks.oeb.polish.toc, 352
calibre.gui2.tweak_book.boss, 354
calibre.gui2.tweak_book.plugin.Tool, 352
calibre.utils.formatter_functions, 184
calibre.web.feeds.news, 306
357
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
358
Python Modül Dizini
Dizin
Symbols
–categories, -r
calibredb-list_categories komut satırı seçene˘gi, 280
–add-plugin, -a
–category
calibre-customize komut satırı seçene˘gi, 266
ebook-meta komut satırı seçene˘gi, 291
–add-simple-plugin
–change-justification
calibre-debug komut satırı seçene˘gi, 267
ebook-convert komut satırı seçene˘gi, 284
–all
–chapter
calibredb-backup_metadata komut satırı seçene˘gi,
ebook-convert komut satırı seçene˘gi, 287
281
–chapter-mark
calibredb-export komut satırı seçene˘gi, 275
ebook-convert komut satırı seçene˘gi, 287
–append, -a
–command, -c
calibredb-set_custom komut satırı seçene˘gi, 279
calibre-debug komut satırı seçene˘gi, 267
–as-opf
calibredb-show_metadata komut satırı seçene˘gi, 274 –comments
ebook-convert komut satırı seçene˘gi, 289
–ascending
–comments, -c
calibredb-list komut satırı seçene˘gi, 271
ebook-meta komut satırı seçene˘gi, 291
–asciiize
–cover
ebook-convert komut satırı seçene˘gi, 284
ebook-convert komut satırı seçene˘gi, 289
–attachment, -a
ebook-meta komut satırı seçene˘gi, 291
calibre-smtp komut satırı seçene˘gi, 270
–cover, -c
–author-sort
calibredb-add komut satırı seçene˘gi, 272
ebook-convert komut satırı seçene˘gi, 289
ebook-polish komut satırı seçene˘gi, 292
ebook-meta komut satırı seçene˘gi, 291
fetch-ebook-metadata komut satırı seçene˘gi, 294
–authors
–csv,
-c
ebook-convert komut satırı seçene˘gi, 289
calibredb-check_library
komut satırı seçene˘gi, 279
–authors, -a
calibredb-list_categories
komut satırı seçene˘gi, 280
calibredb-add komut satırı seçene˘gi, 272
–customize-plugin
ebook-meta komut satırı seçene˘gi, 291
calibre-customize komut satırı seçene˘gi, 266
fetch-ebook-metadata komut satırı seçene˘gi, 294
–daemonize
–auto-reload
calibre-server komut satırı seçene˘gi, 268
calibre-server komut satırı seçene˘gi, 268
–date,
-d
–base-dir, -d
ebook-meta
komut satırı seçene˘gi, 291
web2disk komut satırı seçene˘gi, 296
–debug-device-driver,
-d
–base-font-size
calibre-debug
komut
satırı seçene˘gi, 267
ebook-convert komut satırı seçene˘gi, 284
–debug-javascript
–book-producer
ebook-viewer komut satırı seçene˘gi, 293
ebook-convert komut satırı seçene˘gi, 289
–debug-pipeline,
-d
–book-producer, -k
ebook-convert
komut satırı seçene˘gi, 289
ebook-meta komut satırı seçene˘gi, 291
–default-programs
–build-plugin, -b
calibre-debug komut satırı seçene˘gi, 267
calibre-customize komut satırı seçene˘gi, 266
–delay
359
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
web2disk komut satırı seçene˘gi, 296
–detach
calibre komut satırı seçene˘gi, 265
ebook-edit komut satırı seçene˘gi, 290
ebook-viewer komut satırı seçene˘gi, 293
–details, -d
calibredb-custom_columns komut satırı seçene˘gi,
278
–develop
calibre-server komut satırı seçene˘gi, 268
–diff
calibre-debug komut satırı seçene˘gi, 267
–disable-dehyphenate
ebook-convert komut satırı seçene˘gi, 286
–disable-delete-blank-paragraphs
ebook-convert komut satırı seçene˘gi, 286
–disable-fix-indents
ebook-convert komut satırı seçene˘gi, 286
–disable-font-rescaling
ebook-convert komut satırı seçene˘gi, 284
–disable-format-scene-breaks
ebook-convert komut satırı seçene˘gi, 286
–disable-hyphenation
lrfviewer komut satırı seçene˘gi, 295
–disable-italicize-common-cases
ebook-convert komut satırı seçene˘gi, 286
–disable-markup-chapter-headings
ebook-convert komut satırı seçene˘gi, 286
–disable-plugin
calibre-customize komut satırı seçene˘gi, 266
–disable-remove-fake-margins
ebook-convert komut satırı seçene˘gi, 287
–disable-renumber-headings
ebook-convert komut satırı seçene˘gi, 286
–disable-unwrap-lines
ebook-convert komut satırı seçene˘gi, 286
–display
calibredb-add_custom_column komut satırı seçene˘gi, 277
–dont-asciiize
calibredb-export komut satırı seçene˘gi, 275
–dont-download-stylesheets
web2disk komut satırı seçene˘gi, 296
–dont-notify-gui
komut satırı seçene˘gi, 271
–dont-output-resources
lrf2lrs komut satırı seçene˘gi, 295
–dont-replace
calibredb-add_format komut satırı seçene˘gi, 273
–dont-save-cover
calibredb-export komut satırı seçene˘gi, 275
–dont-split-on-page-breaks
ebook-convert komut satırı seçene˘gi, 283
–dont-update-metadata
360
calibredb-export komut satırı seçene˘gi, 275
–dont-write-opf
calibredb-export komut satırı seçene˘gi, 275
–duplicate-links-in-toc
ebook-convert komut satırı seçene˘gi, 288
–duplicates, -d
calibredb-add komut satırı seçene˘gi, 272
–edit-book, -t
calibre-debug komut satırı seçene˘gi, 267
–embed-all-fonts
ebook-convert komut satırı seçene˘gi, 284
–embed-font-family
ebook-convert komut satırı seçene˘gi, 284
–embed-fonts, -e
ebook-polish komut satırı seçene˘gi, 292
–empty, -e
calibredb-add komut satırı seçene˘gi, 272
–enable-heuristics
ebook-convert komut satırı seçene˘gi, 286
–enable-plugin
calibre-customize komut satırı seçene˘gi, 266
–encoding
web2disk komut satırı seçene˘gi, 296
–encryption-method, -e
calibre-smtp komut satırı seçene˘gi, 270
–epub-flatten
ebook-convert komut satırı seçene˘gi, 283
–epub-inline-toc
ebook-convert komut satırı seçene˘gi, 283
–epub-toc-at-end
ebook-convert komut satırı seçene˘gi, 283
–exec-file, -e
calibre-debug komut satırı seçene˘gi, 267
–expand-css
ebook-convert komut satırı seçene˘gi, 284
–explode-book, -x
calibre-debug komut satırı seçene˘gi, 267
–extra-css
ebook-convert komut satırı seçene˘gi, 284
–extract-to
ebook-convert komut satırı seçene˘gi, 283
–field, -f
calibredb-set_metadata komut satırı seçene˘gi, 275
–fields
calibredb-catalog komut satırı seçene˘gi, 276
–fields, -f
calibredb-list komut satırı seçene˘gi, 271
–filter-css
ebook-convert komut satırı seçene˘gi, 285
–filter-regexp
web2disk komut satırı seçene˘gi, 296
–flow-size
ebook-convert komut satırı seçene˘gi, 283
–font-size-mapping
Dizin
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
ebook-convert komut satırı seçene˘gi, 285
–for-machine
calibredb-list komut satırı seçene˘gi, 271
–force, -f
calibredb-remove_custom_column komut satırı seçene˘gi, 278
–fork, -f
calibre-smtp komut satırı seçene˘gi, 270
–formats
calibredb-export komut satırı seçene˘gi, 275
–from-opf
ebook-meta komut satırı seçene˘gi, 291
–full-screen, -f
ebook-viewer komut satırı seçene˘gi, 293
–get-cover
ebook-meta komut satırı seçene˘gi, 291
–gui, -g
calibre-debug komut satırı seçene˘gi, 267
–gui-debug
calibre-debug komut satırı seçene˘gi, 267
–help, -h
calibre komut satırı seçene˘gi, 265
calibre-customize komut satırı seçene˘gi, 266
calibre-debug komut satırı seçene˘gi, 267
calibre-server komut satırı seçene˘gi, 268
calibre-smtp komut satırı seçene˘gi, 270
calibredb-add komut satırı seçene˘gi, 272
calibredb-add_custom_column komut satırı seçene˘gi, 277
calibredb-add_format komut satırı seçene˘gi, 274
calibredb-backup_metadata komut satırı seçene˘gi,
281
calibredb-catalog komut satırı seçene˘gi, 276
calibredb-check_library komut satırı seçene˘gi, 279
calibredb-clone komut satırı seçene˘gi, 281
calibredb-custom_columns komut satırı seçene˘gi,
278
calibredb-embed_metadata komut satırı seçene˘gi,
281
calibredb-export komut satırı seçene˘gi, 275
calibredb-list komut satırı seçene˘gi, 272
calibredb-list_categories komut satırı seçene˘gi, 280
calibredb-remove komut satırı seçene˘gi, 273
calibredb-remove_custom_column komut satırı seçene˘gi, 278
calibredb-remove_format komut satırı seçene˘gi, 274
calibredb-restore_database komut satırı seçene˘gi,
279
calibredb-saved_searches komut satırı seçene˘gi, 277
calibredb-set_custom komut satırı seçene˘gi, 279
calibredb-set_metadata komut satırı seçene˘gi, 275
calibredb-show_metadata komut satırı seçene˘gi, 274
ebook-convert komut satırı seçene˘gi, 282
ebook-edit komut satırı seçene˘gi, 290
Dizin
ebook-meta komut satırı seçene˘gi, 291
ebook-polish komut satırı seçene˘gi, 292
ebook-viewer komut satırı seçene˘gi, 293
fetch-ebook-metadata komut satırı seçene˘gi, 294
lrf2lrs komut satırı seçene˘gi, 295
lrfviewer komut satırı seçene˘gi, 295
lrs2lrf komut satırı seçene˘gi, 296
web2disk komut satırı seçene˘gi, 296
–html-unwrap-factor
ebook-convert komut satırı seçene˘gi, 286
–identifier
ebook-meta komut satırı seçene˘gi, 291
–ids, -i
calibredb-catalog komut satırı seçene˘gi, 276
–ignore-plugins
calibre komut satırı seçene˘gi, 265
–ignore_extensions, -e
calibredb-check_library komut satırı seçene˘gi, 279
–ignore_names, -n
calibredb-check_library komut satırı seçene˘gi, 279
–index, -i
ebook-meta komut satırı seçene˘gi, 291
–input-encoding
ebook-convert komut satırı seçene˘gi, 283
–input-profile
ebook-convert komut satırı seçene˘gi, 282
–insert-blank-line
ebook-convert komut satırı seçene˘gi, 285
–insert-blank-line-size
ebook-convert komut satırı seçene˘gi, 285
–insert-metadata
ebook-convert komut satırı seçene˘gi, 287
–inspect-mobi, -m
calibre-debug komut satırı seçene˘gi, 267
–is-multiple
calibredb-add_custom_column komut satırı seçene˘gi, 277
–isbn
ebook-convert komut satırı seçene˘gi, 289
ebook-meta komut satırı seçene˘gi, 291
–isbn, -i
calibredb-add komut satırı seçene˘gi, 272
fetch-ebook-metadata komut satırı seçene˘gi, 294
–item_count, -i
calibredb-list_categories komut satırı seçene˘gi, 280
–jacket, -j
ebook-polish komut satırı seçene˘gi, 292
–keep-ligatures
ebook-convert komut satırı seçene˘gi, 285
–language
ebook-convert komut satırı seçene˘gi, 289
–language, -l
ebook-meta komut satırı seçene˘gi, 291
–languages, -l
361
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
calibredb-add komut satırı seçene˘gi, 272
–level1-toc
ebook-convert komut satırı seçene˘gi, 288
–level2-toc
ebook-convert komut satırı seçene˘gi, 288
–level3-toc
ebook-convert komut satırı seçene˘gi, 288
–library-path
komut satırı seçene˘gi, 271
–limit
calibredb-list komut satırı seçene˘gi, 272
–line-height
ebook-convert komut satırı seçene˘gi, 285
–line-width, -w
calibredb-list komut satırı seçene˘gi, 272
–linearize-tables
ebook-convert komut satırı seçene˘gi, 285
–list-fields, -l
calibredb-set_metadata komut satırı seçene˘gi, 275
–list-plugins, -l
calibre-customize komut satırı seçene˘gi, 266
–list-recipes
ebook-convert komut satırı seçene˘gi, 283
–localhost, -l
calibre-smtp komut satırı seçene˘gi, 270
–lrf-bookid
ebook-meta komut satırı seçene˘gi, 291
–lrs
lrs2lrf komut satırı seçene˘gi, 296
–margin-bottom
ebook-convert komut satırı seçene˘gi, 285
–margin-left
ebook-convert komut satırı seçene˘gi, 285
–margin-right
ebook-convert komut satırı seçene˘gi, 285
–margin-top
ebook-convert komut satırı seçene˘gi, 285
–match-regexp
web2disk komut satırı seçene˘gi, 297
–max-cover
calibre-server komut satırı seçene˘gi, 268
–max-files, -n
web2disk komut satırı seçene˘gi, 297
–max-opds-items
calibre-server komut satırı seçene˘gi, 269
–max-opds-ungrouped-items
calibre-server komut satırı seçene˘gi, 269
–max-recursions, -r
web2disk komut satırı seçene˘gi, 297
–max-toc-links
ebook-convert komut satırı seçene˘gi, 288
–minimum-line-height
ebook-convert komut satırı seçene˘gi, 285
–no-chapters-in-toc
362
ebook-convert komut satırı seçene˘gi, 288
–no-default-epub-cover
ebook-convert komut satırı seçene˘gi, 283
–no-svg-cover
ebook-convert komut satırı seçene˘gi, 284
–no-update-check
calibre komut satırı seçene˘gi, 265
–one-book-per-directory, -1
calibredb-add komut satırı seçene˘gi, 273
–only-formats, -f
calibredb-embed_metadata komut satırı seçene˘gi,
281
–open-at
ebook-viewer komut satırı seçene˘gi, 293
–opf, -o
ebook-polish komut satırı seçene˘gi, 292
fetch-ebook-metadata komut satırı seçene˘gi, 294
–outbox, -o
calibre-smtp komut satırı seçene˘gi, 270
–output, -o
lrf2lrs komut satırı seçene˘gi, 295
lrs2lrf komut satırı seçene˘gi, 296
–output-profile
ebook-convert komut satırı seçene˘gi, 283
–page-breaks-before
ebook-convert komut satırı seçene˘gi, 287
–password
calibre-server komut satırı seçene˘gi, 269
–password, -p
calibre-smtp komut satırı seçene˘gi, 270
–paths
calibre-debug komut satırı seçene˘gi, 267
–pidfile
calibre-server komut satırı seçene˘gi, 269
–port
calibre-smtp komut satırı seçene˘gi, 270
–port, -p
calibre-server komut satırı seçene˘gi, 269
–prefer-metadata-cover
ebook-convert komut satırı seçene˘gi, 288
–prefix
calibredb-list komut satırı seçene˘gi, 272
–preserve-cover-aspect-ratio
ebook-convert komut satırı seçene˘gi, 284
–pretty-print
ebook-convert komut satırı seçene˘gi, 284
–profile
lrfviewer komut satırı seçene˘gi, 295
–pubdate
ebook-convert komut satırı seçene˘gi, 289
–publisher
ebook-convert komut satırı seçene˘gi, 289
–publisher, -p
ebook-meta komut satırı seçene˘gi, 291
Dizin
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
–py-console, -p
calibre-debug komut satırı seçene˘gi, 267
–quote, -q
calibredb-list_categories komut satırı seçene˘gi, 280
–raise-window
ebook-viewer komut satırı seçene˘gi, 293
–rating
ebook-convert komut satırı seçene˘gi, 289
–rating, -r
ebook-meta komut satırı seçene˘gi, 291
–read-metadata-from-opf, -m
ebook-convert komut satırı seçene˘gi, 289
–really-do-it, -r
calibredb-restore_database komut satırı seçene˘gi,
279
–recurse, -r
calibredb-add komut satırı seçene˘gi, 273
–reinitialize-db
calibre-debug komut satırı seçene˘gi, 268
–relay, -r
calibre-smtp komut satırı seçene˘gi, 270
–remove-first-image
ebook-convert komut satırı seçene˘gi, 288
–remove-jacket
ebook-polish komut satırı seçene˘gi, 292
–remove-paragraph-spacing
ebook-convert komut satırı seçene˘gi, 285
–remove-paragraph-spacing-indent-size
ebook-convert komut satırı seçene˘gi, 286
–remove-plugin, -r
calibre-customize komut satırı seçene˘gi, 266
–remove-unused-css, -u
ebook-polish komut satırı seçene˘gi, 292
–replace-scene-breaks
ebook-convert komut satırı seçene˘gi, 287
–replace-whitespace
calibredb-export komut satırı seçene˘gi, 276
–report, -r
calibredb-check_library komut satırı seçene˘gi, 280
–restriction
calibre-server komut satırı seçene˘gi, 269
–run-plugin, -r
calibre-debug komut satırı seçene˘gi, 268
–search, -s
calibredb-catalog komut satırı seçene˘gi, 276
calibredb-list komut satırı seçene˘gi, 272
–search-replace
ebook-convert komut satırı seçene˘gi, 287
–separator
calibredb-list komut satırı seçene˘gi, 272
–separator, -s
calibredb-list_categories komut satırı seçene˘gi, 280
–series
ebook-convert komut satırı seçene˘gi, 289
Dizin
–series, -s
calibredb-add komut satırı seçene˘gi, 273
ebook-meta komut satırı seçene˘gi, 291
–series-index
ebook-convert komut satırı seçene˘gi, 289
–series-index, -S
calibredb-add komut satırı seçene˘gi, 273
–shutdown-running-calibre, -s
calibre komut satırı seçene˘gi, 265
calibre-debug komut satırı seçene˘gi, 268
–single-dir
calibredb-export komut satırı seçene˘gi, 276
–smarten-punctuation
ebook-convert komut satırı seçene˘gi, 286
–smarten-punctuation, -p
ebook-polish komut satırı seçene˘gi, 293
–sort-by
calibredb-catalog komut satırı seçene˘gi, 276
calibredb-list komut satırı seçene˘gi, 272
–sr1-replace
ebook-convert komut satırı seçene˘gi, 287
–sr1-search
ebook-convert komut satırı seçene˘gi, 287
–sr2-replace
ebook-convert komut satırı seçene˘gi, 287
–sr2-search
ebook-convert komut satırı seçene˘gi, 287
–sr3-replace
ebook-convert komut satırı seçene˘gi, 287
–sr3-search
ebook-convert komut satırı seçene˘gi, 287
–start-in-tray
calibre komut satırı seçene˘gi, 265
–start-reading-at
ebook-convert komut satırı seçene˘gi, 288
–subject, -s
calibre-smtp komut satırı seçene˘gi, 270
–subset-embedded-fonts
ebook-convert komut satırı seçene˘gi, 286
–subset-font, -f
calibre-debug komut satırı seçene˘gi, 268
–subset-fonts, -f
ebook-polish komut satırı seçene˘gi, 293
–tags
ebook-convert komut satırı seçene˘gi, 289
ebook-meta komut satırı seçene˘gi, 291
–tags, -T
calibredb-add komut satırı seçene˘gi, 273
–template
calibredb-export komut satırı seçene˘gi, 276
–test-build
calibre-debug komut satırı seçene˘gi, 268
–thread-pool
calibre-server komut satırı seçene˘gi, 269
363
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
–timefmt
calibredb-export komut satırı seçene˘gi, 276
–timeout, -d
fetch-ebook-metadata komut satırı seçene˘gi, 294
–timeout, -t
calibre-server komut satırı seçene˘gi, 269
calibre-smtp komut satırı seçene˘gi, 270
web2disk komut satırı seçene˘gi, 297
–timestamp
ebook-convert komut satırı seçene˘gi, 289
–title
ebook-convert komut satırı seçene˘gi, 289
–title, -t
calibredb-add komut satırı seçene˘gi, 273
ebook-meta komut satırı seçene˘gi, 292
fetch-ebook-metadata komut satırı seçene˘gi, 294
–title-sort
ebook-convert komut satırı seçene˘gi, 289
ebook-meta komut satırı seçene˘gi, 292
–to-dir
calibredb-export komut satırı seçene˘gi, 276
–to-lowercase
calibredb-export komut satırı seçene˘gi, 276
–to-opf
ebook-meta komut satırı seçene˘gi, 292
–toc-filter
ebook-convert komut satırı seçene˘gi, 288
–toc-threshold
ebook-convert komut satırı seçene˘gi, 288
–toc-title
ebook-convert komut satırı seçene˘gi, 284
–unsmarten-punctuation
ebook-convert komut satırı seçene˘gi, 286
–url-prefix
calibre-server komut satırı seçene˘gi, 269
–use-auto-toc
ebook-convert komut satırı seçene˘gi, 288
–username
calibre-server komut satırı seçene˘gi, 269
–username, -u
calibre-smtp komut satırı seçene˘gi, 270
–verbose
ebook-polish komut satırı seçene˘gi, 293
lrf2lrs komut satırı seçene˘gi, 295
lrfviewer komut satırı seçene˘gi, 295
lrs2lrf komut satırı seçene˘gi, 296
web2disk komut satırı seçene˘gi, 297
–verbose, -v
calibre komut satırı seçene˘gi, 265
calibre-smtp komut satırı seçene˘gi, 270
calibredb-catalog komut satırı seçene˘gi, 277
ebook-convert komut satırı seçene˘gi, 290
fetch-ebook-metadata komut satırı seçene˘gi, 294
–version
364
calibre komut satırı seçene˘gi, 266
calibre-customize komut satırı seçene˘gi, 266
calibre-debug komut satırı seçene˘gi, 268
calibre-server komut satırı seçene˘gi, 269
calibre-smtp komut satırı seçene˘gi, 270
calibredb-add komut satırı seçene˘gi, 273
calibredb-add_custom_column komut satırı seçene˘gi, 278
calibredb-add_format komut satırı seçene˘gi, 274
calibredb-backup_metadata komut satırı seçene˘gi,
281
calibredb-catalog komut satırı seçene˘gi, 277
calibredb-check_library komut satırı seçene˘gi, 280
calibredb-clone komut satırı seçene˘gi, 281
calibredb-custom_columns komut satırı seçene˘gi,
278
calibredb-embed_metadata komut satırı seçene˘gi,
281
calibredb-export komut satırı seçene˘gi, 276
calibredb-list komut satırı seçene˘gi, 272
calibredb-list_categories komut satırı seçene˘gi, 280
calibredb-remove komut satırı seçene˘gi, 273
calibredb-remove_custom_column komut satırı seçene˘gi, 278
calibredb-remove_format komut satırı seçene˘gi, 274
calibredb-restore_database komut satırı seçene˘gi,
279
calibredb-saved_searches komut satırı seçene˘gi, 277
calibredb-set_custom komut satırı seçene˘gi, 279
calibredb-set_metadata komut satırı seçene˘gi, 275
calibredb-show_metadata komut satırı seçene˘gi, 274
ebook-convert komut satırı seçene˘gi, 283
ebook-edit komut satırı seçene˘gi, 290
ebook-meta komut satırı seçene˘gi, 292
ebook-polish komut satırı seçene˘gi, 293
ebook-viewer komut satırı seçene˘gi, 293
fetch-ebook-metadata komut satırı seçene˘gi, 294
lrf2lrs komut satırı seçene˘gi, 295
lrfviewer komut satırı seçene˘gi, 295
lrs2lrf komut satırı seçene˘gi, 296
web2disk komut satırı seçene˘gi, 297
–viewer, -w
calibre-debug komut satırı seçene˘gi, 268
–visual-debug
lrfviewer komut satırı seçene˘gi, 295
–white-background
lrfviewer komut satırı seçene˘gi, 295
–width, -w
calibredb-list_categories komut satırı seçene˘gi, 280
–with-library
calibre komut satırı seçene˘gi, 266
calibre-server komut satırı seçene˘gi, 269
Dizin
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
A
all_book_ids() (calibre.db.cache.Cache metodu), 340
all_field_for() (calibre.db.cache.Cache metodu), 340
all_field_ids() (calibre.db.cache.Cache metodu), 340
all_field_keys() (calibre.ebooks.metadata.book.base.Metadata
metodu), 176, 194
all_field_names() (calibre.db.cache.Cache metodu), 340
all_non_none_fields()
(calibre.ebooks.metadata.book.base.Metadata
metodu), 176, 194
allowed_in_menu (calibre.gui2.tweak_book.plugin.Tool
niteli˘gi), 353
allowed_in_toolbar
(calibre.gui2.tweak_book.plugin.Tool
niteli˘gi),
352
API, 355
apply_container_update_to_gui()
(calibre.gui2.tweak_book.boss.Boss
metodu),
354
articles_are_obfuscated
(calibre.web.feeds.news.BasicNewsRecipe
niteli˘gi), 39, 139, 310
ASK_TO_ALLOW_CONNECT
(calibre.devices.interface.DevicePlugin niteli˘gi),
240, 326
author (calibre.customize.Plugin niteli˘gi), 230, 316
author_data() (calibre.db.cache.Cache metodu), 340
author_sort_from_authors() (calibre.db.cache.Cache metodu), 341
auto_cleanup (calibre.web.feeds.news.BasicNewsRecipe
niteli˘gi), 40, 140, 310
auto_cleanup_keep
(calibre.web.feeds.news.BasicNewsRecipe
niteli˘gi), 40, 140, 311
auto_repeat (calibre.gui2.actions.InterfaceAction niteli˘gi), 249, 335
auto_trim_covers (calibre.ebooks.metadata.sources.base.Source
niteli˘gi), 234, 320
abort_article() (calibre.web.feeds.news.BasicNewsRecipe
metodu), 35, 135, 306
abort_recipe_processing()
(calibre.web.feeds.news.BasicNewsRecipe
metodu), 35, 135, 306
abspath_to_name()
(calibre.ebooks.oeb.polish.container.Container
metodu), 346
accept_drag_move_event()
(calibre.gui2.actions.InterfaceAction
metodu),
249, 335
accept_enter_event()
(calibre.gui2.actions.InterfaceAction
metodu),
249, 335
accepts_drops (calibre.gui2.actions.InterfaceAction niteli˘gi), 249, 335
action_add_menu (calibre.gui2.actions.InterfaceAction
niteli˘gi), 249, 335
action_menu_clone_qaction
(calibre.gui2.actions.InterfaceAction
niteli˘gi),
249, 335
action_spec (calibre.gui2.actions.InterfaceAction niteli˘gi), 249, 335
action_type (calibre.gui2.actions.InterfaceAction niteli˘gi), 249, 335
add_annotation_to_library()
(calibre.devices.usbms.device.Device
metodu),
248, 334
add_book() (calibre.devices.interface.BookList metodu),
246, 332
add_books() (calibre.db.cache.Cache metodu), 340
add_books_to_metadata()
(calibre.devices.interface.DevicePlugin
sınıf
metodu), 243, 329
add_custom_book_data() (calibre.db.cache.Cache metodu), 340
add_file() (calibre.ebooks.oeb.polish.container.Container
B
metodu), 346
BasicNewsRecipe (calibre.web.feeds.news içinde bir sıadd_format() (calibre.db.cache.Cache metodu), 340
nıf), 35, 135, 306
add_name_to_manifest()
(caBCD (calibre.devices.interface.DevicePlugin niteli˘gi),
libre.ebooks.oeb.polish.container.Container
239, 325
metodu), 346
add_or_replace_jacket()
(ca- book_type (calibre.ebooks.oeb.polish.container.Container
niteli˘gi), 346
libre.ebooks.oeb.polish.jacket modülü içinde),
BookList (calibre.devices.interface içinde bir sınıf), 246,
350
332
add_savepoint() (calibre.gui2.tweak_book.boss.Boss mebooks() (calibre.devices.interface.DevicePlugin metodu),
todu), 354
243, 329
add_toc_thumbnail()
(cabooks_for_field() (calibre.db.cache.Cache metodu), 341
libre.web.feeds.news.BasicNewsRecipe
Boss (calibre.gui2.tweak_book.boss içinde bir sınıf), 354
metodu), 35, 135, 306
adeify_images() (calibre.web.feeds.news.BasicNewsRecipe boss (calibre.gui2.tweak_book.plugin.Tool niteli˘gi), 353
BuiltinAdd (calibre.utils.formatter_functions içinde bir
sınıf metodu), 35, 135, 306
sınıf), 166, 184
Adres, 355
Dizin
365
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
BuiltinAnd (calibre.utils.formatter_functions içinde bir
sınıf), 166, 184
BuiltinApproximateFormats
(calibre.utils.formatter_functions
içinde
bir
sınıf), 167, 185
BuiltinAssign (calibre.utils.formatter_functions içinde bir
sınıf), 173, 191
BuiltinAuthorLinks
(calibre.utils.formatter_functions
içinde bir sınıf), 167, 185
BuiltinAuthorSorts
(calibre.utils.formatter_functions
içinde bir sınıf), 168, 186
BuiltinBooksize (calibre.utils.formatter_functions içinde
bir sınıf), 168, 186
BuiltinCapitalize (calibre.utils.formatter_functions içinde
bir sınıf), 174, 192
BuiltinCmp (calibre.utils.formatter_functions içinde bir
sınıf), 173, 191
BuiltinContains (calibre.utils.formatter_functions içinde
bir sınıf), 170, 188
BuiltinCount (calibre.utils.formatter_functions içinde bir
sınıf), 171, 189
BuiltinCurrentLibraryName
(calibre.utils.formatter_functions
içinde
bir
sınıf), 168, 186
BuiltinCurrentLibraryPath
(calibre.utils.formatter_functions
içinde
bir
sınıf), 168, 186
BuiltinDaysBetween (calibre.utils.formatter_functions
içinde bir sınıf), 166, 184
BuiltinDivide (calibre.utils.formatter_functions içinde bir
sınıf), 166, 184
BuiltinEval (calibre.utils.formatter_functions içinde bir
sınıf), 173, 191
BuiltinField (calibre.utils.formatter_functions içinde bir
sınıf), 168, 186
BuiltinFinishFormatting
(calibre.utils.formatter_functions
içinde
bir
sınıf), 167, 185
BuiltinFirstMatchingCmp
(calibre.utils.formatter_functions
içinde
bir
sınıf), 174, 192
BuiltinFirstNonEmpty (calibre.utils.formatter_functions
içinde bir sınıf), 170, 188
BuiltinFormatDate
(calibre.utils.formatter_functions
içinde bir sınıf), 167, 185
BuiltinFormatNumber (calibre.utils.formatter_functions
içinde bir sınıf), 167, 185
BuiltinFormatsModtimes
(calibre.utils.formatter_functions
içinde
bir
sınıf), 168, 186
BuiltinFormatsPaths
(calibre.utils.formatter_functions
içinde bir sınıf), 168, 186
BuiltinFormatsSizes
(calibre.utils.formatter_functions
içinde bir sınıf), 169, 187
366
BuiltinHasCover (calibre.utils.formatter_functions içinde
bir sınıf), 169, 187
BuiltinHumanReadable (calibre.utils.formatter_functions
içinde bir sınıf), 167, 185
BuiltinIdentifierInList (calibre.utils.formatter_functions
içinde bir sınıf), 171, 189
BuiltinIfempty (calibre.utils.formatter_functions içinde
bir sınıf), 170, 188
BuiltinInList (calibre.utils.formatter_functions içinde bir
sınıf), 171, 189
BuiltinLanguageCodes (calibre.utils.formatter_functions
içinde bir sınıf), 169, 187
BuiltinLanguageStrings (calibre.utils.formatter_functions
içinde bir sınıf), 169, 187
BuiltinListDifference (calibre.utils.formatter_functions
içinde bir sınıf), 171, 189
BuiltinListEquals
(calibre.utils.formatter_functions
içinde bir sınıf), 172, 190
BuiltinListIntersection (calibre.utils.formatter_functions
içinde bir sınıf), 172, 190
BuiltinListitem (calibre.utils.formatter_functions içinde
bir sınıf), 171, 189
BuiltinListRe (calibre.utils.formatter_functions içinde bir
sınıf), 172, 190
BuiltinListReGroup
(calibre.utils.formatter_functions
içinde bir sınıf), 172, 190
BuiltinListSort (calibre.utils.formatter_functions içinde
bir sınıf), 172, 190
BuiltinListUnion (calibre.utils.formatter_functions içinde
bir sınıf), 172, 190
BuiltinLookup (calibre.utils.formatter_functions içinde
bir sınıf), 170, 188
BuiltinLowercase
(calibre.utils.formatter_functions
içinde bir sınıf), 174, 192
BuiltinMultiply (calibre.utils.formatter_functions içinde
bir sınıf), 166, 184
BuiltinNot (calibre.utils.formatter_functions içinde bir sınıf), 166, 184
BuiltinOndevice (calibre.utils.formatter_functions içinde
bir sınıf), 169, 187
BuiltinOr (calibre.utils.formatter_functions içinde bir sınıf), 166, 184
BuiltinPrint (calibre.utils.formatter_functions içinde bir
sınıf), 173, 191
BuiltinRawField (calibre.utils.formatter_functions içinde
bir sınıf), 169, 187
BuiltinRawList (calibre.utils.formatter_functions içinde
bir sınıf), 169, 187
BuiltinRe (calibre.utils.formatter_functions içinde bir sınıf), 174, 192
BuiltinReGroup (calibre.utils.formatter_functions içinde
bir sınıf), 174, 192
BuiltinSelect (calibre.utils.formatter_functions içinde bir
sınıf), 171, 189
Dizin
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
BuiltinSeriesSort (calibre.utils.formatter_functions içinde
–shutdown-running-calibre, -s, 265
bir sınıf), 169, 187
–start-in-tray, 265
BuiltinShorten (calibre.utils.formatter_functions içinde
–verbose, -v, 265
bir sınıf), 175, 193
–version, 266
BuiltinStrcat (calibre.utils.formatter_functions içinde bir
–with-library, 266
sınıf), 175, 193
calibre-customize komut satırı seçene˘gi
BuiltinStrcatMax
(calibre.utils.formatter_functions
–add-plugin, -a, 266
içinde bir sınıf), 175, 193
–build-plugin, -b, 266
BuiltinStrcmp (calibre.utils.formatter_functions içinde
–customize-plugin, 266
bir sınıf), 174, 192
–disable-plugin, 266
BuiltinStrInList (calibre.utils.formatter_functions içinde
–enable-plugin, 266
bir sınıf), 171, 189
–help, -h, 266
BuiltinStrlen (calibre.utils.formatter_functions içinde bir
–list-plugins, -l, 266
sınıf), 175, 193
–remove-plugin, -r, 266
BuiltinSubitems (calibre.utils.formatter_functions içinde
–version, 266
bir sınıf), 172, 190
calibre-debug komut satırı seçene˘gi
BuiltinSublist (calibre.utils.formatter_functions içinde bir
–add-simple-plugin, 267
sınıf), 173, 191
–command, -c, 267
BuiltinSubstr (calibre.utils.formatter_functions içinde bir
–debug-device-driver, -d, 267
sınıf), 175, 193
–default-programs, 267
BuiltinSubtract (calibre.utils.formatter_functions içinde
–diff, 267
bir sınıf), 166, 184
–edit-book, -t, 267
BuiltinSwapAroundComma
(ca–exec-file, -e, 267
libre.utils.formatter_functions
içinde
bir
–explode-book, -x, 267
sınıf), 175, 193
–gui, -g, 267
BuiltinSwitch (calibre.utils.formatter_functions içinde bir
–gui-debug, 267
sınıf), 170, 188
–help, -h, 267
BuiltinTemplate (calibre.utils.formatter_functions içinde
–inspect-mobi, -m, 267
bir sınıf), 173, 191
–paths, 267
BuiltinTest (calibre.utils.formatter_functions içinde bir sı–py-console, -p, 267
nıf), 170, 188
–reinitialize-db, 268
BuiltinTitlecase (calibre.utils.formatter_functions içinde
–run-plugin, -r, 268
bir sınıf), 174, 192
–shutdown-running-calibre, -s, 268
BuiltinToday (calibre.utils.formatter_functions içinde bir
–subset-font, -f, 268
sınıf), 166, 184
–test-build, 268
BuiltinTransliterate
(calibre.utils.formatter_functions
–version, 268
içinde bir sınıf), 175, 193
–viewer, -w, 268
BuiltinUppercase
(calibre.utils.formatter_functions calibre-server komut satırı seçene˘gi
içinde bir sınıf), 174, 192
–auto-reload, 268
BuiltinUserCategories (calibre.utils.formatter_functions
–daemonize, 268
içinde bir sınıf), 169, 187
–develop, 268
BuiltinVirtualLibraries (calibre.utils.formatter_functions
–help, -h, 268
içinde bir sınıf), 170, 188
–max-cover, 268
–max-opds-items, 269
C
–max-opds-ungrouped-items, 269
–password, 269
Cache (calibre.db.cache içinde bir sınıf), 340
–pidfile, 269
cached_cover_url_is_reliable
(ca–port, -p, 269
libre.ebooks.metadata.sources.base.Source
–restriction, 269
niteli˘gi), 234, 320
–thread-pool, 269
calibre komut satırı seçene˘gi
–timeout, -t, 269
–detach, 265
–url-prefix, 269
–help, -h, 265
–username, 269
–ignore-plugins, 265
–version, 269
–no-update-check, 265
Dizin
367
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
–with-library, 269
calibre-smtp komut satırı seçene˘gi
–attachment, -a, 270
–encryption-method, -e, 270
–fork, -f, 270
–help, -h, 270
–localhost, -l, 270
–outbox, -o, 270
–password, -p, 270
–port, 270
–relay, -r, 270
–subject, -s, 270
–timeout, -t, 270
–username, -u, 270
–verbose, -v, 270
–version, 270
calibre.customize (modül), 230, 316
calibre.customize.conversion (modül), 237, 323
calibre.db.cache (modül), 340
calibre.devices.interface (modül), 239, 325
calibre.ebooks.metadata.book.base (modül), 175, 193
calibre.ebooks.metadata.sources.base (modül), 234, 320
calibre.ebooks.oeb.polish.container (modül), 346
calibre.ebooks.oeb.polish.cover (modül), 351
calibre.ebooks.oeb.polish.css (modül), 351
calibre.ebooks.oeb.polish.jacket (modül), 350
calibre.ebooks.oeb.polish.pretty (modül), 350
calibre.ebooks.oeb.polish.replace (modül), 349
calibre.ebooks.oeb.polish.split (modül), 350
calibre.ebooks.oeb.polish.toc (modül), 352
calibre.gui2.tweak_book.boss (modül), 354
calibre.gui2.tweak_book.plugin.Tool (modül), 352
calibre.utils.formatter_functions (modül), 166, 184
calibre.web.feeds.news (modül), 35, 135, 306
calibredb-add komut satırı seçene˘gi
–authors, -a, 272
–cover, -c, 272
–duplicates, -d, 272
–empty, -e, 272
–help, -h, 272
–isbn, -i, 272
–languages, -l, 272
–one-book-per-directory, -1, 273
–recurse, -r, 273
–series, -s, 273
–series-index, -S, 273
–tags, -T, 273
–title, -t, 273
–version, 273
calibredb-add_custom_column komut satırı seçene˘gi
–display, 277
–help, -h, 277
–is-multiple, 277
–version, 278
368
calibredb-add_format komut satırı seçene˘gi
–dont-replace, 273
–help, -h, 274
–version, 274
calibredb-backup_metadata komut satırı seçene˘gi
–all, 281
–help, -h, 281
–version, 281
calibredb-catalog komut satırı seçene˘gi
–fields, 276
–help, -h, 276
–ids, -i, 276
–search, -s, 276
–sort-by, 276
–verbose, -v, 277
–version, 277
calibredb-check_library komut satırı seçene˘gi
–csv, -c, 279
–help, -h, 279
–ignore_extensions, -e, 279
–ignore_names, -n, 279
–report, -r, 280
–version, 280
calibredb-clone komut satırı seçene˘gi
–help, -h, 281
–version, 281
calibredb-custom_columns komut satırı seçene˘gi
–details, -d, 278
–help, -h, 278
–version, 278
calibredb-embed_metadata komut satırı seçene˘gi
–help, -h, 281
–only-formats, -f, 281
–version, 281
calibredb-export komut satırı seçene˘gi
–all, 275
–dont-asciiize, 275
–dont-save-cover, 275
–dont-update-metadata, 275
–dont-write-opf, 275
–formats, 275
–help, -h, 275
–replace-whitespace, 276
–single-dir, 276
–template, 276
–timefmt, 276
–to-dir, 276
–to-lowercase, 276
–version, 276
calibredb-list komut satırı seçene˘gi
–ascending, 271
–fields, -f, 271
–for-machine, 271
–help, -h, 272
Dizin
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
–limit, 272
–line-width, -w, 272
–prefix, 272
–search, -s, 272
–separator, 272
–sort-by, 272
–version, 272
calibredb-list_categories komut satırı seçene˘gi
–categories, -r, 280
–csv, -c, 280
–help, -h, 280
–item_count, -i, 280
–quote, -q, 280
–separator, -s, 280
–version, 280
–width, -w, 280
calibredb-remove komut satırı seçene˘gi
–help, -h, 273
–version, 273
calibredb-remove_custom_column komut satırı seçene˘gi
–force, -f, 278
–help, -h, 278
–version, 278
calibredb-remove_format komut satırı seçene˘gi
–help, -h, 274
–version, 274
calibredb-restore_database komut satırı seçene˘gi
–help, -h, 279
–really-do-it, -r, 279
–version, 279
calibredb-saved_searches komut satırı seçene˘gi
–help, -h, 277
–version, 277
calibredb-set_custom komut satırı seçene˘gi
–append, -a, 279
–help, -h, 279
–version, 279
calibredb-set_metadata komut satırı seçene˘gi
–field, -f, 275
–help, -h, 275
–list-fields, -l, 275
–version, 275
calibredb-show_metadata komut satırı seçene˘gi
–as-opf, 274
–help, -h, 274
–version, 274
can_be_disabled (calibre.customize.Plugin niteli˘gi), 231,
317
CAN_DO_DEVICE_DB_PLUGBOARD
(calibre.devices.interface.DevicePlugin niteli˘gi),
240, 326
can_get_multiple_covers
(calibre.ebooks.metadata.sources.base.Source
niteli˘gi), 234, 320
Dizin
can_handle() (calibre.devices.interface.DevicePlugin metodu), 241, 327
can_handle_windows()
(calibre.devices.interface.DevicePlugin metodu),
241, 327
CAN_SET_METADATA
(calibre.devices.interface.DevicePlugin niteli˘gi),
240, 326
capabilities (calibre.ebooks.metadata.sources.base.Source
niteli˘gi), 234, 320
card_prefix() (calibre.devices.interface.DevicePlugin metodu), 242, 328
CatalogPlugin (calibre.customize içinde bir sınıf), 233,
319
category (calibre.customize.PreferencesPlugin niteli˘gi),
251, 337
category_order (calibre.customize.PreferencesPlugin niteli˘gi), 251, 337
center_navbar (calibre.web.feeds.news.BasicNewsRecipe
niteli˘gi), 40, 140, 311
change_font() (calibre.ebooks.oeb.polish.fonts modülü
içinde), 351
changed_signal (calibre.gui2.preferences.ConfigWidgetInterface
niteli˘gi), 252, 338
clean_downloaded_metadata()
(calibre.ebooks.metadata.sources.base.Source
metodu), 235, 321
cleanup() (calibre.web.feeds.news.BasicNewsRecipe metodu), 36, 136, 306
CLI (calibre.devices.usbms.cli içinde bir sınıf), 248, 334
cli_main() (calibre.customize.Plugin metodu), 232, 318
cli_options (calibre.customize.CatalogPlugin niteli˘gi),
233, 319
clone_browser() (calibre.web.feeds.news.BasicNewsRecipe
metodu), 36, 136, 306
close_editor() (calibre.gui2.tweak_book.boss.Boss metodu), 354
commit() (calibre.ebooks.oeb.polish.container.Container
metodu), 346
commit() (calibre.gui2.preferences.ConfigWidgetInterface
metodu), 252, 338
commit_all_editors_to_container()
(calibre.gui2.tweak_book.boss.Boss
metodu),
354
commit_item() (calibre.ebooks.oeb.polish.container.Container
metodu), 347
common_options (calibre.customize.conversion.InputFormatPlugin
niteli˘gi), 237, 323
common_options (calibre.customize.conversion.OutputFormatPlugin
niteli˘gi), 238, 324
compress_news_images
(calibre.web.feeds.news.BasicNewsRecipe
niteli˘gi), 40, 140, 311
369
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
compress_news_images_auto_size
(ca- customization_help() (calibre.customize.Plugin metodu),
libre.web.feeds.news.BasicNewsRecipe
ni232, 318
teli˘gi), 40, 140, 311
customize_context_menu()
(cacompress_news_images_max_size
(calibre.customize.ViewerPlugin metodu), 253,
libre.web.feeds.news.BasicNewsRecipe
ni339
teli˘gi), 40, 140, 311
customize_ui() (calibre.customize.ViewerPlugin meconfig_help_message
(catodu), 253, 339
libre.ebooks.metadata.sources.base.Source
D
niteli˘gi), 234, 320
config_widget (calibre.customize.PreferencesPlugin nite- düzenli ifade, 355
li˘gi), 251, 337
data_for_find_identical_books() (calibre.db.cache.Cache
config_widget() (calibre.customize.Plugin metodu), 231,
metodu), 341
317
data_for_has_book() (calibre.db.cache.Cache metodu),
config_widget() (calibre.devices.interface.DevicePlugin
341
sınıf metodu), 244, 330
debug_managed_device_detection()
(caConfigWidgetBase (calibre.gui2.preferences içinde bir sılibre.devices.interface.DevicePlugin metodu),
nıf), 252, 338
241, 327
ConfigWidgetInterface (calibre.gui2.preferences içinde decode() (calibre.ebooks.oeb.polish.container.Container
bir sınıf), 252, 338
metodu), 347
Container (calibre.ebooks.oeb.polish.container içinde bir deepcopy() (calibre.ebooks.metadata.book.base.Metadata
sınıf), 346
metodu), 176, 194
contains(), 152
default_cover() (calibre.web.feeds.news.BasicNewsRecipe
conversion_options
(cametodu), 36, 136, 307
libre.web.feeds.news.BasicNewsRecipe
ni- delay (calibre.web.feeds.news.BasicNewsRecipe niteteli˘gi), 40, 140, 311
li˘gi), 41, 141, 312
convert() (calibre.customize.conversion.InputFormatPlugin delete_books() (calibre.devices.interface.DevicePlugin
metodu), 237, 323
metodu), 243, 329
convert() (calibre.customize.conversion.OutputFormatPlugindelete_custom_book_data() (calibre.db.cache.Cache memetodu), 238, 324
todu), 341
copy_cover_to() (calibre.db.cache.Cache metodu), 341
description (calibre.customize.Plugin niteli˘gi), 230, 316
copy_format_to() (calibre.db.cache.Cache metodu), 341
description (calibre.customize.PreferencesPlugin nitecore_usage (calibre.customize.conversion.InputFormatPlugin
li˘gi), 251, 337
niteli˘gi), 237, 323
description (calibre.web.feeds.news.BasicNewsRecipe
cover() (calibre.db.cache.Cache metodu), 341
niteli˘gi), 41, 141, 312
cover_margins (calibre.web.feeds.news.BasicNewsRecipe detect_managed_devices()
(caniteli˘gi), 41, 141, 311
libre.devices.interface.DevicePlugin metodu),
create_action()
(calibre.gui2.tweak_book.plugin.Tool
241, 327
metodu), 353
Device (calibre.devices.usbms.device içinde bir sınıf),
create_inline_toc() (calibre.ebooks.oeb.polish.toc modülü
247, 333
içinde), 352
DevicePlugin (calibre.devices.interface içinde bir sınıf),
create_menu_action()
(ca239, 325
libre.gui2.actions.InterfaceAction
metodu), dirty()
(calibre.ebooks.oeb.polish.container.Container
250, 336
metodu), 347
create_widget()
(calibre.customize.PreferencesPlugin do_user_config() (calibre.customize.Plugin metodu), 231,
metodu), 251, 337
317
CSS, 355
dont_add_to (calibre.gui2.actions.InterfaceAction nitecurrent_container (calibre.gui2.tweak_book.plugin.Tool
li˘gi), 249, 335
niteli˘gi), 353
dont_remove_from (calibre.gui2.actions.InterfaceAction
currently_editing (calibre.gui2.tweak_book.boss.Boss niniteli˘gi), 249, 335
teli˘gi), 354
download() (calibre.web.feeds.news.BasicNewsRecipe
custom_field_keys()
(cametodu), 36, 136, 307
libre.ebooks.metadata.book.base.Metadata
download_cover() (calibre.ebooks.metadata.sources.base.Source
metodu), 176, 194
metodu), 236, 322
370
Dizin
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
drop_event() (calibre.gui2.actions.InterfaceAction metodu), 249, 335
E
ebook-convert komut satırı seçene˘gi
–asciiize, 284
–author-sort, 289
–authors, 289
–base-font-size, 284
–book-producer, 289
–change-justification, 284
–chapter, 287
–chapter-mark, 287
–comments, 289
–cover, 289
–debug-pipeline, -d, 289
–disable-dehyphenate, 286
–disable-delete-blank-paragraphs, 286
–disable-fix-indents, 286
–disable-font-rescaling, 284
–disable-format-scene-breaks, 286
–disable-italicize-common-cases, 286
–disable-markup-chapter-headings, 286
–disable-remove-fake-margins, 287
–disable-renumber-headings, 286
–disable-unwrap-lines, 286
–dont-split-on-page-breaks, 283
–duplicate-links-in-toc, 288
–embed-all-fonts, 284
–embed-font-family, 284
–enable-heuristics, 286
–epub-flatten, 283
–epub-inline-toc, 283
–epub-toc-at-end, 283
–expand-css, 284
–extra-css, 284
–extract-to, 283
–filter-css, 285
–flow-size, 283
–font-size-mapping, 285
–help, -h, 282
–html-unwrap-factor, 286
–input-encoding, 283
–input-profile, 282
–insert-blank-line, 285
–insert-blank-line-size, 285
–insert-metadata, 287
–isbn, 289
–keep-ligatures, 285
–language, 289
–level1-toc, 288
–level2-toc, 288
–level3-toc, 288
–line-height, 285
Dizin
–linearize-tables, 285
–list-recipes, 283
–margin-bottom, 285
–margin-left, 285
–margin-right, 285
–margin-top, 285
–max-toc-links, 288
–minimum-line-height, 285
–no-chapters-in-toc, 288
–no-default-epub-cover, 283
–no-svg-cover, 284
–output-profile, 283
–page-breaks-before, 287
–prefer-metadata-cover, 288
–preserve-cover-aspect-ratio, 284
–pretty-print, 284
–pubdate, 289
–publisher, 289
–rating, 289
–read-metadata-from-opf, -m, 289
–remove-first-image, 288
–remove-paragraph-spacing, 285
–remove-paragraph-spacing-indent-size, 286
–replace-scene-breaks, 287
–search-replace, 287
–series, 289
–series-index, 289
–smarten-punctuation, 286
–sr1-replace, 287
–sr1-search, 287
–sr2-replace, 287
–sr2-search, 287
–sr3-replace, 287
–sr3-search, 287
–start-reading-at, 288
–subset-embedded-fonts, 286
–tags, 289
–timestamp, 289
–title, 289
–title-sort, 289
–toc-filter, 288
–toc-threshold, 288
–toc-title, 284
–unsmarten-punctuation, 286
–use-auto-toc, 288
–verbose, -v, 290
–version, 283
ebook-edit komut satırı seçene˘gi
–detach, 290
–help, -h, 290
–version, 290
ebook-meta komut satırı seçene˘gi
–author-sort, 291
–authors, -a, 291
371
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
–book-producer, -k, 291
–category, 291
–comments, -c, 291
–cover, 291
–date, -d, 291
–from-opf, 291
–get-cover, 291
–help, -h, 291
–identifier, 291
–index, -i, 291
–isbn, 291
–language, -l, 291
–lrf-bookid, 291
–publisher, -p, 291
–rating, -r, 291
–series, -s, 291
–tags, 291
–title, -t, 292
–title-sort, 292
–to-opf, 292
–version, 292
ebook-polish komut satırı seçene˘gi
–cover, -c, 292
–embed-fonts, -e, 292
–help, -h, 292
–jacket, -j, 292
–opf, -o, 292
–remove-jacket, 292
–remove-unused-css, -u, 292
–smarten-punctuation, -p, 293
–subset-fonts, -f, 293
–verbose, 293
–version, 293
ebook-viewer komut satırı seçene˘gi
–debug-javascript, 293
–detach, 293
–full-screen, -f, 293
–help, -h, 293
–open-at, 293
–raise-window, 293
–version, 293
edit_file() (calibre.gui2.tweak_book.boss.Boss metodu),
354
eject() (calibre.devices.interface.DevicePlugin metodu),
242, 328
embed_metadata() (calibre.db.cache.Cache metodu), 341
encoding (calibre.web.feeds.news.BasicNewsRecipe niteli˘gi), 41, 141, 312
exists() (calibre.ebooks.oeb.polish.container.Container
metodu), 347
extra_css (calibre.web.feeds.news.BasicNewsRecipe niteli˘gi), 41, 141, 312
extract_readable_article()
(calibre.web.feeds.news.BasicNewsRecipe
372
metodu), 36, 136, 307
F
fast_field_for() (calibre.db.cache.Cache metodu), 341
feeds (calibre.web.feeds.news.BasicNewsRecipe niteli˘gi),
41, 141, 312
fetch-ebook-metadata komut satırı seçene˘gi
–authors, -a, 294
–cover, -c, 294
–help, -h, 294
–isbn, -i, 294
–opf, -o, 294
–timeout, -d, 294
–title, -t, 294
–verbose, -v, 294
–version, 294
field_for() (calibre.db.cache.Cache metodu), 341
field_ids_for() (calibre.db.cache.Cache metodu), 342
file_type (calibre.customize.conversion.OutputFormatPlugin
niteli˘gi), 238, 324
file_types (calibre.customize.CatalogPlugin niteli˘gi), 233,
319
file_types (calibre.customize.conversion.InputFormatPlugin
niteli˘gi), 237, 323
file_types (calibre.customize.FileTypePlugin niteli˘gi),
232, 318
file_types (calibre.customize.MetadataReaderPlugin niteli˘gi), 233, 319
file_types (calibre.customize.MetadataWriterPlugin niteli˘gi), 233, 319
filename_callback()
(calibre.devices.usbms.device.Device
metodu),
248, 334
filesize() (calibre.ebooks.oeb.polish.container.Container
metodu), 347
FileTypePlugin (calibre.customize içinde bir sınıf), 232,
318
filter_css() (calibre.ebooks.oeb.polish.css modülü içinde),
352
filter_regexps (calibre.web.feeds.news.BasicNewsRecipe
niteli˘gi), 41, 141, 312
find_identical_books() (calibre.db.cache.Cache metodu),
342
fix_all_html() (calibre.ebooks.oeb.polish.pretty modülü
içinde), 350
fix_html() (calibre.ebooks.oeb.polish.pretty modülü
içinde), 350
for_viewer (calibre.customize.conversion.InputFormatPlugin
niteli˘gi), 237, 323
format() (calibre.db.cache.Cache metodu), 342
format_abspath() (calibre.db.cache.Cache metodu), 342
format_field() (calibre.ebooks.metadata.book.base.Metadata
metodu), 177, 195
format_hash() (calibre.db.cache.Cache metodu), 342
Dizin
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
format_metadata() (calibre.db.cache.Cache metodu), 342
FORMATS (calibre.devices.interface.DevicePlugin niteli˘gi), 239, 325
formats() (calibre.db.cache.Cache metodu), 342
free_space() (calibre.devices.interface.DevicePlugin metodu), 242, 328
from_files()
(calibre.ebooks.oeb.polish.toc
modülü
içinde), 352
from_links() (calibre.ebooks.oeb.polish.toc modülü
içinde), 352
from_xpaths() (calibre.ebooks.oeb.polish.toc modülü
içinde), 352
242, 328
get_device_uid() (calibre.devices.interface.DevicePlugin
metodu), 244, 330
get_driveinfo() (calibre.devices.interface.DevicePlugin
metodu), 242, 328
get_feeds() (calibre.web.feeds.news.BasicNewsRecipe
metodu), 37, 137, 307
get_file() (calibre.devices.interface.DevicePlugin metodu), 244, 330
get_id_map() (calibre.db.cache.Cache metodu), 343
get_identifiers() (calibre.ebooks.metadata.book.base.Metadata
metodu), 176, 194
get_ids_for_custom_book_data()
(caG
libre.db.cache.Cache metodu), 343
get_images() (calibre.customize.conversion.InputFormatPlugin
generate_item() (calibre.ebooks.oeb.polish.container.Container
metodu), 237, 323
metodu), 347
genesis() (calibre.gui2.actions.InterfaceAction metodu), get_item_id() (calibre.db.cache.Cache metodu), 343
get_item_ids() (calibre.db.cache.Cache metodu), 343
250, 336
genesis() (calibre.gui2.preferences.ConfigWidgetInterface get_item_name() (calibre.db.cache.Cache metodu), 343
get_masthead_title()
(cametodu), 252, 338
libre.web.feeds.news.BasicNewsRecipe
get_all_standard_metadata()
(cametodu), 37, 137, 308
libre.ebooks.metadata.book.base.Metadata
get_masthead_url()
(cametodu), 176, 194
libre.web.feeds.news.BasicNewsRecipe
get_all_user_metadata()
(cametodu), 37, 137, 308
libre.ebooks.metadata.book.base.Metadata
get_metadata() (calibre.customize.MetadataReaderPlugin
metodu), 176, 194
metodu), 233, 319
get_annotations() (calibre.devices.usbms.device.Device
get_metadata() (calibre.db.cache.Cache metodu), 343
metodu), 248, 334
get_article_url() (calibre.web.feeds.news.BasicNewsRecipe get_next_series_num_for() (calibre.db.cache.Cache metodu), 343
metodu), 36, 136, 307
(caget_author_tokens()
(ca- get_obfuscated_article()
libre.web.feeds.news.BasicNewsRecipe
libre.ebooks.metadata.sources.base.Source
metodu), 37, 137, 308
metodu), 235, 321
get_option() (calibre.devices.interface.DevicePlugin meget_book_url() (calibre.ebooks.metadata.sources.base.Source
todu), 245, 331
metodu), 235, 321
get_book_url_name()
(ca- get_proxy_metadata() (calibre.db.cache.Cache metodu),
343
libre.ebooks.metadata.sources.base.Source
get_recommended_folders()
(cametodu), 235, 321
libre.ebooks.oeb.polish.replace modülü içinde),
get_book_urls() (calibre.ebooks.metadata.sources.base.Source
350
metodu), 235, 321
(caget_browser() (calibre.web.feeds.news.BasicNewsRecipe get_standard_metadata()
libre.ebooks.metadata.book.base.Metadata
metodu), 36, 136, 307
metodu), 176, 194
get_cached_cover_url()
(caget_title_tokens() (calibre.ebooks.metadata.sources.base.Source
libre.ebooks.metadata.sources.base.Source
metodu), 235, 321
metodu), 235, 321
get_usage_count_by_id()
(calibre.db.cache.Cache meget_categories() (calibre.db.cache.Cache metodu), 342
todu),
343
get_collections() (calibre.devices.interface.BookList meget_user_blacklisted_devices()
(catodu), 246, 332
libre.devices.interface.DevicePlugin
metodu),
get_cover_url() (calibre.web.feeds.news.BasicNewsRecipe
245, 331
metodu), 36, 136, 307
get_user_metadata()
(caget_custom_book_data() (calibre.db.cache.Cache melibre.ebooks.metadata.book.base.Metadata
todu), 343
metodu), 176, 194
get_device_information()
(calibre.devices.interface.DevicePlugin metodu),
Dizin
373
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
guess_type() (calibre.ebooks.oeb.polish.container.Container initialization_complete()
(cametodu), 347
libre.gui2.actions.InterfaceAction
metodu),
gui (calibre.gui2.tweak_book.plugin.Tool niteli˘gi), 353
251, 337
gui_category (calibre.customize.PreferencesPlugin nite- initialize() (calibre.customize.CatalogPlugin metodu),
li˘gi), 251, 337
234, 320
gui_configuration_widget()
(ca- initialize() (calibre.customize.Plugin metodu), 231, 317
libre.customize.conversion.InputFormatPlugin initialize() (calibre.gui2.preferences.ConfigWidgetInterface
metodu), 238, 324
metodu), 252, 338
gui_configuration_widget()
(ca- InputFormatPlugin (calibre.customize.conversion içinde
libre.customize.conversion.OutputFormatPlugin
bir sınıf), 237, 323
metodu), 239, 325
insert_into_xml() (calibre.ebooks.oeb.polish.container.Container
gui_layout_complete()
(cametodu), 347
libre.gui2.actions.InterfaceAction
metodu), InterfaceAction (calibre.gui2.actions içinde bir sınıf),
251, 337
248, 334
gui_name (calibre.customize.PreferencesPlugin niteli˘gi), InterfaceActionBase (calibre.customize içinde bir sınıf),
251, 337
251, 337
guide_type_map (calibre.ebooks.oeb.polish.container.Container
InternalMetadataCompareKeyGen
(caniteli˘gi), 347
libre.ebooks.metadata.sources.base
içinde
bir sınıf), 236, 322
H
is_configured() (calibre.ebooks.metadata.sources.base.Source
metodu), 235, 321
has_book() (calibre.db.cache.Cache metodu), 343
is_dynamically_controllable()
(cahas_format() (calibre.db.cache.Cache metodu), 343
libre.devices.interface.DevicePlugin metodu),
has_html_comments
(ca245, 331
libre.ebooks.metadata.sources.base.Source
is_image_collection
(caniteli˘gi), 234, 320
libre.customize.conversion.InputFormatPlugin
has_id() (calibre.db.cache.Cache metodu), 343
niteli˘gi), 237, 323
has_name() (calibre.ebooks.oeb.polish.container.Container
is_link_wanted() (calibre.web.feeds.news.BasicNewsRecipe
metodu), 347
metodu), 37, 137, 308
href_to_name() (calibre.ebooks.oeb.polish.container.Container
is_null() (calibre.ebooks.metadata.book.base.Metadata
metodu), 347
metodu), 176, 194
HTML, 355
is_running() (calibre.devices.interface.DevicePlugin metodu), 245, 331
I
(caicon (calibre.customize.PreferencesPlugin niteli˘gi), 251, is_usb_connected()
libre.devices.interface.DevicePlugin metodu),
337
241, 327
icon (calibre.devices.interface.DevicePlugin niteli˘gi),
iterlinks() (calibre.ebooks.oeb.polish.container.Container
240, 326
metodu), 347
identify() (calibre.ebooks.metadata.sources.base.Source
metodu), 235, 321
identify_results_keygen()
(ca- J
javascript_login() (calibre.web.feeds.news.BasicNewsRecipe
libre.ebooks.metadata.sources.base.Source
metodu), 37, 137, 308
metodu), 235, 321
ignore_connected_device()
(calibre.devices.interface.DevicePlugin metodu), K
244, 330
keep_only_tags (calibre.web.feeds.news.BasicNewsRecipe
ignore_duplicate_articles
(caniteli˘gi), 42, 142, 313
libre.web.feeds.news.BasicNewsRecipe
ni- komut satırı seçene˘gi
teli˘gi), 41, 141, 312
–dont-notify-gui, 271
image_url_processor()
(ca–library-path, 271
libre.web.feeds.news.BasicNewsRecipe sınıf
metodu), 37, 137, 308
L
index_to_soup() (calibre.web.feeds.news.BasicNewsRecipe language (calibre.web.feeds.news.BasicNewsRecipe nitemetodu), 37, 137, 308
li˘gi), 42, 142, 313
init() (calibre.db.cache.Cache metodu), 343
374
Dizin
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
library_changed() (calibre.gui2.actions.InterfaceAction
metodu), 251, 337
load_actual_plugin()
(calibre.customize.InterfaceActionBase metodu),
251, 337
load_fonts() (calibre.customize.ViewerPlugin metodu),
253, 339
load_javascript() (calibre.customize.ViewerPlugin metodu), 253, 339
load_resources() (calibre.customize.Plugin metodu), 231,
317
load_resources()
(calibre.gui2.actions.InterfaceAction
metodu), 250, 336
location_selected() (calibre.gui2.actions.InterfaceAction
metodu), 250, 336
LRF, 355
lrf2lrs komut satırı seçene˘gi
–dont-output-resources, 295
–help, -h, 295
–output, -o, 295
–verbose, 295
–version, 295
lrfviewer komut satırı seçene˘gi
–disable-hyphenation, 295
–help, -h, 295
–profile, 295
–verbose, 295
–version, 295
–visual-debug, 295
–white-background, 295
lrs2lrf komut satırı seçene˘gi
–help, -h, 296
–lrs, 296
–output, -o, 296
–verbose, 296
–version, 296
masthead_url (calibre.web.feeds.news.BasicNewsRecipe
niteli˘gi), 42, 142, 313
match_regexps (calibre.web.feeds.news.BasicNewsRecipe
niteli˘gi), 42, 142, 313
max_articles_per_feed
(calibre.web.feeds.news.BasicNewsRecipe
niteli˘gi), 42, 142, 313
MAX_PATH_LEN (calibre.devices.usbms.device.Device
niteli˘gi), 247, 333
merge() (calibre.ebooks.oeb.polish.split modülü içinde),
351
Metadata (calibre.ebooks.metadata.book.base içinde bir
sınıf), 175, 193
metadata_for_field()
(calibre.ebooks.metadata.book.base.Metadata
metodu), 176, 194
MetadataReaderPlugin (calibre.customize içinde bir sınıf), 233, 319
MetadataWriterPlugin (calibre.customize içinde bir sınıf),
233, 319
mi (calibre.ebooks.oeb.polish.container.Container niteli˘gi), 347
minimum_calibre_version (calibre.customize.Plugin niteli˘gi), 231, 317
multisort() (calibre.db.cache.Cache metodu), 343
multisplit() (calibre.ebooks.oeb.polish.split modülü
içinde), 351
N
name (calibre.customize.Plugin niteli˘gi), 230, 316
name (calibre.gui2.actions.InterfaceAction niteli˘gi), 249,
335
name (calibre.gui2.tweak_book.plugin.Tool niteli˘gi), 352
name(), 152
name_order (calibre.customize.PreferencesPlugin niteli˘gi), 251, 337
name_to_abspath()
(caM
libre.ebooks.oeb.polish.container.Container
MANAGES_DEVICE_PRESENCE
(cametodu), 348
libre.devices.interface.DevicePlugin niteli˘gi), name_to_href() (calibre.ebooks.oeb.polish.container.Container
240, 326
metodu), 348
manifest_has_name()
(ca- names_that_must_not_be_changed
(calibre.ebooks.oeb.polish.container.Container
libre.ebooks.oeb.polish.container.Container
metodu), 347
niteli˘gi), 348
manifest_id_map (calibre.ebooks.oeb.polish.container.Container
names_that_must_not_be_removed
(caniteli˘gi), 347
libre.ebooks.oeb.polish.container.Container
manifest_type_map
(caniteli˘gi), 348
libre.ebooks.oeb.polish.container.Container
names_that_need_not_be_manifested
(caniteli˘gi), 347
libre.ebooks.oeb.polish.container.Container
mark_as_cover() (calibre.ebooks.oeb.polish.cover moniteli˘gi), 348
dülü içinde), 351
needs_subscription
(camark_as_titlepage() (calibre.ebooks.oeb.polish.cover molibre.web.feeds.news.BasicNewsRecipe
nidülü içinde), 351
teli˘gi), 42, 142, 313
Dizin
375
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
NEWS_IN_FOLDER
(calibre.devices.usbms.device.Device
niteli˘gi),
247, 333
no_stylesheets (calibre.web.feeds.news.BasicNewsRecipe
niteli˘gi), 42, 142, 313
normalize_path() (calibre.devices.usbms.driver.USBMS
sınıf metodu), 248, 334
NUKE_COMMENTS
(calibre.devices.interface.DevicePlugin niteli˘gi),
240, 326
P
parse_feeds() (calibre.web.feeds.news.BasicNewsRecipe
metodu), 38, 138, 308
parse_index() (calibre.web.feeds.news.BasicNewsRecipe
metodu), 38, 138, 309
parsed() (calibre.ebooks.oeb.polish.container.Container
metodu), 348
path_sep (calibre.devices.interface.DevicePlugin niteli˘gi), 240, 326
Plugin (calibre.customize içinde bir sınıf), 230, 316
populate_article_metadata()
(caO
libre.web.feeds.news.BasicNewsRecipe
oldest_article (calibre.web.feeds.news.BasicNewsRecipe
metodu), 38, 138, 309
niteli˘gi), 42, 142, 313
popup_type (calibre.gui2.actions.InterfaceAction niteon_import (calibre.customize.FileTypePlugin niteli˘gi),
li˘gi), 249, 335
232, 318
post_yank_cleanup()
(caon_postimport (calibre.customize.FileTypePlugin nitelibre.devices.interface.DevicePlugin metodu),
li˘gi), 232, 318
242, 328
on_postprocess (calibre.customize.FileTypePlugin nite- postimport() (calibre.customize.FileTypePlugin metodu),
li˘gi), 232, 318
233, 318
on_preprocess (calibre.customize.FileTypePlugin nite- postprocess_book()
(cali˘gi), 232, 318
libre.customize.conversion.InputFormatPlugin
open() (calibre.devices.interface.DevicePlugin metodu),
metodu), 238, 324
241, 327
postprocess_book()
(caopen()
(calibre.ebooks.oeb.polish.container.Container
libre.web.feeds.news.BasicNewsRecipe
metodu), 348
metodu), 38, 138, 309
open_book() (calibre.gui2.tweak_book.boss.Boss me- postprocess_html()
(catodu), 354
libre.web.feeds.news.BasicNewsRecipe
OPEN_FEEDBACK_MESSAGE
(cametodu), 38, 138, 309
libre.devices.interface.DevicePlugin niteli˘gi), pref() (calibre.db.cache.Cache metodu), 344
240, 326
prefer_results_with_isbn
(caopf (calibre.ebooks.oeb.polish.container.Container nitelibre.ebooks.metadata.sources.base.Source
li˘gi), 348
niteli˘gi), 234, 320
opf_get_or_create()
(ca- PreferencesPlugin (calibre.customize içinde bir sınıf),
libre.ebooks.oeb.polish.container.Container
251, 337
metodu), 348
prepare_addable_books()
(caopf_version (calibre.ebooks.oeb.polish.container.Container
libre.devices.interface.DevicePlugin metodu),
niteli˘gi), 348
244, 330
opf_xpath() (calibre.ebooks.oeb.polish.container.Container preprocess_html() (calibre.web.feeds.news.BasicNewsRecipe
metodu), 348
metodu), 39, 139, 309
options (calibre.customize.conversion.InputFormatPlugin preprocess_raw_html()
(caniteli˘gi), 237, 323
libre.web.feeds.news.BasicNewsRecipe
options (calibre.customize.conversion.OutputFormatPlugin
metodu), 39, 139, 310
niteli˘gi), 238, 324
preprocess_regexps
(caoptions (calibre.ebooks.metadata.sources.base.Source nilibre.web.feeds.news.BasicNewsRecipe
niteli˘gi), 234, 320
teli˘gi), 42, 142, 313
OSX_MAIN_MEM_VOL_PAT
(ca- pretty_all() (calibre.ebooks.oeb.polish.pretty modülü
libre.devices.usbms.device.Device
niteli˘gi),
içinde), 350
247, 333
pretty_css() (calibre.ebooks.oeb.polish.pretty modülü
output_encoding (calibre.customize.conversion.InputFormatPlugin içinde), 350
niteli˘gi), 237, 323
pretty_html() (calibre.ebooks.oeb.polish.pretty modülü
OutputFormatPlugin
(calibre.customize.conversion
içinde), 350
içinde bir sınıf), 238, 324
pretty_xml() (calibre.ebooks.oeb.polish.pretty modülü
içinde), 350
376
Dizin
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
print_version() (calibre.web.feeds.news.BasicNewsRecipe remove_javascript (calibre.web.feeds.news.BasicNewsRecipe
sınıf metodu), 39, 139, 310
niteli˘gi), 43, 143, 314
priority (calibre.customize.Plugin niteli˘gi), 231, 316
remove_tags (calibre.web.feeds.news.BasicNewsRecipe
priority (calibre.gui2.actions.InterfaceAction niteli˘gi),
niteli˘gi), 43, 143, 314
249, 335
remove_tags_after (calibre.web.feeds.news.BasicNewsRecipe
PRODUCT_ID (calibre.devices.interface.DevicePlugin
niteli˘gi), 44, 144, 314
niteli˘gi), 239, 325
remove_tags_before
(capublication_type (calibre.web.feeds.news.BasicNewsRecipe
libre.web.feeds.news.BasicNewsRecipe
niniteli˘gi), 43, 143, 314
teli˘gi), 44, 144, 315
remove_unused_css() (calibre.ebooks.oeb.polish.css moR
dülü içinde), 351
raw_data() (calibre.ebooks.oeb.polish.container.Container rename() (calibre.ebooks.oeb.polish.container.Container
metodu), 349
metodu), 348
rename_files() (calibre.ebooks.oeb.polish.replace modülü
re:test(), 153
içinde), 350
read_backup() (calibre.db.cache.Cache metodu), 344
recipe_disabled (calibre.web.feeds.news.BasicNewsRecipe rename_items() (calibre.db.cache.Cache metodu), 344
replace() (calibre.ebooks.oeb.polish.container.Container
niteli˘gi), 43, 143, 314
recommendations (calibre.customize.conversion.InputFormatPlugin metodu), 349
replace_links() (calibre.ebooks.oeb.polish.container.Container
niteli˘gi), 237, 323
recommendations (calibre.customize.conversion.OutputFormatPlugin metodu), 349
replace_links() (calibre.ebooks.oeb.polish.replace moniteli˘gi), 238, 324
dülü içinde), 349
recursions (calibre.web.feeds.news.BasicNewsRecipe nirequires_version (calibre.web.feeds.news.BasicNewsRecipe
teli˘gi), 43, 143, 314
niteli˘gi), 44, 144, 315
refresh_gui() (calibre.gui2.preferences.ConfigWidgetInterface
reset() (calibre.devices.interface.DevicePlugin metodu),
metodu), 252, 338
241, 327
register()
(calibre.gui2.preferences.ConfigWidgetBase
restart_critical (calibre.gui2.preferences.ConfigWidgetInterface
metodu), 252, 338
niteli˘gi), 252, 338
register_shortcut() (calibre.gui2.tweak_book.plugin.Tool
restore_book() (calibre.db.cache.Cache metodu), 344
metodu), 353
relpath() (calibre.ebooks.oeb.polish.container.Container restore_defaults() (calibre.gui2.preferences.ConfigWidgetInterface
metodu), 252, 338
metodu), 348
(caremove_attributes (calibre.web.feeds.news.BasicNewsReciperestore_defaults_desc
libre.gui2.preferences.ConfigWidgetInterface
niteli˘gi), 43, 143, 314
niteli˘gi), 252, 338
remove_book() (calibre.devices.interface.BookList merestore_original_format() (calibre.db.cache.Cache metodu), 246, 332
todu), 344
remove_books() (calibre.db.cache.Cache metodu), 344
(caremove_books_from_metadata()
(ca- reverse_article_order
libre.web.feeds.news.BasicNewsRecipe
nilibre.devices.interface.DevicePlugin
sınıf
teli˘gi), 44, 144, 315
metodu), 243, 329
remove_empty_feeds
(ca- rewind_savepoint() (calibre.gui2.tweak_book.boss.Boss
metodu), 354
libre.web.feeds.news.BasicNewsRecipe
niRSS, 355
teli˘gi), 43, 143, 314
remove_formats() (calibre.db.cache.Cache metodu), 344 run() (calibre.customize.CatalogPlugin metodu), 234, 320
remove_from_spine()
(ca- run() (calibre.customize.FileTypePlugin metodu), 232,
318
libre.ebooks.oeb.polish.container.Container
run_javascript()
(calibre.customize.ViewerPlugin memetodu), 348
todu),
253,
339
remove_from_xml()
(calibre.ebooks.oeb.polish.container.Container
S
metodu), 349
safe_read_lock (calibre.db.cache.Cache niteli˘gi), 344
remove_item() (calibre.ebooks.oeb.polish.container.Container
sanitize_callback() (calibre.devices.usbms.device.Device
metodu), 349
metodu), 247, 333
remove_items() (calibre.db.cache.Cache metodu), 344
(caremove_jacket() (calibre.ebooks.oeb.polish.jacket mo- sanitize_path_components()
libre.devices.usbms.device.Device
metodu),
dülü içinde), 350
Dizin
377
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
248, 334
set_user_metadata()
(casave_book() (calibre.gui2.tweak_book.boss.Boss melibre.ebooks.metadata.book.base.Metadata
todu), 354
metodu), 177, 195
save_original_format() (calibre.db.cache.Cache metodu), settings() (calibre.devices.interface.DevicePlugin sınıf
344
metodu), 244, 330
save_settings() (calibre.customize.Plugin metodu), 231, show_current_diff() (calibre.gui2.tweak_book.boss.Boss
317
metodu), 355
save_settings() (calibre.devices.interface.DevicePlugin show_editor() (calibre.gui2.tweak_book.boss.Boss mesınıf metodu), 244, 330
todu), 355
scale_news_images
(ca- shutdown() (calibre.devices.interface.DevicePlugin melibre.web.feeds.news.BasicNewsRecipe
nitodu), 244, 330
teli˘gi), 44, 144, 315
shutting_down()
(calibre.gui2.actions.InterfaceAction
scale_news_images_to_device
(cametodu), 251, 337
libre.web.feeds.news.BasicNewsRecipe
ni- simultaneous_downloads
(cateli˘gi), 44, 144, 315
libre.web.feeds.news.BasicNewsRecipe
nisearch() (calibre.db.cache.Cache metodu), 344
teli˘gi), 44, 144, 315
serialize_item() (calibre.ebooks.oeb.polish.container.Container
skip_ad_pages() (calibre.web.feeds.news.BasicNewsRecipe
metodu), 349
metodu), 39, 139, 310
set_all_user_metadata()
(ca- SLOW_DRIVEINFO
(calibre.ebooks.metadata.book.base.Metadata
libre.devices.interface.DevicePlugin niteli˘gi),
metodu), 176, 194
240, 326
set_conversion_options() (calibre.db.cache.Cache me- smart_update() (calibre.ebooks.metadata.book.base.Metadata
todu), 345
metodu), 177, 195
set_cover() (calibre.db.cache.Cache metodu), 345
sort_index_by() (calibre.web.feeds.news.BasicNewsRecipe
set_cover() (calibre.ebooks.oeb.polish.cover modülü
metodu), 39, 139, 310
içinde), 351
Source (calibre.ebooks.metadata.sources.base içinde bir
set_driveinfo_name()
(casınıf), 234, 320
libre.devices.interface.DevicePlugin metodu), specialize() (calibre.customize.conversion.InputFormatPlugin
244, 330
metodu), 238, 324
set_field() (calibre.db.cache.Cache metodu), 345
specialize_css_for_output()
(caset_identifier() (calibre.ebooks.metadata.book.base.Metadata
libre.customize.conversion.OutputFormatPlugin
metodu), 176, 194
metodu), 239, 325
set_identifiers() (calibre.ebooks.metadata.book.base.Metadata
specialize_global_preferences()
(cametodu), 176, 194
libre.devices.interface.DevicePlugin metodu),
set_library_info() (calibre.devices.interface.DevicePlugin
245, 331
metodu), 245, 331
spine_items (calibre.ebooks.oeb.polish.container.Container
set_metadata() (calibre.customize.MetadataWriterPlugin
niteli˘gi), 349
metodu), 233, 319
spine_iter (calibre.ebooks.oeb.polish.container.Container
set_metadata() (calibre.db.cache.Cache metodu), 345
niteli˘gi), 349
set_modified() (calibre.gui2.tweak_book.boss.Boss me- spine_names (calibre.ebooks.oeb.polish.container.Container
todu), 354
niteli˘gi), 349
set_option() (calibre.devices.interface.DevicePlugin me- split() (calibre.ebooks.oeb.polish.split modülü içinde),
todu), 245, 331
350
set_plugboards() (calibre.devices.interface.DevicePlugin split_jobs() (calibre.ebooks.metadata.sources.base.Source
metodu), 244, 330
metodu), 235, 321
set_pref() (calibre.db.cache.Cache metodu), 345
standard_field_keys()
(caset_progress_reporter()
(calibre.ebooks.metadata.book.base.Metadata
libre.devices.interface.DevicePlugin metodu),
metodu), 176, 194
242, 328
STANDARD_METADATA_FIELDS
(caset_spine() (calibre.ebooks.oeb.polish.container.Container
libre.ebooks.metadata.book.base
modülü
metodu), 349
içinde), 177, 195
set_user_blacklisted_devices()
(ca- start_plugin()
(calibre.devices.interface.DevicePlugin
libre.devices.interface.DevicePlugin metodu),
metodu), 245, 331
245, 331
378
Dizin
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
startup()
(calibre.devices.interface.DevicePlugin me- Tool (calibre.gui2.tweak_book.plugin içinde bir sınıf),
todu), 244, 330
352
stop_plugin()
(calibre.devices.interface.DevicePlugin toolbar_button_popup_mode
(cametodu), 245, 331
libre.gui2.tweak_book.plugin.Tool
niteli˘gi),
summary_length (calibre.web.feeds.news.BasicNewsRecipe
353
niteli˘gi), 44, 144, 315
total_space() (calibre.devices.interface.DevicePlugin mesupported_platforms (calibre.customize.Plugin niteli˘gi),
todu), 242, 328
230, 316
touched_fields (calibre.ebooks.metadata.sources.base.Source
supports_collections()
(caniteli˘gi), 234, 320
libre.devices.interface.BookList
metodu), type (calibre.customize.Plugin niteli˘gi), 231, 317
246, 332
type (calibre.customize.ViewerPlugin niteli˘gi), 253, 339
supports_gzip_transfer_encoding
(caU
libre.ebooks.metadata.sources.base.Source
niteli˘gi), 234, 320
upload_books() (calibre.devices.interface.DevicePlugin
supports_restoring_to_defaults
(cametodu), 243, 329
libre.gui2.preferences.ConfigWidgetInterface
upload_cover()
(calibre.devices.usbms.driver.USBMS
niteli˘gi), 252, 338
metodu), 248, 334
sync_booklists() (calibre.devices.interface.DevicePlugin USBMS (calibre.devices.usbms.driver içinde bir sınıf),
metodu), 243, 329
248, 334
sync_preview_to_editor()
(ca- use_embedded_content
(calibre.gui2.tweak_book.boss.Boss
metodu),
libre.web.feeds.news.BasicNewsRecipe
ni355
teli˘gi), 44, 144, 315
synchronize_with_db()
(ca- use_javascript_to_login
(calibre.devices.interface.DevicePlugin metodu),
libre.web.feeds.news.BasicNewsRecipe
ni245, 331
teli˘gi), 45, 145, 315
user_categories_for_books() (calibre.db.cache.Cache meT
todu), 345
tag_to_string() (calibre.web.feeds.news.BasicNewsRecipe user_feedback_after_callback
(casınıf metodu), 39, 139, 310
libre.devices.interface.DevicePlugin niteli˘gi),
tags_older_than() (calibre.db.cache.Cache metodu), 345
240, 326
tarif, 355
UserAnnotation (calibre.devices.interface.DevicePlugin
template_css (calibre.web.feeds.news.BasicNewsRecipe
niteli˘gi), 240, 326
niteli˘gi), 44, 144, 315
template_to_attribute()
(ca- V
libre.ebooks.metadata.book.base.Metadata
VENDOR_ID (calibre.devices.interface.DevicePlugin nimetodu), 177, 195
teli˘gi), 239, 325
temporary_file() (calibre.customize.Plugin metodu), 232, version (calibre.customize.Plugin niteli˘gi), 230, 316
318
ViewerPlugin (calibre.customize içinde bir sınıf), 253,
test_fields() (calibre.ebooks.metadata.sources.base.Source
339
metodu), 235, 321
VIRTUAL_BOOK_EXTENSIONS
(caTHUMBNAIL_COMPRESSION_QUALITY
(calibre.devices.interface.DevicePlugin niteli˘gi),
libre.devices.interface.DevicePlugin niteli˘gi),
240, 326
239, 325
THUMBNAIL_HEIGHT
(ca- W
libre.devices.interface.DevicePlugin niteli˘gi), WANTS_UPDATED_THUMBNAILS
(ca239, 325
libre.devices.interface.DevicePlugin niteli˘gi),
timefmt (calibre.web.feeds.news.BasicNewsRecipe nite240, 326
li˘gi), 44, 144, 315
web2disk komut satırı seçene˘gi
timeout (calibre.web.feeds.news.BasicNewsRecipe nite–base-dir, -d, 296
li˘gi), 44, 144, 315
–delay, 296
title (calibre.web.feeds.news.BasicNewsRecipe niteli˘gi),
–dont-download-stylesheets, 296
44, 144, 315
–encoding, 296
to_html() (calibre.ebooks.metadata.book.base.Metadata
–filter-regexp, 296
metodu), 177, 195
–help, -h, 296
Dizin
379
calibre Kullanıcı Kılavuzu, Sürüm 2.24.0
–match-regexp, 297
–max-files, -n, 297
–max-recursions, -r, 297
–timeout, -t, 297
–verbose, 297
–version, 297
WINDOWS_CARD_A_MEM
libre.devices.usbms.device.Device
247, 333
WINDOWS_CARD_B_MEM
libre.devices.usbms.device.Device
247, 333
WINDOWS_MAIN_MEM
libre.devices.usbms.device.Device
247, 333
windows_sort_drives()
libre.devices.usbms.device.Device
247, 333
380
(caniteli˘gi),
(caniteli˘gi),
(caniteli˘gi),
(cametodu),
Dizin