mirror of
https://github.com/chylex/Discord-History-Tracker.git
synced 2025-04-14 07:37:13 +03:00
Track dimensions of image attachments
This commit is contained in:
parent
6837b05b0d
commit
bbc734ba9b
@ -251,6 +251,11 @@ const STATE = (function() {
|
|||||||
mapped.type = attachment.content_type;
|
mapped.type = attachment.content_type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (attachment.width && attachment.height) {
|
||||||
|
mapped.width = attachment.width;
|
||||||
|
mapped.height = attachment.height;
|
||||||
|
}
|
||||||
|
|
||||||
return mapped;
|
return mapped;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -240,11 +240,14 @@ const DISCORD = (function() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return value.map(attachment => {
|
return value.map(attachment => {
|
||||||
if (DISCORD.isImageAttachment(attachment) && SETTINGS.enableImagePreviews) {
|
if (!DISCORD.isImageAttachment(attachment) || !SETTINGS.enableImagePreviews) {
|
||||||
return templateEmbedImage.apply({ url: attachment.url, src: attachment.url });
|
return templateAttachmentDownload.apply(attachment);
|
||||||
|
}
|
||||||
|
else if ("width" in attachment && "height" in attachment) {
|
||||||
|
return templateEmbedImageWithSize.apply({ url: attachment.url, src: attachment.url, width: attachment.width, height: attachment.height });
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return templateAttachmentDownload.apply(attachment);
|
return templateEmbedImage.apply({ url: attachment.url, src: attachment.url });
|
||||||
}
|
}
|
||||||
}).join("");
|
}).join("");
|
||||||
}
|
}
|
||||||
|
@ -5,5 +5,7 @@ namespace DHT.Server.Data {
|
|||||||
public string? Type { get; internal init; }
|
public string? Type { get; internal init; }
|
||||||
public string Url { get; internal init; }
|
public string Url { get; internal init; }
|
||||||
public ulong Size { get; internal init; }
|
public ulong Size { get; internal init; }
|
||||||
|
public int? Width { get; internal init; }
|
||||||
|
public int? Height { get; internal init; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -166,9 +166,18 @@ namespace DHT.Server.Database.Export {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!message.Attachments.IsEmpty) {
|
if (!message.Attachments.IsEmpty) {
|
||||||
obj["a"] = message.Attachments.Select(attachment => new Dictionary<string, object> {
|
obj["a"] = message.Attachments.Select(attachment => {
|
||||||
{ "url", strategy.GetAttachmentUrl(attachment) },
|
var a = new Dictionary<string, object> {
|
||||||
{ "name", Uri.TryCreate(attachment.Url, UriKind.Absolute, out var uri) ? Path.GetFileName(uri.LocalPath) : attachment.Url }
|
{ "url", strategy.GetAttachmentUrl(attachment) },
|
||||||
|
{ "name", Uri.TryCreate(attachment.Url, UriKind.Absolute, out var uri) ? Path.GetFileName(uri.LocalPath) : attachment.Url }
|
||||||
|
};
|
||||||
|
|
||||||
|
if (attachment.Width != null && attachment.Height != null) {
|
||||||
|
a["width"] = attachment.Width;
|
||||||
|
a["height"] = attachment.Height;
|
||||||
|
}
|
||||||
|
|
||||||
|
return a;
|
||||||
}).ToArray();
|
}).ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@ using DHT.Utils.Logging;
|
|||||||
|
|
||||||
namespace DHT.Server.Database.Sqlite {
|
namespace DHT.Server.Database.Sqlite {
|
||||||
sealed class Schema {
|
sealed class Schema {
|
||||||
internal const int Version = 4;
|
internal const int Version = 5;
|
||||||
|
|
||||||
private static readonly Log Log = Log.ForType<Schema>();
|
private static readonly Log Log = Log.ForType<Schema>();
|
||||||
|
|
||||||
@ -79,7 +79,9 @@ namespace DHT.Server.Database.Sqlite {
|
|||||||
name TEXT NOT NULL,
|
name TEXT NOT NULL,
|
||||||
type TEXT,
|
type TEXT,
|
||||||
url TEXT NOT NULL,
|
url TEXT NOT NULL,
|
||||||
size INTEGER NOT NULL)");
|
size INTEGER NOT NULL,
|
||||||
|
width INTEGER,
|
||||||
|
height INTEGER)");
|
||||||
|
|
||||||
Execute(@"CREATE TABLE embeds (
|
Execute(@"CREATE TABLE embeds (
|
||||||
message_id INTEGER NOT NULL,
|
message_id INTEGER NOT NULL,
|
||||||
@ -159,6 +161,12 @@ namespace DHT.Server.Database.Sqlite {
|
|||||||
perf.Step("Upgrade to version 4");
|
perf.Step("Upgrade to version 4");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (dbVersion <= 4) {
|
||||||
|
Execute("ALTER TABLE attachments ADD width INTEGER");
|
||||||
|
Execute("ALTER TABLE attachments ADD height INTEGER");
|
||||||
|
perf.Step("Upgrade to version 5");
|
||||||
|
}
|
||||||
|
|
||||||
perf.End();
|
perf.End();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -252,7 +252,9 @@ namespace DHT.Server.Database.Sqlite {
|
|||||||
("name", SqliteType.Text),
|
("name", SqliteType.Text),
|
||||||
("type", SqliteType.Text),
|
("type", SqliteType.Text),
|
||||||
("url", SqliteType.Text),
|
("url", SqliteType.Text),
|
||||||
("size", SqliteType.Integer)
|
("size", SqliteType.Integer),
|
||||||
|
("width", SqliteType.Integer),
|
||||||
|
("height", SqliteType.Integer)
|
||||||
});
|
});
|
||||||
|
|
||||||
using var embedCmd = conn.Insert("embeds", new[] {
|
using var embedCmd = conn.Insert("embeds", new[] {
|
||||||
@ -307,6 +309,8 @@ namespace DHT.Server.Database.Sqlite {
|
|||||||
attachmentCmd.Set(":type", attachment.Type);
|
attachmentCmd.Set(":type", attachment.Type);
|
||||||
attachmentCmd.Set(":url", attachment.Url);
|
attachmentCmd.Set(":url", attachment.Url);
|
||||||
attachmentCmd.Set(":size", attachment.Size);
|
attachmentCmd.Set(":size", attachment.Size);
|
||||||
|
attachmentCmd.Set(":width", attachment.Width);
|
||||||
|
attachmentCmd.Set(":height", attachment.Height);
|
||||||
attachmentCmd.ExecuteNonQuery();
|
attachmentCmd.ExecuteNonQuery();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -571,7 +575,7 @@ FROM downloads");
|
|||||||
var dict = new MultiDictionary<ulong, Attachment>();
|
var dict = new MultiDictionary<ulong, Attachment>();
|
||||||
|
|
||||||
using var conn = pool.Take();
|
using var conn = pool.Take();
|
||||||
using var cmd = conn.Command("SELECT message_id, attachment_id, name, type, url, size FROM attachments");
|
using var cmd = conn.Command("SELECT message_id, attachment_id, name, type, url, size, width, height FROM attachments");
|
||||||
using var reader = cmd.ExecuteReader();
|
using var reader = cmd.ExecuteReader();
|
||||||
|
|
||||||
while (reader.Read()) {
|
while (reader.Read()) {
|
||||||
@ -582,7 +586,9 @@ FROM downloads");
|
|||||||
Name = reader.GetString(2),
|
Name = reader.GetString(2),
|
||||||
Type = reader.IsDBNull(3) ? null : reader.GetString(3),
|
Type = reader.IsDBNull(3) ? null : reader.GetString(3),
|
||||||
Url = reader.GetString(4),
|
Url = reader.GetString(4),
|
||||||
Size = reader.GetUint64(5)
|
Size = reader.GetUint64(5),
|
||||||
|
Width = reader.IsDBNull(6) ? null : reader.GetInt32(6),
|
||||||
|
Height = reader.IsDBNull(7) ? null : reader.GetInt32(7)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -61,7 +61,9 @@ namespace DHT.Server.Endpoints {
|
|||||||
Name = ele.RequireString("name", path),
|
Name = ele.RequireString("name", path),
|
||||||
Type = ele.HasKey("type") ? ele.RequireString("type", path) : null,
|
Type = ele.HasKey("type") ? ele.RequireString("type", path) : null,
|
||||||
Url = ele.RequireString("url", path),
|
Url = ele.RequireString("url", path),
|
||||||
Size = (ulong) ele.RequireLong("size", path)
|
Size = (ulong) ele.RequireLong("size", path),
|
||||||
|
Width = ele.HasKey("width") ? ele.RequireInt("width", path) : null,
|
||||||
|
Height = ele.HasKey("height") ? ele.RequireInt("height", path) : null
|
||||||
}).DistinctByKeyStable(static attachment => {
|
}).DistinctByKeyStable(static attachment => {
|
||||||
// Some Discord messages have duplicate attachments with the same id for unknown reasons.
|
// Some Discord messages have duplicate attachments with the same id for unknown reasons.
|
||||||
return attachment.Id;
|
return attachment.Id;
|
||||||
|
BIN
app/empty.dht
BIN
app/empty.dht
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user