RSS Ленты, API2 | Скрипт для просмотра новостных лент |
Здравствуйте, гость ( Вход | Регистрация )
RSS Ленты, API2 | Скрипт для просмотра новостных лент |
11.7.2009, 17:31
Сообщение
#41
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 4 Регистрация: 4.12.2008 Пользователь №: 1 311 Спасибо сказали: 0 раз |
STRELOK,
Код function ChatArrival(tUser,sData) sData = string.sub(sData,1,-2) local _,_,cmd = string.find(sData, "%b<>%s+(%S+)") if cmd == "!"..sCmd.."" then if tProfile[tUser.iProfile] == 1 then Core.SendPmToUser(tUser,Bot,GetFeed()) end return true end end Сложно придумать большую дыру для ддоса =) Ты не думал, что при таком использовании хаб можно запросто уронить? Скачивание и обработка фида должны проводиться периодически, а не по запросу юзера. Подумай, что будет, если ленту одновременно запросят несколько человек. ИМХО надо оставить обработку по таймеру и хранить ленту в виде строки или таблицы, а по запросу юзера выдавать ее в ЛС. |
|
|
11.7.2009, 18:33
Сообщение
#42
|
|
Developer Группа: Модераторы Сообщений: 541 Регистрация: 11.11.2008 Пользователь №: 1 075 Спасибо сказали: 244 раза |
Тогда качайте скрипт из первого поста
|
|
|
12.7.2009, 0:39
Сообщение
#43
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 4 Регистрация: 4.12.2008 Пользователь №: 1 311 Спасибо сказали: 0 раз |
Тогда качайте скрипт из первого поста Нет, я сам делал скрипт по вашему примеру Просто кое-что желательно сделать иначе. Могу выложить свой вариант, если кому нужно. У меня обновление фида и его парсинг производится по таймеру (как в оригинале), а по запросу юзера (как в варианте STRELOK) выдается уже обработанная лента, хранящаяся в памяти в виде строки. Да, памяти кушает скрипт больше, зато надежнее. |
|
|
12.7.2009, 2:08
Сообщение
#44
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Ддосить не удастся из-за антифлуда. Другое дело если он отключен. Да и вообще мало кто знает как это делается. Некоторые админы вообще отключают защиту от ддоса на хабе (ддос по средствам отсылки в dc-команде ip адреса жертвы).
Хотя соглашусь, что экономичнее запрашивать периодически и хранить в памяти. А то дёргать сайт и парсить при каждой команде слишком нагрузочно. |
|
|
22.7.2009, 0:18
Сообщение
#45
|
|
Активный участник Группа: Пользователи Сообщений: 58 Регистрация: 10.7.2008 Пользователь №: 167 Спасибо сказали: 4 раза |
Поставил это дело на хаб, не пашет, ругается на библиотеку (она есть) и кроме того пишет это:
[01:16] Синтакс F:\******\scripts\b_RSSFeed.lua:493: attempt to call global 'libinit' (a nil value) Как исправить? Спасибо! |
|
|
15.10.2009, 23:03
Сообщение
#46
|
|
Активный участник Группа: Пользователи Сообщений: 62 Регистрация: 11.10.2008 Пользователь №: 775 Спасибо сказали: 4 раза |
Поделитесь более мение рабочей версией, плиз...
|
|
|
15.11.2009, 13:25
Сообщение
#47
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 5 Регистрация: 7.4.2009 Пользователь №: 2 950 Спасибо сказали: 0 раз |
А под php можна его както переделать?
|
|
|
17.12.2009, 16:53
Сообщение
#48
|
|
Освоившийся участник Группа: Пользователи Сообщений: 335 Регистрация: 18.5.2009 Из: Уфа, штат Солнечная Башкирия Пользователь №: 3 353 Спасибо сказали: 7 раз |
Почитал-с-ума-сошел.
Так есть он, этот скрипт, готовый - не самододелываемый? Ну угостите... плизз. |
|
|
17.12.2009, 23:20
Сообщение
#49
|
|
Начинающий Группа: Пользователи Сообщений: 16 Регистрация: 9.9.2009 Пользователь №: 4 396 Спасибо сказали: 0 раз |
У кого она рабочая не глучит выложите пожалуйста
|
|
|
18.12.2009, 11:29
Сообщение
#50
|
|
Освоившийся участник Группа: Пользователи Сообщений: 335 Регистрация: 18.5.2009 Из: Уфа, штат Солнечная Башкирия Пользователь №: 3 353 Спасибо сказали: 7 раз |
....ждёмсъ....
|
|
|
18.12.2009, 11:48
Сообщение
#51
|
|
Developer Группа: Модераторы Сообщений: 541 Регистрация: 11.11.2008 Пользователь №: 1 075 Спасибо сказали: 244 раза |
FeedWatch.lua ( 7.29 килобайт )
Кол-во скачиваний: 130
Оффтоп А под php можна его както переделать? CODE <?php function GetXMLFirstVal($r,$t) { if(preg_match_all('/<('.$t.')>(.*)<\/\\1>/Usi',$r,$o)) return $o[2][0]; return false; } function GetXMLAllVal($r,$t) { if(preg_match_all('/<('.$t.')>(.*)<\/\\1>/Usi',$r,$o)) return $o[2]; return array(); } function GetStream($URL,$mode=0) { switch($mode) { // php case 0: $results = file_get_contents($URL); break; // CURL case 1: $ch = curl_init(); curl_setopt ($ch, CURLOPT_URL, $URL); // Destination URL curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); // Output to a variable curl_setopt ($ch, CURLOPT_POST, 0); // Use HTTP POST curl_setopt ($ch, CURLOPT_TIMEOUT, 20); // Default Timeout $results = curl_exec($ch); if(curl_error($ch)) { print_r(curl_getinfo($ch)); exit(); } break; // SOCKETS case 2: $info = parse_url($URL); $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if ($socket < 0) { echo "socket_create() failed: reason: " . socket_strerror($socket) . "\n"; exit(); } $result = socket_connect($socket, $info['host'], 80); if ($result < 0) { echo "socket_connect() failed.\nReason: ($result) " . socket_strerror($result) . "\n"; } $in = "GET ".$info['path']." HTTP/1.1\r\n"; $in .= "Host: ".$info['host']."\r\n"; $in .= "Connection: Close\r\n\r\n"; socket_write($socket, $in, strlen($in)); $out = ''; $results = ''; while ($out = socket_read($socket, 2048)) { $results .= $out; } socket_close($socket); break; default: $results = ''; } return $results; } if (isset($_GET['rss'])) { if ($_GET['rss'] == "bash.org.ru") //GET массив { $RSSS = array(); $RSSS[] = 'http://bash.org.ru/rss'; //RSS поток echo '<center><h3>Bash.org.ru</h3></center><br /><br />'; //имя rss потока foreach($RSSS AS $RSS) { //print("\n$RSS"); // получаем контент // 0 - php // 1- curl // 2- sock $XML = GetStream($RSS,0); if($XML) { $ITEMS = GetXMLAllVal($XML,'item'); $g=0; foreach($ITEMS AS $ITEM) { $g++; $TITLE = GetXMLFirstVal($ITEM,'title'); $LINK = GetXMLFirstVal($ITEM,'link'); $DESC = GetXMLFirstVal($ITEM,'description'); $DATE = GetXMLFirstVal($ITEM,'pubDate'); $CAT = GetXMLFirstVal($ITEM,'category'); if(!$DATE) { $DATE = GetXMLFirstVal($ITEM,'dc:date'); } if($DATE) $DATE = strtotime($DATE); else $DATE = time(); $TITLE = html_entity_decode($TITLE,ENT_QUOTES); $DESC = html_entity_decode($DESC,ENT_QUOTES); $CAT = html_entity_decode($CAT,ENT_QUOTES); echo '<li><a href="'.$LINK.'" target="_blank">'.$TITLE.'</a></li><br />'; $DESC= str_replace("<![CDATA[","",$DESC); $DESC= str_replace("]]>","",$DESC); echo '<ul><p>'.$DESC.'</p></ul>'; if ($g==100) //Количество выводимых результатов {break;} } } } } elseif ($_GET['rss'] == "ithappens") //GET массив { $RSSS = array(); $RSSS[] = 'http://ithappens.ru/rss/'; //RRS поток echo '<center><h3>ITHappens</h3></center><br /><br />'; //имя rss потока foreach($RSSS AS $RSS) { //print("\n$RSS"); // получаем контент // 0 - php // 1- curl // 2- sock $XML = GetStream($RSS,0); if($XML) { $ITEMS = GetXMLAllVal($XML,'item'); $g=0; foreach($ITEMS AS $ITEM) { $g++; $TITLE = GetXMLFirstVal($ITEM,'title'); $LINK = GetXMLFirstVal($ITEM,'link'); $DESC = GetXMLFirstVal($ITEM,'description'); $DATE = GetXMLFirstVal($ITEM,'pubDate'); $CAT = GetXMLFirstVal($ITEM,'category'); if(!$DATE) { $DATE = GetXMLFirstVal($ITEM,'dc:date'); } if($DATE) $DATE = strtotime($DATE); else $DATE = time(); $TITLE = html_entity_decode($TITLE,ENT_QUOTES); $DESC = html_entity_decode($DESC,ENT_QUOTES); $CAT = html_entity_decode($CAT,ENT_QUOTES); echo '<li><a href="'.$LINK.'" target="_blank">'.$TITLE.'</a></li><br />'; $DESC= str_replace("<![CDATA[","",$DESC); $DESC= str_replace("]]>","",$DESC); echo '<ul><p>'.$DESC.'</p></ul>'; if ($g==5) //Количество выводимых результатов {break;} } } } }} ?> |
|
|
18.12.2009, 14:08
Сообщение
#52
|
|
Освоившийся участник Группа: Пользователи Сообщений: 335 Регистрация: 18.5.2009 Из: Уфа, штат Солнечная Башкирия Пользователь №: 3 353 Спасибо сказали: 7 раз |
Дождался, качнул самый первый экземпляр, пацталом))) Робит, имхо как и задумано. А я думал новостей узнаю))) |
|
|
10.4.2010, 6:35
Сообщение
#53
|
|
Активный участник Группа: Пользователи Сообщений: 65 Регистрация: 23.9.2009 Пользователь №: 4 532 Спасибо сказали: 1 раз |
Что надо сделать, чтобы скрипт отсылал сообщения только определённному IP диапазону?
|
|
|
14.6.2010, 16:04
Сообщение
#54
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 1 Регистрация: 29.12.2008 Пользователь №: 1 605 Спасибо сказали: 0 раз |
Полностью рабочий скрипт. Не отправляет сообщения в ПМ юзерам(убрал это, т.к. считаю что это не нужно). Добавил команду, меню, отправка результата только при вводе команды в чат UPD: аттач загрузить не удалось :( , поэтому скачиваем отсюда: <span class='inv'><![CDATA[]]></span> можешь скрипт энтот перезалить на др ресурс? а то уже ссыль сдохла.. |
|
|
14.6.2010, 16:16
Сообщение
#55
|
|
Developer Группа: Модераторы Сообщений: 541 Регистрация: 11.11.2008 Пользователь №: 1 075 Спасибо сказали: 244 раза |
можешь скрипт энтот перезалить на др ресурс? а то уже ссыль сдохла.. http://mydc.ru/topic111.html?view=findpost&p=24208 На том адресе такой же когда-то лежал |
|
|
26.7.2010, 10:24
Сообщение
#56
|
|
Освоившийся участник Группа: Пользователи Сообщений: 276 Регистрация: 23.3.2010 Из: РФ Смоленск Пользователь №: 6 429 Спасибо сказали: 60 раз |
А вот у мя вопрос.. как сделать следующее...
к примеру парсить не с одного новостного канала а с нескольких, Смысл? Вот к примеру в менюшке: Яндекс новости, новости с кинопоиска, новости с вашего сайта, еще откуда то.. Не совсем удобно для каждого канала создавать отдельный скрипт, да и память грузит... и еще почему он не кеширует инфу? этож вызывает нагрузку... я про скрипт и з вот этого поста А во нашел.. хеширует он)) тока у меня файлик не создавался... Как исправить? (для freebsd) Находим Цитата local File = "FeedWatch.dat" Заменяем на Цитата local File = Core.GetPtokaXPath().."scripts/FeedWatch.dat" Кажись Я начинаю понимать этот язык..) |
|
|
26.7.2010, 12:39
Сообщение
#57
|
|
Главный ра******й тут... Группа: Главные администраторы Сообщений: 1 727 Регистрация: 18.5.2008 Из: RF, 2la Пользователь №: 1 Спасибо сказали: 776 раз |
Толкового скрипта нет, но в темах по рсс были поделки, работающие по нескольким каналам в одном скрипте. Толковый скрипт на ранней стадии написания...
|
|
|
24.9.2010, 15:31
Сообщение
#58
|
|
Белый Волк Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз |
Выложена отдельной темой работающая версия, переведенная из API1 в API2, работает под библиотекой луасокет и нет проблем с UTF-8.
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последнее сообщение | |
---|---|---|---|---|---|
От: RSS Ленты От темы с ID: 111 |
0 | DemoN | 4 581 | 21.7.2009, 8:35 Посл. сообщение: DemoN | |
RSS ленты | 8 | Accelerator | 11 443 | 21.6.2009, 18:40 Посл. сообщение: Accelerator | |
Rss Ленты Телепрограмм я замучился искать. |
3 | MEXAHuK | 9 090 | 17.3.2009, 10:24 Посл. сообщение: СПАНЧ | |
Кто Какие Rss Ленты Качает На Свой Хаб? | 4 | MEXAHuK | 9 625 | 27.2.2009, 17:19 Посл. сообщение: MEXAHuK | |
Rss Ленты Выдает ошибки |
0 | Otshelnik-Fm | 4 654 | 6.2.2009, 1:55 Посл. сообщение: Otshelnik-Fm | |
От: RSS Ленты От темы с ID: 111 |
0 | MEXAHuK | 5 137 | 5.1.2009, 20:12 Посл. сообщение: MEXAHuK | |
Ленты Rss API | Не парсит UTF-8 |
17 | district | 19 906 | 21.11.2008, 0:17 Посл. сообщение: district |
|
Сейчас: 26.11.2024, 20:13 |