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 01/07/2006, à 14:42

kezar

[X-Chat] Script Play pour Listen

Je reposte ici histoire de pas polluer le post Listen (topic à déplacer dans dev peut-être).

J'ai fait un script pour X-Chat qui permet d'afficher la chanson en cours de lecture dans Listen.

#!/usr/bin/perl
# Le fichier .current-song dans le HOME de l'utilisateur contient le nom de
# la chanson actuellement jouée dans Listen
$path="$ENV{HOME}/.current-song";

# Enregistrement du script dans X-Chat
IRC::register('Listen Currently Playing','0.1','','');
IRC::add_command_handler('PLAY','play');
# Aide affichée au chargement
IRC::print("[play] play pour Listen chargé. Tapez /play pour afficher le nom de la chanson en cours de lecture dans la discussion courante.");

sub play {
	# Ouverture du fichier
	open(CURR,$path) || warn("\002\038!!! Impossible d'ouvrir le fichier .current-song !!!\n");
	# Lecture du fichier
	$curr1=<CURR>;
	$curr2=<CURR>;
	$curr3=<CURR>;
	# Suppression du numéro de piste (facultatif)
	($curr1, $curr1b) = split(/\s-\s/, $curr1);
	# Suppression des balises HTML et remplacement du &amp; par &
	$curr2=~ s/<i>//;
	$curr1b=~ s/<\/b>//;
	$curr1b=~ s/\n//;
	$curr2=~ s/\n//;
	$curr1b=~ s/\&amp\;/\&/;
	$curr2=~ s/<\/i>//;
	# Affichage
	IRC::command ("/me écoute $curr2 - $curr1b     ($curr3)");
	# Fermeture du fichier
	close(CURR);
	return 1;
}

A mettre dans un fichier texte et à charger dans X-Chat (placer directement le fichier dans ~/.xchat2 pour un chargement automatique au démarrage).
Vu que j'ai jamais fait de perl de ma vie j'aimerais des commentaires (améliorations etc). Merci smile
En espérant que ça soit utile à quelqu'un...

Hors ligne

#2 Le 02/07/2006, à 15:56

kezar

Re : [X-Chat] Script Play pour Listen

Une petite up, mise à jour (encore en test mais ça semble bien fonctionner) pour gérer les podcasts correctement.

#!/usr/bin/perl
# Le fichier .current-song dans le HOME de l'utilisateur contient le nom de
# la chanson actuellement jouée dans Listen
$path="$ENV{HOME}/.current-song";

# Enregistrement du script dans X-Chat
IRC::register('Listen Currently Playing','0.2','','');
IRC::add_command_handler('PLAY','play');
# Aide affichée au chargement
IRC::print("[play] play pour Listen chargé. Tapez /play pour afficher le nom de la chanson en cours de lecture dans la discussion courante.");

sub play {
	# Ouverture du fichier
	open(CURR,$path) || warn("\002\038!!! Impossible d'ouvrir le fichier .current-song !!!\n");
	# Lecture du fichier
	$curr1=<CURR>;
	$curr2=<CURR>;
	$curr3=<CURR>;
	if ($curr1 =~ /-/)
	{
		# Suppression du numéro de piste (facultatif)
		($curr1, $curr1b) = split(/\s-\s/, $curr1);
		# Suppression des balises HTML et remplacement du &amp; par &
		$curr2 =~ s/<i>//;
		$curr1b =~ s/<\/b>//;
		$curr1b =~ s/\n//;
		$curr2 =~ s/\n//;
		$curr1b =~ s/\&amp\;/\&/;
		$curr2 =~ s/\&amp\;/\&/;
		$curr3 =~ s/\&amp\;/\&/;
		$curr2 =~ s/<\/i>//;
		# Affichage
		IRC::command ("/me écoute $curr2 - $curr1b     ($curr3)");
	}
	else
	{
		# Suppression des balises HTML
		$curr1 =~ s/<b>//;
		$curr1 =~ s/<\/b>//;
		$curr1 =~ s/\&amp\;/\&/;
		$curr1 =~ s/\n//;
		# Affichage
		IRC::command ("/me écoute $curr1");
	}
	# Fermeture du fichier
	close(CURR);
	return 1;
}

Comments please  smile


Note : N'oubliez pas l'extension .pl à la fin du nom du fichier sans cela X-chat n'en voudra pas.
Note2 : Ne semple PAS fonctionner avec X-chat-gnome ! Nécessite X-chat.

[edit] Résolution d'un problème de retour chariot.
[edit 2] Résolution des "&" dans les titres d'album et d'artistes qui n'étaient pas traduits (oubli, mea culpa)

Dernière modification par kezar (Le 03/07/2006, à 19:54)

Hors ligne

#3 Le 03/07/2006, à 09:27

Ago

Re : [X-Chat] Script Play pour Listen

C'est sympa, dommage que je n'utilise pas xchat hmm

Tu penses qu'on pourrait l'adapter pour Gajim?


Blog libre <= pour bien se lancer sous Ubuntu Linux !
Linux =/= Windows Souvenez-vous en!

Exalead Fête l'été, viendez gagner des Ipods Nano!

Hors ligne

#4 Le 03/07/2006, à 11:26

kezar

Re : [X-Chat] Script Play pour Listen

Je n'utilise pas Gajim ^^ mais du moment qu'il est possible de faire des scripts qui écrivent dans la fenêtre de discussion (et qu'il est possible de les appeler par un alias, comme /play ici) oui c'est tout à fait faisable.

Hors ligne

#5 Le 03/07/2006, à 14:29

Ago

Re : [X-Chat] Script Play pour Listen

okay, je verrai peut-être ça plus tard, quand je serai plus en stage :x


Blog libre <= pour bien se lancer sous Ubuntu Linux !
Linux =/= Windows Souvenez-vous en!

Exalead Fête l'été, viendez gagner des Ipods Nano!

Hors ligne

#6 Le 03/07/2006, à 19:55

kezar

Re : [X-Chat] Script Play pour Listen

Je vais essayer de me renseigner de mon côté si j'ai un peu de temps pour voir ce que je peux faire (mais déjà là je sais pas comment j'ai écrit ça big_smile première fois que je touche à du perl).

En attendant j'ai fait une tite adaptation pour irssi.

Voila donc ce que ça donne :

Version X-chat (pas X-chat-gnome), playscript_xchat.pl --- l'extension est obligatoire --- à placer dans ~/.xchat pour charger automatiquement au démarrage

#!/usr/bin/perl
# Le fichier .current-song dans le HOME de l'utilisateur contient le nom de
# la chanson actuellement jouée dans Listen
$path="$ENV{HOME}/.current-song";

# Enregistrement du script dans X-Chat
IRC::register('Listen Currently Playing','0.2','','');
IRC::add_command_handler('PLAY','play');
# Aide affichée au chargement
IRC::print("[play] play pour Listen chargé. Tapez /play pour afficher le nom de la chanson en cours de lecture dans la discussion courante.");

sub play {
	# Ouverture du fichier
	open(CURR,$path) || warn("\002\038!!! Impossible d'ouvrir le fichier .current-song !!!\n");
	# Lecture du fichier
	$curr1=<CURR>;
	$curr2=<CURR>;
	$curr3=<CURR>;
	if ($curr1 =~ /-/)
	{
		# Suppression du numéro de piste (facultatif)
		($curr1, $curr1b) = split(/\s-\s/, $curr1);
		# Suppression des balises HTML et remplacement du &amp; par &
		$curr2 =~ s/<i>//;
		$curr1b =~ s/<\/b>//;
		$curr1b =~ s/\n//;
		$curr2 =~ s/\n//;
		$curr2 =~ s/\&amp\;/\&/;
		$curr3 =~ s/\&amp\;/\&/;
		$curr1b =~ s/\&amp\;/\&/;
		$curr2 =~ s/<\/i>//;
		# Affichage
		IRC::command ("/me écoute $curr2 - $curr1b     ($curr3)");
	}
	else
	{
		# Suppression des balises HTML
		$curr1 =~ s/<b>//;
		$curr1 =~ s/<\/b>//;
		$curr1 =~ s/\n//;
		$curr1 =~ s/\&amp\;/\&/;
		# Affichage
		IRC::command ("/me écoute $curr1");
	}
	# Fermeture du fichier
	close(CURR);
	return 1;
}

Version irssi, playscript_irssi.pl --- à placer dans ~/.irssi/scripts/autorun pour charger automatiquement au démarrage

#!/usr/bin/perl
# Le fichier .current-song dans le HOME de l'utilisateur contient le nom de
# la chanson actuellement jouée dans Listen
$path="$ENV{HOME}/.current-song";
use Irssi;
# Aide affichée au chargement
Irssi::print("[play] play pour Listen chargé. Tapez /play pour afficher le nom de la chanson en cours de lecture dans la discussion courante.");

sub play {
	my ($data, $server, $channel) = @_;
	# Ouverture du fichier
	open(CURR,$path) || warn("\002\038!!! Impossible d'ouvrir le fichier .current-song !!!\n");
	# Lecture du fichier
	$curr1=<CURR>;
	$curr2=<CURR>;
	$curr3=<CURR>;
	if ($curr1 =~ /-/)
	{
		# Suppression du numéro de piste (facultatif)
		($curr1, $curr1b) = split(/\s-\s/, $curr1);
		# Suppression des balises HTML et remplacement du &amp; par &
		$curr2 =~ s/<i>//;
		$curr1b =~ s/<\/b>//;
		$curr1b =~ s/\n//;
		$curr2 =~ s/\n//;
		$curr2 =~ s/\&amp\;/\&/;
		$curr3 =~ s/\&amp\;/\&/;
		$curr1b =~ s/\&amp\;/\&/;
		$curr2 =~ s/<\/i>//;
		# Affichage
		$channel->command ("ME écoute $curr2 - $curr1b     ($curr3)");
	}
	else
	{
		# Suppression des balises HTML
		$curr1 =~ s/<b>//;
		$curr1 =~ s/<\/b>//;
		$curr1 =~ s/\n//;
		$curr1 =~ s/\&amp\;/\&/;
		# Affichage
		$channel->command ("ME écoute $curr1");
	}
	# Fermeture du fichier
	close(CURR);
	return 1;
}
# Enregistrement du script dans irssi
Irssi::command_bind('play','play');

En request il y a une adaptation pour gajim et une pour gaim. Si quelqu'un a le courage de jeter un coup d'oeil pour gajim, de mon côté je regarde gaim (ce que j'ai d'installé d'abord big_smile )

Dernière modification par kezar (Le 03/07/2006, à 22:20)

Hors ligne

#7 Le 03/07/2006, à 22:54

kezar

Re : [X-Chat] Script Play pour Listen

Un pour GAIM. Il ne fonctionne pas apparemment (enfin il n'a pas voulu me le charger, j'ai pas cherché très loin non plus mais j'ai la dernière version qui ne semble pas fonctionner de la même façon que les précédentes), si quelqu'un pouvait corriger les erreurs et faire deux trois tests ça pourrait être pas mal. Je n'ai pas trouvé comment ajouter une action par contre, là c'est sensé passer par le menu actions.

#!/usr/bin/perl
# Le fichier .current-song dans le HOME de l'utilisateur contient le nom de
# la chanson actuellement jouée dans Listen
$path="$ENV{HOME}/.current-song";

use Gaim;

%PLUGIN_INFO = (
        perl_api_version => 2,
        name => "Listen Currently Playing",
        version => "0.2",
        summary => "",
        description => "Affiche la lecture en cours dans Listen.",
        author => "",
        url => "",
	plugin_action_sub => "plugin_actions_cb",
        load => "plugin_load",
        unload => "plugin_unload"
);

sub plugin_actions_cb {
    my @actions = ("Lecture en cours dans Listen");
}

%plugin_actions = (
    "Action 1" => \&play);

sub plugin_init {
        return %PLUGIN_INFO;
}

sub plugin_load {
        my $plugin = shift;
	# Aide affichée au chargement
	Gaim::debug_info("plugin_load()", "[play] play pour Listen chargé. Tapez /play pour afficher le nom de la chanson en cours de lecture dans la discussion courante.");
}

sub play {
	# Ouverture du fichier
	open(CURR,$path) || warn("\002\038!!! Impossible d'ouvrir le fichier .current-song !!!\n");
	# Lecture du fichier
	$curr1=<CURR>;
	$curr2=<CURR>;
	$curr3=<CURR>;
	if ($curr1 =~ /-/)
	{
		# Suppression du numéro de piste (facultatif)
		($curr1, $curr1b) = split(/\s-\s/, $curr1);
		# Suppression des balises HTML et remplacement du &amp; par &
		$curr2 =~ s/<i>//;
		$curr1b =~ s/<\/b>//;
		$curr1b =~ s/\n//;
		$curr2 =~ s/\n//;
		$curr2 =~ s/\&amp\;/\&/;
		$curr3 =~ s/\&amp\;/\&/;
		$curr1b =~ s/\&amp\;/\&/;
		$curr2 =~ s/<\/i>//;
		# Affichage
		$im = $conv1->get_im_data();
    		$im->send("/me écoute $curr2 - $curr1b     ($curr3)");
	}
	else
	{
		# Suppression des balises HTML
		$curr1 =~ s/<b>//;
		$curr1 =~ s/<\/b>//;
		$curr1 =~ s/\n//;
		$curr1 =~ s/\&amp\;/\&/;
		# Affichage
		$im = $conv1->get_im_data();
    		$im->send("/me écoute $curr1");
	}
	# Fermeture du fichier
	close(CURR);
	return 1;
}

sub plugin_unload {
        my $plugin = shift;
        Gaim::debug_info("plugin_unload()", "[play] play pour Listen déchargé.");
}

Hors ligne

#8 Le 19/07/2006, à 09:55

hells_dark

Re : [X-Chat] Script Play pour Listen

Tiens, je me permet de remonter ce sujet puisque cette dernière tentative de script m'interresse pas mal?
Quelqu'un pour aider ?

Sinon, je veux bien tester.

PS : ça serait bien si par la suite, yaurait un moyen de mettre la chanson écoutée dans le pseudo.


"You caught me at a strange time in my life."
devianArt - site perso

Hors ligne

#9 Le 23/07/2006, à 15:46

kezar

Re : [X-Chat] Script Play pour Listen

J'ai fait une petite modification (très sale, je l'avoue, faudra que je nettoie un peu) pour envoyer le message sur tous les chans ouverts. (version x-chat uniquement, mais bon pour adapter c'est pas compliqué, reste toujours gaim et gajim hmm )

#!/usr/bin/perl
# Le fichier .current-song dans le HOME de l'utilisateur contient le nom de
# la chanson actuellement jouée dans Listen
$path="$ENV{HOME}/.current-song";

# Enregistrement du script dans X-Chat
IRC::register('Listen Currently Playing','0.2','','');
IRC::add_command_handler('PLAY','play');
IRC::add_command_handler('APLAY','aplay');
# Aide affichée au chargement
IRC::print("[play] play pour Listen chargé. Tapez /play pour afficher le nom de la chanson en cours de lecture dans la discussion courante, /aplay pour l'afficher dans toutes les discussions.");

sub aplay {
	# Ouverture du fichier
	open(CURR,$path) || warn("\002\038!!! Impossible d'ouvrir le fichier .current-song !!!\n");
	# Lecture du fichier
	$curr1=<CURR>;
	$curr2=<CURR>;
	$curr3=<CURR>;
	if ($curr1 =~ /-/)
	{
		# Suppression du numéro de piste (facultatif)
		($curr1, $curr1b) = split(/\s-\s/, $curr1);
		# Suppression des balises HTML et remplacement du &amp; par &
		$curr2 =~ s/<i>//;
		$curr1b =~ s/<\/b>//;
		$curr1b =~ s/\n//;
		$curr2 =~ s/\n//;
		$curr2 =~ s/\&amp\;/\&/;
		$curr3 =~ s/\&amp\;/\&/;
		$curr1b =~ s/\&amp\;/\&/;
		$curr2 =~ s/<\/i>//;
		# Affichage
		IRC::command ("/ame écoute $curr2 - $curr1b     ($curr3)");
	}
	else
	{
		# Suppression des balises HTML
		$curr1 =~ s/<b>//;
		$curr1 =~ s/<\/b>//;
		$curr1 =~ s/\n//;
		$curr1 =~ s/\&amp\;/\&/;
		# Affichage
		IRC::command ("/ame écoute $curr1");
	}
	# Fermeture du fichier
	close(CURR);
	return 1;
}

sub play {
	# Ouverture du fichier
	open(CURR,$path) || warn("\002\038!!! Impossible d'ouvrir le fichier .current-song !!!\n");
	# Lecture du fichier
	$curr1=<CURR>;
	$curr2=<CURR>;
	$curr3=<CURR>;
	if ($curr1 =~ /-/)
	{
		# Suppression du numéro de piste (facultatif)
		($curr1, $curr1b) = split(/\s-\s/, $curr1);
		# Suppression des balises HTML et remplacement du &amp; par &
		$curr2 =~ s/<i>//;
		$curr1b =~ s/<\/b>//;
		$curr1b =~ s/\n//;
		$curr2 =~ s/\n//;
		$curr2 =~ s/\&amp\;/\&/;
		$curr3 =~ s/\&amp\;/\&/;
		$curr1b =~ s/\&amp\;/\&/;
		$curr2 =~ s/<\/i>//;
		# Affichage
		IRC::command ("/me écoute $curr2 - $curr1b     ($curr3)");
	}
	else
	{
		# Suppression des balises HTML
		$curr1 =~ s/<b>//;
		$curr1 =~ s/<\/b>//;
		$curr1 =~ s/\n//;
		$curr1 =~ s/\&amp\;/\&/;
		# Affichage
		IRC::command ("/me écoute $curr1");
	}
	# Fermeture du fichier
	close(CURR);
	return 1;
}

J'ai également repéré un bug dans l'affichage du nom de piste lorsqu'il contient un "-" (tout ce qui est situé après n'est pas pris), qu'il faudra que je corrige.

Dernière modification par kezar (Le 23/07/2006, à 15:47)

Hors ligne

#10 Le 09/08/2006, à 10:47

Dolf Andringa

Re : [X-Chat] Script Play pour Listen

I've translated the IRC messages into english. Just for non french speaking people (fortunately I speak enough french to be able to understand this smile
Thanks for the script. It works nicely.


#!/usr/bin/perl
# Le fichier .current-song dans le HOME de l'utilisateur contient le nom de
# la chanson actuellement jouée dans Listen
$path="$ENV{HOME}/.current-song";

# Enregistrement du script dans X-Chat
IRC::register('Listen Currently Playing','0.2','','');
IRC::add_command_handler('PLAY','play');
# Aide affichée au chargement
IRC::print("[play] play for Listen music player. Type /play to announce the name of the current playing song in the current channel.");

sub play {
    # Ouverture du fichier
    open(CURR,$path) || warn("\002\038!!! I can't open the file .current-song !!!\n");
    # Lecture du fichier
    $curr1=<CURR>;
    $curr2=<CURR>;
    $curr3=<CURR>;
    if ($curr1 =~ /-/)
    {
        # Suppression du numéro de piste (facultatif)
        ($curr1, $curr1b) = split(/\s-\s/, $curr1);
        # Suppression des balises HTML et remplacement du &amp; par &
        $curr2 =~ s/<i>//;
        $curr1b =~ s/<\/b>//;
        $curr1b =~ s/\n//;
        $curr2 =~ s/\n//;
        $curr1b =~ s/\&amp\;/\&/;
        $curr2 =~ s/\&amp\;/\&/;
        $curr3 =~ s/\&amp\;/\&/;
        $curr2 =~ s/<\/i>//;
        # Affichage
        IRC::command ("/me enjoys $curr2 - $curr1b     ($curr3)");
    }
    else
    {
        # Suppression des balises HTML
        $curr1 =~ s/<b>//;
        $curr1 =~ s/<\/b>//;
        $curr1 =~ s/\&amp\;/\&/;
        $curr1 =~ s/\n//;
        # Affichage
        IRC::command ("/me enjoys $curr1");
    }
    # Fermeture du fichier
    close(CURR);
    return 1;
}

#11 Le 24/09/2006, à 14:45

topgun

Re : [X-Chat] Script Play pour Listen

hello tout le monde smile
Kezar j'ai un souci d'affichage avec le titre peut-être n'est-il pas compatible avec listen 0.5 bêta car il m'affiche une chanson différente que celle que j'écoute

Hors ligne

#12 Le 25/09/2006, à 18:07

kezar

Re : [X-Chat] Script Play pour Listen

En effet le script utilise le fichier .current-song qui est créé et mis à jour par listen dans le home de l'utilisateur. Or apparemment la 0.5 fonctionne différemment. Je vais essayer de me renseigner pour voir si la fonction existe toujours (normalement il ne devrait pas y avoir de problème, elle n'est peut-être tout simplement pas encore implantée).

Hors ligne

#13 Le 09/03/2007, à 22:11

Karpatt

Re : [X-Chat] Script Play pour Listen

Up ! Quelqu'un a trouvé pour faire fonctionner le script sur Listen 0.5 ??

Hors ligne

#14 Le 09/03/2007, à 22:24

Compte supprimé

Re : [X-Chat] Script Play pour Listen

et pour rhythmbox? tongue

#15 Le 10/03/2007, à 00:54

kezar

Re : [X-Chat] Script Play pour Listen

http://www.uphaar.org/gnulinux/cool_scripts.php à tester

Hors ligne

#16 Le 20/03/2007, à 22:39

Karpatt

Re : [X-Chat] Script Play pour Listen

UP ! Pour un script pour Listen 0.5...  a tout les programateurs en herbes... un script existe pour amsn (plugin music).. donc je pense que cela soit possible... si besoin je copie le script pour amsn sur le forum !

Merci

Hors ligne

#17 Le 22/04/2007, à 21:28

Karpatt

Re : [X-Chat] Script Play pour Listen

un UP !

rappelle... modifier le script pour afficher la chanson joué avec Listen dans X-Chat...

Il existe un plugin aMSN de Listen.... voila ce que jai trouvé dans un fichier nommé infolisten :

#Thanks to Dennis "dweazle" Krul for the bash-magic
#Modified a little for listen patux@patux.net
LISTEN=`ps aux | grep python | grep listen | grep -v grep | grep -v info`
if [ -n "$LISTEN" ]
then
    listen -c
else
    echo 0
fi
exit 0


Donc qqch de tres différent du patch de X-chat....  mais si qqun comprend qqch et arrive a modifié le patch pour X-chat ca serait vraiment cool !!

Merci

Hors ligne

#18 Le 23/04/2007, à 19:02

Karpatt

Re : [X-Chat] Script Play pour Listen

Up !

Hors ligne

#19 Le 24/04/2007, à 22:08

kezar

Re : [X-Chat] Script Play pour Listen

Je ne sais pas si le script fonctionne toujours avec la 0.5, mais si il suffit de faire un listen -c bah ça sera pas bien dur à adapter (amarok est quand même plus simple avec dcop roll )

Hors ligne

#20 Le 25/04/2007, à 11:50

Karpatt

Re : [X-Chat] Script Play pour Listen

ben.. si t'arrives a modifier le script... je t'en serai énternellement reconnaissant big_smile !!

Hors ligne

#21 Le 26/04/2007, à 23:34

kezar

Re : [X-Chat] Script Play pour Listen

Bon allez vite fait sans remise en forme de la sortie


#!/usr/bin/perl
# Enregistrement du script dans X-Chat
IRC::register('Listen Currently Playing','0.2','','');
IRC::add_command_handler('PLAY','play');
IRC::add_command_handler('APLAY','aplay');
# Aide affichée au chargement
IRC::print("[play] play pour Listen chargé. Tapez /play pour afficher le nom de la chanson en cours de lecture dans la discussion courante, /aplay pour l'afficher dans toutes les discussions.");

sub aplay {
    $chanson=`listen -c`;
    chop($chanson);
    if($chanson ne "Aucune chanson en cours")
    {
        IRC::command ("/ame écoute $chanson");
    }
    else
    {
        IRC::print("[play] $chanson");
    }
    return 1;
}

sub play {
    $chanson=`listen -c`;
    chop($chanson);
    if($chanson ne "Aucune chanson en cours")
    {
        IRC::command ("/me écoute $chanson");
    }
    else
    {
        IRC::print("[play] $chanson");
    }
    return 1;
}

Faudra ptet que je me mette au perl un jour.

Dernière modification par kezar (Le 26/04/2007, à 23:34)

Hors ligne

#22 Le 27/04/2007, à 17:05

Karpatt

Re : [X-Chat] Script Play pour Listen

merci... ca fonctionne au poil... big_smile:D:D:D:D:D

Hors ligne