Posts Tagged "ubuntu"

Récupérer les paroles d’une musique (.mp3, .m4a) et l’enregistrer sous Linux

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 More

Comment utiliser le système de notification avec qml et unity

Comment utiliser le système de notification avec qml et unity

Comment utiliser le système de notification d’ubuntu (et d’autres distribution) depuis QML ? Autant que je le sache, il n’existe pas d’API QML pour accéder au système de notification. Pour éviter d’avoir à créer un plugin C++ pour avoir les notifications sur une application desktop, il est plus simple d’utiliser pyotherside et d’appeler un petit module python pour effectuer le travail. Pré-requis : Vous l’aurez compris, il suffit de s’assurer que pyotherside est installé. D’abbord, assuré vous d’avoir les bon ppa Shell sudo add-apt-repository ppa:ubuntu-sdk-team/ppa sudo add-apt-repository ppa:checkbox-dev/ppa sudo apt-get update 123 sudo add-apt-repository ppa:ubuntu-sdk-team/ppasudo add-apt-repository ppa:checkbox-dev/ppasudo apt-get update puis lancer l’installation Shell sudo ap-get install pyotherside 1 sudo ap-get install pyotherside Au boulot : Et voici la petite application QML : JavaScript import QtQuick 2.0 import Ubuntu.Components 1.1 import io.thp.pyotherside 1.2 /*! \brief MainView with a Label and Button elements. */ MainView { // objectName for functional testing purposes (autopilot-qt5) objectName: "mainView" // Note! applicationName needs to match the "name" field of the click manifest applicationName: "com.ubuntu.developer.username.notification" /* This property enables the application to change orientation when the device is rotated. The default is false. */ //automaticOrientation: true // Removes the old toolbar and enables new features of the new header. useDeprecatedToolbar: false width: units.gu(100) height: units.gu(75) Page { title: i18n.tr("Simple") Column { spacing: units.gu(1) anchors { margins: units.gu(2) fill: parent } Label { id: label objectName: "label" text: i18n.tr("Hello..") } Button { objectName: "button" width: parent.width text: i18n.tr("Tap me!") onClicked: { //label.text = i18n.tr("..world!") py.call('notify.pressme', [], function() {}); } } Python { id: py Component.onCompleted: { addImportPath(Qt.resolvedUrl('.')); importModule('notify', function() {}); } } } } } 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 import QtQuick 2.0import Ubuntu.Components 1.1import io.thp.pyotherside 1.2/*!    \brief MainView with a Label and Button elements.*/ MainView {    // objectName for functional testing purposes (autopilot-qt5)    objectName: "mainView"     // Note! applicationName needs to match the "name" field of the click manifest    applicationName: "com.ubuntu.developer.username.notification"     /*     This property enables the application to change orientation     when the device is rotated. The default is false.    */    //automaticOrientation: true     // Removes the old toolbar and enables new features of the new header.    useDeprecatedToolbar: false     width: units.gu(100)    height: units.gu(75)     Page {        title: i18n.tr("Simple")         Column {            spacing: units.gu(1)            anchors {                margins: units.gu(2)                fill: parent            }             Label {                id: label                objectName: "label"                 text: i18n.tr("Hello..")            }             Button {                objectName: "button"                width: parent.width                 text: i18n.tr("Tap me!")                 onClicked: {                    //label.text = i18n.tr("..world!")                      py.call('notify.pressme', [], function() {});                }            }            Python {                  id: py                  Component.onCompleted: {                      addImportPath(Qt.resolvedUrl('.'));                      importModule('notify', function() {});                  }              }        }    }} ensuite créer un fichier nommé notify.py dans le même répertoire que le fichier qml Python #!/usr/bin/env python3 import subprocess def pressme(): subprocess.call(["notify-send", "hello morgan", "http://morgan-durand.com"]) 123456 #!/usr/bin/env python3 import subprocess def pressme():    subprocess.call(["notify-send", "hello morgan", "http://morgan-durand.com"]) Et voila le...

Read More

Comment parser une chaine JSON en ligne de commande

Comment 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 More

Avoir deux claviers dans deux langues différentes

Avoir deux claviers dans deux langues différentes

Comment avoir deux claviers dans deux langues différentes ?   Vous avez deux claviers dans des langues différentes ? Par exemple un querty et un azerty sans avoir à spécifier à chaque fois. 1. Il vous suffit d’utiliser xinput pour lister vos clavier : Shell xinput -list | grep key 1 xinput -list | grep key Exemple :   Shell $ xinput -list | grep key ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)] ↳ Power Button id=6 [slave keyboard (3)] ↳ Video Bus id=7 [slave keyboard (3)] ↳ Power Button id=8 [slave keyboard (3)] ↳ Sleep Button id=9 [slave keyboard (3)] ↳ 2.4GHz 2way RF Receiver id=10 [slave keyboard (3)] ↳ HP Webcam id=12 [slave keyboard (3)] ↳ AT Translated Set 2 keyboard id=13 [slave keyboard (3)] ↳ HP WMI hotkeys id=15 [slave keyboard (3)] ↳ USB Keyboard id=16 [slave keyboard (3)] ↳ USB Keyboard id=17 [slave keyboard (3)] 12345678910111213 $ xinput -list | grep key⎣ Virtual core keyboard                         id=3    [master keyboard (2)]    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]    ↳ Power Button                              id=6    [slave  keyboard (3)]    ↳ Video Bus                                 id=7    [slave  keyboard (3)]    ↳ Power Button                              id=8    [slave  keyboard (3)]    ↳ Sleep Button                              id=9    [slave  keyboard (3)]    ↳ 2.4GHz 2way RF Receiver                   id=10   [slave  keyboard (3)]    ↳ HP Webcam                                 id=12   [slave  keyboard (3)]    ↳ AT Translated Set 2 keyboard              id=13   [slave  keyboard (3)]    ↳ HP WMI hotkeys                            id=15   [slave  keyboard (3)]    ↳   USB Keyboard                            id=16   [slave  keyboard (3)]    ↳   USB Keyboard                            id=17   [slave  keyboard (3)]   Puis utilisez setxkbmap pour setter une langue par defaut à ce clavier Shell setxkbmap -device <key_ID> -layout <layout_name> 1 setxkbmap -device <key_ID> -layout <layout_name> Exemple : setxkbmap -device 3 -layout fr #clavier principal en françaist setxkbmap -device 10 -layout us #Le clavier avec id=10 en anglais (US) setxkbmap -device 16 -layout ru #Le clavier avec id=16 en russe 123 setxkbmap -device 3 -layout fr    #clavier principal en françaistsetxkbmap -device 10 -layout us   #Le clavier avec id=10  en anglais (US)setxkbmap -device 16 -layout ru   #Le clavier avec id=16  en russe  ...

Read More

Configurer apt-get pour un nettoyage automatique après chaque installation

Configurer apt-get pour un nettoyage automatique après chaque installation

Comment configurer apt-get pour un nettoyage automatique après chaque installation   Enfaîte rien de très compliquer, il suffit de tapez cette ligne dans votre terminal : Shell sudo sh -c "echo 'DSELECT::Clean "always";' >> /etc/apt/apt.conf.d/99AutomaticClean" 1 sudo sh -c "echo 'DSELECT::Clean "always";' >> /etc/apt/apt.conf.d/99AutomaticClean" La commande s’exécutera automatiquement après chaque apt-get upgrade. Plus d’information :...

Read More

Création d’une application pour ubuntu-touch – jour 1

Création d’une application pour ubuntu-touch – jour 1

Création d’une application pour ubuntu-touch Introduction Bonjour à tous, j’ai décidé de faire un tutoriel pour apprendre à créer une application pour Ubuntu-touch depuis Ubuntu 14.04. [Jour 1] Mise en place de l’environnement de développement Tout d’abord il faut mettre en place un environnement de développement pour que l’on soit dans des conditions optimales. La mise en place de l’environnement de développement consiste à installer le SDK ubuntu puis d’émuler un appareille ubuntu touch.  1. Installation des paquets 1.1Ubuntu SDK Swift sudo add-apt-repository ppa:ubuntu-sdk-team/ppa sudo apt-get update && sudo apt-get install ubuntu-sdk 12 sudo add-apt-repository ppa:ubuntu-sdk-team/ppasudo apt-get update && sudo apt-get install ubuntu-sdk  1.2 Ubuntu-touch emulator Shell sudo apt-get install ubuntu-emulator 1 sudo apt-get install ubuntu-emulator 2. Création d’un émulateur Ubuntu touch Il vous faut ouvrir l’application que l’on viens d’installer   Ensuite allez dans l’onglet « devices »     Cliquez sur le « + » (en bas à gauche) pour ajouter un nouvelle émulateur !   Ensuite cliquez sur create et patientez quelques minutes, normalement votre interface « device » devrais ressemblez à quelque chose comme ça :   Personnellement j’aime bien lui mettre 768Mo de ram. Ensuite appuyez sur la bouton play (le triangle vert en haut) pour démarrer l’émulateur     Choisissez votre langue, puis appuyer sur start     Passez la validation de la carte sim (on s’en fiche un peut c’est un émulateur).     Pareille pour le wifi : on passe   Accepter d’envoyer des donnée pour aider les développeur à corriger des bug     Ensuite laissez-vous guider par l’intro pour apprendre à dompter la bête...

Read More