Esempio n. 1
0
def setup_buffer(buffer):
    # set title
    weechat.buffer_set(buffer, "title", "Twitter buffer, type ':help' for options.")

    # disable logging, by setting local variable "no_log" to "1"
    weechat.buffer_set(buffer, "localvar_set_no_log", "1")

    #create main nicklist
    friends_nicks_group[buffer] = weechat.nicklist_add_group(buffer, "", "Friends",
                "weechat.color.nicklist_group", 1)

    tweet_nicks_group[buffer] = weechat.nicklist_add_group(buffer, "", "Tweet_parse",
                "weechat.color.nicklist_group", 1)
    autocomp_group = weechat.nicklist_add_group(buffer, "", "Autocomp",
                "weechat.color.nicklist_group", 1)
    #newline autocomplete
    weechat.nicklist_add_nick(buffer, autocomp_group, "
", 'bar_fg', '', '', 1)

    #show nicklist
    weechat.buffer_set(buffer, "nicklist", "1")

    user_nick = script_options['screen_name']

    weechat.buffer_set(buffer, "localvar_set_nick", user_nick)

    add_to_nicklist(buffer, user_nick)
    # Highlight user nick
    weechat.buffer_set(buffer, "highlight_words", user_nick)
Esempio n. 2
0
 def setupNicklist(self) :
     contact_list = self.getOption('contacts').replace(' ', '').split(',')
     for login in contact_list :
         weechat.nicklist_add_group(self.buffer, '', login, 'lightcyan', 1)
         self.contacts[login] = {}
     self._ns_user_cmd_who('{%s}' % ','.join(contact_list))
     self._ns_user_cmd_watch_log_user(','.join(contact_list))
Esempio n. 3
0
 def setup_nick_list(self):
     contact_list = {
         True: [],
         False: self.get_option('contacts').replace(' ', '').split(',')
     }[self.get_option('contacts').replace(' ', '') == '']
     for login in contact_list:
         weechat.nicklist_add_group(self.buffer, '', login, 'lightcyan', 1)
         self.contacts[login] = {}
     self._ns_user_cmd_who('{%s}' % ','.join(contact_list))
     self._ns_user_cmd_watch_log_user(','.join(contact_list))
Esempio n. 4
0
 def setup_nick_list(self):
     contact_list = {
         True: [],
         False: self.get_option('contacts').replace(' ', '').split(',')
     }[self.get_option('contacts').replace(' ', '') == '']
     for login in contact_list:
         weechat.nicklist_add_group(self.buffer, '', login, 'lightcyan', 1)
         self.contacts[login] = {}
     self._ns_user_cmd_who('{%s}' % ','.join(contact_list))
     self._ns_user_cmd_watch_log_user(','.join(contact_list))
Esempio n. 5
0
 def add_to_nick_list(self, *logins):
     contact_list = {
         True: [],
         False: self.get_option('contacts').replace(' ', '').split(',')
     }[self.get_option('contacts').replace(' ', '') == '']
     new_contacts = []
     for login in logins:
         if login in self.contacts:
             continue
         contact_list.append(login)
         new_contacts.append(login)
         self.contacts[login] = {}
         weechat.nicklist_add_group(self.buffer, '', login, 'lightcyan', 1)
     self._ns_user_cmd_who('{%s}' % ','.join(new_contacts))
     self._ns_user_cmd_watch_log_user(','.join(contact_list))
     weechat.config_option_set(self.options['contacts'],
                               ','.join(contact_list), 0)
Esempio n. 6
0
 def add_to_nick_list(self, *logins):
     contact_list = {
         True: [],
         False: self.get_option('contacts').replace(' ', '').split(',')
     }[self.get_option('contacts').replace(' ', '') == '']
     new_contacts = []
     for login in logins:
         if login in self.contacts:
             continue
         contact_list.append(login)
         new_contacts.append(login)
         self.contacts[login] = {}
         weechat.nicklist_add_group(self.buffer, '', login, 'lightcyan', 1)
     self._ns_user_cmd_who('{%s}' % ','.join(new_contacts))
     self._ns_user_cmd_watch_log_user(','.join(contact_list))
     weechat.config_option_set(self.options['contacts'],
                               ','.join(contact_list), 0)
def check_message(data, signal, signal_data):
    dict = weechat.info_get_hashtable("irc_message_parse",
                                      {"message": signal_data})
    nick = dict["nick"]
    channel = dict["channel"]
    if nick == "triggerbot":
        try:
            if channel.split("_")[1]:
                triggersafechannel = True
        except IndexError:
            triggersafechannel = False
        if triggersafechannel:
            buffer = weechat.info_get(
                "irc_buffer", "%s,%s" % (signal.split(",")[0], channel))
            group = weechat.nicklist_search_group(buffer, "", "triggerbot")
            if not group:
                group = weechat.nicklist_add_group(
                    buffer, "", "triggerbot", "weechat.color.nicklist_group",
                    1)
                triggerbotbuffers[buffer] = group
            # Is this a list of nicks?
            if dict["arguments"].find("Nicks %s: [" % channel) != -1:
                names = dict["arguments"].split(
                    "Nicks %s: [" % channel)[1].split("]")[0].split(" ")
                set_nicklist(names, buffer, group)
            # Is this a join message?
            elif dict["arguments"].split(":")[1].startswith(
                    "[INFO] ") and dict["arguments"].find(" has joined") != -1:
                name = dict["arguments"].split("[INFO] ")[1].split(
                    " has joined")[0]
                add_nick(name, buffer, group)
            # A leave message?
            elif dict["arguments"].split(":")[1].startswith(
                    "[INFO] ") and dict["arguments"].find(" has left") != -1:
                name = dict["arguments"].split("[INFO] ")[1].split(
                    " has left")[0]
                remove_nick(name, buffer, group)
            # A quit message? (Don't search for the dot here because a reason may be displayed)
            elif dict["arguments"].split(":")[1].startswith(
                    "[INFO] ") and dict["arguments"].find(" has quit") != -1:
                name = dict["arguments"].split("[INFO] ")[1].split(
                    " has quit")[0]
                remove_nick(name, buffer, group)
            elif dict["arguments"].split(":")[1].startswith(
                    "[INFO] "
            ) and dict["arguments"].find(" is now known as ") != -1:
                oldname = dict["arguments"].split("[INFO] ")[1].split(
                    " is now known as ")[0]
                newname = dict["arguments"].split("[INFO] ")[1].split(
                    " is now known as ")[1].split(".")[0]
                remove_nick(oldname, buffer, group)
                add_nick(newname, buffer, group)
    return weechat.WEECHAT_RC_OK
Esempio n. 8
0
def nicklist_timer(data, remaining_calls):
    for server in xd:
        users_r = requests.get(urljoin(server, "api/user-list"))
        users = users_r.json()["users"]
        for channel in xd[server]["channels"].itervalues():
            weechat.nicklist_remove_all(channel["buffer"])
            group = weechat.nicklist_add_group(channel["buffer"], "", "Users",
                                               "weechat.color.nicklist_group",
                                               1)
            for u in users:
                weechat.nicklist_add_nick(
                    channel["buffer"], group, u["username"],
                    "default" if u["online"] else "lightgrey", "",
                    "lightgreen", 1)
    return weechat.WEECHAT_RC_OK
Esempio n. 9
0
def reload_contacts_cb(data, buffer, args):
    global contacts
    csv_file = weechat.info_get('weechat_dir', '') + '/python/weesms.csv'
    try:
        contacts_csv = csv.reader(open(csv_file, 'r'))
        weechat.nicklist_remove_group(smsbuffer, contacts)
        contacts = weechat.nicklist_add_group(smsbuffer, '', 'contacts', '', 1)
        for c in contacts_csv:
            weechat.nicklist_add_nick(smsbuffer, contacts, c[0], '', '@', '',
                                      1)
            contacts_dict[c[0]] = c[1]
        weechat.prnt('', "Contacts reload: done")
    except IOError:
        weechat.prnt(
            '', "%sIOError: Unable to access %s file" %
            (csv_file, weechat.prefix("error")))
        return weechat.WEECHAT_RC_ERROR
    return weechat.WEECHAT_RC_OK
def check_message(data, signal, signal_data):
    dict = weechat.info_get_hashtable("irc_message_parse",
                                      {"message": signal_data})
    nick = dict["nick"]
    channel = dict["channel"]
    if nick == "triggerbot":
        try:
            if channel.split("_")[1]:
                triggersafechannel = True
        except IndexError:
            triggersafechannel = False
        if triggersafechannel:
            buffer = weechat.info_get("irc_buffer", "%s,%s" % (signal.split(",")[0], channel))
            group = weechat.nicklist_search_group(buffer, "", "triggerbot")
            if not group:
                group = weechat.nicklist_add_group(buffer, "", "triggerbot", "weechat.color.nicklist_group", 1)
                triggerbotbuffers[buffer] = group
            # Is this a list of nicks?
            if dict["arguments"].find("Nicks %s: [" % channel) != -1:
                names = dict["arguments"].split("Nicks %s: [" % channel)[1].split("]")[0].split(" ")
                set_nicklist(names, buffer, group)
            # Is this a join message?
            elif dict["arguments"].split(":")[1].startswith("[INFO] ") and dict["arguments"].find(" has joined") != -1:
                name = dict["arguments"].split("[INFO] ")[1].split(" has joined")[0]
                add_nick(name, buffer, group)
            # A leave message?
            elif dict["arguments"].split(":")[1].startswith("[INFO] ") and dict["arguments"].find(" has left") != -1:
                name = dict["arguments"].split("[INFO] ")[1].split(" has left")[0]
                remove_nick(name, buffer, group)
            # A quit message? (Don't search for the dot here because a reason may be displayed)
            elif dict["arguments"].split(":")[1].startswith("[INFO] ") and dict["arguments"].find(" has quit") != -1:
                name = dict["arguments"].split("[INFO] ")[1].split(" has quit")[0]
                remove_nick(name, buffer, group)
            elif dict["arguments"].split(":")[1].startswith("[INFO] ") and dict["arguments"].find(" is now known as ") != -1:
                oldname = dict["arguments"].split("[INFO] ")[1].split(" is now known as ")[0]
                newname = dict["arguments"].split("[INFO] ")[1].split(" is now known as ")[1].split(".")[0]
                remove_nick(oldname, buffer, group)
                add_nick(newname, buffer, group)
    return weechat.WEECHAT_RC_OK
Esempio n. 11
0
def buf_get(ctx, known):
	global _tmp_room_queue_hash, _tmp_room_initial

	haveBzz = False
	# \todo integrity check of input data
	bufname = ctx.to_buffer_name()

	wOut(
		PSS_BUFPFX_DEBUG,
		[],
		"!!!",
		"generated bufname " + bufname
	)

	buf = weechat.buffer_search("python", bufname)

	if ctx.is_room() and ctx.get_bzz() == None:
		raise RuntimeError("gateway needed for multiuser chats over swarm")

	
	if buf == "":

		# for debug only
		pss_publickey_hex = pss.rpchex(ctx.get_pss().get_public_key())
		pss_overlay_hex = pss.rpchex(ctx.get_pss().get_overlay())

		# chat is DM between two parties
		if ctx.is_chat():
		
			shortname = "pss:" + ctx.get_name()
			# set up the buffer
			ctx.set_buffer(weechat.buffer_new(bufname, "buf_in", ctx.get_node(), "buf_close", ctx.get_node()), bufname)
			weechat.buffer_set(ctx.get_buffer(), "short_name", shortname)
			weechat.buffer_set(ctx.get_buffer(), "title", ctx.get_name() + " @ PSS '" + ctx.get_node() + "' | node: " + weechat.config_get_plugin(ctx.get_pss().get_host() + "_url") + ":" + weechat.config_get_plugin(ctx.get_pss().get_port() + "_port") + " | key  " + pss.label(pss_publickey_hex) + " | address " + pss.label(pss_overlay_hex))
			weechat.buffer_set(ctx.get_buffer(), "hotlist", weechat.WEECHAT_HOTLIST_PRIVATE)
			weechat.buffer_set(ctx.get_buffer(), "display", "1")
			plugin = weechat.buffer_get_pointer(ctx.get_buffer(), "plugin")

			bufs[bufname] = buf


		# room is multiuser conversation
		elif ctx.is_room():
	
			shortname = "pss#" + ctx.get_name()

			buf = weechat.buffer_new(bufname, "buf_in", ctx.get_node(), "buf_close", ctx.get_node())
			weechat.buffer_set(buf, "short_name", shortname)
			weechat.buffer_set(buf, "title", "#" + ctx.get_node() + " @ PSS '" + ctx.get_node() + "' | node: " + weechat.config_get_plugin(ctx.get_pss().get_host() + "_url") + ":" + weechat.config_get_plugin(ctx.get_pss().get_port() + "_port") + " | key  " + pss.label(ctx.get_pss().get_public_key().encode("hex")) + " | address " + pss.label(ctx.get_pss().get_overlay().encode("hex")))
			weechat.buffer_set(buf, "hotlist", weechat.WEECHAT_HOTLIST_PRIVATE)
			weechat.buffer_set(buf, "nicklist", "1")
			weechat.buffer_set(buf, "display", "1")
			weechat.nicklist_add_group(buf, "", "me", "weechat.color.nicklist_group", 1)
			weechat.nicklist_add_nick(buf, "me", ctx.get_node(), "bar_fg", "", "bar_fg", 1)
	
			plugin = weechat.buffer_get_pointer(buf, "plugin")
			bufs[bufname] = buf
			
			if cache.get_room_count() == 0:
				hookTimers.append(weechat.hook_timer(PSS_ROOM_PERIOD, 0, 0, "roomRead", ctx.get_node()))

			# create new room
			(room, loaded) = cache.add_room(ctx.get_name(), ctx.get_node())
			_tmp_room_initial[ctx.get_name()] = False
			if loaded:
				_tmp_room_queue_hash[ctx.get_name()] = room.feedcollection.senderfeed.lasthsh
				try:
					cache.have_room_initial(ctx.get_name())
					_tmp_room_initial[ctx.get_name()] = True
				except Exception as e:
					sys.stderr.write("no initial update, not pulling: " + repr(e) + "\n")

			wOut(
				PSS_BUFPFX_DEBUG,
				[],
				"",
				"loaded room " + repr(cache.get_room(ctx.get_name()))
			)

			for p in room.get_participants():
				pubkey = p.get_public_key()
				if pubkey == ctx.get_pss().get_public_key():
					continue
				nick = ""
				try:
					c = cache.get_contact_by_public_key(pubkey)
					nick = c.get_nick()
					buf_room_add(buf, c.get_nick())
				except:
					nick = p.get_nick()
				buf_room_add(buf, nick)

		else:
			raise RuntimeError("invalid buffer type")

	else:
		ctx.set_buffer(buf, bufname)

	return ctx.get_buffer()
Esempio n. 12
0
    def create_new_buffer(self, msg, conv_id):
        channel = msg['channel']
        name = channel['name']

        if channel['members_type'] == 'impteamnative':
            ## We don't want to replicate our username
            name_splitted = name.split(',')
            ## We can send message to ourself
            if len(name_splitted) == 1:
                buff_name = name
            else:
                buff_name = ",".join(name_splitted[1:])
            ty = "private"
        elif channel['members_type'] == 'team':
            buff_name = channel['name'] + "#" + channel['topic_name']
            ty = "channel"
        else:
            buff_name = "un::" + channel['member_type']
            ty = "private"
        buff = weechat.buffer_new(buff_name, "private_input_cb", conv_id,
                                  "private_close_cb", conv_id)
        weechat.prnt("", "buffer!" + str(buff))
        weechat.buffer_set(buff, "localvar_set_type", ty)
        weechat.buffer_set(buff, "localvar_set_server", self.status_name)
        weechat.buffer_set(buff, "localvar_set_no_log", "1")
        weechat.buffer_set(buff, "localvar_set_conversation_id", conv_id)
        weechat.buffer_set(buff, "localvar_set_first_message", "")
        weechat.buffer_set(buff, "localvar_set_last_message", "")
        weechat.buffer_set(buff, "unread", "")
        weechat.buffer_set(buff, "notify", "2")
        weechat.buffer_set(buff, "nicklist", "1")
        # Get channel member
        api = {
            "method": "listmembers",
            "params": {
                "options": {
                    "conversation_id": conv_id
                }
            }
        }
        r = self.execute_api(api)
        nicklist = [
            "0|Owners", "1|Admins", "2|Writers", "3|Readers", "4|Bot",
            "5|Restricted Bot"
        ]
        group = [None] * 6
        j = 0
        for i in nicklist:
            group[int(j)] = weechat.nicklist_add_group(
                buff, "", i, "weechat.color.nicklist_group", 1)
            j += 1
        result = r
        for i in result['owners']:
            weechat.nicklist_add_nick(buff, group[0], i['username'], "red",
                                      "@", "lightgreen", 1)
        for i in result['admins']:
            weechat.nicklist_add_nick(buff, group[1], i['username'], "red",
                                      "@", "lightgreen", 1)
        for i in result['writers']:
            weechat.nicklist_add_nick(buff, group[2], i['username'], "red",
                                      "@", "lightgreen", 1)
        for i in result['readers']:
            weechat.nicklist_add_nick(buff, group[3], i['username'], "red",
                                      "@", "lightgreen", 1)
        for i in result['bots']:
            weechat.nicklist_add_nick(buff, group[4], i['username'], "red",
                                      "@", "lightgreen", 1)
        for i in result['restrictedBots']:
            weechat.nicklist_add_nick(buff, group[5], i['username'], "red",
                                      "@", "lightgreen", 1)
        return buff
Esempio n. 13
0
def get_nick_group(buffer, group_name):
    group = w.nicklist_search_group(buffer, "", group_name)
    if not group:
        group = w.nicklist_add_group(buffer, "", group_name, "weechat.color.nicklist_group", 1)
    return group
Esempio n. 14
0
def update_nicklist(buffer_name):
    buffer_pointer = weechat.buffer_search('irc', buffer_name)
    if not buffer_pointer:
        return

    group_pointers = {}

    infolist = weechat.infolist_get('nicklist', buffer_pointer, '')
    infolist_string = weechat.infolist_string
    infolist_next = weechat.infolist_next
    while infolist_next(infolist):
        if not infolist_string(infolist, 'type') == 'nick':
            continue

        nick = infolist_string(infolist, 'name')
        if nick not in ident_nick:
            continue
        
        group = infolist_string(infolist, 'group_name')
        color = infolist_string(infolist, 'color')
        prefix = infolist_string(infolist, 'prefix')
        prefix_color = infolist_string(infolist, 'prefix_color')

        if ident_nick[nick]:
            prefix_new = ' '
            group_new = '080|ident'
            color_new = 'green'
        else:
            prefix_new = '~'
            group_new = '081|unident'
            color_new = 'brown'
            prefix_color = 'cyan'

        if prefix[0] != prefix_new[0]:
            if prefix == ' ':
                prefix = prefix_new
                prefix_new = ''
            elif prefix_new != ' ':
                prefix = prefix_new + prefix
                prefix_new = ''

        if color == 'bar_fg':
            color = color_new
            color_new = ''

        if group[:2] == '08':
            group = group_new
            group_new = ''
            try:
                group_pointer = group_pointers[group]
            except KeyError:
                group_pointer = weechat.nicklist_search_group(buffer_pointer, '', group)
                if not group_pointer:
                    group_pointer = weechat.nicklist_add_group(buffer_pointer, '', group,
                            'weechat.color.nicklist_group', 1)
                group_pointers[group] = group_pointer
        else:
            group_pointer = weechat.nicklist_search_group(buffer_pointer, '', group)

        if prefix_new and group_new and color_new:
            # nothing to change
            continue

        #debug('adding nick: %s%s to %s' %(prefix, nick, group))
        nick_pointer = weechat.nicklist_search_nick(buffer_pointer, '', nick)
        if nick_pointer:
            weechat.nicklist_remove_nick(buffer_pointer, nick_pointer)
        nick_pointer = weechat.nicklist_add_nick(buffer_pointer, group_pointer, nick, color,
                prefix, prefix_color, 1)
        nicklist[buffer_name, nick] = (buffer_pointer, nick_pointer)
    weechat.infolist_free(infolist)
Esempio n. 15
0
def get_nick_group(buffer, group_name):
    group = w.nicklist_search_group(buffer, "", group_name)
    if not group:
        group = w.nicklist_add_group(buffer, "", group_name,
                                     "weechat.color.nicklist_group", 1)
    return group
Esempio n. 16
0
def buffer_input_cb(data, buffer, input_data):
    # ...
    end_message = ""
    options = [script_options['screen_name']]
    if script_options['alt_rt_style']:
        options.append("alt_rt_style")
    if script_options['home_replies']:
        options.append("home_replies")

    if input_data[0] == ':':
        if data != "silent":
            weechat.prnt_date_tags(buffer, 0, "no_highlight", input_data)
        input_args = input_data.split()
        command = input_args[0][1:]
        if command_dict.get(command):
            input_data = input_data.replace(command,command_dict[command],1)
            command = command_dict[command]
        if command == 'd' and tweet_dict.get(input_args[1]):
            input_data = 'd ' + tweet_dict[input_args[1]]
            weechat.prnt(buffer, "%sYou deleted the following tweet:" % weechat.prefix("network"))
        elif command == 'v' and tweet_dict.get(input_args[1]):
            input_data = 'v ' + tweet_dict[input_args[1]]
            end_message = "Done"
        elif command == 'rt' and tweet_dict.get(input_args[1]):
            end_message = "id"
            input_data = 'rt ' + tweet_dict[input_args[1]]
        elif command == 're' and tweet_dict.get(input_args[1]):
            end_message = "id"
            input_data = 're ' + tweet_dict[input_args[1]] + " '" + html_escape(input_data[6:]) + "'"
        elif command == 'new':
            end_message = "id"
            if script_options['last_id'] != "":
                input_data = 'new ' + script_options['last_id']
            else:
                input_data = 'home'
        elif command == 'home' or command == 'r' or (command == 'favs' and len(input_args) >= 2 and input_args[1].isdigit()):
            input_data = command
            if len(input_args) == 3 and tweet_dict.get(input_args[1]) and input_args[2].isdigit():
                num = int(input_args[2])
                # 200 tweets is the max request limit
                if num <= 200 and num > 0:
                    input_data += " " + tweet_dict[input_args[1]] + " " + input_args[2]
                else:
                    input_data += " " + tweet_dict[input_args[1]]
            elif len(input_args) == 2:
                if tweet_dict.get(input_args[1]):
                    input_data += " " + tweet_dict[input_args[1]]
                elif input_args[1].isdigit():
                    num = int(input_args[1])
                    # 200 tweets is the max request limit
                    if num <= 200 and num > 0:
                        input_data += " " + input_args[1]
            end_message = "Done"
        elif command == 'u' or (command == 'favs' and len(input_args) >= 3):
            input_data = " ".join(input_args[:2])[1:]
            if len(input_args) == 4 and tweet_dict.get(input_args[2]) and input_args[3].isdigit():
                num = int(input_args[3])
                # 200 tweets is the max request limit
                if num <= 200 and num > 0:
                    input_data += " " + tweet_dict[input_args[2]] + " " + input_args[3]
                else:
                    input_data += " " + tweet_dict[input_args[2]]
            elif len(input_args) == 3:
                if tweet_dict.get(input_args[2]):
                    input_data += " " + tweet_dict[input_args[2]]
                elif input_args[2].isdigit():
                    num = int(input_args[2])
                    # 200 tweets is the max request limit
                    if num <= 200 and num > 0:
                        input_data += " " + input_args[2]
            end_message = "Done"
        elif command == 'auth':
            if len(input_args) == 2:
                oauth_dance(buffer,input_args[1])
            else:
                oauth_dance(buffer)
            return weechat.WEECHAT_RC_OK
        elif command == 'f' or command == 'fo':
            #L because we are returning a list to be printed later on
            end_message = "L"
            if len(input_args) == 3 and tweet_dict.get(input_args[2]):
                input_data = command + " " + input_args[1] + " " + tweet_dict[input_args[2]]
            elif len(input_args) == 2:
                if tweet_dict.get(input_args[1]):
                    input_data = command + " " + script_options['screen_name'] + " " + tweet_dict[input_args[1]]
                    #Your list, not any other users
                    end_message += "Y"
                else:
                    input_data = input_data[1:]
            else:
                input_data = command + " " + script_options['screen_name']
                end_message += "Y"
            if command == 'f':
                end_message += "Following"
            else:
                end_message += "Followers"
        elif command == 'a':
            input_data = input_data[1:]
            end_message = "About"
        elif command == 'blocks':
            input_data = input_data[1:]
            end_message = "LBlock list"
        elif command == 'fav' and tweet_dict.get(input_args[1]):
            input_data = 'fav ' + tweet_dict[input_args[1]]
            weechat.prnt(buffer, "%sYou fave'd the following tweet:" % weechat.prefix("network"))
        elif command == 'unfav' and tweet_dict.get(input_args[1]):
            input_data = 'unfav ' + tweet_dict[input_args[1]]
            weechat.prnt(buffer, "%sYou unfave'd the following tweet:" % weechat.prefix("network"))
        elif command == 'cnicks':
            global tweet_nicks_group
            if tweet_nicks_group[buffer] != "":
                weechat.nicklist_remove_group(buffer, tweet_nicks_group[buffer])
                tweet_nicks_group[buffer] = ""
            tweet_nicks_group[buffer] = weechat.nicklist_add_group(buffer, "", "Tweet_parse",
                    "weechat.color.nicklist_group", 1)
            return weechat.WEECHAT_RC_OK
        elif command == 'help':
            weechat.command(buffer,"/help twitter")
            weechat.prnt(buffer, "Exec command /help twitter, check your root buffer")
            return weechat.WEECHAT_RC_OK
        elif command == 'clear':
            weechat.command(buffer,"/buffer clear")
            return weechat.WEECHAT_RC_OK
        elif command == 'stream':
            args = html_escape(input_data[7:])
            weechat.prnt(buffer,create_stream("t_stream",args))
            return weechat.WEECHAT_RC_OK
        elif command == 're_home':
            weechat.prnt(buffer,create_stream("twitter"))
            return weechat.WEECHAT_RC_OK
        else:
            input_data = input_data[1:]
            end_message = "Done"
    else:
        end_message = "id"
        #esacpe special chars when printing to commandline
        input_data = 't ' + "'" + html_escape(input_data) + "'"
        #input_data = 't ' + "'" + html.escape(input_data) + "'"

    weechat.hook_process("python3 " + SCRIPT_FILE_PATH + " " +
                script_options["oauth_token"] + " " + script_options["oauth_secret"] + " " +
                input_data + " " + '"' + str(options) + '"', 10 * 1000, "my_process_cb", str([buffer,end_message]))
    return weechat.WEECHAT_RC_OK
Esempio n. 17
0
def connect(url, data):
    global xd
    # ping the server, to see if it's online
    ping = requests.get(urljoin(url, "api"))
    if ping.status_code == requests.codes.teapot and "decent" in ping.json():
        weechat.prnt(
            "", "weecent\tSuccessfully connected to Decent server %s." % url)
    elif ping.status_code in (requests.codes.ok, requests.codes.not_found):
        weechat.prnt(
            "", "weecent\t%s is not a valid Decent server, skipping." % url)
        del xd[url]
        return
    else:
        weechat.prnt("", "weecent\tCould not connect to %s, skipping." % url)
        del xd[url]
        return

    # login
    login_r = requests.post(urljoin(url, "api/login"), json=data)
    login_data = login_r.json()

    server_name = url.split("//")[1]
    if login_data["success"]:
        session_id = login_data["sessionID"]
        xd[url]["session_id"] = session_id

        channels_r = requests.get(urljoin(url, "api/channel-list"),
                                  {'sessionID': session_id})
        if channels_r.json()['success']:
            channels = channels_r.json()['channels']

            # create server buffer
            buffer_ = weechat.buffer_new(server_name, "server_input_cb", "",
                                         "server_close_cb", "")
            weechat.buffer_set(buffer_, "title", "Weecent testing!")
            weechat.buffer_set(buffer_, "localvar_set_no_log", "1")
            weechat.buffer_set(buffer_, "localvar_set_type", "server")
            weechat.buffer_set(buffer_, "localvar_set_url", url)
            weechat.buffer_set(buffer_, "localvar_set_server", server_name)
            xd[url]["buffer"] = buffer_

            # create channel buffers
            xd[url]["channels"] = {}
            for channel in channels:
                xd[url]["channels"][channel["id"]] = {"name": channel["name"]}

                # set up buffer
                buffer_ = weechat.buffer_new(channel["name"], "send_message",
                                             "", "channel_close_cb", "")
                weechat.buffer_set(buffer_, "title", "Weecent testing!")
                weechat.buffer_set(buffer_, "nicklist", "1")
                weechat.buffer_set(buffer_, "nicklist_display_groups", "0")
                weechat.buffer_set(buffer_, "localvar_set_no_log", "1")
                weechat.buffer_set(buffer_, "localvar_set_type", "channel")
                weechat.buffer_set(buffer_, "localvar_set_channel",
                                   json.dumps(channel))
                weechat.buffer_set(buffer_, "localvar_set_url", url)
                weechat.buffer_set(buffer_, "localvar_set_server", server_name)
                xd[url]["channels"][channel["id"]]["buffer"] = buffer_

                # get scrollback
                scrollback_r = requests.get(
                    urljoin(url,
                            "api/channel/%s/latest-messages" % channel["id"]))
                messages = scrollback_r.json()["messages"]
                for m in messages:
                    display_msg(buffer_, m, xd[url])

                # get users
                users_r = requests.get(urljoin(url, "api/user-list"))
                users = users_r.json()["users"]

                group = weechat.nicklist_add_group(
                    buffer_, "", "Users", "weechat.color.nicklist_group", 1)

                for u in users:
                    weechat.nicklist_add_nick(
                        buffer_, group, u["username"],
                        "default" if u["online"] else "lightgrey", "",
                        "lightgreen", 1)
        else:
            weechat.prnt("", "ono a bad happened")

        # create websocket
        if not "socket" in xd[url]:
            # wss or ws?
            use_secure = requests.get(urljoin(url,
                                              "api/should-use-secure")).json()
            protocol = "wss://" if use_secure["useSecure"] else "ws://"

            xd[url]['socket'] = websocket.create_connection(
                protocol + server_name, sslopt=sslopt_ca_certs)

            weechat.hook_fd(xd[url]['socket'].sock._sock.fileno(), 1, 0, 0,
                            "recv_cb", "")
            xd[url]['socket'].sock.setblocking(0)
    else:
        weechat.prnt("", "ono a bad happened")
Esempio n. 18
0
        weechat.prnt(smsbuffer, "<- %s: %s" % (contact, message))

        # Delete SMS
        loc = []
        for m in x:
            sm.DeleteSMS(m['Folder'], m['Location'])
    return weechat.WEECHAT_RC_OK


# plugin registration
if weechat.register(SCRIPT_NAME, SCRIPT_AUTHOR, SCRIPT_VERSION, SCRIPT_LICENCE,
                    SCRIPT_DESC, 'shutdown_function', ''):
    # WeeSMS buffer creation
    smsbuffer = weechat.buffer_new('weesms', 'buffer_input_cb', '',
                                   'buffer_close_cb', '')
    weechat.buffer_set(smsbuffer, 'WeeSMS', '- SMS -')

    # Nick list initialization
    contacts = weechat.nicklist_add_group(smsbuffer, '', 'contacts', '', 1)
    nicklist_init()

    # /reload_contacts command
    hook = weechat.hook_command('reload_contacts', "Reload CSV phonebook", '',
                                '', '', 'reload_contacts_cb', '')

    # Initialize Gammu
    sm = gammu_init()

    # SMS check function called every 10 seconds
    weechat.hook_timer(10 * 1000, 0, 0, 'read_sms_cb', '')
Esempio n. 19
0
def buf_room_add(buf, nick, groupname=""):
	if weechat.nicklist_search_group(buf, "", "members") == "":
		weechat.nicklist_add_group(buf, "", "members", "weechat.color.nicklist_group", 1)
	nickbufp = weechat.nicklist_add_nick(buf, groupname, nick, "bar_fg", "", "bar_fg", 1)
	weechat.nicklist_nick_set(buf, nickbufp, "color", "white")
Esempio n. 20
0
def update_nicklist(buffer_name):
    buffer_pointer = weechat.buffer_search('irc', buffer_name)
    if not buffer_pointer:
        return

    group_pointers = {}

    infolist = weechat.infolist_get('nicklist', buffer_pointer, '')
    infolist_string = weechat.infolist_string
    infolist_next = weechat.infolist_next
    while infolist_next(infolist):
        if not infolist_string(infolist, 'type') == 'nick':
            continue

        nick = infolist_string(infolist, 'name')
        if nick not in ident_nick:
            continue

        group = infolist_string(infolist, 'group_name')
        color = infolist_string(infolist, 'color')
        prefix = infolist_string(infolist, 'prefix')
        prefix_color = infolist_string(infolist, 'prefix_color')

        if ident_nick[nick]:
            prefix_new = ' '
            group_new = '080|ident'
            color_new = 'green'
        else:
            prefix_new = '~'
            group_new = '081|unident'
            color_new = 'brown'
            prefix_color = 'cyan'

        if prefix[0] != prefix_new[0]:
            if prefix == ' ':
                prefix = prefix_new
                prefix_new = ''
            elif prefix_new != ' ':
                prefix = prefix_new + prefix
                prefix_new = ''

        if color == 'bar_fg':
            color = color_new
            color_new = ''

        if group[:2] == '08':
            group = group_new
            group_new = ''
            try:
                group_pointer = group_pointers[group]
            except KeyError:
                group_pointer = weechat.nicklist_search_group(
                    buffer_pointer, '', group)
                if not group_pointer:
                    group_pointer = weechat.nicklist_add_group(
                        buffer_pointer, '', group,
                        'weechat.color.nicklist_group', 1)
                group_pointers[group] = group_pointer
        else:
            group_pointer = weechat.nicklist_search_group(
                buffer_pointer, '', group)

        if prefix_new and group_new and color_new:
            # nothing to change
            continue

        #debug('adding nick: %s%s to %s' %(prefix, nick, group))
        nick_pointer = weechat.nicklist_search_nick(buffer_pointer, '', nick)
        if nick_pointer:
            weechat.nicklist_remove_nick(buffer_pointer, nick_pointer)
        nick_pointer = weechat.nicklist_add_nick(buffer_pointer, group_pointer,
                                                 nick, color, prefix,
                                                 prefix_color, 1)
        nicklist[buffer_name, nick] = (buffer_pointer, nick_pointer)
    weechat.infolist_free(infolist)