mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-05-31 20:24:27 -04:00
Add service aggregates for autosync
This commit is contained in:
parent
e1f889f862
commit
a5c7aef3b8
@ -4,11 +4,11 @@ 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 autosync.services.aggregate import Aggregate
|
||||||
|
|
||||||
from autosync.services.simkl import Simkl
|
from autosync.services.simkl import Simkl
|
||||||
|
|
||||||
# TODO: declare multiples services
|
service = Aggregate([Simkl()])
|
||||||
service = Simkl()
|
|
||||||
|
|
||||||
|
|
||||||
def on_message(
|
def on_message(
|
||||||
|
21
autosync/autosync/services/aggregate.py
Normal file
21
autosync/autosync/services/aggregate.py
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
import logging
|
||||||
|
from autosync.services.service import Service
|
||||||
|
from ..models.user import User
|
||||||
|
from ..models.show import Show
|
||||||
|
from ..models.movie import Movie
|
||||||
|
from ..models.episode import Episode
|
||||||
|
from ..models.watch_status import WatchStatus
|
||||||
|
|
||||||
|
|
||||||
|
class Aggregate(Service):
|
||||||
|
def __init__(self, services: list[Service]):
|
||||||
|
self._services = [x for x in services if x.enabled]
|
||||||
|
logging.info("Autosync enabled with %s", [x.name for x in self._services])
|
||||||
|
|
||||||
|
@property
|
||||||
|
def name(self) -> str:
|
||||||
|
return "aggragate"
|
||||||
|
|
||||||
|
def update(self, user: User, resource: Movie | Show | Episode, status: WatchStatus):
|
||||||
|
for service in self._services:
|
||||||
|
service.update(user, resource, status)
|
21
autosync/autosync/services/service.py
Normal file
21
autosync/autosync/services/service.py
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
from abc import abstractmethod, abstractproperty
|
||||||
|
|
||||||
|
from ..models.user import User
|
||||||
|
from ..models.show import Show
|
||||||
|
from ..models.movie import Movie
|
||||||
|
from ..models.episode import Episode
|
||||||
|
from ..models.watch_status import WatchStatus
|
||||||
|
|
||||||
|
|
||||||
|
class Service:
|
||||||
|
@abstractproperty
|
||||||
|
def name(self) -> str:
|
||||||
|
raise NotImplementedError
|
||||||
|
|
||||||
|
@abstractproperty
|
||||||
|
def enabled(self) -> bool:
|
||||||
|
return True
|
||||||
|
|
||||||
|
@abstractmethod
|
||||||
|
def update(self, user: User, resource: Movie | Show | Episode, status: WatchStatus):
|
||||||
|
raise NotImplementedError
|
@ -1,5 +1,9 @@
|
|||||||
|
import os
|
||||||
|
from typing_extensions import assert_type
|
||||||
import requests
|
import requests
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
from autosync.services.service import Service
|
||||||
from ..models.user import User
|
from ..models.user import User
|
||||||
from ..models.show import Show
|
from ..models.show import Show
|
||||||
from ..models.movie import Movie
|
from ..models.movie import Movie
|
||||||
@ -7,12 +11,20 @@ from ..models.episode import Episode
|
|||||||
from ..models.watch_status import WatchStatus, Status
|
from ..models.watch_status import WatchStatus, Status
|
||||||
|
|
||||||
|
|
||||||
class Simkl:
|
class Simkl(Service):
|
||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
self._api_key = ""
|
self._api_key = os.environ.get("OIDC_SIMKL_CLIENTID")
|
||||||
|
|
||||||
|
@property
|
||||||
|
def name(self) -> str:
|
||||||
|
return "simkl"
|
||||||
|
|
||||||
|
@property
|
||||||
|
def enabled(self) -> bool:
|
||||||
|
return self._api_key is not None
|
||||||
|
|
||||||
def update(self, user: User, resource: Movie | Show | Episode, status: WatchStatus):
|
def update(self, user: User, resource: Movie | Show | Episode, status: WatchStatus):
|
||||||
if "simkl" not in user.external_id:
|
if "simkl" not in user.external_id or self._api_key is None:
|
||||||
return
|
return
|
||||||
|
|
||||||
watch_date = status.played_date or status.added_date
|
watch_date = status.played_date or status.added_date
|
||||||
|
Loading…
x
Reference in New Issue
Block a user