File: facebook_rename.py

package info (click to toggle)
weechat-scripts 20100422-1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 1,184 kB
  • ctags: 1,634
  • sloc: python: 8,545; perl: 8,472; ruby: 147; tcl: 137; sh: 8; makefile: 2
file content (53 lines) | stat: -rw-r--r-- 1,842 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# This script renames your Facebook buddies to a readable format when 
# using Facebook's XMPP gateway with Bitlbee. 
#
# Based on the Irssi script at http://browsingtheinternet.com/temp/bitlbee_rename.txt 
# Ported for Weechat 0.3.0 or later by Jaakko Lintula (crwl@iki.fi)
#
# This script is in the public domain.


bitlbeeChannel = "&bitlbee"
bitlbeeServer = "bitlbee"


bitlbeeBuffer = "%s.%s" % (bitlbeeServer, bitlbeeChannel)
facebookhostname = "chat.facebook.com"
nicksToRename = set()

import weechat
import re

weechat.register("facebook_rename", "crwl", "1.0", "Public Domain", "Renames Facebook usernames when using Bitlbee", "", "")

def message_join(data, signal, signal_data):
  signal_data = signal_data.split()
  channel = signal_data[2][1:]
  hostmask = signal_data[0]
  nick = hostmask[1:hostmask.index('!')]
  username = hostmask[hostmask.index('!')+1:hostmask.index('@')]
  server = hostmask[hostmask.index('@')+1:]
  
  if channel == bitlbeeChannel and nick == username and nick[0] == 'u' and server == facebookhostname: 
    nicksToRename.add(nick)
    weechat.command(weechat.buffer_search("irc", bitlbeeBuffer), "/whois " + nick)
  
  return weechat.WEECHAT_RC_OK

def whois_data(data, signal, signal_data):
  nick = signal_data.split()[3]
  realname = signal_data[signal_data.rindex(':')+1:]
  
  if nick in nicksToRename:
    nicksToRename.remove(nick)
    
    ircname = re.sub("[^A-Za-z0-9]", "", realname)[:24]
    if ircname != nick:
      weechat.command(weechat.buffer_search("irc", bitlbeeBuffer), "/msg %s rename %s %s" % (bitlbeeChannel, nick, ircname))
      weechat.command(weechat.buffer_search("irc", bitlbeeBuffer), "/msg %s save" % (bitlbeeChannel))
      
  return weechat.WEECHAT_RC_OK


weechat.hook_signal("*,irc_in_join", "message_join", "")
weechat.hook_signal("*,irc_in_311", "whois_data", "")