<div class="highlight"><pre><span style="color: #408080; font-style: italic"># -*- coding: utf-8 -*-</span>
<span style="color: #408080; font-style: italic">#</span>
<span style="color: #408080; font-style: italic"># main.rb</span>
<span style="color: #408080; font-style: italic">#</span>
<span style="color: #408080; font-style: italic"># Copyright (C) 2009 burgua</span>
<span style="color: #408080; font-style: italic">#</span>
<span style="color: #408080; font-style: italic"># lashin.aleksey@gmail.com</span>
<span style="color: #408080; font-style: italic">#</span>
<span style="color: #408080; font-style: italic"># This program is free software; you can redistribute it and/or</span>
<span style="color: #408080; font-style: italic"># modify it under the terms of the GNU General Public License</span>
<span style="color: #408080; font-style: italic"># as published by the Free Software Foundation; either version 2</span>
<span style="color: #408080; font-style: italic"># of the License, or (at your option) any later version.</span>
<span style="color: #408080; font-style: italic"># This program is distributed in the hope that it will be useful,</span>
<span style="color: #408080; font-style: italic"># but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<span style="color: #408080; font-style: italic"># MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
<span style="color: #408080; font-style: italic"># GNU General Public License for more details.</span>
<span style="color: #408080; font-style: italic">#</span>
<span style="color: #008000">require</span> <span style="color: #BA2121">'rubygems'</span>
<span style="color: #008000">require</span> <span style="color: #BA2121">'plasma_applet'</span>
<span style="color: #008000">require</span> <span style="color: #BA2121">'curb'</span>
<span style="color: #008000">require</span> <span style="color: #BA2121">'md5'</span>
<span style="color: #008000">require</span> <span style="color: #BA2121">'iconv'</span>
<span style="color: #008000; font-weight: bold">module</span> <span style="color: #0000FF; font-weight: bold">Vkontakte</span>
<span style="color: #008000; font-weight: bold">class</span> <span style="color: #0000FF; font-weight: bold">Main</span> <span style="color: #666666"><</span> <span style="color: #880000">PlasmaScripting</span><span style="color: #666666">::</span><span style="color: #880000">Applet</span>
<span style="color: #008000; font-weight: bold">def</span> <span style="color: #0000FF">initialize</span> parent
<span style="color: #008000; font-weight: bold">super</span> parent
<span style="color: #008000; font-weight: bold">end</span>
<span style="color: #008000; font-weight: bold">def</span> <span style="color: #0000FF">init</span>
<span style="color: #008000">self</span><span style="color: #666666">.</span>has_configuration_interface <span style="color: #666666">=</span> <span style="color: #008000">false</span>
<span style="color: #008000">self</span><span style="color: #666666">.</span>aspect_ratio_mode <span style="color: #666666">=</span> <span style="color: #880000">Plasma</span><span style="color: #666666">::</span><span style="color: #880000">Square</span>
<span style="color: #008000">self</span><span style="color: #666666">.</span>background_hints <span style="color: #666666">=</span> <span style="color: #880000">Plasma</span><span style="color: #666666">::</span><span style="color: #880000">Applet</span><span style="color: #666666">.</span>DefaultBackground
layout <span style="color: #666666">=</span> <span style="color: #880000">Qt</span><span style="color: #666666">::</span><span style="color: #880000">GraphicsLinearLayout</span><span style="color: #666666">.</span>new <span style="color: #880000">Qt</span><span style="color: #666666">::</span><span style="color: #880000">Horizontal</span>, <span style="color: #008000">self</span>
label <span style="color: #666666">=</span> <span style="color: #880000">Plasma</span><span style="color: #666666">::</span><span style="color: #880000">Label</span><span style="color: #666666">.</span>new <span style="color: #008000">self</span>
layout<span style="color: #666666">.</span>add_item label
<span style="color: #008000">self</span><span style="color: #666666">.</span>layout <span style="color: #666666">=</span> layout
resize <span style="color: #666666">600</span>, <span style="color: #666666">1200</span>
label<span style="color: #666666">.</span>text <span style="color: #666666">=</span> <span style="color: #BA2121">"Wait a bit..."</span>
<span style="color: #880000">Thread</span><span style="color: #666666">.</span>new { <span style="color: #008000; font-weight: bold">while</span> <span style="color: #008000">true</span>; label<span style="color: #666666">.</span>text<span style="color: #666666">=</span>getdata; <span style="color: #008000">sleep</span>(<span style="color: #666666">30</span>); <span style="color: #008000; font-weight: bold">end</span> }
<span style="color: #008000; font-weight: bold">end</span>
<span style="color: #008000; font-weight: bold">def</span> <span style="color: #0000FF">trymatch</span> (str,regex)
<span style="color: #008000; font-weight: bold">if</span> (str<span style="color: #666666">.</span>match(<span style="color: #BB6688">/</span><span style="color: #BB6688; font-weight: bold">#{</span>regex<span style="color: #BB6688; font-weight: bold">}</span><span style="color: #BB6688">/u</span>) <span style="color: #666666">==</span> <span style="color: #008000">nil</span>)
<span style="color: #008000; font-weight: bold">return</span> <span style="color: #BA2121">'0'</span>
<span style="color: #008000; font-weight: bold">end</span>
str<span style="color: #666666">.</span>match(<span style="color: #BB6688">/</span><span style="color: #BB6688; font-weight: bold">#{</span>regex<span style="color: #BB6688; font-weight: bold">}</span><span style="color: #BB6688">/u</span>)<span style="color: #666666">[2]</span>
<span style="color: #008000; font-weight: bold">end</span>
<span style="color: #008000; font-weight: bold">def</span> <span style="color: #0000FF">filter</span> (data, label, tool)
str <span style="color: #666666">=</span> <span style="color: #BA2121">'href=\''</span><span style="color: #666666">+</span>tool<span style="color: #666666">+</span><span style="color: #BA2121">'.php([A-Za-zА-Яа-я=\?\'\s\d&>]*)\(<b>(.+)<\/b>'</span>
rez <span style="color: #666666">=</span> trymatch(data,str)
<span style="color: #008000; font-weight: bold">if</span> (rez<span style="color: #666666">==</span><span style="color: #BA2121">'0'</span>)
<span style="color: #008000; font-weight: bold">return</span> <span style="color: #BA2121">''</span>
<span style="color: #008000; font-weight: bold">end</span>
<span style="color: #BA2121">'<tr><td>'</span> <span style="color: #666666">+</span> label <span style="color: #666666">+</span> <span style="color: #BA2121">"</td><td><b>"</span><span style="color: #666666">+</span> rez <span style="color: #666666">+</span> <span style="color: #BA2121">'</b></td></tr>'</span>
<span style="color: #008000; font-weight: bold">end</span>
<span style="color: #008000; font-weight: bold">def</span> <span style="color: #0000FF">getdata</span>
<span style="color: #408080; font-style: italic"># get data from xml-file</span>
user <span style="color: #666666">=</span> {<span style="color: #BA2121">'mid'</span> <span style="color: #666666">=></span> <span style="color: #BA2121">'******'</span>, <span style="color: #BA2121">'email'</span> <span style="color: #666666">=></span> <span style="color: #BA2121">'********'</span>, <span style="color: #BA2121">'pass'</span> <span style="color: #666666">=></span> <span style="color: #880000">MD5</span><span style="color: #666666">.</span>md5(<span style="color: #BA2121">'*********'</span>)}
<span style="color: #408080; font-style: italic"># getted</span>
curl <span style="color: #666666">=</span> <span style="color: #880000">Curl</span><span style="color: #666666">::</span><span style="color: #880000">Easy</span><span style="color: #666666">.</span>new(<span style="color: #BA2121">'http://vkontakte.ru/id872527'</span>)
curl<span style="color: #666666">.</span>headers <span style="color: #666666">=</span> {<span style="color: #BA2121">"User-Agent"</span> <span style="color: #666666">=></span> <span style="color: #BA2121">"Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.0.4) Gecko/2008112309 Iceweasel/3.0.4 (Debian-3.0.4-1)"</span>,
<span style="color: #BA2121">"Cookie"</span> <span style="color: #666666">=></span> <span style="color: #BA2121">"remixlang=0; remixchk=5; remixmid=</span><span style="color: #BB6688; font-weight: bold">#{</span>user<span style="color: #666666">[</span><span style="color: #BA2121">'mid'</span><span style="color: #666666">]</span><span style="color: #BB6688; font-weight: bold">}</span><span style="color: #BA2121">; remixemail=</span><span style="color: #BB6688; font-weight: bold">#{</span>user<span style="color: #666666">[</span><span style="color: #BA2121">'email'</span><span style="color: #666666">]</span><span style="color: #BB6688; font-weight: bold">}</span><span style="color: #BA2121">; remixpass=</span><span style="color: #BB6688; font-weight: bold">#{</span>user<span style="color: #666666">[</span><span style="color: #BA2121">'pass'</span><span style="color: #666666">]</span><span style="color: #BB6688; font-weight: bold">}</span><span style="color: #BA2121">; remixautobookmark=8"</span>,
<span style="color: #BA2121">"Referer"</span> <span style="color: #666666">=></span> <span style="color: #BA2121">"http://vkontakte.ru/"</span>}
curl<span style="color: #666666">.</span>follow_location <span style="color: #666666">=</span> <span style="color: #008000">true</span>
curl<span style="color: #666666">.</span>perform
<span style="color: #408080; font-style: italic">#return '0'</span>
body <span style="color: #666666">=</span> curl<span style="color: #666666">.</span>unescape curl<span style="color: #666666">.</span>body_str
coder <span style="color: #666666">=</span> <span style="color: #880000">Iconv</span><span style="color: #666666">.</span>new(<span style="color: #BA2121">"UTF-8"</span>,<span style="color: #BA2121">"WINDOWS-1251"</span>)
body <span style="color: #666666">=</span> coder<span style="color: #666666">.</span>iconv(body)
result <span style="color: #666666">=</span> <span style="color: #BA2121">'<table>'</span>
result <span style="color: #666666">=</span> result <span style="color: #666666">+</span> filter(body,<span style="color: #BA2121">'Friends'</span>,<span style="color: #BA2121">'friend'</span>)
result <span style="color: #666666">=</span> result <span style="color: #666666">+</span> filter(body,<span style="color: #BA2121">'Photos'</span>,<span style="color: #BA2121">'photos'</span>)
result <span style="color: #666666">=</span> result <span style="color: #666666">+</span> filter(body,<span style="color: #BA2121">'Videos'</span>,<span style="color: #BA2121">'video'</span>)
result <span style="color: #666666">=</span> result <span style="color: #666666">+</span> filter(body,<span style="color: #BA2121">'Messages'</span>,<span style="color: #BA2121">'mail'</span>)
result <span style="color: #666666">=</span> result <span style="color: #666666">+</span> filter(body,<span style="color: #BA2121">'Notes'</span>,<span style="color: #BA2121">'notes'</span>)
result <span style="color: #666666">=</span> result <span style="color: #666666">+</span> filter(body,<span style="color: #BA2121">'Groups'</span>,<span style="color: #BA2121">'groups'</span>)
result <span style="color: #666666">=</span> result <span style="color: #666666">+</span> filter(body,<span style="color: #BA2121">'Events'</span>,<span style="color: #BA2121">'events'</span>)
result <span style="color: #666666">=</span> result <span style="color: #666666">+</span> filter(body,<span style="color: #BA2121">'Matches'</span>,<span style="color: #BA2121">'matches'</span>)
result <span style="color: #666666">=</span> result <span style="color: #666666">+</span> filter(body,<span style="color: #BA2121">'Opinions'</span>,<span style="color: #BA2121">'opinions'</span>)
result <span style="color: #666666">=</span> result <span style="color: #666666">+</span> filter(body,<span style="color: #BA2121">'Questions'</span>,<span style="color: #BA2121">'questions'</span>)
result <span style="color: #666666">=</span> result <span style="color: #666666">+</span> filter(body,<span style="color: #BA2121">'Opinions'</span>,<span style="color: #BA2121">'opinions'</span>)
result <span style="color: #666666">=</span> result <span style="color: #666666">+</span> <span style="color: #BA2121">'</table>'</span>
<span style="color: #008000; font-weight: bold">end</span>
<span style="color: #008000; font-weight: bold">end</span>
<span style="color: #008000; font-weight: bold">end</span>
</pre></div>
<p style="padding: 0; margin: 2em 0 1em 0; font-size: 0.8em; color: #666;"><span style="padding: 0 1em; background-color: #f5f5f5;"> Colored with <a style="color: #333" href="http://dumpz.org">dumpz.org</a></span></p><p style="padding: 0; margin: 2em 0 1em 0; font-size: 0.8em; color: #666;"><span style="padding: 0 1em; background-color: #f5f5f5;"> Colored with <a style="color: #333" href="http://dumpz.org">dumpz.org</a></span></p>