diff --git a/internal/config/query.go b/internal/config/query.go index 879204c3..6f7b6a70 100644 --- a/internal/config/query.go +++ b/internal/config/query.go @@ -69,6 +69,18 @@ func HomepageConfig() homepage.Config { ) } + if en.Container != nil && item.Category == "" { + if category, ok := homepage.PredefinedCategories[en.Container.ImageName]; ok { + item.Category = category + } + } + + if item.Category == "" { + if category, ok := homepage.PredefinedCategories[strings.ToLower(alias)]; ok { + item.Category = category + } + } + switch { case entry.IsDocker(r): if item.Category == "" { diff --git a/internal/homepage/categories.go b/internal/homepage/categories.go new file mode 100644 index 00000000..7de09b8e --- /dev/null +++ b/internal/homepage/categories.go @@ -0,0 +1,64 @@ +package homepage + +// PredefinedCategories by alias or docker image name +var PredefinedCategories = map[string]string{ + "sonarr": "Torrenting", + "radarr": "Torrenting", + "bazarr": "Torrenting", + "lidarr": "Torrenting", + "readarr": "Torrenting", + "prowlarr": "Torrenting", + "watcharr": "Torrenting", + "qbittorrent": "Torrenting", + "qbit": "Torrenting", + "qbt": "Torrenting", + "transmission": "Torrenting", + + "jellyfin": "Media", + "jellyseerr": "Media", + "emby": "Media", + "plex": "Media", + "navidrome": "Media", + "immich": "Media", + "tautulli": "Media", + "nextcloud": "Media", + "invidious": "Media", + + "uptime": "Monitoring", + "uptime-kuma": "Monitoring", + "prometheus": "Monitoring", + "grafana": "Monitoring", + "netdata": "Monitoring", + "changedetection.io": "Monitoring", + "changedetection": "Monitoring", + "influxdb": "Monitoring", + "influx": "Monitoring", + "dozzle": "Monitoring", + + "adguardhome": "Networking", + "adgh": "Networking", + "adg": "Networking", + "pihole": "Networking", + "flaresolverr": "Networking", + + "homebridge": "Home Automation", + "home-assistant": "Home Automation", + + "dockge": "Container Management", + "portainer-ce": "Container Management", + "portainer-be": "Container Management", + + "rss": "RSS", + "rsshub": "RSS", + "rss-bridge": "RSS", + "miniflux": "RSS", + "freshrss": "RSS", + + "paperless": "Documents", + "paperless-ngx": "Documents", + "s-pdf": "Documents", + + "minio": "Storage", + "filebrowser": "Storage", + "rclone": "Storage", +}