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.

Arithmetic

add(x, y)

class calibre.utils.formatter_functions.BuiltinAdd[πηγή]

add(x, y) – επιστρέφει x + y. Πετάει εξαίρεση αν το x ή το y δεν είναι αριθμοί.

ceiling(x)

class calibre.utils.formatter_functions.BuiltinCeiling[πηγή]

ceiling(x) – επιστρέφει τον μικρότερο ακέραιο που είναι μεγαλύτερος ή ίσος του x. Δίνει εξαίρεση αν ο x δεν είναι αριθμός.

divide(x, y)

class calibre.utils.formatter_functions.BuiltinDivide[πηγή]

divide(x, y) – επιστρέφει x / y. Πετάει εξαίρεση αν το x ή το y δεν είναι αριθμοί.

floor(x)

class calibre.utils.formatter_functions.BuiltinFloor[πηγή]

floor(x) – επιστρέφει τον μεγαλύτερο ακέραιο που είναι μικρότερος ή ίσος του x. Δίνει εξαίρεση αν ο x δεν είναι αριθμός.

fractional_part(x)

class calibre.utils.formatter_functions.BuiltinFractionalPart[πηγή]

fractional_part(x) – επιστρέφει την τιμή μετά την υποδιαστολή. Για παράδειγμα, η fractional_part(3.14) επιστρέφει 0.14. Δίνει εξαίρεση αν το όρισμα x δεν είναι αριθμός.

mod(x)

class calibre.utils.formatter_functions.BuiltinMod[πηγή]

mod(x) – επιστρέφει το υπόλοιπο της διαίρεσης x / y, με x, y, καθώς και το αποτέλεσμα να είναι ακέραιοι. Δίνει εξαίρεση αν κάποιο από τα x ή y δεν είναι αριθμός.

multiply(x, y)

class calibre.utils.formatter_functions.BuiltinMultiply[πηγή]

multiply(x, y) – επιστρέφει x * y. Πετάει εξαίρεση αν το x ή το y δεν είναι αριθμοί.

round(x)

class calibre.utils.formatter_functions.BuiltinRound[πηγή]

round(x) – επιστρέφει τον κοντινότερο ακέραιο στον x. Δίνει εξαίρεση αν το x δεν είναι αριθμός.

subtract(x, y)

class calibre.utils.formatter_functions.BuiltinSubtract[πηγή]

subtract(x, y) – επιστρέφει x - y. Πετάει εξαίρεση αν το x ή το y δεν είναι αριθμοί.

Boolean

and(value, value, …)

class calibre.utils.formatter_functions.BuiltinAnd[πηγή]

and(value, value, …) – επιστρέφει τη συμβολοσειρά «1» αν όλες οι τιμές είναι μη κενές, αλλιώς επιστρέφει κενή συμβολοσειρά. Η συνάρτηση αυτή συνεργάζεται καλά με τις test ή first_non_empty. Μπορείτε να έχετε όσες τιμές ορισμάτων θέλετε.

not(value)

class calibre.utils.formatter_functions.BuiltinNot[πηγή]

not(value) – επιστρέφει τη συμβολοσειρά «1» αν το όρισμα value είναι κενό, διαφορετικά επιστρέφει την κενή συμβολοσειρά. Η συνάρτηση αυτή συνεργάζεται καλά με τη συνάρτηση test ή τη συνάρτηση first_non_empty.

or(value, value, …)

class calibre.utils.formatter_functions.BuiltinOr[πηγή]

or(value, value, …) – επιστρέφει τη συμβολοσειρά «1» αν κάποια τιμή είναι μη κενή, αλλιώς επιστρέφει κενή συμβολοσειρά. Η συνάρτηση αυτή συνεργάζεται καλά με τις συναρτήσεις test ή first_non_empty. Μπορείτε να έχετε όσες τιμές ορισμάτων θέλετε.

Date functions

days_between(date1, date2)

class calibre.utils.formatter_functions.BuiltinDaysBetween[πηγή]

days_between(date1, date2) – επιστρέφει τον αριθμό των ημερών μεταξύ των ημερομηνιών date1 και date2. Ο αριθμός είναι θετικός αν η date1 έπεται της date2, διαφορετικά είναι αρνητικός. Αν είτε η date1, είτε η date2, δεν είναι ημερομηνίες, η συνάρτηση επιστρέφει την κενή συμβολοσειρά.

today()

class calibre.utils.formatter_functions.BuiltinToday[πηγή]

today() – επιστρέφει μια συμβολοσειρά μέρας για την τρέχουσα μέρα. Η τιμή αυτή είναι σχεδιασμένη για χρήση στις format_date και days_between, αλλά μπορεί να μετασχηματιστεί όπως κάθε άλλη συμβολοσειρά. Η ημερομηνία είναι σε μορφή ISO.

Formatting values

finish_formatting(val, fmt, prefix, suffix)

class calibre.utils.formatter_functions.BuiltinFinishFormatting[πηγή]

finish_formatting(val, fmt, prefix, suffix) – εφαρμόζει τη μορφοποίηση, το πρόθεμα και το επίθεμα σε μια τιμή με τον ίδιο ακριβώς τρόπο που εφαρμόζεται σε ένα πρότυπο όπως το {series_index:05.2f| - |- }. Για παράδειγμα, το ακόλουθο πρόγραμμα παράγει το ίδιο αποτέλεσμα με το παραπάνω πρότυπο: 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_string, και επιστρέφοντας τελικά μια συμβολοσειρά. Οι κωδικοί μορφοποίησης είναι:

d : η μέρα ως αριθμός, χωρίς αρχικό 0 (1 ως 31) dd : η μέρα ως αριθμός με αρχικό 0 (01 ως 31) ddd : η συντομογραφία της τοπικής ονομασίας της μέρας (π.χ. «Mon» ως «Sun»). dddd : η πλήρης τοπική ονομασία της μέρας (π.χ. «Monday» ως «Sunday»). M : ο μήνας ως αριθμός χωρίς αρχικό 0 (1 ως 12). MM : ο μήνας ως αριθμός με αρχικό 0 (01 ως 12) MMM : η συντομογραφία της τοπικής ονομασίας του μήνα (π.χ. «Jan» ως «Dec»). MMMM : η πλήρης τοπική ονομασία του μήνα (π.χ. «January» ως «December»). yy : το έτος ως διψήφιος αριθμός (00 ως 99). yyyy : το έτος ως τετραψήφιος αριθμός. h : οι ώρες χωρίς αρχικό 0 (0 ως 11 ή 0 ως 23, ανάλογα με τη ρύθμιση am/pm) hh : οι ώρες με αρχικό 0 (00 ως 11 ή 00 ως 23, ανάλογα με τη ρύθμιση am/pm) m : τα λεπτά χωρίς αρχικό 0 (0 ως 59) mm : τα λεπτά με αρχικό 0 (00 ως 59) s : τα δευτερόλεπτα χωρίς αρχικό 0 (0 ως 59) ss : τα δευτερόλεπτα με αρχικό 0 (00 ως 59) ap : χρήση ρολογιού με 12 ώρες αντί για 24, όπου το «ap» αναπαριστά την τοπική συμβολοσειρά am ή pm AP : χρήση ρολογιού με 12 ώρες αντί για 24, όπου το «AP» αναπαριστά την τοπική συμβολοσειρά AM ή PM iso : η ημερομηνία με χρόνο και ζώνη ώρας. Δεν μπορεί να χρησιμοποιηθεί μαζί με άλλη μορφοποίηση

format_number(v, template)

class calibre.utils.formatter_functions.BuiltinFormatNumber[πηγή]

format_number(v, template) – μορφοποιεί τον αριθμό v χρησιμοποιώντας ένα πρότυπο μορφοποίησης της Python όπως το «{0:5.2f}» ή το «{0:,d}» ή το «${0:5,.2f}». Το τμήμα field_name του προτύπου πρέπει να είναι 0 (μηδέν) (το «{0:» που παρατίθεται στα παραπάνω παραδείγματα). Δείτε τη γλώσσα προτύπων και την τεκμηρίωση της Python για περισσότερα παραδείγματα. Μπορείτε να παραλείψετε το αρχικό «{0:» και το τελικό «}» αν το πρότυπο περιέχει μόνο τη μορφοποίηση. Επιστρέφει κενή συμβολοσειρά αν η μορφοποίηση αποτύχει.

human_readable(v)

class calibre.utils.formatter_functions.BuiltinHumanReadable[πηγή]

human_readable(v) – επιστρέφει μια συμβολοσειρά που αναπαριστάνει τον αριθμό v σε KB, MB, GB, κτλ.

rating_to_stars(value, use_half_stars)

class calibre.utils.formatter_functions.BuiltinRatingToStars[πηγή]

rating_to_stars(value, use_half_stars) – Returns the rating as string of star characters. The value is a number between 0 and 5. Set use_half_stars to 1 if you want half star characters for custom ratings columns that support non-integer ratings, for example 2.5.

Get values from metadata

annotation_count()

class calibre.utils.formatter_functions.BuiltinAnnotationCount[πηγή]

annotation_count() – return the total number of annotations of all types attached to the current book. This function works only in the GUI.

approximate_formats()

class calibre.utils.formatter_functions.BuiltinApproximateFormats[πηγή]

approximate_formats() – επιστρέφει μία διαχωριζόμενη από κόμματα λίστα μορφών, που σε κάποια χρονική στιγμή ήταν συσχετισμένα με το βιβλίο. Δεν δίνεται καμιά εγγύηση ότι η λίστα αυτή είναι σωστή, αν και πιθανότατα είναι. Η συνάρτηση αυτή δύναται να κληθεί σε κατάσταση προγράμματος προτύπου με χρήση του πρότυπου «{:”approximate_formats()”}». Σημειώστε πως τα ονόματα μορφών είναι πάντα σε κεφαλαίους χαρακτήρες, όπως π.χ. στο EPUB. Η συνάρτηση αυτή λειτουργεί μόνο στο γραφικό περιβάλλον. Αν θέλετε να χρησιμοποιήσετε τις τιμές αυτές σε πρότυπα αποθήκευσης-στο-δίσκο ή αποστολής-σε-συσκευή, θα πρέπει να δημιουργήσετε μια εξατομικευμένη «Στήλη που παράγεται από άλλες στήλες», να χρησιμοποιήσετε τη συνάρτηση στο πρότυπο της στήλης αυτής, και ακολούθως να χρησιμοποιήσετε την τιμή της στήλης στο πρότυπο αποθήκευσης ή αποστολής σας

author_sorts(val_separator)

class calibre.utils.formatter_functions.BuiltinAuthorSorts[πηγή]

author_sorts(val_separator) – επιστρέφει μια συμβολοσειρά που περιέχει μια λίστα από ταξινομημένες τιμές συγγραφέων για τους συγγραφείς του βιβλίου. Η ταξινόμηση είναι αυτή για τα μεταδεδομένα των συγγραφέων (διαφέρει από την τιμή ταξινομημένου συγγραφέα στα βιβλία). Η επιστρεφόμενη λίστα έχει τη μορφή τιμή-ταξινόμησης-συγγραφέα1 val_separator τιμή-ταξινόμησης-συγγραφέα2 κτλ. Οι ταξινομημένες τιμές συγγραφέα στη λίστα αυτή έχουν την ίδια σειρά με τους συγγραφείς του βιβλίου. Αν θέλετε διαστήματα γύρω από το val_separator, εισάγετέ τα στη συμβολοσειρά του διαχωριστικού

booksize()

class calibre.utils.formatter_functions.BuiltinBooksize[πηγή]

booksize() – επιστρέφει την τιμή του πεδίου μεγέθους. Η συνάρτηση αυτή λειτουργεί μόνο στο γραφικό περιβάλλον. Αν θέλετε να χρησιμοποιήσετε την τιμή αυτή σε πρότυπα αποθήκευσης-στο-δίσκο ή αποστολής-σε-συσκευή, θα πρέπει να δημιουργήσετε μια εξατομικευμένη «Στήλη που παράγεται από άλλες στήλες», να χρησιμοποιήσετε τη συνάρτηση στο πρότυπο της στήλης αυτής, και ακολούθως να χρησιμοποιήσετε την τιμή της στήλης στο πρότυπο αποθήκευσης ή αποστολής σας

connected_device_name(storage_location)

class calibre.utils.formatter_functions.BuiltinConnectedDeviceName[πηγή]

connected_device_name(storage_location) – if a device is connected then return the device name, otherwise return the empty string. Each storage location on a device can have a different name. The location names are “main”, “carda” and “cardb”. This function works only in the GUI.

current_library_name()

class calibre.utils.formatter_functions.BuiltinCurrentLibraryName[πηγή]

current_library_name() – επιστρέφει το τελευταίο όνομα στη διαδρομή της τρέχουσας βιβλιοθήκης calibre. Η συνάρτηση αυτή μπορεί να κληθεί σε κατάσταση προγράμματος προτύπου με χρήση του προτύπου «{:”current_library_name()”}».

current_library_path()

class calibre.utils.formatter_functions.BuiltinCurrentLibraryPath[πηγή]

current_library_path() – επιστρέφει τη διαδρομή προς την τρέχουσα βιβλιοθήκη calibre. Η συνάρτηση αυτή μπορεί να κληθεί σε κατάσταση προγράμματος προτύπου με χρήση του προτύπου «{:”current_library_path()”}».

field(name)

class calibre.utils.formatter_functions.BuiltinField[πηγή]

field(name) – επιστρέφει το πεδίο μεταδεδομένων που ονομάζεται name

formats_modtimes(date_format)

class calibre.utils.formatter_functions.BuiltinFormatsModtimes[πηγή]

formats_modtimes(date_format) – επιστρέφει μια διαχωριζόμενη από κόμματα λίστα στοιχείων, τα οποία με τη σειρά τους περιέχουν δεδομένα που διαχωρίζονται με «:», και αναπαριστούν τους χρόνους τροποποίησης για τις μορφές ενός βιβλίου. Η παράμετρος date_format καθορίζει πως θα μορφοποιηθεί η ημερομηνία. Δείτε τη συνάρτηση format_date για λεπτομέρειες. Μπορείτε να χρησιμοποιήσετε τη συνάρτηση select για να πάρετε το χρόνο τροποποίησης για κάποια συγκεκριμένη μορφή. Σημειώστε ότι τα ονόματα μορφών είναι πάντα κεφαλαιογραφημένα, όπως στο EPUB.

formats_paths()

class calibre.utils.formatter_functions.BuiltinFormatsPaths[πηγή]

formats_paths() – επιστρέφει μια διαχωριζόμενη από κόμματα λίστα στοιχείων, τα οποία με τη σειρά τους περιέχουν δεδομένα που διαχωρίζονται με «:», και αναπαριστούν πλήρεις διαδρομές προς τις μορφές ενός βιβλίου. Μπορείτε να χρησιμοποιήσετε τη συνάρτηση select για να πάρετε τη διαδρομή κάποιας συγκεκριμένης μορφής. Σημειώστε ότι τα ονόματα μορφών είναι πάντα κεφαλαιογραφημένα, όπως στο EPUB.

formats_sizes()

class calibre.utils.formatter_functions.BuiltinFormatsSizes[πηγή]

formats_sizes() – επιστρέφει μια διαχωριζόμενη από κόμματα λίστα στοιχείων, τα οποία με τη σειρά τους περιέχουν δεδομένα που διαχωρίζονται με «:», και αναπαριστούν τα μεγέθη σε bytes των μορφών ενός βιβλίου. Μπορείτε να χρησιμοποιήσετε τη συνάρτηση select για να πάρετε το μέγεθος κάποιας συγκεκριμένης μορφής. Σημειώστε ότι τα ονόματα μορφών είναι πάντα κεφαλαιογραφημένα, όπως στο EPUB.

has_cover()

class calibre.utils.formatter_functions.BuiltinHasCover[πηγή]

has_cover() – επιστρέφει Yes αν το βιβλίο έχει εξώφυλλο, αλλιώς επιστρέφει κενή συμβολοσειρά

language_codes(lang_strings)

class calibre.utils.formatter_functions.BuiltinLanguageCodes[πηγή]

language_codes(lang_strings) – επιστρέφει τους κώδικες γλώσσας για τις συμβολοσειρές που συμπεριλαμβάνονται στο όρισμα lang_strings. Οι συμβολοσειρές πρέπει να είναι στη γλώσσα της τρέχουσας εντοπιότητας. Το όρισμα lang_strings είναι μια διαχωριζόμενη από κόμματα λίστα.

language_strings(lang_codes, localize)

class calibre.utils.formatter_functions.BuiltinLanguageStrings[πηγή]

language_strings(lang_codes, localize) – επιστρέφει τις συμβολοσειρές για τους κώδικες γλώσσας που περιέχονται στο όρισμα lang_codes. Αν το όρισμα localize έχει τιμή 0, επιστρέφει τις συμβολοσειρές στα Αγγλικά. Αν η τιμή της localize δεν είναι 0, επιστρέφει τις συμβολοσειρές στη γλώσσα της τρέχουσας εντοπιότητας. Το όρισμα lang_codes είναι μια διαχωριζόμενη από κόμματα λίστα.

ondevice()

class calibre.utils.formatter_functions.BuiltinOndevice[πηγή]

ondevice() – επιστρέφει Yes αν η ondevice είναι ενεργή, αλλιώς επιστρέφει την κενή συμβολοσειρά. Η συνάρτηση αυτή λειτουργεί μόνο στην διεπαφή χρήστη. Αν θέλετε να χρησιμοποιήσετε την τιμή αυτή σε πρότυπα αποθήκευσης-στο-δίσκο ή αποστολής-σε-συσκευή, θα πρέπει να δημιουργήσετε μια εξατομικευμένη «Στήλη που παράγεται από άλλες στήλες», να χρησιμοποιήσετε τη συνάρτηση στο πρότυπο της στήλης αυτής, και ακολούθως να χρησιμοποιήσετε την τιμή της στήλης στο πρότυπο αποθήκευσης ή αποστολής σας

raw_field(name)

class calibre.utils.formatter_functions.BuiltinRawField[πηγή]

raw_field(name) – επιστρέφει το πεδίο μεταδεδομένων που ονομάζεται name χωρίς να εφαρμόζει κάποια μορφοποίηση.

raw_list(name, separator)

class calibre.utils.formatter_functions.BuiltinRawList[πηγή]

raw_list(name, separator) – επιστρέφει τη λίστα μεταδεδομένων που ονομάζεται name, χωρίς να εφαρμόζει οποιαδήποτε μορφοποίηση ή ταξινόμηση, και με τα στοιχεία της να διαχωρίζονται από παρουσίες του ορίσματος separator.

series_sort()

class calibre.utils.formatter_functions.BuiltinSeriesSort[πηγή]

series_sort() – επιστρέφει την τιμή ταξινόμησης σειράς

user_categories()

class calibre.utils.formatter_functions.BuiltinUserCategories[πηγή]

user_categories() – επιστρέφει μια διαχωριζόμενη από κόμματα λίστα κατηγοριών χρήστη που περιέχουν το βιβλίο αυτό. Η συνάρτηση αυτή λειτουργεί μόνο στο γραφικό περιβάλλον. Αν θέλετε να χρησιμοποιήσετε τις τιμές αυτές σε πρότυπα αποθήκευσης-στο-δίσκο ή αποστολής-σε-συσκευή, θα πρέπει να δημιουργήσετε μια εξατομικευμένη «Στήλη που παράγεται από άλλες στήλες», να χρησιμοποιήσετε τη συνάρτηση στο πρότυπο της στήλης αυτής, και ακολούθως να χρησιμοποιήσετε την τιμή της στήλης στο πρότυπο αποθήκευσης ή αποστολής σας

virtual_libraries()

class calibre.utils.formatter_functions.BuiltinVirtualLibraries[πηγή]

virtual_libraries() – επιστρέφει μια διαχωριζόμενη από κόμματα λίστα Εικονικών βιβλιοθηκών που περιέχουν το βιβλίο αυτό. Η συνάρτηση αυτή λειτουργεί μόνο στο γραφικό περιβάλλον. Αν θέλετε να χρησιμοποιήσετε τις τιμές αυτές σε πρότυπα αποθήκευσης-στο-δίσκο ή αποστολής-σε-συσκευή, θα πρέπει να δημιουργήσετε μια εξατομικευμένη «Στήλη που παράγεται από άλλες στήλες», να χρησιμοποιήσετε τη συνάρτηση στο πρότυπο της στήλης αυτής, και ακολούθως να χρησιμοποιήσετε την τιμή της στήλης στο πρότυπο αποθήκευσης ή αποστολής σας

If-then-else

check_yes_no(field_name, is_undefined, is_false, is_true)

class calibre.utils.formatter_functions.BuiltinCheckYesNo[πηγή]

check_yes_no(field_name, is_undefined, is_false, is_true) – checks the value of the yes/no field named by the lookup key field_name for a value specified by the parameters, returning «yes» if a match is found, otherwise returning an empty string. Set the parameter is_undefined, is_false, or is_true to 1 (the number) to check that condition, otherwise set it to 0. Example: check_yes_no(«#bool», 1, 0, 1) returns «yes» if the yes/no field «#bool» is either undefined (neither True nor False) or True. More than one of is_undefined, is_false, or is_true can be set to 1. This function is usually used by the test() or is_empty() functions.

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) – ελέγχει αν η val περιέχει υποσύνολα που ικανοποιούν την κανονική έκφραση pattern. Επιστρέφει text if match αν υπάρχουν τέτοια υποσύνολα, διαφορετικά επιστρέφει text if no match

ifempty(val, text if empty)

class calibre.utils.formatter_functions.BuiltinIfempty[πηγή]

ifempty(val, text if empty) – επιστρέφει val αν η val έχει δεδομένα, αλλιώς επιστρέφει 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) – επιστρέφει text if not empty αν η val δεν είναι κενή, αλλιώς επιστρέφει text if empty

Iterating over values

first_non_empty(value, value, …)

class calibre.utils.formatter_functions.BuiltinFirstNonEmpty[πηγή]

first_non_empty(value, value, …) – επιστρέφει την πρώτη τιμή που δεν είναι κενή. Αν όλες οι τιμές είναι κενές, επιστρέφεται η κενή τιμή. Μπορείτε να έχετε όσες τιμές θέλετε.

lookup(val, pattern, field, pattern, field, …, else_field)

class calibre.utils.formatter_functions.BuiltinLookup[πηγή]

lookup(val, pattern, field, pattern, field, …, else_field) – όπως η switch, με τη διαφορά ότι τα ορίσματα είναι ονόματα πεδίων (μεταδεδομένων), και όχι κείμενο. Η τιμή του κατάλληλου πεδίου θα ληφθεί για να χρησιμοποιηθεί. Σημειώστε ότι καθώς οι σύνθετες στήλες είναι πεδία, μπορείτε να χρησιμοποιήσετε τη συνάρτηση αυτή σε ένα σύνθετο πεδίο για να χρησιμοποιήσετε την τιμή κάποιου άλλου σύνθετου πεδίου. Αυτό είναι εξαιρετικά χρήσιμο όταν κατασκευάζονται μεταβλητές διαδρομές αποθήκευσης

switch(val, pattern, value, pattern, value, …, else_value)

class calibre.utils.formatter_functions.BuiltinSwitch[πηγή]

switch(val, pattern, value, pattern, value, …, else_value) – για κάθε ζεύγος pattern, value ελέγχει αν το val ικανοποιεί την κανονική έκφραση pattern, και σε περίπτωση που το κάνει επιστρέφει την αντίστοιχη τιμή value. Αν δεν ικανοποιείται καμιά κανονική έκφραση, επιστρέφεται η τιμή else_value. Μπορείτε να έχετε όσα ζεύγη pattern, value θέλετε

List lookup

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) – χειρίζεται τη val ως μια διαχωριζόμενη από κόμματα λίστα αναγνωριστικών, και συγκρίνει τη συμβολοσειρά με κάθε τιμή που υπάρχει στη λίστα. Ένα αναγνωριστικό έχει τη μορφή «identifier:value». Η παράμετρος id πρέπει να έχει μορφή «id» ή «id:regexp». Η πρώτη περίπτωση ταυτοποιεί την ύπαρξη κάποιου αναγνωριστικού με το συγκεκριμένο id. Η δεύτερη περίπτωση ταυτοποιεί αν η κανονική έκφραση regexp συμφωνεί με την τιμή του αναγνωριστικού. Αν υπάρχει ταυτοποίηση, επιστρέφει found_val, αλλιώς επιστρέφει 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) – χειρίζεται τη val σαν μια λίστα από στοιχεία που διαχωρίζονται από παρουσίες του ορίσματος separator, συγκρίνοντας το όρισμα pattern με κάθε στοιχείο της λίστας. Αν το όρισμα pattern ταυτοποιείται σε κάποια τιμή, επιστρέφεται found_val, αλλιώς επιστρέφεται not_found_val. Τα ορίσματα pattern και found_value μπορούν να επαναληφθούν όσες φορές είναι επιθυμητό, επιτρέποντας την επιστροφή διαφορετικών τιμών ανάλογα με την αναζήτηση. Τα ορίσματα pattern ελέγχονται με τη σειρά. Μόλις ταυτοποιηθεί το πρώτο, επιστρέφεται η αντίστοιχη τιμή.

list_item(val, index, separator)

class calibre.utils.formatter_functions.BuiltinListitem[πηγή]

list_item(val, index, separator) – ερμηνεύει την τιμή val σαν μια λίστα από στοιχεία που διαχωρίζονται από παρουσίες του ορίσματος separator, και επιστρέφει το στοιχείο που υπάρχει στη θέση index. Το πρώτο στοιχείο είναι στη θέση 0. Το τελευταίο στοιχείο μπορεί να επιστραφεί χρησιμοποιώντας την έκφραση list_item(-1,separator). Αν ο αριθμοδείκτης δεν υπάρχει στη λίστα, επιστρέφεται κενή συμβολοσειρά. Ο διαχωριστής έχει το ίδιο νόημα όπως και στη συνάρτηση count.

select(val, key)

class calibre.utils.formatter_functions.BuiltinSelect[πηγή]

select(val, key) – ερμηνεύει το όρισμα val ως μια διαχωριζόμενη από κόμματα λίστα στοιχείων, όπου τα στοιχεία έχουν τη μορφή «id:value». Βρίσκει το ζεύγος που έχει κλειδί id ίδιο με το όρισμα key, και επιστρέφει την αντίστοιχη τιμή.

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) – χειρίζεται τη val σαν μια λίστα από στοιχεία που διαχωρίζονται από παρουσίες του ορίσματος separator, συγκρίνοντας το όρισμα string με κάθε στοιχείο της λίστας. Αν το όρισμα string ταυτοποιείται σε κάποια τιμή (παραβλέποντας τις όποιες διαφορές μεταξύ πεζών-κεφαλαίων), επιστρέφεται found_val, αλλιώς επιστρέφεται not_found_val. Αν το όρισμα string περιέχει διαχωριστικά, η επεξεργασία του γίνεται σαν να είναι και αυτό λίστα, με έλεγχο όλων των τιμών. Τα ορίσματα string και found_value μπορούν να επαναληφθούν όσες φορές είναι επιθυμητό, επιτρέποντας την επιστροφή διαφορετικών τιμών ανάλογα με την αναζήτηση. Τα ορίσματα string ελέγχονται με τη σειρά. Μόλις ταυτοποιηθεί το πρώτο, επιστρέφεται η αντίστοιχη τιμή.

List manipulation

count(val, separator)

class calibre.utils.formatter_functions.BuiltinCount[πηγή]

count(val, separator) – ερμηνεύει την τιμή σαν λίστα στοιχείων διαχωριζόμενων από παρουσίες του separator, και επιστρέφει το πλήθος των στοιχείων της λίστας. Οι περισσότερες λίστες χρησιμοποιούν κόμμα ως διαχωριστικό, αλλά οι συγγραφείς χρησιμοποιούν σύμβολα &. Παραδείγματα: {tags:count(,)}, {authors:count(&)}

list_difference(list1, list2, separator)

class calibre.utils.formatter_functions.BuiltinListDifference[πηγή]

list_difference(list1, list2, separator) – επιστρέφει μια λίστα, η οποία προκύπτει όταν αφαιρεθούν από την list1 όλα τα στοιχεία που υπάρχουν και στην list2, χωρίς να λαμβάνεται υπ” όψιν η κεφαλαιογράφηση των στοιχείων. Τα στοιχεία στις list1 και list2 διαχωρίζονται από παρουσίες του ορίσματος separator, όπως συμβαίνει και με τα στοιχεία της λίστας που επιστρέφεται.

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) – επιστρέφει yes_val αν οι λίστες list1 και list2 περιέχουν τα ίδια στοιχεία, αλλιώς επιστρέφει no_val. Τα στοιχεία καθορίζονται διαχωρίζοντας κάθε λίστα με τον κατάλληλο χαρακτήρα διαχωρισμού (sep1 ή sep2). Η σειρά των στοιχείων στις λίστες είναι αδιάφορη. Η σύγκριση δεν επηρεάζεται από την κεφαλαιογράφηση.

list_intersection(list1, list2, separator)

class calibre.utils.formatter_functions.BuiltinListIntersection[πηγή]

list_intersection(list1, list2, separator) – επιστρέφει μια λίστα, η οποία προκύπτει όταν αφαιρεθούν από την list1 όλα τα στοιχεία που δεν υπάρχουν στην list2, χωρίς να λαμβάνεται υπ” όψιν η κεφαλαιογράφηση των στοιχείων. Τα στοιχεία στις λίστες list1 και list2 διαχωρίζονται από παρουσίες του ορίσματος separator, όπως συμβαίνει και με τα στοιχεία της λίστας που επιστρέφεται.

list_re(src_list, separator, include_re, opt_replace)

class calibre.utils.formatter_functions.BuiltinListRe[πηγή]

list_re(src_list, separator, include_re, opt_replace) – Δημιουργεί μια λίστα, διαχωρίζοντας αρχικά το όρισμα src_list σε στοιχεία με χρήση του χαρακτήρα διαχωρισμού separator. Για κάθε στοιχείο της λίστας, ελέγχει αν υπάρχει συμφωνία με το όρισμα include_re. Αν υπάρχει, τότε το προσθέτει στη λίστα που θα επιστραφεί. Αν το όρισμα opt_replace δεν είναι η κενή συμβολοσειρά, εφαρμόζει την αντικατάσταση πριν προσθέσει το στοιχείο στη λίστα που επιστρέφει.

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, …) – Όπως η list_re, εκτός του ότι οι αντικαταστάσεις δεν είναι προαιρετικές. Χρησιμοποιεί τη συνάρτηση re_group(list_item, search_re, group_1_template, …) όταν κάνει τις αντικαταστάσεις στην προκύπτουσα λίστα.

list_sort(list, direction, separator)

class calibre.utils.formatter_functions.BuiltinListSort[πηγή]

list_sort(list, direction, separator) – επιστρέφει τη λίστα ταξινομημένη, χρησιμοποιώντας ταξινόμηση που δεν «βλέπει» διαφορές πεζών-κεφαλαίων. Αν η μεταβλητή direction είναι 0, η λίστα γίνεται αύξουσα, αλλιώς φθίνουσα. Τα στοιχεία της λίστας διαχωρίζονται από το όρισμα separator, όπως και τα στοιχεία της λίστας που επιστρέφεται.

list_union(list1, list2, separator)

class calibre.utils.formatter_functions.BuiltinListUnion[πηγή]

list_union(list1, list2, separator) – επιστρέφει μια λίστα που δημιουργείται από τη συγχώνευση των στοιχείων στις λίστες list1 και list2, αφαιρώντας διπλότυπα στοιχεία με συγκρίσεις που δεν «βλέπουν» διαφορές μεταξύ πεζών-κεφαλαίων. Αν κάποια στοιχεία διαφέρουν στην κεφαλαιογράφηση, χρησιμοποιείται το στοιχείο της list1. Τα στοιχεία στις list1 και list2 διαχωρίζονται από το όρισμα separator, όπως και τα στοιχεία της λίστας που επιστρέφεται.

subitems(val, start_index, end_index)

class calibre.utils.formatter_functions.BuiltinSubitems[πηγή]

subitems(val, start_index, end_index) – Η συνάρτηση αυτή χρησιμοποιείται για να διαχωρίσει λίστες στοιχείων, όπως τα είδη. Ερμηνεύει την τιμή ως μια διαχωριζόμενη από κόμματα λίστα στοιχείων, της οποίας τα στοιχεία είναι διαχωριζόμενες από τελείες λίστες. Επιστρέφει μια νέα λίστα που δημιουργείται βρίσκοντας αρχικά όλα τα στοιχεία που διαχωρίζονται από τελείες, και στη συνέχεια, για κάθε τέτοιο στοιχείο παίρνει το τμήμα που βρίσκεται μεταξύ των δεικτών start_index και end_index, και συνενώνει τα αποτελέσματα. Το πρώτο τμήμα σε μια διαχωριζόμενη από τελείες λίστα έχει δείκτη 0. Αν κάποιος δείκτης είναι αρνητικός, η μέτρηση γίνεται από το τέλος της λίστας. Ως ειδική περίπτωση, ένας end_index με τιμή 0 θεωρείται πως έχει ίδιο μέγεθος με τη λίστα.

Παράδειγμα σε βασική κατάσταση προτύπου, υποθέτοντας μια τιμή #genre ίση με «A.B.C»: {#genre:subitems(0,1)} επιστρέφει «A». {#genre:subitems(0,2)} επιστρέφει «A.B». {#genre:subitems(1,0)} επιστρέφει «B.C».

Υποθέτοντας τιμή #genre ίση με «A.B.C, D.E.F», {#genre:subitems(0,1)} επιστρέφει «A, D». {#genre:subitems(0,2)} επιστρέφει «A.B, D.E»

sublist(val, start_index, end_index, separator)

class calibre.utils.formatter_functions.BuiltinSublist[πηγή]

sublist(val, start_index, end_index, separator) – ερμηνεύει την τιμή σαν λίστα στοιχείων που διαχωρίζονται από παρουσίες του ορίσματος separator, και επιστρέφει μια νέα λίστα που παράγεται από τα στοιχεία με δείκτες μεταξύ start_index και end_index. Το πρώτο στοιχείο έχει δείκτη 0. Αν ένας δείκτης είναι αρνητικός, η αρίθμηση γίνεται από το τέλος της λίστας. Ως ειδική περίπτωση, ένας δείκτης end_index με τιμή 0 θεωρείται πως έχει τιμή ίδια με το μέγεθος της λίστας.

Παραδείγματα με χρήση βασικής κατάστασης προτύπου, και υποθέτοντας πως η στήλη ετικέτες (η οποία διαχωρίζεται από κόμματα) περιέχει «A, B, C»: {tags:sublist(0,1,\,)} επιστρέφει «A». {tags:sublist(-1,0,\,)} επιστρέφει «C». {tags:sublist(0,-1,\,)} επιστρέφει «A, B».

Other

assign(id, val)

class calibre.utils.formatter_functions.BuiltinAssign[πηγή]

assign(id, val) – αποδίδει την τιμή val στη id, μετά επιστρέφει την τιμή val. Η id πρέπει να είναι μεταβλητή, όχι έκφραση

Recursion

eval(template)

class calibre.utils.formatter_functions.BuiltinEval[πηγή]

eval(template) – κάνει αποτίμηση του πρότυπου, περνώντας τις τοπικές μεταβλητές (αυτές που αποδόθηκαν) αντί για τα μεταδεδομένα του βιβλίου. Αυτό επιτρέπει τη χρήση του επεξεργαστή προτύπων για τη παραγωγή πολύπλοκων αποτελεσμάτων από τις τοπικές μεταβλητές. Επειδή οι χαρακτήρες { και } είναι ειδικοί, πρέπει να χρησιμοποιήσετε [[ για το χαρακτήρα { και ]] για το χαρακτήρα }; η μετατροπή τους γίνεται αυτόματα. Σημειώστε επίσης ότι προθέματα και επιθέματα (η σύνταξη |prefix|suffix) δεν μπορούν να χρησιμοποιηθούν στο όρισμα της συνάρτησης αυτής στην κατάσταση προγράμματος προτύπων.

template(x)

class calibre.utils.formatter_functions.BuiltinTemplate[πηγή]

template(x) – αποτιμά το x ως πρότυπο. Η αποτίμηση γίνεται στο δικό της πλαίσιο, δηλαδή οι μεταβλητές δεν διαμοιράζονται μεταξύ της καλούσας και του αποτιμηθέντος προτύπου. Καθώς οι χαρακτήρες { και } είναι ειδικοί, πρέπει να χρησιμοποιήσετε [[ για τον χαρακτήρα { και ]] για τον } - η μετατροπή γίνεται αυτόματα. Για παράδειγμα, η έκφραση template(“[[title_sort]]”) θα αποτιμήσει το πρότυπο {title_sort} και θα επιστρέψει την τιμή του. Σημειώστε επίσης ότι προθέματα και επιθέματα (η σύνταξη |prefix|suffix) δεν μπορούν να χρησιμοποιηθούν στο όρισμα της συνάρτησης αυτής σε κατάσταση προγράμματος προτύπου.

Relational

cmp(x, y, lt, eq, gt)

class calibre.utils.formatter_functions.BuiltinCmp[πηγή]

cmp(x, y, lt, eq, gt) – συγκρίνει τα x και y αφού πρώτα τα μετατρέψει σε αριθμούς. Επιστρέφει lt αν x < y. Επιστρέφει eq αν x == y. Διαφορετικά επιστρέφει gt.

first_matching_cmp(val, cmp1, result1, cmp2, r2, …, else_result)

class calibre.utils.formatter_functions.BuiltinFirstMatchingCmp[πηγή]

first_matching_cmp(val, cmp1, result1, cmp2, r2, …, else_result) – κάνει τις διαδοχικές συγκρίσεις «val < cmpN», επιστρέφοντας resultN για την πρώτη σύγκριση που αληθεύει. Επιστρέφει την τιμή else_result αν δεν αληθεύει καμία σύγκριση. Παράδειγμα: Η first_matching_cmp(10,5,»small»,10,»middle»,15,»large»,»giant») επιστρέφει «large». Στο ίδιο παράδειγμα, αν η τιμή του πρώτου ορίσματος ήταν 16 θα επιστρέφονταν «giant».

strcmp(x, y, lt, eq, gt)

class calibre.utils.formatter_functions.BuiltinStrcmp[πηγή]

strcmp(x, y, lt, eq, gt) – κάνει μια σύγκριση των συμβολοσειρών x και y, αγνοώντας τις όποιες διαφορές στην κεφαλαιογράφηση. Επιστρέφει lt αν x < y. Επιστρέφει eq αν x == y. Διαφορετικά επιστρέφει gt.

String case changes

capitalize(val)

class calibre.utils.formatter_functions.BuiltinCapitalize[πηγή]

capitalize(val) – επιστρέφει την val με το πρώτο της γράμμα κεφαλαίο

lowercase(val)

class calibre.utils.formatter_functions.BuiltinLowercase[πηγή]

lowercase(val) – επιστρέφει τη val με τα γράμματά της πεζά

titlecase(val)

class calibre.utils.formatter_functions.BuiltinTitlecase[πηγή]

titlecase(val) – επιστρέφει τη val σε γράμματα τίτλου

uppercase(val)

class calibre.utils.formatter_functions.BuiltinUppercase[πηγή]

uppercase(val) – επιστρέφει τη val με τα γράμματά της κεφαλαία

String manipulation

re(val, pattern, replacement)

class calibre.utils.formatter_functions.BuiltinRe[πηγή]

re(val, pattern, replacement) – επιστρέφει το όρισμα val μετά την εφαρμογή της κανονικής έκφρασης. Κάθε παρουσία του pattern αντικαθίσταται από την έκφραση replacement. Όπως σε όλο το calibre, αυτές είναι συμβατές με την Python κανονικές εκφράσεις

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, …) – επιστρέφει μια συμβολοσειρά που δημιουργείται εφαρμόζοντας την κανονική έκφραση στο όρισμα val, και αντικαθιστώντας κάθε ταυτοποιημένη παρουσία από μια συμβολοσειρά που παράγεται από αντικατάσταση κάθε εντοπισμένης υποέκφρασης από την τιμή που επιστρέφει το αντίστοιχο πρότυπο. Η αρχική τιμή της ταυτοποιημένης υποέκφρασης είναι διαθέσιμη ως $. Σε κατάσταση προγράμματος προτύπου, όπως συμβαίνει στις συναρτήσεις template και eval, χρησιμοποιήστε [[ αντί για {, και ]] αντί για }.

Το ακόλουθο παράδειγμα σε κατάσταση προγράμματος προτύπου ψάχνει για σειρές που έχουν περισσότερες από μια λέξεις, και κεφαλαιογραφεί την πρώτη λέξη: {series:”re_group($, «(S* )(.*)», «[[$:uppercase()]]», «[[$]]»)”}

shorten(val, left chars, middle text, right chars)

class calibre.utils.formatter_functions.BuiltinShorten[πηγή]

shorten(val, left chars, middle text, right chars) – Επιστρέφει μια συντετμημένη μορφή του ορίσματος val, η οποία περιέχει left chars χαρακτήρες από την αρχή της συμβολοσειράς val, ακολουθούμενους από την τιμή του ορίσματος middle text, και από right chars χαρακτήρες από το τέλος της συμβολοσειράς. Τα ορίσματα Left chars και right chars πρέπει να είναι ακέραιοι.

Για παράδειγμα, υποθέστε πως ο τίτλος ενός βιβλίου είναι Ancient English Laws in the Times of Ivanhoe, και πως θέλετε να τον χωρέσετε σε ένα διάστημα το πολύ 15 χαρακτήρων. Αν χρησιμοποιήσετε {title:shorten(9,-,5)}, το αποτέλεσμα θα είναι Ancient E-nhoe. Αν το μήκος του πεδίου είναι μικρότερο από το άθροισμα left chars + right chars + το μήκος του middle text, τότε το πεδίο θα χρησιμοποιηθεί αυτούσιο. Για παράδειγμα, ο τίτλος The Dome δεν θα άλλαζε.

strcat(a, b, …)

class calibre.utils.formatter_functions.BuiltinStrcat[πηγή]

strcat(a, b, …) – μπορεί να πάρει ένα οποιοδήποτε πλήθος ορισμάτων. Επιστρέφει μια συμβολοσειρά που σχηματίζεται ενώνοντας όλα τα ορίσματα

strcat_max(max, string1, prefix2, string2, …)

class calibre.utils.formatter_functions.BuiltinStrcatMax[πηγή]

strcat_max(max, string1, prefix2, string2, …) – Επιστρέφει μια συμβολοσειρά που σχηματίζεται ενώνοντας τα ορίσματα. Η επιστρεφόμενη τιμή αρχικοποιείται στην τιμή του string1. Ζεύγη prefix, string συνεχίζουν να προστίθενται στο τέλος της τιμής για όσο το μήκος της συμβολοσειράς που προκύπτει είναι μικρότερο από max. Η τιμή string1 επιστρέφεται ακόμα και αν το μήκος του string1 είναι μεγαλύτερο από το max. Μπορείτε να περάσετε σαν ορίσματα όσα ζεύγη prefix, string θελετε.

strlen(a)

class calibre.utils.formatter_functions.BuiltinStrlen[πηγή]

strlen(a) – Επιστρέφει το μήκος της συμβολοσειράς που δίνεται ως όρισμα

substr(str, start, end)

class calibre.utils.formatter_functions.BuiltinSubstr[πηγή]

substr(str, start, end) – επιστρέφει τους χαρακτήρες της συμβολοσειράς str που έχουν δείκτες μεταξύ start και end. Ο πρώτος χαρακτήρας του str έχει δείκτη 0. Αν το end είναι αρνητικό, η αρίθμηση γίνεται από το τέλος του str. Αν το end είναι 0, αντιστοιχεί στον τελευταίο χαρακτήρα.

Για παράδειγμα, substr(“12345”, 1, 0) επιστρέφει “2345”, και substr(“12345”, 1, -1) επιστρέφει “234”.

swap_around_articles(val, separator)

class calibre.utils.formatter_functions.BuiltinSwapAroundArticles[πηγή]

swap_around_articles(val, separator) – returns the val with articles moved to the end. The value can be a list, in which case each member of the list is processed. If the value is a list then you must provide the list value separator. If no separator is provided then the value is treated as being a single value, not a list.

swap_around_comma(val)

class calibre.utils.formatter_functions.BuiltinSwapAroundComma[πηγή]

swap_around_comma(val) – δοθείσας μιας τιμής του τύπου «B, A», επιστρέφει «A B». Αυτό είναι εξόχως χρήσιμο στη μετατροπή ονομάτων από μορφή LN, FN σε μορφή FN LN, όπου FN είναι το δοθέν όνομα και LN το επίθετο. Αν δεν υπάρχει κόμμα, η συνάρτηση επιστρέφει την εισαχθείσα τιμή val αμετάβλητη

transliterate(a)

class calibre.utils.formatter_functions.BuiltinTransliterate[πηγή]

transliterate(a) – Επιστρέφει μια συμβολοσειρά σε Λατινικό αλφάβητο, η οποία σχηματίζεται προσεγγίζοντας τους ήχους των λέξεων της πηγαίας συμβολοσειράς. Για παράδειγμα, αν η πηγή είναι «Фёдор Миха́йлович Достоевский» η συνάρτηση επιστρέφει «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=('Άγνωστο'), other=None, template_cache=None, formatter=None)[πηγή]

A class representing all the metadata for a book. The various standard metadata fields are available as attributes of this object. You can also stick arbitrary attributes onto this object.

Metadata from custom columns should be accessed via the get() method, passing in the lookup name for the column, for example: «#mytags».

Use the is_null() 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.

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 Metadata.<lambda>>)[πηγή]

Do not use this method unless you know what you are doing, if you want to create a simple clone of this object, use deepcopy_metadata() instead. Class_generator must be a function that returns an instance of Metadata or a subclass of it.

get_identifiers()[πηγή]

Return a copy of the identifiers dictionary. The dict is small, and the penalty for using a reference where a copy is needed is large. Also, we don’t want any manipulations of the returned dict to show up in the book.

set_identifiers(identifiers)[πηγή]

Set all identifiers. Note that if you previously set ISBN, calling this method will delete it.

set_identifier(typ, val)[πηγή]

If val is empty, deletes identifier of type typ

standard_field_keys()[πηγή]

return a list of all possible keys, even if this book doesn’t have them

custom_field_keys()[πηγή]

return a list of the custom fields in this book

all_field_keys()[πηγή]

All field keys known by this instance, even if their value is None

metadata_for_field(key)[πηγή]

return metadata describing a standard or custom field.

all_non_none_fields()[πηγή]

Return a dictionary containing all non-None metadata fields, including the custom ones.

get_standard_metadata(field, make_copy)[πηγή]

return field metadata from the field if it is there. Otherwise return None. field is the key name, not the label. Return a copy if requested, just in case the user wants to change values in the dict.

get_all_standard_metadata(make_copy)[πηγή]

return a dict containing all the standard field metadata associated with the book.

get_all_user_metadata(make_copy)[πηγή]

return a dict containing all the custom field metadata associated with the book.

get_user_metadata(field, make_copy)[πηγή]

return field metadata from the object if it is there. Otherwise return None. field is the key name, not the label. Return a copy if requested, just in case the user wants to change values in the dict.

set_all_user_metadata(metadata)[πηγή]

store custom field metadata into the object. Field is the key name not the label

set_user_metadata(field, metadata)[πηγή]

store custom field metadata for one column into the object. Field is the key name not the label

remove_stale_user_metadata(other_mi)[πηγή]

Remove user metadata keys (custom column keys) if they don’t exist in “other_mi”, which must be a metadata object

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.

__docformat__ = 'restructuredtext en'

'''
All fields must have a NULL value represented as None for simple types,
an empty list/dictionary for complex types and (None, None) for cover_data
'''

SOCIAL_METADATA_FIELDS = frozenset((
    'tags',             # Ordered list
    'rating',           # A floating point number between 0 and 10
    'comments',         # A simple HTML enabled string
    'series',           # A simple string
    'series_index',     # A floating point number
    # Of the form { scheme1:value1, scheme2:value2}
    # For example: {'isbn':'123456789', 'doi':'xxxx', ... }
    'identifiers',
))

'''
The list of names that convert to identifiers when in get and set.
'''

TOP_LEVEL_IDENTIFIERS = frozenset((
    'isbn',
))

PUBLICATION_METADATA_FIELDS = frozenset((
    'title',            # title must never be None. Should be _('Unknown')
    # Pseudo field that can be set, but if not set is auto generated
    # from title and languages
    'title_sort',
    'authors',          # Ordered list. Must never be None, can be [_('Unknown')]
    'author_sort_map',  # Map of sort strings for each author
    # Pseudo field that can be set, but if not set is auto generated
    # from authors and languages
    'author_sort',
    'book_producer',
    'timestamp',        # Dates and times must be timezone aware
    'pubdate',
    'last_modified',
    'rights',
    # So far only known publication type is periodical:calibre
    # If None, means book
    'publication_type',
    'uuid',             # A UUID usually of type 4
    'languages',        # ordered list of languages in this publication
    'publisher',        # Simple string, no special semantics
    # Absolute path to image file encoded in filesystem_encoding
    'cover',
    # Of the form (format, data) where format is, for e.g. 'jpeg', 'png', 'gif'...
    'cover_data',
    # Either thumbnail data, or an object with the attribute
    # image_path which is the path to an image file, encoded
    # in filesystem_encoding
    'thumbnail',
))

BOOK_STRUCTURE_FIELDS = frozenset((
    # These are used by code, Null values are None.
    'toc', 'spine', 'guide', 'manifest',
))

USER_METADATA_FIELDS = frozenset((
    # A dict of dicts similar to field_metadata. Each field description dict
    # also contains a value field with the key #value#.
    'user_metadata',
))

DEVICE_METADATA_FIELDS = frozenset((
    'device_collections',   # Ordered list of strings
    'lpath',                # Unicode, / separated
    'size',                 # In bytes
    'mime',                 # Mimetype of the book file being represented
))

CALIBRE_METADATA_FIELDS = frozenset((
    'application_id',   # An application id, currently set to the db_id.
    'db_id',            # the calibre primary key of the item.
    'formats',          # list of formats (extensions) for this book
    # a dict of user category names, where the value is a list of item names
    # from the book that are in that category
    'user_categories',
    # a dict of author to an associated hyperlink
    'author_link_map',
))

ALL_METADATA_FIELDS =      SOCIAL_METADATA_FIELDS.union(
                           PUBLICATION_METADATA_FIELDS).union(
                           BOOK_STRUCTURE_FIELDS).union(
                           USER_METADATA_FIELDS).union(
                           DEVICE_METADATA_FIELDS).union(
                           CALIBRE_METADATA_FIELDS)

# All fields except custom fields
STANDARD_METADATA_FIELDS = SOCIAL_METADATA_FIELDS.union(
                           PUBLICATION_METADATA_FIELDS).union(
                           BOOK_STRUCTURE_FIELDS).union(
                           DEVICE_METADATA_FIELDS).union(
                           CALIBRE_METADATA_FIELDS)

# Metadata fields that smart update must do special processing to copy.
SC_FIELDS_NOT_COPIED =     frozenset(('title', 'title_sort', 'authors',
                                      'author_sort', 'author_sort_map',
                                      'cover_data', 'tags', 'languages',
                                      'identifiers'))

# Metadata fields that smart update should copy only if the source is not None
SC_FIELDS_COPY_NOT_NULL =  frozenset(('device_collections', 'lpath', 'size', 'comments', 'thumbnail'))

# Metadata fields that smart update should copy without special handling
SC_COPYABLE_FIELDS =       SOCIAL_METADATA_FIELDS.union(
                           PUBLICATION_METADATA_FIELDS).union(
                           BOOK_STRUCTURE_FIELDS).union(
                           DEVICE_METADATA_FIELDS).union(
                           CALIBRE_METADATA_FIELDS) - \
                           SC_FIELDS_NOT_COPIED.union(
                           SC_FIELDS_COPY_NOT_NULL)

SERIALIZABLE_FIELDS =      SOCIAL_METADATA_FIELDS.union(
                           USER_METADATA_FIELDS).union(
                           PUBLICATION_METADATA_FIELDS).union(
                           CALIBRE_METADATA_FIELDS).union(
                           DEVICE_METADATA_FIELDS) - \
                           frozenset(('device_collections', 'formats',
                               'cover_data'))
# these are rebuilt when needed