Major refactor #141

Merged
sim0n00ps merged 55 commits from whimsical-c4lic0/OF-DL:refactor-architecture into master 2026-02-13 00:21:58 +00:00
7 changed files with 214 additions and 177 deletions
Showing only changes of commit 6c00f1a6aa - Show all commits

View File

@ -26,7 +26,7 @@ namespace OF_DL.Helpers;
public class APIHelper : IAPIHelper public class APIHelper : IAPIHelper
{ {
private static readonly JsonSerializerSettings m_JsonSerializerSettings; private static readonly JsonSerializerSettings m_JsonSerializerSettings;
private readonly IDBHelper m_DBHelper; private readonly IDBHelper dbHelper;
private readonly IDownloadConfig downloadConfig; private readonly IDownloadConfig downloadConfig;
private readonly Auth auth; private readonly Auth auth;
private static DateTime? cachedDynamicRulesExpiration; private static DateTime? cachedDynamicRulesExpiration;
@ -42,11 +42,11 @@ public class APIHelper : IAPIHelper
}; };
} }
public APIHelper(Auth auth, IDownloadConfig downloadConfig) public APIHelper(Auth auth, IDownloadConfig downloadConfig, IDBHelper dbHelper)
{ {
this.auth = auth; this.auth = auth;
m_DBHelper = new DBHelper(downloadConfig);
this.downloadConfig = downloadConfig; this.downloadConfig = downloadConfig;
this.dbHelper = dbHelper;
} }
@ -570,21 +570,21 @@ public class APIHelper : IAPIHelper
{ {
if (story.media[0].createdAt.HasValue) if (story.media[0].createdAt.HasValue)
{ {
await m_DBHelper.AddStory(folder, story.id, string.Empty, "0", false, false, story.media[0].createdAt.Value); await dbHelper.AddStory(folder, story.id, string.Empty, "0", false, false, story.media[0].createdAt.Value);
} }
else if (story.createdAt.HasValue) else if (story.createdAt.HasValue)
{ {
await m_DBHelper.AddStory(folder, story.id, string.Empty, "0", false, false, story.createdAt.Value); await dbHelper.AddStory(folder, story.id, string.Empty, "0", false, false, story.createdAt.Value);
} }
else else
{ {
await m_DBHelper.AddStory(folder, story.id, string.Empty, "0", false, false, DateTime.Now); await dbHelper.AddStory(folder, story.id, string.Empty, "0", false, false, DateTime.Now);
} }
if (story.media != null && story.media.Count > 0) if (story.media != null && story.media.Count > 0)
{ {
foreach (Stories.Medium medium in story.media) foreach (Stories.Medium medium in story.media)
{ {
await m_DBHelper.AddMedia(folder, medium.id, story.id, medium.files.full.url, null, null, null, "Stories", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), false, false, null); await dbHelper.AddMedia(folder, medium.id, story.id, medium.files.full.url, null, null, null, "Stories", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), false, false, null);
if (medium.type == "photo" && !config.DownloadImages) if (medium.type == "photo" && !config.DownloadImages)
{ {
continue; continue;
@ -671,21 +671,21 @@ public class APIHelper : IAPIHelper
{ {
if (item.media[0].createdAt.HasValue) if (item.media[0].createdAt.HasValue)
{ {
await m_DBHelper.AddStory(folder, item.id, string.Empty, "0", false, false, item.media[0].createdAt.Value); await dbHelper.AddStory(folder, item.id, string.Empty, "0", false, false, item.media[0].createdAt.Value);
} }
else if (item.createdAt.HasValue) else if (item.createdAt.HasValue)
{ {
await m_DBHelper.AddStory(folder, item.id, string.Empty, "0", false, false, item.createdAt.Value); await dbHelper.AddStory(folder, item.id, string.Empty, "0", false, false, item.createdAt.Value);
} }
else else
{ {
await m_DBHelper.AddStory(folder, item.id, string.Empty, "0", false, false, DateTime.Now); await dbHelper.AddStory(folder, item.id, string.Empty, "0", false, false, DateTime.Now);
} }
if (item.media.Count > 0 && item.media[0].canView) if (item.media.Count > 0 && item.media[0].canView)
{ {
foreach (HighlightMedia.Medium medium in item.media) foreach (HighlightMedia.Medium medium in item.media)
{ {
await m_DBHelper.AddMedia(folder, medium.id, item.id, item.media[0].files.full.url, null, null, null, "Stories", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), false, false, null); await dbHelper.AddMedia(folder, medium.id, item.id, item.media[0].files.full.url, null, null, null, "Stories", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), false, false, null);
if (medium.type == "photo" && !config.DownloadImages) if (medium.type == "photo" && !config.DownloadImages)
{ {
continue; continue;
@ -808,7 +808,7 @@ public class APIHelper : IAPIHelper
} }
} }
} }
await m_DBHelper.AddPost(folder, purchase.id, purchase.text != null ? purchase.text : string.Empty, purchase.price != null ? purchase.price.ToString() : "0", purchase.price != null && purchase.isOpened ? true : false, purchase.isArchived.HasValue ? purchase.isArchived.Value : false, purchase.createdAt != null ? purchase.createdAt.Value : purchase.postedAt.Value); await dbHelper.AddPost(folder, purchase.id, purchase.text != null ? purchase.text : string.Empty, purchase.price != null ? purchase.price.ToString() : "0", purchase.price != null && purchase.isOpened ? true : false, purchase.isArchived.HasValue ? purchase.isArchived.Value : false, purchase.createdAt != null ? purchase.createdAt.Value : purchase.postedAt.Value);
paidPostCollection.PaidPostObjects.Add(purchase); paidPostCollection.PaidPostObjects.Add(purchase);
foreach (Messages.Medium medium in purchase.media) foreach (Messages.Medium medium in purchase.media)
{ {
@ -840,7 +840,7 @@ public class APIHelper : IAPIHelper
{ {
if (!paidPostCollection.PaidPosts.ContainsKey(medium.id)) if (!paidPostCollection.PaidPosts.ContainsKey(medium.id))
{ {
await m_DBHelper.AddMedia(folder, medium.id, purchase.id, medium.files.full.url, null, null, null, "Posts", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), previewids.Contains(medium.id) ? true : false, false, null); await dbHelper.AddMedia(folder, medium.id, purchase.id, medium.files.full.url, null, null, null, "Posts", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), previewids.Contains(medium.id) ? true : false, false, null);
paidPostCollection.PaidPosts.Add(medium.id, medium.files.full.url); paidPostCollection.PaidPosts.Add(medium.id, medium.files.full.url);
paidPostCollection.PaidPostMedia.Add(medium); paidPostCollection.PaidPostMedia.Add(medium);
} }
@ -850,7 +850,7 @@ public class APIHelper : IAPIHelper
if (!paidPostCollection.PaidPosts.ContainsKey(medium.id)) if (!paidPostCollection.PaidPosts.ContainsKey(medium.id))
{ {
await m_DBHelper.AddMedia(folder, medium.id, purchase.id, medium.files.drm.manifest.dash, null, null, null, "Posts", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), previewids.Contains(medium.id) ? true : false, false, null); await dbHelper.AddMedia(folder, medium.id, purchase.id, medium.files.drm.manifest.dash, null, null, null, "Posts", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), previewids.Contains(medium.id) ? true : false, false, null);
paidPostCollection.PaidPosts.Add(medium.id, $"{medium.files.drm.manifest.dash},{medium.files.drm.signature.dash.CloudFrontPolicy},{medium.files.drm.signature.dash.CloudFrontSignature},{medium.files.drm.signature.dash.CloudFrontKeyPairId},{medium.id},{purchase.id}"); paidPostCollection.PaidPosts.Add(medium.id, $"{medium.files.drm.manifest.dash},{medium.files.drm.signature.dash.CloudFrontPolicy},{medium.files.drm.signature.dash.CloudFrontSignature},{medium.files.drm.signature.dash.CloudFrontKeyPairId},{medium.id},{purchase.id}");
paidPostCollection.PaidPostMedia.Add(medium); paidPostCollection.PaidPostMedia.Add(medium);
} }
@ -863,7 +863,7 @@ public class APIHelper : IAPIHelper
{ {
if (!paidPostCollection.PaidPosts.ContainsKey(medium.id)) if (!paidPostCollection.PaidPosts.ContainsKey(medium.id))
{ {
await m_DBHelper.AddMedia(folder, medium.id, purchase.id, medium.files.full.url, null, null, null, "Posts", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), previewids.Contains(medium.id) ? true : false, false, null); await dbHelper.AddMedia(folder, medium.id, purchase.id, medium.files.full.url, null, null, null, "Posts", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), previewids.Contains(medium.id) ? true : false, false, null);
paidPostCollection.PaidPosts.Add(medium.id, medium.files.full.url); paidPostCollection.PaidPosts.Add(medium.id, medium.files.full.url);
paidPostCollection.PaidPostMedia.Add(medium); paidPostCollection.PaidPostMedia.Add(medium);
} }
@ -872,7 +872,7 @@ public class APIHelper : IAPIHelper
{ {
if (!paidPostCollection.PaidPosts.ContainsKey(medium.id)) if (!paidPostCollection.PaidPosts.ContainsKey(medium.id))
{ {
await m_DBHelper.AddMedia(folder, medium.id, purchase.id, medium.files.drm.manifest.dash, null, null, null, "Posts", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), previewids.Contains(medium.id) ? true : false, false, null); await dbHelper.AddMedia(folder, medium.id, purchase.id, medium.files.drm.manifest.dash, null, null, null, "Posts", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), previewids.Contains(medium.id) ? true : false, false, null);
paidPostCollection.PaidPosts.Add(medium.id, $"{medium.files.drm.manifest.dash},{medium.files.drm.signature.dash.CloudFrontPolicy},{medium.files.drm.signature.dash.CloudFrontSignature},{medium.files.drm.signature.dash.CloudFrontKeyPairId},{medium.id},{purchase.id}"); paidPostCollection.PaidPosts.Add(medium.id, $"{medium.files.drm.manifest.dash},{medium.files.drm.signature.dash.CloudFrontPolicy},{medium.files.drm.signature.dash.CloudFrontSignature},{medium.files.drm.signature.dash.CloudFrontKeyPairId},{medium.id},{purchase.id}");
paidPostCollection.PaidPostMedia.Add(medium); paidPostCollection.PaidPostMedia.Add(medium);
} }
@ -925,7 +925,7 @@ public class APIHelper : IAPIHelper
} }
else if (config.DownloadPostsIncrementally) else if (config.DownloadPostsIncrementally)
{ {
var mostRecentPostDate = await m_DBHelper.GetMostRecentPostDate(folder); var mostRecentPostDate = await dbHelper.GetMostRecentPostDate(folder);
if (mostRecentPostDate.HasValue) if (mostRecentPostDate.HasValue)
{ {
downloadDateSelection = Enumerations.DownloadDateSelection.after; downloadDateSelection = Enumerations.DownloadDateSelection.after;
@ -1001,7 +1001,7 @@ public class APIHelper : IAPIHelper
} }
} }
} }
await m_DBHelper.AddPost(folder, post.id, post.rawText != null ? post.rawText : string.Empty, post.price != null ? post.price.ToString() : "0", post.price != null && post.isOpened ? true : false, post.isArchived, post.postedAt); await dbHelper.AddPost(folder, post.id, post.rawText != null ? post.rawText : string.Empty, post.price != null ? post.price.ToString() : "0", post.price != null && post.isOpened ? true : false, post.isArchived, post.postedAt);
postCollection.PostObjects.Add(post); postCollection.PostObjects.Add(post);
if (post.media != null && post.media.Count > 0) if (post.media != null && post.media.Count > 0)
{ {
@ -1032,7 +1032,7 @@ public class APIHelper : IAPIHelper
{ {
if (!postCollection.Posts.ContainsKey(medium.id)) if (!postCollection.Posts.ContainsKey(medium.id))
{ {
await m_DBHelper.AddMedia(folder, medium.id, post.id, medium.files!.full.url, null, null, null, "Posts", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), postPreviewIds.Contains((long)medium.id) ? true : false, false, null); await dbHelper.AddMedia(folder, medium.id, post.id, medium.files!.full.url, null, null, null, "Posts", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), postPreviewIds.Contains((long)medium.id) ? true : false, false, null);
postCollection.Posts.Add(medium.id, medium.files!.full.url); postCollection.Posts.Add(medium.id, medium.files!.full.url);
postCollection.PostMedia.Add(medium); postCollection.PostMedia.Add(medium);
} }
@ -1044,7 +1044,7 @@ public class APIHelper : IAPIHelper
{ {
if (!postCollection.Posts.ContainsKey(medium.id)) if (!postCollection.Posts.ContainsKey(medium.id))
{ {
await m_DBHelper.AddMedia(folder, medium.id, post.id, medium.files.preview.url, null, null, null, "Posts", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), postPreviewIds.Contains((long)medium.id) ? true : false, false, null); await dbHelper.AddMedia(folder, medium.id, post.id, medium.files.preview.url, null, null, null, "Posts", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), postPreviewIds.Contains((long)medium.id) ? true : false, false, null);
postCollection.Posts.Add(medium.id, medium.files.preview.url); postCollection.Posts.Add(medium.id, medium.files.preview.url);
postCollection.PostMedia.Add(medium); postCollection.PostMedia.Add(medium);
} }
@ -1058,7 +1058,7 @@ public class APIHelper : IAPIHelper
{ {
if (!postCollection.Posts.ContainsKey(medium.id)) if (!postCollection.Posts.ContainsKey(medium.id))
{ {
await m_DBHelper.AddMedia(folder, medium.id, post.id, medium.files.drm.manifest.dash, null, null, null, "Posts", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), postPreviewIds.Contains((long)medium.id) ? true : false, false, null); await dbHelper.AddMedia(folder, medium.id, post.id, medium.files.drm.manifest.dash, null, null, null, "Posts", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), postPreviewIds.Contains((long)medium.id) ? true : false, false, null);
postCollection.Posts.Add(medium.id, $"{medium.files.drm.manifest.dash},{medium.files.drm.signature.dash.CloudFrontPolicy},{medium.files.drm.signature.dash.CloudFrontSignature},{medium.files.drm.signature.dash.CloudFrontKeyPairId},{medium.id},{post.id}"); postCollection.Posts.Add(medium.id, $"{medium.files.drm.manifest.dash},{medium.files.drm.signature.dash.CloudFrontPolicy},{medium.files.drm.signature.dash.CloudFrontSignature},{medium.files.drm.signature.dash.CloudFrontKeyPairId},{medium.id},{post.id}");
postCollection.PostMedia.Add(medium); postCollection.PostMedia.Add(medium);
} }
@ -1115,7 +1115,7 @@ public class APIHelper : IAPIHelper
} }
} }
} }
await m_DBHelper.AddPost(folder, singlePost.id, singlePost.text != null ? singlePost.text : string.Empty, singlePost.price != null ? singlePost.price.ToString() : "0", singlePost.price != null && singlePost.isOpened ? true : false, singlePost.isArchived, singlePost.postedAt); await dbHelper.AddPost(folder, singlePost.id, singlePost.text != null ? singlePost.text : string.Empty, singlePost.price != null ? singlePost.price.ToString() : "0", singlePost.price != null && singlePost.isOpened ? true : false, singlePost.isArchived, singlePost.postedAt);
singlePostCollection.SinglePostObjects.Add(singlePost); singlePostCollection.SinglePostObjects.Add(singlePost);
if (singlePost.media != null && singlePost.media.Count > 0) if (singlePost.media != null && singlePost.media.Count > 0)
{ {
@ -1146,7 +1146,7 @@ public class APIHelper : IAPIHelper
{ {
if (!singlePostCollection.SinglePosts.ContainsKey(medium.id)) if (!singlePostCollection.SinglePosts.ContainsKey(medium.id))
{ {
await m_DBHelper.AddMedia(folder, medium.id, singlePost.id, medium.files!.full.url, null, null, null, "Posts", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), postPreviewIds.Contains((long)medium.id) ? true : false, false, null); await dbHelper.AddMedia(folder, medium.id, singlePost.id, medium.files!.full.url, null, null, null, "Posts", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), postPreviewIds.Contains((long)medium.id) ? true : false, false, null);
singlePostCollection.SinglePosts.Add(medium.id, medium.files!.full.url); singlePostCollection.SinglePosts.Add(medium.id, medium.files!.full.url);
singlePostCollection.SinglePostMedia.Add(medium); singlePostCollection.SinglePostMedia.Add(medium);
} }
@ -1159,7 +1159,7 @@ public class APIHelper : IAPIHelper
{ {
if (!singlePostCollection.SinglePosts.ContainsKey(medium.id)) if (!singlePostCollection.SinglePosts.ContainsKey(medium.id))
{ {
await m_DBHelper.AddMedia(folder, medium.id, singlePost.id, medium.videoSources._240, null, null, null, "Posts", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), postPreviewIds.Contains((long)medium.id) ? true : false, false, null); await dbHelper.AddMedia(folder, medium.id, singlePost.id, medium.videoSources._240, null, null, null, "Posts", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), postPreviewIds.Contains((long)medium.id) ? true : false, false, null);
singlePostCollection.SinglePosts.Add(medium.id, medium.videoSources._240); singlePostCollection.SinglePosts.Add(medium.id, medium.videoSources._240);
singlePostCollection.SinglePostMedia.Add(medium); singlePostCollection.SinglePostMedia.Add(medium);
} }
@ -1173,7 +1173,7 @@ public class APIHelper : IAPIHelper
{ {
if (!singlePostCollection.SinglePosts.ContainsKey(medium.id)) if (!singlePostCollection.SinglePosts.ContainsKey(medium.id))
{ {
await m_DBHelper.AddMedia(folder, medium.id, singlePost.id, medium.videoSources._720, null, null, null, "Posts", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), postPreviewIds.Contains((long)medium.id) ? true : false, false, null); await dbHelper.AddMedia(folder, medium.id, singlePost.id, medium.videoSources._720, null, null, null, "Posts", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), postPreviewIds.Contains((long)medium.id) ? true : false, false, null);
singlePostCollection.SinglePosts.Add(medium.id, medium.videoSources._720); singlePostCollection.SinglePosts.Add(medium.id, medium.videoSources._720);
singlePostCollection.SinglePostMedia.Add(medium); singlePostCollection.SinglePostMedia.Add(medium);
} }
@ -1189,7 +1189,7 @@ public class APIHelper : IAPIHelper
{ {
if (!singlePostCollection.SinglePosts.ContainsKey(medium.id)) if (!singlePostCollection.SinglePosts.ContainsKey(medium.id))
{ {
await m_DBHelper.AddMedia(folder, medium.id, singlePost.id, medium.files.drm.manifest.dash, null, null, null, "Posts", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), postPreviewIds.Contains((long)medium.id) ? true : false, false, null); await dbHelper.AddMedia(folder, medium.id, singlePost.id, medium.files.drm.manifest.dash, null, null, null, "Posts", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), postPreviewIds.Contains((long)medium.id) ? true : false, false, null);
singlePostCollection.SinglePosts.Add(medium.id, $"{medium.files.drm.manifest.dash},{medium.files.drm.signature.dash.CloudFrontPolicy},{medium.files.drm.signature.dash.CloudFrontSignature},{medium.files.drm.signature.dash.CloudFrontKeyPairId},{medium.id},{singlePost.id}"); singlePostCollection.SinglePosts.Add(medium.id, $"{medium.files.drm.manifest.dash},{medium.files.drm.signature.dash.CloudFrontPolicy},{medium.files.drm.signature.dash.CloudFrontSignature},{medium.files.drm.signature.dash.CloudFrontKeyPairId},{medium.id},{singlePost.id}");
singlePostCollection.SinglePostMedia.Add(medium); singlePostCollection.SinglePostMedia.Add(medium);
} }
@ -1199,7 +1199,7 @@ public class APIHelper : IAPIHelper
{ {
if (!singlePostCollection.SinglePosts.ContainsKey(medium.id)) if (!singlePostCollection.SinglePosts.ContainsKey(medium.id))
{ {
await m_DBHelper.AddMedia(folder, medium.id, singlePost.id, medium.files.preview.url, null, null, null, "Posts", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), postPreviewIds.Contains((long)medium.id) ? true : false, false, null); await dbHelper.AddMedia(folder, medium.id, singlePost.id, medium.files.preview.url, null, null, null, "Posts", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), postPreviewIds.Contains((long)medium.id) ? true : false, false, null);
singlePostCollection.SinglePosts.Add(medium.id, medium.files.preview.url); singlePostCollection.SinglePosts.Add(medium.id, medium.files.preview.url);
singlePostCollection.SinglePostMedia.Add(medium); singlePostCollection.SinglePostMedia.Add(medium);
} }
@ -1304,7 +1304,7 @@ public class APIHelper : IAPIHelper
} }
} }
} }
await m_DBHelper.AddPost(folder, stream.id, stream.text != null ? stream.text : string.Empty, stream.price != null ? stream.price.ToString() : "0", stream.price != null && stream.isOpened ? true : false, stream.isArchived, stream.postedAt); await dbHelper.AddPost(folder, stream.id, stream.text != null ? stream.text : string.Empty, stream.price != null ? stream.price.ToString() : "0", stream.price != null && stream.isOpened ? true : false, stream.isArchived, stream.postedAt);
streamsCollection.StreamObjects.Add(stream); streamsCollection.StreamObjects.Add(stream);
if (stream.media != null && stream.media.Count > 0) if (stream.media != null && stream.media.Count > 0)
{ {
@ -1333,7 +1333,7 @@ public class APIHelper : IAPIHelper
{ {
if (!streamsCollection.Streams.ContainsKey(medium.id)) if (!streamsCollection.Streams.ContainsKey(medium.id))
{ {
await m_DBHelper.AddMedia(folder, medium.id, stream.id, medium.files.full.url, null, null, null, "Posts", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), streamPreviewIds.Contains((long)medium.id) ? true : false, false, null); await dbHelper.AddMedia(folder, medium.id, stream.id, medium.files.full.url, null, null, null, "Posts", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), streamPreviewIds.Contains((long)medium.id) ? true : false, false, null);
streamsCollection.Streams.Add(medium.id, medium.files.full.url); streamsCollection.Streams.Add(medium.id, medium.files.full.url);
streamsCollection.StreamMedia.Add(medium); streamsCollection.StreamMedia.Add(medium);
} }
@ -1346,7 +1346,7 @@ public class APIHelper : IAPIHelper
{ {
if (!streamsCollection.Streams.ContainsKey(medium.id)) if (!streamsCollection.Streams.ContainsKey(medium.id))
{ {
await m_DBHelper.AddMedia(folder, medium.id, stream.id, medium.files.drm.manifest.dash, null, null, null, "Posts", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), streamPreviewIds.Contains((long)medium.id) ? true : false, false, null); await dbHelper.AddMedia(folder, medium.id, stream.id, medium.files.drm.manifest.dash, null, null, null, "Posts", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), streamPreviewIds.Contains((long)medium.id) ? true : false, false, null);
streamsCollection.Streams.Add(medium.id, $"{medium.files.drm.manifest.dash},{medium.files.drm.signature.dash.CloudFrontPolicy},{medium.files.drm.signature.dash.CloudFrontSignature},{medium.files.drm.signature.dash.CloudFrontKeyPairId},{medium.id},{stream.id}"); streamsCollection.Streams.Add(medium.id, $"{medium.files.drm.manifest.dash},{medium.files.drm.signature.dash.CloudFrontPolicy},{medium.files.drm.signature.dash.CloudFrontSignature},{medium.files.drm.signature.dash.CloudFrontKeyPairId},{medium.id},{stream.id}");
streamsCollection.StreamMedia.Add(medium); streamsCollection.StreamMedia.Add(medium);
} }
@ -1452,7 +1452,7 @@ public class APIHelper : IAPIHelper
} }
} }
} }
await m_DBHelper.AddPost(folder, archive.id, archive.text != null ? archive.text : string.Empty, archive.price != null ? archive.price.ToString() : "0", archive.price != null && archive.isOpened ? true : false, archive.isArchived, archive.postedAt); await dbHelper.AddPost(folder, archive.id, archive.text != null ? archive.text : string.Empty, archive.price != null ? archive.price.ToString() : "0", archive.price != null && archive.isOpened ? true : false, archive.isArchived, archive.postedAt);
archivedCollection.ArchivedPostObjects.Add(archive); archivedCollection.ArchivedPostObjects.Add(archive);
if (archive.media != null && archive.media.Count > 0) if (archive.media != null && archive.media.Count > 0)
{ {
@ -1478,7 +1478,7 @@ public class APIHelper : IAPIHelper
{ {
if (!archivedCollection.ArchivedPosts.ContainsKey(medium.id)) if (!archivedCollection.ArchivedPosts.ContainsKey(medium.id))
{ {
await m_DBHelper.AddMedia(folder, medium.id, archive.id, medium.files.full.url, null, null, null, "Posts", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), previewids.Contains(medium.id) ? true : false, false, null); await dbHelper.AddMedia(folder, medium.id, archive.id, medium.files.full.url, null, null, null, "Posts", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), previewids.Contains(medium.id) ? true : false, false, null);
archivedCollection.ArchivedPosts.Add(medium.id, medium.files.full.url); archivedCollection.ArchivedPosts.Add(medium.id, medium.files.full.url);
archivedCollection.ArchivedPostMedia.Add(medium); archivedCollection.ArchivedPostMedia.Add(medium);
} }
@ -1487,7 +1487,7 @@ public class APIHelper : IAPIHelper
{ {
if (!archivedCollection.ArchivedPosts.ContainsKey(medium.id)) if (!archivedCollection.ArchivedPosts.ContainsKey(medium.id))
{ {
await m_DBHelper.AddMedia(folder, medium.id, archive.id, medium.files.drm.manifest.dash, null, null, null, "Posts", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), previewids.Contains(medium.id) ? true : false, false, null); await dbHelper.AddMedia(folder, medium.id, archive.id, medium.files.drm.manifest.dash, null, null, null, "Posts", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), previewids.Contains(medium.id) ? true : false, false, null);
archivedCollection.ArchivedPosts.Add(medium.id, $"{medium.files.drm.manifest.dash},{medium.files.drm.signature.dash.CloudFrontPolicy},{medium.files.drm.signature.dash.CloudFrontSignature},{medium.files.drm.signature.dash.CloudFrontKeyPairId},{medium.id},{archive.id}"); archivedCollection.ArchivedPosts.Add(medium.id, $"{medium.files.drm.manifest.dash},{medium.files.drm.signature.dash.CloudFrontPolicy},{medium.files.drm.signature.dash.CloudFrontSignature},{medium.files.drm.signature.dash.CloudFrontKeyPairId},{medium.id},{archive.id}");
archivedCollection.ArchivedPostMedia.Add(medium); archivedCollection.ArchivedPostMedia.Add(medium);
} }
@ -1581,7 +1581,7 @@ public class APIHelper : IAPIHelper
} }
if (!config.IgnoreOwnMessages || list.fromUser.id != Convert.ToInt32(auth.USER_ID)) if (!config.IgnoreOwnMessages || list.fromUser.id != Convert.ToInt32(auth.USER_ID))
{ {
await m_DBHelper.AddMessage(folder, list.id, list.text != null ? list.text : string.Empty, list.price != null ? list.price.ToString() : "0", list.canPurchaseReason == "opened" ? true : list.canPurchaseReason != "opened" ? false : (bool?)null ?? false, false, list.createdAt.HasValue ? list.createdAt.Value : DateTime.Now, list.fromUser != null && list.fromUser.id != null ? list.fromUser.id.Value : int.MinValue); await dbHelper.AddMessage(folder, list.id, list.text != null ? list.text : string.Empty, list.price != null ? list.price.ToString() : "0", list.canPurchaseReason == "opened" ? true : list.canPurchaseReason != "opened" ? false : (bool?)null ?? false, false, list.createdAt.HasValue ? list.createdAt.Value : DateTime.Now, list.fromUser != null && list.fromUser.id != null ? list.fromUser.id.Value : int.MinValue);
messageCollection.MessageObjects.Add(list); messageCollection.MessageObjects.Add(list);
if (list.canPurchaseReason != "opened" && list.media != null && list.media.Count > 0) if (list.canPurchaseReason != "opened" && list.media != null && list.media.Count > 0)
{ {
@ -1607,7 +1607,7 @@ public class APIHelper : IAPIHelper
} }
if (!messageCollection.Messages.ContainsKey(medium.id)) if (!messageCollection.Messages.ContainsKey(medium.id))
{ {
await m_DBHelper.AddMedia(folder, medium.id, list.id, medium.files.full.url, null, null, null, "Messages", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), messagePreviewIds.Contains(medium.id) ? true : false, false, null); await dbHelper.AddMedia(folder, medium.id, list.id, medium.files.full.url, null, null, null, "Messages", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), messagePreviewIds.Contains(medium.id) ? true : false, false, null);
messageCollection.Messages.Add(medium.id, medium.files.full.url); messageCollection.Messages.Add(medium.id, medium.files.full.url);
messageCollection.MessageMedia.Add(medium); messageCollection.MessageMedia.Add(medium);
} }
@ -1632,7 +1632,7 @@ public class APIHelper : IAPIHelper
} }
if (!messageCollection.Messages.ContainsKey(medium.id)) if (!messageCollection.Messages.ContainsKey(medium.id))
{ {
await m_DBHelper.AddMedia(folder, medium.id, list.id, medium.files.drm.manifest.dash, null, null, null, "Messages", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), messagePreviewIds.Contains(medium.id) ? true : false, false, null); await dbHelper.AddMedia(folder, medium.id, list.id, medium.files.drm.manifest.dash, null, null, null, "Messages", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), messagePreviewIds.Contains(medium.id) ? true : false, false, null);
messageCollection.Messages.Add(medium.id, $"{medium.files.drm.manifest.dash},{medium.files.drm.signature.dash.CloudFrontPolicy},{medium.files.drm.signature.dash.CloudFrontSignature},{medium.files.drm.signature.dash.CloudFrontKeyPairId},{medium.id},{list.id}"); messageCollection.Messages.Add(medium.id, $"{medium.files.drm.manifest.dash},{medium.files.drm.signature.dash.CloudFrontPolicy},{medium.files.drm.signature.dash.CloudFrontSignature},{medium.files.drm.signature.dash.CloudFrontKeyPairId},{medium.id},{list.id}");
messageCollection.MessageMedia.Add(medium); messageCollection.MessageMedia.Add(medium);
} }
@ -1663,7 +1663,7 @@ public class APIHelper : IAPIHelper
} }
if (!messageCollection.Messages.ContainsKey(medium.id)) if (!messageCollection.Messages.ContainsKey(medium.id))
{ {
await m_DBHelper.AddMedia(folder, medium.id, list.id, medium.files.full.url, null, null, null, "Messages", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), messagePreviewIds.Contains(medium.id) ? true : false, false, null); await dbHelper.AddMedia(folder, medium.id, list.id, medium.files.full.url, null, null, null, "Messages", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), messagePreviewIds.Contains(medium.id) ? true : false, false, null);
messageCollection.Messages.Add(medium.id, medium.files.full.url); messageCollection.Messages.Add(medium.id, medium.files.full.url);
messageCollection.MessageMedia.Add(medium); messageCollection.MessageMedia.Add(medium);
} }
@ -1688,7 +1688,7 @@ public class APIHelper : IAPIHelper
} }
if (!messageCollection.Messages.ContainsKey(medium.id)) if (!messageCollection.Messages.ContainsKey(medium.id))
{ {
await m_DBHelper.AddMedia(folder, medium.id, list.id, medium.files.drm.manifest.dash, null, null, null, "Messages", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), messagePreviewIds.Contains(medium.id) ? true : false, false, null); await dbHelper.AddMedia(folder, medium.id, list.id, medium.files.drm.manifest.dash, null, null, null, "Messages", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), messagePreviewIds.Contains(medium.id) ? true : false, false, null);
messageCollection.Messages.Add(medium.id, $"{medium.files.drm.manifest.dash},{medium.files.drm.signature.dash.CloudFrontPolicy},{medium.files.drm.signature.dash.CloudFrontSignature},{medium.files.drm.signature.dash.CloudFrontKeyPairId},{medium.id},{list.id}"); messageCollection.Messages.Add(medium.id, $"{medium.files.drm.manifest.dash},{medium.files.drm.signature.dash.CloudFrontPolicy},{medium.files.drm.signature.dash.CloudFrontSignature},{medium.files.drm.signature.dash.CloudFrontKeyPairId},{medium.id},{list.id}");
messageCollection.MessageMedia.Add(medium); messageCollection.MessageMedia.Add(medium);
} }
@ -1734,7 +1734,7 @@ public class APIHelper : IAPIHelper
if (!config.IgnoreOwnMessages || message.fromUser.id != Convert.ToInt32(auth.USER_ID)) if (!config.IgnoreOwnMessages || message.fromUser.id != Convert.ToInt32(auth.USER_ID))
{ {
await m_DBHelper.AddMessage(folder, message.id, message.text != null ? message.text : string.Empty, message.price != null ? message.price.ToString() : "0", true, false, message.createdAt.HasValue ? message.createdAt.Value : DateTime.Now, message.fromUser != null && message.fromUser.id != null ? message.fromUser.id.Value : int.MinValue); await dbHelper.AddMessage(folder, message.id, message.text != null ? message.text : string.Empty, message.price != null ? message.price.ToString() : "0", true, false, message.createdAt.HasValue ? message.createdAt.Value : DateTime.Now, message.fromUser != null && message.fromUser.id != null ? message.fromUser.id.Value : int.MinValue);
singlePaidMessageCollection.SingleMessageObjects.Add(message); singlePaidMessageCollection.SingleMessageObjects.Add(message);
List<long> messagePreviewIds = new(); List<long> messagePreviewIds = new();
if (message.previews != null && message.previews.Count > 0) if (message.previews != null && message.previews.Count > 0)
@ -1776,7 +1776,7 @@ public class APIHelper : IAPIHelper
if (!singlePaidMessageCollection.SingleMessages.ContainsKey(medium.id)) if (!singlePaidMessageCollection.SingleMessages.ContainsKey(medium.id))
{ {
await m_DBHelper.AddMedia(folder, medium.id, message.id, medium.files.full.url, null, null, null, "Messages", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), messagePreviewIds.Contains(medium.id) ? true : false, false, null); await dbHelper.AddMedia(folder, medium.id, message.id, medium.files.full.url, null, null, null, "Messages", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), messagePreviewIds.Contains(medium.id) ? true : false, false, null);
singlePaidMessageCollection.SingleMessages.Add(medium.id, medium.files.full.url.ToString()); singlePaidMessageCollection.SingleMessages.Add(medium.id, medium.files.full.url.ToString());
singlePaidMessageCollection.SingleMessageMedia.Add(medium); singlePaidMessageCollection.SingleMessageMedia.Add(medium);
} }
@ -1802,7 +1802,7 @@ public class APIHelper : IAPIHelper
if (!singlePaidMessageCollection.PreviewSingleMessages.ContainsKey(medium.id)) if (!singlePaidMessageCollection.PreviewSingleMessages.ContainsKey(medium.id))
{ {
await m_DBHelper.AddMedia(folder, medium.id, message.id, medium.files.full.url, null, null, null, "Messages", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), messagePreviewIds.Contains(medium.id) ? true : false, false, null); await dbHelper.AddMedia(folder, medium.id, message.id, medium.files.full.url, null, null, null, "Messages", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), messagePreviewIds.Contains(medium.id) ? true : false, false, null);
singlePaidMessageCollection.PreviewSingleMessages.Add(medium.id, medium.files.full.url.ToString()); singlePaidMessageCollection.PreviewSingleMessages.Add(medium.id, medium.files.full.url.ToString());
singlePaidMessageCollection.PreviewSingleMessageMedia.Add(medium); singlePaidMessageCollection.PreviewSingleMessageMedia.Add(medium);
} }
@ -1828,7 +1828,7 @@ public class APIHelper : IAPIHelper
if (!singlePaidMessageCollection.SingleMessages.ContainsKey(medium.id)) if (!singlePaidMessageCollection.SingleMessages.ContainsKey(medium.id))
{ {
await m_DBHelper.AddMedia(folder, medium.id, message.id, medium.files.drm.manifest.dash, null, null, null, "Messages", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), messagePreviewIds.Contains(medium.id) ? true : false, false, null); await dbHelper.AddMedia(folder, medium.id, message.id, medium.files.drm.manifest.dash, null, null, null, "Messages", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), messagePreviewIds.Contains(medium.id) ? true : false, false, null);
singlePaidMessageCollection.SingleMessages.Add(medium.id, $"{medium.files.drm.manifest.dash},{medium.files.drm.signature.dash.CloudFrontPolicy},{medium.files.drm.signature.dash.CloudFrontSignature},{medium.files.drm.signature.dash.CloudFrontKeyPairId},{medium.id},{message.id}"); singlePaidMessageCollection.SingleMessages.Add(medium.id, $"{medium.files.drm.manifest.dash},{medium.files.drm.signature.dash.CloudFrontPolicy},{medium.files.drm.signature.dash.CloudFrontSignature},{medium.files.drm.signature.dash.CloudFrontKeyPairId},{medium.id},{message.id}");
singlePaidMessageCollection.SingleMessageMedia.Add(medium); singlePaidMessageCollection.SingleMessageMedia.Add(medium);
} }
@ -1854,7 +1854,7 @@ public class APIHelper : IAPIHelper
if (!singlePaidMessageCollection.PreviewSingleMessages.ContainsKey(medium.id)) if (!singlePaidMessageCollection.PreviewSingleMessages.ContainsKey(medium.id))
{ {
await m_DBHelper.AddMedia(folder, medium.id, message.id, medium.files.drm.manifest.dash, null, null, null, "Messages", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), messagePreviewIds.Contains(medium.id) ? true : false, false, null); await dbHelper.AddMedia(folder, medium.id, message.id, medium.files.drm.manifest.dash, null, null, null, "Messages", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), messagePreviewIds.Contains(medium.id) ? true : false, false, null);
singlePaidMessageCollection.PreviewSingleMessages.Add(medium.id, $"{medium.files.drm.manifest.dash},{medium.files.drm.signature.dash.CloudFrontPolicy},{medium.files.drm.signature.dash.CloudFrontSignature},{medium.files.drm.signature.dash.CloudFrontKeyPairId},{medium.id},{message.id}"); singlePaidMessageCollection.PreviewSingleMessages.Add(medium.id, $"{medium.files.drm.manifest.dash},{medium.files.drm.signature.dash.CloudFrontPolicy},{medium.files.drm.signature.dash.CloudFrontSignature},{medium.files.drm.signature.dash.CloudFrontKeyPairId},{medium.id},{message.id}");
singlePaidMessageCollection.PreviewSingleMessageMedia.Add(medium); singlePaidMessageCollection.PreviewSingleMessageMedia.Add(medium);
} }
@ -1945,11 +1945,11 @@ public class APIHelper : IAPIHelper
{ {
if (purchase.postedAt != null) if (purchase.postedAt != null)
{ {
await m_DBHelper.AddMessage(folder, purchase.id, purchase.text != null ? purchase.text : string.Empty, purchase.price != null ? purchase.price : "0", true, false, purchase.postedAt.Value, purchase.fromUser.id); await dbHelper.AddMessage(folder, purchase.id, purchase.text != null ? purchase.text : string.Empty, purchase.price != null ? purchase.price : "0", true, false, purchase.postedAt.Value, purchase.fromUser.id);
} }
else else
{ {
await m_DBHelper.AddMessage(folder, purchase.id, purchase.text != null ? purchase.text : string.Empty, purchase.price != null ? purchase.price : "0", true, false, purchase.createdAt.Value, purchase.fromUser.id); await dbHelper.AddMessage(folder, purchase.id, purchase.text != null ? purchase.text : string.Empty, purchase.price != null ? purchase.price : "0", true, false, purchase.createdAt.Value, purchase.fromUser.id);
} }
paidMessageCollection.PaidMessageObjects.Add(purchase); paidMessageCollection.PaidMessageObjects.Add(purchase);
if (purchase.media != null && purchase.media.Count > 0) if (purchase.media != null && purchase.media.Count > 0)
@ -2007,7 +2007,7 @@ public class APIHelper : IAPIHelper
} }
if (!paidMessageCollection.PaidMessages.ContainsKey(medium.id)) if (!paidMessageCollection.PaidMessages.ContainsKey(medium.id))
{ {
await m_DBHelper.AddMedia(folder, medium.id, purchase.id, medium.files.full.url, null, null, null, "Messages", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), previewids.Contains(medium.id) ? true : false, false, null); await dbHelper.AddMedia(folder, medium.id, purchase.id, medium.files.full.url, null, null, null, "Messages", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), previewids.Contains(medium.id) ? true : false, false, null);
paidMessageCollection.PaidMessages.Add(medium.id, medium.files.full.url); paidMessageCollection.PaidMessages.Add(medium.id, medium.files.full.url);
paidMessageCollection.PaidMessageMedia.Add(medium); paidMessageCollection.PaidMessageMedia.Add(medium);
} }
@ -2032,7 +2032,7 @@ public class APIHelper : IAPIHelper
} }
if (!paidMessageCollection.PaidMessages.ContainsKey(medium.id)) if (!paidMessageCollection.PaidMessages.ContainsKey(medium.id))
{ {
await m_DBHelper.AddMedia(folder, medium.id, purchase.id, medium.files.drm.manifest.dash, null, null, null, "Messages", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), previewids.Contains(medium.id) ? true : false, false, null); await dbHelper.AddMedia(folder, medium.id, purchase.id, medium.files.drm.manifest.dash, null, null, null, "Messages", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), previewids.Contains(medium.id) ? true : false, false, null);
paidMessageCollection.PaidMessages.Add(medium.id, $"{medium.files.drm.manifest.dash},{medium.files.drm.signature.dash.CloudFrontPolicy},{medium.files.drm.signature.dash.CloudFrontSignature},{medium.files.drm.signature.dash.CloudFrontKeyPairId},{medium.id},{purchase.id}"); paidMessageCollection.PaidMessages.Add(medium.id, $"{medium.files.drm.manifest.dash},{medium.files.drm.signature.dash.CloudFrontPolicy},{medium.files.drm.signature.dash.CloudFrontSignature},{medium.files.drm.signature.dash.CloudFrontKeyPairId},{medium.id},{purchase.id}");
paidMessageCollection.PaidMessageMedia.Add(medium); paidMessageCollection.PaidMessageMedia.Add(medium);
} }
@ -2060,7 +2060,7 @@ public class APIHelper : IAPIHelper
} }
if (!paidMessageCollection.PaidMessages.ContainsKey(medium.id)) if (!paidMessageCollection.PaidMessages.ContainsKey(medium.id))
{ {
await m_DBHelper.AddMedia(folder, medium.id, purchase.id, medium.files.full.url, null, null, null, "Messages", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), previewids.Contains(medium.id) ? true : false, false, null); await dbHelper.AddMedia(folder, medium.id, purchase.id, medium.files.full.url, null, null, null, "Messages", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), previewids.Contains(medium.id) ? true : false, false, null);
paidMessageCollection.PaidMessages.Add(medium.id, medium.files.full.url); paidMessageCollection.PaidMessages.Add(medium.id, medium.files.full.url);
paidMessageCollection.PaidMessageMedia.Add(medium); paidMessageCollection.PaidMessageMedia.Add(medium);
} }
@ -2085,7 +2085,7 @@ public class APIHelper : IAPIHelper
} }
if (!paidMessageCollection.PaidMessages.ContainsKey(medium.id)) if (!paidMessageCollection.PaidMessages.ContainsKey(medium.id))
{ {
await m_DBHelper.AddMedia(folder, medium.id, purchase.id, medium.files.drm.manifest.dash, null, null, null, "Messages", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), previewids.Contains(medium.id) ? true : false, false, null); await dbHelper.AddMedia(folder, medium.id, purchase.id, medium.files.drm.manifest.dash, null, null, null, "Messages", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), previewids.Contains(medium.id) ? true : false, false, null);
paidMessageCollection.PaidMessages.Add(medium.id, $"{medium.files.drm.manifest.dash},{medium.files.drm.signature.dash.CloudFrontPolicy},{medium.files.drm.signature.dash.CloudFrontSignature},{medium.files.drm.signature.dash.CloudFrontKeyPairId},{medium.id},{purchase.id}"); paidMessageCollection.PaidMessages.Add(medium.id, $"{medium.files.drm.manifest.dash},{medium.files.drm.signature.dash.CloudFrontPolicy},{medium.files.drm.signature.dash.CloudFrontSignature},{medium.files.drm.signature.dash.CloudFrontKeyPairId},{medium.id},{purchase.id}");
paidMessageCollection.PaidMessageMedia.Add(medium); paidMessageCollection.PaidMessageMedia.Add(medium);
} }
@ -2406,7 +2406,7 @@ public class APIHelper : IAPIHelper
} }
} }
} }
await m_DBHelper.AddPost(path, purchase.id, purchase.text != null ? purchase.text : string.Empty, purchase.price != null ? purchase.price.ToString() : "0", purchase.price != null && purchase.isOpened ? true : false, purchase.isArchived.HasValue ? purchase.isArchived.Value : false, purchase.createdAt != null ? purchase.createdAt.Value : purchase.postedAt.Value); await dbHelper.AddPost(path, purchase.id, purchase.text != null ? purchase.text : string.Empty, purchase.price != null ? purchase.price.ToString() : "0", purchase.price != null && purchase.isOpened ? true : false, purchase.isArchived.HasValue ? purchase.isArchived.Value : false, purchase.createdAt != null ? purchase.createdAt.Value : purchase.postedAt.Value);
purchasedTabCollection.PaidPosts.PaidPostObjects.Add(purchase); purchasedTabCollection.PaidPosts.PaidPostObjects.Add(purchase);
foreach (Messages.Medium medium in purchase.media) foreach (Messages.Medium medium in purchase.media)
{ {
@ -2434,7 +2434,7 @@ public class APIHelper : IAPIHelper
if (!purchasedTabCollection.PaidPosts.PaidPosts.ContainsKey(medium.id)) if (!purchasedTabCollection.PaidPosts.PaidPosts.ContainsKey(medium.id))
{ {
await m_DBHelper.AddMedia(path, medium.id, purchase.id, medium.files.full.url, null, null, null, "Posts", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), previewids.Contains(medium.id) ? true : false, false, null); await dbHelper.AddMedia(path, medium.id, purchase.id, medium.files.full.url, null, null, null, "Posts", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), previewids.Contains(medium.id) ? true : false, false, null);
purchasedTabCollection.PaidPosts.PaidPosts.Add(medium.id, medium.files.full.url); purchasedTabCollection.PaidPosts.PaidPosts.Add(medium.id, medium.files.full.url);
purchasedTabCollection.PaidPosts.PaidPostMedia.Add(medium); purchasedTabCollection.PaidPosts.PaidPostMedia.Add(medium);
} }
@ -2444,7 +2444,7 @@ public class APIHelper : IAPIHelper
if (!purchasedTabCollection.PaidPosts.PaidPosts.ContainsKey(medium.id)) if (!purchasedTabCollection.PaidPosts.PaidPosts.ContainsKey(medium.id))
{ {
await m_DBHelper.AddMedia(path, medium.id, purchase.id, medium.files.drm.manifest.dash, null, null, null, "Posts", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), previewids.Contains(medium.id) ? true : false, false, null); await dbHelper.AddMedia(path, medium.id, purchase.id, medium.files.drm.manifest.dash, null, null, null, "Posts", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), previewids.Contains(medium.id) ? true : false, false, null);
purchasedTabCollection.PaidPosts.PaidPosts.Add(medium.id, $"{medium.files.drm.manifest.dash},{medium.files.drm.signature.dash.CloudFrontPolicy},{medium.files.drm.signature.dash.CloudFrontSignature},{medium.files.drm.signature.dash.CloudFrontKeyPairId},{medium.id},{purchase.id}"); purchasedTabCollection.PaidPosts.PaidPosts.Add(medium.id, $"{medium.files.drm.manifest.dash},{medium.files.drm.signature.dash.CloudFrontPolicy},{medium.files.drm.signature.dash.CloudFrontSignature},{medium.files.drm.signature.dash.CloudFrontKeyPairId},{medium.id},{purchase.id}");
purchasedTabCollection.PaidPosts.PaidPostMedia.Add(medium); purchasedTabCollection.PaidPosts.PaidPostMedia.Add(medium);
} }
@ -2457,7 +2457,7 @@ public class APIHelper : IAPIHelper
{ {
if (!purchasedTabCollection.PaidPosts.PaidPosts.ContainsKey(medium.id)) if (!purchasedTabCollection.PaidPosts.PaidPosts.ContainsKey(medium.id))
{ {
await m_DBHelper.AddMedia(path, medium.id, purchase.id, medium.files.full.url, null, null, null, "Posts", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), previewids.Contains(medium.id) ? true : false, false, null); await dbHelper.AddMedia(path, medium.id, purchase.id, medium.files.full.url, null, null, null, "Posts", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), previewids.Contains(medium.id) ? true : false, false, null);
purchasedTabCollection.PaidPosts.PaidPosts.Add(medium.id, medium.files.full.url); purchasedTabCollection.PaidPosts.PaidPosts.Add(medium.id, medium.files.full.url);
purchasedTabCollection.PaidPosts.PaidPostMedia.Add(medium); purchasedTabCollection.PaidPosts.PaidPostMedia.Add(medium);
} }
@ -2466,7 +2466,7 @@ public class APIHelper : IAPIHelper
{ {
if (!purchasedTabCollection.PaidPosts.PaidPosts.ContainsKey(medium.id)) if (!purchasedTabCollection.PaidPosts.PaidPosts.ContainsKey(medium.id))
{ {
await m_DBHelper.AddMedia(path, medium.id, purchase.id, medium.files.drm.manifest.dash, null, null, null, "Posts", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), previewids.Contains(medium.id) ? true : false, false, null); await dbHelper.AddMedia(path, medium.id, purchase.id, medium.files.drm.manifest.dash, null, null, null, "Posts", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), previewids.Contains(medium.id) ? true : false, false, null);
purchasedTabCollection.PaidPosts.PaidPosts.Add(medium.id, $"{medium.files.drm.manifest.dash},{medium.files.drm.signature.dash.CloudFrontPolicy},{medium.files.drm.signature.dash.CloudFrontSignature},{medium.files.drm.signature.dash.CloudFrontKeyPairId},{medium.id},{purchase.id}"); purchasedTabCollection.PaidPosts.PaidPosts.Add(medium.id, $"{medium.files.drm.manifest.dash},{medium.files.drm.signature.dash.CloudFrontPolicy},{medium.files.drm.signature.dash.CloudFrontSignature},{medium.files.drm.signature.dash.CloudFrontKeyPairId},{medium.id},{purchase.id}");
purchasedTabCollection.PaidPosts.PaidPostMedia.Add(medium); purchasedTabCollection.PaidPosts.PaidPostMedia.Add(medium);
} }
@ -2477,11 +2477,11 @@ public class APIHelper : IAPIHelper
case "message": case "message":
if (purchase.postedAt != null) if (purchase.postedAt != null)
{ {
await m_DBHelper.AddMessage(path, purchase.id, purchase.text != null ? purchase.text : string.Empty, purchase.price != null ? purchase.price : "0", true, false, purchase.postedAt.Value, purchase.fromUser.id); await dbHelper.AddMessage(path, purchase.id, purchase.text != null ? purchase.text : string.Empty, purchase.price != null ? purchase.price : "0", true, false, purchase.postedAt.Value, purchase.fromUser.id);
} }
else else
{ {
await m_DBHelper.AddMessage(path, purchase.id, purchase.text != null ? purchase.text : string.Empty, purchase.price != null ? purchase.price : "0", true, false, purchase.createdAt.Value, purchase.fromUser.id); await dbHelper.AddMessage(path, purchase.id, purchase.text != null ? purchase.text : string.Empty, purchase.price != null ? purchase.price : "0", true, false, purchase.createdAt.Value, purchase.fromUser.id);
} }
purchasedTabCollection.PaidMessages.PaidMessageObjects.Add(purchase); purchasedTabCollection.PaidMessages.PaidMessageObjects.Add(purchase);
if (purchase.media != null && purchase.media.Count > 0) if (purchase.media != null && purchase.media.Count > 0)
@ -2539,7 +2539,7 @@ public class APIHelper : IAPIHelper
} }
if (!purchasedTabCollection.PaidMessages.PaidMessages.ContainsKey(medium.id)) if (!purchasedTabCollection.PaidMessages.PaidMessages.ContainsKey(medium.id))
{ {
await m_DBHelper.AddMedia(path, medium.id, purchase.id, medium.files.full.url, null, null, null, "Messages", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), paidMessagePreviewids.Contains(medium.id) ? true : false, false, null); await dbHelper.AddMedia(path, medium.id, purchase.id, medium.files.full.url, null, null, null, "Messages", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), paidMessagePreviewids.Contains(medium.id) ? true : false, false, null);
purchasedTabCollection.PaidMessages.PaidMessages.Add(medium.id, medium.files.full.url); purchasedTabCollection.PaidMessages.PaidMessages.Add(medium.id, medium.files.full.url);
purchasedTabCollection.PaidMessages.PaidMessageMedia.Add(medium); purchasedTabCollection.PaidMessages.PaidMessageMedia.Add(medium);
} }
@ -2564,7 +2564,7 @@ public class APIHelper : IAPIHelper
} }
if (!purchasedTabCollection.PaidMessages.PaidMessages.ContainsKey(medium.id)) if (!purchasedTabCollection.PaidMessages.PaidMessages.ContainsKey(medium.id))
{ {
await m_DBHelper.AddMedia(path, medium.id, purchase.id, medium.files.drm.manifest.dash, null, null, null, "Messages", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), paidMessagePreviewids.Contains(medium.id) ? true : false, false, null); await dbHelper.AddMedia(path, medium.id, purchase.id, medium.files.drm.manifest.dash, null, null, null, "Messages", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), paidMessagePreviewids.Contains(medium.id) ? true : false, false, null);
purchasedTabCollection.PaidMessages.PaidMessages.Add(medium.id, $"{medium.files.drm.manifest.dash},{medium.files.drm.signature.dash.CloudFrontPolicy},{medium.files.drm.signature.dash.CloudFrontSignature},{medium.files.drm.signature.dash.CloudFrontKeyPairId},{medium.id},{purchase.id}"); purchasedTabCollection.PaidMessages.PaidMessages.Add(medium.id, $"{medium.files.drm.manifest.dash},{medium.files.drm.signature.dash.CloudFrontPolicy},{medium.files.drm.signature.dash.CloudFrontSignature},{medium.files.drm.signature.dash.CloudFrontKeyPairId},{medium.id},{purchase.id}");
purchasedTabCollection.PaidMessages.PaidMessageMedia.Add(medium); purchasedTabCollection.PaidMessages.PaidMessageMedia.Add(medium);
} }
@ -2592,7 +2592,7 @@ public class APIHelper : IAPIHelper
} }
if (!purchasedTabCollection.PaidMessages.PaidMessages.ContainsKey(medium.id)) if (!purchasedTabCollection.PaidMessages.PaidMessages.ContainsKey(medium.id))
{ {
await m_DBHelper.AddMedia(path, medium.id, purchase.id, medium.files.full.url, null, null, null, "Messages", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), paidMessagePreviewids.Contains(medium.id) ? true : false, false, null); await dbHelper.AddMedia(path, medium.id, purchase.id, medium.files.full.url, null, null, null, "Messages", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), paidMessagePreviewids.Contains(medium.id) ? true : false, false, null);
purchasedTabCollection.PaidMessages.PaidMessages.Add(medium.id, medium.files.full.url); purchasedTabCollection.PaidMessages.PaidMessages.Add(medium.id, medium.files.full.url);
purchasedTabCollection.PaidMessages.PaidMessageMedia.Add(medium); purchasedTabCollection.PaidMessages.PaidMessageMedia.Add(medium);
} }
@ -2617,7 +2617,7 @@ public class APIHelper : IAPIHelper
} }
if (!purchasedTabCollection.PaidMessages.PaidMessages.ContainsKey(medium.id)) if (!purchasedTabCollection.PaidMessages.PaidMessages.ContainsKey(medium.id))
{ {
await m_DBHelper.AddMedia(path, medium.id, purchase.id, medium.files.drm.manifest.dash, null, null, null, "Messages", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), paidMessagePreviewids.Contains(medium.id) ? true : false, false, null); await dbHelper.AddMedia(path, medium.id, purchase.id, medium.files.drm.manifest.dash, null, null, null, "Messages", medium.type == "photo" ? "Images" : (medium.type == "video" || medium.type == "gif" ? "Videos" : (medium.type == "audio" ? "Audios" : null)), paidMessagePreviewids.Contains(medium.id) ? true : false, false, null);
purchasedTabCollection.PaidMessages.PaidMessages.Add(medium.id, $"{medium.files.drm.manifest.dash},{medium.files.drm.signature.dash.CloudFrontPolicy},{medium.files.drm.signature.dash.CloudFrontSignature},{medium.files.drm.signature.dash.CloudFrontKeyPairId},{medium.id},{purchase.id}"); purchasedTabCollection.PaidMessages.PaidMessages.Add(medium.id, $"{medium.files.drm.manifest.dash},{medium.files.drm.signature.dash.CloudFrontPolicy},{medium.files.drm.signature.dash.CloudFrontSignature},{medium.files.drm.signature.dash.CloudFrontKeyPairId},{medium.id},{purchase.id}");
purchasedTabCollection.PaidMessages.PaidMessageMedia.Add(medium); purchasedTabCollection.PaidMessages.PaidMessageMedia.Add(medium);
} }

View File

@ -1,11 +1,12 @@
using OF_DL.Entities; using OF_DL.Entities;
using OF_DL.Helpers.Interfaces;
using PuppeteerSharp; using PuppeteerSharp;
using PuppeteerSharp.BrowserData; using PuppeteerSharp.BrowserData;
using Serilog; using Serilog;
namespace OF_DL.Helpers; namespace OF_DL.Helpers;
public class AuthHelper public class AuthHelper : IAuthHelper
{ {
private readonly LaunchOptions _options = new() private readonly LaunchOptions _options = new()
{ {

View File

@ -1,9 +1,4 @@
using OF_DL.Entities; using OF_DL.Entities;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OF_DL.Helpers namespace OF_DL.Helpers
{ {
@ -11,26 +6,23 @@ namespace OF_DL.Helpers
{ {
public IDownloadConfig DownloadConfig { get; } public IDownloadConfig DownloadConfig { get; }
public IFileNameFormatConfig FileNameFormatConfig { get; } public IFileNameFormatConfig FileNameFormatConfig { get; }
public APIHelper ApiHelper { get; } public IAPIHelper ApiHelper { get; }
public DBHelper DBHelper { get; } public IDBHelper DBHelper { get; }
public DownloadHelper DownloadHelper { get; } public IDownloadHelper DownloadHelper { get; }
} }
internal class DownloadContext : IDownloadContext internal class DownloadContext(
IDownloadConfig downloadConfig,
IFileNameFormatConfig fileNameFormatConfig,
IAPIHelper apiHelper,
IDBHelper dBHelper,
IDownloadHelper downloadHelper)
: IDownloadContext
{ {
public APIHelper ApiHelper { get; } public IAPIHelper ApiHelper { get; } = apiHelper;
public DBHelper DBHelper { get; } public IDBHelper DBHelper { get; } = dBHelper;
public DownloadHelper DownloadHelper { get; } public IDownloadHelper DownloadHelper { get; } = downloadHelper;
public IDownloadConfig DownloadConfig { get; } public IDownloadConfig DownloadConfig { get; } = downloadConfig;
public IFileNameFormatConfig FileNameFormatConfig { get; } public IFileNameFormatConfig FileNameFormatConfig { get; } = fileNameFormatConfig;
public DownloadContext(Auth auth, IDownloadConfig downloadConfig, IFileNameFormatConfig fileNameFormatConfig, APIHelper apiHelper, DBHelper dBHelper)
{
ApiHelper = apiHelper;
DBHelper = dBHelper;
DownloadConfig = downloadConfig;
FileNameFormatConfig = fileNameFormatConfig;
DownloadHelper = new DownloadHelper(auth, downloadConfig, fileNameFormatConfig);
}
} }
} }

View File

@ -36,17 +36,17 @@ namespace OF_DL.Helpers;
public class DownloadHelper : IDownloadHelper public class DownloadHelper : IDownloadHelper
{ {
private readonly Auth auth; private readonly Auth auth;
private readonly IDBHelper m_DBHelper; private readonly IDBHelper dbHelper;
private readonly IFileNameHelper _FileNameHelper; private readonly IFileNameHelper fileNameHelper;
private readonly IDownloadConfig downloadConfig; private readonly IDownloadConfig downloadConfig;
private readonly IFileNameFormatConfig fileNameFormatConfig; private readonly IFileNameFormatConfig fileNameFormatConfig;
private TaskCompletionSource<bool> _completionSource; private TaskCompletionSource<bool> _completionSource;
public DownloadHelper(Auth auth, IDownloadConfig downloadConfig, IFileNameFormatConfig fileNameFormatConfig) public DownloadHelper(Auth auth, IDownloadConfig downloadConfig, IFileNameFormatConfig fileNameFormatConfig, IDBHelper dbHelper, IFileNameHelper fileNameHelper)
{ {
this.auth = auth; this.auth = auth;
this.m_DBHelper = new DBHelper(downloadConfig); this.dbHelper = dbHelper;
this._FileNameHelper = new FileNameHelper(auth); this.fileNameHelper = fileNameHelper;
this.downloadConfig = downloadConfig; this.downloadConfig = downloadConfig;
this.fileNameFormatConfig = fileNameFormatConfig; this.fileNameFormatConfig = fileNameFormatConfig;
} }
@ -296,7 +296,7 @@ public class DownloadHelper : IDownloadHelper
try try
{ {
if (!await m_DBHelper.CheckDownloaded(folder, media_id, api_type)) if (!await dbHelper.CheckDownloaded(folder, media_id, api_type))
{ {
return await HandleNewMedia(folder: folder, return await HandleNewMedia(folder: folder,
media_id: media_id, media_id: media_id,
@ -352,9 +352,9 @@ public class DownloadHelper : IDownloadHelper
return false; return false;
} }
long size = await m_DBHelper.GetStoredFileSize(folder, media_id, api_type); long size = await dbHelper.GetStoredFileSize(folder, media_id, api_type);
var lastModified = File.GetLastWriteTime(fullPathWithTheNewFileName); var lastModified = File.GetLastWriteTime(fullPathWithTheNewFileName);
await m_DBHelper.UpdateMedia(folder, media_id, api_type, folder + path, resolvedFilename + extension, size, true, lastModified); await dbHelper.UpdateMedia(folder, media_id, api_type, folder + path, resolvedFilename + extension, size, true, lastModified);
return true; return true;
} }
@ -459,7 +459,7 @@ public class DownloadHelper : IDownloadHelper
//finaly check which filename we should use. Custom or the server one. //finaly check which filename we should use. Custom or the server one.
//if a custom is used, then the servefilename will be different from the resolved filename. //if a custom is used, then the servefilename will be different from the resolved filename.
string finalName = serverFilename == resolvedFilename ? serverFilename : resolvedFilename; string finalName = serverFilename == resolvedFilename ? serverFilename : resolvedFilename;
await m_DBHelper.UpdateMedia(folder, media_id, api_type, folder + path, finalName + extension, fileSizeInBytes, true, lastModified); await dbHelper.UpdateMedia(folder, media_id, api_type, folder + path, finalName + extension, fileSizeInBytes, true, lastModified);
return status; return status;
} }
@ -476,7 +476,7 @@ public class DownloadHelper : IDownloadHelper
{ {
if (downloadConfig.ShowScrapeSize) if (downloadConfig.ShowScrapeSize)
{ {
long size = await m_DBHelper.GetStoredFileSize(folder, media_id, api_type); long size = await dbHelper.GetStoredFileSize(folder, media_id, api_type);
task.Increment(size); task.Increment(size);
} }
else else
@ -724,7 +724,7 @@ public class DownloadHelper : IDownloadHelper
Uri uri = new(url); Uri uri = new(url);
string filename = System.IO.Path.GetFileNameWithoutExtension(uri.LocalPath); string filename = System.IO.Path.GetFileNameWithoutExtension(uri.LocalPath);
string resolvedFilename = await GenerateCustomFileName(filename, filenameFormat, postInfo, postMedia, author, folder.Split("/")[^1], users, _FileNameHelper, CustomFileNameOption.ReturnOriginal); string resolvedFilename = await GenerateCustomFileName(filename, filenameFormat, postInfo, postMedia, author, folder.Split("/")[^1], users, fileNameHelper, CustomFileNameOption.ReturnOriginal);
return await CreateDirectoriesAndDownloadMedia(path, url, folder, media_id, api_type, task, filename, resolvedFilename); return await CreateDirectoriesAndDownloadMedia(path, url, folder, media_id, api_type, task, filename, resolvedFilename);
} }
@ -742,7 +742,7 @@ public class DownloadHelper : IDownloadHelper
Uri uri = new(url); Uri uri = new(url);
string filename = System.IO.Path.GetFileNameWithoutExtension(uri.LocalPath); string filename = System.IO.Path.GetFileNameWithoutExtension(uri.LocalPath);
string resolvedFilename = await GenerateCustomFileName(filename, filenameFormat, postInfo, postMedia, author, folder.Split("/")[^1], users, _FileNameHelper, CustomFileNameOption.ReturnOriginal); string resolvedFilename = await GenerateCustomFileName(filename, filenameFormat, postInfo, postMedia, author, folder.Split("/")[^1], users, fileNameHelper, CustomFileNameOption.ReturnOriginal);
return await CreateDirectoriesAndDownloadMedia(path, url, folder, media_id, api_type, task, filename, resolvedFilename); return await CreateDirectoriesAndDownloadMedia(path, url, folder, media_id, api_type, task, filename, resolvedFilename);
} }
@ -760,7 +760,7 @@ public class DownloadHelper : IDownloadHelper
Uri uri = new(url); Uri uri = new(url);
string filename = System.IO.Path.GetFileNameWithoutExtension(uri.LocalPath); string filename = System.IO.Path.GetFileNameWithoutExtension(uri.LocalPath);
string resolvedFilename = await GenerateCustomFileName(filename, filenameFormat, streamInfo, streamMedia, author, folder.Split("/")[^1], users, _FileNameHelper, CustomFileNameOption.ReturnOriginal); string resolvedFilename = await GenerateCustomFileName(filename, filenameFormat, streamInfo, streamMedia, author, folder.Split("/")[^1], users, fileNameHelper, CustomFileNameOption.ReturnOriginal);
return await CreateDirectoriesAndDownloadMedia(path, url, folder, media_id, api_type, task, filename, resolvedFilename); return await CreateDirectoriesAndDownloadMedia(path, url, folder, media_id, api_type, task, filename, resolvedFilename);
} }
@ -779,7 +779,7 @@ public class DownloadHelper : IDownloadHelper
} }
Uri uri = new(url); Uri uri = new(url);
string filename = System.IO.Path.GetFileNameWithoutExtension(uri.LocalPath); string filename = System.IO.Path.GetFileNameWithoutExtension(uri.LocalPath);
string resolvedFilename = await GenerateCustomFileName(filename, filenameFormat, messageInfo, messageMedia, fromUser, folder.Split("/")[^1], users, _FileNameHelper, CustomFileNameOption.ReturnOriginal); string resolvedFilename = await GenerateCustomFileName(filename, filenameFormat, messageInfo, messageMedia, fromUser, folder.Split("/")[^1], users, fileNameHelper, CustomFileNameOption.ReturnOriginal);
return await CreateDirectoriesAndDownloadMedia(path, url, folder, media_id, api_type, task, filename, resolvedFilename); return await CreateDirectoriesAndDownloadMedia(path, url, folder, media_id, api_type, task, filename, resolvedFilename);
} }
@ -796,7 +796,7 @@ public class DownloadHelper : IDownloadHelper
} }
Uri uri = new(url); Uri uri = new(url);
string filename = System.IO.Path.GetFileNameWithoutExtension(uri.LocalPath); string filename = System.IO.Path.GetFileNameWithoutExtension(uri.LocalPath);
string resolvedFilename = await GenerateCustomFileName(filename, filenameFormat, messageInfo, messageMedia, fromUser, folder.Split("/")[^1], users, _FileNameHelper, CustomFileNameOption.ReturnOriginal); string resolvedFilename = await GenerateCustomFileName(filename, filenameFormat, messageInfo, messageMedia, fromUser, folder.Split("/")[^1], users, fileNameHelper, CustomFileNameOption.ReturnOriginal);
return await CreateDirectoriesAndDownloadMedia(path, url, folder, media_id, api_type, task, filename, resolvedFilename); return await CreateDirectoriesAndDownloadMedia(path, url, folder, media_id, api_type, task, filename, resolvedFilename);
} }
@ -806,7 +806,7 @@ public class DownloadHelper : IDownloadHelper
string path = "/Archived/Posts/Free"; string path = "/Archived/Posts/Free";
Uri uri = new(url); Uri uri = new(url);
string filename = System.IO.Path.GetFileNameWithoutExtension(uri.LocalPath); string filename = System.IO.Path.GetFileNameWithoutExtension(uri.LocalPath);
string resolvedFilename = await GenerateCustomFileName(filename, filenameFormat, messageInfo, messageMedia, author, folder.Split("/")[^1], users, _FileNameHelper, CustomFileNameOption.ReturnOriginal); string resolvedFilename = await GenerateCustomFileName(filename, filenameFormat, messageInfo, messageMedia, author, folder.Split("/")[^1], users, fileNameHelper, CustomFileNameOption.ReturnOriginal);
return await CreateDirectoriesAndDownloadMedia(path, url, folder, media_id, api_type, task, filename, resolvedFilename); return await CreateDirectoriesAndDownloadMedia(path, url, folder, media_id, api_type, task, filename, resolvedFilename);
} }
@ -833,7 +833,7 @@ public class DownloadHelper : IDownloadHelper
} }
Uri uri = new(url); Uri uri = new(url);
string filename = System.IO.Path.GetFileNameWithoutExtension(uri.LocalPath); string filename = System.IO.Path.GetFileNameWithoutExtension(uri.LocalPath);
string resolvedFilename = await GenerateCustomFileName(filename, filenameFormat, messageInfo, messageMedia, fromUser, folder.Split("/")[^1], users, _FileNameHelper, CustomFileNameOption.ReturnOriginal); string resolvedFilename = await GenerateCustomFileName(filename, filenameFormat, messageInfo, messageMedia, fromUser, folder.Split("/")[^1], users, fileNameHelper, CustomFileNameOption.ReturnOriginal);
return await CreateDirectoriesAndDownloadMedia(path, url, folder, media_id, api_type, task, filename, resolvedFilename); return await CreateDirectoriesAndDownloadMedia(path, url, folder, media_id, api_type, task, filename, resolvedFilename);
} }
@ -850,7 +850,7 @@ public class DownloadHelper : IDownloadHelper
} }
Uri uri = new(url); Uri uri = new(url);
string filename = System.IO.Path.GetFileNameWithoutExtension(uri.LocalPath); string filename = System.IO.Path.GetFileNameWithoutExtension(uri.LocalPath);
string resolvedFilename = await GenerateCustomFileName(filename, filenameFormat, messageInfo, messageMedia, fromUser, folder.Split("/")[^1], users, _FileNameHelper, CustomFileNameOption.ReturnOriginal); string resolvedFilename = await GenerateCustomFileName(filename, filenameFormat, messageInfo, messageMedia, fromUser, folder.Split("/")[^1], users, fileNameHelper, CustomFileNameOption.ReturnOriginal);
return await CreateDirectoriesAndDownloadMedia(path, url, folder, media_id, api_type, task, filename, resolvedFilename); return await CreateDirectoriesAndDownloadMedia(path, url, folder, media_id, api_type, task, filename, resolvedFilename);
} }
@ -876,7 +876,7 @@ public class DownloadHelper : IDownloadHelper
} }
Uri uri = new(url); Uri uri = new(url);
string filename = System.IO.Path.GetFileNameWithoutExtension(uri.LocalPath); string filename = System.IO.Path.GetFileNameWithoutExtension(uri.LocalPath);
string resolvedFilename = await GenerateCustomFileName(filename, filenameFormat, messageInfo, messageMedia, fromUser, folder.Split("/")[^1], users, _FileNameHelper, CustomFileNameOption.ReturnOriginal); string resolvedFilename = await GenerateCustomFileName(filename, filenameFormat, messageInfo, messageMedia, fromUser, folder.Split("/")[^1], users, fileNameHelper, CustomFileNameOption.ReturnOriginal);
return await CreateDirectoriesAndDownloadMedia(path, url, folder, media_id, api_type, task, filename, resolvedFilename); return await CreateDirectoriesAndDownloadMedia(path, url, folder, media_id, api_type, task, filename, resolvedFilename);
} }
@ -1014,7 +1014,7 @@ public class DownloadHelper : IDownloadHelper
task.Increment(1); task.Increment(1);
} }
await m_DBHelper.UpdateMedia(folder, media_id, api_type, folder + path, !string.IsNullOrEmpty(customFileName) ? customFileName + ".mp4" : filename + "_source.mp4", fileSizeInBytes, true, lastModified); await dbHelper.UpdateMedia(folder, media_id, api_type, folder + path, !string.IsNullOrEmpty(customFileName) ? customFileName + ".mp4" : filename + "_source.mp4", fileSizeInBytes, true, lastModified);
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -1077,11 +1077,11 @@ public class DownloadHelper : IDownloadHelper
{ {
properties.Add(match.Groups[1].Value); properties.Add(match.Groups[1].Value);
} }
Dictionary<string, string> values = await _FileNameHelper.GetFilename(messageInfo, messageMedia, fromUser, properties, folder.Split("/")[^1],users); Dictionary<string, string> values = await fileNameHelper.GetFilename(messageInfo, messageMedia, fromUser, properties, folder.Split("/")[^1],users);
customFileName = await _FileNameHelper.BuildFilename(filenameFormat, values); customFileName = await fileNameHelper.BuildFilename(filenameFormat, values);
} }
if (!await m_DBHelper.CheckDownloaded(folder, media_id, api_type)) if (!await dbHelper.CheckDownloaded(folder, media_id, api_type))
{ {
if (!string.IsNullOrEmpty(customFileName) ? !File.Exists(folder + path + "/" + customFileName + ".mp4") : !File.Exists(folder + path + "/" + filename + "_source.mp4")) if (!string.IsNullOrEmpty(customFileName) ? !File.Exists(folder + path + "/" + customFileName + ".mp4") : !File.Exists(folder + path + "/" + filename + "_source.mp4"))
{ {
@ -1098,7 +1098,7 @@ public class DownloadHelper : IDownloadHelper
{ {
task.Increment(1); task.Increment(1);
} }
await m_DBHelper.UpdateMedia(folder, media_id, api_type, folder + path, !string.IsNullOrEmpty(customFileName) ? customFileName + "mp4" : filename + "_source.mp4", fileSizeInBytes, true, lastModified); await dbHelper.UpdateMedia(folder, media_id, api_type, folder + path, !string.IsNullOrEmpty(customFileName) ? customFileName + "mp4" : filename + "_source.mp4", fileSizeInBytes, true, lastModified);
} }
} }
else else
@ -1122,14 +1122,14 @@ public class DownloadHelper : IDownloadHelper
Console.WriteLine($"An error occurred: {ex.Message}"); Console.WriteLine($"An error occurred: {ex.Message}");
return false; return false;
} }
long size = await m_DBHelper.GetStoredFileSize(folder, media_id, api_type); long size = await dbHelper.GetStoredFileSize(folder, media_id, api_type);
await m_DBHelper.UpdateMedia(folder, media_id, api_type, folder + path, customFileName + ".mp4", size, true, lastModified); await dbHelper.UpdateMedia(folder, media_id, api_type, folder + path, customFileName + ".mp4", size, true, lastModified);
} }
} }
if (downloadConfig.ShowScrapeSize) if (downloadConfig.ShowScrapeSize)
{ {
long size = await m_DBHelper.GetStoredFileSize(folder, media_id, api_type); long size = await dbHelper.GetStoredFileSize(folder, media_id, api_type);
task.Increment(size); task.Increment(size);
} }
else else
@ -1184,11 +1184,11 @@ public class DownloadHelper : IDownloadHelper
{ {
properties.Add(match.Groups[1].Value); properties.Add(match.Groups[1].Value);
} }
Dictionary<string, string> values = await _FileNameHelper.GetFilename(messageInfo, messageMedia, fromUser, properties, folder.Split("/")[^1],users); Dictionary<string, string> values = await fileNameHelper.GetFilename(messageInfo, messageMedia, fromUser, properties, folder.Split("/")[^1],users);
customFileName = await _FileNameHelper.BuildFilename(filenameFormat, values); customFileName = await fileNameHelper.BuildFilename(filenameFormat, values);
} }
if (!await m_DBHelper.CheckDownloaded(folder, media_id, api_type)) if (!await dbHelper.CheckDownloaded(folder, media_id, api_type))
{ {
if (!string.IsNullOrEmpty(customFileName) ? !File.Exists(folder + path + "/" + customFileName + ".mp4") : !File.Exists(folder + path + "/" + filename + "_source.mp4")) if (!string.IsNullOrEmpty(customFileName) ? !File.Exists(folder + path + "/" + customFileName + ".mp4") : !File.Exists(folder + path + "/" + filename + "_source.mp4"))
{ {
@ -1205,7 +1205,7 @@ public class DownloadHelper : IDownloadHelper
{ {
task.Increment(1); task.Increment(1);
} }
await m_DBHelper.UpdateMedia(folder, media_id, api_type, folder + path, !string.IsNullOrEmpty(customFileName) ? customFileName + "mp4" : filename + "_source.mp4", fileSizeInBytes, true, lastModified); await dbHelper.UpdateMedia(folder, media_id, api_type, folder + path, !string.IsNullOrEmpty(customFileName) ? customFileName + "mp4" : filename + "_source.mp4", fileSizeInBytes, true, lastModified);
} }
} }
else else
@ -1229,14 +1229,14 @@ public class DownloadHelper : IDownloadHelper
Console.WriteLine($"An error occurred: {ex.Message}"); Console.WriteLine($"An error occurred: {ex.Message}");
return false; return false;
} }
long size = await m_DBHelper.GetStoredFileSize(folder, media_id, api_type); long size = await dbHelper.GetStoredFileSize(folder, media_id, api_type);
await m_DBHelper.UpdateMedia(folder, media_id, api_type, folder + path, customFileName + ".mp4", size, true, lastModified); await dbHelper.UpdateMedia(folder, media_id, api_type, folder + path, customFileName + ".mp4", size, true, lastModified);
} }
} }
if (downloadConfig.ShowScrapeSize) if (downloadConfig.ShowScrapeSize)
{ {
long size = await m_DBHelper.GetStoredFileSize(folder, media_id, api_type); long size = await dbHelper.GetStoredFileSize(folder, media_id, api_type);
task.Increment(size); task.Increment(size);
} }
else else
@ -1291,11 +1291,11 @@ public class DownloadHelper : IDownloadHelper
{ {
properties.Add(match.Groups[1].Value); properties.Add(match.Groups[1].Value);
} }
Dictionary<string, string> values = await _FileNameHelper.GetFilename(messageInfo, messageMedia, fromUser, properties, folder.Split("/")[^1], users); Dictionary<string, string> values = await fileNameHelper.GetFilename(messageInfo, messageMedia, fromUser, properties, folder.Split("/")[^1], users);
customFileName = await _FileNameHelper.BuildFilename(filenameFormat, values); customFileName = await fileNameHelper.BuildFilename(filenameFormat, values);
} }
if (!await m_DBHelper.CheckDownloaded(folder, media_id, api_type)) if (!await dbHelper.CheckDownloaded(folder, media_id, api_type))
{ {
if (!string.IsNullOrEmpty(customFileName) ? !File.Exists(folder + path + "/" + customFileName + ".mp4") : !File.Exists(folder + path + "/" + filename + "_source.mp4")) if (!string.IsNullOrEmpty(customFileName) ? !File.Exists(folder + path + "/" + customFileName + ".mp4") : !File.Exists(folder + path + "/" + filename + "_source.mp4"))
{ {
@ -1312,7 +1312,7 @@ public class DownloadHelper : IDownloadHelper
{ {
task.Increment(1); task.Increment(1);
} }
await m_DBHelper.UpdateMedia(folder, media_id, api_type, folder + path, !string.IsNullOrEmpty(customFileName) ? customFileName + "mp4" : filename + "_source.mp4", fileSizeInBytes, true, lastModified); await dbHelper.UpdateMedia(folder, media_id, api_type, folder + path, !string.IsNullOrEmpty(customFileName) ? customFileName + "mp4" : filename + "_source.mp4", fileSizeInBytes, true, lastModified);
} }
} }
else else
@ -1336,14 +1336,14 @@ public class DownloadHelper : IDownloadHelper
Console.WriteLine($"An error occurred: {ex.Message}"); Console.WriteLine($"An error occurred: {ex.Message}");
return false; return false;
} }
long size = await m_DBHelper.GetStoredFileSize(folder, media_id, api_type); long size = await dbHelper.GetStoredFileSize(folder, media_id, api_type);
await m_DBHelper.UpdateMedia(folder, media_id, api_type, folder + path, customFileName + ".mp4", size, true, lastModified); await dbHelper.UpdateMedia(folder, media_id, api_type, folder + path, customFileName + ".mp4", size, true, lastModified);
} }
} }
if (downloadConfig.ShowScrapeSize) if (downloadConfig.ShowScrapeSize)
{ {
long size = await m_DBHelper.GetStoredFileSize(folder, media_id, api_type); long size = await dbHelper.GetStoredFileSize(folder, media_id, api_type);
task.Increment(size); task.Increment(size);
} }
else else
@ -1397,11 +1397,11 @@ public class DownloadHelper : IDownloadHelper
{ {
properties.Add(match.Groups[1].Value); properties.Add(match.Groups[1].Value);
} }
Dictionary<string, string> values = await _FileNameHelper.GetFilename(messageInfo, messageMedia, fromUser, properties, folder.Split("/")[^1], users); Dictionary<string, string> values = await fileNameHelper.GetFilename(messageInfo, messageMedia, fromUser, properties, folder.Split("/")[^1], users);
customFileName = await _FileNameHelper.BuildFilename(filenameFormat, values); customFileName = await fileNameHelper.BuildFilename(filenameFormat, values);
} }
if (!await m_DBHelper.CheckDownloaded(folder, media_id, api_type)) if (!await dbHelper.CheckDownloaded(folder, media_id, api_type))
{ {
if (!string.IsNullOrEmpty(customFileName) ? !File.Exists(folder + path + "/" + customFileName + ".mp4") : !File.Exists(folder + path + "/" + filename + "_source.mp4")) if (!string.IsNullOrEmpty(customFileName) ? !File.Exists(folder + path + "/" + customFileName + ".mp4") : !File.Exists(folder + path + "/" + filename + "_source.mp4"))
{ {
@ -1418,7 +1418,7 @@ public class DownloadHelper : IDownloadHelper
{ {
task.Increment(1); task.Increment(1);
} }
await m_DBHelper.UpdateMedia(folder, media_id, api_type, folder + path, !string.IsNullOrEmpty(customFileName) ? customFileName + "mp4" : filename + "_source.mp4", fileSizeInBytes, true, lastModified); await dbHelper.UpdateMedia(folder, media_id, api_type, folder + path, !string.IsNullOrEmpty(customFileName) ? customFileName + "mp4" : filename + "_source.mp4", fileSizeInBytes, true, lastModified);
} }
} }
else else
@ -1442,14 +1442,14 @@ public class DownloadHelper : IDownloadHelper
Console.WriteLine($"An error occurred: {ex.Message}"); Console.WriteLine($"An error occurred: {ex.Message}");
return false; return false;
} }
long size = await m_DBHelper.GetStoredFileSize(folder, media_id, api_type); long size = await dbHelper.GetStoredFileSize(folder, media_id, api_type);
await m_DBHelper.UpdateMedia(folder, media_id, api_type, folder + path, customFileName + ".mp4", size, true, lastModified); await dbHelper.UpdateMedia(folder, media_id, api_type, folder + path, customFileName + ".mp4", size, true, lastModified);
} }
} }
if (downloadConfig.ShowScrapeSize) if (downloadConfig.ShowScrapeSize)
{ {
long size = await m_DBHelper.GetStoredFileSize(folder, media_id, api_type); long size = await dbHelper.GetStoredFileSize(folder, media_id, api_type);
task.Increment(size); task.Increment(size);
} }
else else
@ -1504,11 +1504,11 @@ public class DownloadHelper : IDownloadHelper
{ {
properties.Add(match.Groups[1].Value); properties.Add(match.Groups[1].Value);
} }
Dictionary<string, string> values = await _FileNameHelper.GetFilename(postInfo, postMedia, author, properties, folder.Split("/")[^1], users); Dictionary<string, string> values = await fileNameHelper.GetFilename(postInfo, postMedia, author, properties, folder.Split("/")[^1], users);
customFileName = await _FileNameHelper.BuildFilename(filenameFormat, values); customFileName = await fileNameHelper.BuildFilename(filenameFormat, values);
} }
if (!await m_DBHelper.CheckDownloaded(folder, media_id, api_type)) if (!await dbHelper.CheckDownloaded(folder, media_id, api_type))
{ {
if (!string.IsNullOrEmpty(customFileName) ? !File.Exists(folder + path + "/" + customFileName + ".mp4") : !File.Exists(folder + path + "/" + filename + "_source.mp4")) if (!string.IsNullOrEmpty(customFileName) ? !File.Exists(folder + path + "/" + customFileName + ".mp4") : !File.Exists(folder + path + "/" + filename + "_source.mp4"))
{ {
@ -1525,7 +1525,7 @@ public class DownloadHelper : IDownloadHelper
{ {
task.Increment(1); task.Increment(1);
} }
await m_DBHelper.UpdateMedia(folder, media_id, api_type, folder + path, !string.IsNullOrEmpty(customFileName) ? customFileName + "mp4" : filename + "_source.mp4", fileSizeInBytes, true, lastModified); await dbHelper.UpdateMedia(folder, media_id, api_type, folder + path, !string.IsNullOrEmpty(customFileName) ? customFileName + "mp4" : filename + "_source.mp4", fileSizeInBytes, true, lastModified);
} }
} }
else else
@ -1549,14 +1549,14 @@ public class DownloadHelper : IDownloadHelper
Console.WriteLine($"An error occurred: {ex.Message}"); Console.WriteLine($"An error occurred: {ex.Message}");
return false; return false;
} }
long size = await m_DBHelper.GetStoredFileSize(folder, media_id, api_type); long size = await dbHelper.GetStoredFileSize(folder, media_id, api_type);
await m_DBHelper.UpdateMedia(folder, media_id, api_type, folder + path, customFileName + ".mp4", size, true, lastModified); await dbHelper.UpdateMedia(folder, media_id, api_type, folder + path, customFileName + ".mp4", size, true, lastModified);
} }
} }
if (downloadConfig.ShowScrapeSize) if (downloadConfig.ShowScrapeSize)
{ {
long size = await m_DBHelper.GetStoredFileSize(folder, media_id, api_type); long size = await dbHelper.GetStoredFileSize(folder, media_id, api_type);
task.Increment(size); task.Increment(size);
} }
else else
@ -1609,11 +1609,11 @@ public class DownloadHelper : IDownloadHelper
{ {
properties.Add(match.Groups[1].Value); properties.Add(match.Groups[1].Value);
} }
Dictionary<string, string> values = await _FileNameHelper.GetFilename(postInfo, postMedia, author, properties, folder.Split("/")[^1], users); Dictionary<string, string> values = await fileNameHelper.GetFilename(postInfo, postMedia, author, properties, folder.Split("/")[^1], users);
customFileName = await _FileNameHelper.BuildFilename(filenameFormat, values); customFileName = await fileNameHelper.BuildFilename(filenameFormat, values);
} }
if (!await m_DBHelper.CheckDownloaded(folder, media_id, api_type)) if (!await dbHelper.CheckDownloaded(folder, media_id, api_type))
{ {
if (!string.IsNullOrEmpty(customFileName) ? !File.Exists(folder + path + "/" + customFileName + ".mp4") : !File.Exists(folder + path + "/" + filename + "_source.mp4")) if (!string.IsNullOrEmpty(customFileName) ? !File.Exists(folder + path + "/" + customFileName + ".mp4") : !File.Exists(folder + path + "/" + filename + "_source.mp4"))
{ {
@ -1630,7 +1630,7 @@ public class DownloadHelper : IDownloadHelper
{ {
task.Increment(1); task.Increment(1);
} }
await m_DBHelper.UpdateMedia(folder, media_id, api_type, folder + path, !string.IsNullOrEmpty(customFileName) ? customFileName + "mp4" : filename + "_source.mp4", fileSizeInBytes, true, lastModified); await dbHelper.UpdateMedia(folder, media_id, api_type, folder + path, !string.IsNullOrEmpty(customFileName) ? customFileName + "mp4" : filename + "_source.mp4", fileSizeInBytes, true, lastModified);
} }
} }
else else
@ -1654,14 +1654,14 @@ public class DownloadHelper : IDownloadHelper
Console.WriteLine($"An error occurred: {ex.Message}"); Console.WriteLine($"An error occurred: {ex.Message}");
return false; return false;
} }
long size = await m_DBHelper.GetStoredFileSize(folder, media_id, api_type); long size = await dbHelper.GetStoredFileSize(folder, media_id, api_type);
await m_DBHelper.UpdateMedia(folder, media_id, api_type, folder + path, customFileName + ".mp4", size, true, lastModified); await dbHelper.UpdateMedia(folder, media_id, api_type, folder + path, customFileName + ".mp4", size, true, lastModified);
} }
} }
if (downloadConfig.ShowScrapeSize) if (downloadConfig.ShowScrapeSize)
{ {
long size = await m_DBHelper.GetStoredFileSize(folder, media_id, api_type); long size = await dbHelper.GetStoredFileSize(folder, media_id, api_type);
task.Increment(size); task.Increment(size);
} }
else else
@ -1714,11 +1714,11 @@ public class DownloadHelper : IDownloadHelper
{ {
properties.Add(match.Groups[1].Value); properties.Add(match.Groups[1].Value);
} }
Dictionary<string, string> values = await _FileNameHelper.GetFilename(streamInfo, streamMedia, author, properties, folder.Split("/")[^1], users); Dictionary<string, string> values = await fileNameHelper.GetFilename(streamInfo, streamMedia, author, properties, folder.Split("/")[^1], users);
customFileName = await _FileNameHelper.BuildFilename(filenameFormat, values); customFileName = await fileNameHelper.BuildFilename(filenameFormat, values);
} }
if (!await m_DBHelper.CheckDownloaded(folder, media_id, api_type)) if (!await dbHelper.CheckDownloaded(folder, media_id, api_type))
{ {
if (!string.IsNullOrEmpty(customFileName) ? !File.Exists(folder + path + "/" + customFileName + ".mp4") : !File.Exists(folder + path + "/" + filename + "_source.mp4")) if (!string.IsNullOrEmpty(customFileName) ? !File.Exists(folder + path + "/" + customFileName + ".mp4") : !File.Exists(folder + path + "/" + filename + "_source.mp4"))
{ {
@ -1735,7 +1735,7 @@ public class DownloadHelper : IDownloadHelper
{ {
task.Increment(1); task.Increment(1);
} }
await m_DBHelper.UpdateMedia(folder, media_id, api_type, folder + path, !string.IsNullOrEmpty(customFileName) ? customFileName + "mp4" : filename + "_source.mp4", fileSizeInBytes, true, lastModified); await dbHelper.UpdateMedia(folder, media_id, api_type, folder + path, !string.IsNullOrEmpty(customFileName) ? customFileName + "mp4" : filename + "_source.mp4", fileSizeInBytes, true, lastModified);
} }
} }
else else
@ -1759,14 +1759,14 @@ public class DownloadHelper : IDownloadHelper
Console.WriteLine($"An error occurred: {ex.Message}"); Console.WriteLine($"An error occurred: {ex.Message}");
return false; return false;
} }
long size = await m_DBHelper.GetStoredFileSize(folder, media_id, api_type); long size = await dbHelper.GetStoredFileSize(folder, media_id, api_type);
await m_DBHelper.UpdateMedia(folder, media_id, api_type, folder + path, customFileName + ".mp4", size, true, lastModified); await dbHelper.UpdateMedia(folder, media_id, api_type, folder + path, customFileName + ".mp4", size, true, lastModified);
} }
} }
if (downloadConfig.ShowScrapeSize) if (downloadConfig.ShowScrapeSize)
{ {
long size = await m_DBHelper.GetStoredFileSize(folder, media_id, api_type); long size = await dbHelper.GetStoredFileSize(folder, media_id, api_type);
task.Increment(size); task.Increment(size);
} }
else else
@ -1821,11 +1821,11 @@ public class DownloadHelper : IDownloadHelper
{ {
properties.Add(match.Groups[1].Value); properties.Add(match.Groups[1].Value);
} }
Dictionary<string, string> values = await _FileNameHelper.GetFilename(postInfo, postMedia, fromUser, properties, folder.Split("/")[^1], users); Dictionary<string, string> values = await fileNameHelper.GetFilename(postInfo, postMedia, fromUser, properties, folder.Split("/")[^1], users);
customFileName = await _FileNameHelper.BuildFilename(filenameFormat, values); customFileName = await fileNameHelper.BuildFilename(filenameFormat, values);
} }
if (!await m_DBHelper.CheckDownloaded(folder, media_id, api_type)) if (!await dbHelper.CheckDownloaded(folder, media_id, api_type))
{ {
if (!string.IsNullOrEmpty(customFileName) ? !File.Exists(folder + path + "/" + customFileName + ".mp4") : !File.Exists(folder + path + "/" + filename + "_source.mp4")) if (!string.IsNullOrEmpty(customFileName) ? !File.Exists(folder + path + "/" + customFileName + ".mp4") : !File.Exists(folder + path + "/" + filename + "_source.mp4"))
{ {
@ -1842,7 +1842,7 @@ public class DownloadHelper : IDownloadHelper
{ {
task.Increment(1); task.Increment(1);
} }
await m_DBHelper.UpdateMedia(folder, media_id, api_type, folder + path, !string.IsNullOrEmpty(customFileName) ? customFileName + "mp4" : filename + "_source.mp4", fileSizeInBytes, true, lastModified); await dbHelper.UpdateMedia(folder, media_id, api_type, folder + path, !string.IsNullOrEmpty(customFileName) ? customFileName + "mp4" : filename + "_source.mp4", fileSizeInBytes, true, lastModified);
} }
} }
else else
@ -1866,14 +1866,14 @@ public class DownloadHelper : IDownloadHelper
Console.WriteLine($"An error occurred: {ex.Message}"); Console.WriteLine($"An error occurred: {ex.Message}");
return false; return false;
} }
long size = await m_DBHelper.GetStoredFileSize(folder, media_id, api_type); long size = await dbHelper.GetStoredFileSize(folder, media_id, api_type);
await m_DBHelper.UpdateMedia(folder, media_id, api_type, folder + path, customFileName + ".mp4", size, true, lastModified); await dbHelper.UpdateMedia(folder, media_id, api_type, folder + path, customFileName + ".mp4", size, true, lastModified);
} }
} }
if (downloadConfig.ShowScrapeSize) if (downloadConfig.ShowScrapeSize)
{ {
long size = await m_DBHelper.GetStoredFileSize(folder, media_id, api_type); long size = await dbHelper.GetStoredFileSize(folder, media_id, api_type);
task.Increment(size); task.Increment(size);
} }
else else
@ -1920,11 +1920,11 @@ public class DownloadHelper : IDownloadHelper
{ {
properties.Add(match.Groups[1].Value); properties.Add(match.Groups[1].Value);
} }
Dictionary<string, string> values = await _FileNameHelper.GetFilename(postInfo, postMedia, author, properties, folder.Split("/")[^1], users); Dictionary<string, string> values = await fileNameHelper.GetFilename(postInfo, postMedia, author, properties, folder.Split("/")[^1], users);
customFileName = await _FileNameHelper.BuildFilename(filenameFormat, values); customFileName = await fileNameHelper.BuildFilename(filenameFormat, values);
} }
if (!await m_DBHelper.CheckDownloaded(folder, media_id, api_type)) if (!await dbHelper.CheckDownloaded(folder, media_id, api_type))
{ {
if (!string.IsNullOrEmpty(customFileName) ? !File.Exists(folder + path + "/" + customFileName + ".mp4") : !File.Exists(folder + path + "/" + filename + "_source.mp4")) if (!string.IsNullOrEmpty(customFileName) ? !File.Exists(folder + path + "/" + customFileName + ".mp4") : !File.Exists(folder + path + "/" + filename + "_source.mp4"))
{ {
@ -1941,7 +1941,7 @@ public class DownloadHelper : IDownloadHelper
{ {
task.Increment(1); task.Increment(1);
} }
await m_DBHelper.UpdateMedia(folder, media_id, api_type, folder + path, !string.IsNullOrEmpty(customFileName) ? customFileName + "mp4" : filename + "_source.mp4", fileSizeInBytes, true, lastModified); await dbHelper.UpdateMedia(folder, media_id, api_type, folder + path, !string.IsNullOrEmpty(customFileName) ? customFileName + "mp4" : filename + "_source.mp4", fileSizeInBytes, true, lastModified);
} }
} }
else else
@ -1965,14 +1965,14 @@ public class DownloadHelper : IDownloadHelper
Console.WriteLine($"An error occurred: {ex.Message}"); Console.WriteLine($"An error occurred: {ex.Message}");
return false; return false;
} }
long size = await m_DBHelper.GetStoredFileSize(folder, media_id, api_type); long size = await dbHelper.GetStoredFileSize(folder, media_id, api_type);
await m_DBHelper.UpdateMedia(folder, media_id, api_type, folder + path, customFileName + ".mp4", size, true, lastModified); await dbHelper.UpdateMedia(folder, media_id, api_type, folder + path, customFileName + ".mp4", size, true, lastModified);
} }
} }
if (downloadConfig.ShowScrapeSize) if (downloadConfig.ShowScrapeSize)
{ {
long size = await m_DBHelper.GetStoredFileSize(folder, media_id, api_type); long size = await dbHelper.GetStoredFileSize(folder, media_id, api_type);
task.Increment(size); task.Increment(size);
} }
else else

View File

@ -26,6 +26,7 @@ namespace OF_DL.Helpers
Task<ArchivedCollection> GetArchived(string endpoint, string folder, IDownloadConfig config, StatusContext ctx); Task<ArchivedCollection> GetArchived(string endpoint, string folder, IDownloadConfig config, StatusContext ctx);
Task<MessageCollection> GetMessages(string endpoint, string folder, IDownloadConfig config, StatusContext ctx); Task<MessageCollection> GetMessages(string endpoint, string folder, IDownloadConfig config, StatusContext ctx);
Task<PaidMessageCollection> GetPaidMessages(string endpoint, string folder, string username, IDownloadConfig config, StatusContext ctx); Task<PaidMessageCollection> GetPaidMessages(string endpoint, string folder, string username, IDownloadConfig config, StatusContext ctx);
Task<SinglePaidMessageCollection> GetPaidMessage(string endpoint, string folder, IDownloadConfig config);
Task<Dictionary<string, long>> GetPurchasedTabUsers(string endpoint, IDownloadConfig config, Dictionary<string, long> users); Task<Dictionary<string, long>> GetPurchasedTabUsers(string endpoint, IDownloadConfig config, Dictionary<string, long> users);
Task<List<PurchasedTabCollection>> GetPurchasedTab(string endpoint, string folder, IDownloadConfig config, Dictionary<string, long> users); Task<List<PurchasedTabCollection>> GetPurchasedTab(string endpoint, string folder, IDownloadConfig config, Dictionary<string, long> users);
Task<User> GetUserInfo(string endpoint); Task<User> GetUserInfo(string endpoint);

View File

@ -0,0 +1,10 @@
using OF_DL.Entities;
namespace OF_DL.Helpers.Interfaces
{
public interface IAuthHelper
{
Task SetupBrowser(bool runningInDocker);
Task<Auth?> GetAuthFromBrowser(bool isDocker = false);
}
}

View File

@ -20,6 +20,7 @@ using static OF_DL.Entities.Messages.Messages;
using Akka.Configuration; using Akka.Configuration;
using System.Text; using System.Text;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using OF_DL.Helpers.Interfaces;
namespace OF_DL; namespace OF_DL;
@ -31,12 +32,16 @@ public class Program
private static bool clientIdBlobMissing = false; private static bool clientIdBlobMissing = false;
private static bool devicePrivateKeyMissing = false; private static bool devicePrivateKeyMissing = false;
private readonly Entities.Config config; private readonly Entities.Config config;
private readonly IAuthHelper authHelper;
private readonly IServiceProvider serviceProvider;
private Auth? auth = null; private Auth? auth = null;
private static LoggingLevelSwitch levelSwitch = new LoggingLevelSwitch(); private static LoggingLevelSwitch levelSwitch = new LoggingLevelSwitch();
public Program(Entities.Config config) public Program(Entities.Config config, IAuthHelper authHelper, IServiceProvider serviceProvider)
{ {
this.config = config; this.config = config;
this.authHelper = authHelper;
this.serviceProvider = serviceProvider;
} }
private async Task LoadAuthFromBrowser() private async Task LoadAuthFromBrowser()
@ -45,7 +50,6 @@ public class Program
try try
{ {
AuthHelper authHelper = new();
Task setupBrowserTask = authHelper.SetupBrowser(runningInDocker); Task setupBrowserTask = authHelper.SetupBrowser(runningInDocker);
Task.Delay(1000).Wait(); Task.Delay(1000).Wait();
@ -140,6 +144,15 @@ public class Program
private static void ConfigureServices(IServiceCollection services, Entities.Config config) private static void ConfigureServices(IServiceCollection services, Entities.Config config)
{ {
services.AddSingleton(config); services.AddSingleton(config);
services.AddSingleton<IDownloadConfig>(config);
services.AddSingleton<IFileNameFormatConfig>(config);
services.AddTransient<IAuthHelper, AuthHelper>();
services.AddTransient<IAPIHelper, APIHelper>();
services.AddTransient<IDBHelper, DBHelper>();
services.AddTransient<IDownloadHelper, DownloadHelper>();
services.AddTransient<IFileNameHelper, FileNameHelper>();
services.AddSingleton<Program>(); services.AddSingleton<Program>();
} }
@ -910,7 +923,7 @@ public class Program
} }
//Check if auth is valid //Check if auth is valid
var apiHelper = new APIHelper(auth, config); var apiHelper = ActivatorUtilities.CreateInstance<APIHelper>(serviceProvider, auth);
Entities.User? validate = await apiHelper.GetUserInfo($"/users/me"); Entities.User? validate = await apiHelper.GetUserInfo($"/users/me");
if (validate == null || (validate?.name == null && validate?.username == null)) if (validate == null || (validate?.name == null && validate?.username == null))
@ -962,9 +975,9 @@ public class Program
} }
} }
private static async Task DownloadAllData(APIHelper m_ApiHelper, Auth Auth, Entities.Config Config) private async Task DownloadAllData(IAPIHelper m_ApiHelper, Auth Auth, Entities.Config Config)
{ {
DBHelper dBHelper = new DBHelper(Config); IDBHelper dBHelper = serviceProvider.GetRequiredService<IDBHelper>();
Log.Debug("Calling DownloadAllData"); Log.Debug("Calling DownloadAllData");
@ -1096,7 +1109,12 @@ public class Program
await dBHelper.CreateDB(path); await dBHelper.CreateDB(path);
var downloadContext = new DownloadContext(Auth, Config, GetCreatorFileNameFormatConfig(Config, username), m_ApiHelper, dBHelper); var downloadContext = ActivatorUtilities.CreateInstance<DownloadContext>(
serviceProvider,
Config,
GetCreatorFileNameFormatConfig(Config, username),
m_ApiHelper,
dBHelper);
await DownloadSinglePost(downloadContext, post_id, path, users); await DownloadSinglePost(downloadContext, post_id, path, users);
} }
@ -1168,7 +1186,12 @@ public class Program
Log.Debug($"Download path: {path}"); Log.Debug($"Download path: {path}");
var downloadContext = new DownloadContext(Auth, Config, GetCreatorFileNameFormatConfig(Config, purchasedTabCollection.Username), m_ApiHelper, dBHelper); var downloadContext = ActivatorUtilities.CreateInstance<DownloadContext>(
serviceProvider,
Config,
GetCreatorFileNameFormatConfig(Config, purchasedTabCollection.Username),
m_ApiHelper,
dBHelper);
int paidPostCount = 0; int paidPostCount = 0;
int paidMessagesCount = 0; int paidMessagesCount = 0;
@ -1256,7 +1279,12 @@ public class Program
await dBHelper.CreateDB(path); await dBHelper.CreateDB(path);
var downloadContext = new DownloadContext(Auth, Config, GetCreatorFileNameFormatConfig(Config, username), m_ApiHelper, dBHelper); var downloadContext = ActivatorUtilities.CreateInstance<DownloadContext>(
serviceProvider,
Config,
GetCreatorFileNameFormatConfig(Config, username),
m_ApiHelper,
dBHelper);
await DownloadPaidMessage(downloadContext, hasSelectedUsersKVP, username, 1, path, message_id); await DownloadPaidMessage(downloadContext, hasSelectedUsersKVP, username, 1, path, message_id);
} }
@ -1306,7 +1334,12 @@ public class Program
await dBHelper.CreateDB(path); await dBHelper.CreateDB(path);
var downloadContext = new DownloadContext(Auth, Config, GetCreatorFileNameFormatConfig(Config, user.Key), m_ApiHelper, dBHelper); var downloadContext = ActivatorUtilities.CreateInstance<DownloadContext>(
serviceProvider,
Config,
GetCreatorFileNameFormatConfig(Config, user.Key),
m_ApiHelper,
dBHelper);
if (Config.DownloadAvatarHeaderPhoto) if (Config.DownloadAvatarHeaderPhoto)
{ {
@ -2958,7 +2991,7 @@ public class Program
} }
} }
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(IAPIHelper apiHelper, Entities.Config currentConfig, Dictionary<string, long> users, Dictionary<string, long> lists)
{ {
bool hasSelectedUsers = false; bool hasSelectedUsers = false;
Dictionary<string, long> selectedUsers = new Dictionary<string, long>(); Dictionary<string, long> selectedUsers = new Dictionary<string, long>();