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
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
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
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')
)
if wlbook.meta.audience:
description += '<p><em>{}</em> to lektura szkolna.'.format(wlbook.meta.title)
- if wlbook.tree.find('//pe'):
+ 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ść': 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',
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,