Add Provider object and update the UI to use
This currently uses localhost:8080 hosted providers to facilitate testing.
This commit is contained in:
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user