mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-05-31 04:04:21 -04:00
Fix datetime parsing on autosync side
This commit is contained in:
parent
a8fe8e2e13
commit
380c80bbaf
@ -1,20 +1,28 @@
|
|||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
|
|
||||||
import dataclasses_json
|
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
|
import pika
|
||||||
from pika import spec
|
from pika import spec
|
||||||
from pika.adapters.blocking_connection import BlockingChannel
|
from pika.adapters.blocking_connection import BlockingChannel
|
||||||
import pika.credentials
|
import pika.credentials
|
||||||
from datetime import date, datetime
|
|
||||||
from autosync.models.message import Message
|
from autosync.models.message import Message
|
||||||
from autosync.services.aggregate import Aggregate
|
from autosync.services.aggregate import Aggregate
|
||||||
|
|
||||||
from autosync.services.simkl import Simkl
|
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)
|
logging.basicConfig(level=logging.INFO)
|
||||||
service = Aggregate([Simkl()])
|
service = Aggregate([Simkl()])
|
||||||
@ -27,8 +35,8 @@ def on_message(
|
|||||||
body: bytes,
|
body: bytes,
|
||||||
):
|
):
|
||||||
try:
|
try:
|
||||||
status = Message.from_json(body)
|
message = Message.from_json(body) # type: Message
|
||||||
service.update(status.user, status.resource, status)
|
service.update(message.value.user, message.value.resource, message.value)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logging.exception("Error processing message.", exc_info=e)
|
logging.exception("Error processing message.", exc_info=e)
|
||||||
logging.exception("Body: %s", body)
|
logging.exception("Body: %s", body)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
from typing import Literal, Optional
|
from typing import Literal, Optional
|
||||||
from datetime import date
|
from datetime import datetime
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from dataclasses_json import dataclass_json, LetterCase
|
from dataclasses_json import dataclass_json, LetterCase
|
||||||
|
|
||||||
@ -10,7 +10,7 @@ from .metadataid import MetadataID
|
|||||||
@dataclass
|
@dataclass
|
||||||
class Movie:
|
class Movie:
|
||||||
name: str
|
name: str
|
||||||
air_date: Optional[date]
|
air_date: Optional[datetime]
|
||||||
external_id: dict[str, MetadataID]
|
external_id: dict[str, MetadataID]
|
||||||
kind: Literal["movie"]
|
kind: Literal["movie"]
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
from typing import Literal, Optional
|
from typing import Literal, Optional
|
||||||
from datetime import date
|
from datetime import datetime
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from dataclasses_json import dataclass_json, LetterCase
|
from dataclasses_json import dataclass_json, LetterCase
|
||||||
|
|
||||||
@ -10,7 +10,7 @@ from .metadataid import MetadataID
|
|||||||
@dataclass
|
@dataclass
|
||||||
class Show:
|
class Show:
|
||||||
name: str
|
name: str
|
||||||
start_air: Optional[date]
|
start_air: Optional[datetime]
|
||||||
external_id: dict[str, MetadataID]
|
external_id: dict[str, MetadataID]
|
||||||
kind: Literal["show"]
|
kind: Literal["show"]
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ from typing import Optional
|
|||||||
class JwtToken:
|
class JwtToken:
|
||||||
token_type: str
|
token_type: str
|
||||||
access_token: str
|
access_token: str
|
||||||
refresh_token: str
|
refresh_token: Optional[str]
|
||||||
expire_in: time
|
expire_in: time
|
||||||
expire_at: datetime
|
expire_at: datetime
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
from datetime import date
|
from datetime import datetime
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from dataclasses_json import dataclass_json, LetterCase
|
from dataclasses_json import dataclass_json, LetterCase
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
@ -16,8 +16,8 @@ class Status(str, Enum):
|
|||||||
@dataclass_json(letter_case=LetterCase.CAMEL)
|
@dataclass_json(letter_case=LetterCase.CAMEL)
|
||||||
@dataclass
|
@dataclass
|
||||||
class WatchStatus:
|
class WatchStatus:
|
||||||
added_date: date
|
added_date: datetime
|
||||||
played_date: Optional[date]
|
played_date: Optional[datetime]
|
||||||
status: Status
|
status: Status
|
||||||
watched_time: Optional[int]
|
watched_time: Optional[int]
|
||||||
watched_percent: Optional[int]
|
watched_percent: Optional[int]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user