Logo Search packages:      
Sourcecode: weechat-scripts version File versions  Download package


00001 """
  :Author: Henning Hasemann <hhasemann [at] web [dot] de>

  :What it does:
    This plugin lets you inform all users in the current
    channel about the song which music-player-daemon (MPD)
    is currently playing.

    /mpdnp - Display file mpd is playing to current channel.

  :Configuration Variables:
    ============= ==========================================
    Variable name Meaning
    ============= ==========================================
    host          The host where your mpd runs
    port          The port to connect to mpd (usually 6600)
    format        How this script should display
                  whats going on.
                  You may use the following variables here:
                  $artist, $title_or_file,
                  $length_min, $length_sec, $pct,
                  $pos_min, $pos_sec
  Released under GPL licence.

todo = """
  - maybe support sending commands to mpd.
  - maybe make condional display
    (displaying some characters only
     if preceding or trailing variables are set)

import weechat as wc
import mpdclient as mpd
import re
from os.path import basename, splitext

default_fmt = "/me 's MPD plays: $artist - $title_or_file ($length_min:$length_sec)"

wc.register("mpdnp", "0.3", "", "np for mpd")

def subst(text, values):
  out = ""
  n = 0
  for match in re.finditer(findvar, text):
    if match is None: continue 
      l, r = match.span()
      nam = match.group(1)
      out += text[n:l+1] + values.get(nam, "") #"$" + nam)
      n = r
  return out + text[n:]

00056 def np(server, args):
    Send information about the currently
    played song to the channel.
  host = wc.get_plugin_config("host")
  port = int(wc.get_plugin_config("port"))
  cont = mpd.MpdController(host=host, port=port)
  song = cont.getCurrentSong()
  pos, length, pct = cont.getSongPosition()

  # insert artist, title, album, track, path
  d = song.__dict__
      "title_or_file": song.title or splitext(basename(song.path))[0],
      "pos_sec": "%02d" % (pos / 60),
      "pos_min": str(pos / 60),
      "length_sec": "%02d" % (length % 60),
      "length_min": str(length / 60),
      "pct": "%2.0f" % pct,
  wc.command(subst(wc.get_plugin_config("format"), d))
  return 0
def dbgnp(server, args):
    return np(server, args)
  except Exception, e:
    print e
wc.add_command_handler("mpdnp", "np", "", "", np.__doc__)

findvar = re.compile(r'[^\\]\$([a-z_]+)(\b|[^a-z_])')

default = {
  "host": "localhost",
  "port": "6600",
  "format": default_fmt,

for k, v in default.items():
  if not wc.get_plugin_config(k):
    wc.set_plugin_config(k, v)

Generated by  Doxygen 1.6.0   Back to index