Mercurial > audlegacy
annotate contrib/xchat-audacious.py @ 2773:cd9311fed796 trunk
[svn] A few more xchat-audacious.py corrections:
- Oops. "return None" --> "return xchat.EAT_ALL"
- Compacted the code a bit more.
author | deitarion |
---|---|
date | Wed, 16 May 2007 00:24:43 -0700 |
parents | 3c2786bbcf36 |
children | 57363f3ded79 |
rev | line source |
---|---|
2740
a67712c75069
[svn] - add an xchat script which wraps our DBus API using dbus-python.
nenolod
parents:
diff
changeset
|
1 # |
a67712c75069
[svn] - add an xchat script which wraps our DBus API using dbus-python.
nenolod
parents:
diff
changeset
|
2 # X-Chat Audacious for Audacious 1.4 and later |
a67712c75069
[svn] - add an xchat script which wraps our DBus API using dbus-python.
nenolod
parents:
diff
changeset
|
3 # This uses the native Audacious D-Bus interface. |
a67712c75069
[svn] - add an xchat script which wraps our DBus API using dbus-python.
nenolod
parents:
diff
changeset
|
4 # |
a67712c75069
[svn] - add an xchat script which wraps our DBus API using dbus-python.
nenolod
parents:
diff
changeset
|
5 # To consider later: |
a67712c75069
[svn] - add an xchat script which wraps our DBus API using dbus-python.
nenolod
parents:
diff
changeset
|
6 # - support org.freedesktop.MediaPlayer (MPRIS)? |
a67712c75069
[svn] - add an xchat script which wraps our DBus API using dbus-python.
nenolod
parents:
diff
changeset
|
7 # |
2752
1ca3b314301d
[svn] - add /SENDTRACK which can DCC the current track to a user
nenolod
parents:
2751
diff
changeset
|
8 # This script is in the public domain. |
2773
cd9311fed796
[svn] A few more xchat-audacious.py corrections:
deitarion
parents:
2772
diff
changeset
|
9 # $Id: xchat-audacious.py 4572 2007-05-16 07:24:43Z deitarion $ |
2752
1ca3b314301d
[svn] - add /SENDTRACK which can DCC the current track to a user
nenolod
parents:
2751
diff
changeset
|
10 # |
2740
a67712c75069
[svn] - add an xchat script which wraps our DBus API using dbus-python.
nenolod
parents:
diff
changeset
|
11 |
a67712c75069
[svn] - add an xchat script which wraps our DBus API using dbus-python.
nenolod
parents:
diff
changeset
|
12 __module_name__ = "xchat-audacious" |
a67712c75069
[svn] - add an xchat script which wraps our DBus API using dbus-python.
nenolod
parents:
diff
changeset
|
13 __module_version__ = "1.0" |
a67712c75069
[svn] - add an xchat script which wraps our DBus API using dbus-python.
nenolod
parents:
diff
changeset
|
14 __module_description__ = "Get NP information from Audacious" |
a67712c75069
[svn] - add an xchat script which wraps our DBus API using dbus-python.
nenolod
parents:
diff
changeset
|
15 |
2772 | 16 from dbus import Bus, DBusException, Interface |
2740
a67712c75069
[svn] - add an xchat script which wraps our DBus API using dbus-python.
nenolod
parents:
diff
changeset
|
17 import xchat |
a67712c75069
[svn] - add an xchat script which wraps our DBus API using dbus-python.
nenolod
parents:
diff
changeset
|
18 |
a67712c75069
[svn] - add an xchat script which wraps our DBus API using dbus-python.
nenolod
parents:
diff
changeset
|
19 # connect to DBus |
a67712c75069
[svn] - add an xchat script which wraps our DBus API using dbus-python.
nenolod
parents:
diff
changeset
|
20 bus = Bus(Bus.TYPE_SESSION) |
a67712c75069
[svn] - add an xchat script which wraps our DBus API using dbus-python.
nenolod
parents:
diff
changeset
|
21 |
2772 | 22 def get_aud(): |
23 try: | |
24 return bus.get_object('org.atheme.audacious', '/org/atheme/audacious') | |
25 except DBusException: | |
26 print "\x02Either Audacious is not running or you have something wrong with your D-Bus setup." | |
27 return None | |
28 | |
2740
a67712c75069
[svn] - add an xchat script which wraps our DBus API using dbus-python.
nenolod
parents:
diff
changeset
|
29 def command_np(word, word_eol, userdata): |
2772 | 30 aud = get_aud() |
31 if not aud: | |
2773
cd9311fed796
[svn] A few more xchat-audacious.py corrections:
deitarion
parents:
2772
diff
changeset
|
32 return xchat.EAT_ALL |
2740
a67712c75069
[svn] - add an xchat script which wraps our DBus API using dbus-python.
nenolod
parents:
diff
changeset
|
33 |
2773
cd9311fed796
[svn] A few more xchat-audacious.py corrections:
deitarion
parents:
2772
diff
changeset
|
34 length = aud.SongLength(aud.Position()) |
cd9311fed796
[svn] A few more xchat-audacious.py corrections:
deitarion
parents:
2772
diff
changeset
|
35 length = (length > 0) and ("%d:%02d" % (length / 60, length % 60)) or "stream" |
2740
a67712c75069
[svn] - add an xchat script which wraps our DBus API using dbus-python.
nenolod
parents:
diff
changeset
|
36 |
a67712c75069
[svn] - add an xchat script which wraps our DBus API using dbus-python.
nenolod
parents:
diff
changeset
|
37 xchat.command("SAY [%s | %d:%02d/%s]" % ( |
2759
0c9bb15a4321
[svn] - encode songtitle in utf8 before passing to XChat.
nenolod
parents:
2758
diff
changeset
|
38 aud.SongTitle(aud.Position()).encode("utf8"), |
2740
a67712c75069
[svn] - add an xchat script which wraps our DBus API using dbus-python.
nenolod
parents:
diff
changeset
|
39 aud.Time() / 1000 / 60, aud.Time() / 1000 % 60, |
a67712c75069
[svn] - add an xchat script which wraps our DBus API using dbus-python.
nenolod
parents:
diff
changeset
|
40 length)) |
a67712c75069
[svn] - add an xchat script which wraps our DBus API using dbus-python.
nenolod
parents:
diff
changeset
|
41 |
a67712c75069
[svn] - add an xchat script which wraps our DBus API using dbus-python.
nenolod
parents:
diff
changeset
|
42 return xchat.EAT_ALL |
a67712c75069
[svn] - add an xchat script which wraps our DBus API using dbus-python.
nenolod
parents:
diff
changeset
|
43 |
2772 | 44 def makeVoidCommand(cmd): |
45 def callback(word, word_eol, userdata): | |
2773
cd9311fed796
[svn] A few more xchat-audacious.py corrections:
deitarion
parents:
2772
diff
changeset
|
46 getattr(get_aud(), cmd, lambda: None)() |
2772 | 47 return xchat.EAT_ALL |
48 return callback | |
2749
96e7c0385973
[svn] - add stop, pause, next, prev, play functions
nenolod
parents:
2740
diff
changeset
|
49 |
2772 | 50 command_next = makeVoidCommand('Advance') |
51 command_prev = makeVoidCommand('Reverse') | |
52 command_pause = makeVoidCommand('Pause') | |
53 command_stop = makeVoidCommand('Stop') | |
54 command_play = makeVoidCommand('Play') | |
2749
96e7c0385973
[svn] - add stop, pause, next, prev, play functions
nenolod
parents:
2740
diff
changeset
|
55 |
2752
1ca3b314301d
[svn] - add /SENDTRACK which can DCC the current track to a user
nenolod
parents:
2751
diff
changeset
|
56 def command_send(word, word_eol, userdata): |
2772 | 57 if len(word) < 2: |
2752
1ca3b314301d
[svn] - add /SENDTRACK which can DCC the current track to a user
nenolod
parents:
2751
diff
changeset
|
58 print "You must provide a user to send the track to." |
1ca3b314301d
[svn] - add /SENDTRACK which can DCC the current track to a user
nenolod
parents:
2751
diff
changeset
|
59 return xchat.EAT_ALL |
1ca3b314301d
[svn] - add /SENDTRACK which can DCC the current track to a user
nenolod
parents:
2751
diff
changeset
|
60 |
2772 | 61 aud = get_aud() |
62 if not aud: | |
2773
cd9311fed796
[svn] A few more xchat-audacious.py corrections:
deitarion
parents:
2772
diff
changeset
|
63 return xchat.EAT_ALL |
2772 | 64 |
2764 | 65 xchat.command('DCC SEND %s "%s"' % (word[1], aud.SongFilename(aud.Position()).encode("utf8"))) |
2752
1ca3b314301d
[svn] - add /SENDTRACK which can DCC the current track to a user
nenolod
parents:
2751
diff
changeset
|
66 return xchat.EAT_ALL |
1ca3b314301d
[svn] - add /SENDTRACK which can DCC the current track to a user
nenolod
parents:
2751
diff
changeset
|
67 |
2740
a67712c75069
[svn] - add an xchat script which wraps our DBus API using dbus-python.
nenolod
parents:
diff
changeset
|
68 xchat.hook_command("NP", command_np, help="Displays current playing song.") |
2749
96e7c0385973
[svn] - add stop, pause, next, prev, play functions
nenolod
parents:
2740
diff
changeset
|
69 xchat.hook_command("NEXT", command_next, help="Advances in Audacious' playlist.") |
96e7c0385973
[svn] - add stop, pause, next, prev, play functions
nenolod
parents:
2740
diff
changeset
|
70 xchat.hook_command("PREV", command_prev, help="Goes backwards in Audacious' playlist.") |
2750 | 71 xchat.hook_command("PAUSE", command_pause, help="Toggles paused status.") |
72 xchat.hook_command("STOP", command_stop, help="Stops playback.") | |
73 xchat.hook_command("PLAY", command_play, help="Begins playback.") | |
2752
1ca3b314301d
[svn] - add /SENDTRACK which can DCC the current track to a user
nenolod
parents:
2751
diff
changeset
|
74 xchat.hook_command("SENDTRACK", command_send, help="Sends the currently playing track to a user.") |
2749
96e7c0385973
[svn] - add stop, pause, next, prev, play functions
nenolod
parents:
2740
diff
changeset
|
75 |
2773
cd9311fed796
[svn] A few more xchat-audacious.py corrections:
deitarion
parents:
2772
diff
changeset
|
76 print "xchat-audacious $Id: xchat-audacious.py 4572 2007-05-16 07:24:43Z deitarion $ loaded" |