mirror of
https://github.com/Dictionarry-Hub/schema.git
synced 2026-05-03 06:14:17 +02:00
feat: add language and quality migrations + validation CI to keep up to date with sonarr/radarr
This commit is contained in:
@@ -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()
|
||||||
@@ -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');
|
||||||
@@ -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');
|
||||||
Executable
+48
@@ -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)"
|
||||||
Executable
+56
@@ -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)"
|
||||||
Reference in New Issue
Block a user