Media download and object storage #9

Closed
opened 2026-06-13 14:57:40 +00:00 by foresle · 0 comments
Owner

Download attachments and store them in object storage. Part of ingestion, but a distinct module.

Scope:

  • For each attached file, download only when its size is at or below a single configurable threshold, applied uniformly to every type (photo, video, document, animation). Skip larger files. Proposed default threshold is 50 MB.
  • Identify each file by a hash of its contents and store it under a sharded path derived from the hexadecimal hash: /ab/cd/ef/<full-hex-hash>.<ext>, where the first three two-character segments are the leading characters of the hash and the file name is the full hash with the original extension.
  • Upload to a public-read bucket in the existing Garage instance, reached over a configurable S3-compatible endpoint.
  • Store only the object reference and metadata in SQLite, never the file contents. A configured public base URL lets feed items link media directly.
Download attachments and store them in object storage. Part of ingestion, but a distinct module. Scope: - For each attached file, download only when its size is at or below a single configurable threshold, applied uniformly to every type (photo, video, document, animation). Skip larger files. Proposed default threshold is 50 MB. - Identify each file by a hash of its contents and store it under a sharded path derived from the hexadecimal hash: `/ab/cd/ef/<full-hex-hash>.<ext>`, where the first three two-character segments are the leading characters of the hash and the file name is the full hash with the original extension. - Upload to a public-read bucket in the existing Garage instance, reached over a configurable S3-compatible endpoint. - Store only the object reference and metadata in SQLite, never the file contents. A configured public base URL lets feed items link media directly.
foresle added this to the 0.1.0 milestone 2026-06-13 14:57:40 +00:00
foresle self-assigned this 2026-06-13 14:57:40 +00:00
foresle added this to the Developing project 2026-06-13 14:57:40 +00:00
foresle added the due date 2026-06-28 2026-06-26 23:57:07 +00:00
foresle added reference dev 2026-06-27 11:04:53 +00:00
foresle stopped working 2026-06-27 11:16:48 +00:00
11 minutes 50 seconds
foresle stopped working 2026-06-27 13:14:24 +00:00
1 hour 35 minutes
foresle stopped working 2026-06-27 14:22:00 +00:00
8 minutes 44 seconds
foresle stopped working 2026-06-27 17:10:37 +00:00
1 hour 39 minutes
foresle added spent time 2026-06-27 19:27:04 +00:00
1 hour
foresle stopped working 2026-06-27 20:05:37 +00:00
38 minutes 31 seconds
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Total time spent: 5 hours 14 minutes
foresle
5 hours 14 minutes
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

2026-06-28

Reference
foresle/notgram#9
No description provided.