feat: add language and quality migrations + validation CI to keep up to date with sonarr/radarr

This commit is contained in:
Sam Chau
2025-11-01 03:42:27 +10:30
parent 0e1750acd1
commit d0304cb658
5 changed files with 221 additions and 0 deletions
+19
View File
@@ -0,0 +1,19 @@
name: Validate
on:
schedule:
- cron: "0 0 * * *"
workflow_dispatch:
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Validate Languages
run: ./scripts/validateLanguages.sh
- name: Validate Qualities
run: ./scripts/validateQualities.sh
if: always()
+65
View File
@@ -0,0 +1,65 @@
-- Languages
INSERT INTO languages (name) VALUES
('Unknown'),
('English'),
('French'),
('Spanish'),
('German'),
('Italian'),
('Danish'),
('Dutch'),
('Japanese'),
('Icelandic'),
('Chinese'),
('Russian'),
('Polish'),
('Vietnamese'),
('Swedish'),
('Norwegian'),
('Finnish'),
('Turkish'),
('Portuguese'),
('Flemish'),
('Greek'),
('Korean'),
('Hungarian'),
('Hebrew'),
('Lithuanian'),
('Czech'),
('Hindi'),
('Romanian'),
('Thai'),
('Bulgarian'),
('Portuguese (Brazil)'),
('Arabic'),
('Ukrainian'),
('Persian'),
('Bengali'),
('Slovak'),
('Latvian'),
('Spanish (Latino)'),
('Catalan'),
('Croatian'),
('Serbian'),
('Bosnian'),
('Estonian'),
('Tamil'),
('Indonesian'),
('Telugu'),
('Macedonian'),
('Slovenian'),
('Malayalam'),
('Kannada'),
('Albanian'),
('Afrikaans'),
('Marathi'),
('Tagalog'),
('Urdu'),
('Romansh'),
('Mongolian'),
('Georgian'),
('Azerbaijani'),
('Uzbek'),
('Malay'),
('Any'),
('Original');
+33
View File
@@ -0,0 +1,33 @@
-- Qualities
INSERT INTO qualities (name) VALUES
('Unknown'),
('WORKPRINT'),
('CAM'),
('TELESYNC'),
('TELECINE'),
('DVDSCR'),
('REGIONAL'),
('SDTV'),
('DVD'),
('DVD-R'),
('HDTV-480p'),
('HDTV-720p'),
('HDTV-1080p'),
('HDTV-2160p'),
('WEBDL-480p'),
('WEBDL-720p'),
('WEBDL-1080p'),
('WEBDL-2160p'),
('WEBRip-480p'),
('WEBRip-720p'),
('WEBRip-1080p'),
('WEBRip-2160p'),
('Bluray-480p'),
('Bluray-576p'),
('Bluray-720p'),
('Bluray-1080p'),
('Bluray-2160p'),
('Remux-1080p'),
('Remux-2160p'),
('BR-DISK'),
('Raw-HD');
+48
View File
@@ -0,0 +1,48 @@
#!/bin/bash
# validateLanguages.sh - Validates languages against Radarr and Sonarr source
set -e
RADARR_URL="https://raw.githubusercontent.com/Radarr/Radarr/develop/src/NzbDrone.Core/Languages/Language.cs"
SONARR_URL="https://raw.githubusercontent.com/Sonarr/Sonarr/develop/src/NzbDrone.Core/Languages/Language.cs"
LANG_FILE="schema/1.languages.sql"
echo "Fetching Radarr languages..."
RADARR_LANGS=$(curl -s "$RADARR_URL" | grep "public static Language" | grep -oP '=> new Language\(-?\d+, "\K[^"]+' | sort -u)
echo "Found Radarr languages:"
echo "$RADARR_LANGS"
echo ""
echo "Fetching Sonarr languages..."
SONARR_LANGS=$(curl -s "$SONARR_URL" | grep "public static Language" | grep -oP '=> new Language\(-?\d+, "\K[^"]+' | sort -u)
echo "Found Sonarr languages:"
echo "$SONARR_LANGS"
echo ""
echo "Extracting languages from schema..."
SCHEMA_LANGS=$(grep -oP "(?<=\(')[^']+(?='\))" "$LANG_FILE" | sort -u)
echo ""
echo "=== Radarr Validation ==="
RADARR_MISSING=$(comm -23 <(echo "$RADARR_LANGS") <(echo "$SCHEMA_LANGS"))
if [ -n "$RADARR_MISSING" ]; then
echo "✗ Missing Radarr languages:"
echo "$RADARR_MISSING"
exit 1
else
echo "✓ All Radarr languages present ($(echo "$RADARR_LANGS" | wc -l))"
fi
echo ""
echo "=== Sonarr Validation ==="
SONARR_MISSING=$(comm -23 <(echo "$SONARR_LANGS") <(echo "$SCHEMA_LANGS"))
if [ -n "$SONARR_MISSING" ]; then
echo "✗ Missing Sonarr languages:"
echo "$SONARR_MISSING"
exit 1
else
echo "✓ All Sonarr languages present ($(echo "$SONARR_LANGS" | wc -l))"
fi
echo ""
echo "Total unique languages in schema: $(echo "$SCHEMA_LANGS" | wc -l)"
+56
View File
@@ -0,0 +1,56 @@
#!/bin/bash
# validateQualities.sh - Validates qualities against Radarr and Sonarr source
set -e
RADARR_URL="https://raw.githubusercontent.com/Radarr/Radarr/develop/src/NzbDrone.Core/Qualities/Quality.cs"
SONARR_URL="https://raw.githubusercontent.com/Sonarr/Sonarr/develop/src/NzbDrone.Core/Qualities/Quality.cs"
QUAL_FILE="schema/2.qualities.sql"
echo "Fetching Radarr qualities..."
RADARR_QUALS=$(curl -s "$RADARR_URL" | grep -oP 'public static Quality \w+ => new Quality\(\d+, "\K[^"]+' | sort -u)
echo "Found Radarr qualities:"
echo "$RADARR_QUALS"
echo ""
echo "Fetching Sonarr qualities..."
# Sonarr has both => and getter patterns
SONARR_CONTENT=$(curl -s "$SONARR_URL")
SONARR_ARROW=$(echo "$SONARR_CONTENT" | grep -oP 'public static Quality \w+ => new Quality\(\d+, +"?\K[^",]+')
SONARR_GETTER=$(echo "$SONARR_CONTENT" | grep -oP 'return new Quality\(\d+, "\K[^"]+')
SONARR_QUALS=$(echo -e "$SONARR_ARROW\n$SONARR_GETTER" | grep -v '^$' | sort -u)
echo "Found Sonarr qualities:"
echo "$SONARR_QUALS"
echo ""
# Map Sonarr's remux naming to Radarr's
SONARR_QUALS=$(echo "$SONARR_QUALS" | sed 's/Bluray-1080p Remux/Remux-1080p/' | sed 's/Bluray-2160p Remux/Remux-2160p/' | sort -u)
echo "Extracting qualities from schema..."
SCHEMA_QUALS=$(grep -oP "(?<=\(')[^']+(?='\))" "$QUAL_FILE" | sort -u)
echo ""
echo "=== Radarr Validation ==="
RADARR_MISSING=$(comm -23 <(echo "$RADARR_QUALS") <(echo "$SCHEMA_QUALS"))
if [ -n "$RADARR_MISSING" ]; then
echo "✗ Missing Radarr qualities:"
echo "$RADARR_MISSING"
exit 1
else
echo "✓ All Radarr qualities present ($(echo "$RADARR_QUALS" | wc -l))"
fi
echo ""
echo "=== Sonarr Validation ==="
SONARR_MISSING=$(comm -23 <(echo "$SONARR_QUALS") <(echo "$SCHEMA_QUALS"))
if [ -n "$SONARR_MISSING" ]; then
echo "✗ Missing Sonarr qualities:"
echo "$SONARR_MISSING"
exit 1
else
echo "✓ All Sonarr qualities present ($(echo "$SONARR_QUALS" | wc -l))"
fi
echo ""
echo "Total unique qualities in schema: $(echo "$SCHEMA_QUALS" | wc -l)"