Script m3utospl

Description

m3utospl a pour but de transformer une liste de lecture au format m3u dans le format spl. Tout comme mp3cover et mp3resample, il peut servir pour transformer des fichiers mp3 pour les rendre plus pratiques à utiliser sur un lecteur mp3 comme le YP-P2 de Samsung.

Téléchargement

Télécharger m3utospl

m3utospl est distribué sous licence libre CeCILL.

Installation

Une fois le fichier téléchargé, vous devez

Ce logiciel nécessite l'utilisation de l'utilitaire unix2dos, installable sous Ubuntu ou Debian par

sudo aptitude install tofrodos

Aide en ligne

$ m3utospl -h

Usage : m3utospl fichier.m3u [rep_local] [rep_lect]
        m3utospl -h

Transforme une liste de lecture fichier.m3u en un format fichier.spl, compatible
avec certains lecteurs mp3.

Le fichier fichier.m3u n'est pas modifié. Dans le fichier spl, le répertoire
racine des fichiers musicaux sur l'ordinateur rep_local est remplacé par son
équivalent sur le lecteur mp3 rep_lect.
Les séparateurs de répertoires sont transformés en séparateurs Windows \, le
fichier spl est encodé en UTF-16 et les retours à la ligne sont transformés
grâce à l'utilitaire unix2dos qui doit donc être installé.

Valeurs actuelles par défaut :
rep_local : /home/musique/
rep_lect : /music/

Transcript

#!/bin/bash

# This software is governed by the CeCILL license under French law and
# abiding by the rules of distribution of free software.  You can  use, 
# modify and/ or redistribute the software under the terms of the CeCILL
# license as circulated by CEA, CNRS and INRIA at the following URL
# "http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt".
# 
# Ce logiciel est régi par la licence CeCILL soumise au droit français et
# respectant les principes de diffusion des logiciels libres. Vous pouvez
# utiliser, modifier et/ou redistribuer ce programme sous les conditions
# de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA 
# à l'adresse "http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt".
# 
# Copyright Cyril Ravat, <ravat@free.fr> (2007-2009)
# Website : http://www.cyril-ravat.fr/scripts/mp3utospl.php
# Help : m3utospl -h

# Répertoire "racine" des fichiers musicaux sur l'ordinateur
REP_LOCAL="/home/musique/"
# Répertoire "racine" des fichiers musicaux sur le lecteur mp3
REP_LECT="/music/"

if [ "$1" == "-h" ]; then
  echo -e "Usage : $(basename "$0") \033[1mfichier.m3u\033[0m [\033[1mrep_local\033[0m] [\033[1mrep_lect\033[0m]"
  echo "        $(basename "$0") -h"
  echo
  echo -e "Transforme une liste de lecture \033[1mfichier.m3u\033[0m en un format fichier.spl, compatible"
  echo -e "avec certains lecteurs mp3."
  echo
  echo -e "Le fichier \033[1mfichier.m3u\033[0m n'est pas modifié. Dans le fichier spl, le répertoire"
  echo -e "racine des fichiers musicaux sur l'ordinateur \033[1mrep_local\033[0m est remplacé par son"
  echo -e "équivalent sur le lecteur mp3 \033[1mrep_lect\033[0m."
  echo "Les séparateurs de répertoires sont transformés en séparateurs Windows \, le"
  echo "fichier spl est encodé en UTF-16 et les retours à la ligne sont transformés"
  echo -e "grâce à l'utilitaire \033[1munix2dos\033[0m qui doit donc être installé."
  echo
  echo "Valeurs actuelles par défaut :"
  echo -e "\033[1mrep_local\033[0m : $REP_LOCAL"
  echo -e "\033[1mrep_lect\033[0m : $REP_LECT"
  echo 
  exit 0
fi

# Vérifications de l'existence du fichier mp3 et de unix2dos
[ ! -e "$1" ] && echo "Le fichier $1 n'existe pas." && exit 1
if [ -z `which unix2dos` ]; then
  echo -e "L'utilitaire \033[1munix2dos\033[0m n'existe pas. Il faut installer le paquet \033[1mtofrodos\033[0m."
  exit 1
fi

# Définition des variables
PLAYLIST="${1%.m3u}.spl"
TMP=/tmp/$RANDOM
[ -n "$2" ] && REP_LOCAL="$2"
[ -n "$3" ] && REP_LECT="$3"
REP_LOCAL=$(echo "${REP_LOCAL%/}/" | tr '/' '|')
REP_LECT=$(echo "${REP_LECT%/}/" | tr '/' '|')

# Dans fichier.spl, l'entête, le corps et le pied de liste
echo -e "SPL PLAYLIST\nVERSION 1.00\n" > "$PLAYLIST"
cat "$1" >> "$PLAYLIST"
echo -ne "\n\nEND PLAYLIST" >> "$PLAYLIST"

# Remplacement des répertoires
sed -i "s/\//|/g ; s/$REP_LOCAL/$REP_LECT/ ; s/|/\\\\/g" "$PLAYLIST"

# Transformations 
unix2dos "$PLAYLIST"
iconv -f latin1 -t utf16 "$PLAYLIST" > $TMP
mv $TMP "$PLAYLIST"