Add Provider object and update the UI to use

This currently uses localhost:8080 hosted providers to facilitate
testing.
This commit is contained in:
2022-08-19 12:46:20 -04:00
parent 7944e4e21b
commit 94a69d383b
6 changed files with 200 additions and 26 deletions
+54 -9
View File
@@ -1,4 +1,8 @@
from typing import Type
import sys
from urllib import parse
from PyQt5.QtWidgets import QApplication
from PyQt5.QtQml import qmlRegisterType, QQmlApplicationEngine
from PyQt5.QtQuick import QQuickView
@@ -6,24 +10,62 @@ from PyQt5.QtCore import QObject, QUrl, pyqtProperty
from .qtmpv import MpvObject
import sys
import requests
class Show(QObject):
def __init__(self, name, parent=None):
super().__init__(parent)
self._name = name
@pyqtProperty("QString")
def name(self):
return self._name
def getUrl(base: str, path: str) -> dict:
url: str = parse.urljoin(base, path)
r: requests.Response = requests.get(url)
return r.json()
class Provider(QObject):
def __init__(self, name, parent=None):
def __init__(self, ip: str, port: int, parent=None):
super().__init__(parent)
self.name = name
# self.ip = ip
# self.port = port
self.url: str = f"http://{ip}:{port}"
describe: dict = getUrl(self.url, "describe")
self._name: str = describe["name"]
shows: dict = getUrl(self.url, "shows")
self._shows: dict[int, dict] = {e["id"]: e for e in shows["data"]}
recently_added: dict = getUrl(self.url, "recently_added")
self._recently_added: list[int] = recently_added["data"]
in_progress: dict = getUrl(self.url, "in_progress")
self._in_progress: list[int] = in_progress["data"]
@pyqtProperty("QString")
def Name(self):
return self.name
def name(self) -> str:
return self._name
@pyqtProperty("QObject")
def getShow(self, id) -> dict:
return self._shows[id]
@pyqtProperty(list)
def recentlyAdded(self) -> list[int]:
return self._recently_added
@pyqtProperty(list)
def inProgress(self) -> list:
return self._in_progress
class DataSource:
def __init__(self, providers=[]):
self.providers = [Provider(name) for name in providers]
self.providers = [Provider(ip, port) for (ip, port) in providers]
def DatabaseType(data_source) -> Type:
@@ -43,7 +85,10 @@ def DatabaseType(data_source) -> Type:
def main():
app = QApplication(sys.argv)
data_source = DataSource(["Anime", "TV", "Movies", "Settings"])
# data_source = DataSource(["Anime", "TV", "Movies", "Settings"])
data_source = DataSource(
[("127.0.0.1", "8080"), ("127.0.0.1", "8080"), ("127.0.0.1", "8080")]
)
qmlRegisterType(DatabaseType(data_source), "Ikinuki.Client", 1, 0, "Database")
# qmlRegisterType(Provider, "Ikinuki.Client", 1, 0, "Provider")