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 26/09/2009, à 21:01

pronoiaque

[script] couper la pub dans SPOTIFY

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:
20/11/2010: Bug sous Maverick corrigé (certificat wget) thx @oreyoyo
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 (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 pronoiaque (Le 21/11/2010, à 14:44)


"la télé commande" -  AntiPubs Spotify

Hors ligne

#2 Le 26/09/2009, à 21:59

Cowa

Re : [script] couper la pub dans SPOTIFY

Mais comment il fait pour couper les pubs?
J'arrive pas comprendre comment ce simple petit script peut bloquer ces pubs smile


Merci en tout cas :,)
J'essayerais dès que possible

Hors ligne

#3 Le 27/09/2009, à 00:31

pronoiaque

Re : [script] couper la pub dans SPOTIFY

ç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)


"la télé commande" -  AntiPubs Spotify

Hors ligne

#4 Le 27/09/2009, à 12:57

Cowa

Re : [script] couper la pub dans SPOTIFY

Ah daccord, je comprend maintenant :,)

Merci.

Hors ligne

#5 Le 27/09/2009, à 14:38

pronoiaque

Re : [script] couper la pub dans SPOTIFY

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 0

Dernière modification par pronoiaque (Le 27/09/2009, à 20:48)


"la télé commande" -  AntiPubs Spotify

Hors ligne

#6 Le 27/09/2009, à 15:27

pronoiaque

Re : [script] couper la pub dans SPOTIFY

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 0

"la télé commande" -  AntiPubs Spotify

Hors ligne

#7 Le 27/09/2009, à 15:33

wido

Re : [script] couper la pub dans SPOTIFY

Bonjour,
peut-être mettre ton script dans la doc?
http://doc.ubuntu-fr.org/spotify

Hors ligne

#8 Le 27/09/2009, à 20:35

pronoiaque

Re : [script] couper la pub dans SPOTIFY

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: [url=http://[Merci de relire les règles]/4oEgLL]spotify.sh[/url]

#!/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://[color=red][b][Merci de relire les règles][/b][/color]/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 0

Dernière modification par pronoiaque (Le 30/09/2009, à 16:29)


"la télé commande" -  AntiPubs Spotify

Hors ligne

#9 Le 28/09/2009, à 23:45

pronoiaque

Re : [script] couper la pub dans SPOTIFY

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://[color=red][b][Merci de relire les règles][/b][/color]/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 0

Dernière modification par pronoiaque (Le 28/09/2009, à 23:51)


"la télé commande" -  AntiPubs Spotify

Hors ligne

#10 Le 30/09/2009, à 13:28

pronoiaque

Re : [script] couper la pub dans SPOTIFY

* 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: [url=http://[Merci de relire les règles]/nfV5f]spotify.sh[/url]

#!/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://[color=red][b][Merci de relire les règles][/b][/color]/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 0

Dernière modification par pronoiaque (Le 30/09/2009, à 19:08)


"la télé commande" -  AntiPubs Spotify

Hors ligne

#11 Le 30/09/2009, à 14:16

pieeer

Re : [script] couper la pub dans SPOTIFY

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

#12 Le 30/09/2009, à 14:39

pronoiaque

Re : [script] couper la pub dans SPOTIFY

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://[color=red][b][Merci de relire les règles][/b][/color]/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)


"la télé commande" -  AntiPubs Spotify

Hors ligne

#13 Le 01/10/2009, à 14:20

pieeer

Re : [script] couper la pub dans SPOTIFY

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

#14 Le 01/10/2009, à 17:52

pronoiaque

Re : [script] couper la pub dans SPOTIFY

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/


"la télé commande" -  AntiPubs Spotify

Hors ligne

#15 Le 01/10/2009, à 23:42

bobbyzzz

Re : [script] couper la pub dans SPOTIFY

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. big_smile


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

#16 Le 02/10/2009, à 14:01

pronoiaque

Re : [script] couper la pub dans SPOTIFY

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:[url=http://[Merci de relire les règles]/4oEgL]spotify.sh[/url] (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://[color=red][b][Merci de relire les règles][/b][/color]/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 0

Dernière modification par pronoiaque (Le 02/10/2009, à 14:03)


"la télé commande" -  AntiPubs Spotify

Hors ligne

#17 Le 02/10/2009, à 15:52

aidos

Re : [script] couper la pub dans SPOTIFY

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 smile

#!/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://[color=red][b][Merci de relire les règles][/b][/color]/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 0

sinon, 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

#18 Le 02/10/2009, à 17:06

ametaireau

Re : [script] couper la pub dans SPOTIFY

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 smile

Hors ligne

#19 Le 02/10/2009, à 17:46

pronoiaque

Re : [script] couper la pub dans SPOTIFY

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


"la télé commande" -  AntiPubs Spotify

Hors ligne

#20 Le 02/10/2009, à 18:38

ametaireau

Re : [script] couper la pub dans SPOTIFY

Ok génial ! Je fait quelques modifs sur la forme, sur mon fork smile Si tu veux les incorporer, libre à toi!

Merci pour ton boulot !

Hors ligne

#21 Le 02/10/2009, à 19:11

pronoiaque

Re : [script] couper la pub dans SPOTIFY

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...


"la télé commande" -  AntiPubs Spotify

Hors ligne

#22 Le 04/10/2009, à 12:34

pronoiaque

Re : [script] couper la pub dans SPOTIFY

Nouvelle version.


"la télé commande" -  AntiPubs Spotify

Hors ligne

#23 Le 06/10/2009, à 21:07

debut

Re : [script] couper la pub dans SPOTIFY

Salut,

ton petit bash m'a l'air intéressant et je l'ai essayé big_smile

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

#24 Le 07/10/2009, à 20:25

debut

Re : [script] couper la pub dans SPOTIFY

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. big_smile

Dernière modification par debut (Le 14/10/2009, à 19:53)

Hors ligne

#25 Le 28/10/2009, à 19:15

wido

Re : [script] couper la pub dans SPOTIFY

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