Compare commits
No commits in common. "755167c39ae8fb09758c876946e459b3ea2eca38" and "a321ecb1bcb80b6ab85b8b48896e52bc6a25e13f" have entirely different histories.
755167c39a
...
a321ecb1bc
@ -1,27 +1,7 @@
|
|||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
using Tranga;
|
using Tranga;
|
||||||
using Logging;
|
|
||||||
|
|
||||||
string applicationFolderPath = Path.Join(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Tranga-API");
|
|
||||||
string logsFolderPath = Path.Join(applicationFolderPath, "logs");
|
|
||||||
string logFilePath = Path.Join(logsFolderPath, $"log-{DateTime.Now:dd-M-yyyy-HH-mm-ss}.txt");
|
|
||||||
string settingsFilePath = Path.Join(applicationFolderPath, "data.json");
|
|
||||||
|
|
||||||
Console.WriteLine($"Logfile-Path: {logFilePath}");
|
|
||||||
Console.WriteLine($"Settings-File-Path: {settingsFilePath}");
|
|
||||||
|
|
||||||
Logger logger = new(new[] { Logger.LoggerType.FileLogger }, null, null, logFilePath);
|
|
||||||
|
|
||||||
logger.WriteLine("Tranga_API", "Loading Taskmanager.");
|
|
||||||
|
|
||||||
TaskManager.SettingsData settings;
|
|
||||||
if (File.Exists(settingsFilePath))
|
|
||||||
settings = TaskManager.LoadData(settingsFilePath);
|
|
||||||
else
|
|
||||||
settings = new TaskManager.SettingsData(Directory.GetCurrentDirectory(), settingsFilePath, null, new HashSet<TrangaTask>());
|
|
||||||
|
|
||||||
TaskManager taskManager = new (settings, logger);
|
|
||||||
|
|
||||||
|
TaskManager taskManager = new (Directory.GetCurrentDirectory());
|
||||||
var builder = WebApplication.CreateBuilder(args);
|
var builder = WebApplication.CreateBuilder(args);
|
||||||
var app = builder.Build();
|
var app = builder.Build();
|
||||||
|
|
||||||
@ -42,14 +22,8 @@ app.MapGet("/GetPublications", (string connectorName, string? publicationName) =
|
|||||||
|
|
||||||
app.MapGet("/ListTasks", () => JsonSerializer.Serialize(taskManager.GetAllTasks()));
|
app.MapGet("/ListTasks", () => JsonSerializer.Serialize(taskManager.GetAllTasks()));
|
||||||
|
|
||||||
app.MapGet("/TaskTypes", () =>
|
|
||||||
{
|
|
||||||
string[] availableTasks = Enum.GetNames(typeof(TrangaTask.Task));
|
|
||||||
return JsonSerializer.Serialize(availableTasks);
|
|
||||||
});
|
|
||||||
|
|
||||||
app.MapGet("/CreateTask",
|
app.MapGet("/CreateTask",
|
||||||
(TrangaTask.Task task, string? connectorName, string? publicationInternalId, TimeSpan reoccurrence, string? language) =>
|
(TrangaTask.Task task, string? connectorName, string? publicationName, TimeSpan reoccurrence, string? language) =>
|
||||||
{
|
{
|
||||||
switch (task)
|
switch (task)
|
||||||
{
|
{
|
||||||
@ -59,18 +33,19 @@ app.MapGet("/CreateTask",
|
|||||||
case TrangaTask.Task.DownloadNewChapters:
|
case TrangaTask.Task.DownloadNewChapters:
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Publication? publication = taskManager.GetAllPublications()
|
Connector connector = taskManager.GetConnector(connectorName);
|
||||||
.FirstOrDefault(pub => pub.internalId == publicationInternalId);
|
|
||||||
|
Publication[] publications;
|
||||||
if (publication is null)
|
if (publicationName is not null)
|
||||||
{
|
publications = connector.GetPublications(publicationName);
|
||||||
return JsonSerializer.Serialize($"Publication {publicationInternalId} is unknown.");
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
publications = connector.GetPublications();
|
||||||
taskManager.AddTask(TrangaTask.Task.DownloadNewChapters, connectorName, publication, reoccurrence, language ?? "");
|
|
||||||
return JsonSerializer.Serialize("Success");
|
Publication? publication = publications.FirstOrDefault(pub => pub.downloadUrl == publicationName);
|
||||||
}
|
if (publication is null)
|
||||||
|
JsonSerializer.Serialize($"Publication {publicationName} is unknown.");
|
||||||
|
taskManager.AddTask(TrangaTask.Task.DownloadNewChapters, connectorName, publication, reoccurrence, language ?? "");
|
||||||
|
return JsonSerializer.Serialize("Success");
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
@ -83,7 +58,7 @@ app.MapGet("/CreateTask",
|
|||||||
return JsonSerializer.Serialize("Not Implemented");
|
return JsonSerializer.Serialize("Not Implemented");
|
||||||
});
|
});
|
||||||
|
|
||||||
app.MapGet("/RemoveTask", (TrangaTask.Task task, string? connectorName, string? publicationInternalId) =>
|
app.MapGet("/RemoveTask", (TrangaTask.Task task, string? connectorName, string? publicationName) =>
|
||||||
{
|
{
|
||||||
switch (task)
|
switch (task)
|
||||||
{
|
{
|
||||||
@ -91,9 +66,9 @@ app.MapGet("/RemoveTask", (TrangaTask.Task task, string? connectorName, string?
|
|||||||
taskManager.DeleteTask(TrangaTask.Task.UpdateKomgaLibrary, null, null);
|
taskManager.DeleteTask(TrangaTask.Task.UpdateKomgaLibrary, null, null);
|
||||||
return JsonSerializer.Serialize("Success");
|
return JsonSerializer.Serialize("Success");
|
||||||
case TrangaTask.Task.DownloadNewChapters:
|
case TrangaTask.Task.DownloadNewChapters:
|
||||||
Publication? publication = taskManager.GetAllPublications().FirstOrDefault(pub => pub.internalId == publicationInternalId);
|
Publication? publication = taskManager.GetAllPublications().FirstOrDefault(pub => pub.downloadUrl == publicationName);
|
||||||
if (publication is null)
|
if (publication is null)
|
||||||
JsonSerializer.Serialize($"Publication with id {publicationInternalId} is unknown.");
|
JsonSerializer.Serialize($"Publication {publicationName} is unknown.");
|
||||||
|
|
||||||
taskManager.DeleteTask(TrangaTask.Task.DownloadNewChapters, connectorName, publication);
|
taskManager.DeleteTask(TrangaTask.Task.DownloadNewChapters, connectorName, publication);
|
||||||
|
|
||||||
@ -103,46 +78,4 @@ app.MapGet("/RemoveTask", (TrangaTask.Task task, string? connectorName, string?
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
app.MapGet("/StartTask", (TrangaTask.Task task, string? connectorName, string? publicationInternalId) =>
|
|
||||||
{
|
|
||||||
TrangaTask[] allTasks = taskManager.GetAllTasks();
|
|
||||||
TrangaTask? taskToStart = allTasks.FirstOrDefault(tTask =>
|
|
||||||
tTask.task == task && tTask.connectorName == connectorName &&
|
|
||||||
tTask.publication?.internalId == publicationInternalId);
|
|
||||||
if(taskToStart is null)
|
|
||||||
JsonSerializer.Serialize($"Task with parameters {task} {connectorName} {publicationInternalId} is unknown.");
|
|
||||||
taskManager.ExecuteTaskNow(taskToStart!);
|
|
||||||
return JsonSerializer.Serialize("Success");
|
|
||||||
});
|
|
||||||
|
|
||||||
app.MapGet("/TaskQueue", () =>
|
|
||||||
{
|
|
||||||
return JsonSerializer.Serialize(taskManager.GetAllTasks()
|
|
||||||
.Where(task => task.state is TrangaTask.ExecutionState.Enqueued or TrangaTask.ExecutionState.Running)
|
|
||||||
.ToArray());
|
|
||||||
});
|
|
||||||
|
|
||||||
app.MapGet("/TaskEnqueue", (TrangaTask.Task task, string? connectorName, string? publicationInternalId) =>
|
|
||||||
{
|
|
||||||
TrangaTask[] allTasks = taskManager.GetAllTasks();
|
|
||||||
TrangaTask? taskToEnqueue = allTasks.FirstOrDefault(tTask =>
|
|
||||||
tTask.task == task && tTask.connectorName == connectorName &&
|
|
||||||
tTask.publication?.internalId == publicationInternalId);
|
|
||||||
if(taskToEnqueue is null)
|
|
||||||
JsonSerializer.Serialize($"Task with parameters {task} {connectorName} {publicationInternalId} is unknown.");
|
|
||||||
taskManager.AddTaskToQueue(taskToEnqueue!);
|
|
||||||
return JsonSerializer.Serialize("Success");
|
|
||||||
});
|
|
||||||
|
|
||||||
app.MapGet("/TaskDequeue", (TrangaTask.Task task, string? connectorName, string? publicationInternalId) =>
|
|
||||||
{TrangaTask[] allTasks = taskManager.GetAllTasks();
|
|
||||||
TrangaTask? taskToDequeue = allTasks.FirstOrDefault(tTask =>
|
|
||||||
tTask.task == task && tTask.connectorName == connectorName &&
|
|
||||||
tTask.publication?.internalId == publicationInternalId);
|
|
||||||
if(taskToDequeue is null)
|
|
||||||
JsonSerializer.Serialize($"Task with parameters {task} {connectorName} {publicationInternalId} is unknown.");
|
|
||||||
taskManager.RemoveTaskFromQueue(taskToDequeue);
|
|
||||||
return JsonSerializer.Serialize("Success");
|
|
||||||
});
|
|
||||||
|
|
||||||
app.Run();
|
app.Run();
|
@ -117,7 +117,6 @@ public class MangaDex : Connector
|
|||||||
year,
|
year,
|
||||||
originalLanguage,
|
originalLanguage,
|
||||||
status,
|
status,
|
||||||
manga["id"]!.GetValue<string>(),
|
|
||||||
manga["id"]!.GetValue<string>()
|
manga["id"]!.GetValue<string>()
|
||||||
);
|
);
|
||||||
publications.Add(pub); //Add Publication (Manga) to result
|
publications.Add(pub); //Add Publication (Manga) to result
|
||||||
|
@ -20,10 +20,8 @@ public readonly struct Publication
|
|||||||
public string status { get; }
|
public string status { get; }
|
||||||
public string folderName { get; }
|
public string folderName { get; }
|
||||||
public string downloadUrl { get; }
|
public string downloadUrl { get; }
|
||||||
|
|
||||||
public string internalId { get; }
|
|
||||||
|
|
||||||
public Publication(string sortName, string? description, string[,] altTitles, string[] tags, string? posterUrl, string[,]? links, int? year, string? originalLanguage, string status, string downloadUrl, string internalId)
|
public Publication(string sortName, string? description, string[,] altTitles, string[] tags, string? posterUrl, string[,]? links, int? year, string? originalLanguage, string status, string downloadUrl)
|
||||||
{
|
{
|
||||||
this.sortName = sortName;
|
this.sortName = sortName;
|
||||||
this.description = description;
|
this.description = description;
|
||||||
@ -36,7 +34,6 @@ public readonly struct Publication
|
|||||||
this.status = status;
|
this.status = status;
|
||||||
this.downloadUrl = downloadUrl;
|
this.downloadUrl = downloadUrl;
|
||||||
this.folderName = string.Concat(sortName.Split(Path.GetInvalidPathChars().Concat(Path.GetInvalidFileNameChars()).ToArray()));
|
this.folderName = string.Concat(sortName.Split(Path.GetInvalidPathChars().Concat(Path.GetInvalidFileNameChars()).ToArray()));
|
||||||
this.internalId = internalId;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <returns>Serialized JSON String for series.json</returns>
|
/// <returns>Serialized JSON String for series.json</returns>
|
||||||
|
@ -125,6 +125,8 @@ public class TaskManager
|
|||||||
string language = "")
|
string language = "")
|
||||||
{
|
{
|
||||||
logger?.WriteLine(this.GetType().ToString(), $"Adding new Task {task} {connectorName} {publication?.sortName}");
|
logger?.WriteLine(this.GetType().ToString(), $"Adding new Task {task} {connectorName} {publication?.sortName}");
|
||||||
|
if (task != TrangaTask.Task.UpdateKomgaLibrary && connectorName is null)
|
||||||
|
throw new ArgumentException($"connectorName can not be null for task {task}");
|
||||||
|
|
||||||
TrangaTask newTask;
|
TrangaTask newTask;
|
||||||
if (task == TrangaTask.Task.UpdateKomgaLibrary)
|
if (task == TrangaTask.Task.UpdateKomgaLibrary)
|
||||||
@ -140,9 +142,6 @@ public class TaskManager
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(connectorName is null)
|
|
||||||
throw new ArgumentException($"connectorName can not be null for task {task}");
|
|
||||||
|
|
||||||
//Get appropriate Connector from available Connectors for TrangaTask
|
//Get appropriate Connector from available Connectors for TrangaTask
|
||||||
Connector? connector = _connectors.FirstOrDefault(c => c.name == connectorName);
|
Connector? connector = _connectors.FirstOrDefault(c => c.name == connectorName);
|
||||||
if (connector is null)
|
if (connector is null)
|
||||||
|
Loading…
Reference in New Issue
Block a user