Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Script (bash) pour réveil-matin

8 réponses
Avatar
Hugolino
Bonjour


J'espère que vous avez tous passés de bonnes vacances... Mais vous êtes
tellement compétents sur ce ng que je n'ai aucun scrupule à vous embêter
avec mes problèmes de scripts.
À moi ça prendrait trois jours, à vous 2 minutes :)


Tous les soirs avant de me coucher, je tape sur ma machine qui a un gros
uptime:

echo "mpg321 /mnt/MP3/Trust_*" | at 06:00

(Je change le nom du groupe tous les soirs, je vous rassure, se
réveiller avec "Antisocial" tous les matins : pas glop)

Je voudrais donc écrire un script (bash 2.05b-15/Debian Sarge) qui
s'appellerait "Réveil" et qui permette de saisir l'heure du réveil et de
compter le nombre de fichiers dans /mnt/MP3 (partition vfat) qui
commencent par un nombre paramétrable de mêmes caractères afin de proposer
un menu de nom d'artiste (ou de groupe à choisir) pour le jouer au
réveil.

Je précise que dans cette partition, tous les fichiers ont la forme
"Artiste_Année_Album_N°Chanson_TitreChanson.mp3", par exemple:

ACDC_80_Back_In_Black_01_Hells_Bells.mp3
ou
Deep_Purple_72_Made_In_Japan_01_Highway_Star.mp3


Exemple:

$ Réveil
Heure de réveil : (le user tape 06:00)

Vérification que la chaine est bien au format "hh:mm" (c'est sed qui va
m'aider ?)


Nombre de caractères : (le user tape "7" par exemple)

Boucle sur /mnt/MP3 (qui est en vfat je le rappelle, mais une solution
avec une partition linux m'interesse aussi car je passe tellement peu de
temps sous Windows© avec cette machine que ne pas pouvoir lire mes mp3
quand je suis sous Win ne me dérangera pas beaucoup)


Nombre de chansons : (le user tape "5" par exemple)

Le programme présente alors une liste où le nombre de fichiers ayant
leurs 7 premiers caractères en commun est supérieur ou égal à 5. Chez
moi ça donnerait:

Choissiez l'artiste (ou le groupe):

A --> ACDC_00
B --> ACDC_76
C --> ACDC_78
...
...
Z --> ZZ_Top_

(Donc en offrant 26 choix au maximum)


Tout ce que je suis capable de faire pour l'instant, c'est :

for FichierMP3 in *.mp3; do ls "$FichierMP3"|cut -b "10-16"; done

Mais il faudrait compter les occurences d'apparition d'une même chaine,
vérifier que ce nombre est supérieur ou égal à un argument, et ainsi
construire le menu, et là je cale carrément.



Voili-voilou: je ramasse les copies dans une heure...


Merci de toute aide.


--
«Comme annoncé dans fr.usenet.forums.annonces récemment, le vote pour
la destruction/remplacement du groupe fr.comp.os.linux a reussi
et est donc detruit.»
-+- Control in Guide du linuxien pervers - "BSD a encore frappé" -+-

8 réponses

Avatar
Rakotomandimby Mihamina
Hugolino wrote:
Bonjour


Bonsoir

T'aurai pas deja un debut de scrit que tu as ecrit qu'on se base dessus
? bon j'espere que t'es allé plus loin que le '#!/bin/zsh' quand meme
... :-P
--
ASPO Infogérance - http://aspo.rktmb.org/activites/infogerance
Unofficial FAQ fcolc - http://faq.fcolc.eu.org/
Linux User Group sur Orléans et alentours.
Tél: + 33 2 38 76 43 65 (France)

Avatar
Stephane Chazelas
2004-09-9, 20:46(+02), Hugolino:
[...]
$ Réveil
Heure de réveil : (le user tape 06:00)

Vérification que la chaine est bien au format "hh:mm" (c'est sed qui va
m'aider ?)


case $REPLY in [0-9][0:9]:[0-9][0-9]) ...

tout betetement.

Le programme présente alors une liste où le nombre de fichiers ayant
leurs 7 premiers caractères en commun est supérieur ou égal à 5. Chez
moi ça donnerait:


C'est un boulot pour gawk.

Tu fais

find /mp3 -name '*.mp3' -print0 | gawk -vRS='' -F/ '
{
artiste=substr($NF, 1, 7)
n[artiste]++
liste[artiste]=liste[artiste] $0 ""
}
END {
id
for (a in artiste) {
if (n[a] >= 5) {
i++
printf("%c -> %sn", ++i, a)
ord[sprintf("%c", i)]=a
}
}
getline < "/dev/stdin"
if ($0 in ord) {
split(l, liste[ord[$0]], "")
cmd="mpg123"
for (i in l) {
gsub(/'''/, "''\\'''", l[i]
cmd=cmd " '''" l[i] "'''"
}
print cmd
}
}'

(pas testé, il te reste a corriger les erreurs mais tu as
l'idee).

--
Stephane

Avatar
cedric
Hugolino wrote:
(Je change le nom du groupe tous les soirs, je vous rassure, se
réveiller avec "Antisocial" tous les matins : pas glop)


Tu as tort, ca atténuerait la fameuse "première humiliation" ;-)

Avatar
Stephane Chazelas
2004-09-10, 08:28(+00), Stephane Chazelas:
[...]
getline < "/dev/stdin"
[...]


getline < "/dev/tty"

bien sur.

--
Stephane

Avatar
Hugolino
Le Fri, 10 Sep 2004 10:45:34 +0200, cedric a écrit:
Hugolino wrote:
(Je change le nom du groupe tous les soirs, je vous rassure, se
réveiller avec "Antisocial" tous les matins : pas glop)


Tu as tort, ca atténuerait la fameuse "première humiliation" ;-)


"fameuse" ? Pas compris. Que veux-tu dire ? (C'est que ça remonte à
l'année de mes 16 ans...)



--
Hugo NPN (i --> ee)
N >> Je veux m'acheter un ordinateur pour surfer sur internet, mais
N >> j'hésite entre Windows 98 et Linux.
ST> Si tu te poses la question, choisis Windows. C'est une merde mais
ST> ca devrait aller pour ce que tu veux faire. -+- ST in CMM -+-


Avatar
Hugolino
Le 10 Sep 2004 08:28:44 GMT, Stephane Chazelas a écrit:
C'est un boulot pour gawk.
[cut]


Ah. Ben ça me fait encore de la lecture...

Merci de ton aide


--
et je suis persuadé qu'on va bientôt pouvoir latter du
windowsien par serveur Q3 interposé :-) (la bonne parole ne se
propage jamais mieux qu'à grand coup de baffes :-))
-+- RR in Guide du linuxien pervers - "C'est beau le prosélitisme..." -+-


Avatar
Hugolino
Le Fri, 10 Sep 2004 00:09:56 +0200, Rakotomandimby Mihamina a écrit:
Hugolino wrote:
Bonjour


Bonsoir

T'aurai pas deja un debut de scrit que tu as ecrit qu'on se base dessus
? bon j'espere que t'es allé plus loin que le '#!/bin/zsh' quand meme
... :-P


Bin non. Oui, j'ai honte, je m'aperçois que je fais faire mes scripts
par le ng...

Ça me fait donc une très bonne occasion d'ouvrir le livre de C. Blaess
sur les scripts pour Linux.

Je lis tout ça et je vous rapelle pour les détails...


--
Mais je trouve que la salkware est bien surtout la 7.0
Ouppps excusez moi pas avoir ecorcher le nom de la distrib , c'est

slakware !! Je suis cretin
-+- Julien in Guide du linuxien pervers - L'erreur est humaine -+-


Avatar
cedric
Hugolino wrote:
Tu as tort, ca atténuerait la fameuse "première humiliation" ;-)


"fameuse" ? Pas compris. Que veux-tu dire ? (C'est que ça remonte à
l'année de mes 16 ans...)


C'était un slogan des années 60s : "Le réveil sonne : c'est la première
humiliation de la journée".

Voila voila...