Récupérer les paroles d’une musique (.mp3, .m4a) et l’enregistrer sous Linux
Bonjour à tous, aujourd’hui nous allons voir un petit script bash bien sympathique qui permet de récupérer tous les fichiers musicaux (.mp3, .m4a ou d’autres – il suffit de les ajouter dans le script-) et d’y ajouter les paroles des chansons. Tout d’abord, nous devons nous assuré de disposer de wget et eyed3 Si vous êtes sur une distribution basé sur debian (ubuntu, elementary os, linux mint, etc …) sudo apt-get install wget eyed3 Si vous êtes sur une distribution basé sur centOS / fedora : yum install python-eyed3 wget Qu’est-ce que eyed3 ? eyed3 est un petit programme python qui permet de jouer les méta-data ID3 . Elle sont surtout utilisé avec les fichiers .mp3, elle peuvent contenir le nom de l’artiste, de l’album, de la musique et aussi les paroles ! L’idée va être d’extraire de ces méta-datas le nom de l’artiste ainsi que le nom de la chanson pour récupérer les paroles et les stockés dans ces méta-data. Voici un petit script shell qui permet de faire cela automatiquement. Placer-le dans un répertoire (par exemple /home/user/musique) et il se chargera de scruter toutes les musiques des répertoires et sous répertoire pour y mettre à jour les méta-data. Shell #!/bin/bash _TPL='http://makeitpersonal.co/lyrics?artist=<artist>&title=<title>' _SRY="Desole, il n'y a pas encore de parole pour cette chanson." [ "$1" ] && _PATH="$1" || _PATH=$PWD cd $_PATH for _FILE in {*.mp3,*.m4a}; do if [[ -r $_FILE ]]; then _SONG=$(eyeD3 --no-color "$_FILE" | grep title) _ARTIST="${_SONG#*"artist: "}" _TITLE="${_SONG%"artist: "*}" _TITLE="${_TITLE#"title: "}" echo -n "$_ARTIST - $_TITLE" _ARTIST="${_ARTIST// /+}" _TITLE="${_TITLE// /+}" _URL="${_TPL//"<artist>"/$_ARTIST}" _URL="${_URL//"<title>"/$_TITLE}" _LYRICS=$(wget -qO- $_URL) if [ "$_LYRICS" != "$_SRY" ]; then eyeD3 --lyrics=eng:Lyrics:"$_LYRICS" "$_FILE" 1>/dev/null else echo "pas de paroles trouvé... next!" fi fi done cd $OLDPWD 1234567891011121314151617181920212223242526272829303132333435 #!/bin/bash _TPL='http://makeitpersonal.co/lyrics?artist=<artist>&title=<title>'_SRY="Desole, il n'y a pas encore de parole pour cette chanson." [ "$1" ] && _PATH="$1" || _PATH=$PWD cd $_PATH for _FILE in {*.mp3,*.m4a}; do if [[ -r $_FILE ]]; then _SONG=$(eyeD3 --no-color "$_FILE" | grep title) _ARTIST="${_SONG#*"artist: "}" _TITLE="${_SONG%"artist: "*}" _TITLE="${_TITLE#"title: "}" echo -n "$_ARTIST - $_TITLE" _ARTIST="${_ARTIST// /+}" _TITLE="${_TITLE// /+}" _URL="${_TPL//"<artist>"/$_ARTIST}" _URL="${_URL//"<title>"/$_TITLE}" _LYRICS=$(wget -qO- $_URL) if [ "$_LYRICS" != "$_SRY" ]; then eyeD3 --lyrics=eng:Lyrics:"$_LYRICS" "$_FILE" 1>/dev/null else echo "pas de paroles trouvé... next!" fi fidone cd $OLDPWD Merci à Cyprian Guerra pour le...
Read MoreComment utiliser « cat » ou « less » sur un fichier libreoffice .odt ?
Bonjour à tous, aujourd’hui je vais vous présenter un petit logiciel bien sympas, il va vous permettre de lire les fichiers libreoffice en console. C’est une petite astuce qui s’avérer très utile lorsqu’on veux voir le contenue d’un fichier .odt en mode console (pour une application avec python / php / whatever). La soltuion est d’utiliser « odt2txt ». Cette ligne de commande est fournis dans deux packages différent. Le premier est nomé odt2txt que vous pouvez installé : sudo apt-get install odt2txt et par le package unoconv (qui offre un plus large éventails de choix pour les formats libreoffice), que vous pouvez installé comme ceci : sudo apt-get install unoconv Si vous avez les deux, vous pouvez choisir lequel utiliser en utilisant le système de commande alternartive : sudo update-alternatives --config odt2txt Si vous utilisez « odt2txt » fournis par le paquet « odt2txt », vous avez juste à utiliser : odt2txt file.odt Si vous utilisez celui fournir par le package : « unoconv« , vous devez l’utiliser comme ceci : odt2txt --stdout file.odt Utiliser le pipe pour utiliser less : odt2txt file.odt | less NB : si vous n’utiliser pas l’option --stdout, unoconv va écrire le résultat dans un fichier appelé « file.txt ». ...
Read MoreComment parser une chaine JSON en ligne de commande
Pour pouvoir parser du JSON avec sont terminal, il vous faudra un petit logiciel bien sympa (qui n’est pas présent dans les dépôts), j’ai nommé : jq Shell wget http://stedolan.github.io/jq/download/linux32/jq (32-bit) wget http://stedolan.github.io/jq/download/linux64/jq (64-bit) chmod +x ./jq sudo cp jq /usr/bin 1234 wget http://stedolan.github.io/jq/download/linux32/jq (32-bit)wget http://stedolan.github.io/jq/download/linux64/jq (64-bit)chmod +x ./jqsudo cp jq /usr/bin Les fichiers binaires de jq sont aussi disponible pour windows et OS X. Le code source est disponible sous licence MIT. Voici une liste d’exemple pour illustré le fonctionnement de jq : $ cat json.txt { "name": "Google", "location": { "street": "1600 Amphitheatre Parkway", "city": "Mountain View", "state": "California", "country": "US" }, "employees": [ { "name": "Michael", "division": "Engineering" }, { "name": "Laura", "division": "HR" }, { "name": "Elise", "division": "Marketing" } ] } 12345678910111213141516171819202122232425 { "name": "Google", "location": { "street": "1600 Amphitheatre Parkway", "city": "Mountain View", "state": "California", "country": "US" }, "employees": [ { "name": "Michael", "division": "Engineering" }, { "name": "Laura", "division": "HR" }, { "name": "Elise", "division": "Marketing" } ]} Pour parser l’objet : cat json.txt | jq '.name' retour : "Google" Pour récupérer un attribut de l’objet : cat json.txt | jq '.location.city' retour Shell "Mountain View" 1 "Mountain View" Pour parser une array : cat json.txt | jq '.employees[0].name' retour : Shell "Michael" 1 "Michael" Pour extraire des champs spécifique : cat json.txt | jq '.location | {street, city}' Shell { "city": "Mountain View", "street": "1600 Amphitheatre Parkway" } 1234 { "city": "Mountain View", "street": "1600 Amphitheatre Parkway"} Voir l’article...
Read MoreComment sniffer le trafic en ligne de commande avec httpry
Bonjour à tous, Aujourd’hui je vous présente un petit outil bien sympa qui permet de sniffer le trafic http. Ce petit logiciel peut-être bien utiles pour plusieurs applications : Tester un webservice REST Vérifier que sa machine n’est pas infestée par un malware Vérifier que les utilisateurs ne téléchargent pas de fichier dangereux Analyser le trafic et en faire des statistiques etc … Cette outil magique s’appel HTTPRY. Installation du logiciel : Sur ubuntu (14.04 et supérieur) Il suffit de passer par les dépôts officiel sudo apt-get install httpry Sur Fedora, CentOS, RHEL Le logiciel est aussi dans les dépôts sudo yum install httpry Sur debian httpry n’est pas présent dans les dépôts, vous devez le compiler à la main : Shell $ sudo apt-get install gcc make git libpcap0.8-dev $ git clone https://github.com/jbittel/httpry.git $ cd httpry $ make $ sudo make install 12345 $ sudo apt-get install gcc make git libpcap0.8-dev$ git clone https://github.com/jbittel/httpry.git$ cd httpry$ make$ sudo make install Utilisation de httpry Utilisation basique sudo httpry -i <network-interface> Dans la plupart des cas on va vouloir sauvegarder des paquets pour pouvoir les « rejoué » plus-tard. Pour cela vous avez l’option ‘-b’ ou ‘-o’. L’option ‘-b’ permet de sauvegarder les paquets HTTP dans un fichier binaire qui pourras être « rejoué » plus tard. L’option ‘-o’ permet de sauvegarder l’output avec l’option « human readable » dans un fichier texte. Pour sauvegarder les paquets dans un fichier binaire : sudo httpry -i wlan0 -b output.dump Pour pouvoir rejouer des paquets sauvegarder : httpry -r output.dump avec l’option ‘-r’ vous n’avez pas besoin de privilège root. Pour sauvegarder les paquets en dans un fichier texte : sudo httpry -i wlan0 -o output.txt Utilisation avancé de httpry Si vous voulez filtrer une requete HTTP par méthode (comme GET, POST, PUT, HEAD, CONNECT, etc…) il faut utiliser l’option ‘-m’ : sudo httpry -i wlan0 -m get,head Si vous avez installer httpry depuis les sources GIT, vous avez une petite collection de script perl qui permettent d’analyser les données fournie par httpry. Voici une petite liste (non exhaustive) des possibilités fournies par ces script : hostnames : Afficher une liste contenant tout les host names (sans duplications) avec un compteur. find_proxies : Detecter les webproxies. search_terms : Cherche et compte les motifs entrés dans le service de recherche content_analysis : Recherche les urls qui contiennent un certain mot clé. xml_output...
Read More