Connector use TrangaSettings instead of own values for imageCache and downloadLocation

This commit is contained in:
glax 2023-06-27 22:57:44 +02:00
parent 4cb3694cd5
commit f66ab7d40b
7 changed files with 20 additions and 27 deletions

View File

@ -15,24 +15,18 @@ namespace Tranga;
/// </summary> /// </summary>
public abstract class Connector public abstract class Connector
{ {
internal string downloadLocation { get; } //Location of local files protected TrangaSettings settings { get; }
protected DownloadClient downloadClient { get; init; } protected DownloadClient downloadClient { get; init; } = null!;
protected readonly Logger? logger; protected readonly Logger? logger;
private readonly string _imageCachePath;
protected Connector(string downloadLocation, string imageCachePath, Logger? logger) protected Connector(TrangaSettings settings, Logger? logger = null)
{ {
this.downloadLocation = downloadLocation; this.settings = settings;
this.logger = logger; this.logger = logger;
this.downloadClient = new DownloadClient(new Dictionary<byte, int>() if (!Directory.Exists(settings.coverImageCache))
{ Directory.CreateDirectory(settings.coverImageCache);
//RequestTypes for RateLimits
}, logger);
this._imageCachePath = imageCachePath;
if (!Directory.Exists(imageCachePath))
Directory.CreateDirectory(this._imageCachePath);
} }
public abstract string name { get; } //Name of the Connector (e.g. Website) public abstract string name { get; } //Name of the Connector (e.g. Website)
@ -145,7 +139,7 @@ public abstract class Connector
{ {
logger?.WriteLine(this.GetType().ToString(), $"Cloning cover {publication.sortName} -> {publication.internalId}"); logger?.WriteLine(this.GetType().ToString(), $"Cloning cover {publication.sortName} -> {publication.internalId}");
//Check if Publication already has a Folder and cover //Check if Publication already has a Folder and cover
string publicationFolder = publication.CreatePublicationFolder(downloadLocation); string publicationFolder = publication.CreatePublicationFolder(settings.downloadLocation);
DirectoryInfo dirInfo = new (publicationFolder); DirectoryInfo dirInfo = new (publicationFolder);
if (dirInfo.EnumerateFiles().Any(info => info.Name.Contains("cover", StringComparison.InvariantCultureIgnoreCase))) if (dirInfo.EnumerateFiles().Any(info => info.Name.Contains("cover", StringComparison.InvariantCultureIgnoreCase)))
{ {
@ -187,9 +181,9 @@ public abstract class Connector
public bool CheckChapterIsDownloaded(Publication publication, Chapter chapter) public bool CheckChapterIsDownloaded(Publication publication, Chapter chapter)
{ {
string newFilePath = GetArchiveFilePath(publication, chapter); string newFilePath = GetArchiveFilePath(publication, chapter);
if (!Directory.Exists(Path.Join(downloadLocation, publication.folderName))) if (!Directory.Exists(Path.Join(settings.downloadLocation, publication.folderName)))
return false; return false;
FileInfo[] archives = new DirectoryInfo(Path.Join(downloadLocation, publication.folderName)).GetFiles(); FileInfo[] archives = new DirectoryInfo(Path.Join(settings.downloadLocation, publication.folderName)).GetFiles();
Regex chapterRex = new(@"(Vol.[0-9]*)*Ch.[0-9]+"); Regex chapterRex = new(@"(Vol.[0-9]*)*Ch.[0-9]+");
if (File.Exists(newFilePath)) if (File.Exists(newFilePath))
@ -211,7 +205,7 @@ public abstract class Connector
/// <returns>Filepath</returns> /// <returns>Filepath</returns>
protected string GetArchiveFilePath(Publication publication, Chapter chapter) protected string GetArchiveFilePath(Publication publication, Chapter chapter)
{ {
return Path.Join(downloadLocation, publication.folderName, $"{publication.folderName} - {chapter.fileName}.cbz"); return Path.Join(settings.downloadLocation, publication.folderName, $"{publication.folderName} - {chapter.fileName}.cbz");
} }
/// <summary> /// <summary>
@ -289,7 +283,7 @@ public abstract class Connector
{ {
string[] split = url.Split('/'); string[] split = url.Split('/');
string filename = split[^1]; string filename = split[^1];
string saveImagePath = Path.Join(_imageCachePath, filename); string saveImagePath = Path.Join(settings.coverImageCache, filename);
if (File.Exists(saveImagePath)) if (File.Exists(saveImagePath))
return filename; return filename;

View File

@ -19,7 +19,7 @@ public class MangaDex : Connector
Author, Author,
} }
public MangaDex(string downloadLocation, string imageCachePath, Logger? logger) : base(downloadLocation, imageCachePath, logger) public MangaDex(TrangaSettings settings, Logger? logger = null) : base(settings, logger)
{ {
name = "MangaDex"; name = "MangaDex";
this.downloadClient = new DownloadClient(new Dictionary<byte, int>() this.downloadClient = new DownloadClient(new Dictionary<byte, int>()

View File

@ -11,7 +11,7 @@ public class MangaKatana : Connector
{ {
public override string name { get; } public override string name { get; }
public MangaKatana(string downloadLocation, string imageCachePath, Logger? logger) : base(downloadLocation, imageCachePath, logger) public MangaKatana(TrangaSettings settings, Logger? logger = null) : base(settings, logger)
{ {
this.name = "MangaKatana"; this.name = "MangaKatana";
this.downloadClient = new DownloadClient(new Dictionary<byte, int>() this.downloadClient = new DownloadClient(new Dictionary<byte, int>()

View File

@ -11,7 +11,7 @@ public class Manganato : Connector
{ {
public override string name { get; } public override string name { get; }
public Manganato(string downloadLocation, string imageCachePath, Logger? logger) : base(downloadLocation, imageCachePath, logger) public Manganato(TrangaSettings settings, Logger? logger = null) : base(settings, logger)
{ {
this.name = "Manganato"; this.name = "Manganato";
this.downloadClient = new DownloadClient(new Dictionary<byte, int>() this.downloadClient = new DownloadClient(new Dictionary<byte, int>()

View File

@ -16,8 +16,7 @@ public class Mangasee : Connector
private IBrowser? _browser = null; private IBrowser? _browser = null;
private const string ChromiumVersion = "1154303"; private const string ChromiumVersion = "1154303";
public Mangasee(string downloadLocation, string imageCachePath, Logger? logger) : base(downloadLocation, public Mangasee(TrangaSettings settings, Logger? logger = null) : base(settings, logger)
imageCachePath, logger)
{ {
this.name = "Mangasee"; this.name = "Mangasee";
this.downloadClient = new DownloadClient(new Dictionary<byte, int>() this.downloadClient = new DownloadClient(new Dictionary<byte, int>()

View File

@ -25,10 +25,10 @@ public class TaskManager
this.logger = logger; this.logger = logger;
this._connectors = new Connector[] this._connectors = new Connector[]
{ {
new MangaDex(settings.downloadLocation, settings.coverImageCache, logger), new MangaDex(settings, logger),
new Manganato(settings.downloadLocation, settings.coverImageCache, logger), new Manganato(settings, logger),
new Mangasee(settings.downloadLocation, settings.coverImageCache, logger), new Mangasee(settings, logger),
new MangaKatana(settings.downloadLocation, settings.coverImageCache, logger) new MangaKatana(settings, logger)
}; };
this.settings = settings; this.settings = settings;

View File

@ -27,7 +27,7 @@ public class MonitorPublicationTask : TrangaTask
connector.CopyCoverFromCacheToDownloadLocation(publication, taskManager.settings); connector.CopyCoverFromCacheToDownloadLocation(publication, taskManager.settings);
publication.SaveSeriesInfoJson(connector.downloadLocation); publication.SaveSeriesInfoJson(taskManager.settings.downloadLocation);
foreach (Chapter newChapter in newChapters) foreach (Chapter newChapter in newChapters)
{ {