diff --git a/Program.cs b/Program.cs index e4612ad..9f0f58b 100644 --- a/Program.cs +++ b/Program.cs @@ -13,8 +13,6 @@ using System.Globalization; using TMDbLib.Client; -const string defaultOutputDirectory = "wwwroot/data/"; - CultureInfo.CurrentCulture = new CultureInfo("de-DE", true); CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("de-DE", true); @@ -46,10 +44,15 @@ builder.Services.AddScoped(); var app = builder.Build(); +// Create the output directory if needed. + ExecuteScrapingProcess(app.Services); + static void ExecuteScrapingProcess(IServiceProvider serviceProvider) { + var configuration = serviceProvider.GetRequiredService(); + var defaultOutputDirectory = CreateOutputDirectory(configuration); using var scope = serviceProvider.CreateScope(); var context = scope.ServiceProvider.GetRequiredService(); context.Database.Migrate(); @@ -78,3 +81,24 @@ static void ExecuteScrapingProcess(IServiceProvider serviceProvider) var jsonRenderer = scope.ServiceProvider.GetRequiredService(); jsonRenderer.Render(Path.Combine(defaultOutputDirectory, "data.json")); } + + +static string CreateOutputDirectory(IConfiguration config) +{ + var defaultOutputDirectory = config["DataOutputPath"]; + if (string.IsNullOrWhiteSpace(defaultOutputDirectory)) + { + throw new InvalidOperationException("No output directory found."); + } + if (!Directory.Exists(defaultOutputDirectory)) + { + var info = Directory.CreateDirectory(defaultOutputDirectory); + defaultOutputDirectory = info.FullName; + } + else + { + Path.GetFullPath(defaultOutputDirectory); + } + + return defaultOutputDirectory; +} \ No newline at end of file diff --git a/appsettings.json b/appsettings.json index d760e4a..567339e 100644 --- a/appsettings.json +++ b/appsettings.json @@ -9,5 +9,7 @@ }, "ConnectionStrings": { "kinohannoverContext": "Data Source=wwwroot/data/data.sqlite.db" - } + }, + + "DataOutputPath": "wwwroot/data/" }