Official Landing Page https://www.gnusocial.rocks/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

99 lines
4.4 KiB

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=0.86, maximum-scale=5.0, minimum-scale=0.86">
  6. <link rel="shortcut icon" href="/favicon.ico">
  7. <link rel="stylesheet" href="https://www.gnusocial.rocks//assets/css/reset.css">
  8. <link rel="stylesheet" href="https://www.gnusocial.rocks//assets/css/blog.css">
  9. <link rel='stylesheet' type='text/css' href="https://www.gnusocial.rocks//assets/fonts/opensans/opensans.css">
  10. </head><title>Milestone: Port Media handling from v2 - GNU social V3</title>
  11. </head><body>
  12. <header>
  13. <div class="home-menu menu menu-horizontal menu-fixed">
  14. <a class="menu-heading" href="https://gnusocial.rocks/">
  15. <img src="../assets/img/gnu-social-logo-invert.svg" alt="GNU social">
  16. <b>gnu</b>social
  17. </a>
  18. </div>
  19. <div class="sidebar">
  20. <ul class="menu-list">
  21. <li class="menu-item menu-selected"><a href="index.html" class="menu-link">Blog Index</a></li>
  22. <li class="menu-item"><a href="https://code.gnusocial.rocks/" class="menu-link">Repository</a></li>
  23. <li class="menu-item"><a href="https://coverage.gnusocial.rocks/" class="menu-link">Code Coverage</a></li>
  24. <li class="menu-item"><a href="https://docs.gnusocial.rocks/" class="menu-link">Documentation</a></li>
  25. <li class="menu-item"><a href="https://agile.gnusocial.rocks/" class="menu-link">Wiki</a></li>
  26. <li class="menu-item"><a href="https://kanban.undefinedhackers.net/?controller=BoardViewController&action=readonly&token=d2293e55cabae7cceff9fb496c651328195357d392b9e61a9f229ed6d463" class="menu-link">Roadmap</a></li>
  27. </ul>
  28. </div>
  29. </header>
  30. <div class="content-wrapper">
  31. <div class="content">
  32. </div></div></div>
  33. <div id="template-wrapper"><div class="template-unit">
  34. <!-- entry begin -->
  35. <h3><a class="ablack" href="milestone-port-media-handling-from-v2.html">
  36. Milestone: Port Media handling from v2
  37. </a></h3>
  38. <!-- bashblog_timestamp: #202105031337.42# -->
  39. <div class="subtitle">May 03, 2021 &mdash;
  40. GNU social development team
  41. </div>
  42. <!-- text begin -->
  43. <p><strong><a href="https://agile.gnusocial.rocks/doku.php?id=milestones:attachment_media_embed_handling">>WIKI Milestone entry</a></strong></p>
  44. <p>File Storage in GNU social is used for avatars, for notes containing
  45. attachments, and for notes containing links (in which case is an Embed preview).
  46. Notes can be created by local users or fetched from remote actors. Filehash is
  47. used to reduce file duplication.</p>
  48. <p>When a user shares a Link that uses OpenGraph tags or has an OEmbed provider,
  49. the <a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/plugins/Embed">Embed plugin</a> generates a preview for it that may contain a thumbnail.</p>
  50. <p>When a user shares a Link to an image, the <a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/plugins/StoreRemoteMedia">StoreRemoteMedia plugin</a> can fetch the
  51. file and make it available as an attachment, and will generate a thumbnail.</p>
  52. <p>When an image, video, or other file type is uploaded or retrieved, an Attachment
  53. entity is created. When a thumbnail is requested, one is generated if an
  54. EncoderPlugin that supports the mime type is available.</p>
  55. <p>There are two EncoderPlugins implemented:</p>
  56. <ul>
  57. <li><a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/plugins/ImageEncoder">ImageEncoder</a>: Allows to compress, validate, rescale, and sanitize images using VIPS.</li>
  58. <li><a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/plugins/VideoEncoder">VideoEncoder</a>: Allows to rescale gifs using FFMpeg.</li>
  59. </ul>
  60. <p>Another helpful plugin is <a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/plugins/FileQuota">FileQuota</a> which ensures a user stays under the file quota.</p>
  61. <h2>How is the code organised?</h2>
  62. <p>There are various entities related to attachment and thumbnail handling.
  63. The key ones are:</p>
  64. <ul>
  65. <li><a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/src/Entity/Attachment.php">Attachment</a></li>
  66. <li><a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/src/Entity/AttachmentThumbnail.php">AttachmentThumbnail</a></li>
  67. </ul>
  68. <p>The plugins are able to act by means of the Events system, as elaborated in the
  69. <a href="https://docs.gnusocial.rocks/developer/storage.html">documentation</a>.</p>
  70. <!-- text end -->
  71. <!-- entry end -->
  72. </div>
  73. </div></div>
  74. </div>
  75. </div></body></html>