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
{
private static readonly JsonSerializerSettings m_JsonSerializerSettings;
private readonly IDBHelper m_DBHelper;
private readonly IDBHelper dbHelper;
private readonly IDownloadConfig downloadConfig;
private readonly Auth auth;
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;
m_DBHelper = new DBHelper(downloadConfig);
this.downloadConfig = downloadConfig;
this.dbHelper = dbHelper;
}
@ -570,21 +570,21 @@ public class APIHelper : IAPIHelper
{
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)
{
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
{
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)
{
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)
{
continue;
@ -671,21 +671,21 @@ public class APIHelper : IAPIHelper
{
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)
{
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
{
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)
{
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)
{
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);
foreach (Messages.Medium medium in purchase.media)
{
@ -840,7 +840,7 @@ public class APIHelper : IAPIHelper
{
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.PaidPostMedia.Add(medium);
}
@ -850,7 +850,7 @@ public class APIHelper : IAPIHelper
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.PaidPostMedia.Add(medium);
}
@ -863,7 +863,7 @@ public class APIHelper : IAPIHelper
{
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.PaidPostMedia.Add(medium);
}
@ -872,7 +872,7 @@ public class APIHelper : IAPIHelper
{
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.PaidPostMedia.Add(medium);
}
@ -925,7 +925,7 @@ public class APIHelper : IAPIHelper
}
else if (config.DownloadPostsIncrementally)
{
var mostRecentPostDate = await m_DBHelper.GetMostRecentPostDate(folder);
var mostRecentPostDate = await dbHelper.GetMostRecentPostDate(folder);
if (mostRecentPostDate.HasValue)
{
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);
if (post.media != null && post.media.Count > 0)
{
@ -1032,7 +1032,7 @@ public class APIHelper : IAPIHelper
{
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.PostMedia.Add(medium);
}
@ -1044,7 +1044,7 @@ public class APIHelper : IAPIHelper
{
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.PostMedia.Add(medium);
}
@ -1058,7 +1058,7 @@ public class APIHelper : IAPIHelper
{
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.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);
if (singlePost.media != null && singlePost.media.Count > 0)
{
@ -1146,7 +1146,7 @@ public class APIHelper : IAPIHelper
{
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.SinglePostMedia.Add(medium);
}
@ -1159,7 +1159,7 @@ public class APIHelper : IAPIHelper
{
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.SinglePostMedia.Add(medium);
}
@ -1173,7 +1173,7 @@ public class APIHelper : IAPIHelper
{
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.SinglePostMedia.Add(medium);
}
@ -1189,7 +1189,7 @@ public class APIHelper : IAPIHelper
{
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.SinglePostMedia.Add(medium);
}
@ -1199,7 +1199,7 @@ public class APIHelper : IAPIHelper
{
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.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);
if (stream.media != null && stream.media.Count > 0)
{
@ -1333,7 +1333,7 @@ public class APIHelper : IAPIHelper
{
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.StreamMedia.Add(medium);
}
@ -1346,7 +1346,7 @@ public class APIHelper : IAPIHelper
{
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.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);
if (archive.media != null && archive.media.Count > 0)
{
@ -1478,7 +1478,7 @@ public class APIHelper : IAPIHelper
{
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.ArchivedPostMedia.Add(medium);
}
@ -1487,7 +1487,7 @@ public class APIHelper : IAPIHelper
{
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.ArchivedPostMedia.Add(medium);
}
@ -1581,7 +1581,7 @@ public class APIHelper : IAPIHelper
}
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);
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))
{
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.MessageMedia.Add(medium);
}
@ -1632,7 +1632,7 @@ public class APIHelper : IAPIHelper
}
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.MessageMedia.Add(medium);
}
@ -1663,7 +1663,7 @@ public class APIHelper : IAPIHelper
}
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.MessageMedia.Add(medium);
}
@ -1688,7 +1688,7 @@ public class APIHelper : IAPIHelper
}
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.MessageMedia.Add(medium);
}
@ -1734,7 +1734,7 @@ public class APIHelper : IAPIHelper
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);
List<long> messagePreviewIds = new();
if (message.previews != null && message.previews.Count > 0)
@ -1776,7 +1776,7 @@ public class APIHelper : IAPIHelper
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.SingleMessageMedia.Add(medium);
}
@ -1802,7 +1802,7 @@ public class APIHelper : IAPIHelper
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.PreviewSingleMessageMedia.Add(medium);
}
@ -1828,7 +1828,7 @@ public class APIHelper : IAPIHelper
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.SingleMessageMedia.Add(medium);
}
@ -1854,7 +1854,7 @@ public class APIHelper : IAPIHelper
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.PreviewSingleMessageMedia.Add(medium);
}
@ -1945,11 +1945,11 @@ public class APIHelper : IAPIHelper
{
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
{
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);
if (purchase.media != null && purchase.media.Count > 0)
@ -2007,7 +2007,7 @@ public class APIHelper : IAPIHelper
}
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.PaidMessageMedia.Add(medium);
}
@ -2032,7 +2032,7 @@ public class APIHelper : IAPIHelper
}
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.PaidMessageMedia.Add(medium);
}
@ -2060,7 +2060,7 @@ public class APIHelper : IAPIHelper
}
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.PaidMessageMedia.Add(medium);
}
@ -2085,7 +2085,7 @@ public class APIHelper : IAPIHelper
}
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.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);
foreach (Messages.Medium medium in purchase.media)
{
@ -2434,7 +2434,7 @@ public class APIHelper : IAPIHelper
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.PaidPostMedia.Add(medium);
}
@ -2444,7 +2444,7 @@ public class APIHelper : IAPIHelper
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.PaidPostMedia.Add(medium);
}
@ -2457,7 +2457,7 @@ public class APIHelper : IAPIHelper
{
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.PaidPostMedia.Add(medium);
}
@ -2466,7 +2466,7 @@ public class APIHelper : IAPIHelper
{
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.PaidPostMedia.Add(medium);
}
@ -2477,11 +2477,11 @@ public class APIHelper : IAPIHelper
case "message":
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
{
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);
if (purchase.media != null && purchase.media.Count > 0)
@ -2539,7 +2539,7 @@ public class APIHelper : IAPIHelper
}
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.PaidMessageMedia.Add(medium);
}
@ -2564,7 +2564,7 @@ public class APIHelper : IAPIHelper
}
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.PaidMessageMedia.Add(medium);
}
@ -2592,7 +2592,7 @@ public class APIHelper : IAPIHelper
}
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.PaidMessageMedia.Add(medium);
}
@ -2617,7 +2617,7 @@ public class APIHelper : IAPIHelper
}
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.PaidMessageMedia.Add(medium);
}

View File

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

View File

@ -1,9 +1,4 @@
using OF_DL.Entities;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OF_DL.Helpers
{
@ -11,26 +6,23 @@ namespace OF_DL.Helpers
{
public IDownloadConfig DownloadConfig { get; }
public IFileNameFormatConfig FileNameFormatConfig { get; }
public APIHelper ApiHelper { get; }
public DBHelper DBHelper { get; }
public DownloadHelper DownloadHelper { get; }
public IAPIHelper ApiHelper { get; }
public IDBHelper DBHelper { 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 DBHelper DBHelper { get; }
public DownloadHelper DownloadHelper { get; }
public IDownloadConfig DownloadConfig { get; }
public IFileNameFormatConfig FileNameFormatConfig { get; }
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);
}
public IAPIHelper ApiHelper { get; } = apiHelper;
public IDBHelper DBHelper { get; } = dBHelper;
public IDownloadHelper DownloadHelper { get; } = downloadHelper;
public IDownloadConfig DownloadConfig { get; } = downloadConfig;
public IFileNameFormatConfig FileNameFormatConfig { get; } = fileNameFormatConfig;
}
}

View File

@ -36,17 +36,17 @@ namespace OF_DL.Helpers;
public class DownloadHelper : IDownloadHelper
{
private readonly Auth auth;
private readonly IDBHelper m_DBHelper;
private readonly IFileNameHelper _FileNameHelper;
private readonly IDBHelper dbHelper;
private readonly IFileNameHelper fileNameHelper;
private readonly IDownloadConfig downloadConfig;
private readonly IFileNameFormatConfig fileNameFormatConfig;
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.m_DBHelper = new DBHelper(downloadConfig);
this._FileNameHelper = new FileNameHelper(auth);
this.dbHelper = dbHelper;
this.fileNameHelper = fileNameHelper;
this.downloadConfig = downloadConfig;
this.fileNameFormatConfig = fileNameFormatConfig;
}
@ -296,7 +296,7 @@ public class DownloadHelper : IDownloadHelper
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,
media_id: media_id,
@ -352,9 +352,9 @@ public class DownloadHelper : IDownloadHelper
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);
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;
}
@ -459,7 +459,7 @@ public class DownloadHelper : IDownloadHelper
//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.
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;
}
@ -476,7 +476,7 @@ public class DownloadHelper : IDownloadHelper
{
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);
}
else
@ -724,7 +724,7 @@ public class DownloadHelper : IDownloadHelper
Uri uri = new(url);
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);
}
@ -742,7 +742,7 @@ public class DownloadHelper : IDownloadHelper
Uri uri = new(url);
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);
}
@ -760,7 +760,7 @@ public class DownloadHelper : IDownloadHelper
Uri uri = new(url);
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);
}
@ -779,7 +779,7 @@ public class DownloadHelper : IDownloadHelper
}
Uri uri = new(url);
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);
}
@ -796,7 +796,7 @@ public class DownloadHelper : IDownloadHelper
}
Uri uri = new(url);
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);
}
@ -806,7 +806,7 @@ public class DownloadHelper : IDownloadHelper
string path = "/Archived/Posts/Free";
Uri uri = new(url);
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);
}
@ -833,7 +833,7 @@ public class DownloadHelper : IDownloadHelper
}
Uri uri = new(url);
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);
}
@ -850,7 +850,7 @@ public class DownloadHelper : IDownloadHelper
}
Uri uri = new(url);
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);
}
@ -876,7 +876,7 @@ public class DownloadHelper : IDownloadHelper
}
Uri uri = new(url);
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);
}
@ -1014,7 +1014,7 @@ public class DownloadHelper : IDownloadHelper
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)
{
@ -1077,11 +1077,11 @@ public class DownloadHelper : IDownloadHelper
{
properties.Add(match.Groups[1].Value);
}
Dictionary<string, string> values = await _FileNameHelper.GetFilename(messageInfo, messageMedia, fromUser, properties, folder.Split("/")[^1],users);
customFileName = await _FileNameHelper.BuildFilename(filenameFormat, values);
Dictionary<string, string> values = await fileNameHelper.GetFilename(messageInfo, messageMedia, fromUser, properties, folder.Split("/")[^1],users);
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"))
{
@ -1098,7 +1098,7 @@ public class DownloadHelper : IDownloadHelper
{
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
@ -1122,14 +1122,14 @@ public class DownloadHelper : IDownloadHelper
Console.WriteLine($"An error occurred: {ex.Message}");
return false;
}
long size = await m_DBHelper.GetStoredFileSize(folder, media_id, api_type);
await m_DBHelper.UpdateMedia(folder, media_id, api_type, folder + path, customFileName + ".mp4", size, true, lastModified);
long size = await dbHelper.GetStoredFileSize(folder, media_id, api_type);
await dbHelper.UpdateMedia(folder, media_id, api_type, folder + path, customFileName + ".mp4", size, true, lastModified);
}
}
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);
}
else
@ -1184,11 +1184,11 @@ public class DownloadHelper : IDownloadHelper
{
properties.Add(match.Groups[1].Value);
}
Dictionary<string, string> values = await _FileNameHelper.GetFilename(messageInfo, messageMedia, fromUser, properties, folder.Split("/")[^1],users);
customFileName = await _FileNameHelper.BuildFilename(filenameFormat, values);
Dictionary<string, string> values = await fileNameHelper.GetFilename(messageInfo, messageMedia, fromUser, properties, folder.Split("/")[^1],users);
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"))
{
@ -1205,7 +1205,7 @@ public class DownloadHelper : IDownloadHelper
{
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
@ -1229,14 +1229,14 @@ public class DownloadHelper : IDownloadHelper
Console.WriteLine($"An error occurred: {ex.Message}");
return false;
}
long size = await m_DBHelper.GetStoredFileSize(folder, media_id, api_type);
await m_DBHelper.UpdateMedia(folder, media_id, api_type, folder + path, customFileName + ".mp4", size, true, lastModified);
long size = await dbHelper.GetStoredFileSize(folder, media_id, api_type);
await dbHelper.UpdateMedia(folder, media_id, api_type, folder + path, customFileName + ".mp4", size, true, lastModified);
}
}
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);
}
else
@ -1291,11 +1291,11 @@ public class DownloadHelper : IDownloadHelper
{
properties.Add(match.Groups[1].Value);
}
Dictionary<string, string> values = await _FileNameHelper.GetFilename(messageInfo, messageMedia, fromUser, properties, folder.Split("/")[^1], users);
customFileName = await _FileNameHelper.BuildFilename(filenameFormat, values);
Dictionary<string, string> values = await fileNameHelper.GetFilename(messageInfo, messageMedia, fromUser, properties, folder.Split("/")[^1], users);
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"))
{
@ -1312,7 +1312,7 @@ public class DownloadHelper : IDownloadHelper
{
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
@ -1336,14 +1336,14 @@ public class DownloadHelper : IDownloadHelper
Console.WriteLine($"An error occurred: {ex.Message}");
return false;
}
long size = await m_DBHelper.GetStoredFileSize(folder, media_id, api_type);
await m_DBHelper.UpdateMedia(folder, media_id, api_type, folder + path, customFileName + ".mp4", size, true, lastModified);
long size = await dbHelper.GetStoredFileSize(folder, media_id, api_type);
await dbHelper.UpdateMedia(folder, media_id, api_type, folder + path, customFileName + ".mp4", size, true, lastModified);
}
}
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);
}
else
@ -1397,11 +1397,11 @@ public class DownloadHelper : IDownloadHelper
{
properties.Add(match.Groups[1].Value);
}
Dictionary<string, string> values = await _FileNameHelper.GetFilename(messageInfo, messageMedia, fromUser, properties, folder.Split("/")[^1], users);
customFileName = await _FileNameHelper.BuildFilename(filenameFormat, values);
Dictionary<string, string> values = await fileNameHelper.GetFilename(messageInfo, messageMedia, fromUser, properties, folder.Split("/")[^1], users);
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"))
{
@ -1418,7 +1418,7 @@ public class DownloadHelper : IDownloadHelper
{
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
@ -1442,14 +1442,14 @@ public class DownloadHelper : IDownloadHelper
Console.WriteLine($"An error occurred: {ex.Message}");
return false;
}
long size = await m_DBHelper.GetStoredFileSize(folder, media_id, api_type);
await m_DBHelper.UpdateMedia(folder, media_id, api_type, folder + path, customFileName + ".mp4", size, true, lastModified);
long size = await dbHelper.GetStoredFileSize(folder, media_id, api_type);
await dbHelper.UpdateMedia(folder, media_id, api_type, folder + path, customFileName + ".mp4", size, true, lastModified);
}
}
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);
}
else
@ -1504,11 +1504,11 @@ public class DownloadHelper : IDownloadHelper
{
properties.Add(match.Groups[1].Value);
}
Dictionary<string, string> values = await _FileNameHelper.GetFilename(postInfo, postMedia, author, properties, folder.Split("/")[^1], users);
customFileName = await _FileNameHelper.BuildFilename(filenameFormat, values);
Dictionary<string, string> values = await fileNameHelper.GetFilename(postInfo, postMedia, author, properties, folder.Split("/")[^1], users);
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"))
{
@ -1525,7 +1525,7 @@ public class DownloadHelper : IDownloadHelper
{
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
@ -1549,14 +1549,14 @@ public class DownloadHelper : IDownloadHelper
Console.WriteLine($"An error occurred: {ex.Message}");
return false;
}
long size = await m_DBHelper.GetStoredFileSize(folder, media_id, api_type);
await m_DBHelper.UpdateMedia(folder, media_id, api_type, folder + path, customFileName + ".mp4", size, true, lastModified);
long size = await dbHelper.GetStoredFileSize(folder, media_id, api_type);
await dbHelper.UpdateMedia(folder, media_id, api_type, folder + path, customFileName + ".mp4", size, true, lastModified);
}
}
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);
}
else
@ -1609,11 +1609,11 @@ public class DownloadHelper : IDownloadHelper
{
properties.Add(match.Groups[1].Value);
}
Dictionary<string, string> values = await _FileNameHelper.GetFilename(postInfo, postMedia, author, properties, folder.Split("/")[^1], users);
customFileName = await _FileNameHelper.BuildFilename(filenameFormat, values);
Dictionary<string, string> values = await fileNameHelper.GetFilename(postInfo, postMedia, author, properties, folder.Split("/")[^1], users);
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"))
{
@ -1630,7 +1630,7 @@ public class DownloadHelper : IDownloadHelper
{
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
@ -1654,14 +1654,14 @@ public class DownloadHelper : IDownloadHelper
Console.WriteLine($"An error occurred: {ex.Message}");
return false;
}
long size = await m_DBHelper.GetStoredFileSize(folder, media_id, api_type);
await m_DBHelper.UpdateMedia(folder, media_id, api_type, folder + path, customFileName + ".mp4", size, true, lastModified);
long size = await dbHelper.GetStoredFileSize(folder, media_id, api_type);
await dbHelper.UpdateMedia(folder, media_id, api_type, folder + path, customFileName + ".mp4", size, true, lastModified);
}
}
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);
}
else
@ -1714,11 +1714,11 @@ public class DownloadHelper : IDownloadHelper
{
properties.Add(match.Groups[1].Value);
}
Dictionary<string, string> values = await _FileNameHelper.GetFilename(streamInfo, streamMedia, author, properties, folder.Split("/")[^1], users);
customFileName = await _FileNameHelper.BuildFilename(filenameFormat, values);
Dictionary<string, string> values = await fileNameHelper.GetFilename(streamInfo, streamMedia, author, properties, folder.Split("/")[^1], users);
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"))
{
@ -1735,7 +1735,7 @@ public class DownloadHelper : IDownloadHelper
{
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
@ -1759,14 +1759,14 @@ public class DownloadHelper : IDownloadHelper
Console.WriteLine($"An error occurred: {ex.Message}");
return false;
}
long size = await m_DBHelper.GetStoredFileSize(folder, media_id, api_type);
await m_DBHelper.UpdateMedia(folder, media_id, api_type, folder + path, customFileName + ".mp4", size, true, lastModified);
long size = await dbHelper.GetStoredFileSize(folder, media_id, api_type);
await dbHelper.UpdateMedia(folder, media_id, api_type, folder + path, customFileName + ".mp4", size, true, lastModified);
}
}
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);
}
else
@ -1821,11 +1821,11 @@ public class DownloadHelper : IDownloadHelper
{
properties.Add(match.Groups[1].Value);
}
Dictionary<string, string> values = await _FileNameHelper.GetFilename(postInfo, postMedia, fromUser, properties, folder.Split("/")[^1], users);
customFileName = await _FileNameHelper.BuildFilename(filenameFormat, values);
Dictionary<string, string> values = await fileNameHelper.GetFilename(postInfo, postMedia, fromUser, properties, folder.Split("/")[^1], users);
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"))
{
@ -1842,7 +1842,7 @@ public class DownloadHelper : IDownloadHelper
{
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
@ -1866,14 +1866,14 @@ public class DownloadHelper : IDownloadHelper
Console.WriteLine($"An error occurred: {ex.Message}");
return false;
}
long size = await m_DBHelper.GetStoredFileSize(folder, media_id, api_type);
await m_DBHelper.UpdateMedia(folder, media_id, api_type, folder + path, customFileName + ".mp4", size, true, lastModified);
long size = await dbHelper.GetStoredFileSize(folder, media_id, api_type);
await dbHelper.UpdateMedia(folder, media_id, api_type, folder + path, customFileName + ".mp4", size, true, lastModified);
}
}
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);
}
else
@ -1920,11 +1920,11 @@ public class DownloadHelper : IDownloadHelper
{
properties.Add(match.Groups[1].Value);
}
Dictionary<string, string> values = await _FileNameHelper.GetFilename(postInfo, postMedia, author, properties, folder.Split("/")[^1], users);
customFileName = await _FileNameHelper.BuildFilename(filenameFormat, values);
Dictionary<string, string> values = await fileNameHelper.GetFilename(postInfo, postMedia, author, properties, folder.Split("/")[^1], users);
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"))
{
@ -1941,7 +1941,7 @@ public class DownloadHelper : IDownloadHelper
{
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
@ -1965,14 +1965,14 @@ public class DownloadHelper : IDownloadHelper
Console.WriteLine($"An error occurred: {ex.Message}");
return false;
}
long size = await m_DBHelper.GetStoredFileSize(folder, media_id, api_type);
await m_DBHelper.UpdateMedia(folder, media_id, api_type, folder + path, customFileName + ".mp4", size, true, lastModified);
long size = await dbHelper.GetStoredFileSize(folder, media_id, api_type);
await dbHelper.UpdateMedia(folder, media_id, api_type, folder + path, customFileName + ".mp4", size, true, lastModified);
}
}
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);
}
else

View File

@ -26,6 +26,7 @@ namespace OF_DL.Helpers
Task<ArchivedCollection> GetArchived(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<SinglePaidMessageCollection> GetPaidMessage(string endpoint, string folder, IDownloadConfig config);
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<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 System.Text;
using Microsoft.Extensions.DependencyInjection;
using OF_DL.Helpers.Interfaces;
namespace OF_DL;
@ -31,12 +32,16 @@ public class Program
private static bool clientIdBlobMissing = false;
private static bool devicePrivateKeyMissing = false;
private readonly Entities.Config config;
private readonly IAuthHelper authHelper;
private readonly IServiceProvider serviceProvider;
private Auth? auth = null;
private static LoggingLevelSwitch levelSwitch = new LoggingLevelSwitch();
public Program(Entities.Config config)
public Program(Entities.Config config, IAuthHelper authHelper, IServiceProvider serviceProvider)
{
this.config = config;
this.authHelper = authHelper;
this.serviceProvider = serviceProvider;
}
private async Task LoadAuthFromBrowser()
@ -45,7 +50,6 @@ public class Program
try
{
AuthHelper authHelper = new();
Task setupBrowserTask = authHelper.SetupBrowser(runningInDocker);
Task.Delay(1000).Wait();
@ -140,6 +144,15 @@ public class Program
private static void ConfigureServices(IServiceCollection services, Entities.Config 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>();
}
@ -910,7 +923,7 @@ public class Program
}
//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");
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");
@ -1096,7 +1109,12 @@ public class Program
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);
}
@ -1168,7 +1186,12 @@ public class Program
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 paidMessagesCount = 0;
@ -1256,7 +1279,12 @@ public class Program
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);
}
@ -1306,7 +1334,12 @@ public class Program
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)
{
@ -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;
Dictionary<string, long> selectedUsers = new Dictionary<string, long>();