Видео смотреть бесплатно

Смотреть русское видео

Официальный сайт panajotov 24/7/365

Смотреть видео бесплатно

muhas 10.12.2009 11:59

СкриптыСкрипт событий для mcabber

Для меня при первом знакомстве с mcabber главная трудность заключалась в том что бы как-то заставить его уведомлять о пришедших сообщениях, спустя какое-то время это было сделано.
Причем несмотря на файлы примеров в исходниках это было достаточно трудно, но вся трудность заключалась в большей степени нежеланием что-то делать самому а хотелось готового решения удовлетворяющего какому-то минимуму, но в чужих скриптах всегда лень разбираться из-за отсутсвия комментариев.
Теперь же mcabber стало более популярен чем тогда и примеров файла событий уже достаточно много, вот ещё один в котором я заодно постарался в процессе рассказать о принципе его работы и вообще о принципе событий (за исключением хуков post-connect и pre-disconnect которые в дефолтном конфиге описаны, к тому же довольно просты), к тому же этот файл можно будет использовать как базу для дальнейшего подгона уведомлений под себя.

В общем, кому интересно то всё под катом
 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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#!/bin/sh
#
# скрипт событий указанный в параметре set events_command
# (set указываю на всякий случай, просто по конфигу искать проще)
# всегда получает 4 или менее параметров вида приблизительно такого:
#
# MSG OUT имя_или_jid
# MSG IN имя_или_jid имя_файла
# UNREAD 1
# MSG MUC конференция имя_файла
# STATUS A имя_или_jid
# UNREAD 0
#
# причем имя файла будет только в том случае если установлена переменная
# set event_log_files в значение 1 и в set event_log_dir указана директория
#
# вообще этот файл может быть любой программой а не только bash-скриптом
# в примерах из исходников был и python

# Соответсвенно от получаемых параметров и пляшем
EV=$1 # главное событие
EVENT=$2 # не знаю, как обозвать - подсобытие, уточнение события
NICK=$3 # ник или jid

# считываем файл если он существует
if << $4 != "" >>;then
TEXT=$(cat $4)
# ну и удаляем файл, ибо он нам больше не нужен
rm -f $4
else
TEXT=""
fi


# проверяем главное событие
case "$EV" in

# если событие сообщение то
"MSG")
# уточняем второе событие
case "$EVENT" in
# если событие входящее сообщение то
"IN")
# шлём какое-нибудь уведомление, к примеру notify-send
echo $(notify-send -i /usr/share/gajim/data/iconsets/dcraven/16x16/event.png "$NICK" "$TEXT")
# ну и можно музычку заодно проиграть
aplay ~/.mcabber/sound/incoming.wav &
;;
# если сообщение это сообщение в конференции
"MUC")
# то тоже делаем что-нить, к примеру в данном случае я ищу вхождение своего ника
# и если он есть то вывожу уведомление и играю звук, если его нет то просто звук
FOUND=`echo $TEXT| grep muhas`
if < -n "$FOUND" >; then
echo $(notify-send -i /usr/share/gajim/data/iconsets/dcraven/16x16/event.png "$NICK" "те в конфе пишут")
fi
aplay ~/.mcabber/sound/incoming.wav &
;;
"OUT")
# если сообщение исходящее то тоже что-нить делаем, для примера играем звук
aplay /.mcabber/sound/outcoming.wav
;;
esac
;;
# если главное сбытие это смена статуса то
"STATUS")
# уточняем на какой статус меняется
case "$EVENT" in
# и задаем иконку и текст для этого статуса (если надо, конечно)
"O") icon=online.png; s=online;;
"F") icon=chat.png; s="free for chat";;
"A") icon=away.png; s=away;;
"N") icon=xa.png; s=n/a;;
"D") icon=dnd.png; s=DND;;
"_") icon=offline.png; s=offline;;
*) icon=online.png; s=$EVENT;;
esac
# ну и выводим уведомление с соответсвующей иконкой и текстом
echo $(notify-send -t 1000 -i /usr/share/gajim/data/iconsets/dcraven/16x16/$icon "$NICK is $s")
;;
# если главное событие это налиние непрочитанных, учьтите что это количество непросмотренных контактов
# а не количество сообщений
"UNREAD")
# пишем в файл количество
echo $EVENT > ~/.mcabber/unread
# так же тоже самое количество можно получать обработкой файла
# указанного в в конфиге (set statefile), но там список jid'ов написавших
# так что количество будет равным cat file | wc -l
# причем когда число непрочитанных равно нулю, то statfile несуществует
;;
esac

# вот собственно и все
# пытался сделать этот файл более менее полным и понятным, с моей точки зрения вроде как получилось


Парсер кода делает переносит строк при отображении, хотя при копипасте всё гуд (просто здесь лишние цифры отображает)
Про statefile я описывал здесь


PS приятного использования mcabber


Тэги: event mcabber shell события уведомления
+ 12 -
Похожие Поделиться

zivot_je_cudo 10.12.2009 12:32 #
+ 6 -
Первая мысль при увденной картинке - "О, в welinux прикрутили всплывающие уведомления ЛС!"
exelens 10.12.2009 13:45 #
+ 2 -
Первая мысль при увденной картинке - "О, в welinux прикрутили всплывающие уведомления ЛС!"
Хочу такую фичу
muhas 10.12.2009 14:09 #
+ 0 -
ты знаешь кого пнуть =)
реализовать сие не трудно
Astramak 10.12.2009 17:02 #
+ 2 -
okay
muhas 10.12.2009 17:18 #
+ 1 -
гуд =) и по поводу img {max-width:100%} подумай в комментах и постах (посмотри на комменты к этому посту, я там картинку всунул и на 1024 смотрится очень ужасно (а можно ещё ужимающуюся ещё и ссылкой на саму себя но уже нормального размера сделать)
Astramak 10.12.2009 17:20 #
+ 0 -
muhas 10.12.2009 17:43 #
+ 0 -
так ты же сегодня за дизайнера =)
в css
.ctext img {max-width:100%;} добавь и всё... nvbn напишу
muhas 10.12.2009 17:45 #
+ 0 -
сказал уже делает /me в ожидании
exelens 10.12.2009 18:40 #
+ 0 -
сделал
exelens 10.12.2009 13:44 #
+ 0 -
=) Супер!
glebone 10.12.2009 15:25 #
+ 0 -
что-то я не совсем понял как пользоваться этим скриптом, как запускать, откуда, откуда он берет праметры и нужно ли настраивать statefile в mcabber? Не могли бы рассказать по-подробнее про это?

P.S. не юзаю mcabber сейчас только из-за отсутствия уведомлений
muhas 10.12.2009 15:37 #
+ 0 -
прописываешь в events_command путь к скрипту(chmod +x на скрипт не забываем), mcabber сам его запускает по событиям с необходимыми параметрами.

statefile можно использовать, а можно тупо писать в файл как в скрипте. для получения количества не прочтенных всё-равно (либо cat ~/.mcabber/undead, либо cat ~/.mcabber/mcabber.state &>/dev/null|wc -l)

тоже по-началу смущало отсутсвие уведомлений, пока не осознал что можно хоть бота на mcabber'е написать (он принимает команда через fifo, а отдает через скрипт событий)

в будущем (уже в настоящем - в hg) можно и аватарки получать (о некоторых нововведениях я писал)
muhas 10.12.2009 15:38 #
+ 0 -
т.е. не количество непрочитанных сообщений, а количество непросмотренных контактов написавших
muc (конфы) вроде в них не идет
glebone 10.12.2009 15:40 #
+ 1 -
Спасибо! Обязательно попробую сегодня!
polatov 11.12.2009 17:45 #
+ 0 -
Все работает, но popup показывается на несколько секунд. Хочется, чтобы на подольше. notify --help ничего не дал
muhas 11.12.2009 17:58 #
+ 0 -
параметр -t 1000 (играйся с числом)
losvik 04.04.2011 14:16 #
+ 0 -
FOUND=`echo $TEXT| grep muhas`
if < -n "$FOUND" >; then
echo $(notify-send ...

получается что даже когда ты сам пишешь в кофу тебе приходит уведомление - "те в конфу пишут". круто)
muhas 04.04.2011 14:25 #
+ 0 -
дополни |grep -v '' и нет проблем ;)

а вообще хватит некропостить =)
muhas 04.04.2011 14:27 #
+ 0 -
мля muhas в угловых скобочках парсер съел как тег =)
|grep -v '<muhas>'
losvik 04.04.2011 14:34 #
+ 0 -
ну не тему ж новую создавать) cпс.

Смотреть видео онлайн

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн