Greboca  

Suport technique et veille technologique

Aujourd’hui, les grandes entreprises et administrations publiques hésitent entre continuer à utiliser des logiciels propriétaires ou basculer vers les Logiciels Libres. Pourtant, la plupart des logiciels libres sont capables de bien traiter les données issues des logiciels propriétaire, et parfois avec une meilleur compatibilité.

C’est alors la barrière de la prise en main qui fait peur, et pourtant...

Les logiciels libres

L’aspect « Logiciel Libre » permet une évolution rapide et une plus grande participation des utilisateurs. Les aides et tutoriels foisonnent sur Internet ou sont directement inclus dans le logiciel lui-même.

Enfin, les concepteurs sont plus proches des utilisateurs, ce qui rend les logiciels libres plus agréable à utiliser et conviviaux.

Grâce à la disponibilité des logiciels libres, vous trouverez facilement des services de support techniques et la licence n’est plus un frein à l’utilisation de ces logiciels par votre personnel.

Notre support technique concerne essentiellement les logiciels libres, que ce soit sous forme de services ponctuels ou de tutoriels.

DLFP - Dépêches  -  get-tracks.sh : extraire des pistes d'un fichier audio

 -  Janvier 2022 - 

get-tracks.sh est un script qui extrait des morceaux de musique depuis un fichier audio. À partir d’un fichier audio (CD, livre audio, un mix quelconque…) et de la liste de lecture, retrouvez tous vos morceaux dans des fichiers séparés !

Objectif

Disons que vous ayez :

  1. un fichier audio contenant plusieurs morceaux de musique (comme un CD, un mix téléchargé sur le net ou même un livre audio dont vous aimeriez extraire les chapitres) ;
  2. la liste des plages audio et leur horodatage (quand chaque morceau démarre).

À partir de ces deux informations, vous pouvez extraire facilement vos plages ! ffmpeg fait très bien le travail, mais il lui manque une interface simple pour utilisateur, c’est exactement ce que fait get-tracks.sh.

Usage

Vous avez votre fichier audio, disons doom-eternal.opus, et la liste des morceaux de musique dans un fichier texte (doom-eternal.txt). Ce fichier ressemble à ceci :

0:00 DOOM Eternal
4:48 Hell on Earth
9:29 Deag Nilox - First Priest Death
10:14 Barging In
12:32 Demonic Corruption

À partir de ça, les morceaux sont extraits :

$ get-tracks.sh doom-eternal.opus doom-eternal.txt
$ ls
01 - DOOM Eternal.opus
02 - Hell on Earth.opus
03 - Deag Nilox - First Priest Death.opus
04 - Barging In.opus
05 - Demonic Corruption.opus

Configuration

Le comportement du script peut changer via quelques variables d’environnement.

Par exemple, si vous ne voulez pas le numéro du morceau dans le nom de fichier :

$ NONUMBER=1 get-tracks.sh doom-eternal.opus doom-eternal.txt
# Fichiers produits :
#   DOOM Eternal.opus
#   Hell on Earth.opus
#   ...

Si vous souhaitez les numéros, mais que vous voulez changer le séparateur (qui est par défaut -) :

$ SEPARATOR=". " get-tracks.sh doom-eternal.opus doom-eternal.txt
# Fichiers produits :
#   01. DOOM Eternal.opus
#   02. Hell on Earth.opus
#   ...

D’autres options sont possibles. Par exemple, il est possible de changer le format des fichiers générés, si vous préférez avoir des mp3 plutôt que opus (format libre avec une bonne compression). Allez voir la page du projet pour plus d’informations.

À l’intérieur

Ce simple script est écrit en sh : pas de basheries ou zsheries. Il a été testé sur Linux (Ubuntu et Alpine) et OpenBSD.

get-tracks.sh prend en compte des erreurs courantes de typographie dans l’horodatage des pistes, telles que l’on peut en trouver dans des commentaires en ligne. Par exemple, un commentaire en ligne peut nommer des plages en incluant des caractères qui ne sont pas acceptables pour des noms de fichier comme le caractère /, ou des caractères non affichables.

Contraintes de développement

Je me suis efforcé à produire un outil :

  • avec des technos très répandues (sh, sed, awk, xxd, ffmpeg) ;
  • avec le moins de complexité possible (pas de langage dynamique « simple » codé en plus d’un million de lignes de code comme Python) ;
  • le plus simple possible à maintenir (chose réussie, en n’utilisant que des langages quasi gravés dans le marbre).

Le programme iconv n’est pas appelé, la suppression ou la modification des caractères UTF-8 non acceptables est faite à la main via xxd, sed et awk. Cela permet de ne pas dépendre de cet outil qui, au fond, ne nous est pas indispensable.

Pourquoi ?

Pourquoi avoir fait cet outil avec ces contraintes ? Pour voir où on pouvait aller avec des outils de base du système. J’ai utilisé des programmes qui sont sur nos ordinateurs depuis des décennies et qui répondent pourtant, encore et toujours, à des besoins actuels.

Je pense que le code peut servir d’exemple pour des développeurs débutants : il est très simple (en sh, awk, sed, et xxd), il y a un peu de gestion d’erreurs et je bidouille à la main du code UTF-8 (suppression des caractères qui nous gênent).

J’utilise régulièrement ce script, et je pense qu’il était temps que je le diffuse. Selon moi il peut servir à un paquet de gens.

Si vous voyez des améliorations possibles, n’hésitez pas à m’en faire part ou à contribuer ! Le code peut être compris même par des novices.

Commentaires : voir le flux Atom ouvrir dans le navigateur

par karchnu, Ysabeau, Yves Bourguignon, vmagnin

DLFP - Dépêches

LinuxFr.org

Entretien avec GValiente à propos de Butano

 -  16 avril - 

GValiente développe un SDK pour créer des jeux pour la console Game Boy Advance : Butano.Cet entretien revient sur son parcours et les raisons (...)


Nouveautés d'avril 2024 de la communauté Scenari

 -  11 avril - 

Scenari est un ensemble de logiciels open source dédiés à la production collaborative, publication et diffusion de documents multi-support. Vous (...)


Annuaire de projets libres (mais pas de logiciels)

 -  9 avril - 

Les communs sont une source énorme de partage !S’il est plutôt facile dans le monde francophone de trouver des ressources logicielles (Merci (...)


Les enchères en temps réel, un danger pour la vie privée mais aussi pour la sécurité européenne

 -  7 avril - 

Les enchères en temps réel, ou Real-Time Bidding (RTB), sont une technologie publicitaire omniprésente sur les sites web et applications mobiles (...)


XZ et liblzma: Faille de sécurité volontairement introduite depuis au moins deux mois

 -  31 mars - 

Andres Freund, un développeur Postgres, s’est rendu compte dans les derniers jours que xz et liblzma ont été corrompus par l’un des mainteneurs du (...)