Forums

Skip to content

Advanced search
  • Quick links
    • Unanswered topics
    • Active topics
    • Search
  • FAQ
  • Login
  • Register
  • Board index International Gentoo Users French
  • Search

[Script] Telecharger les fichiers d'une playlist

Forum dédié aux utilisateurs francophones de Gentoo. Retrouvez aussi Gentoo Linux en français sur le wiki!

Moderators: xaviermiller, El_Goretto

Post Reply
  • Print view
Advanced search
1 post • Page 1 of 1
Author
Message
bob1977
Guru
Guru
User avatar
Posts: 387
Joined: Tue Mar 16, 2004 1:14 pm

[Script] Telecharger les fichiers d'une playlist

  • Quote

Post by bob1977 » Mon May 01, 2006 2:21 pm

salut à tous,

Etant addict de jamendo ( http://www.jamendo.com/fr/ ), j'ai fait un petit script qui me permette de telecharger les fichiers d'une playlist puis de les jouer dans xmms. Ca m'évite d'ecouter puis de retelecharger à chaque nouvelle écoute et en plus, je peux sauter des passages dans la musique.
Il y a en fait 2 scripts:
- Le script principal qui telecharge la playlist(m3u ou pls) ou un fichier quelconque dans un repertoire precisé dans le script. Si ce repertoire depasse une certaine taille, les fichiers les plux vieux sont supprimés. Ce script utilise wget et mplayer pour recuperer les fichiers.
- Le script specifique xmms que j'appelle dans firefox pour ouvrir les playlists. Voici ce script:
~/bin/playlist/xmms_download.sh

Code: Select all

#! /bin/sh

# Telecharge  le fichier ou l'ensemble des fichiers de la playlist passée en paramètre et les ouvre avec xmms des qu'ils sont telecharges

#arg 1 : la playlist ou le fichier

~/bin/playlist/download.sh "${1}" "xmms  -e";

Et maintenant le script principal:
~/bin/playlist/download.sh

Code: Select all

#! /bin/bash

# Telecharge un mp3 ou une playlist de type m3u ou pls dans le repertoire de destination precise par la variable "dir".

#arg 1 : la playlist ou le fichier
#arg 2 optionnel: la commande pour ouvrir ce(s) fichier(s)  à chaque fois qu'un est fini de telecharger

# Taille maximale du répertoire en Mega Octets. Si elle est dépassée, les fichiers sont supprimés à la fin du script. max_size=1000 par defaut (1 Giga octet)
#les sous repertoires ne sont pas pris en compte dans le decompte de la taille
max_size=1000;

# Repertoire ou sont stockés les fichiers téléchargés
dir="/opt/download/net/download";

# fichier pour ecrire temporairement la liste des fichiers à telecharger
tmp="/home/bob/download_tmp`date '+%s'`";
#echo ${tmp};
dir="/opt/download/net/download";


# écrit la liste des fichiers d'une playlist m3u
#arg 1 : la playlist
#arg 2 optionnel: écrit dans le fichier passé en argument 2
function m3u ()
{
    if [ $# == 2 ];
	then
	{
	    #echo "On ecrira dans ${2}";
	    cat ${1} | grep -v "#" > ${2};
	}
    else
	{
	    #echo "On affichera";
	    cat ${1} | grep -v "#";
	}
    fi

}

# écrit la liste des fichiers d'une playlist pls
#arg 1 : la playlist
#arg 2 optionnel: écrit dans le fichier passé en argument 2
function  pls ()
{
    if [ $# == 2 ];
	then
	{
	    #echo "On ecrira dans ${2}";
	    cat ${1} | grep File|cut -d= -f 2  > ${2};
	}
    else
	{
            #echo "On affichera";
	    cat ${1} | grep File|cut -d= -f 2;
	}
    fi
}




#on veut recuperer le nom du fichier 
l=(`dirname "${1}"|wc -c`); #nb de caracteres de l'adresse
#echo ${l};
l=$(expr $l + 1);
#echo ${l};
nom=`echo ${1}|cut -b ${l}-`;
#echo ${nom};

ext=`echo ${nom} | cut -d. -f 2`;
#echo ${ext};

case  "${ext}"  in
    "m3u") 
	#~/bin/playlist/m3u.sh "${1}" ${tmp};;
	m3u "${1}" ${tmp};;
    "pls") 
	#~/bin/playlist/pls.sh "${1}" ${tmp};;
	pls "${1}" ${tmp};;
    *) #on suppose que ce n'est pas une playlist
	#echo "fichier simple";
	echo "${1}"> ${tmp};;
esac

#cat ${tmp};

#maintenant on telecharge les fichiers un par un ( pas simultanement)
n=`cat ${tmp}|wc -l`; #nb de fichiers à telecharger

for ((i=1; i<=n;i++)) do
{
    fic=`cat ${tmp} | head -n ${i} |tail -1 `; # le i-eme fichier à telecharger
    l=(`dirname "${fic}"|wc -c`); #nb de caracteres de l'adresse
    l=$(expr $l + 1);
    nom=`echo ${fic}|cut -b ${l}-`; #nom du fichier sans l'adresse
    dest="${dir}/${nom}"; #chemin complet du fichier de destination
    #on verifie si le fichier existe
    if [ -a ${dest} ];
	then
	{ #On indexe le fichier par le nb de secondes écoulées depuis 1970
	    dest="${dir}/`date '+%s'-`${nom}";
	    #echo ${dest};
	}
    fi
    #echo "On lance wget";
    #`wget -nv -o ${dir}/wget.log -O ${dest} ${fic}`;
    taille_avant=`du  --max-depth=0 ${dir} | cut  -f 1`;
    protocole=`echo ${fic} | cut -d/ -f 1`;
    echo "protocole=${protocole}";
    case "${protocole}" in
	"http:")
	    echo "on utilise wget";
	    wget -q  -O ${dest} ${fic};;
	    
	"mms:")
	    echo "on utilise mplayer"
	    mplayer -dumpstream -dumpfile "${dest}" "${fic}";;
	    
	*) echo "Le protocole ${protocole} est inconnu";;
    esac
    taille_apres=`du  --max-depth=0 ${dir} | cut  -f 1`;
    #echo "C'est fait";
    if [ $taille_avant -eq $taille_apres ];
	then
	{
	    echo "erreur dans le telechargement";
	    
	}
    else
	{
	    echo "telechargement OK";	    
            #on lance la commande passée en argument
	    if [ $# == 2 ];
		then
		${2} "${dest}";
	    fi
	}
    fi
}
done

rm ${tmp};

#taille=`du -m --max-depth=0 ${dir} | cut  -f 1`;
#taille=$(expr $taille );
#echo ${taille};

# on supprime les fichiers les + vieux si la taille du repertoire sans ses sous-repertoires depasse max_size defini au debut du script
while [ `du -m --max-depth=0 ${dir} |cut  -f 1` -ge $max_size ]; do
  {
      
      f=`ls ${dir} -t -u |tail -1`;
      echo "on supprime ${f}";
      rm ${f};
  }
done;
#echo "fini";

Si vous voulez des précision ou voyez des améliorations possibles, n'hesitez pas a m'en faire part.

PS: C'est mon premier vrai script, il y a donc certainement pas mal de choses qui auraient pu etre faites de maniere plus elegante ou plus rapide :wink:
Top
Post Reply
  • Print view
1 post • Page 1 of 1

Return to “French”

Jump to
  • Assistance
  • ↳   News & Announcements
  • ↳   Frequently Asked Questions
  • ↳   Installing Gentoo
  • ↳   Multimedia
  • ↳   Desktop Environments
  • ↳   Networking & Security
  • ↳   Kernel & Hardware
  • ↳   Portage & Programming
  • ↳   Gamers & Players
  • ↳   Other Things Gentoo
  • ↳   Unsupported Software
  • Discussion & Documentation
  • ↳   Documentation, Tips & Tricks
  • ↳   Gentoo Chat
  • ↳   Gentoo Forums Feedback
  • ↳   Duplicate Threads
  • International Gentoo Users
  • ↳   中文 (Chinese)
  • ↳   Dutch
  • ↳   Finnish
  • ↳   French
  • ↳   Deutsches Forum (German)
  • ↳   Diskussionsforum
  • ↳   Deutsche Dokumentation
  • ↳   Greek
  • ↳   Forum italiano (Italian)
  • ↳   Forum di discussione italiano
  • ↳   Risorse italiane (documentazione e tools)
  • ↳   Polskie forum (Polish)
  • ↳   Instalacja i sprzęt
  • ↳   Polish OTW
  • ↳   Portuguese
  • ↳   Documentação, Ferramentas e Dicas
  • ↳   Russian
  • ↳   Scandinavian
  • ↳   Spanish
  • ↳   Other Languages
  • Architectures & Platforms
  • ↳   Gentoo on ARM
  • ↳   Gentoo on PPC
  • ↳   Gentoo on Sparc
  • ↳   Gentoo on Alternative Architectures
  • ↳   Gentoo on AMD64
  • ↳   Gentoo for Mac OS X (Portage for Mac OS X)
  • Board index
  • All times are UTC
  • Delete cookies

© 2001–2026 Gentoo Authors
Gentoo is a trademark of the Gentoo Foundation, Inc. and of Förderverein Gentoo e.V.
The contents of this document, unless otherwise expressly stated, are licensed under the CC-BY-SA-4.0 license.
The Gentoo Name and Logo Usage Guidelines apply.

Powered by phpBB® Forum Software © phpBB Limited

Privacy Policy