Clean up media names

Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
This commit is contained in:
2025-07-10 12:20:48 +01:00
parent 479af0caf5
commit 249f6fcac0
3 changed files with 242 additions and 80 deletions

View File

@@ -22,8 +22,8 @@ in
"d /mnt/storage/private/storm/containers/storage/volumes/media/_data 700 storm storm" "d /mnt/storage/private/storm/containers/storage/volumes/media/_data 700 storm storm"
"d /mnt/storage/private/storm/containers/storage/volumes/media/_data/films 755 storm storm" "d /mnt/storage/private/storm/containers/storage/volumes/media/_data/films 755 storm storm"
"d /mnt/storage/private/storm/containers/storage/volumes/media/_data/shows 755 storm storm" "d /mnt/storage/private/storm/containers/storage/volumes/media/_data/shows 755 storm storm"
"d /mnt/storage/private/storm/containers/storage/volumes/media/_data/anime-films 755 storm storm" "d /mnt/storage/private/storm/containers/storage/volumes/media/_data/anime/films 755 storm storm"
"d /mnt/storage/private/storm/containers/storage/volumes/media/_data/anime-shows 755 storm storm" "d /mnt/storage/private/storm/containers/storage/volumes/media/_data/anime/shows 755 storm storm"
]; ];
sops = { sops = {
@@ -34,10 +34,12 @@ in
"prowlarr/apiKey".sopsFile = ../../../../../../secrets/secrets.yaml; "prowlarr/apiKey".sopsFile = ../../../../../../secrets/secrets.yaml;
"radarr-films/apiKey".sopsFile = ../../../../../../secrets/secrets.yaml; "radarr/apiKey".sopsFile = ../../../../../../secrets/secrets.yaml;
"radarr-anime-films/apiKey".sopsFile = ../../../../../../secrets/secrets.yaml; "radarr-uhd/apiKey".sopsFile = ../../../../../../secrets/secrets.yaml;
"sonarr-shows/apiKey".sopsFile = ../../../../../../secrets/secrets.yaml; "radarr-anime/apiKey".sopsFile = ../../../../../../secrets/secrets.yaml;
"sonarr-anime-shows/apiKey".sopsFile = ../../../../../../secrets/secrets.yaml; "sonarr/apiKey".sopsFile = ../../../../../../secrets/secrets.yaml;
"sonarr-uhd/apiKey".sopsFile = ../../../../../../secrets/secrets.yaml;
"sonarr-anime/apiKey".sopsFile = ../../../../../../secrets/secrets.yaml;
}; };
templates = { templates = {
@@ -84,10 +86,10 @@ in
PROWLARR_API_KEY=${hmConfig.sops.placeholder."prowlarr/apiKey"} PROWLARR_API_KEY=${hmConfig.sops.placeholder."prowlarr/apiKey"}
''; '';
prowlarr-radarr-films.content = builtins.readFile ( prowlarr-radarr.content = builtins.readFile (
(pkgs.formats.json { }).generate "radarr-films.json" { (pkgs.formats.json { }).generate "radarr.json" {
enable = true; enable = true;
name = "Radarr (Films)"; name = "Radarr";
implementation = "Radarr"; implementation = "Radarr";
configContract = "RadarrSettings"; configContract = "RadarrSettings";
syncLevel = "fullSync"; syncLevel = "fullSync";
@@ -98,20 +100,20 @@ in
} }
{ {
name = "baseUrl"; name = "baseUrl";
value = "http://radarr-films:7878"; value = "http://radarr:7878";
} }
{ {
name = "apiKey"; name = "apiKey";
value = hmConfig.sops.placeholder."radarr-films/apiKey"; value = hmConfig.sops.placeholder."radarr/apiKey";
} }
]; ];
} }
); );
prowlarr-radarr-anime-films.content = builtins.readFile ( prowlarr-radarr-uhd.content = builtins.readFile (
(pkgs.formats.json { }).generate "radarr-anime-films.json" { (pkgs.formats.json { }).generate "radarr-uhd.json" {
enable = true; enable = true;
name = "Radarr (Anime Films)"; name = "Radarr (UHD)";
implementation = "Radarr"; implementation = "Radarr";
configContract = "RadarrSettings"; configContract = "RadarrSettings";
syncLevel = "fullSync"; syncLevel = "fullSync";
@@ -122,20 +124,44 @@ in
} }
{ {
name = "baseUrl"; name = "baseUrl";
value = "http://radarr-anime-films:7878"; value = "http://radarr-uhd:7878";
} }
{ {
name = "apiKey"; name = "apiKey";
value = hmConfig.sops.placeholder."radarr-anime-films/apiKey"; value = hmConfig.sops.placeholder."radarr-uhd/apiKey";
} }
]; ];
} }
); );
prowlarr-sonarr-shows.content = builtins.readFile ( prowlarr-radarr-anime.content = builtins.readFile (
(pkgs.formats.json { }).generate "sonarr-shows.json" { (pkgs.formats.json { }).generate "radarr-anime.json" {
enable = true; enable = true;
name = "Sonarr (Shows)"; name = "Radarr (Anime)";
implementation = "Radarr";
configContract = "RadarrSettings";
syncLevel = "fullSync";
fields = [
{
name = "prowlarrUrl";
value = "http://prowlarr:9696";
}
{
name = "baseUrl";
value = "http://radarr-anime:7878";
}
{
name = "apiKey";
value = hmConfig.sops.placeholder."radarr-anime/apiKey";
}
];
}
);
prowlarr-sonarr.content = builtins.readFile (
(pkgs.formats.json { }).generate "sonarr.json" {
enable = true;
name = "Sonarr";
implementation = "Sonarr"; implementation = "Sonarr";
configContract = "SonarrSettings"; configContract = "SonarrSettings";
syncLevel = "fullSync"; syncLevel = "fullSync";
@@ -146,20 +172,20 @@ in
} }
{ {
name = "baseUrl"; name = "baseUrl";
value = "http://sonarr-shows:8989"; value = "http://sonarr:8989";
} }
{ {
name = "apiKey"; name = "apiKey";
value = hmConfig.sops.placeholder."sonarr-shows/apiKey"; value = hmConfig.sops.placeholder."sonarr/apiKey";
} }
]; ];
} }
); );
prowlarr-sonarr-anime-shows.content = builtins.readFile ( prowlarr-sonarr-uhd.content = builtins.readFile (
(pkgs.formats.json { }).generate "sonarr-anime-shows.json" { (pkgs.formats.json { }).generate "sonarr-uhd.json" {
enable = true; enable = true;
name = "Sonarr (Anime Shows)"; name = "Sonarr (UHD)";
implementation = "Sonarr"; implementation = "Sonarr";
configContract = "SonarrSettings"; configContract = "SonarrSettings";
syncLevel = "fullSync"; syncLevel = "fullSync";
@@ -170,30 +196,62 @@ in
} }
{ {
name = "baseUrl"; name = "baseUrl";
value = "http://sonarr-anime-shows:8989"; value = "http://sonarr-uhd:8989";
} }
{ {
name = "apiKey"; name = "apiKey";
value = hmConfig.sops.placeholder."sonarr-anime-shows/apiKey"; value = hmConfig.sops.placeholder."sonarr-uhd/apiKey";
} }
]; ];
} }
); );
radarr-films-env.content = '' prowlarr-sonarr-anime.content = builtins.readFile (
RADARR_API_KEY=${hmConfig.sops.placeholder."radarr-films/apiKey"} (pkgs.formats.json { }).generate "sonarr-anime.json" {
enable = true;
name = "Sonarr (Anime)";
implementation = "Sonarr";
configContract = "SonarrSettings";
syncLevel = "fullSync";
fields = [
{
name = "prowlarrUrl";
value = "http://prowlarr:9696";
}
{
name = "baseUrl";
value = "http://sonarr-anime:8989";
}
{
name = "apiKey";
value = hmConfig.sops.placeholder."sonarr-anime/apiKey";
}
];
}
);
radarr-env.content = ''
RADARR_API_KEY=${hmConfig.sops.placeholder."radarr/apiKey"}
''; '';
radarr-anime-films-env.content = '' radarr-uhd-env.content = ''
RADARR_API_KEY=${hmConfig.sops.placeholder."radarr-anime-films/apiKey"} RADARR_API_KEY=${hmConfig.sops.placeholder."radarr-uhd/apiKey"}
''; '';
sonarr-shows-env.content = '' radarr-anime-env.content = ''
SONARR_API_KEY=${hmConfig.sops.placeholder."sonarr-shows/apiKey"} RADARR_API_KEY=${hmConfig.sops.placeholder."radarr-anime/apiKey"}
''; '';
sonarr-anime-shows-env.content = '' sonarr-env.content = ''
SONARR_API_KEY=${hmConfig.sops.placeholder."sonarr-anime-shows/apiKey"} SONARR_API_KEY=${hmConfig.sops.placeholder."sonarr/apiKey"}
'';
sonarr-uhd-env.content = ''
SONARR_API_KEY=${hmConfig.sops.placeholder."sonarr-uhd/apiKey"}
'';
sonarr-anime-env.content = ''
SONARR_API_KEY=${hmConfig.sops.placeholder."sonarr-anime/apiKey"}
''; '';
}; };
}; };
@@ -213,10 +271,12 @@ in
prowlarr = { }; prowlarr = { };
radarr-films = { }; radarr = { };
radarr-anime-films = { }; radarr-uhd = { };
sonarr-shows = { }; radarr-anime = { };
sonarr-anime-shows = { }; sonarr = { };
sonarr-uhd = { };
sonarr-anime = { };
}; };
containers = { containers = {
@@ -296,10 +356,12 @@ in
"${setup}:/etc/prowlarr/setup.sh:ro" "${setup}:/etc/prowlarr/setup.sh:ro"
"${postStart}:/etc/prowlarr/post-start.sh:ro" "${postStart}:/etc/prowlarr/post-start.sh:ro"
"${./prowlarr/indexers}:/etc/prowlarr/indexers:ro" "${./prowlarr/indexers}:/etc/prowlarr/indexers:ro"
"${hmConfig.sops.templates.prowlarr-radarr-films.path}:/etc/prowlarr/apps/radarr-films.json:ro" "${hmConfig.sops.templates.prowlarr-radarr.path}:/etc/prowlarr/apps/radarr.json:ro"
"${hmConfig.sops.templates.prowlarr-radarr-anime-films.path}:/etc/prowlarr/apps/radarr-anime-films.json:ro" "${hmConfig.sops.templates.prowlarr-radarr-uhd.path}:/etc/prowlarr/apps/radarr-uhd.json:ro"
"${hmConfig.sops.templates.prowlarr-sonarr-shows.path}:/etc/prowlarr/apps/sonarr-shows.json:ro" "${hmConfig.sops.templates.prowlarr-radarr-anime.path}:/etc/prowlarr/apps/radarr-anime.json:ro"
"${hmConfig.sops.templates.prowlarr-sonarr-anime-shows.path}:/etc/prowlarr/apps/sonarr-anime-shows.json:ro" "${hmConfig.sops.templates.prowlarr-sonarr.path}:/etc/prowlarr/apps/sonarr.json:ro"
"${hmConfig.sops.templates.prowlarr-sonarr-uhd.path}:/etc/prowlarr/apps/sonarr-uhd.json:ro"
"${hmConfig.sops.templates.prowlarr-sonarr-anime.path}:/etc/prowlarr/apps/sonarr-anime.json:ro"
"${volumes.prowlarr.ref}:/var/lib/prowlarr" "${volumes.prowlarr.ref}:/var/lib/prowlarr"
]; ];
environments.PROWLARR_URL_BASE = "/manage/indexers"; environments.PROWLARR_URL_BASE = "/manage/indexers";
@@ -317,10 +379,12 @@ in
"sops-nix.service" "sops-nix.service"
"${containers.transmission._serviceName}.service" "${containers.transmission._serviceName}.service"
"${containers.flaresolverr._serviceName}.service" "${containers.flaresolverr._serviceName}.service"
"${containers.radarr-films._serviceName}.service" "${containers.radarr._serviceName}.service"
"${containers.radarr-anime-films._serviceName}.service" "${containers.radarr-uhd._serviceName}.service"
"${containers.sonarr-shows._serviceName}.service" "${containers.radarr-anime._serviceName}.service"
"${containers.sonarr-anime-shows._serviceName}.service" "${containers.sonarr._serviceName}.service"
"${containers.sonarr-uhd._serviceName}.service"
"${containers.sonarr-anime._serviceName}.service"
]; ];
in in
{ {
@@ -329,7 +393,7 @@ in
}; };
}; };
radarr-films = { radarr = {
containerConfig = { containerConfig = {
image = "docker-archive:${selfPkgs.docker-radarr}"; image = "docker-archive:${selfPkgs.docker-radarr}";
networks = [ networks = [
@@ -347,21 +411,21 @@ in
in in
[ [
"${setup}:/etc/radarr/setup.sh:ro" "${setup}:/etc/radarr/setup.sh:ro"
"${volumes.radarr-films.ref}:/var/lib/radarr" "${volumes.radarr.ref}:/var/lib/radarr"
"/mnt/storage/private/storm/containers/storage/volumes/transmission-data/_data:/var/lib/transmission" "/mnt/storage/private/storm/containers/storage/volumes/transmission-data/_data:/var/lib/transmission"
"/mnt/storage/private/storm/containers/storage/volumes/media/_data:/var/lib/media" "/mnt/storage/private/storm/containers/storage/volumes/media/_data:/var/lib/media"
]; ];
environments = { environments = {
RADARR_INSTANCE_NAME = "Radarr (Films)"; RADARR_INSTANCE_NAME = "Radarr";
RADARR_URL_BASE = "/manage/films"; RADARR_URL_BASE = "/manage/films";
RADARR_ROOT_FOLDER = "/var/lib/media/films"; RADARR_ROOT_FOLDER = "/var/lib/media/films";
RADARR_DOWNLOAD_CATEGORY = "radarr-films"; RADARR_DOWNLOAD_CATEGORY = "radarr";
}; };
environmentFiles = [ hmConfig.sops.templates.radarr-films-env.path ]; environmentFiles = [ hmConfig.sops.templates.radarr-env.path ];
labels = [ labels = [
"traefik.enable=true" "traefik.enable=true"
"traefik.http.routers.radarr-films.rule=Host(`media.karaolidis.com`) && PathPrefix(`/manage/films`)" "traefik.http.routers.radarr.rule=Host(`media.karaolidis.com`) && PathPrefix(`/manage/films`)"
"traefik.http.routers.radarr-films.middlewares=authelia@docker" "traefik.http.routers.radarr.middlewares=authelia@docker"
]; ];
}; };
@@ -378,7 +442,7 @@ in
}; };
}; };
radarr-anime-films = { radarr-uhd = {
containerConfig = { containerConfig = {
image = "docker-archive:${selfPkgs.docker-radarr}"; image = "docker-archive:${selfPkgs.docker-radarr}";
networks = [ networks = [
@@ -396,21 +460,21 @@ in
in in
[ [
"${setup}:/etc/radarr/setup.sh:ro" "${setup}:/etc/radarr/setup.sh:ro"
"${volumes.radarr-anime-films.ref}:/var/lib/radarr" "${volumes.radarr-uhd.ref}:/var/lib/radarr"
"/mnt/storage/private/storm/containers/storage/volumes/transmission-data/_data:/var/lib/transmission" "/mnt/storage/private/storm/containers/storage/volumes/transmission-data/_data:/var/lib/transmission"
"/mnt/storage/private/storm/containers/storage/volumes/media/_data:/var/lib/media" "/mnt/storage/private/storm/containers/storage/volumes/media/_data:/var/lib/media"
]; ];
environments = { environments = {
RADARR_INSTANCE_NAME = "Radarr (Anime Films)"; RADARR_INSTANCE_NAME = "Radarr (UHD)";
RADARR_URL_BASE = "/manage/anime-films"; RADARR_URL_BASE = "/manage/films/uhd";
RADARR_ROOT_FOLDER = "/var/lib/media/anime-films"; RADARR_ROOT_FOLDER = "/var/lib/media/films";
RADARR_DOWNLOAD_CATEGORY = "radarr-anime-films"; RADARR_DOWNLOAD_CATEGORY = "radarr-uhd";
}; };
environmentFiles = [ hmConfig.sops.templates.radarr-anime-films-env.path ]; environmentFiles = [ hmConfig.sops.templates.radarr-uhd-env.path ];
labels = [ labels = [
"traefik.enable=true" "traefik.enable=true"
"traefik.http.routers.radarr-anime-films.rule=Host(`media.karaolidis.com`) && PathPrefix(`/manage/anime-films`)" "traefik.http.routers.radarr-uhd.rule=Host(`media.karaolidis.com`) && PathPrefix(`/manage/films/uhd`)"
"traefik.http.routers.radarr-anime-films.middlewares=authelia@docker" "traefik.http.routers.radarr-uhd.middlewares=authelia@docker"
]; ];
}; };
@@ -427,7 +491,56 @@ in
}; };
}; };
sonarr-shows = { radarr-anime = {
containerConfig = {
image = "docker-archive:${selfPkgs.docker-radarr}";
networks = [
networks.media.ref
networks.transmission.ref
networks.traefik.ref
];
volumes =
let
setup = pkgs.writeTextFile {
name = "setup.sh";
executable = true;
text = builtins.readFile ./radarr/setup.sh;
};
in
[
"${setup}:/etc/radarr/setup.sh:ro"
"${volumes.radarr-anime.ref}:/var/lib/radarr"
"/mnt/storage/private/storm/containers/storage/volumes/transmission-data/_data:/var/lib/transmission"
"/mnt/storage/private/storm/containers/storage/volumes/media/_data:/var/lib/media"
];
environments = {
RADARR_INSTANCE_NAME = "Radarr (Anime)";
RADARR_URL_BASE = "/manage/anime/films";
RADARR_ROOT_FOLDER = "/var/lib/media/anime/films";
RADARR_DOWNLOAD_CATEGORY = "radarr-anime";
};
environmentFiles = [ hmConfig.sops.templates.radarr-anime-env.path ];
labels = [
"traefik.enable=true"
"traefik.http.routers.radarr-anime.rule=Host(`media.karaolidis.com`) && PathPrefix(`/manage/anime/films`)"
"traefik.http.routers.radarr-anime.middlewares=authelia@docker"
];
};
unitConfig =
let
dependencies = [
"${containers.transmission._serviceName}.service"
"sops-nix.service"
];
in
{
After = dependencies;
Requires = dependencies;
};
};
sonarr = {
containerConfig = { containerConfig = {
image = "docker-archive:${selfPkgs.docker-sonarr}"; image = "docker-archive:${selfPkgs.docker-sonarr}";
networks = [ networks = [
@@ -445,21 +558,21 @@ in
in in
[ [
"${setup}:/etc/sonarr/setup.sh:ro" "${setup}:/etc/sonarr/setup.sh:ro"
"${volumes.sonarr-shows.ref}:/var/lib/sonarr" "${volumes.sonarr.ref}:/var/lib/sonarr"
"/mnt/storage/private/storm/containers/storage/volumes/transmission-data/_data:/var/lib/transmission" "/mnt/storage/private/storm/containers/storage/volumes/transmission-data/_data:/var/lib/transmission"
"/mnt/storage/private/storm/containers/storage/volumes/media/_data:/var/lib/media" "/mnt/storage/private/storm/containers/storage/volumes/media/_data:/var/lib/media"
]; ];
environments = { environments = {
SONARR_INSTANCE_NAME = "Sonarr (Shows)"; SONARR_INSTANCE_NAME = "Sonarr";
SONARR_URL_BASE = "/manage/shows"; SONARR_URL_BASE = "/manage/shows";
SONARR_ROOT_FOLDER = "/var/lib/media/shows"; SONARR_ROOT_FOLDER = "/var/lib/media/shows";
SONARR_DOWNLOAD_CATEGORY = "sonarr-shows"; SONARR_DOWNLOAD_CATEGORY = "sonarr";
}; };
environmentFiles = [ hmConfig.sops.templates.sonarr-shows-env.path ]; environmentFiles = [ hmConfig.sops.templates.sonarr-env.path ];
labels = [ labels = [
"traefik.enable=true" "traefik.enable=true"
"traefik.http.routers.sonarr-shows.rule=Host(`media.karaolidis.com`) && PathPrefix(`/manage/shows`)" "traefik.http.routers.sonarr.rule=Host(`media.karaolidis.com`) && PathPrefix(`/manage/shows`)"
"traefik.http.routers.sonarr-shows.middlewares=authelia@docker" "traefik.http.routers.sonarr.middlewares=authelia@docker"
]; ];
}; };
@@ -476,7 +589,7 @@ in
}; };
}; };
sonarr-anime-shows = { sonarr-uhd = {
containerConfig = { containerConfig = {
image = "docker-archive:${selfPkgs.docker-sonarr}"; image = "docker-archive:${selfPkgs.docker-sonarr}";
networks = [ networks = [
@@ -494,21 +607,70 @@ in
in in
[ [
"${setup}:/etc/sonarr/setup.sh:ro" "${setup}:/etc/sonarr/setup.sh:ro"
"${volumes.sonarr-anime-shows.ref}:/var/lib/sonarr" "${volumes.sonarr-uhd.ref}:/var/lib/sonarr"
"/mnt/storage/private/storm/containers/storage/volumes/transmission-data/_data:/var/lib/transmission" "/mnt/storage/private/storm/containers/storage/volumes/transmission-data/_data:/var/lib/transmission"
"/mnt/storage/private/storm/containers/storage/volumes/media/_data:/var/lib/media" "/mnt/storage/private/storm/containers/storage/volumes/media/_data:/var/lib/media"
]; ];
environments = { environments = {
SONARR_INSTANCE_NAME = "Sonarr (Anime Shows)"; SONARR_INSTANCE_NAME = "Sonarr (UHD)";
SONARR_URL_BASE = "/manage/anime-shows"; SONARR_URL_BASE = "/manage/shows/uhd";
SONARR_ROOT_FOLDER = "/var/lib/media/anime-shows"; SONARR_ROOT_FOLDER = "/var/lib/media/shows";
SONARR_DOWNLOAD_CATEGORY = "sonarr-anime-shows"; SONARR_DOWNLOAD_CATEGORY = "sonarr-uhd";
}; };
environmentFiles = [ hmConfig.sops.templates.sonarr-anime-shows-env.path ]; environmentFiles = [ hmConfig.sops.templates.sonarr-uhd-env.path ];
labels = [ labels = [
"traefik.enable=true" "traefik.enable=true"
"traefik.http.routers.sonarr-anime-shows.rule=Host(`media.karaolidis.com`) && PathPrefix(`/manage/anime-shows`)" "traefik.http.routers.sonarr-uhd.rule=Host(`media.karaolidis.com`) && PathPrefix(`/manage/shows/uhd`)"
"traefik.http.routers.sonarr-anime-shows.middlewares=authelia@docker" "traefik.http.routers.sonarr-uhd.middlewares=authelia@docker"
];
};
unitConfig =
let
dependencies = [
"${containers.transmission._serviceName}.service"
"sops-nix.service"
];
in
{
After = dependencies;
Requires = dependencies;
};
};
sonarr-anime = {
containerConfig = {
image = "docker-archive:${selfPkgs.docker-sonarr}";
networks = [
networks.media.ref
networks.transmission.ref
networks.traefik.ref
];
volumes =
let
setup = pkgs.writeTextFile {
name = "setup.sh";
executable = true;
text = builtins.readFile ./sonarr/setup.sh;
};
in
[
"${setup}:/etc/sonarr/setup.sh:ro"
"${volumes.sonarr-anime.ref}:/var/lib/sonarr"
"/mnt/storage/private/storm/containers/storage/volumes/transmission-data/_data:/var/lib/transmission"
"/mnt/storage/private/storm/containers/storage/volumes/media/_data:/var/lib/media"
];
environments = {
SONARR_INSTANCE_NAME = "Sonarr (Anime)";
SONARR_URL_BASE = "/manage/anime/shows";
SONARR_ROOT_FOLDER = "/var/lib/media/anime/shows";
SONARR_DOWNLOAD_CATEGORY = "sonarr-anime";
};
environmentFiles = [ hmConfig.sops.templates.sonarr-anime-env.path ];
labels = [
"traefik.enable=true"
"traefik.http.routers.sonarr-anime.rule=Host(`media.karaolidis.com`) && PathPrefix(`/manage/anime/shows`)"
"traefik.http.routers.sonarr-anime.middlewares=authelia@docker"
]; ];
}; };

View File

@@ -121,7 +121,7 @@
"LyricFetcherOrder": [], "LyricFetcherOrder": [],
"PathInfos": [ "PathInfos": [
{ {
"Path": "/var/lib/media/anime-films" "Path": "/var/lib/media/anime/films"
} }
] ]
} }

View File

@@ -197,7 +197,7 @@
"LyricFetcherOrder": [], "LyricFetcherOrder": [],
"PathInfos": [ "PathInfos": [
{ {
"Path": "/var/lib/media/anime-shows" "Path": "/var/lib/media/anime/shows"
} }
] ]
} }