diff --git a/CSS/addons/bazarr/bazarr-4k-logo.css b/CSS/addons/bazarr/bazarr-4k-logo/bazarr-4k-logo.css
similarity index 100%
rename from CSS/addons/bazarr/bazarr-4k-logo.css
rename to CSS/addons/bazarr/bazarr-4k-logo/bazarr-4k-logo.css
diff --git a/CSS/addons/bazarr/bazarr4k.png b/CSS/addons/bazarr/bazarr-4k-logo/bazarr4k.png
similarity index 100%
rename from CSS/addons/bazarr/bazarr4k.png
rename to CSS/addons/bazarr/bazarr-4k-logo/bazarr4k.png
diff --git a/CSS/addons/plex/overseer-side-menu.css b/CSS/addons/plex/overseer-side-menu/overseer-side-menu.css
similarity index 100%
rename from CSS/addons/plex/overseer-side-menu.css
rename to CSS/addons/plex/overseer-side-menu/overseer-side-menu.css
diff --git a/CSS/addons/radarr/radarr-4k-logo.css b/CSS/addons/radarr/radarr-4k-logo/radarr-4k-logo.css
similarity index 100%
rename from CSS/addons/radarr/radarr-4k-logo.css
rename to CSS/addons/radarr/radarr-4k-logo/radarr-4k-logo.css
diff --git a/CSS/addons/radarr/radarr-v3-mobile.png b/CSS/addons/radarr/radarr-4k-logo/radarr-v3-mobile.png
similarity index 100%
rename from CSS/addons/radarr/radarr-v3-mobile.png
rename to CSS/addons/radarr/radarr-4k-logo/radarr-v3-mobile.png
diff --git a/CSS/addons/radarr/radarr4k-v3.png b/CSS/addons/radarr/radarr-4k-logo/radarr4k-v3.png
similarity index 100%
rename from CSS/addons/radarr/radarr4k-v3.png
rename to CSS/addons/radarr/radarr-4k-logo/radarr4k-v3.png
diff --git a/CSS/addons/radarr/radarr4k.png b/CSS/addons/radarr/radarr-4k-logo/radarr4k.png
similarity index 100%
rename from CSS/addons/radarr/radarr4k.png
rename to CSS/addons/radarr/radarr-4k-logo/radarr4k.png
diff --git a/CSS/addons/readarr/readarr-alt-logo.css b/CSS/addons/readarr/readarr-alt-logo/readarr-alt-logo.css
similarity index 100%
rename from CSS/addons/readarr/readarr-alt-logo.css
rename to CSS/addons/readarr/readarr-alt-logo/readarr-alt-logo.css
diff --git a/CSS/addons/readarr/readarr_alt.png b/CSS/addons/readarr/readarr-alt-logo/readarr_alt.png
similarity index 100%
rename from CSS/addons/readarr/readarr_alt.png
rename to CSS/addons/readarr/readarr-alt-logo/readarr_alt.png
diff --git a/CSS/addons/readarr/readme.md b/CSS/addons/readarr/readarr-alt-logo/readme.md
similarity index 100%
rename from CSS/addons/readarr/readme.md
rename to CSS/addons/readarr/readarr-alt-logo/readme.md
diff --git a/CSS/addons/sonarr/sonarr-4k-logo.css b/CSS/addons/sonarr/sonarr-4k-logo/sonarr-4k-logo.css
similarity index 100%
rename from CSS/addons/sonarr/sonarr-4k-logo.css
rename to CSS/addons/sonarr/sonarr-4k-logo/sonarr-4k-logo.css
diff --git a/CSS/addons/sonarr/sonarr-4k.png b/CSS/addons/sonarr/sonarr-4k-logo/sonarr-4k.png
similarity index 100%
rename from CSS/addons/sonarr/sonarr-4k.png
rename to CSS/addons/sonarr/sonarr-4k-logo/sonarr-4k.png
diff --git a/docker-mods/bazarr/root/etc/cont-init.d/98-themepark b/docker-mods/bazarr/root/etc/cont-init.d/98-themepark
index 30fd48ad..db18c082 100644
--- a/docker-mods/bazarr/root/etc/cont-init.d/98-themepark
+++ b/docker-mods/bazarr/root/etc/cont-init.d/98-themepark
@@ -43,7 +43,7 @@ if ! grep -q "${TP_DOMAIN}" "${APP_FILEPATH}"; then
sed -i "s/<\/head>/<\/head> /g" "${APP_FILEPATH}"
printf 'Stylesheet set to %s\n' "${TP_THEME}"
if [[ -n ${TP_ADDON} ]]; then
- sed -i "s/<\/head>/<\/head> /g" "${APP_FILEPATH}"
+ sed -i "s/<\/head>/<\/head> /g" "${APP_FILEPATH}"
printf 'Added custom addon: %s\n\n' "${TP_ADDON}"
fi
fi
diff --git a/docker-mods/radarr/root/etc/cont-init.d/98-themepark b/docker-mods/radarr/root/etc/cont-init.d/98-themepark
index 6200234d..6e62118a 100644
--- a/docker-mods/radarr/root/etc/cont-init.d/98-themepark
+++ b/docker-mods/radarr/root/etc/cont-init.d/98-themepark
@@ -47,7 +47,7 @@ if ! grep -q "${TP_DOMAIN}" "${APP_FILEPATH}"; then
sed -i "s/<\/head>/<\/head> /g" "${LOGIN_FILEPATH}"
printf 'Stylesheet set to %s\n' "${TP_THEME}"
if [[ -n ${TP_ADDON} ]]; then
- sed -i "s/<\/head>/<\/head> /g" "${APP_FILEPATH}"
+ sed -i "s/<\/head>/<\/head> /g" "${APP_FILEPATH}"
printf 'Added custom addon: %s\n\n' "${TP_ADDON}"
fi
fi
\ No newline at end of file
diff --git a/docker-mods/readarr/root/etc/cont-init.d/98-themepark b/docker-mods/readarr/root/etc/cont-init.d/98-themepark
index 2cfddf56..ed1537e2 100644
--- a/docker-mods/readarr/root/etc/cont-init.d/98-themepark
+++ b/docker-mods/readarr/root/etc/cont-init.d/98-themepark
@@ -46,7 +46,7 @@ if ! grep -q "${TP_DOMAIN}" "${APP_FILEPATH}"; then
sed -i "s/<\/head>/<\/head> /g" "${LOGIN_FILEPATH}"
printf 'Stylesheet set to %s\n' "${TP_THEME}"
if [[ -n ${TP_ADDON} ]]; then
- sed -i "s/<\/head>/<\/head> /g" "${APP_FILEPATH}"
+ sed -i "s/<\/head>/<\/head> /g" "${APP_FILEPATH}"
printf 'Added custom addon: %s\n\n' "${TP_ADDON}"
fi
fi
diff --git a/docker-mods/sonarr/root/etc/cont-init.d/98-themepark b/docker-mods/sonarr/root/etc/cont-init.d/98-themepark
index 8c36de2e..2a88169d 100644
--- a/docker-mods/sonarr/root/etc/cont-init.d/98-themepark
+++ b/docker-mods/sonarr/root/etc/cont-init.d/98-themepark
@@ -47,7 +47,7 @@ if ! grep -q "${TP_DOMAIN}" "${APP_FILEPATH}"; then
sed -i "s/<\/head>/<\/head> /g" "${LOGIN_FILEPATH}"
printf 'Stylesheet set to %s\n' "${TP_THEME}"
if [[ -n ${TP_ADDON} ]]; then
- sed -i "s/<\/head>/<\/head> /g" "${APP_FILEPATH}"
+ sed -i "s/<\/head>/<\/head> /g" "${APP_FILEPATH}"
printf 'Added custom addon: %s\n\n' "${TP_ADDON}"
fi
fi
\ No newline at end of file
diff --git a/themes.json b/themes.json
new file mode 100644
index 00000000..8ba1baec
--- /dev/null
+++ b/themes.json
@@ -0,0 +1,409 @@
+{
+ "applications": {
+ "petio": {
+ "base_css": "https://theme-park.dev/CSS/themes/petio/petio-base.css?sha=4dd9253",
+ "addons": {}
+ },
+ "rutorrent": {
+ "base_css": "https://theme-park.dev/CSS/themes/rutorrent/rutorrent-base.css?sha=4dd9253",
+ "addons": {}
+ },
+ "duplicacy": {
+ "base_css": "https://theme-park.dev/CSS/themes/duplicacy/duplicacy-base.css?sha=4dd9253",
+ "addons": {}
+ },
+ "gaps": {
+ "base_css": "https://theme-park.dev/CSS/themes/gaps/gaps-base.css?sha=4dd9253",
+ "addons": {}
+ },
+ "pihole": {
+ "base_css": "https://theme-park.dev/CSS/themes/pihole/pihole-base.css?sha=4dd9253",
+ "addons": {}
+ },
+ "kitana": {
+ "base_css": "https://theme-park.dev/CSS/themes/kitana/kitana-base.css?sha=4dd9253",
+ "addons": {}
+ },
+ "bitwarden": {
+ "base_css": "https://theme-park.dev/CSS/themes/bitwarden/bitwarden-base.css?sha=4dd9253",
+ "addons": {}
+ },
+ "prowlarr": {
+ "base_css": "https://theme-park.dev/CSS/themes/prowlarr/prowlarr-base.css?sha=4dd9253",
+ "addons": {}
+ },
+ "logarr": {
+ "base_css": "https://theme-park.dev/CSS/themes/logarr/logarr-base.css?sha=4dd9253",
+ "addons": {}
+ },
+ "adguard": {
+ "base_css": "https://theme-park.dev/CSS/themes/adguard/adguard-base.css?sha=4dd9253",
+ "addons": {}
+ },
+ "resilio-sync": {
+ "base_css": "https://theme-park.dev/CSS/themes/resilio-sync/resilio-sync-base.css?sha=4dd9253",
+ "addons": {}
+ },
+ "librespeed": {
+ "base_css": "https://theme-park.dev/CSS/themes/librespeed/librespeed-base.css?sha=4dd9253",
+ "addons": {}
+ },
+ "deluge": {
+ "base_css": "https://theme-park.dev/CSS/themes/deluge/deluge-base.css?sha=4dd9253",
+ "addons": {}
+ },
+ "unraid": {
+ "base_css": "https://theme-park.dev/CSS/themes/unraid/unraid-base.css?sha=4dd9253",
+ "addons": {
+ "login-page": {
+ "alien": {
+ "css": [
+ "https://theme-park.dev/CSS/addons/unraid/login-page/alien/green.css?sha=4dd9253",
+ "https://theme-park.dev/CSS/addons/unraid/login-page/alien/white.css?sha=4dd9253",
+ "https://theme-park.dev/CSS/addons/unraid/login-page/alien/red.css?sha=4dd9253",
+ "https://theme-park.dev/CSS/addons/unraid/login-page/alien/blue.css?sha=4dd9253",
+ "https://theme-park.dev/CSS/addons/unraid/login-page/alien/custom.css?sha=4dd9253",
+ "https://theme-park.dev/CSS/addons/unraid/login-page/alien/amber.css?sha=4dd9253",
+ "https://theme-park.dev/CSS/addons/unraid/login-page/alien/retro-terminal-base.css?sha=4dd9253"
+ ]
+ },
+ "fallout": {
+ "css": [
+ "https://theme-park.dev/CSS/addons/unraid/login-page/fallout/green.css?sha=4dd9253",
+ "https://theme-park.dev/CSS/addons/unraid/login-page/fallout/white.css?sha=4dd9253",
+ "https://theme-park.dev/CSS/addons/unraid/login-page/fallout/red.css?sha=4dd9253",
+ "https://theme-park.dev/CSS/addons/unraid/login-page/fallout/blue.css?sha=4dd9253",
+ "https://theme-park.dev/CSS/addons/unraid/login-page/fallout/custom.css?sha=4dd9253",
+ "https://theme-park.dev/CSS/addons/unraid/login-page/fallout/amber.css?sha=4dd9253",
+ "https://theme-park.dev/CSS/addons/unraid/login-page/fallout/retro-terminal-base.css?sha=4dd9253"
+ ]
+ },
+ "retro-terminal": {
+ "css": [
+ "https://theme-park.dev/CSS/addons/unraid/login-page/retro-terminal/green.css?sha=4dd9253",
+ "https://theme-park.dev/CSS/addons/unraid/login-page/retro-terminal/white.css?sha=4dd9253",
+ "https://theme-park.dev/CSS/addons/unraid/login-page/retro-terminal/red.css?sha=4dd9253",
+ "https://theme-park.dev/CSS/addons/unraid/login-page/retro-terminal/blue.css?sha=4dd9253",
+ "https://theme-park.dev/CSS/addons/unraid/login-page/retro-terminal/custom.css?sha=4dd9253",
+ "https://theme-park.dev/CSS/addons/unraid/login-page/retro-terminal/amber.css?sha=4dd9253",
+ "https://theme-park.dev/CSS/addons/unraid/login-page/retro-terminal/retro-terminal-base.css?sha=4dd9253"
+ ]
+ }
+ }
+ }
+ },
+ "gitea": {
+ "base_css": "https://theme-park.dev/CSS/themes/gitea/gitea-base.css?sha=4dd9253",
+ "addons": {}
+ },
+ "emby": {
+ "base_css": "https://theme-park.dev/CSS/themes/emby/emby-base.css?sha=4dd9253",
+ "addons": {}
+ },
+ "transmission": {
+ "base_css": "https://theme-park.dev/CSS/themes/transmission/transmission-base.css?sha=4dd9253",
+ "addons": {}
+ },
+ "plpp": {
+ "base_css": "https://theme-park.dev/CSS/themes/plpp/plpp-base.css?sha=4dd9253",
+ "addons": {}
+ },
+ "organizr": {
+ "base_css": "https://theme-park.dev/CSS/themes/organizr/organizr-base.css?sha=4dd9253",
+ "addons": {
+ "glass": {
+ "css": [
+ "https://theme-park.dev/CSS/addons/organizr/glass/glass-login.css?sha=4dd9253",
+ "https://theme-park.dev/CSS/addons/organizr/glass/glass-base.css?sha=4dd9253"
+ ]
+ }
+ }
+ },
+ "nzbget": {
+ "base_css": "https://theme-park.dev/CSS/themes/nzbget/nzbget-base.css?sha=4dd9253",
+ "addons": {}
+ },
+ "bazarr": {
+ "base_css": "https://theme-park.dev/CSS/themes/bazarr/bazarr-base.css?sha=4dd9253",
+ "addons": {
+ "bazarr-4k-logo": {
+ "css": [
+ "https://theme-park.dev/CSS/addons/bazarr/bazarr-4k-logo/bazarr-4k-logo.css?sha=4dd9253"
+ ]
+ }
+ }
+ },
+ "moviematch": {
+ "base_css": "https://theme-park.dev/CSS/themes/moviematch/moviematch-base.css?sha=4dd9253",
+ "addons": {}
+ },
+ "vuetorrent": {
+ "base_css": "https://theme-park.dev/CSS/themes/vuetorrent/vuetorrent-base.css?sha=4dd9253",
+ "addons": {}
+ },
+ "sabnzbd": {
+ "base_css": "https://theme-park.dev/CSS/themes/sabnzbd/sabnzbd-base.css?sha=4dd9253",
+ "addons": {}
+ },
+ "synclounge": {
+ "base_css": "https://theme-park.dev/CSS/themes/synclounge/synclounge-base.css?sha=4dd9253",
+ "addons": {}
+ },
+ "netdata": {
+ "base_css": "https://theme-park.dev/CSS/themes/netdata/netdata-base.css?sha=4dd9253",
+ "addons": {}
+ },
+ "grafana": {
+ "base_css": "https://theme-park.dev/CSS/themes/grafana/grafana-base.css?sha=4dd9253",
+ "addons": {}
+ },
+ "jackett": {
+ "base_css": "https://theme-park.dev/CSS/themes/jackett/jackett-base.css?sha=4dd9253",
+ "addons": {}
+ },
+ "nzbhydra2": {
+ "base_css": "https://theme-park.dev/CSS/themes/nzbhydra2/nzbhydra2-base.css?sha=4dd9253",
+ "addons": {}
+ },
+ "ombi": {
+ "base_css": "https://theme-park.dev/CSS/themes/ombi/ombi-base.css?sha=4dd9253",
+ "addons": {}
+ },
+ "dozzle": {
+ "base_css": "https://theme-park.dev/CSS/themes/dozzle/dozzle-base.css?sha=4dd9253",
+ "addons": {}
+ },
+ "lazylibrarian": {
+ "base_css": "https://theme-park.dev/CSS/themes/lazylibrarian/lazylibrarian-base.css?sha=4dd9253",
+ "addons": {}
+ },
+ "requestrr": {
+ "base_css": "https://theme-park.dev/CSS/themes/requestrr/requestrr-base.css?sha=4dd9253",
+ "addons": {}
+ },
+ "thelounge": {
+ "base_css": "https://theme-park.dev/CSS/themes/thelounge/thelounge-base.css?sha=4dd9253",
+ "addons": {}
+ },
+ "sonarr": {
+ "base_css": "https://theme-park.dev/CSS/themes/sonarr/sonarr-base.css?sha=4dd9253",
+ "addons": {
+ "sonarr-4k-logo": {
+ "css": [
+ "https://theme-park.dev/CSS/addons/sonarr/sonarr-4k-logo/sonarr-4k-logo.css?sha=4dd9253"
+ ]
+ }
+ }
+ },
+ "portainer": {
+ "base_css": "https://theme-park.dev/CSS/themes/portainer/portainer-base.css?sha=4dd9253",
+ "addons": {}
+ },
+ "plex": {
+ "base_css": "https://theme-park.dev/CSS/themes/plex/plex-base.css?sha=4dd9253",
+ "addons": {
+ "overseer-side-menu": {
+ "css": [
+ "https://theme-park.dev/CSS/addons/plex/overseer-side-menu/overseer-side-menu.css?sha=4dd9253"
+ ]
+ }
+ }
+ },
+ "filebrowser": {
+ "base_css": "https://theme-park.dev/CSS/themes/filebrowser/filebrowser-base.css?sha=4dd9253",
+ "addons": {}
+ },
+ "radarr": {
+ "base_css": "https://theme-park.dev/CSS/themes/radarr/radarr-base.css?sha=4dd9253",
+ "addons": {
+ "radarr-4k-logo": {
+ "css": [
+ "https://theme-park.dev/CSS/addons/radarr/radarr-4k-logo/radarr-4k-logo.css?sha=4dd9253"
+ ]
+ }
+ }
+ },
+ "xbackbone": {
+ "base_css": "https://theme-park.dev/CSS/themes/xbackbone/xbackbone-base.css?sha=4dd9253",
+ "addons": {}
+ },
+ "calibreweb": {
+ "base_css": "https://theme-park.dev/CSS/themes/calibreweb/calibreweb-base.css?sha=4dd9253",
+ "addons": {}
+ },
+ "qbittorrent": {
+ "base_css": "https://theme-park.dev/CSS/themes/qbittorrent/qbittorrent-base.css?sha=4dd9253",
+ "addons": {}
+ },
+ "guacamole": {
+ "base_css": "https://theme-park.dev/CSS/themes/guacamole/guacamole-base.css?sha=4dd9253",
+ "addons": {}
+ },
+ "webtools": {
+ "base_css": "https://theme-park.dev/CSS/themes/webtools/webtools-base.css?sha=4dd9253",
+ "addons": {}
+ },
+ "monitorr": {
+ "base_css": "https://theme-park.dev/CSS/themes/monitorr/monitorr-base.css?sha=4dd9253",
+ "addons": {}
+ },
+ "lidarr": {
+ "base_css": "https://theme-park.dev/CSS/themes/lidarr/lidarr-base.css?sha=4dd9253",
+ "addons": {}
+ },
+ "jellyfin": {
+ "base_css": "https://theme-park.dev/CSS/themes/jellyfin/jellyfin-base.css?sha=4dd9253",
+ "addons": {}
+ },
+ "flood": {
+ "base_css": "https://theme-park.dev/CSS/themes/flood/flood-base.css?sha=4dd9253",
+ "addons": {}
+ },
+ "tautulli": {
+ "base_css": "https://theme-park.dev/CSS/themes/tautulli/tautulli-base.css?sha=4dd9253",
+ "addons": {}
+ },
+ "readarr": {
+ "base_css": "https://theme-park.dev/CSS/themes/readarr/readarr-base.css?sha=4dd9253",
+ "addons": {
+ "readarr-alt-logo": {
+ "css": [
+ "https://theme-park.dev/CSS/addons/readarr/readarr-alt-logo/readarr-alt-logo.css?sha=4dd9253"
+ ]
+ }
+ }
+ }
+ },
+ "addons": {
+ "unraid": {
+ "login-page": {
+ "alien": {
+ "css": [
+ "https://theme-park.dev/CSS/addons/unraid/login-page/alien/green.css?sha=4dd9253",
+ "https://theme-park.dev/CSS/addons/unraid/login-page/alien/white.css?sha=4dd9253",
+ "https://theme-park.dev/CSS/addons/unraid/login-page/alien/red.css?sha=4dd9253",
+ "https://theme-park.dev/CSS/addons/unraid/login-page/alien/blue.css?sha=4dd9253",
+ "https://theme-park.dev/CSS/addons/unraid/login-page/alien/custom.css?sha=4dd9253",
+ "https://theme-park.dev/CSS/addons/unraid/login-page/alien/amber.css?sha=4dd9253",
+ "https://theme-park.dev/CSS/addons/unraid/login-page/alien/retro-terminal-base.css?sha=4dd9253"
+ ]
+ },
+ "fallout": {
+ "css": [
+ "https://theme-park.dev/CSS/addons/unraid/login-page/fallout/green.css?sha=4dd9253",
+ "https://theme-park.dev/CSS/addons/unraid/login-page/fallout/white.css?sha=4dd9253",
+ "https://theme-park.dev/CSS/addons/unraid/login-page/fallout/red.css?sha=4dd9253",
+ "https://theme-park.dev/CSS/addons/unraid/login-page/fallout/blue.css?sha=4dd9253",
+ "https://theme-park.dev/CSS/addons/unraid/login-page/fallout/custom.css?sha=4dd9253",
+ "https://theme-park.dev/CSS/addons/unraid/login-page/fallout/amber.css?sha=4dd9253",
+ "https://theme-park.dev/CSS/addons/unraid/login-page/fallout/retro-terminal-base.css?sha=4dd9253"
+ ]
+ },
+ "retro-terminal": {
+ "css": [
+ "https://theme-park.dev/CSS/addons/unraid/login-page/retro-terminal/green.css?sha=4dd9253",
+ "https://theme-park.dev/CSS/addons/unraid/login-page/retro-terminal/white.css?sha=4dd9253",
+ "https://theme-park.dev/CSS/addons/unraid/login-page/retro-terminal/red.css?sha=4dd9253",
+ "https://theme-park.dev/CSS/addons/unraid/login-page/retro-terminal/blue.css?sha=4dd9253",
+ "https://theme-park.dev/CSS/addons/unraid/login-page/retro-terminal/custom.css?sha=4dd9253",
+ "https://theme-park.dev/CSS/addons/unraid/login-page/retro-terminal/amber.css?sha=4dd9253",
+ "https://theme-park.dev/CSS/addons/unraid/login-page/retro-terminal/retro-terminal-base.css?sha=4dd9253"
+ ]
+ }
+ }
+ },
+ "organizr": {
+ "glass": {
+ "css": [
+ "https://theme-park.dev/CSS/addons/organizr/glass/glass-login.css?sha=4dd9253",
+ "https://theme-park.dev/CSS/addons/organizr/glass/glass-base.css?sha=4dd9253"
+ ]
+ }
+ },
+ "bazarr": {
+ "bazarr-4k-logo": {
+ "css": [
+ "https://theme-park.dev/CSS/addons/bazarr/bazarr-4k-logo/bazarr-4k-logo.css?sha=4dd9253"
+ ]
+ }
+ },
+ "sonarr": {
+ "sonarr-4k-logo": {
+ "css": [
+ "https://theme-park.dev/CSS/addons/sonarr/sonarr-4k-logo/sonarr-4k-logo.css?sha=4dd9253"
+ ]
+ }
+ },
+ "plex": {
+ "overseer-side-menu": {
+ "css": [
+ "https://theme-park.dev/CSS/addons/plex/overseer-side-menu/overseer-side-menu.css?sha=4dd9253"
+ ]
+ }
+ },
+ "radarr": {
+ "radarr-4k-logo": {
+ "css": [
+ "https://theme-park.dev/CSS/addons/radarr/radarr-4k-logo/radarr-4k-logo.css?sha=4dd9253"
+ ]
+ }
+ },
+ "readarr": {
+ "readarr-alt-logo": {
+ "css": [
+ "https://theme-park.dev/CSS/addons/readarr/readarr-alt-logo/readarr-alt-logo.css?sha=4dd9253"
+ ]
+ }
+ }
+ },
+ "themes": {
+ "Plex": {
+ "url": "https://theme-park.dev/CSS/variables/plex.css?sha=4dd9253"
+ },
+ "Organizr-dark": {
+ "url": "https://theme-park.dev/CSS/variables/organizr-dark.css?sha=4dd9253"
+ },
+ "Space-gray": {
+ "url": "https://theme-park.dev/CSS/variables/space-gray.css?sha=4dd9253"
+ },
+ "Time": {
+ "url": "https://theme-park.dev/CSS/variables/time.css?sha=4dd9253"
+ },
+ "Hotline": {
+ "url": "https://theme-park.dev/CSS/variables/hotline.css?sha=4dd9253"
+ },
+ "Soul": {
+ "url": "https://theme-park.dev/CSS/variables/soul.css?sha=4dd9253"
+ },
+ "Hotpink": {
+ "url": "https://theme-park.dev/CSS/variables/hotpink.css?sha=4dd9253"
+ },
+ "Power": {
+ "url": "https://theme-park.dev/CSS/variables/power.css?sha=4dd9253"
+ },
+ "Mind": {
+ "url": "https://theme-park.dev/CSS/variables/mind.css?sha=4dd9253"
+ },
+ "Aquamarine": {
+ "url": "https://theme-park.dev/CSS/variables/aquamarine.css?sha=4dd9253"
+ },
+ "Dracula": {
+ "url": "https://theme-park.dev/CSS/variables/dracula.css?sha=4dd9253"
+ },
+ "Space": {
+ "url": "https://theme-park.dev/CSS/variables/space.css?sha=4dd9253"
+ },
+ "Dark": {
+ "url": "https://theme-park.dev/CSS/variables/dark.css?sha=4dd9253"
+ },
+ "Overseerr": {
+ "url": "https://theme-park.dev/CSS/variables/overseerr.css?sha=4dd9253"
+ },
+ "Reality": {
+ "url": "https://theme-park.dev/CSS/variables/reality.css?sha=4dd9253"
+ },
+ "Onedark": {
+ "url": "https://theme-park.dev/CSS/variables/onedark.css?sha=4dd9253"
+ }
+ }
+}
\ No newline at end of file
diff --git a/themes.py b/themes.py
new file mode 100644
index 00000000..996f9c9f
--- /dev/null
+++ b/themes.py
@@ -0,0 +1,85 @@
+from os import listdir
+from os.path import isdir, isfile, join
+from json import dump,dumps, loads
+import argparse
+
+def create_addons_json(sha):
+ ADDONS = {"addons":{}}
+ addon_root = './CSS/addons'
+ addon_folders = [name for name in listdir(addon_root) if isdir(join(addon_root, name))]
+ for app in addon_folders:
+ app_addons = [addon for addon in listdir(f"{addon_root}/{app}")]
+ ADDONS["addons"].update({
+ app: {
+ addon: {} for addon in app_addons
+ }
+ })
+ for addon in app_addons:
+ files = [file for file in listdir(
+ f"{addon_root}/{app}/{addon}") if isfile(join(f"{addon_root}/{app}/{addon}", file))]
+ ADDONS["addons"].update({
+ app: {
+ addon: {
+ "css": [f"https://{DOMAIN}/CSS/addons/{app}/{addon}/{file}?sha={sha}" for file in files if file.split(".")[1] == "css"]
+ }
+ }
+ })
+ extra_dirs = [dir for dir in listdir(
+ f"{addon_root}/{app}/{addon}") if isdir(join(f"{addon_root}/{app}/{addon}", dir))]
+ if extra_dirs:
+ for dir in extra_dirs:
+ extra_dir_files = [file for file in listdir(
+ f"{addon_root}/{app}/{addon}/{dir}") if isfile(join(f"{addon_root}/{app}/{addon}/{dir}", file))]
+ ADDONS["addons"][app].update({
+ addon: {
+ dir: {
+ "css": [f"https://{DOMAIN}/CSS/addons/{app}/{addon}/{dir}/{extra_file}?sha={sha}" for extra_file in extra_dir_files if extra_file.split(".")[1] == "css"]
+ } for dir in extra_dirs
+ }
+ })
+ return dumps(ADDONS)
+
+def create_json(sha,app_folders:list=None,themes:list=None,no_sub_folders=False):
+ if no_sub_folders:
+ THEMES = {}
+ for theme in themes:
+ THEMES.update({
+ "themes": {
+ theme.split(".")[0].capitalize(): {
+ "url": f"https://{DOMAIN}/CSS/variables/{theme}?sha={sha}"
+ }for theme in themes
+ }
+ })
+ return dumps(THEMES)
+ else:
+ ADDONS = loads(create_addons_json(sha))
+ APPS = {"applications":{}}
+ for app in app_folders:
+ APPS.update({
+ "applications":{
+ app: {
+ "base_css": f"https://{DOMAIN}/CSS/themes/{app}/{app}-base.css?sha={sha}",
+ "addons": ADDONS["addons"][app] if app in ADDONS["addons"] else {}
+ } for app in app_folders
+ }
+ }
+ )
+ THEMES = loads(create_json(sha,themes=themes,no_sub_folders=True))
+ APPS.update(ADDONS)
+ APPS.update(THEMES)
+ return dumps(APPS)
+
+if __name__== "__main__":
+
+ parser = argparse.ArgumentParser("Creates a JSON file with some information on all applications and themes")
+ parser.add_argument("--sha", required=True, help="This is the commit SHA we use for 'versioning' on CSS files")
+ args = parser.parse_args()
+
+ sha = args.sha
+ app_folders = [name for name in listdir('./CSS/themes') if isdir(join('./CSS/themes', name))]
+ themes = [name for name in listdir('./CSS/variables') if isfile(join('./CSS/variables', name))]
+ DOMAIN = open("CNAME","rt",closefd=True).readline()
+ apps = loads(create_json(sha,app_folders,themes))
+
+ with open("themes.json", "w") as outfile:
+ dump(apps, outfile,indent=2)