from librarian.builders import EpubBuilder, MobiBuilder
from librarian.cover import LegimiCornerCover, LegimiCover
import requests
+from slugify import slugify
"Przekaż 1% podatku na Wolne Lektury.<br/>\nKRS: 0000070056<br/>\nNazwa organizacji: Fundacja Nowoczesna Polska<br/>\nKażda wpłacona kwota zostanie przeznaczona na rozwój Wolnych Lektur."
]
+description_add = '<p>Książkę polecają <a href="https://wolnelektury.pl">Wolne Lektury</a> — najpopularniejsza biblioteka on-line.</p>'
+
+
class Legimi:
#BASE_URL = 'https://wydawca.legimi.com'
BASE_URL = 'https://panel.legimi.pl'
"Author": ", ".join(p.readable() for p in meta.authors),
"Year": meta.created_at[:4],
- 'GenreId': '11', # TODO
+ 'GenreId': str(self.get_genre(wlbook)),
'Isbn': '',
'LanguageLocale': lang_code_3to2(meta.language),
- 'Description': '<p>—</p>',
+ 'Description': self.get_description(wlbook),
}
if meta.isbn_html:
isbn = meta.isbn_html
files_data = {}
- abstract = wlbook.tree.find('.//abstrakt')
- if abstract is not None:
- book_data['Description'] = transform_abstrakt(abstract)
-
-
cover_data = self.upload(
(meta.url.slug + '.jpg', cover.get_file(), 'image/jpeg')
)
book.legimi_id = legimi_id
book.save(update_fields=['legimi_id'])
+ def get_description(self, wlbook):
+ description = ''
+ abstract = wlbook.tree.find('.//abstrakt')
+ if abstract is not None:
+ description = transform_abstrakt(abstract)
+ description += description_add
+ description += '<p>'
+ description += ', '.join(
+ '<a href="https://wolnelektury.pl/katalog/autor/{}/">{}</a>'.format(
+ slugify(p.readable()),
+ p.readable(),
+ )
+ for p in wlbook.meta.authors
+ ) + '<br>'
+ description += '<a href="https://wolnelektury.pl/katalog/lektura/{}/">{}</a><br>'.format(
+ wlbook.meta.url.slug,
+ wlbook.meta.title
+ )
+ if wlbook.meta.translators:
+ description += 'tłum. ' + ', '.join(p.readable() for p in wlbook.meta.translators) + '<br>'
+ description += 'Epoka: ' + ', '.join(
+ '<a href="https://wolnelektury.pl/katalog/epoka/{}/">{}</a>'.format(
+ slugify(p),
+ p,
+ )
+ for p in wlbook.meta.epochs
+ ) + ' '
+ description += 'Rodzaj: ' + ', '.join(
+ '<a href="https://wolnelektury.pl/katalog/rodzaj/{}/">{}</a>'.format(
+ slugify(p),
+ p,
+ )
+ for p in wlbook.meta.kinds
+ ) + ' '
+ description += 'Gatunek: ' + ', '.join(
+ '<a href="https://wolnelektury.pl/katalog/gatunek/{}/">{}</a>'.format(
+ slugify(p),
+ p,
+ )
+ for p in wlbook.meta.genres
+ ) + '</p>'
+
+ if wlbook.meta.audience:
+ description += '<p><em>{}</em> to lektura szkolna.'.format(wlbook.meta.title)
+ if wlbook.tree.find('//pe') is not None:
+ description += '<br>Ebook <em>{title}</em> zawiera przypisy opracowane specjalnie dla uczennic i uczniów {school}.'.format(
+ title=wlbook.meta.title,
+ school='szkoły podstawowej' if wlbook.meta.audience == 'SP' else 'liceum i technikum'
+ )
+ description += '</p>'
+ return description
+
+ def get_genre(self, wlbook):
+ epoch_map = {
+ 'Starożytność': 12,
+ 'Średniowiecze': 16,
+ 'Renesans': 20,
+ 'Barok': 13,
+ 'Oświecenie': 14,
+ 'Romantyzm': 21,
+ 'Pozytywizm': 19,
+ 'Modernizm': 18,
+ 'Dwudziestolecie międzywojenne': 15,
+ 'Współczesność': 17,
+ }
+
+ for epoch in wlbook.meta.epochs:
+ if epoch in epoch_map:
+ return epoch_map[epoch]
+ return 11
+
def create_book(self, book_data, files_data):
data = {
'createValidationTrue': 'true',