Linux things 🐧

un blog sur les technologies des logiciels libres et autres digressions

Gibson : RSS et S3

un blog en Go

Thu, 30 May 2024 19:20:50 +0200
# blog   # gibson   # golang  

RSS

Comme vous pouvez le voir à droite j’ai finalement bien implémenté ce pourquoi je me suis lancé dans ce projet. Ma volonté était de pouvoir lire un flux RSS, l’afficher sur mon blog et le rafraichir régulièrement.
Évidement Go se prête facilement à ce genre de tâche grâce aux goroutine. Elle va reparser le flux périodiquement selon la configuration définie dans le fichier de configuration gibson.toml.

S3

Tant qu’à faire de la feature, j’ai eu l’idée d’ajouter le support du block storage S3 et compatibles, comme le fournisseur S3 Scaleway.
L’idée est de pouvoir y stocker par exemple des vidéos et que le blog puisse les récupérer et les afficher.
J’ai reproduis le code de mon projet Gobee en intégrant dans une goroutine un serveur web Echo. Ce dernier récupère la vidéo sur le S3, la copie dans un répertoire défini par l’utilisateur et fait office de serveur interne au lecteur video JS.

Dans un deuxième temps j’essayerais de lire directement le fichier depuis S3 pour ne rien stocker, mais la gestion des Ranges (nécessaires pour avancer et reculer) avec le client Minio semble complexe. De plus cela risque d’exploser les frais de bande passante facturés par certains fournisseurs (exemple les frais de sortie AWS).

Voici un exemple de vidéo stockée dans mon bucket S3 :


Le code HTML à mettre dans le fichier markdown, l’URL dans la balise <source src doit commencer par /s3/

<video
    id="my-video"
    class="video-js"
    controls
    preload="auto"
    width="640"
    height="264"
    data-setup="{}"
  >
    <source src="/s3/Blender-4.0-Reel-1080p.mp4" type="video/mp4" />

    <p class="vjs-no-js">
      To view this video please enable JavaScript, and consider upgrading to a
      web browser that
      <a href="https://videojs.com/html5-video-support/" target="_blank">supports HTML5 video</a>
    </p>
</video>


Évidement l’usage de S3 n’est pas une obligation et vous pouvez stocker des vidéos dans le répertoire static/videos


<video
   id="my-video"
   class="video-js"
   controls
   preload="auto"
   width="640"
   height="264"
   data-setup="{}"
 >
   <source src="/static/videos/tmp.mp4" type="video/mp4" />

   <p class="vjs-no-js">
     To view this video please enable JavaScript, and consider upgrading to a
     web browser that
     <a href="https://videojs.com/html5-video-support/" target="_blank">supports HTML5 video</a>
   </p>
</video>