Вы, вероятно, знакомы с использованием чат-ботов для управления делами.
Например, очень удобно начать сборку или верстку, просто написав сообщение одному из ваших чат-контактов.
Есть разные готовые боты для Скайпа, один из представителей Севабот .
Все они используют Skype API, который Microsoft собирается убить, поэтому все эти боты вскоре могут стать неработоспособными.
Но мне бы этого не хотелось — я их кое-где использую для запуска развертываний.
Как быть?
Все живые сегодня боты работают на стороне настольной версии Skype. Я организую все так же, но доступ к Скайпу через API у меня не будет. Чтобы дать односторонний сигнал к запуску чего-либо, можно обойтись только извлечением сообщений из Скайпа.Skype хранит свои сообщения в базе данных sqlite3 в своем каталоге данных.
Я просто посижу в засаде.
Запустим:import sys import signal from time import sleep import sqlite3 if len(sys.argv) != 3: sys.stderr.write("Usage: %s <path to skype `main.db` file> <watch interval in seconds>\n" % sys.argv[0]) sys.exit(1) def int_handler(signum, frame): sys.exit(0) signal.signal(signal.SIGINT, int_handler) dbfilename = sys.argv[1] interval = float(sys.argv[2]) conn = sqlite3.connect(dbfilename) c = conn.cursor() c.execute("select id from Messages where id = (select max(id) from Messages);") (last_msg_id,) = c.fetchone() while True: sleep(interval) for id, body in c.execute("select id, body_xml from Messages where id > ?;", (last_msg_id,)): last_msg_id = max(id, last_msg_id) print body
.
/skype-watch.py ~/.
Skype/skype_login/main.db 1
Сообщения, полученные и отправленные клиентом, передаются на стандартный вывод с некоторой задержкой.
Изменив запрос, можно добавить фильтрацию по отправителю, изменив код обработки — реакцию.
Идея, я думаю, ясна.
Ну и что?
Хотелось бы услышать идеи, как сделать его двухсторонним.Пока единственное, что приходит на ум, — это добавление в базу «неотправленных» сообщений, которые Скайп сам бы отправлял — ведь если отправка не удалась и клиент отключился, Скайп запоминает, что нужно переслать.
Плюсы:
- API не требуется.
- Простой как топор, мало зависимостей.
- Открыт только для приема.
- Не использует хуки sqlite3.
-
Taskett — Список Личных И Совместных Задач
19 Oct, 24 -
Гаджеты Для Путешествий
19 Oct, 24 -
Миниатюрное Приложение-Калькулятор
19 Oct, 24 -
5 Советов Стартапам И Предпринимателям
19 Oct, 24 -
Зачем Технарям Эти Блоги!?
19 Oct, 24