Veri tabanı arayüzü için API belgelendirmesi¶
Bu API süreç güvenlidir (çoklu okuma, tekil yazmalı kitleme şeması kullanır). API’ye şu şekilde erişebilirsiniz:
from calibre.library import db
db = db('Path to calibre library folder').new_api
Eğer ana calibre GUI’sinin bir parçası olan bir calibre eklentisi içindeyseniz, erişimi şu şekilde sağlayabilirsiniz:
db = self.gui.current_db.new_api
- class calibre.db.cache.Cache(backend, library_database_instance=None)[kaynak]¶
Calibre kitaplığındaki bir metadata.db dosyasının bellekteki zulası. Bu sınıf ayrıca veri tabanına erişmek için süreç güvenli bir API olarak hizmet verir. Bellekteki zula en iyi performans için normal biçiminde devam ettirilir.
SQLITE metadata.db’den kararlı şekilde okuma yazma yapma yöntemi olarak kullanılır. Tüm tablo okuma/sıralama/arama/zulalama mantığı tekrar uygulanmıştır. Bu işlem en iyi performans ve esneklik için gerekliydi.
- class EventType(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)¶
- book_created = 4¶
When a new book record is created in the database, with the book id as the only argument
- book_edited = 8¶
When a book format is edited, with arguments: (book_id, fmt)
- books_removed = 5¶
When books are removed from the database with the list of book ids as the only argument
- format_added = 2¶
When a format is added to a book, with arguments: (book_id, format)
- formats_removed = 3¶
When formats are removed from a book, with arguments: (mapping of book id to set of formats removed from the book)
- indexing_progress_changed = 9¶
When the indexing progress changes
- items_removed = 7¶
When items such as tags or authors are removed from some books. Arguments: (field_name, affected book ids, ids of removed items)
- items_renamed = 6¶
When items such as tags or authors are renamed in some or all books. Arguments: (field_name, affected book ids, map of old item id to new item id)
- metadata_changed = 1¶
When some metadata is changed for some books, with arguments: (name of changed field, set of affected book ids)
- add_books(books, add_duplicates=True, apply_import_tags=True, preserve_uuid=False, run_hooks=True, dbapi=None)[kaynak]¶
Belirtilen kitapları kitaplığa ekle. Kitaplar, mi bir Metadata nesnesi ve format_map
{fmt: path_or_stream}
biçiminde bir sözlük nesnesi olmak üzere her biri(mi, format_map)
biçiminde olan 2-tuple’ın yinelenebiliri olmalıdır, örneğin:{'EPUB': '/path/to/file.epub'}
.Bir çift liste döndürür:
ids, duplicates
.ids
ver tabanında yeni oluşturulan tüm kitapların kitap id’lerini içerir.duplicates
veri tabanında zaten mevcut olan vehas_book()
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)[kaynak]¶
val_map book_ids’in değerlere haritası olmak üzere isimler için veri ekle. delete_first True ise, isim için daha önce kaydedilen tüm veri silinir.
- add_extra_files(book_id, map_of_relpath_to_stream_or_path, replace=True, auto_rename=False)[kaynak]¶
Add extra data files
- add_format(book_id, fmt, stream_or_path, replace=True, run_hooks=True, dbapi=None)[kaynak]¶
Belirtilen kitaba bir biçim ekle. Biçim başarıyla eklenmişse Doğru olarak döndür.
- Parametreler:
replace – True ise varolan biçimi değiştir, eğer biçim zaten mevcutsa, False döndür.
run_hooks – True ise, dosya türü eklentiler eklendikten önce ve sonra biçim üzerinde çalıştırılır.
dbapi – Sadece dahili kullanım için.
- add_listener(event_callback_function, check_already_added=False)[kaynak]¶
Register a callback function that will be called after certain actions are taken on this database. The function must take three arguments: (
EventType
, library_id, event_type_specific_data)
- all_field_for(field, book_ids, default_value=None)[kaynak]¶
field_for’un aynısı, farkı birden ço kitap üstünde tek seferde çalışması
- all_field_names(field)[kaynak]¶
Tüm alan isimlerinin dondurulmuş kümesi (sadece çoktan-bire ve çoktan-çoka alanlarda kullanılmalı)
- author_data(author_ids=None)[kaynak]¶
Yazar verisini isim, sıralama, bağlantı anahtarlarından oluşan sözlük olarak döndür
Belirtilen id’ye sahip yazar bulunamazsa boş bör sözlük döndürülür. author_id None ise, tüm authorların verisi döndürülür.
- author_sort_from_authors(authors, key_func=<function make_change_case_func.<locals>.change_case>)[kaynak]¶
Verilen bir yazar listesinden hesaplanan karakter dizisi üstündeki yazarla bağlantılı yazarı tercih ederek yazarlar için author_sort karakter dizisini döndür.
- books_for_field(name, item_id)[kaynak]¶
Öğe
name
alanına ait olmak üzere,item_id
ile tanımlı öğe ile bağlantılı tüm kitapları döndür.Döndürülen değer kitap id’leri kümesi, veya öğe veya alan mevcut değilse boş bir kümedir.
- books_in_virtual_library(vl, search_restriction=None, virtual_fields=None)[kaynak]¶
Belirlenen sanal kitaplıktaki kitap setini döndürür
- compress_covers(book_ids, jpeg_quality=100, progress_callback=None)[kaynak]¶
Compress the cover images for the specified books. A compression quality of 100 will perform lossless compression, otherwise lossy compression.
The progress callback will be called with the book_id and the old and new sizes for each book that has been processed. If an error occurs, the new size will be a string with the error details.
- copy_cover_to(book_id, dest, use_hardlink=False, report_file_size=None)[kaynak]¶
Kapağı dosya benzeri nesne ``dest``e kopyala. Kapak mevcut değilse veya dest mevcut kapakla aynı dosya ise False döndürür. dest, yalnızca yol mevcut yoldan farklı ise kapağın içine kopyalandığı bir yol olabilir (büyük küçük harf duyarlılığı da dikkate alınarak).
- copy_format_to(book_id, fmt, dest, use_hardlink=False, report_file_size=None)[kaynak]¶
Copy the format
fmt
to the file like objectdest
. If the specified format does not exist, raisesNoSuchFormat
error. dest can also be a path (to a file), in which case the format is copied to it, iff the path is different from the current path (taking case sensitivity into account).
- cover(book_id, as_file=False, as_image=False, as_path=False, as_pixmap=False)[kaynak]¶
Kapak resmini veya None döndür. Varsayılan olarak kapağı bytestring olarak döndürür.
UYARI: as_path kullanmak kapağı geçici bir dosyaya kopyalar ve geçici dosyanın yolunu döndürür. İşiniz bittiğinde geçici dosyayı silmelisiniz.
- Parametreler:
as_file – True ise resmi bir açık dosya nesnesi (SpooledTemporaryFile) olarak döndür
as_image – True ise resmi bir QImage nesnesi oalrak döndür
as_pixmap – If True return the image as a QPixmap object
as_path – True ise resmi geçici bir dosyaya işaret eden yol olarak döndür
- data_for_find_identical_books()[kaynak]¶
db’ye erişimi olmayan bir işçi süreçte
find_identical_books()
uygulamak için kullanılabilecek veriyi döndür.
- data_for_has_book()[kaynak]¶
has_book()
içinde kullanmaya müsait veri döndür. Bu işlem db’ye erişimi olmayan bir işçi süreçtehas_book()
uygulamak için kullanılabilir.
- delete_custom_book_data(name, book_ids=())[kaynak]¶
İsim için veriyi sil. Varsayılan olarak tüm veri silinir, yalnızca bazı kitap id’leri için veriyi silmek istiyorsanız, kitap id listesi verin.
- delete_trash_entry(book_id, category)[kaynak]¶
Delete an entry from the trash. Here category is ‘b’ for books and ‘f’ for formats.
- embed_metadata(book_ids, only_fmts=None, report_error=None, report_progress=None)[kaynak]¶
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)[kaynak]¶
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)[kaynak]¶
book_id
ile belirtilen kitap içinname
alanının değerini döndür. Böyle bir kitap mevcut değilse veyaname
alanı için belirtilmiş bir değer yoksa veya böyle bir alan yoksadefault_value
döndürülür.default_value
title, title_sort, authors, author_sort ve series_index için kullanılmaz. Bunun sebebi bunları hep db’de değerleri olmasıdır. ``default_value``tüm özel sütunlar için kullanılır.The returned value for is_multiple fields are always tuples, even when no values are found (in other words, default_value is ignored). The exception is identifiers for which the returned value is always a dictionary. The returned tuples are always in link order, that is, the order in which they were created.
- field_ids_for(name, book_id)[kaynak]¶
name
alanınınbook_id
ile tanımlanan kitaptaki değerleri için id’leri (demet olarak) döndür. Bir değer yoksa, ya da böyle bir kitap yoksa, veya böyle bir alan yoksa, boş bir demet döndürülür.
- find_identical_books(mi, search_restriction='', book_ids=None)[kaynak]¶
Mi’deki yazarların üst setine sahip ve aynı başlıklı (başlıklarda bulanık eşleşme kullanılır) kitapları bulur. Ayrıca
data_for_find_identical_books()
göz atın.
- format(book_id, fmt, as_file=False, as_path=False, preserve_filename=False)[kaynak]¶
E-kitap biçimini bytestring olarak ya da biçim mevcut değilse, veya e-kitap dosyasına yazmaya yetkimiz yoksa None olarak döndür.
- Parametreler:
as_file – True ise e-kitap biçimi dosya nesnesi olarak döndürülür. Dosya nesnesinin SpooledTemporaryFile olduğunu not edin, yani biçimi başka bir dosyaya kopyalamak istiyorsanız performans için bunun yerine
copy_format_to()
kullanın.as_path – Biçim dosyasını geçici bir dosyaya kopyalar ve geçici dosyanın yolunu döndürür
preserve_filename – True ise ve bir yol döndürüyorsa, dosya adı kitaplıkta kullanılanla aynıdır. Bunun kullanımının tekrar kullanımlarda aynı geçici dosyayı döndüreceğini not edin (her seferinde tekrar oluşturulan)
- format_abspath(book_id, fmt)[kaynak]¶
format biçimindeki e-kitap için mutlak yolu döndür. API’nin iş ipi güvenliğini kırdığından bunu hemen hemen hiç kullanmamalısınız. Bunun yerine
copy_format_to()
kullanın.Currently used only in calibredb list, the viewer, edit book, compare_format to original format, open with, bulk metadata edit and the catalogs (via get_data_as_dict()).
Görüntüleyici, birlikte aç ve kitap düzenleden ayrı olarak, diğerlerinin bu çağrı sonucu herhangi bir dosya yazma G/Ç yaptıklarını sanmıyorum.
- format_hash(book_id, fmt)[kaynak]¶
Belirtilen kitap için belirtilen biçimin özetini döndür. Özet türü arka uca bağlıdır, ama genellikle SHA-256’dır.
- format_metadata(book_id, fmt, allow_cache=True, update_db=False)[kaynak]¶
Belirtilen kitap için belirtilen biçimin yolunu, boyutunu ve değiştirilme zamanını döndürür. İlla kullanmanız gerekmiyorsa yolu kullanmamalısınız, çünkü yola erişmek bu API’nin iş ipi güvenliğini bozar. Bunun yerine
copy_format_to()
metodunu kullanın.- Parametreler:
allow_cache –
True
ise zuladaki değerler kullanılır, aksi halde yavaş bir dosya sistemine erişim gerçekleşir. Zula değerleri bu API dışından dosya sistemine erişildiyse eski olabilir.update_db –
True
ise veri tabanındaki max_size alanı bu kitap için güncellenmiştir.
- formats(book_id, verify_formats=True)[kaynak]¶
Belirtilen kitap için tüm biçimlerin demetini getir. verify_formats True ise, dosyanın diskte var olduğunu da doğrular.
- get_all_link_maps_for_book(book_id)[kaynak]¶
Returns all links for all fields referenced by book identified by book_id. If book_id doesn’t exist then the method returns {}.
Example: Assume author A has link X, author B has link Y, tag S has link F, and tag T has link G. If book 1 has author A and tag T, this method returns {‘authors’:{‘A’:’X’}, ‘tags’:{‘T’, ‘G’}}. If book 2’s author is neither A nor B and has no tags, this method returns {}.
- Parametreler:
book_id – the book id in question.
- Dönüşler:
{field: {field_value, link_value}, … for all fields with a field_value having a non-empty link value for that book
- get_categories(sort='name', book_ids=None, already_fixed=None, first_letter_sort=False)[kaynak]¶
Etiket Tarayıcıyı uygulamak için dahili olarak kullanılır
- get_custom_book_data(name, book_ids=(), default=None)[kaynak]¶
İsim için veri alır. Varsayılan olarak tüm book_id’leri için veriyi döndürür, sadece bazı veriler lazımsa kitap id’si listesi verin. book_id’den değere harita döndürür. Belli bir değerin kodu çözülemezse, varsayılan değerini kullanır.
- get_id_map(field)[kaynak]¶
Belirtilen alan için id numaralarından değerlere harita döndür. Alan bir çoktan teke veya çoktan çoka alan olmalıdır, aksi durumda ValueError yükseltilir.
- get_item_id(field, item_name)[kaynak]¶
Return the item id for item_name (case-insensitive) or None if not found
- get_item_ids(field, item_names)[kaynak]¶
item_name için öğe id’sini döndür (büyük küçük harf duyarsız)
- get_item_name(field, item_id)[kaynak]¶
Belirtilen alanda item_id ile belirtilen öğe için öğe ismini döndür. Ayrıca bknz
get_id_map()
.
- get_link_map(for_field)[kaynak]¶
Return a dictionary of links for the supplied field.
- Parametreler:
for_field – the lookup name of the field for which the link map is desired
- Dönüşler:
{field_value:link_value, …} for non-empty links
- get_metadata(book_id, get_cover=False, get_user_categories=True, cover_as_data=False)[kaynak]¶
kitap_id ile belirtilen üstveriyi :sınıf:`calibre.ekitaplar.üstveri.kitap.temel.Üstveri` nesnesi olarak döndür. Biçim listesinin doğrulanmadığını dikkate alın. Eğer kapak_al Doğru ise, kapak, ya mi.kapak olarak geçici dosyaya yol olarak ya da eğer kapak_veri_olarak Doğru ise o zaman mi.kapak_veri olarak döndürülür.
- get_next_series_num_for(series, field='series', current_indices=False)[kaynak]¶
Sıradaki seri numara üretecini kontrol eden çeşitli tercihleri hesaba katarak belirtilen seriler için sıradaki seri indisini döndür,.
- Parametreler:
field – Seriler benzeri alan (yerleşik seriler sütunu varsayılır)
current_indices – True ise, book_id’den mevcut series_index değerine harita döndürür.
- get_proxy_metadata(book_id)[kaynak]¶
Veri tabanından değerleri yalnızca istek üstüne okuyan bir ProxyMetadata nesnesi döndürmesi dışında
get_metadata()
gibidir. get_metadata’dan döndürülen metadata nesnesinden az sayıda alana erişilmesi gerektiğinde oldukça hızlıdır.
- get_usage_count_by_id(field)[kaynak]¶
Çoktan teke veya çoktan çoka alan olmak üzere belirtilen alanın tüm değerleri için id’den kullanım sayısına harita döndür.
- has_book(mi)[kaynak]¶
Veritabanı verilen Metadata nesnesiyle aynı başlığa sahip bir girdi içeriyorsa True döndürür. Karşılaştırma büyük küçük harf duyarsızdır. Ayrıca bknz
data_for_has_book()
.
- list_extra_files(book_id, use_cache=False, pattern='') Tuple[ExtraFile, ...] [kaynak]¶
Get information about extra files in the book’s directory.
- Parametreler:
book_id – the database book id for the book
pattern – the pattern of filenames to search for. Empty pattern matches all extra files. Patterns must use / as separator. Use the DATA_FILE_PATTERN constant to match files inside the data directory.
- Dönüşler:
A tuple of all extra files matching the specified pattern. Each element of the tuple is ExtraFile(relpath, file_path, stat_result). Where relpath is the relative path of the file to the book directory using / as a separator. stat_result is the result of calling os.stat() on the file.
- merge_extra_files(dest_id, src_ids, replace=False)[kaynak]¶
Merge the extra files from src_ids into dest_id. Conflicting files are auto-renamed unless replace=True in which case they are replaced.
- multisort(fields, ids_to_sort=None, virtual_fields=None)[kaynak]¶
Sıralanmış kitap id’leri listesi döndür. ids_to_sort None ise, tüm kitap id’leri döndürülür.
Alanlar (field_name, ascending=True veya False) biçiminde 2’li demet listesi olmalıdır. En önemli alan ilk ikili demettir.
- pref(name, default=None, namespace=None)[kaynak]¶
Belirtilen özellik için değeri ya da tercih belirtilmemişse
default
olarak belirtilen değeri döndür.
- read_backup(book_id)[kaynak]¶
Kitap için OPF metadata yedeğini bytestring olarak veya böyle bir backup yoksa None olarak döndür.
- remove_books(book_ids, permanent=False)[kaynak]¶
Remove the books specified by the book_ids from the database and delete their format files. If
permanent
is False, then the format files are placed in the per-library trash directory.
- remove_formats(formats_map, db_only=False)[kaynak]¶
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.
- Dönüşler:
A map of book id to set of formats actually deleted from the filesystem for that book
- remove_items(field, item_ids, restrict_to_book_ids=None)[kaynak]¶
Belirtilen alandaki belirtilen kimliğe sahip tüm öğeleri sil. Etkilenen kitap kimlikleri kümesini döndürür.
restrict_to_book_ids
isteğe bağlı kitap kimlikleri listesidir. Eğer belirtilirse öğeler yalnızca bu kitaplardan çıkartılır.
- rename_items(field, item_id_to_new_name_map, change_index=True, restrict_to_book_ids=None)[kaynak]¶
Etiketler veya seriler gibi çoktan teke veya çoktan çoka alanlarından öğeleri yeniden adlandır.
- Parametreler:
change_index – Seri benzeri bir alanı yeniden adlandırırken series_index değerlerini de değiştir.
restrict_to_book_ids – Yeniden adlandırmanın yapılacağı isteğe bağlı kitap kimlikleri kümesi, varsayılan olarak tüm kitaplar.
- restore_book(book_id, mi, last_modified, path, formats, annotations=())[kaynak]¶
Dosya sisteminde mevcut olan bir kitabın veri tabanındaki girdisini geri yükle
- restore_original_format(book_id, original_fmt)[kaynak]¶
Eğer varsa, belirtilen biçimi önceden kaydedilmiş ORIGINAL_FORMAT ile geri yükle. Başarılı olma durumunda True döndür. ORIGINAL_FORMAT başarılı geri yüklemenin ardından silinir.
- property safe_read_lock¶
Güvenli okuma kilidi iş parçacığı zaten bir yazma kilidine sahipse hiçbir şey yapmayan, aksi durumda okuma kilidi edinen kilittir. Arama zulasını bileşik sütunlar önünde güncellerken oluşabilecek DowngradeLockErrors hatalarını önlemek için bu gereklidir. Arama zulasını güncellemek ayrıcalıklı bir kilit tutar, ama bileşik sütun araması paylaşılan bir kilit almaya çalışan ProxyMetadata kullanarak alan değerlerinin okunmasını içerir. Bu durumu tetikleyen başka senaryolar da olabilir.
Bu özellik her erişimde yeni bir kilit nesnesi döndürür. Bu kilit nesnesi yinelemeli değildir (performans için) ve yalnızca
with cache.safe_read_lock:
gibi bir with ifadesiyle kullanılmalıdır, aksi durumda kötü şeyler olacaktır.
- save_original_format(book_id, fmt)[kaynak]¶
Mevcut herhangi ORIGINAL_FORMAT’ın üstüne yazarak belirtilen biçimin kopyasını ORIGINAL_FORMAT olarak keydet.
- search(query, restriction='', virtual_fields=None, book_ids=None)[kaynak]¶
Veri tabanını belirtilen sorgu için ara, eşleşen kitap id’lerini döndür.
- Parametreler:
restriction – Belirtilen sorguya AND yapılan bir kısıtlama. Kısıtlamaların zulalandığını, yani bir a AND b aramasının bir kıstılı b’li a aramasından yavaş olacağını unutmayın.
virtual_fields – Dahili kullanım (aranacak on_device gibi sanal alanlar).
book_ids – None değilse, tüm kitaplar yerine verilen kitapların aranacağı bir kitap id kümesi.
- set_conversion_options(options, fmt='PIPE')[kaynak]¶
seçenekler {book_id:conversion_options} haritası şeklinde olmalıdır
- set_cover(book_id_data_map)[kaynak]¶
Set the cover for this book. The data can be either a QImage, QPixmap, file object or bytestring. It can also be None, in which case any existing cover is removed.
- set_field(name, book_id_to_val_map, allow_case_change=True, do_path_update=True)[kaynak]¶
name
ile belirtilen alanın değerlerini ayarla. Değişiklikten etkilenen tüm kitap id’lerinin kümesini döndürür.- Parametreler:
book_id_to_val_map – book_id’lerin uygulanacak değerlere haritası.
allow_case_change – True ise, çoktan-bire ve çoktan-çoka alanların büyük küçük harfleri değiştirilir. Örneğin bir kitabın
tag1
etiketi varsa, ve başka bir kitap için etiketiTag1
olarak ayarladıysanız allow_case_change True ise her iki kitap daTag1
etiketine sahip olur, aksi durumda ikisi detag1
etiketine s ahip olacaktır.do_path_update – Dahili kullanım içindir, değiştirmemelisiniz.
- set_link_map(field, value_to_link_map, only_set_if_no_existing_link=False)[kaynak]¶
Sets links for item values in field. Note: this method doesn’t change values not in the value_to_link_map
- Parametreler:
field – the lookup name
value_to_link_map – dict(field_value:link, …). Note that these are values, not field ids.
- Dönüşler:
books changed by setting the link
- set_metadata(book_id, mi, ignore_errors=False, force_changes=False, set_title=True, set_authors=True, allow_case_change=False)[kaynak]¶
Metadata nesnesi `mi`den kitap `id`si için metadata ayarla
force_changes=True ayarı mi boş değerler içerse de set_metadata’nın alanları güncellemesine yol açar. Bu durumda ‘None’ ‘boş’dan ayrılmış olur. mi.XXX None ise, XXX yer değiştirilmez, aksi durumda değiştirilir. Etiketler, tanımlayıcılar, ve kapak öznitelikleri özel durumlardır. Etiketler ve tanımlayıcılar None olamayacağından force_changes true ise her zaman yer değiştirilirler. Mi’nin kitapta olmasını istediğiniz değerleri içerdiğinden emin olmalısınız. Kapaklar yeni bir kapak sağlanmışsa hep değiştirilir, ama asla silinmezler. force_changes’in başlık veya yazar ayarlarında etkisi olmadığını da unutmayın.
- set_pref(name, val, namespace=None)[kaynak]¶
Belirtilen değere belirtilen seçeneği ayarla. Ayrıca bknz
pref()
.
- split_if_is_multiple_composite(f, val)[kaynak]¶
If f is a composite column lookup key and the column is is_multiple then split v into unique non-empty values. The comparison is case sensitive. Order is not preserved. Return a list() for compatibility with proxy metadata field getters, for example tags.
- tags_older_than(tag, delta=None, must_have_tag=None, must_have_authors=None)[kaynak]¶
Belirtilen zamandan eski
tag
etiketine sahip tüm kitapların id’lerini döndür. etiket karşılaştırma büyük küçük harf duyarsızdır.- Parametreler:
delta – Bir timedelta nesnesi veya None. None ise, etiketli tüm id’ler döndürülür.
must_have_tag – None değilse eşleşme listesi bu etikete sahip kitaplarla kısıtlanır
must_have_authors – Yazarlar listesi. None değilse, eşleşme listesi bu yazarlara sahip kitaplarla kısıtlanacaktır (büyük küçük harf duyarlı).
- user_categories_for_books(book_ids, proxy_metadata_map=None)[kaynak]¶
Belirtilen kitaplar için kullanıcı kategorilerini döndür. proxy_metadata_map kitapların bir ProxyMetadata nesnesine sahip olduğu durumlarda performans artırmak amaçlı kullanılabilir ve tercihe bağlıdır. book_id’lerinin ilgili ProxyMetadata nesnesine haritası olmalıdırlar.