diff --git a/vrobbler/apps/books/koreader.py b/vrobbler/apps/books/koreader.py index 6c403ac..95b048e 100644 --- a/vrobbler/apps/books/koreader.py +++ b/vrobbler/apps/books/koreader.py @@ -225,7 +225,10 @@ def build_scrobbles_from_book_map( pages_processed = 0 total_pages_read = len(book_map[koreader_book_id]["pages"]) - ordered_pages = sorted(book_map[koreader_book_id]["pages"].items(), key=lambda x: x[1]["start_ts"]) + ordered_pages = sorted( + book_map[koreader_book_id]["pages"].items(), + key=lambda x: x[1]["start_ts"], + ) for cur_page_number, stats in ordered_pages: pages_processed += 1 @@ -249,13 +252,25 @@ def build_scrobbles_from_book_map( should_create_scrobble = True if should_create_scrobble: - scrobble_page_data = OrderedDict(sorted(scrobble_page_data.items(), key=lambda x: x[1]["start_ts"])) - first_page = scrobble_page_data.get( - list(scrobble_page_data.keys())[0] - ) - last_page = scrobble_page_data.get( - list(scrobble_page_data.keys())[-1] + scrobble_page_data = OrderedDict( + sorted( + scrobble_page_data.items(), + key=lambda x: x[1]["start_ts"], + ) ) + try: + first_page = scrobble_page_data.get( + list(scrobble_page_data.keys())[0] + ) + last_page = scrobble_page_data.get( + list(scrobble_page_data.keys())[-1] + ) + except IndexError: + logger.error( + "Could not process book, no page data found", + extra={"scrobble_page_data": scrobble_page_data}, + ) + continue start_ts = int(stats.get("start_ts")) end_ts = int(last_page.get("end_ts"))