[books] Allow comic scrobbling to update per page

This commit is contained in:
2025-10-20 15:40:40 -04:00
parent 274b2704ed
commit b5bfad73ef
9 changed files with 218 additions and 26 deletions

View File

@ -7,7 +7,9 @@ import pendulum
import pytz
from beers.models import Beer
from boardgames.models import BoardGame, BoardGameDesigner, BoardGameLocation
from books.models import Book
from books.constants import READCOMICSONLINE_URL
from books.models import Book, BookLogData, BookPageLogData
from books.utils import parse_readcomicsonline_uri
from bricksets.models import BrickSet
from dateutil.parser import parse
from django.utils import timezone
@ -255,13 +257,31 @@ def manual_scrobble_video_game(
def manual_scrobble_book(
title: str, user_id: int, action: Optional[str] = None
):
book = Book.find_or_create(title)
log = {}
source = "Vrobbler"
page = None
if READCOMICSONLINE_URL in title:
title, volume, page = parse_readcomicsonline_uri(title)
title = f"{title} - Issue {volume}"
if not page:
page = 1
log = BookLogData(page_data=BookPageLogData(page_number=page, start_ts=int(timezone.now().timestamp())))
logger.info("[scrobblers] Book page included in scrobble, should update!")
source = READCOMICSONLINE_URL
# TODO: Check for scrobble of this book already and if so, update the page count
book = Book.find_or_create(title, enrich=True)
scrobble_dict = {
"user_id": user_id,
"timestamp": timezone.now(),
"playback_position_seconds": 0,
"source": "Vrobbler",
"source": source,
"long_play_complete": False,
}
@ -275,7 +295,7 @@ def manual_scrobble_book(
},
)
return Scrobble.create_or_update(book, user_id, scrobble_dict)
return Scrobble.create_or_update(book, user_id, scrobble_dict, read_log_page=page)
def manual_scrobble_board_game(
@ -532,6 +552,8 @@ def manual_scrobble_from_url(
if content_key == "-i" and "v=" in url:
item_id = url.split("v=")[1].split("&")[0]
elif content_key == "-c" and "comics" in url:
item_id = url
elif content_key == "-i" and "title/tt" in url:
item_id = "tt" + str(item_id)