jellyfin/src/connect.py

105 lines
2.8 KiB
Python

"""handle connections"""
import base64
import os
import requests
from src.config import get_config
CONFIG = get_config()
class Jellyfin:
"""connect to jellyfin"""
headers = {"Authorization": "MediaBrowser Token=" + CONFIG["jf_token"]}
base = CONFIG["jf_url"]
def get(self, path):
"""make a get request"""
url = f"{self.base}/{path}"
response = requests.get(url, headers=self.headers, timeout=10)
if response.ok:
return response.json()
print(response.text)
return False
def post(self, path, data):
"""make a post request"""
url = f"{self.base}/{path}"
response = requests.post(
url, headers=self.headers, json=data, timeout=10
)
if not response.ok:
print(response.text)
def post_img(self, path, thumb_base64):
"""set image"""
url = f"{self.base}/{path}"
new_headers = self.headers.copy()
new_headers.update({"Content-Type": "image/jpeg"})
response = requests.post(
url, headers=new_headers, data=thumb_base64, timeout=10
)
if not response.ok:
print(response.text)
def ping(self):
"""ping the server"""
path = "Users"
response = self.get(path)
if not response:
raise ConnectionError("failed to connect to jellyfin")
print("[connection] verified jellyfin connection")
class TubeArchivist:
"""connect to Tube Archivist"""
headers = {"Authorization": "Token " + CONFIG.get("ta_token")}
base = CONFIG["ta_url"]
def get(self, path):
"""get document from ta"""
url = f"{self.base}/api/{path}"
response = requests.get(url, headers=self.headers, timeout=10)
if response.ok:
response_json = response.json()
if "data" in response_json:
return response.json().get("data")
return response.json()
print(response.text)
return False
def get_thumb(self, path):
"""get encoded thumbnail from ta"""
url = CONFIG.get("ta_url") + path
response = requests.get(
url, headers=self.headers, stream=True, timeout=10
)
return base64.b64encode(response.content)
def ping(self):
"""ping tubearchivist server"""
response = self.get("ping/")
if not response:
raise ConnectionError("failed to connect to tube archivist")
print("[connection] verified tube archivist connection")
def folder_check():
"""check if ta_video_path is accessible"""
if not os.path.exists("config.json"):
raise FileNotFoundError("config.json file not found")
if not os.path.exists(CONFIG["ta_video_path"]):
raise FileNotFoundError("failed to access ta_video_path")