Compare commits

..

5 Commits
1.1 ... main

Author SHA1 Message Date
54d2afac8d attempt to clean up working directories 2023-11-12 16:23:38 -05:00
983a57b3d7 configurable user agent 2023-11-12 16:08:13 -05:00
c30deeed49 workaround to be allowed to download podcasts automatically
you know, like a... like a um.. what do you call those...

podcast
2023-11-12 15:09:15 -05:00
2b0586b0ac tell me the title 2023-11-12 15:00:01 -05:00
a832635a21 back to not always writing workorder file 2023-07-17 16:22:26 -04:00
5 changed files with 44 additions and 8 deletions

View File

@ -11,6 +11,7 @@ namespace ttrss_co_client
public string OnDoneCopy { get; set; } public string OnDoneCopy { get; set; }
public string WorkingDirectory { get; set; } = "./working/"; public string WorkingDirectory { get; set; } = "./working/";
public string ChatScript { get; set; } public string ChatScript { get; set; }
public string UserAgent { get; set; }
public IEnumerable<FeedAction> feedActions { get; set; } public IEnumerable<FeedAction> feedActions { get; set; }
public class FeedAction public class FeedAction
{ {

View File

@ -152,18 +152,24 @@ namespace ttrss_co_client
{ {
var wo = await lingeringTask; var wo = await lingeringTask;
var wop = Path.Combine(conf.WorkingDirectory, wo.Item2.guid.ToString(), "workorder.json"); var wop = Path.Combine(conf.WorkingDirectory, wo.Item2.guid.ToString(), "workorder.json");
File.WriteAllText(wop, JsonConvert.SerializeObject(wo.Item2));
//if you tell me it's done, or you need to continue now.... I believe you. //if you tell me it's done, or you need to continue now.... I believe you.
switch (wo.Item1) switch (wo.Item1)
{ {
case Phase2Task.TaskStatus.Done: case Phase2Task.TaskStatus.Done:
File.Delete(wop); var workingSubDir = Path.Combine(conf.WorkingDirectory, wo.Item2.guid.ToString());
Directory.Delete(Path.Combine(conf.WorkingDirectory, wo.Item2.guid.ToString())); foreach(var file in Directory.GetFiles(workingSubDir, "*.*", SearchOption.AllDirectories))
{
File.Delete(file);
}
//imo this next line should also handle the above, but apparently I'm alone in that.
Directory.Delete(workingSubDir, true);
break; break;
case Phase2Task.TaskStatus.ContinueNow: case Phase2Task.TaskStatus.ContinueNow:
remainingWork.Add(wo.Item2); remainingWork.Add(wo.Item2);
break; break;
case Phase2Task.TaskStatus.TryLater: case Phase2Task.TaskStatus.TryLater:
File.WriteAllText(wop, JsonConvert.SerializeObject(wo.Item2));
break; break;
} }
} }
@ -173,6 +179,25 @@ namespace ttrss_co_client
await ttrssClient.Logout(); await ttrssClient.Logout();
Console.WriteLine($"logged out of ttrss."); Console.WriteLine($"logged out of ttrss.");
#region cleanup
Console.WriteLine("===== phase 3 =====");
//loop through working directory looking for other work orders to add
var subdirs = Directory.GetDirectories(conf.WorkingDirectory);
foreach(var subdir in subdirs)
{
if(Directory.GetFiles(subdir)?.Length == 0)
{
Console.WriteLine($"{subdir} is empty");
Directory.Delete(subdir);
}
else
{
Console.WriteLine($"{subdir} is not empty: {string.Join(", ", Directory.GetFiles(subdir))}");
}
}
#endregion
Console.WriteLine($"done for real"); Console.WriteLine($"done for real");
} }
static Configuration Configure(string configurationPath = "appsettings.json") static Configuration Configure(string configurationPath = "appsettings.json")

View File

@ -6,6 +6,7 @@
"onDoneCopy":"./", "onDoneCopy":"./",
"workingDirectory":"working/", "workingDirectory":"working/",
"chatScript": "miscChat.sh", "chatScript": "miscChat.sh",
"userAgent": "Mozilla/5.0 (compatible; wget-is-not-a-crime/1.0)",
"feedActions": "feedActions":
[ [
{ {

View File

@ -15,8 +15,11 @@ public class ChatMessage : Phase2Task
public override async Task<Tuple<TaskStatus, WorkOrder>> ActOn(WorkOrder workOrder) public override async Task<Tuple<TaskStatus, WorkOrder>> ActOn(WorkOrder workOrder)
{ {
await Process.Start(ChatScript, await Process.Start(ChatScript,
workOrder.data["chatmessage"] + (await TtrssClient.GetArticles(workOrder.articleId)).First().feed_title workOrder.data["chatmessage"] +
).WaitForExitAsync(); (await TtrssClient.GetArticles(workOrder.articleId)).First().feed_title +
": " +
(await TtrssClient.GetArticles(workOrder.articleId)).First().title
).WaitForExitAsync();
return new Tuple<TaskStatus, WorkOrder>(TaskStatus.Done, workOrder); return new Tuple<TaskStatus, WorkOrder>(TaskStatus.Done, workOrder);
} }
} }

View File

@ -25,10 +25,16 @@ namespace ttrss_co_client.tasks
var extensionUpstream = attachmentLink.Substring(attachmentLink.LastIndexOf('.')); var extensionUpstream = attachmentLink.Substring(attachmentLink.LastIndexOf('.'));
var downloadPath = Path.Combine(workingFolder, headline.title) + extensionUpstream; var downloadPath = Path.Combine(workingFolder, headline.title) + extensionUpstream;
var downloader = new HttpClient(); var downloader = new HttpClient();
downloader.DefaultRequestHeaders.UserAgent.ParseAdd(Conf.UserAgent);
sw.Start(); sw.Start();
File.WriteAllBytes(downloadPath, await (await downloader.GetAsync(attachmentLink)).Content.ReadAsByteArrayAsync()); var dlResult = (await downloader.GetAsync(attachmentLink));
File.WriteAllBytes(downloadPath, await dlResult.Content.ReadAsByteArrayAsync());
sw.Stop(); sw.Stop();
var outputStr = $"{(File.Exists(downloadPath) ? "Success" : "fail")} in {sw.Elapsed}"; var outputStr = $"{(dlResult.IsSuccessStatusCode ? "Success" : "fail")} in {sw.Elapsed}";
if(!dlResult.IsSuccessStatusCode)
{
outputStr += $"\n\t{dlResult.StatusCode} - {dlResult.ReasonPhrase}";
}
Console.WriteLine($" {attachmentLink}\n{outputStr}"); Console.WriteLine($" {attachmentLink}\n{outputStr}");
await TtrssClient.SetArticleLabel(labelsWRTArticle.First(l => l.caption?.ToLower() == this.TriggerLabel.ToLower()).id, false, headline.id); await TtrssClient.SetArticleLabel(labelsWRTArticle.First(l => l.caption?.ToLower() == this.TriggerLabel.ToLower()).id, false, headline.id);
@ -45,7 +51,7 @@ namespace ttrss_co_client.tasks
Console.WriteLine($"article {headline.id} - podcastifying; {podcastTitle}"); Console.WriteLine($"article {headline.id} - podcastifying; {podcastTitle}");
await TtrssClient.UpdateArticleNote($"{headline.note}\n[{DateTime.Now.ToString("o")}] - podcastify attachment (dl): {outputStr}", headline.id); await TtrssClient.UpdateArticleNote($"{headline.note}\n[{DateTime.Now.ToString("o")}] - podcastify attachment (dl): {outputStr}", headline.id);
if (!File.Exists(downloadPath)) if (!dlResult.IsSuccessStatusCode)
{ {
return null; return null;
} }