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¶
Boolean¶
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, δεν είναι ημερομηνίες, η συνάρτηση επιστρέφει την κενή συμβολοσειρά.
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:» και το τελικό «}» αν το πρότυπο περιέχει μόνο τη μορφοποίηση. Επιστρέφει κενή συμβολοσειρά αν η μορφοποίηση αποτύχει.
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¶
approximate_formats()¶
-
class
calibre.utils.formatter_functions.
BuiltinApproximateFormats
[πηγή]¶ approximate_formats() – επιστρέφει μία διαχωριζόμενη από κόμματα λίστα μορφών, που σε κάποια χρονική στιγμή ήταν συσχετισμένα με το βιβλίο. Δεν δίνεται καμιά εγγύηση ότι η λίστα αυτή είναι σωστή, αν και πιθανότατα είναι. Η συνάρτηση αυτή δύναται να κληθεί σε κατάσταση προγράμματος προτύπου με χρήση του πρότυπου «{:”approximate_formats()”}». Σημειώστε πως τα ονόματα μορφών είναι πάντα σε κεφαλαίους χαρακτήρες, όπως π.χ. στο EPUB. Η συνάρτηση αυτή λειτουργεί μόνο στο γραφικό περιβάλλον. Αν θέλετε να χρησιμοποιήσετε τις τιμές αυτές σε πρότυπα αποθήκευσης-στο-δίσκο ή αποστολής-σε-συσκευή, θα πρέπει να δημιουργήσετε μια εξατομικευμένη «Στήλη που παράγεται από άλλες στήλες», να χρησιμοποιήσετε τη συνάρτηση στο πρότυπο της στήλης αυτής, και ακολούθως να χρησιμοποιήσετε την τιμή της στήλης στο πρότυπο αποθήκευσης ή αποστολής σας
author_links(val_separator, pair_separator)¶
-
class
calibre.utils.formatter_functions.
BuiltinAuthorLinks
[πηγή]¶ author_links(val_separator, pair_separator) – επιστρέφει μια συμβολοσειρά που περιέχει μια λίστα από συγγραφείς και τις τιμές των συνδέσμων των συγγραφέων αυτών, στη μορφή συγγραφέας_1 val_separator σύνδεσμος_συγγραφέα_1 pair_separator συγγραφέας_2 val_separator σύνδεσμος_συγγραφέα_2 κτλ. Ένας συγγραφέας διαχωρίζεται από την τιμή του συνδέσμου του με τη συμβολοσειρά val_separator, χωρίς πρόσθετα κενά. Αντίστοιχα, τα ζεύγη συγγραφέας-σύνδεσμος_συγγραφέα διαχωρίζονται με συμβολοσειρές του ορίσματος pair_separator, χωρίς πρόσθετα κενά. Επαφίεται σε σας να επιλέξετε συμβολοσειρές διαχωρισμού που να μην εμφανίζονται σε ονόματα συγγραφέων ή συνδέσμους. Οι συγγραφείς συμπεριλαμβάνονται ακόμα και αν οι σύνδεσμοί τους είναι κενοί.
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.
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.
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 είναι ενεργή, αλλιώς επιστρέφει την κενή συμβολοσειρά. Η συνάρτηση αυτή λειτουργεί μόνο στην διεπαφή χρήστη. Αν θέλετε να χρησιμοποιήσετε την τιμή αυτή σε πρότυπα αποθήκευσης-στο-δίσκο ή αποστολής-σε-συσκευή, θα πρέπει να δημιουργήσετε μια εξατομικευμένη «Στήλη που παράγεται από άλλες στήλες», να χρησιμοποιήσετε τη συνάρτηση στο πρότυπο της στήλης αυτής, και ακολούθως να χρησιμοποιήσετε την τιμή της στήλης στο πρότυπο αποθήκευσης ή αποστολής σας
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.
Iterating over values¶
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.
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».
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¶
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».
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_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 θελετε.
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.
-
standard_field_keys
()[πηγή]¶ return a list of all possible keys, even if this book doesn’t have them
-
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.
-
-
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