None, ContentFile(sync)
)
-
def get_sync(self):
if not self.has_sync_file():
- return '[]'
+ return []
with self.get_media('sync').first().file.open('r') as f:
sync = f.read().split('\n')
offset = float(sync[0])
continue
start, end, elid = line.split()
items.append([elid, float(start) + offset])
- return json.dumps(items)
-
+ return items
+
+ def sync_ts(self, ts):
+ elid = None
+ for cur_id, t in self.get_sync():
+ if ts >= t:
+ elid = cur_id
+ else:
+ break
+ return elid
+
+ def sync_elid(self, elid):
+ for cur_id, t in self.get_sync():
+ if cur_id == elid:
+ return t
+
def has_audio_epub_file(self):
return self.has_media("audio.epub")
def ridero_link(self):
return 'https://ridero.eu/%s/books/wl_%s/' % (get_language(), self.slug.replace('-', '_'))
+ def elevenreader_link(self):
+ first_text = self.get_first_text()
+ if first_text is None:
+ return None
+ return 'https://elevenreader.io/audiobooks/wolnelektury:' + first_text.slug
+
+ def content_warnings(self):
+ warnings_def = {
+ 'wulgaryzmy': _('wulgaryzmy'),
+ }
+ warnings = self.get_extra_info_json().get('content_warnings', [])
+ warnings = [
+ warnings_def.get(w, w)
+ for w in warnings
+ ]
+ warnings.sort()
+ return warnings
+
def full_sort_key(self):
return self.SORT_KEY_SEP.join((self.sort_key_author, self.sort_key, str(self.id)))