Communauté francophone des utilisateurs d'Ubuntu
Les Ubuntu-partys sont l'occasion pour beaucoup d'entre vous d'acquérir les goodies Ubuntu-fr faits par nos petites mains avec amour.
Pour tous les autres, fini le désespoir de les manquer
Il est désormais possible de vous procurer l'objet de votre choix grâce à la boutique en ligne, commune à Framasoft et Ubuntu-fr. Vous pourrez déjà y trouver mugs, t-shirts et, bien sûr, les Framakey Ubuntu-fr Remix.
edit modo : ce script n'est pas illégal dans le sens ou il n'enfreint pas les conditions d'utilisation de spotify et dans la mesure où il ne fait que baisser le volume il reste toujours un blanc à la place des pubs. Cependant les utilisateurs réguliers de ce service sont encouragés à s'inscrire pour un compte payant qui permet de ne plus avoir de publicité et d'avoir une qualité de 320kb/s (contre 160kb/s pour les comptes gratuits). Il est également à noter qu'il existe des alternatives libres telles que jamendo ou dogmazic. Pour discuter des enjeux économiques de la musique sur internet rendez-vous ici.
* FEATURES: Ce logiciel baisse le volume (à 5%) de votre ordinateur durant les pubs vocales spotify, en détectant le titre de la chanson dans la fenêtre wine. Un contre système remonte légèrement le son au besoin, pour éviter la mise en pause automatique de la pub.
* BUG: Si une autre fenêtre est ouverte et contient le mot "Spotify" dans le titre, la pub reste en pause.
* INSTALL: Il faut avoir installer wmctrl (pour lister les fênetres) et alsa-utils (normalement déjà installé) ensuite il faut rendre exécutable le script et de le lancer dans une console:
sudo aptitude install alsa-utils wmctrl wget -c http://github.com/pronoiaque/Spotify.sh/raw/master/spotify.sh -o /tmp/spotify.sh chmod a+x /tmp/spotify.sh sudo mv /tmp/spotify.sh /usr/bin/ ./usr/bin/spotify.sh
* DOWNLOAD: spotify.sh (17/11/2009)
* CHANGELOG:
17/11/2009: Choix possible entre différentes cartes son (-D hw:0 par défaut )
01/11/2009: url de pub alternatif, depot github (ametaireau)
04/10/2009: Ne bloque plus le niveau du volume. Le volume ne changement plus quand le seuil est atteint.
02/10/2009: Conserve le niveau du son choisi par l'utilisateur (donc ne remonte plus à 100% après une pub) - Sortie de la boucle quand spotify est fermé - Nouveau mixer + standard - test des logiciels requis
30/09/2009: fonctionne maintenant sans seuil empirique et ajout d'un tag de déclenchement (tagueule). 50% plus rapide (moins de pause automatique de spotify)
29/09/2009: plus de crossfader (pub coupée cash), plus le bug de son faible à demarrage.
28/09/2009: la liste des pubs est auto-updatée via une url
27/09/2009: fonctionne sur une liste pubs, plus simplement sur un seul pattern
Et merci de me faire parvenir le titre des pubs qui ne serai pas détectées, que la blacklist puisse être mise à jour !
Dernière modification par nesthib (Le 09/01/2010, à 22:12)
Hors ligne
Mais comment il fait pour couper les pubs?
J'arrive pas comprendre comment ce simple petit script peut bloquer ces pubs ![]()
Merci en tout cas :,)
J'essayerais dès que possible
Hors ligne
ça détecte le titre de la fenetre Spotify, si ya un motif genre "Spotify – Spotify" ça baisse graduellement le son et sinon ça le remonte. (Pas trop vite, sinon spotify le détecte )
Ça fonctionne sur +50% des pubs et je suis entrain de faire une blacklist de titres
Les pubs sont mises en sourdines, mais elles ne sont pas à proprement parler coupées, juste silencieuses
Dernière modification par pronoiaque (Le 27/09/2009, à 01:10)
Hors ligne
Ah daccord, je comprend maintenant :,)
Merci.
Hors ligne
CHANGELOG : fonctionne sur une liste
TODO: baisse du son non linaire ( exponentielle ?) / maj de la liste sur une url communautaire
#!/bin/bash
### Variables et lancement de Spotify
###
declare -i son
son=100
user=$(echo `whoami`)
env WINEPREFIX="/home/$user/.wine" wine 2>/dev/null "C:\Program Files\Spotify\spotify.exe"&
############################################################
### On defini une liste de Titre considérés comme des pubs
###
pub=(\
"Spotify – Spotify" \
"Spotify - Spotify" \
"Spotify - Sony Music" \
"Spotify - Spotify – Label Search" \
"Spotify – Stockage des listes de lecture" \
"Spotify - Spotify – Spotify Catalogue" \
"Spotify - Spotify – Distribuez Spotify!" \
"Spotify – Recherche par label" \
"Spotify - Spotify – Recherche par label" \
"Spotify - Universal Music – Fliorence + The Machine - Lungs" \
"Spotify - Universal Music" \
"Sony Music – Sean Kingston - Tomorrow" \
"Sony Music – Oceana - Love Supply" \
)
#######################################
### Pour chaque element de la liste...
###
for i in ${!pub[*]}
do
###############################################
### on rajoute un pipe entre chaque pour faire un OU logique
###
pubpatterns=$pubpatterns$(echo -n ${pub[$i]}"|")
done
#########################################
### Sauf pour le dernier pipe qu on enleve
###
pubpatterns=${pubpatterns%|*}
#######################
### Debut de la Boucle
while [ -e /dev/null ] ;
do
################################################
### On recupere le titre de la chanson Spotify
###
titre=$(echo `wmctrl -l | grep Spotify | cut -d" " -f 5-500`)
###############################################
### On crée un Tilt si une pub est decouverte
###
tilt=$(echo `echo $titre | grep -iE "$pubpatterns"`)
##################################################
### Si le titre contient une des pubs (Tilt non vide ) ET que le son n est pas négatif
### -> On baisse le Son, mais pas trop vide, sinon Spotify déclenche la pause
###
if [ ! "$tilt" = "" ] && [ $son -ge 15 ] ; then
son=$son-9
aumix -v $son
sleep 0.5
fi
##############################################################
### Sinon on remonte le Son (Chanson normale OU Pub en pause )
###
if [ "$tilt" = "" ] && [ $son -lt 110 ] ; then
son=$son+25
aumix -v $son
fi
########################################################
## Pour pas bouffer toutes les ressouces avec la boucle
sleep 0.2
done
exit 0Dernière modification par pronoiaque (Le 27/09/2009, à 20:48)
Hors ligne
Un "plugin" à greffer ou faire tourner pour avoir une liste des titres (et donc des pubs)
#!/bin/bash
titre=$(echo `wmctrl -l | grep Spotify`)
while [ -e /dev/null ] ;
do
titre_suivant=$(echo `wmctrl -l | grep Spotify`)
if [ "$titre" = "$titre_suivant" ] ; then
sleep 0.2
else
echo "$titre" >> /tmp/spotify.log
titre=$titre_suivant
fi
done
exit 0Hors ligne
Bonjour,
peut-être mettre ton script dans la doc?
http://doc.ubuntu-fr.org/spotify
Hors ligne
CHANGELOG: la liste est auto-updatée via une url (n'hésitez pas à signaler des pubs manquante ) ; nouveaux seuils pour le volume.
BUG: au démarrage, temps qu'une chanson n'est pas choisie dans Spotify, le son peut se baisser. Il faut le remonter à la main.
dl: spotify.sh
#!/bin/bash
### Variables et lancement de Spotify
###
declare -i volume
volume=100
user=$(echo `whoami`)
env WINEPREFIX="/home/$user/.wine" wine 2>/dev/null "C:\Program Files\Spotify\spotify.exe"&
###################################
### On recupère la liste des Pubs
###
pubpatterns=$(wget -O - http://bit.ly/1ArAH 2>/dev/null)
#######################
### Debut de la Boucle
while [ -e /dev/null ] ;
do
################################################
### On recupere le titre de la chanson Spotify
###
titre=$(echo `wmctrl -l | grep Spotify | cut -d" " -f 5-500`)
###############################################
### On crée un Tilt si une pub est decouverte
###
tilt=$(echo `echo $titre | grep -iE "$pubpatterns"`)
##################################################
### Si le titre contient une des pubs (Tilt non vide ) ET que le volume n est pas négatif
### -> On baisse le volume, mais pas trop vide, sinon Spotify déclenche la pause
###
if [ ! "$tilt" = "" ] && [ $volume -ge 11 ] ; then
volume=$volume-19
echo $volume $titre
aumix -v $volume
sleep 0.2
fi
##############################################################
### Sinon on remonte le volume (Chanson normale OU Pub en pause )
###
if [ "$tilt" = "" ] && [ $volume -lt 110 ] ; then
volume=$volume+10
aumix -v $volume
fi
########################################################
## Pour pas bouffer toutes les ressouces avec la boucle
if [ "$tilt" = "" ] || [ $volume -gt 1 ] ; then
sleep 0.5
fi
done
exit 0Dernière modification par pronoiaque (Le 30/09/2009, à 16:29)
Hors ligne
CHANGELOG: plus de crossfader (pub coupée cash), plus le bug de son faible à demarrage.
TODO, faire moins empirique (détection des pauses et ajustement automatique de la pause )
#!/bin/bash
### Variables et lancement de Spotify
###
declare -i volume
volume=100
aumix -v $volume
user=$(echo `whoami`)
env WINEPREFIX="/home/$user/.wine" wine 2>/dev/null "C:\Program Files\Spotify\spotify.exe"&
###################################
### On recupère la liste des Pubs
###
pubpatterns=$(wget -O - http://bit.ly/1ArAH 2>/dev/null)
#######################
### Debut de la Boucle
while [ -e /dev/null ] ;
do
################################################
### On recupere le titre de la chanson Spotify
###
titre=$(echo `wmctrl -l | grep Spotify | cut -d" " -f 5-500`)
###############################################
### On crée un Tilt si une pub est decouverte
###
tilt=$(echo `echo $titre | grep -iE "$pubpatterns"`)
##################################################
### Si le titre contient une des pubs (Tilt non vide ) ET que le volume est dans un range
### -> On baisse le volume, mais pas trop vide, sinon Spotify déclenche la pause
###
if [ ! "$tilt" = "" ] && [ $volume -gt 17 ] && [ $volume -lt 140 ] ; then
volume=1
aumix -v $volume
sleep 1
volume=17
aumix -v $volume
fi
if [ ! "$tilt" = "" ] && [ $volume -gt 11 ] && [ $volume -le 17 ] ; then
volume=1
aumix -v $volume
sleep 0.6
volume=11
aumix -v $volume
fi
if [ ! "$tilt" = "" ] && [ $volume -gt 6 ] && [ $volume -le 11 ] ; then
volume=1
aumix -v $volume
sleep 0.6
volume=6
aumix -v $volume
fi
if [ ! "$tilt" = "" ] && [ $volume -gt 3 ] && [ $volume -le 6 ] ; then
volume=1
aumix -v $volume
sleep 0.6
volume=3
aumix -v $volume
fi
if [ ! "$tilt" = "" ] && [ $volume -gt 2 ] && [ $volume -le 3 ] ; then
volume=1
aumix -v $volume
sleep 0.6
volume=2
aumix -v $volume
fi
if [ ! "$tilt" = "" ] && [ $volume = 2 ] ; then
volume=1
aumix -v $volume
sleep 0.5
volume=2
aumix -v $volume
sleep 2
fi
if [ "$titre" = "Spotify" ] && [ $volume -le 17 ] ; then
volume=$volume+1
aumix -v $volume
sleep 1
fi
##############################################################
### Sinon on remonte le volume (Chanson normale, sans la pause )
###
if [ "$tilt" = "" ] && [ ! "$titre" = "Spotify" ] && [ $volume -lt 100 ] ; then
volume=100
echo $volume $titre "(" remonte rapide ")"
aumix -v $volume
fi
########################################################
## Pour pas bouffer toutes les ressouces avec la boucle
if [ "$tilt" = "" ] ; then
sleep 0.2
fi
done
exit 0Dernière modification par pronoiaque (Le 28/09/2009, à 23:51)
Hors ligne
* FEATURES: Ce logiciel baisse le volume (à 5%) de votre ordinateur durant les pubs vocales spotify, en détectant le titre de la chanson dans la fenêtre wine. Un contre système remonte légèrement le son au besoin, pour éviter la mise en pause automatique de la pub.
* CHANGELOG: fonctionne maintenant sans seuil empirique et ajout d'un tag de déclenchement (tagueule). 50% plus rapide (moins de pause automatique de spotify)
* BUG: Si une autre fenêtre est ouverte et contient le mot "Spotify" dans le titre, la pub reste en pause 1 fois.
* TODO: Améliorer les tests conditionnels qui se mordent un peu la queue. Descendre le volume plus bas, plus longtemps.
* INSTALL: aumix wmctrl (+ wine et spotify :-))
* DOWNLOAD: spotify.sh
#!/bin/bash
### Variables et lancement de Spotify
###
declare -i volume
declare -i tagueule
tagueule=""
volume=100
aumix -v $volume
user=$(echo `whoami`)
env WINEPREFIX="/home/$user/.wine" wine 2>/dev/null "C:\Program Files\Spotify\spotify.exe"&
###################################
### On récupère la liste des Pubs
###
### ( Merci de me signaler s'il manque des pubs, si possible avec leur titre )
###
pubpatterns=$(wget -O - http://bit.ly/1ArAH 2>/dev/null)
########################################
### On crée un fonction qui détecte le titre de la fenêtre Spotify
### et qui crée un "tilt" si un pub est détectée
function grab_titre
{
titre=$(echo `wmctrl -l | grep Spotify | cut -d" " -f 5-500`)
tilt=$(echo `echo $titre | grep -iE "$pubpatterns"`)
}
#######################
### Début de la Boucle
while [ -e /dev/null ] ;
do
grab_titre
#########################################
#### Pour le cas de la première pub détectée
####
if [ ! "$tilt" = "" ] && [ ! "$titre" = "Spotify" ] && [ $volume -gt 5 ] ; then
volume=1
aumix -v $volume
sleep 0.5
tagueule=1
grab_titre
fi
##########################################################
#### Si une pub est détectée et qu'elle est mise en pause à cause de la baisse du volume
#### - On remonte de deux crans et si elle n'est plus en pause, on la laisse se diffuser (sleep 5)
while [ "$titre" = "Spotify" ] && [ $volume -lt 100 ] && [ $tagueule = 1 ] ;
do
volume=volume+2
aumix -v $volume
grab_titre
if [ ! "$titre" = "Spotify" ] ; then
sleep 5
else
sleep 0.2
fi
done
###########################################################
###
###
while [ ! "$tilt" = "" ] && [ ! "$titre" = "Spotify" ] && [ $tagueule = 1 ] && [ $volume -gt 5 ] ;
do
volume=1
aumix -v $volume
sleep 0.2
grab_titre
done
##############################################################
### Si il n'y a pas de pub, pas de pause et le son même légèrement baissé
### - on remonte le son à 100%: c'est une chanson normale
###
if [ "$tilt" = "" ] && [ ! "$titre" = "Spotify" ] && [ $volume -lt 100 ] ; then
volume=100
aumix -v $volume
tagueule=""
fi
########################################################
## Pour pas bouffer toutes les ressources avec la boucle
if [ "$tilt" = "" ] ; then
sleep 0.2
fi
done
exit 0Dernière modification par pronoiaque (Le 30/09/2009, à 19:08)
Hors ligne
bonjour
après avoir cherché et pas réellement trouvé/compris comment faire marcher ce script ça serait sympa si tu pouvais m'indiquer comment m'en servir, ou me diriger vers un tuto pour que je comprenne comment m'en servir
d'avance merci
Hors ligne
pieeer a écrit:
bonjour
après avoir cherché et pas réellement trouvé/compris comment faire marcher ce script ça serait sympa si tu pouvais m'indiquer comment m'en servir, ou me diriger vers un tuto pour que je comprenne comment m'en servir
d'avance merci
Pour le faire fonctionner, il te faut avoir installer aumix (pour regler le son) et wmctrl (pour lister les fênetres)
Il suffit ensuite de rendre exécutable le script et de le lancer dans une console
En gros, ça donne, si spotify est déjà installé:
sudo aptitude install aumix wmctrl wget -c http://bit.ly/nfV5f -o /tmp/spotify.sh chmod a+x /tmp/spotify.sh sudo mv /tmp/spotify.sh /usr/local/bin/ ./usr/local/bin/spotify.sh
Tu peux après, très façilement faire un lanceur gnome pour faire un raccourci vers ce script.
Sinon, quel est ton message d'erreur ?
Dernière modification par pronoiaque (Le 30/09/2009, à 14:42)
Hors ligne
j'ai bien installé wmctrl et aumix
quand je rentre ta commande il me sort en message d'erreur ceci
je pense qu'il faut que je rende executable le script
si tu peux encore me guider c'est sympa
raoul@raoul-laptop:~$ sudo mv /tmp/spotify.sh /usr/local/bin/
mv: ne peut déplacer `/tmp/spotify.sh' vers `/usr/local/bin/': N'est pas un dossier
Hors ligne
pieeer a écrit:
j'ai bien installé wmctrl et aumix
quand je rentre ta commande il me sort en message d'erreur ceci
je pense qu'il faut que je rende executable le script
si tu peux encore me guider c'est sympa
raoul@raoul-laptop:~$ sudo mv /tmp/spotify.sh /usr/local/bin/
mv: ne peut déplacer `/tmp/spotify.sh' vers `/usr/local/bin/': N'est pas un dossier
Il semblerai que le dossier /usr/local/bin/ n'existe pas, tu peux essayer de mettre le script dans /usr/bin/
Hors ligne
Excellente initiative qui va en énerver plus d'un !
Bravo !
Alors ça marche partiellement chez moi, le son se réduit bien pendant les pubs (insupportables) de Spotify.
Mais quand je mets le volume à 50% par exemple, il se remet à 100% quand la pub est finie... Bon ça me fait sursauter, je me met du café partout mais je suis fan de ton idée. ![]()
Problème résolu avec la nouvelle version du 02/10/09. Merci pour ton boulot !!
Dernière modification par bobbyzzz (Le 03/10/2009, à 03:05)
Hors ligne
bobbyzzz a écrit:
..quand je mets le volume à 50% par exemple, il se remet à 100% quand la pub est finie
Une nouvelle version corrige ce pb et évite les taches de café !!
* DOWNLOAD:spotify.sh (02/10/2009)
#!/bin/bash
### Variables et lancement de Spotify
###
declare -i volume
declare -i tagueule
tagueule=""
user=`whoami`
env WINEPREFIX="/home/$user/.wine" wine 2>/dev/null "C:\Program Files\Spotify\spotify.exe"&
##################################################################"
### Est-ce que les packages necessaires sont installés ?
if [ ! -x /usr/bin/wmctrl ] ; then
zenity --question --text "Le package <b>wmctrl</b> n'est pas detecté.\nVoulez-vous l'installer ?"
if [ $? == "0" ] ; then
gksudo aptitude install wmctrl
fi
fi
if [ ! -x /usr/bin/amixer ] ; then
zenity --question --text "Le package <b>alsa-utils</b> n'est pas detecté.\nVoulez-vous l'installer ?"
if [ $? == "0" ] ; then
gksudo aptitude install alsa-utils
fi
fi
###################################
### On récupère la liste des Pubs
###
### ( Merci de me signaler s'il manque des pubs, si possible avec leur titre )
###
pubpatterns=$(wget -O - http://bit.ly/1ArAH 2>/dev/null)
########################################
### On crée un fonction qui détecte le titre de la fenêtre Spotify
### et qui crée un "tilt" si un pub est détectée
function grab_titre
{
titre=$(echo `wmctrl -l | grep Spotify | cut -d" " -f 5-500`)
tilt=$(echo `echo $titre | grep -iE "$pubpatterns"`)
}
######################################
### Une pour recuperer les valeurs du volume (Master + PCM ) de l'utilisateur
###
function get_user_vol
{
VolMaster=`amixer -c 0 cget name='Master Playback Volume' | grep : | sed 's/^.*=\([^,]*\).*$/\1/'`
VolPCM=`amixer -c 0 cget name='PCM Playback Volume' | grep : | sed 's/^.*=\([^,]*\).*$/\1/'`
}
################################################
### Pour les reinjecter après une pub
function put_user_vol
{
amixer -q cset name='Master Playback Volume' $VolMaster
amixer -q cset name='PCM Playback Volume' $VolPCM
}
#############################################
### Pour Regler le Mixer PCM à une certain valeur
###
function setvolume
{
amixer -c 0 cset name='PCM Playback Volume' $1
}
###########################################
### le Volume PCM sert de 1 niveau
###
get_user_vol
volume=$VolPCM
###################################################
### Début de la Boucle - temps que Spotify tourne
while [ ! "`ps x | grep spotify.exe | grep -v grep`" = "" ] ;
do
grab_titre
#########################################
#### Pour le cas de la première pub détectée
####
if [ ! "$tilt" = "" ] && [ ! "$titre" = "Spotify" ] && [ $volume -gt 5 ] ; then
volume=1
setvolume $volume 2>/dev/null
sleep 0.5
tagueule=1
grab_titre
fi
##########################################################
#### Si une pub est détectée et qu'elle est mise en pause à cause de la baisse du volume
#### - On remonte de deux crans et si elle n'est plus en pause, on la laisse se diffuser (sleep 5)
while [ "$titre" = "Spotify" ] && [ $volume -lt $VolPCM ] && [ $tagueule = 1 ] ;
do
volume=volume+2
setvolume $volume 2>/dev/null
grab_titre
if [ ! "$titre" = "Spotify" ] ; then
sleep 5
else
sleep 0.2
fi
done
###########################################################
###
###
while [ ! "$tilt" = "" ] && [ ! "$titre" = "Spotify" ] && [ $tagueule = 1 ] && [ $volume -gt 5 ] ;
do
volume=1
setvolume $volume 2>/dev/null
sleep 0.2
grab_titre
done
##############################################################
### Si il n'y a pas de pub, pas de pause et le son même légèrement baissé
### - on remonte le son au niveau du volume de l'utilisateur
###
if [ "$tilt" = "" ] && [ ! "$titre" = "Spotify" ] && [ $volume -lt $VolPCM ] ; then
put_user_vol
tagueule=""
fi
################################################################
## Pour pas bouffer toutes les ressources avec la boucle
## - On en profite pour check le volume choisi par l'utilisateur
##
if [ "$tilt" = "" ] && [ ! "$titre" = "Spotify" ] && [ $volume -ge $VolPCM ] ; then
sleep 0.2
get_user_vol
fi
done
exit 0Dernière modification par pronoiaque (Le 02/10/2009, à 14:03)
Hors ligne
EDIT: dsl y'avait un bug dans mon bash... le jour où je comprendrais la syntaxe des comparaison en bash, je passe developpeur autotools...
Après usage (tip top au fait), je propose une version un peu améliorée, qui corrige :
1. le proc à fond tant que spotify tourne pas (aucun "if" n'etait valide, donc bouclage sans sleep)
2. faire le put_user_vol que si "$tagueule" != "" , sinon je peux plus changer le volume de ma machine ![]()
#!/bin/bash
### Variables et lancement de Spotify
###
declare -i volume
declare -i tagueule
tagueule=""
user=`whoami`
env WINEPREFIX="/home/$user/.wine" wine 2>/dev/null "C:\Program Files\Spotify\spotify.exe"&
##################################################################"
### Est-ce que les packages necessaires sont installés ?
if [ ! -x /usr/bin/wmctrl ] ; then
zenity --question --text "Le package <b>wmctrl</b> n'est pas detecté.\nVoulez-vous l'installer ?"
if [ $? == "0" ] ; then
gksudo aptitude install wmctrl
fi
fi
if [ ! -x /usr/bin/amixer ] ; then
zenity --question --text "Le package <b>alsa-utils</b> n'est pas detecté.\nVoulez-vous l'installer ?"
if [ $? == "0" ] ; then
gksudo aptitude install alsa-utils
fi
fi
###################################
### On récupère la liste des Pubs
###
### ( Merci de me signaler s'il manque des pubs, si possible avec leur titre )
###
pubpatterns=$(wget -O - http://bit.ly/1ArAH 2>/dev/null)
########################################
### On crée un fonction qui détecte le titre de la fenêtre Spotify
### et qui crée un "tilt" si un pub est détectée
function grab_titre
{
titre=$(echo `wmctrl -l | grep Spotify | cut -d" " -f 5-500`)
tilt=$(echo `echo $titre | grep -iE "$pubpatterns"`)
}
######################################
### Une pour recuperer les valeurs du volume (Master + PCM ) de l'utilisateur
###
function get_user_vol
{
VolMaster=`amixer -c 0 cget name='Master Playback Volume' | grep : | sed 's/^.*=\([^,]*\).*$/\1/'`
VolPCM=`amixer -c 0 cget name='PCM Playback Volume' | grep : | sed 's/^.*=\([^,]*\).*$/\1/'`
}
################################################
### Pour les reinjecter après une pub
function put_user_vol
{
amixer -q cset name='Master Playback Volume' $VolMaster
amixer -q cset name='PCM Playback Volume' $VolPCM
}
#############################################
### Pour Regler le Mixer PCM à une certain valeur
###
function setvolume
{
amixer -c 0 cset name='PCM Playback Volume' $1
}
###########################################
### le Volume PCM sert de 1 niveau
###
get_user_vol
volume=$VolPCM
###################################################
### Début de la Boucle - temps que Spotify tourne
while [ ! "`ps x | grep spotify.exe | grep -v grep`" = "" ] ;
do
grab_titre
#########################################
#### Pour le cas de la première pub détectée
####
if [ ! "$tilt" = "" ] && [ ! "$titre" = "Spotify" ] && [ $volume -gt 5 ] ; then
volume=1
setvolume $volume 2>/dev/null
sleep 0.5
tagueule=1
grab_titre
fi
##########################################################
#### Si une pub est détectée et qu'elle est mise en pause à cause de la baisse du volume
#### - On remonte de deux crans et si elle n'est plus en pause, on la laisse se diffuser (sleep 5)
while [ "$titre" = "Spotify" ] && [ $volume -lt $VolPCM ] && [ $tagueule = 1 ] ;
do
volume=volume+2
setvolume $volume 2>/dev/null
grab_titre
if [ ! "$titre" = "Spotify" ] ; then
sleep 5
else
sleep 0.2
fi
done
###########################################################
###
###
while [ ! "$tilt" = "" ] && [ ! "$titre" = "Spotify" ] && [ $tagueule = 1 ] && [ $volume -gt 5 ] ;
do
volume=1
setvolume $volume 2>/dev/null
sleep 0.2
grab_titre
done
##############################################################
### Si il n'y a pas de pub, pas de pause et le son même légèrement baissé
### - on remonte le son au niveau du volume de l'utilisateur
###
if [ $tagueule = 1 ] && [ "$tilt" = "" ] && [ ! "$titre" = "Spotify" ] && [ $volume -lt $VolPCM ] ; then
put_user_vol
tagueule=0
fi
################################################################
## Pour pas bouffer toutes les ressources avec la boucle
## - On en profite pour check le volume choisi par l'utilisateur
##
if [ "$tilt" = "" ] && [ ! "$titre" = "Spotify" ] && [ $volume -ge $VolPCM ] ; then
sleep 0.2
get_user_vol
fi
sleep 0.2
done
exit 0sinon, toujours dans le but de réduire la charge du script, faudrait trouver une soluce pour que ça passe pas son temps à récupérer le volume de l'utilisateur. Dans un monde parfait, faudrait que ça fasse ça que juste avant que tu commences à baisser le son.
Dernière modification par aidos (Le 02/10/2009, à 16:47)
Hors ligne
Merci !
Que dites vous de mettre le script sous contrôle de version (sous bitbucket/github ?) pour que ça soit plus simple à gérer? (qu'on soit sur d'avoir toujours la bonne et dernière version)
Pronoiaque, est-ce que le script est libre de droits, et si oui, sous quelle licence ? Qu'on puisse le mettre à dispo de tout le monde ![]()
Hors ligne
Que dites vous de mettre le script sous contrôle de version (sous bitbucket/github ?)
Je ne connais pas grandchose au controle de version (j'utilise seulement pastebin.com ) mais je viens d'ouvrir vite fait un compte github ici --> Spotify.sh.
C'est bon ametaireau, ya les droits publiques pour que vous puissiez modifier ?
sous quelle licence ?
GNU GPL (v2) of course :-p
Hors ligne
Ok génial ! Je fait quelques modifs sur la forme, sur mon fork
Si tu veux les incorporer, libre à toi!
Merci pour ton boulot !
Hors ligne
J'arrive pas à faire le commit de tes modifs (README.md et `$WINEPREFIX` sur spotify.sh )
Sous Github je fais un "Update Branch" dans ma "Fork Queue" mais ne change rien.
Et en console, j'suis encore trop newbie pour savoir faire...
Hors ligne
Hors ligne
Salut,
ton petit bash m'a l'air intéressant et je l'ai essayé ![]()
Par contre en suivant ton install, je n'arrive pas à le faire fonctionner.
Je dois pour cela, copier ton bash dans le fichier spotify.sh qu'y a été créé par l'install.
A ce moment, spotify se lance avec ton bash. Par contre les pubs passent tjs (pas de baisse de son) pourtant j'ai suivi ce que tu as marqué avec wmctrl et aumix et alsa-utils.
Le hic c'est que je n'ai pas de message d'erreur quand je lance via la console, je t'aide pas bcp là, si tu vois des tests, je peux essayer de voir ca.
Cordialement,
Hors ligne
salut,
de la manière que tu me l'as donné, le programme se lance en console avec le bash sous un autre nom pour éviter le problème de non différenciation des fenêtres.
Par contre maintenant, la pub y est tjs et sans message d'erreur.
Edit du 14/10/2009: Après réinstallation de ubuntu, ton script fonctionne parfaitement. ![]()
Dernière modification par debut (Le 14/10/2009, à 19:53)
Hors ligne
Il y a une version en python:
http://nils.hamerlinck.fr/spotify_mute_audio_ads.py
#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-
#
# Pour mettre automatiquement en sourdine les pubs audio de Spotify
#
# . URL : http://nils.hamerlinck.fr/spotify_mute_audio_ads.py
# . Version : 20091027
# . Tags : spotify, mute, ads, pub
# . Dépendances : python-wnck, python-alsaaudio
import codecs, locale, os, sys
sys.stdout = codecs.getwriter('utf-8')(sys.stdout)
import gtk
import wnck
import re
import alsaaudio
RE_ADS = re.compile('Spotify - Spotify|Spotify - Sony Music|Spotify - Universal Music|Spotify - Unicef')
def test_regex():
for l in codecs.open('titres.txt'):
print '%s: %s' % (l[:-1], (RE_ADS.search(l) and 'AD' or 'SONG'))
mixer = alsaaudio.Mixer('Master')
def mute():
global mixer
mixer.setmute(True)
def unmute():
global mixer
mixer.setmute(False)
muted = False
def window_name_changed(window):
global muted
name = window.get_name()
print name,
if RE_ADS.search(name):
print 'AD'
if not muted:
mute()
muted = True
else:
print
if muted:
unmute()
muted = False
def main():
screen = wnck.screen_get_default()
while gtk.events_pending():
gtk.main_iteration()
found = False
for window in screen.get_windows():
if window.has_name():
name = window.get_name()
if 'Spotify' in name:
window.connect('name_changed', window_name_changed)
found = True
break
if found:
gtk.main()
else:
print 'Spotify not found.'
if __name__ == '__main__':
main()
#test_regex()dépendance:
sudo aptitude install python python-wnck python-alsaaudio
et
dès que vous voulez l'utiliser:
python /dossier/spotify-mute-audio-ads.py
Source: http://www.tux-planet.fr/supprimer-les- … s-spotify/
Hors ligne