X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/b485e5fbd3a127dc13d8b647c6819c2e314cf0fd..181848c12143b7a9160b8bb33c8c69cbd48864a2:/src/depot/legimi.py?ds=inline diff --git a/src/depot/legimi.py b/src/depot/legimi.py index 01f4ee2e..8d2939e4 100644 --- a/src/depot/legimi.py +++ b/src/depot/legimi.py @@ -4,7 +4,7 @@ from django.conf import settings from librarian.functions import lang_code_3to2 from librarian.html import transform_abstrakt from librarian.builders import EpubBuilder, MobiBuilder -from librarian.cover import LegimiCornerCover, LegimiCover +from librarian.covers.marquise import MarquiseCover, LabelMarquiseCover import requests from slugify import slugify @@ -29,6 +29,7 @@ class Legimi: CREATE_URL = BASE_URL + '/publishers/publications/create' EDIT_URL = BASE_URL + '/publishers/publications/edit/%s' EDIT_FILES_URL = BASE_URL + '/publishers/publications/editfiles/%s' + EDIT_SALE_URL = BASE_URL + '/publishers/publications/editsale/%s' def __init__(self, username, password, publisher_id): self.username = username @@ -77,20 +78,20 @@ class Legimi: wlbook = book.wldocument(librarian2=True) meta = wlbook.meta - cover = LegimiCornerCover(meta, width=1200).output_file() - epub_file = EpubBuilder(cover=LegimiCover, fundraising=fundraising).build(wlbook).get_file() - mobi_file = MobiBuilder(cover=LegimiCover, fundraising=fundraising).build(wlbook).get_file() + cover = LabelMarquiseCover(meta, width=1200).output_file() + epub_file = EpubBuilder(cover=MarquiseCover, fundraising=fundraising).build(wlbook).get_file() + mobi_file = MobiBuilder(cover=MarquiseCover, fundraising=fundraising).build(wlbook).get_file() book_data = { "Title": meta.title, "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': description_add, + 'Description': self.get_description(wlbook), } if meta.isbn_html: isbn = meta.isbn_html @@ -101,11 +102,6 @@ class Legimi: 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') ) @@ -190,7 +186,7 @@ class Legimi: if wlbook.meta.audience: description += '

{} to lektura szkolna.'.format(wlbook.meta.title) - if wlbook.tree.find('//pe'): + if wlbook.tree.find('//pe') is not None: description += '
Ebook {title} 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' @@ -198,6 +194,25 @@ class Legimi: description += '

' return description + def get_genre(self, wlbook): + epoch_map = { + 'Starożytność': 80, + 'Średniowiecze': 81, + 'Renesans': 82, + 'Barok': 83, + 'Oświecenie': 84, + 'Romantyzm': 85, + 'Pozytywizm': 86, + 'Modernizm': 87, + 'Dwudziestolecie międzywojenne': 88, + 'Współczesność': 90, + } + + 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', @@ -283,6 +298,42 @@ class Legimi: data=current ) + def edit_sale(self, book): + assert book.legimi_id + + words = book.wldocument().get_statistics()['total']['words_with_fn'] + + price = settings.LEGIMI_SMALL_PRICE + if words > settings.LEGIMI_SMALL_WORDS: + price = settings.LEGIMI_BIG_PRICE + + abo = 'true' if words > settings.LEGIMI_BIG_WORDS else 'false' + + data = { + 'ValidationTrue': 'true', + 'Id': book.legimi_id, + 'SalesPromotionId': "0", + 'IsLibraryPass': "False", + 'OriginalEnterToTheMarketType': "No", + 'OriginalHidingDate': "", + 'OriginalEnterToTheMarketDate': "", + 'EnterToTheMarketType': "No", + 'EnterToTheMarketDate': "", + 'HidingDate': "", + 'SalesNoLimitOption': abo, + 'SalesNoLimitKindle': abo, + 'SalesInStoreEbookGrossValue': f'{price},00', + 'SalesPromotion': "False", + 'SalesPromotionGrossValue': "0,00", + 'SalesPromotionDatesRange.DateStart': "", + 'SalesPromotionDatesRange.DateEnd': "", + } + + self.session.post( + self.EDIT_SALE_URL % book.legimi_id, + data=data + ) + legimi = Legimi( settings.LEGIMI_USERNAME,