Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 15/06/2010, à 09:46

cracolinux

Lire de la musique aléatoirement avec une touche !

wink
Edit du 5/08/10

Pour les très pressés :
L'archi-résumé de l'astuce qui tue la mort est ici
wink




Toujours dans le but d'apprendre et de progresser en bashscripting, voici une petite demande d'aide :

1-Je sais que :
Un clic droit sur un dossier contenant de la musique puis ouvrir avec totem, permet de lancer totem avec en playlist la totalité des tracks incluses dans le dossier.
C'est comme ça que je lis ma musique désormais, merci à clement.analogue (→ http://forum.ubuntu-fr.org/viewtopic.php?id=338554)

2-J'aimerais que :

J'aimerais créer un lanceur (avec un ptit raccourci clavier parce que le double clic, c'est trop dur) qui me lancera la lecture aléatoire d'un des dossiers du répertoire musique.

Problème : En bash, je découvre à peine les possibilités (je suis sur sed en ce moment ! y a du boulot mais je reçois beaucoup d'aide ici wink ) et je ne vois pas comment m'y prendre pour faire le script.

3-Les idées

-Creer un fichier "liste des dossiers du répertoire" et trouver le moyen de faire choisir aléatoirement une ligne du fichier au script (est-ce qu'il y a de l'aléatoire en bash comme le random du quickbasic ?)


-Le script se passe d'un fichier liste et choisi directement au hasard un dossier à lire, mais alors là, j'ai aucune idée de comment faire ça.

Si vous avez déjà fais un truc comme ça ou vous avez des idées big_smile

(je paris ma carte graphique qu'AnsuzPeorth va encore me scotcher roll big_smile)

[EDIT] Modification du titre

Dernière modification par cracolinux (Le 05/08/2010, à 20:39)


Pixup : postez vos images vite et bien - Wificheck : Aidez nous à vous aider

« Ne devenez jamais pessimiste. Un pessimiste a plus souvent raison qu'un optimiste, mais l'optimiste s'amuse plus — et aucun des deux ne peut arrêter la marche du monde. » R.Heinlein

Hors ligne

#2 Le 15/06/2010, à 10:14

credenhill

Re : Lire de la musique aléatoirement avec une touche !

hello
pour obtenir un nom de fichier au hasard

ls|sort -R|head -1

Hors ligne

#3 Le 15/06/2010, à 10:40

cracolinux

Re : Lire de la musique aléatoirement avec une touche !

Ah!! si c'est pas beau une petite ligne comme ça !!

Je vais ajouter ces commandes dans mon carnet.
Et je la mixe pour arriver à mon objectif.

Merci credenhill !

Ansuz, tu t'es fais griller! tongue (mais tu gardes un place dans mon coeur de jeune padawan lol)


Pixup : postez vos images vite et bien - Wificheck : Aidez nous à vous aider

« Ne devenez jamais pessimiste. Un pessimiste a plus souvent raison qu'un optimiste, mais l'optimiste s'amuse plus — et aucun des deux ne peut arrêter la marche du monde. » R.Heinlein

Hors ligne

#4 Le 15/06/2010, à 10:47

Totor

Re : Lire de la musique aléatoirement avec une touche !

Bonjour,
Pour choisir un dossier aléatoirement en bash :

#!/bin/bash
PARENT_FOLDER="${HOME}/musique"
FOLDERS=( ${PARENT_FOLDER}/*/  )
UN_FOLDER="${FOLDERS[((RANDOM%${#FOLDERS[@]}))]}"

Pour la méthode de credenhill, il faut s'assurer qu'il n'y ait que des dossiers dans le dossier où le ls est effectué.


-- Lucid Lynx --

Hors ligne

#5 Le 15/06/2010, à 10:56

cracolinux

Re : Lire de la musique aléatoirement avec une touche !

Bon, j'ai bien compris la ligne de commande :

ls →liste le dossier | sort -R →tri aléatoire | head -1 → lit la 1 ere ligne

Donc, j'ai simplement lancé ça depuis mon dossier musique :

totem $(ls|sort -R|head -1)

Ca marche bien... sauf quand j'ai des espaces dans les nom de dossiers! (puta** d'espaces, toujours eux! )

Est-ce que je pourrais pas écrire cette ligne autrement ?

EDIT :

Trouvé

totem "$(ls|sort -R|head -1)"

Dernière modification par cracolinux (Le 15/06/2010, à 10:59)


Pixup : postez vos images vite et bien - Wificheck : Aidez nous à vous aider

« Ne devenez jamais pessimiste. Un pessimiste a plus souvent raison qu'un optimiste, mais l'optimiste s'amuse plus — et aucun des deux ne peut arrêter la marche du monde. » R.Heinlein

Hors ligne

#6 Le 15/06/2010, à 10:59

credenhill

Re : Lire de la musique aléatoirement avec une touche !

avec des "

totem "$(ls|sort -R|head -1)"

Hors ligne

#7 Le 15/06/2010, à 11:24

cracolinux

Re : Lire de la musique aléatoirement avec une touche !

Merci credenhill, on s'est croisé smile

Les guillements protègent les espaces, il faut que je me serve des guillemets plus souvent!

Totor, t'as méthode est différente, c'est du full-bash (les commandes sont internes) c'est ça ?
C'est vrai que j'ai que des dossiers dans ~/Musique , je n'y avais pas pensé. Merci

--------------------------------------------

J'ai essayé mon lanceur comme ceci :

gnome-terminal -x cd /home/user/Musique ; totem "$(ls|sort -R|head -1)"

Mais ça fonctionne pas, vous avez une idée ?
Est-ce qu'il vaut pas mieux que je lance un script comme ça :

gnome-terminal -x /../../monscript

Perso, j'aimerais pouvoir faire ça en une ligne, c'est la classe, non cool

Dernière modification par cracolinux (Le 15/06/2010, à 11:25)


Pixup : postez vos images vite et bien - Wificheck : Aidez nous à vous aider

« Ne devenez jamais pessimiste. Un pessimiste a plus souvent raison qu'un optimiste, mais l'optimiste s'amuse plus — et aucun des deux ne peut arrêter la marche du monde. » R.Heinlein

Hors ligne

#8 Le 15/06/2010, à 11:50

Postmortem

Re : Lire de la musique aléatoirement avec une touche !

Bonjour,
dit Totor, tu nous ferais une 'tite explication de ta solution ?! Merci d'avance !

Totor a écrit :

Pour choisir un dossier aléatoirement en bash :

#!/bin/bash
PARENT_FOLDER="${HOME}/musique"
FOLDERS=( ${PARENT_FOLDER}/*/  )
UN_FOLDER="${FOLDERS[((RANDOM%${#FOLDERS[@]}))]}"

Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#9 Le 15/06/2010, à 12:05

credenhill

Re : Lire de la musique aléatoirement avec une touche !

cracolinux a écrit :

Perso, j'aimerais pouvoir faire ça en une ligne, c'est la classe, non cool

gnome-terminal -x bash -c 'cd /home/user/Musique ; totem "$(ls|sort -R|head -1)"'

Hors ligne

#10 Le 15/06/2010, à 12:43

AnsuzPeorth

Re : Lire de la musique aléatoirement avec une touche !

(je paris ma carte graphique qu'AnsuzPeorth va encore me scotcher roll big_smile)

Qd maitre Totor est là, je ne fais pas le poids smile

Sinon, tu pourrais aussi utiliser find, si tu as des dossiers et sous-dossiers. find permet également de filtrer les extensions, la profondeur de récursivité, etc, etc.

find /home/dossier -maxdepth 2 -type d | sort -R | head -1 | xargs -I % totem '%'

Tu peux aussi passer par une liste zenity pour le fun smile (c'est plus du aléatoire, mais ça peut aussi servir)

find /home/dossier -maxdepth 2 -type d | zenity --list --column dossier | xargs -I % totem '%'

-maxdepth profondeur de récursivité
-type d uniquement les dossiers
Tu peux aussi formater la sortie de find grace à l'option -printf. Pour un affichage dans zenity plus zolie smile
L'option -I de xargs et son rappel peut surement être supprimer, mais vaut voir avec les espaces !

Totor, tu nous ferais une 'tite explication de ta solution ?!

C'est jolie le fullbash non ??? Un peu illisible, mais je trouve ça beau smile
Je ne me permettrais pas d'expliquer la soluce de totor (sauf il n'a pas le temps), surtout qu'il est plutot pas mauvais non plus dans les explications ...

Dernière modification par AnsuzPeorth (Le 15/06/2010, à 12:44)


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#11 Le 15/06/2010, à 12:57

cracolinux

Re : Lire de la musique aléatoirement avec une touche !

Olalala!! Vous me donnez trop de travail les gars, déjà que j'essaie toujours d'apprendre 26 trucs en même temps !!

@credenhill : merci ta ligne est parfaite, j'ai donc un lanceur qui me joue un dossier musicale au hasard (enfin semi-hasard si j'en crois ce que j'ai lu). cool  c'est la classe.
Je vais me le faire autrement même : ctrl + F11 → musique aléatoire  cool  big_smile

Je suis content!

@Ansuz : ahaha! toi tu m'envois toujours 2-3 façons de faire avec des trucs que je connais pas, bref, du boulot en perspective tongue big_smile

@tous:

Merci, je vais continuer à apprendre . Faut que j'achète un carnet de téléphone pour me faire un pense-bete sur chaque commande. smile


Pixup : postez vos images vite et bien - Wificheck : Aidez nous à vous aider

« Ne devenez jamais pessimiste. Un pessimiste a plus souvent raison qu'un optimiste, mais l'optimiste s'amuse plus — et aucun des deux ne peut arrêter la marche du monde. » R.Heinlein

Hors ligne

#12 Le 15/06/2010, à 14:30

Totor

Re : Lire de la musique aléatoirement avec une touche !

FOLDERS=( ${PARENT_FOLDER}/*/  )
La notation variable=( ... ) permet de créer un tableau dont les éléments sont définis par ....  Ces éléments sont séparés par un espace. Lorsqu'un élément contient un espace, il faut l'encadrer par des guillemets ou des cotes (ou "quotte", j'ai un souci un l'orthographe big_smile).

Dans notre cas, chaque élément correspond aux valeurs retournées par l'expansion (réalisée par bash) de ${PARENT_FOLDER}/*/, qui permet de fournir la liste des dossiers se trouvant immédiatement dans le dossier PARENT_FOLDER. Lors de l'expansion, si il y a des dossiers contenant au moins un espace, bash protège automatiquement cet élément.

On se retrouve donc avec un tableau FOLDERS contenant la liste des dossiers de PARENT_FOLDER

Décomposition de UN_FOLDER="${FOLDERS[((RANDOM%${#FOLDERS[@]}))]}" :
RANDOM : variable bash contenant un nombre aléatoire mise à jour à chaque utilisation
${#FOLDERS[@]} : taille (nombre d'élément) du tableau FOLDERS
((..)) : notation pour effectuer des calculs arithmétiques
a%b : a modulo b
${variable[idx]} : retourne le idxième élément du tableau variable. si idx=@, alors on référence tous les éléments. A noter que les indices commencent à 0.


-- Lucid Lynx --

Hors ligne

#13 Le 15/06/2010, à 14:40

Postmortem

Re : Lire de la musique aléatoirement avec une touche !

Totor, t'es trop fort !!
(je fais des rimes, c'est pour la frime !)
Merci bien !


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#14 Le 15/06/2010, à 14:45

cracolinux

Re : Lire de la musique aléatoirement avec une touche !

merci totor! Postmortem à tout dit smile


Pixup : postez vos images vite et bien - Wificheck : Aidez nous à vous aider

« Ne devenez jamais pessimiste. Un pessimiste a plus souvent raison qu'un optimiste, mais l'optimiste s'amuse plus — et aucun des deux ne peut arrêter la marche du monde. » R.Heinlein

Hors ligne

#15 Le 18/06/2010, à 19:57

cracolinux

Re : Lire de la musique aléatoirement avec une touche !

Voici l'ultime manière :

→Correction grâce à nesthib : le "gnome-terminal -x" est inutile et peut donc être enlevé

Amusez vous bien avec !

1276883582.png




*La petite question qui va bien*

L'appui sur F9 m'ouvre un terminal qui lance totem et un dossier du répertoire est lu.
Un autre appui sur F9 semble tuer le premier terminal et recommencer la procédure.
C'est tant mieux pour l'utilisation, mais je ne comprends pas pourquoi... ? Une idée ?

Dernière modification par cracolinux (Le 19/06/2010, à 14:43)


Pixup : postez vos images vite et bien - Wificheck : Aidez nous à vous aider

« Ne devenez jamais pessimiste. Un pessimiste a plus souvent raison qu'un optimiste, mais l'optimiste s'amuse plus — et aucun des deux ne peut arrêter la marche du monde. » R.Heinlein

Hors ligne

#16 Le 19/06/2010, à 01:16

Mpok

Re : Lire de la musique aléatoirement avec une touche !

Excellent sujet, j'ai beaucoup appris (même si je n'en ai pas l'utilisation pour l'instant)... cool

- credenhill m'a appris le "sort -R".
- et Totor m'a tué avec son "RANDOM".. tongue (very nice job)

Hors ligne

#17 Le 19/06/2010, à 14:10

nesthib

Re : Lire de la musique aléatoirement avec une touche !

pourquoi lancer ta commande avec gnome-terminal ?
un simple

bash -c '…'

suffirait


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#18 Le 19/06/2010, à 14:40

cracolinux

Re : Lire de la musique aléatoirement avec une touche !

wink

Merci nesthib, c'est tout à fait exact. Je vais corriger ça.

Sinon, toi qui est un des "gourous bash-scripter" (c'est pas ironique), tu as une idée sur la question qui va bien ?

crAcoliNUX a écrit :

*La petite question qui va bien*

L'appui sur F9 m'ouvre un terminal qui lance totem et un dossier du répertoire est lu.
Un autre appui sur F9 semble tuer le premier terminal et recommencer la procédure.
C'est tant mieux pour l'utilisation, mais je ne comprends pas pourquoi... ? Une idée ?


Pixup : postez vos images vite et bien - Wificheck : Aidez nous à vous aider

« Ne devenez jamais pessimiste. Un pessimiste a plus souvent raison qu'un optimiste, mais l'optimiste s'amuse plus — et aucun des deux ne peut arrêter la marche du monde. » R.Heinlein

Hors ligne

#19 Le 19/06/2010, à 14:49

nesthib

Re : Lire de la musique aléatoirement avec une touche !

normalement ton terminal se ferme lorsque la commande est terminée, le fait de lancer une nouvelle commande à totem doit envoyer un signal de fin à gnome-terminal qui se ferme donc, n'ayant plus rien à exécuter.
tu peux étudier la liste des process avant et après avoir pressé sur F9 pour t'en convaincre


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#20 Le 19/06/2010, à 16:47

cracolinux

Re : Lire de la musique aléatoirement avec une touche !

Je viens de regarder ça avec le moniteur système.

Que ce soit avec ou sans gnome-terminal, les processus gardent la même id quand j'appuie sur F9.

...mais ça veut rien dire puisque le processus à peut être le temps d'être tué puis relancé (avec la même id libérée puis reprise) avant que le moniteur système est eu le temps de se rendre compte de quoi que ce soit.

donc, euh...je pige pas plus.

Moi, je m'étais dis que chaque appui sur F9 ferait naitre un nouveau gnome-terminal qui lancerait un session de totem (différente des autres)
Bref, c'est pas méchant dans le cas présent parce que j'ai pas envie d'écouter plusieurs musique en même temps. Mais pour une utilisation différente, ça pourrait être intéressant de savoir lancer plusieurs sessions avec ce système de raccourcis clavier.

tchô!


Pixup : postez vos images vite et bien - Wificheck : Aidez nous à vous aider

« Ne devenez jamais pessimiste. Un pessimiste a plus souvent raison qu'un optimiste, mais l'optimiste s'amuse plus — et aucun des deux ne peut arrêter la marche du monde. » R.Heinlein

Hors ligne

#21 Le 19/06/2010, à 17:56

nesthib

Re : Lire de la musique aléatoirement avec une touche !

je pense que ce comportement dépend de totem.

si tu fais lancer gnome-terminal avec une commande bloquante (le merveilleux éditeur vim par exemple) tu pourras lancer autant de terminaux que tu veux sans qu'ils se remplacent


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#22 Le 20/06/2010, à 17:18

credenhill

Re : Lire de la musique aléatoirement avec une touche !

si il y a déjà un totem qui s'exécute, il ne démarre pas une nouvelle tâche, comme firefox.

$ totem & totem &
[1] 1970
[2] 1971
$ 
$ pgrep -l totem
1970 totem
$

utilise cette option:
       --enqueue filename|URI
              Tell an already-running instance of Totem to add a new stream to the playlist.

Dernière modification par credenhill (Le 20/06/2010, à 17:19)

Hors ligne

#23 Le 05/08/2010, à 10:25

cracolinux

Re : Lire de la musique aléatoirement avec une touche !

Salut,

Je viens de changer mon raccourci F9 (utilisé par totem pour afficher les playlists) par Super+M (→ Mod +M ) dans Système/raccourcis clavier.

Et ce raccourci ne fonctionne pas : il ne se passe rien. Alors que Super + T me lance Teeworlds sans problème...

Est-ce que quelqu'un a une idée ?

Dernière modification par cracolinux (Le 05/08/2010, à 11:58)


Pixup : postez vos images vite et bien - Wificheck : Aidez nous à vous aider

« Ne devenez jamais pessimiste. Un pessimiste a plus souvent raison qu'un optimiste, mais l'optimiste s'amuse plus — et aucun des deux ne peut arrêter la marche du monde. » R.Heinlein

Hors ligne

#24 Le 05/08/2010, à 13:12

Hizoka

Re : Lire de la musique aléatoirement avec une touche !

es-tu sur qu'il ne soit pas deja pris ce raccourcis ?

perso, il me sert à amarok...


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#25 Le 05/08/2010, à 14:27

cracolinux

Re : Lire de la musique aléatoirement avec une touche !

Non non, c'est pas déjà pris...


Pixup : postez vos images vite et bien - Wificheck : Aidez nous à vous aider

« Ne devenez jamais pessimiste. Un pessimiste a plus souvent raison qu'un optimiste, mais l'optimiste s'amuse plus — et aucun des deux ne peut arrêter la marche du monde. » R.Heinlein

Hors ligne