Compare commits
No commits in common. "d89ca0a2ef0c52f5fee45969f54d8586fce3173f" and "67c23b357f49ba2de8becb020ad859db7c8fce52" have entirely different histories.
d89ca0a2ef
...
67c23b357f
@ -1,6 +1,6 @@
|
||||
namespace Logging;
|
||||
|
||||
public readonly struct LogMessage
|
||||
public class LogMessage
|
||||
{
|
||||
public DateTime logTime { get; }
|
||||
public string caller { get; }
|
||||
|
@ -6,6 +6,7 @@ public class MemoryLogger : LoggerBase
|
||||
{
|
||||
private readonly SortedList<DateTime, LogMessage> _logMessages = new();
|
||||
private int _lastLogMessageIndex = 0;
|
||||
private bool _lockLogMessages = false;
|
||||
|
||||
public MemoryLogger(Encoding? encoding = null) : base(encoding)
|
||||
{
|
||||
@ -14,9 +15,12 @@ public class MemoryLogger : LoggerBase
|
||||
|
||||
protected override void Write(LogMessage value)
|
||||
{
|
||||
lock (_logMessages)
|
||||
if (!_lockLogMessages)
|
||||
{
|
||||
_logMessages.Add(DateTime.Now, value);
|
||||
_lockLogMessages = true;
|
||||
while(!_logMessages.TryAdd(DateTime.Now, value))
|
||||
Thread.Sleep(10);
|
||||
_lockLogMessages = false;
|
||||
}
|
||||
}
|
||||
|
||||
@ -37,9 +41,11 @@ public class MemoryLogger : LoggerBase
|
||||
|
||||
for (int retIndex = 0; retIndex < ret.Length; retIndex++)
|
||||
{
|
||||
lock (_logMessages)
|
||||
if (!_lockLogMessages)
|
||||
{
|
||||
_lockLogMessages = true;
|
||||
ret[retIndex] = _logMessages.GetValueAtIndex(_logMessages.Count - retLength + retIndex).ToString();
|
||||
_lockLogMessages = false;
|
||||
}
|
||||
}
|
||||
|
||||
@ -57,9 +63,11 @@ public class MemoryLogger : LoggerBase
|
||||
{
|
||||
try
|
||||
{
|
||||
lock(_logMessages)
|
||||
if (!_lockLogMessages)
|
||||
{
|
||||
_lockLogMessages = true;
|
||||
ret.Add(_logMessages.GetValueAtIndex(_lastLogMessageIndex + retIndex).ToString());
|
||||
_lockLogMessages = false;
|
||||
}
|
||||
}
|
||||
catch (NullReferenceException e)//Called when LogMessage has not finished writing
|
||||
|
@ -24,7 +24,7 @@ public class DownloadChapter : Job
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return $"{id} Chapter: {chapter}";
|
||||
return $"DownloadChapter {id} {chapter}";
|
||||
}
|
||||
|
||||
protected override IEnumerable<Job> ExecuteReturnSubTasksInternal()
|
||||
|
@ -28,7 +28,7 @@ public class DownloadNewChapters : Job
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return $"{id} Manga: {manga}";
|
||||
return $"DownloadChapter {id} {manga}";
|
||||
}
|
||||
|
||||
protected override IEnumerable<Job> ExecuteReturnSubTasksInternal()
|
||||
|
@ -18,7 +18,7 @@ public class Mangaworld: MangaConnector
|
||||
public override Manga[] GetManga(string publicationTitle = "")
|
||||
{
|
||||
Log($"Searching Publications. Term=\"{publicationTitle}\"");
|
||||
string sanitizedTitle = string.Join(' ', Regex.Matches(publicationTitle, "[A-z]*").Where(str => str.Length > 0)).ToLower();
|
||||
string sanitizedTitle = string.Join('_', Regex.Matches(publicationTitle, "[A-z]*").Where(str => str.Length > 0)).ToLower();
|
||||
string requestUrl = $"https://www.mangaworld.bz/archive?keyword={sanitizedTitle}";
|
||||
DownloadClient.RequestResult requestResult =
|
||||
downloadClient.MakeRequest(requestUrl, 1);
|
||||
@ -34,9 +34,6 @@ public class Mangaworld: MangaConnector
|
||||
|
||||
private Manga[] ParsePublicationsFromHtml(HtmlDocument document)
|
||||
{
|
||||
if (!document.DocumentNode.SelectSingleNode("//div[@class='comics-grid']").ChildNodes
|
||||
.Any(node => node.HasClass("entry")))
|
||||
return Array.Empty<Manga>();
|
||||
|
||||
List<string> urls = document.DocumentNode
|
||||
.SelectNodes(
|
||||
@ -137,8 +134,8 @@ public class Mangaworld: MangaConnector
|
||||
foreach (HtmlNode volNode in document.DocumentNode.SelectNodes(
|
||||
"//div[contains(concat(' ',normalize-space(@class),' '),'chapters-wrapper')]//div[contains(concat(' ',normalize-space(@class),' '),'volume-element')]"))
|
||||
{
|
||||
string volume = volNode.SelectNodes("div").First(node => node.HasClass("volume")).SelectSingleNode("p").InnerText.Split(' ')[^1];
|
||||
foreach (HtmlNode chNode in volNode.SelectNodes("div").First(node => node.HasClass("volume-chapters")).SelectNodes("div"))
|
||||
string volume = volNode.SelectSingleNode("//p[contains(concat(' ',normalize-space(@class),' '),'volume-name')]").InnerText.Split(' ')[^1];
|
||||
foreach (HtmlNode chNode in volNode.SelectNodes("//div[contains(concat(' ',normalize-space(@class),' '),'volume-chapters')]/div[@class='chapter']"))
|
||||
{
|
||||
string number = chNode.SelectSingleNode("a").SelectSingleNode("span").InnerText.Split(" ")[^1];
|
||||
string url = chNode.SelectSingleNode("a").GetAttributeValue("href", "");
|
||||
|
@ -13,8 +13,6 @@ public partial class Tranga : GlobalBase
|
||||
|
||||
public Tranga(Logger? logger, TrangaSettings settings) : base(logger, settings)
|
||||
{
|
||||
Log("\n\n _______ \n|_ _|.----..---.-..-----..-----..---.-.\n | | | _|| _ || || _ || _ |\n |___| |__| |___._||__|__||___ ||___._|\n |_____| \n\n");
|
||||
Log(settings.ToString());
|
||||
keepRunning = true;
|
||||
_connectors = new HashSet<MangaConnector>()
|
||||
{
|
||||
|
@ -23,13 +23,13 @@ public class TrangaSettings
|
||||
string lockFilePath = $"{settingsFilePath}.lock";
|
||||
if (File.Exists(settingsFilePath) && !File.Exists(lockFilePath))
|
||||
{//Load from settings file
|
||||
FileStream lockFile = File.Create(lockFilePath,0, FileOptions.DeleteOnClose); //lock settingsfile
|
||||
FileStream lockFile = File.Create(lockFilePath,0, FileOptions.DeleteOnClose);
|
||||
string settingsStr = File.ReadAllText(settingsFilePath);
|
||||
TrangaSettings settings = JsonConvert.DeserializeObject<TrangaSettings>(settingsStr)!;
|
||||
this.downloadLocation = downloadLocation ?? settings.downloadLocation;
|
||||
this.workingDirectory = workingDirectory ?? settings.workingDirectory;
|
||||
this.apiPortNumber = apiPortNumber ?? settings.apiPortNumber;
|
||||
lockFile.Close(); //unlock settingsfile
|
||||
lockFile.Close();
|
||||
}
|
||||
else if(!File.Exists(settingsFilePath))
|
||||
{//No settings file exists
|
||||
@ -132,15 +132,4 @@ public class TrangaSettings
|
||||
{
|
||||
return Path.Join(this.coverImageCache, manga.coverFileNameInCache);
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return $"TrangaSettings:\n" +
|
||||
$"\tDownloadLocation: {downloadLocation}\n" +
|
||||
$"\tworkingDirectory: {workingDirectory}\n" +
|
||||
$"\tjobsFolderPath: {jobsFolderPath}\n" +
|
||||
$"\tsettingsFilePath: {settingsFilePath}\n" +
|
||||
$"\t\tnotificationConnectors: {notificationConnectorsFilePath}\n" +
|
||||
$"\t\tlibraryConnectors: {libraryConnectorsFilePath}\n";
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user