Compare commits
4 Commits
1be10b310d
...
8b58e7dd13
Author | SHA1 | Date | |
---|---|---|---|
8b58e7dd13 | |||
b571bfa43d | |||
088d1c4647 | |||
f280c01802 |
@ -75,7 +75,7 @@ app.MapGet("/Publications/GetFromConnector", (string connectorName, string title
|
|||||||
return taskManager.GetPublicationsFromConnector(connector, title);
|
return taskManager.GetPublicationsFromConnector(connector, title);
|
||||||
});
|
});
|
||||||
|
|
||||||
app.MapGet("/Publications/GetChapters", (string connectorName, string internalId, string? language) =>
|
app.MapGet("/Publications/GetChapters", (string connectorName, string internalId, bool onlyNew, bool onlyExisting, string? language) =>
|
||||||
{
|
{
|
||||||
Connector? connector = taskManager.GetAvailableConnectors().FirstOrDefault(con => con.Key == connectorName).Value;
|
Connector? connector = taskManager.GetAvailableConnectors().FirstOrDefault(con => con.Key == connectorName).Value;
|
||||||
if (connector is null)
|
if (connector is null)
|
||||||
@ -83,7 +83,13 @@ app.MapGet("/Publications/GetChapters", (string connectorName, string internalId
|
|||||||
Publication? publication = taskManager.GetAllPublications().FirstOrDefault(pub => pub.internalId == internalId);
|
Publication? publication = taskManager.GetAllPublications().FirstOrDefault(pub => pub.internalId == internalId);
|
||||||
if (publication is null)
|
if (publication is null)
|
||||||
return Array.Empty<Chapter>();
|
return Array.Empty<Chapter>();
|
||||||
return connector.GetChapters((Publication)publication, language??"en");
|
|
||||||
|
if(onlyNew)
|
||||||
|
return taskManager.GetNewChaptersList(connector, (Publication)publication, language??"en").ToArray();
|
||||||
|
else if (onlyExisting)
|
||||||
|
return taskManager.GetExistingChaptersList(connector, (Publication)publication, language ?? "en").ToArray();
|
||||||
|
else
|
||||||
|
return connector.GetChapters((Publication)publication, language??"en");
|
||||||
});
|
});
|
||||||
|
|
||||||
app.MapGet("/Tasks/GetTypes", () => Enum.GetNames(typeof(TrangaTask.Task)));
|
app.MapGet("/Tasks/GetTypes", () => Enum.GetNames(typeof(TrangaTask.Task)));
|
||||||
|
@ -14,7 +14,7 @@ public class Mangasee : Connector
|
|||||||
{
|
{
|
||||||
public override string name { get; }
|
public override string name { get; }
|
||||||
private IBrowser? _browser = null;
|
private IBrowser? _browser = null;
|
||||||
private const string ChromiumVersion = "1153303";
|
private const string ChromiumVersion = "1154303";
|
||||||
|
|
||||||
public Mangasee(string downloadLocation, string imageCachePath, Logger? logger) : base(downloadLocation,
|
public Mangasee(string downloadLocation, string imageCachePath, Logger? logger) : base(downloadLocation,
|
||||||
imageCachePath, logger)
|
imageCachePath, logger)
|
||||||
|
@ -26,39 +26,9 @@ public class TaskManager
|
|||||||
/// <param name="imageCachePath">Path to the cover-image cache</param>
|
/// <param name="imageCachePath">Path to the cover-image cache</param>
|
||||||
/// <param name="libraryManagers"></param>
|
/// <param name="libraryManagers"></param>
|
||||||
/// <param name="logger"></param>
|
/// <param name="logger"></param>
|
||||||
public TaskManager(string downloadFolderPath, string workingDirectory, string imageCachePath, HashSet<LibraryManager> libraryManagers, Logger? logger = null)
|
public TaskManager(string downloadFolderPath, string workingDirectory, string imageCachePath, HashSet<LibraryManager> libraryManagers, Logger? logger = null) : this(new TrangaSettings(downloadFolderPath, workingDirectory, libraryManagers), logger)
|
||||||
{
|
{
|
||||||
this.logger = logger;
|
|
||||||
|
|
||||||
this.settings = new TrangaSettings(downloadFolderPath, workingDirectory, libraryManagers);
|
|
||||||
ExportDataAndSettings();
|
|
||||||
|
|
||||||
this._connectors = new Connector[]
|
|
||||||
{
|
|
||||||
new MangaDex(downloadFolderPath, imageCachePath, logger),
|
|
||||||
new Manganato(downloadFolderPath, imageCachePath, logger),
|
|
||||||
new Mangasee(downloadFolderPath, imageCachePath, logger)
|
|
||||||
};
|
|
||||||
|
|
||||||
Thread taskChecker = new(TaskCheckerThread);
|
|
||||||
taskChecker.Start();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void UpdateSettings(string? downloadLocation, string? komgaUrl, string? komgaAuth, string? kavitaUrl, string? kavitaUsername, string? kavitaPassword)
|
|
||||||
{
|
|
||||||
if (komgaUrl is not null && komgaAuth is not null && komgaUrl.Length > 0 && komgaAuth.Length > 0)
|
|
||||||
{
|
|
||||||
settings.libraryManagers.RemoveWhere(lm => lm.GetType() == typeof(Komga));
|
|
||||||
settings.libraryManagers.Add(new Komga(komgaUrl, komgaAuth, logger));
|
|
||||||
}
|
|
||||||
if (kavitaUrl is not null && kavitaUsername is not null && kavitaPassword is not null && kavitaUrl.Length > 0 && kavitaUsername.Length > 0 && kavitaPassword.Length > 0)
|
|
||||||
{
|
|
||||||
settings.libraryManagers.RemoveWhere(lm => lm.GetType() == typeof(Kavita));
|
|
||||||
settings.libraryManagers.Add(new Kavita(kavitaUrl, kavitaUsername, kavitaPassword, logger));
|
|
||||||
}
|
|
||||||
if (downloadLocation is not null && downloadLocation.Length > 0)
|
|
||||||
settings.downloadLocation = downloadLocation;
|
|
||||||
ExportDataAndSettings();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public TaskManager(TrangaSettings settings, Logger? logger = null)
|
public TaskManager(TrangaSettings settings, Logger? logger = null)
|
||||||
@ -77,6 +47,23 @@ public class TaskManager
|
|||||||
Thread taskChecker = new(TaskCheckerThread);
|
Thread taskChecker = new(TaskCheckerThread);
|
||||||
taskChecker.Start();
|
taskChecker.Start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void UpdateSettings(string? downloadLocation, string? komgaUrl, string? komgaAuth, string? kavitaUrl, string? kavitaUsername, string? kavitaPassword)
|
||||||
|
{
|
||||||
|
if (komgaUrl is not null && komgaAuth is not null && komgaUrl.Length > 0 && komgaAuth.Length > 0)
|
||||||
|
{
|
||||||
|
settings.libraryManagers.RemoveWhere(lm => lm.GetType() == typeof(Komga));
|
||||||
|
settings.libraryManagers.Add(new Komga(komgaUrl, komgaAuth, logger));
|
||||||
|
}
|
||||||
|
if (kavitaUrl is not null && kavitaUsername is not null && kavitaPassword is not null && kavitaUrl.Length > 0 && kavitaUsername.Length > 0 && kavitaPassword.Length > 0)
|
||||||
|
{
|
||||||
|
settings.libraryManagers.RemoveWhere(lm => lm.GetType() == typeof(Kavita));
|
||||||
|
settings.libraryManagers.Add(new Kavita(kavitaUrl, kavitaUsername, kavitaPassword, logger));
|
||||||
|
}
|
||||||
|
if (downloadLocation is not null && downloadLocation.Length > 0)
|
||||||
|
settings.downloadLocation = downloadLocation;
|
||||||
|
ExportDataAndSettings();
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Runs continuously until shutdown.
|
/// Runs continuously until shutdown.
|
||||||
@ -384,6 +371,31 @@ public class TaskManager
|
|||||||
{
|
{
|
||||||
return this.chapterCollection.Keys.ToArray();
|
return this.chapterCollection.Keys.ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Updates the available Chapters of a Publication
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="connector">Connector to use</param>
|
||||||
|
/// <param name="publication">Publication to check</param>
|
||||||
|
/// <param name="language">Language to receive chapters for</param>
|
||||||
|
/// <returns>List of Chapters that were previously not in collection</returns>
|
||||||
|
public List<Chapter> GetNewChaptersList(Connector connector, Publication publication, string language)
|
||||||
|
{
|
||||||
|
List<Chapter> newChaptersList = new();
|
||||||
|
chapterCollection.TryAdd(publication, newChaptersList); //To ensure publication is actually in collection
|
||||||
|
|
||||||
|
Chapter[] newChapters = connector.GetChapters(publication, language);
|
||||||
|
newChaptersList = newChapters.Where(nChapter => !connector.CheckChapterIsDownloaded(publication, nChapter)).ToList();
|
||||||
|
|
||||||
|
return newChaptersList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Chapter> GetExistingChaptersList(Connector connector, Publication publication, string language)
|
||||||
|
{
|
||||||
|
Chapter[] newChapters = connector.GetChapters(publication, language);
|
||||||
|
return newChapters.Where(nChapter => connector.CheckChapterIsDownloaded(publication, nChapter)).ToList();
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Return Connector with given Name
|
/// Return Connector with given Name
|
||||||
|
@ -24,7 +24,7 @@ public class DownloadNewChaptersTask : TrangaTask
|
|||||||
|
|
||||||
//Check if Publication already has a Folder
|
//Check if Publication already has a Folder
|
||||||
pub.CreatePublicationFolder(taskManager.settings.downloadLocation);
|
pub.CreatePublicationFolder(taskManager.settings.downloadLocation);
|
||||||
List<Chapter> newChapters = GetNewChaptersList(connector, pub, language!, ref taskManager.chapterCollection);
|
List<Chapter> newChapters = taskManager.GetNewChaptersList(connector, pub, language!);
|
||||||
|
|
||||||
connector.CopyCoverFromCacheToDownloadLocation(pub, taskManager.settings);
|
connector.CopyCoverFromCacheToDownloadLocation(pub, taskManager.settings);
|
||||||
|
|
||||||
@ -37,25 +37,6 @@ public class DownloadNewChaptersTask : TrangaTask
|
|||||||
this.childTasks.Add(newTask);
|
this.childTasks.Add(newTask);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Updates the available Chapters of a Publication
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="connector">Connector to use</param>
|
|
||||||
/// <param name="publication">Publication to check</param>
|
|
||||||
/// <param name="language">Language to receive chapters for</param>
|
|
||||||
/// <param name="chapterCollection"></param>
|
|
||||||
/// <returns>List of Chapters that were previously not in collection</returns>
|
|
||||||
private static List<Chapter> GetNewChaptersList(Connector connector, Publication publication, string language, ref Dictionary<Publication, List<Chapter>> chapterCollection)
|
|
||||||
{
|
|
||||||
List<Chapter> newChaptersList = new();
|
|
||||||
chapterCollection.TryAdd(publication, newChaptersList); //To ensure publication is actually in collection
|
|
||||||
|
|
||||||
Chapter[] newChapters = connector.GetChapters(publication, language);
|
|
||||||
newChaptersList = newChapters.Where(nChapter => !connector.CheckChapterIsDownloaded(publication, nChapter)).ToList();
|
|
||||||
|
|
||||||
return newChaptersList;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string ToString()
|
public override string ToString()
|
||||||
{
|
{
|
||||||
|
@ -66,8 +66,8 @@ async function GetPublication(internalId){
|
|||||||
return json;
|
return json;
|
||||||
}
|
}
|
||||||
|
|
||||||
async function GetChapters(internalId, connectorName, language){
|
async function GetChapters(internalId, connectorName, onlyNew, language){
|
||||||
var uri = apiUri + `/Publications/GetChapters?internalId=${internalId}&connectorName=${connectorName}&language=${language}`;
|
var uri = apiUri + `/Publications/GetChapters?internalId=${internalId}&connectorName=${connectorName}&onlyNew=${onlyNew}&language=${language}`;
|
||||||
let json = await GetData(uri);
|
let json = await GetData(uri);
|
||||||
return json;
|
return json;
|
||||||
}
|
}
|
||||||
|
@ -154,7 +154,7 @@ function OpenDownloadChapterTaskPopup(){
|
|||||||
selectedChapters.value = "";
|
selectedChapters.value = "";
|
||||||
chapterOutput.replaceChildren();
|
chapterOutput.replaceChildren();
|
||||||
createDownloadChaptersTask.style.display = "block";
|
createDownloadChaptersTask.style.display = "block";
|
||||||
GetChapters(toEditId, connectorSelect.value, "en").then((json) => {
|
GetChapters(toEditId, connectorSelect.value, true, "en").then((json) => {
|
||||||
var i = 0;
|
var i = 0;
|
||||||
json.forEach(chapter => {
|
json.forEach(chapter => {
|
||||||
var chapterDom = document.createElement("div");
|
var chapterDom = document.createElement("div");
|
||||||
|
Loading…
Reference in New Issue
Block a user