Compare commits

...

1 Commits

View File

@ -2698,7 +2698,10 @@ public class Program
{ {
totalSize = post.SinglePosts.Count; totalSize = post.SinglePosts.Count;
} }
bool isNew = false;
bool anyNew = false;
bool anyExisting = false;
bool anyFailed = false;
await AnsiConsole.Progress() await AnsiConsole.Progress()
.Columns(GetProgressColumns(downloadContext.DownloadConfig.ShowScrapeSize)) .Columns(GetProgressColumns(downloadContext.DownloadConfig.ShowScrapeSize))
.StartAsync(async ctx => .StartAsync(async ctx =>
@ -2738,7 +2741,7 @@ public class Program
SinglePost.Medium mediaInfo = post.SinglePostMedia.FirstOrDefault(m => m.id == postKVP.Key); SinglePost.Medium mediaInfo = post.SinglePostMedia.FirstOrDefault(m => m.id == postKVP.Key);
SinglePost postInfo = post.SinglePostObjects.FirstOrDefault(p => p?.media?.Contains(mediaInfo) == true); SinglePost postInfo = post.SinglePostObjects.FirstOrDefault(p => p?.media?.Contains(mediaInfo) == true);
isNew = await downloadContext.DownloadHelper.DownloadPostDRMVideo( bool downloaded = await downloadContext.DownloadHelper.DownloadPostDRMVideo(
policy: policy, policy: policy,
signature: signature, signature: signature,
kvp: kvp, kvp: kvp,
@ -2754,6 +2757,23 @@ public class Program
postMedia: mediaInfo, postMedia: mediaInfo,
author: postInfo?.author, author: postInfo?.author,
users: users); users: users);
if (downloaded)
{
anyNew = true;
}
else
{
bool recorded = await downloadContext.DBHelper.CheckDownloaded(path, postKVP.Key, "Posts");
if (recorded)
{
anyExisting = true;
}
else
{
anyFailed = true;
Log.Error("Failed to download DRM media {MediaId} for post {PostId}; not marked downloaded", postKVP.Key, post_id);
}
}
} }
else else
{ {
@ -2762,7 +2782,7 @@ public class Program
SinglePost.Medium? mediaInfo = post.SinglePostMedia.FirstOrDefault(m => (m?.id == postKVP.Key) == true); SinglePost.Medium? mediaInfo = post.SinglePostMedia.FirstOrDefault(m => (m?.id == postKVP.Key) == true);
SinglePost? postInfo = post.SinglePostObjects.FirstOrDefault(p => p?.media?.Contains(mediaInfo) == true); SinglePost? postInfo = post.SinglePostObjects.FirstOrDefault(p => p?.media?.Contains(mediaInfo) == true);
isNew = await downloadContext.DownloadHelper.DownloadPostMedia( bool downloaded = await downloadContext.DownloadHelper.DownloadPostMedia(
url: postKVP.Value, url: postKVP.Value,
folder: path, folder: path,
media_id: postKVP.Key, media_id: postKVP.Key,
@ -2773,6 +2793,23 @@ public class Program
postMedia: mediaInfo, postMedia: mediaInfo,
author: postInfo?.author, author: postInfo?.author,
users: users); users: users);
if (downloaded)
{
anyNew = true;
}
else
{
bool recorded = await downloadContext.DBHelper.CheckDownloaded(path, postKVP.Key, "Posts");
if (recorded)
{
anyExisting = true;
}
else
{
anyFailed = true;
Log.Error("Failed to download media {MediaId} for post {PostId}; not marked downloaded", postKVP.Key, post_id);
}
}
} }
catch catch
{ {
@ -2782,16 +2819,21 @@ public class Program
} }
task.StopTask(); task.StopTask();
}); });
if (isNew) if (anyNew)
{ {
AnsiConsole.Markup($"[red]Post {post_id} downloaded\n[/]"); AnsiConsole.Markup($"[red]Post {post_id} downloaded\n[/]");
Log.Debug($"Post {post_id} downloaded"); Log.Debug($"Post {post_id} downloaded");
} }
else else if (anyExisting && !anyFailed)
{ {
AnsiConsole.Markup($"[red]Post {post_id} already downloaded\n[/]"); AnsiConsole.Markup($"[red]Post {post_id} already downloaded\n[/]");
Log.Debug($"Post {post_id} already downloaded"); Log.Debug($"Post {post_id} already downloaded");
} }
else
{
AnsiConsole.Markup($"[red]Post {post_id} failed to download; no media marked as downloaded\n[/]");
Log.Error("Post {PostId} failed to download; no media marked as downloaded", post_id);
}
} }
public static async Task<(bool IsExit, Dictionary<string, long>? selectedUsers, Entities.Config? updatedConfig)> HandleUserSelection(APIHelper apiHelper, Entities.Config currentConfig, Dictionary<string, long> users, Dictionary<string, long> lists) public static async Task<(bool IsExit, Dictionary<string, long>? selectedUsers, Entities.Config? updatedConfig)> HandleUserSelection(APIHelper apiHelper, Entities.Config currentConfig, Dictionary<string, long> users, Dictionary<string, long> lists)