ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

реализация icq бота
  #1  
Старый 16.04.2010, 18:32
Аватар для Fristail
Fristail
Участник форума
Регистрация: 25.10.2007
Сообщений: 248
Провел на форуме:
4333655

Репутация: 452
Отправить сообщение для Fristail с помощью ICQ
По умолчанию реализация icq бота

здрасти =)

подскажите..как реализовать вот такого бота..
Код:
http://forum.antichat.ru/thread193332.html
 
Ответить с цитированием

  #2  
Старый 16.04.2010, 20:00
Аватар для phpdreamer
phpdreamer
Постоянный
Регистрация: 26.07.2009
Сообщений: 321
Провел на форуме:
444589

Репутация: 123
Отправить сообщение для phpdreamer с помощью ICQ
По умолчанию

наверно парсинг rss
Цитата:
<?
$url = 'rss.xml'; //адрес RSS ленты

$rss = @file_get_contents($url); //получаем содержимое RSS лент в виде одной строки

if ($rss) {
preg_match_all("/title>[^>]+>/", $rss, $title); //парсим титлы
preg_match_all("/<description>[^<]+<\/description>/", $rss, $description); //парсим дескрипшены

$count = count($title[0])-1; //число проходов цикла.

for ($i=0; $i < $count; $i++) {
echo '<h1>'.substr($title[0][$i+1], 6, -8).'</h1>'; //выводим на печать заголовок статьи
echo substr($description[0][$i], 13, -14); //выводим на печать текст статьи
}
} else {
echo '<font color="red">Ошибка парсинга '.$url.'</font>'; //выводим ошибку если file_get_contents() вернула false
}
?>
 
Ответить с цитированием

  #3  
Старый 16.04.2010, 23:48
Аватар для Vlad&slav
Vlad&slav
Участник форума
Регистрация: 01.01.2009
Сообщений: 138
Провел на форуме:
817404

Репутация: 82
Отправить сообщение для Vlad&slav с помощью ICQ
По умолчанию

неее я парсю сам форум)
там всё оч хитро както сделано
(писалось в трансе в 4 утра)
 
Ответить с цитированием

  #4  
Старый 17.04.2010, 00:02
Аватар для Deathdreams
Deathdreams
Постоянный
Регистрация: 08.11.2008
Сообщений: 498
Провел на форуме:
2603363

Репутация: 278
Отправить сообщение для Deathdreams с помощью ICQ
По умолчанию

Начал писать свой парсер, допишу - выложу
 
Ответить с цитированием

  #5  
Старый 17.04.2010, 00:36
Аватар для Deathdreams
Deathdreams
Постоянный
Регистрация: 08.11.2008
Сообщений: 498
Провел на форуме:
2603363

Репутация: 278
Отправить сообщение для Deathdreams с помощью ICQ
По умолчанию

Вообщем покорячился и накидал небольшой кодец.
Самого бота допишите сами, скрипт обрабатывает переменную с предполагаемым сообщением.


Вот и сам код:

PHP код:
<?php

$msg 
"t"//В этой обрабатывается сообщение. Не изменять.






$forum_suff "f"//приставка для команды выбора форума. Без пробелов.
$thread_suff "t"//приставка для команды выбора топика. без пробелов









$cmd explode" "$msg );

if( 
is_numeric($cmd[1]) )

{

switch( 
$cmd[0] )

    {

        case 
$forum_suff:
                    echo 
get_forums"forum{$cmd[1]}", (is_numeric($cmd[2]) ? $cmd[2] : '1') );
        break;

        case 
$thread_suff:
                    echo 
get_thread$cmd[1], (isset($cmd[2]) ? $cmd[2] : '10'), (isset($cmd[3]) ? $cmd[3] : '1') );
        break;

        default:
                    echo 
get_forums();
        break;

    }

} else {

echo 
get_forums();

}

function 
get_thread($th=false$count=10$page=)

{
    if( !
$th || !is_numeric($page) || !is_numeric($count) ) return "Такой темы/топика не существует или неверно заданы параметры.";

        
$content file_get_contents'http://forum.antichat.ru/threadnav'.$th.'-'.$page.'-'.$count.'.html' );
        
preg_match'#<title>Форум АНТИЧАТ - (.+)</title>#'$content$title_tmp );
        
preg_match'#<a class="bigusername" href="member\.php\?.*">(.+)</a>#i'$content$author );
        
$outmsg "- - - - - ".html_entity_decode($title_tmp[1])."  [ Author: \"".html_entity_decode($author[1])."\" ] - - - - -\r\n\r\n";
        
preg_match_all'#<!-- message -->(.+)<!-- / message -->.*<td class="thead">(.+)</td>#Uis'$content$comments );
        
$i=1;
        foreach( 
$comments[1] as $n => $value )
        {

        
$tmp str_replace'<br />'"\r\n"$value );
        
$tmp strtr$tmp, array( 
                        
'<img src="images/smilies/smile.gif" border="0" alt="" title="Smile" class="inlineimg" />' => ":)",
                        
'<img src="images/smilies/mad.gif" border="0" alt="" title="Mad" class="inlineimg" />' => ">:|",
                        
'<img src="images/smilies/tongue.gif" border="0" alt="" title="Stick Out Tongue" class="inlineimg" />' => ":-P",
                        
'<img src="images/smilies/wink.gif" border="0" alt="" title="Wink" class="inlineimg" />' => ";)",
                        
'<img src="images/smilies/biggrin.gif" border="0" alt="" title="Big Grin" class="inlineimg" />' => ":D",
                        
'<img src="images/smilies/frown.gif" border="0" alt="" title="Frown" class="inlineimg" />' => ":(",
                        
'<img src="images/smilies/redface.gif" border="0" alt="" title="Embarrassment" class="inlineimg" />' => ":o",
                        
'<img src="images/smilies/confused.gif" border="0" alt="" title="Confused" class="inlineimg" />' => ":?",
                        
'<img src="images/smilies/rolleyes.gif" border="0" alt="" title="Roll Eyes (Sarcastic)" class="inlineimg" />' => "8(",
                        
'<img src="images/smilies/cool.gif" border="0" alt="" title="Cool" class="inlineimg" />' => "B)",
                        
'<img src="images/smilies/eek.gif" border="0" alt="" title="EKK!" class="inlineimg" />' => ':O'));

        
$tmp str_replace"\r\n\r\n\r\n""\r\n"$tmp );
        
$tmp str_replace"\r\n\r\n""\r\n"$tmp );
        if( 
strstr$tmp'Цитата:' ) )

        {
            
$tmp preg_replace'|<div style="margin-right: 20px; margin-left: 20px; padding: 10px; background: #44474f; border: 1px solid #e3e3e5; border-left: 1px solid #808084; border-top: 1px solid #808084; margin-bottom: 10px;">.*Сообщение от <strong>(.+)</strong>(.+)<else />|s'' { Сообщение от \\1: \\2 }  '$tmp );
        }

        
$tmp preg_replace'#<div class="smallfont" style="margin-bottom:2px">.*</div>.+(<code>|<pre)(.+)(</code>|</pre>)#s'"Код: { <div $2 }"$tmp );
        
$tmp strip_tags$tmp );
        
$outmsg .= "[ #".$i." ".html_entity_decode($comments[2][$n])." ]\r\n".html_entity_decode(trim($tmp))."\r\n-------------------------------------\r\n";
        
$i++;
        }

        return 
trim($outmsg);
}

function 
get_forums($index='index.php'$page='1')

{
    global 
$forum_suff,$thread_suff;
    if(
$index=='index.php') { $content file_get_contents'http://forum.antichat.ru/'.$index ); } else { $content file_get_contents"http://forum.antichat.ru/".$index."-".$page."-lastpost--30--1.html" ); }
    if( 
strstr$content'Тема отсутствует, либо неверно указаны' ) ) $content file_get_contents'http://forum.antichat.ru/index.php' );
    
preg_match_all'#<a\s+href="forum([0-9]+).html"><strong>(.+)</strong></a><br>#'$content$output_tmp );
    
$suff $forum_suff;
    if( 
$output_tmp[1][0] !== null )

    {
        foreach( 
$output_tmp[1] as $n => $value )

          {

            @
$forums .= $suff." ".$value." : \"".trim($output_tmp[2][$n])."\"\r\n";

          }

    }

    
preg_match_all'#<a href="thread([0-9]+)\.html"  >(.+)</a>#'$content$output_tmp );
        
preg_match_all'#<span style="cursor:pointer" onclick="window\.open\(\'.*[0-9]+\'\)">(.+)</span>#'$content$output_a_tmp );
    
$suff $thread_suff;
    if( 
$output_tmp[1][0] !== null )

    {
        foreach( 
$output_tmp[1] as $n => $value )

          {

            @
$forums .= $suff." ".$value." : \"".trim($output_tmp[2][$n])."\" [".$output_a_tmp[1][$n]."]\r\n";

          }
    }


    return 
$forums;
}


?>
P.S. код криво обрабатывает теги ( [СОDЕ], [РHР] ), некоторые не обрабатывает вообще.
[QUOTE] обрабатывать стал терпимо.

Пример запросов:
Код:
f 46 4 - получить 4 страницу тем форума 46
t 1121 30 2 - получить 30 комментариев со 2 страницы в топике 12111
f - получить ID и названия всех топиков
 
Ответить с цитированием

  #6  
Старый 17.04.2010, 10:44
Аватар для Fristail
Fristail
Участник форума
Регистрация: 25.10.2007
Сообщений: 248
Провел на форуме:
4333655

Репутация: 452
Отправить сообщение для Fristail с помощью ICQ
По умолчанию

найс.
phpdreamer,Deathdreams спасибо ребят =)
сейчас сам буду корячиться.
у кого есть еще мысли, то сливайте =)
 
Ответить с цитированием

  #7  
Старый 17.04.2010, 11:02
Аватар для Vlad&slav
Vlad&slav
Участник форума
Регистрация: 01.01.2009
Сообщений: 138
Провел на форуме:
817404

Репутация: 82
Отправить сообщение для Vlad&slav с помощью ICQ
По умолчанию

ну вот , сплагиатили идею
 
Ответить с цитированием

  #8  
Старый 17.04.2010, 13:44
Аватар для Deathdreams
Deathdreams
Постоянный
Регистрация: 08.11.2008
Сообщений: 498
Провел на форуме:
2603363

Репутация: 278
Отправить сообщение для Deathdreams с помощью ICQ
По умолчанию

Цитата:
Сообщение от Vlad&slav  
ну вот , сплагиатили идею
Я не собираюсь реализовывать твоего бота, просто переписал твой код + добавил пару функций.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Продажа ICQ-уинов от alkos'a alkos ICQ - Покупка, продажа 10 14.06.2010 14:20
Мгновенные сообщения как феномен Интернета GrinGoO Мировые новости 9 30.10.2009 08:41
Бесплатный хостинг для ICQ бота cren ICQ 29 23.07.2009 01:22
ICQMAILC.COM - новый баг icq! Kernet ICQ 11 30.01.2009 01:48



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ