Перейти к контенту

Бот постит новости на форум


Рекомендуемые сообщения

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

rss_tools.zip

Ссылка на комментарий
Поделиться на других сайтах

бот шляеться по крону на определенную ленту, берет контент, конвертит в HTML и запихивает в указанный ID форума в указанную ID тему пост.

 

при этом ориентируеться на $FeedMaxItems == количестко забираемых новостей, предположим 10.

 

в этой версии конвертера появилось вот такое

 

if ($NoFutureItems) {
		$noon = strtotime("today at 12:00");
		if (trim($this->pubdate) != "") {
		  $ItemPubDate = strtotime($this->pubdate);
		}
		else if (trim($this->pubdateDC) != "") {
		  $ItemPubDate = FeedForAll_rss2html_getRFDdate($this->pubdateDC);
		} else {
		  $ItemPubDate = time();
		}
		if (($ItemPubDate - $noon) > 43200) {
		  $UseItem = FALSE;
		}
	  }

 

что говорит о параметре забора новостей раз в сутки, не работает, потому как локалхост или какая-то чертовщина упорно считает время от создания юникса, т.е. от 1970 года.

 

предположим что будем сохранять элемент массива $this->ItemPubDate[0] (масив содержит даты новостей в ленте), нулевой элемент содержит дату последней новости. сохранили, при следующем заходе сравнили, не изменилось -> exit ("новых новостей нет"). пример такой работы можно наблюдать здесь

 

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

 

следовательно сравнивать нужно весь старый массив с новым массивом на предмет равенства даты публикации. т.е. при заборе новостей идет сравнения старого массива дат новостей с новым, если != тогда забирать эту новость.

 

вроде все просто, но я что-то блуждаю в трех соснах.

 

ЗЫ нафига нам собствено масив ? есть дата последней новости, все что старее этой даты - выкидываем, все остальное забираем

Ссылка на комментарий
Поделиться на других сайтах

где-то так ...

 

//Post or not post
$file = fopen("file.txt","r");
  $last_news_old = fgets($file,100);

  $i = -1;
  while (++$i <= $FeedMaxItems)
  {
	  if (strtotime($rss_parser->ItemPubDate[$i]) <= $last_news_old) $not_post = TRUE;
  }

$last_news = strtotime($rss_parser->ItemPubDate[0]);
$file = fopen ("file.txt","r+");
	$str = $last_news;
	  fputs ( $file, $str);
	  fclose ($file);

	  if ($not_post) exit ("Нафиг");

Ссылка на комментарий
Поделиться на других сайтах

Пытаюсь поставить ботину, на импорт настроил ленту со своего же форума для теста, Вот настройки

   
 var $forum_id = 28;			   // id форума, где будут создаваться темы
 var $topic_id = 482;	
 var $table_prefix = "ibf_";  // префикс таблиц
 var $member_id = 1;			//  id - пользователя, который будет постить мессагу
 var $username ="=V@NEK=";	   //   имя пользователя
 var $user_ip = "127.0.0.1";  //	IP пользователя

 // данные на соединение с БД

 var $host = "10.21.252.1";	// хост
 var $db =   "fen1x";		//  база crimeaboard
 var $user = "v2nek";	   //   логин cboard
 var $pass = "***";		  //	пароль

 

Вот, но когда захожу на эту страничку ничего не происходит эта страничка пустая, сообщения не появляются, иды тем и форума правильные, префикс таблицы тоже. Могут ли бока возникать что я запускаю скрипт на другой машине? ( хотя .. машина - 10.21.252.3 расстояния от сервера не больше 20 метров и один свич по середине по кабелю, тоесть отсутствия доступа быть не может, тем более зеркало форума тут нормально работает на этой же машине, значит соединение к базе есть).

Ссылка на комментарий
Поделиться на других сайтах

этого не знаю, мучаю эту скотину на локале и на базовом форуме, но запускаю скрипт непосредственно на сервере

 

сделай echo $template хоть как то будешь видеть исполнение скрипта

Ссылка на комментарий
Поделиться на других сайтах

Абсолютно никакой реакци.. чего-то я не понимаю.. там используются какие-то особенные функции?

 

счас попробую включить отладку в пхп гляну..

хм.. стояло error_reporting = E_ALL и всеравно пустая страница..

Ссылка на комментарий
Поделиться на других сайтах

найди

 

// Since ' is not HTML, but is XML convert.
$template = str_replace("'", "'", $template);

 

добавь нижее

 

echo $template;

 

при работе скрипта будет видна страница в HTML

 

даже в этой кривой версии вроде шаблон выводился

Ссылка на комментарий
Поделиться на других сайтах

Пустая страница.. =((

Пробовал и того бота что на первой странице и того что несколькими постами раньше.. может там какие-то особенные настройки пхп нужны?

 

ЗЫ: меняю пароль к БД, никакой ошибки.. тоесть до нее он даже не доходит..

 

ЗЫЫ: проверил адрес ленты работает.. лента там есть..

Ссылка на комментарий
Поделиться на других сайтах

Если пытаться смотреть сорсы этой странички то выдается вот это

<html><body></body></html>

 

ООО

Хоть что-то..

 Fatal error: Call to undefined function xml_parser_create() in /var/www/html/rss/rss2html.php on line 580

 

Строка 580

  $rss_parser = new FeedForAll_rss2html_RSSParser();

 

Если поможет.....

PHP Version 5.0.4

Ссылка на комментарий
Поделиться на других сайтах

попробуй взять другую ленту, у меня вполне нормально общаеться с xml лентами, хотя кое чаго в этом скрипте я сам понять не моги
Ссылка на комментарий
Поделиться на других сайтах

Попробовал с твоего форума, с этого форума, потом с cnews ленту.. ни одна не работает.. пишет ту же самую ошибку. МОжешь привести пример с каких лент ты берешь?

 

ЗЫ: Попробовал еще ленту с Яндекса, та же ошибка..

Ссылка на комментарий
Поделиться на других сайтах

я так понял что существует проблема с лентами расширения .php

 

версии последних блужданий

 

 

 

конструкция

 

$file = fopen("file.txt","r");
 $last_news_old = fgets($file,100);

 $i = -1;
 while (++$i < 10)
 {
  if (strtotime($rss_parser->ItemPubDate[$i]) <= $last_news_old)
	{
	  $not_post = TRUE;
	  $counter = $FeedMaxItems-1;
	  $FeedMaxItems = $counter;
	}

  else {

	$not_post = FALSE;
	break;
	}
 }

$file = fopen ("file.txt","r+");
$last_news = strtotime($rss_parser->ItemPubDate[0]);
  fputs ( $file, $last_news);
  fclose ($file);

 

не работает

 

$FeedMaxItems - количество новостей в ленте

 

ItemPubDate[$i] массив дат в новостях

 

в файл file.txt сохраняеться дата последней новости т.е ItemPubDate[0]

 

в данном примере забита лента Cnews проверил, работает 100%, постит

 

может в предидущем выложил что-то не то

file.zip

Ссылка на комментарий
Поделиться на других сайтах

  • 1 месяц спустя...

Dekker

Бегло глянул последний твой атач в этой теме.

Все отрабатыывает корректно, но в базу ни фига не попадает. Пока я не понял почему так происходит. Ошибок тоже нет.

 

На счет файлика file.txt не понял нафига? Ведь есть же поле "post_date" в таблице постов имхо можно по нему ориентироватся.

Ссылка на комментарий
Поделиться на других сайтах

так, for all последний вариант который живет на http://crimea-board.net и спамит

 

грабли некоректности повсюду, но магистры не захотели :D причесал как смог, кто дополнит, буду только рад

 

кусок кода

function NewsBot() 
 {
$this->title = "Новости Securitylab.ru";
$this->post  = "";
 }

отвечает за то что бы при постинге на главной странице вылезло в обновлении коректный заголовок, иначе он не вылазит, тема обновляеться, и getlastpost на главной странице нормально работает, но заловка обновленной темы нет на главной, знаю что нужен еще один запрос, не хочу.

 

http://crimea-board.net/Temp/Temp.zip

 

исправлены несколько косяков с запросами

 

в данном виде все работает на вышеуказанном форуме

 

PS забираються ленты с секурити лаб, и 3D News

 

некоторые ленты в процессе экспериментов действительно коректно обрабатывались парсером, но увы, в базу не падали

 

xRay

Ведь есть же поле "post_date" в таблице постов имхо можно по нему ориентироватся.

при чем тут post_date по отношению вывода и сравнения новостей с ленты ? обрабатываем не дату поста, а дату новости

Ссылка на комментарий
Поделиться на других сайтах

  • 2 недели спустя...
  • 8 месяцев спустя...

А может уже есть исправленая, рабочая версия скажем как на этом форуме Новостной форум

 

Буду премного блогодарен!!!

Мишка

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.