myDC.ru

Здравствуйте, гость ( Вход | Регистрация )

 
3 страниц V  < 1 2 3  
Ответить в данную темуНачать новую тему

> RSS Ленты, API2 | Скрипт для просмотра новостных лент

Теги
Нет тегов для показа
xRayNeo
сообщение 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


Сложно придумать большую дыру для ддоса =)
Ты не думал, что при таком использовании хаб можно запросто уронить? Скачивание и обработка фида должны проводиться периодически, а не по запросу юзера. Подумай, что будет, если ленту одновременно запросят несколько человек. ИМХО надо оставить обработку по таймеру и хранить ленту в виде строки или таблицы, а по запросу юзера выдавать ее в ЛС.
Go to the top of the page
+Quote Post
Accelerator
сообщение 11.7.2009, 18:33
Сообщение #42


Developer
******

Группа: Модераторы
Сообщений: 541
Регистрация: 11.11.2008
Пользователь №: 1 075
Спасибо сказали: 244 раза




Тогда качайте скрипт из первого поста big_smile.gif
Go to the top of the page
+Quote Post
xRayNeo
сообщение 12.7.2009, 0:39
Сообщение #43


Абсолютный новичок


Группа: Пользователи
Сообщений: 4
Регистрация: 4.12.2008
Пользователь №: 1 311
Спасибо сказали: 0 раз




Цитата(STRELOK @ 11.7.2009, 19:33) *
Тогда качайте скрипт из первого поста big_smile.gif


Нет, я сам делал скрипт по вашему примеру big_smile.gif Просто кое-что желательно сделать иначе. Могу выложить свой вариант, если кому нужно.

У меня обновление фида и его парсинг производится по таймеру (как в оригинале), а по запросу юзера (как в варианте STRELOK) выдается уже обработанная лента, хранящаяся в памяти в виде строки. Да, памяти кушает скрипт больше, зато надежнее. big_smile.gif
Go to the top of the page
+Quote Post
Setuper
сообщение 12.7.2009, 2:08
Сообщение #44


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




Ддосить не удастся из-за антифлуда. Другое дело если он отключен. Да и вообще мало кто знает как это делается. Некоторые админы вообще отключают защиту от ддоса на хабе (ддос по средствам отсылки в dc-команде ip адреса жертвы).

Хотя соглашусь, что экономичнее запрашивать периодически и хранить в памяти. А то дёргать сайт и парсить при каждой команде слишком нагрузочно.
Go to the top of the page
+Quote Post
DemoN
сообщение 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)


Как исправить? Спасибо!
Go to the top of the page
+Quote Post
Lesh™
сообщение 15.10.2009, 23:03
Сообщение #46


Активный участник
***

Группа: Пользователи
Сообщений: 62
Регистрация: 11.10.2008
Пользователь №: 775
Спасибо сказали: 4 раза




Поделитесь более мение рабочей версией, плиз...
Go to the top of the page
+Quote Post
12345
сообщение 15.11.2009, 13:25
Сообщение #47


Абсолютный новичок


Группа: Пользователи
Сообщений: 5
Регистрация: 7.4.2009
Пользователь №: 2 950
Спасибо сказали: 0 раз




А под php можна его както переделать?
Go to the top of the page
+Quote Post
Uncle_Dif
сообщение 17.12.2009, 16:53
Сообщение #48


Освоившийся участник
*****

Группа: Пользователи
Сообщений: 335
Регистрация: 18.5.2009
Из: Уфа, штат Солнечная Башкирия
Пользователь №: 3 353
Спасибо сказали: 7 раз




Почитал-с-ума-сошел.

Так есть он, этот скрипт, готовый - не самододелываемый?

Ну угостите... плизз.
Go to the top of the page
+Quote Post
ART8150
сообщение 17.12.2009, 23:20
Сообщение #49


Начинающий
*

Группа: Пользователи
Сообщений: 16
Регистрация: 9.9.2009
Пользователь №: 4 396
Спасибо сказали: 0 раз




У кого она рабочая не глучит выложите пожалуйста
Go to the top of the page
+Quote Post
Uncle_Dif
сообщение 18.12.2009, 11:29
Сообщение #50


Освоившийся участник
*****

Группа: Пользователи
Сообщений: 335
Регистрация: 18.5.2009
Из: Уфа, штат Солнечная Башкирия
Пользователь №: 3 353
Спасибо сказали: 7 раз




....ждёмсъ....
Go to the top of the page
+Quote Post
Accelerator
сообщение 18.12.2009, 11:48
Сообщение #51


Developer
******

Группа: Модераторы
Сообщений: 541
Регистрация: 11.11.2008
Пользователь №: 1 075
Спасибо сказали: 244 раза




Прикрепленный файл  FeedWatch.lua ( 7.29 килобайт ) Кол-во скачиваний: 130

Оффтоп
Цитата(12345 @ 15.11.2009, 15:25) *
А под 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;}
}

}
}
}} ?>



Спасибо сказали:
Go to the top of the page
+Quote Post
Uncle_Dif
сообщение 18.12.2009, 14:08
Сообщение #52


Освоившийся участник
*****

Группа: Пользователи
Сообщений: 335
Регистрация: 18.5.2009
Из: Уфа, штат Солнечная Башкирия
Пользователь №: 3 353
Спасибо сказали: 7 раз




Цитата(STRELOK @ 18.12.2009, 11:48) *
Прикрепленный файл  FeedWatch.lua ( 7.29 килобайт ) Кол-во скачиваний: 130


Дождался, качнул самый первый экземпляр, пацталом)))
Робит, имхо как и задумано.
А я думал новостей узнаю)))
Go to the top of the page
+Quote Post
SAG
сообщение 10.4.2010, 6:35
Сообщение #53


Активный участник
***

Группа: Пользователи
Сообщений: 65
Регистрация: 23.9.2009
Пользователь №: 4 532
Спасибо сказали: 1 раз




Что надо сделать, чтобы скрипт отсылал сообщения только определённному IP диапазону?
Go to the top of the page
+Quote Post
GreyDer
сообщение 14.6.2010, 16:04
Сообщение #54


Абсолютный новичок


Группа: Пользователи
Сообщений: 1
Регистрация: 29.12.2008
Пользователь №: 1 605
Спасибо сказали: 0 раз




Цитата(STRELOK @ 10.7.2009, 17:58) *
Полностью рабочий скрипт. Не отправляет сообщения в ПМ юзерам(убрал это, т.к. считаю что это не нужно). Добавил команду, меню, отправка результата только при вводе команды в чат

UPD: аттач загрузить не удалось :( , поэтому скачиваем отсюда: <span class='inv'><![CDATA[]]></span>http://core454.hut1.ru/RSS_Feed.lua<span class='inv'><![CDATA[]]></span>


можешь скрипт энтот перезалить на др ресурс? а то уже ссыль сдохла..
Go to the top of the page
+Quote Post
Accelerator
сообщение 14.6.2010, 16:16
Сообщение #55


Developer
******

Группа: Модераторы
Сообщений: 541
Регистрация: 11.11.2008
Пользователь №: 1 075
Спасибо сказали: 244 раза




Цитата(GreyDer @ 14.6.2010, 19:04) *
можешь скрипт энтот перезалить на др ресурс? а то уже ссыль сдохла..

http://mydc.ru/topic111.html?view=findpost&p=24208 На том адресе такой же когда-то лежал big_smile.gif
Go to the top of the page
+Quote Post
DEN 007
сообщение 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"


Кажись Я начинаю понимать этот язык..) boss.gif
Go to the top of the page
+Quote Post
Nickolya
сообщение 26.7.2010, 12:39
Сообщение #57


Главный ра******й тут...
*********

Группа: Главные администраторы
Сообщений: 1 727
Регистрация: 18.5.2008
Из: RF, 2la
Пользователь №: 1
Спасибо сказали: 776 раз




Толкового скрипта нет, но в темах по рсс были поделки, работающие по нескольким каналам в одном скрипте. Толковый скрипт на ранней стадии написания...
Go to the top of the page
+Quote Post
Ksan
сообщение 24.9.2010, 15:31
Сообщение #58


Белый Волк
*********

Группа: Пользователи
Сообщений: 1 723
Регистрация: 11.9.2008
Из: г.Томск
Пользователь №: 516
Спасибо сказали: 657 раз




Выложена отдельной темой работающая версия, переведенная из API1 в API2, работает под библиотекой луасокет и нет проблем с UTF-8.
Go to the top of the page
+Quote Post

3 страниц V  < 1 2 3
Ответить в данную темуНачать новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

Collapse

> Похожие темы

  Тема Ответов Автор Просмотров Последнее сообщение
No New Posts От: RSS Ленты
От темы с ID: 111
0 DemoN 4 603 21.7.2009, 8:35 Посл. сообщение: DemoN
No New Posts Topic has attachmentsRSS ленты
8 Accelerator 11 482 21.6.2009, 18:40 Посл. сообщение: Accelerator
No New Posts Rss Ленты Телепрограмм
я замучился искать.
3 MEXAHuK 9 135 17.3.2009, 10:24 Посл. сообщение: СПАНЧ
No New Posts Кто Какие Rss Ленты Качает На Свой Хаб?
4 MEXAHuK 9 664 27.2.2009, 17:19 Посл. сообщение: MEXAHuK
No New Posts Topic has attachmentsRss Ленты
Выдает ошибки
0 Otshelnik-Fm 4 670 6.2.2009, 1:55 Посл. сообщение: Otshelnik-Fm
No New Posts От: RSS Ленты
От темы с ID: 111
0 MEXAHuK 5 163 5.1.2009, 20:12 Посл. сообщение: MEXAHuK
No new Topic has attachmentsЛенты Rss
API | Не парсит UTF-8
17 district 20 065 21.11.2008, 0:17 Посл. сообщение: district

 



RSS Сейчас: 23.12.2024, 17:33