Fix datetime parsing on autosync side

This commit is contained in:
Zoe Roux 2024-03-21 01:14:59 +01:00
parent a8fe8e2e13
commit 380c80bbaf
No known key found for this signature in database
5 changed files with 23 additions and 15 deletions

View File

@ -1,20 +1,28 @@
import logging
import os
import dataclasses_json
from datetime import datetime
from marshmallow import fields
dataclasses_json.cfg.global_config.encoders[datetime] = datetime.isoformat
dataclasses_json.cfg.global_config.decoders[datetime] = datetime.fromisoformat
dataclasses_json.cfg.global_config.mm_fields[datetime] = fields.DateTime(format="iso")
dataclasses_json.cfg.global_config.encoders[datetime | None] = datetime.isoformat
dataclasses_json.cfg.global_config.decoders[datetime | None] = datetime.fromisoformat
dataclasses_json.cfg.global_config.mm_fields[datetime | None] = fields.DateTime(
format="iso"
)
import pika
from pika import spec
from pika.adapters.blocking_connection import BlockingChannel
import pika.credentials
from datetime import date, datetime
from autosync.models.message import Message
from autosync.services.aggregate import Aggregate
from autosync.services.simkl import Simkl
dataclasses_json.cfg.global_config.encoders[date] = date.isoformat
dataclasses_json.cfg.global_config.decoders[date] = date.fromisoformat
dataclasses_json.cfg.global_config.encoders[datetime] = datetime.isoformat
dataclasses_json.cfg.global_config.decoders[datetime] = datetime.fromisoformat
logging.basicConfig(level=logging.INFO)
service = Aggregate([Simkl()])
@ -27,8 +35,8 @@ def on_message(
body: bytes,
):
try:
status = Message.from_json(body)
service.update(status.user, status.resource, status)
message = Message.from_json(body) # type: Message
service.update(message.value.user, message.value.resource, message.value)
except Exception as e:
logging.exception("Error processing message.", exc_info=e)
logging.exception("Body: %s", body)

View File

@ -1,5 +1,5 @@
from typing import Literal, Optional
from datetime import date
from datetime import datetime
from dataclasses import dataclass
from dataclasses_json import dataclass_json, LetterCase
@ -10,7 +10,7 @@ from .metadataid import MetadataID
@dataclass
class Movie:
name: str
air_date: Optional[date]
air_date: Optional[datetime]
external_id: dict[str, MetadataID]
kind: Literal["movie"]

View File

@ -1,5 +1,5 @@
from typing import Literal, Optional
from datetime import date
from datetime import datetime
from dataclasses import dataclass
from dataclasses_json import dataclass_json, LetterCase
@ -10,7 +10,7 @@ from .metadataid import MetadataID
@dataclass
class Show:
name: str
start_air: Optional[date]
start_air: Optional[datetime]
external_id: dict[str, MetadataID]
kind: Literal["show"]

View File

@ -9,7 +9,7 @@ from typing import Optional
class JwtToken:
token_type: str
access_token: str
refresh_token: str
refresh_token: Optional[str]
expire_in: time
expire_at: datetime

View File

@ -1,4 +1,4 @@
from datetime import date
from datetime import datetime
from dataclasses import dataclass
from dataclasses_json import dataclass_json, LetterCase
from typing import Optional
@ -16,8 +16,8 @@ class Status(str, Enum):
@dataclass_json(letter_case=LetterCase.CAMEL)
@dataclass
class WatchStatus:
added_date: date
played_date: Optional[date]
added_date: datetime
played_date: Optional[datetime]
status: Status
watched_time: Optional[int]
watched_percent: Optional[int]