Bash и оповещения Вконтакте
18 октября 2011 г.
Не так давно захотелось реализовать вывод новых сообщений Вконтакте на рабочий стол. Выбор пал на Conky и на всплывающие сообщения. Сегодня остановимся на втором способе. Данная статья будет ориентирована на новичков.
(Что мы получим в конце статьи)
Прежде всего ставим notify-send (при отсутствии библиотек):
>sudo apt-get install libnotify-bin
Теперь создаем скрипт такого содержания:
>#!/usr/bin/perl use LWP::UserAgent; use HTTP::Cookies; use Text::Iconv; $mail = ' '; $pass = ' '; $browser = LWP::UserAgent->new(); $browser->agent('Mozilla/5.0'); $cookie = HTTP::Cookies->new(); $browser->cookie_jar($cookie); $win2utf = Text::Iconv->new('windows-1251','utf-8'); $auth = $browser->get("http://login.vk.com/?act=login&email=$mail&pass=$pass&from_host=vk.com")->as_string; die("Ошибка авторизации\n") if $auth =~ /reg/; sub parse { $dat = $browser->get("http://vk.com/mail")->as_string; if($dat =~ /mail_body"><a href="\/mail\?act=show&id=(\d*)" onclick="return nav.go\(this, event\);" >(.*)<\/a>/) { $id = $1; $msg = $win2utf->convert($2); } else { warn("Не удалось получить сообщение\n"); } $author = $win2utf->convert($1) if $dat =~ /wrapped"><a href=".*" onclick="return nav.go\(this, event\);" onmousedown="event.cancelBubble = true;">(.*)<\/a>/; $img = $1 if $dat =~ /<img src="(http:\/\/(.*))"\/>/ || die; } sub notify { system("wget -P ~/ $img"); $img = $1 if $img =~ /\/((\w+)\.jpg)/; $notify = qq(notify-send --expire-time=10000 -i ~/$img \'$author\' \'$msg\'); system($notify); system("rm -r ~/$img"); } if($^O =~ /Win/) { exit(); } else { system('clear'); print "Запуск...\n"; } while() { parse; if($id != $last_id) { notify; } $last_id = $id; }
Естественно указываем ваши логин и пароль. Сохраняем скрипт, называем, например, vknotify и кидаем куда-нибудь в /usr/local/bin.
Теперь можно смело запускать и ставить в автозагрузку.
рубрика