[books] Fix importing order of page data

This commit is contained in:
2024-09-08 00:44:55 -04:00
parent 3d62a6a227
commit c484dab210
5 changed files with 38 additions and 22 deletions

View File

@ -93,7 +93,7 @@ def create_book_from_row(row: list):
title=row[KoReaderBookColumn.TITLE.value],
pages=total_pages,
koreader_data_by_hash={
row[KoReaderBookColumn.MD5.value]: {
str(row[KoReaderBookColumn.MD5.value]): {
"title": row[KoReaderBookColumn.TITLE.value],
"author_str": author_str,
"book_id": row[KoReaderBookColumn.ID.value],
@ -233,7 +233,7 @@ def build_scrobbles_from_book_map(
should_create_scrobble = True
if should_create_scrobble:
scrobble_page_data = OrderedDict(
scrobble_page_data = dict(
sorted(
scrobble_page_data.items(),
key=lambda x: x[1]["start_ts"],
@ -359,6 +359,7 @@ def process_koreader_sqlite_file(file_path, user_id) -> list:
is_os_file = "https://" not in file_path
if is_os_file:
# Loading sqlite file from local filesystem
con = sqlite3.connect(file_path)
cur = con.cursor()
try:
@ -376,6 +377,8 @@ def process_koreader_sqlite_file(file_path, user_id) -> list:
)
new_scrobbles = build_scrobbles_from_book_map(book_map, user)
else:
# Streaming the sqlite file off S3
book_map = {}
for table_name, pragma_table_info, rows in stream_sqlite(
_sqlite_bytes(file_path), max_buffer_size=1_048_576
):
@ -383,6 +386,9 @@ def process_koreader_sqlite_file(file_path, user_id) -> list:
if table_name == "book":
book_map = build_book_map(rows)
for table_name, pragma_table_info, rows in stream_sqlite(
_sqlite_bytes(file_path), max_buffer_size=1_048_576
):
if table_name == "page_stat_data":
book_map = build_page_data(rows, book_map, tz)
new_scrobbles = build_scrobbles_from_book_map(book_map, user)