email-notify: use /usr/bin/mail to send notifications when away
This commit is contained in:
parent
f3cfac7759
commit
971452640a
|
@ -0,0 +1,108 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#
|
||||||
|
# Copyright (C) 2016 Brian S. Stephan <bss@incorporeal.org>
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
# Convenience commands for appending/prepending text to the channel topic
|
||||||
|
# or other buffer title.
|
||||||
|
#
|
||||||
|
# 2016-05-03 v0.1
|
||||||
|
# initial script
|
||||||
|
|
||||||
|
SCRIPT_NAME = "email-notify"
|
||||||
|
SCRIPT_AUTHOR = "bss <bss@incorporeal.org>"
|
||||||
|
SCRIPT_VERSION = "0.1"
|
||||||
|
SCRIPT_LICENSE = "GPL3"
|
||||||
|
SCRIPT_DESC = "Send an email on highlight and privmsg when away"
|
||||||
|
|
||||||
|
try:
|
||||||
|
import weechat
|
||||||
|
except:
|
||||||
|
print("This script must be run under WeeChat.")
|
||||||
|
print("Get WeeChat now at: http://www.weechat.org/")
|
||||||
|
|
||||||
|
import os
|
||||||
|
import subprocess
|
||||||
|
|
||||||
|
MAIL = '/usr/bin/mail'
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
'to' : '',
|
||||||
|
'ignore' : '',
|
||||||
|
}
|
||||||
|
|
||||||
|
last_buffer = ''
|
||||||
|
|
||||||
|
|
||||||
|
def get_nick(s):
|
||||||
|
"""Strip nickmodes and prefix, suffix."""
|
||||||
|
if not s: return ''
|
||||||
|
# prefix and suffix
|
||||||
|
prefix = weechat.config_string(weechat.config_get('irc.look.nick_prefix'))
|
||||||
|
suffix = weechat.config_string(weechat.config_get('irc.look.nick_suffix'))
|
||||||
|
if s[0] == prefix:
|
||||||
|
s = s[1:]
|
||||||
|
if s[-1] == suffix:
|
||||||
|
s = s[:-1]
|
||||||
|
# nick mode
|
||||||
|
modes = '~+@!%'
|
||||||
|
s = s.lstrip(modes)
|
||||||
|
return s
|
||||||
|
|
||||||
|
|
||||||
|
def away_cb(data, buffer, time, tags, display, hilight, prefix, msg):
|
||||||
|
global last_buffer
|
||||||
|
|
||||||
|
# Check if we are away
|
||||||
|
if not weechat.buffer_get_string(buffer, 'localvar_away'):
|
||||||
|
return weechat.WEECHAT_RC_OK
|
||||||
|
|
||||||
|
if (hilight == 1 or 'notify_private' in tags) and display == 1:
|
||||||
|
if hilight == 1:
|
||||||
|
subj = weechat.buffer_get_string(buffer, 'short_name')
|
||||||
|
else:
|
||||||
|
subj = prefix
|
||||||
|
|
||||||
|
ignores = weechat.config_get_plugin('ignore').split(',')
|
||||||
|
if subj not in ignores:
|
||||||
|
prefix = get_nick(prefix)
|
||||||
|
last_buffer = weechat.buffer_get_string(buffer, 'plugin') + '.' + weechat.buffer_get_string(buffer, 'name')
|
||||||
|
|
||||||
|
send_mail("IRC: {0:s}".format(subj), "<{0:s}> {1:s}".format(prefix, msg))
|
||||||
|
|
||||||
|
return weechat.WEECHAT_RC_OK
|
||||||
|
|
||||||
|
|
||||||
|
def send_mail(subject, body):
|
||||||
|
to_addr = weechat.config_get_plugin('to')
|
||||||
|
|
||||||
|
mail = subprocess.Popen([MAIL, '-s', subject, to_addr], stdin=subprocess.PIPE)
|
||||||
|
mail.stdin.write(bytes(body, 'UTF-8'))
|
||||||
|
mail.stdin.close()
|
||||||
|
mail.wait()
|
||||||
|
|
||||||
|
|
||||||
|
def info_hook_cb(data, info_name, arguments):
|
||||||
|
global last_buffer
|
||||||
|
return last_buffer
|
||||||
|
|
||||||
|
|
||||||
|
if weechat.register(SCRIPT_NAME, SCRIPT_AUTHOR, SCRIPT_VERSION, SCRIPT_LICENSE, SCRIPT_DESC, '', ''):
|
||||||
|
for opt, val in settings.items():
|
||||||
|
if not weechat.config_is_set_plugin(opt):
|
||||||
|
weechat.config_set_plugin(opt, val)
|
||||||
|
|
||||||
|
weechat.hook_print('', '', '', 1, 'away_cb', '')
|
||||||
|
weechat.hook_info('%s_buffer' %SCRIPT_NAME, '', '', 'info_hook_cb', '')
|
Loading…
Reference in New Issue