Merge fd264a9f70145de5234889c926d65fa6faf6a0d7 into eb4558569ce18a1120232cbd51e07cdb37e3c16e

This commit is contained in:
Florian Wetzel 2023-12-21 10:31:45 +00:00 committed by GitHub
commit 88076cbd80
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 19 additions and 6 deletions

View File

@ -53,6 +53,7 @@ An example configuration is provided in the docker-compose.yml file. Configure t
- `TA_TOKEN`: Tube Archivist API token, accessible from the settings page - `TA_TOKEN`: Tube Archivist API token, accessible from the settings page
- `JF_URL`: Full URL where Jellyfin is reachable - `JF_URL`: Full URL where Jellyfin is reachable
- `JF_TOKEN`: Jellyfin API token - `JF_TOKEN`: Jellyfin API token
- `JF_FOLDER`: Folder override if your folder is not named "YouTube" on your Filesystem.
- `LISTEN_PORT`: Optionally change the port where the integration is listening for messages. Defaults to `8001`. If you change this, make sure to also change the json link for auto trigger as described below. - `LISTEN_PORT`: Optionally change the port where the integration is listening for messages. Defaults to `8001`. If you change this, make sure to also change the json link for auto trigger as described below.
Mount the `/youtube` folder from Tube Archivist also in this container at `/youtube` to give this integration access to the media archive. Mount the `/youtube` folder from Tube Archivist also in this container at `/youtube` to give this integration access to the media archive.
@ -83,6 +84,7 @@ pip install requests
- `ta_token`: Tube Archivist API token, accessible from the settings page - `ta_token`: Tube Archivist API token, accessible from the settings page
- `jf_url`: Full URL where Jellyfin is reachable - `jf_url`: Full URL where Jellyfin is reachable
- `jf_token`: Jellyfin API token - `jf_token`: Jellyfin API token
- `jf_folder`: Name of the folder where TubeArchivist puts the files into
Then run the script from the main folder with python, e.g. Then run the script from the main folder with python, e.g.
```python ```python

View File

@ -38,6 +38,7 @@ def get_config_env() -> ConfigType | Literal[False]:
"ta_token": os.environ["TA_TOKEN"], "ta_token": os.environ["TA_TOKEN"],
"jf_url": os.environ["JF_URL"], "jf_url": os.environ["JF_URL"],
"jf_token": os.environ["JF_TOKEN"], "jf_token": os.environ["JF_TOKEN"],
"jf_folder": os.environ.get("JF_FOLDER", "youtube"),
} }
return config_content return config_content

View File

@ -9,7 +9,13 @@ from src.static_types import ConfigType, TAChannel, TAVideo
CONFIG: ConfigType = get_config() CONFIG: ConfigType = get_config()
TIMEOUT = 60 TIMEOUT = 60
EXPECTED_ENV = {"ta_url", "ta_token", "jf_url", "jf_token", "ta_video_path"} EXPECTED_ENV = {
"ta_url",
"ta_token",
"jf_url",
"jf_token",
"ta_video_path",
} # jf_folder is optional
class Jellyfin: class Jellyfin:

View File

@ -22,8 +22,10 @@ class Library:
"""get collection id for youtube folder""" """get collection id for youtube folder"""
path: str = "Items?Recursive=true&includeItemTypes=Folder" path: str = "Items?Recursive=true&includeItemTypes=Folder"
folders: dict = Jellyfin().get(path) folders: dict = Jellyfin().get(path)
folder_name: str = get_config()["jf_folder"]
for folder in folders["Items"]: for folder in folders["Items"]:
if folder.get("Name").lower() == "youtube": if folder.get("Name").lower() == folder_name.lower():
return folder.get("Id") return folder.get("Id")
raise ValueError("youtube folder not found") raise ValueError("youtube folder not found")

View File

@ -11,6 +11,7 @@ class ConfigType(TypedDict):
ta_token: str ta_token: str
jf_url: str jf_url: str
jf_token: str jf_token: str
jf_folder: str
class TAChannel(TypedDict): class TAChannel(TypedDict):

View File

@ -3,5 +3,6 @@
"ta_url": "http://tubearchivist.local", "ta_url": "http://tubearchivist.local",
"ta_token": "xxxxxxxxxxxxxxxx", "ta_token": "xxxxxxxxxxxxxxxx",
"jf_url": "http://jellyfin.local:8096", "jf_url": "http://jellyfin.local:8096",
"jf_token": "yyyyyyyyyyyyyyyy" "jf_token": "yyyyyyyyyyyyyyyy",
"jf_folder": "YouTube"
} }

View File

@ -17,12 +17,12 @@ function validate {
echo "running black" echo "running black"
black --force-exclude "migrations/*" --diff --color --check -l 79 "$check_path" black --force-exclude "migrations/*" --diff --color --check -l 79 "$check_path"
echo "running codespell" echo "running codespell"
codespell --skip="./.git,./.venv,./.mypy_cache" "$check_path" codespell --skip="./.git,./.venv,venv,./.mypy_cache" "$check_path"
echo "running flake8" echo "running flake8"
flake8 "$check_path" --exclude "migrations,.venv" --count --max-complexity=10 \ flake8 "$check_path" --exclude "migrations,.venv,venv" --count --max-complexity=10 \
--max-line-length=79 --show-source --statistics --max-line-length=79 --show-source --statistics
echo "running isort" echo "running isort"
isort --skip "migrations" --skip ".venv" --check-only --diff --profile black -l 79 "$check_path" isort --skip "migrations" --skip ".venv" --skip "venv" --check-only --diff --profile black -l 79 "$check_path"
printf " \n> all validations passed\n" printf " \n> all validations passed\n"
} }