Архив Об архиве FAQ New BAN List Полезные ссылки Друзья архива Архив новостей
С Днём Защитника Отечества!   Архив by ArjLover
Регистрация СправкаПравила форума Поиск Сообщения за день Все разделы прочитаны Пользователи Календарь

Приёмная ArjLover-a Послания и пожелания по работе Архива

Ответ
 
Опции темы Опции просмотра
  #1  
Старый 22.03.2008, 01:19
Аватар для ArjLover
Администратор
 
Регистрация: 25.11.2006
Адрес: Czech Republic Прага
Пол: Male
Сообщений: 2,863
Отправить сообщение для ArjLover с помощью ICQ
RSS

Делаем заново. Кто обладает знаниями (в отличии от меня) по данной технологии прошу высказываться - что и как делать. Сейчас все в базе, с RSS должно быть полегче.

Updated:
С технологией разобрались. теперь нужны ваши пожелания по оформлению - что хотите видеть?
разные подписки на разные разделы или одну? какую информацию вставлять? побольше или поменьше? с картинками или без?

Последний раз редактировалось ArjLover, 01.04.2008 в 01:05.
Ответить с цитированием
  #2  
Старый 22.03.2008, 02:27
Member
 
Регистрация: 19.12.2006
Пол: Male
Сообщений: 74
Немного переделав запросы к базе и всякую другую мелочёвку, можно получить то, что надо. Взято с одного трекера:
Код:
<?
# ---------- config variables ----------------------------
$S_header = "Content-Type: application/xml; charset=windows-1251" ;

$ch_name = "тут было название трекера" ;
$ch_link = "http://тут был урл трекера/" ;

$mysql_user = "тут был логин" ;
$mysql_pass = "тут был пароль" ;
$mysql_db = "тут было имя базы" ;

$images_dir = "тут был путь к картинкам" ;
$web_images_dir = "http://тут был урл трекера/descimages" ;

include("../include/global.php");
# ------------------------------------------- routines --
function RowSet ( $r ) {
$o_link = "http://тут был урл трекера/details.php?id=".$r['id'] ;
$o_desc = $r['descr'];
#$o_desc = substr ( $o_desc, 0 , 80 ) ;
$o_desc = str_replace ( "&", "and", $o_desc ) ;
$o_desc = convert_cyr_string ( $o_desc, "k", "w" ) ;
$o_desc = format_comment($o_desc);
$o_desc = str_replace ( "&nbsp;", " ", $o_desc ) ;
global $images_dir, $web_images_dir;
$image = "";
if (file_exists($images_dir."/1/".$r["id"].".gif")) $image = "<img src=\"".$web_images_dir."/1/".$r["id"].".gif\" align=\"left\" border=\"0\" />";
if (file_exists($images_dir."/1/".$r["id"].".jpg")) $image = "<img src=\"".$web_images_dir."/1/".$r["id"].".jpg\" align=\"left\" border=\"0\" />";
if (file_exists($images_dir."/1/".$r["id"].".png")) $image = "<img src=\"".$web_images_dir."/1/".$r["id"].".png\" align=\"left\" border=\"0\" />";
$o_desc = "<table width=\"100%\"><tr><td>" . $image . "</td></tr></table>" . $o_desc;
$o_name = str_replace ( "&", "&amp;", $r['name'] ) ;
$o_desc = str_replace ( "<", "&lt;", $o_desc );
$o_desc = str_replace ( ">", "&gt;", $o_desc );
$o_time = date ("D, d M Y H:i:s", strtotime ( $r['added'])) ;
$o_name = convert_cyr_string ( $o_name, "k", "w" ) ;
$outp = "<item>
      <title>".$o_name."</title>
      <link>".$o_link."</link>
      <description>".$o_desc."</description>
      <pubDate>".$o_time." +0300</pubDate>
      <guid>".$o_link."</guid>
    </item>" ;
return $outp ;
}

function PrintErrXml () {
global $ch_name, $ch_link ;
$ch_time = date ("D, d M Y H:i:s") ;
$output = "<?xml version=\"1.0\" encoding=\"windows-1251\"?>
<rss version=\"2.0\">
<channel>
<title>$ch_name</title>
<link>$ch_link</link>
<description>The New Ten Torrents</description>
<language>ru</language>
<pubDate>$ch_time +0300</pubDate>
<lastBuildDate>$ch_time +0300</lastBuildDate>
<docs>http://blogs.law.harvard.edu/tech/rss</docs>
<generator>GenericRSS 0.1</generator>
<managingEditor>local@qwerty.ru</managingEditor>
<webMaster>local@qwerty.ru</webMaster>
<item>
<title>Error.</title>
 <link>http://qwerty.ru</link>
 <description>вЕЦН-РН МЕ ЯНЕДХМХРЭЯЪ Я АЮГНИ.</description>
      <pubDate>".$ch_time." +0300</pubDate>
    </item>
</channel>
</rss>" ;
 print $output ;
 exit;
}

function ReadOldTime () {
$fp = fopen ("./dynamic/011var", "r" );
$times = fread ( $fp, 128 ) ;
fclose ( $fp ) ;
$times = str_replace ( "\n", "", $times );
$times = (integer)$times ;
$sec = time() - $times ;
return $sec ;
}

# -------------------------------------------main code----
header ( $S_header ) ;

$sec = ReadOldTime () ;
if ( $sec < 600 )
{
include ("./dynamic/ready2.php") ;
}
else
{
$ch_time = date ("D, d M Y H:i:s") ;
$output = "<?xml version=\"1.0\" encoding=\"windows-1251\"?>
<rss version=\"2.0\">
<channel>
<title>$ch_name</title>
<link>$ch_link</link>
<description>The New 20 Torrents</description>
<language>ru</language>
<pubDate>$ch_time +0300</pubDate>
<lastBuildDate>$ch_time +0300</lastBuildDate>
<docs>http://blogs.law.harvard.edu/tech/rss</docs>
<generator>GenericRSS 0.1</generator>
<managingEditor>nobody@nowhere.ru</managingEditor>
<webMaster>nobody@nowhere.ru</webMaster>" ;

$link = @mysql_connect("localhost", $mysql_user, $mysql_pass) or PrintErrXml() ;
@mysql_select_db($mysql_db) or PrintErrXml() ;
@mysql_query("SET NAMES koi8r");
$q = "SELECT id, name, descr, added, seeders FROM torrents WHERE level=0 ORDER BY otime DESC,id DESC LIMIT 20" ;
$qr = mysql_query( $q ) or die ("Error: Query execution failed");

while ($r = mysql_fetch_assoc ( $qr )) {
$output.= RowSet ( $r ) ;
} //while
$output.="</channel>
</rss>" ;

$output2 = addslashes ( $output ) ;
$output2 = "<?php print (\"".$output2."\"); ?>" ;
$fp = fopen ("./dynamic/ready2.php","w+") ;
fwrite ( $fp, $output2) ;
fclose ( $fp ) ;

$fp = fopen ("./dynamic/011var", "w+" );
fwrite ( $fp, time() ) ;
fclose ( $fp );

print $output ;
}
?>
Ответить с цитированием
  #3  
Старый 27.03.2008, 16:37
Senior Member
 
Регистрация: 06.03.2008
Адрес: Russian Federation Южный Урал
Пол: Male
Сообщений: 166
Цитата:
Сообщение от Shurik Посмотреть сообщение
Код:
<?
# ---------- config variables ----------------------------
$S_header = "Content-Type: application/xml; charset=windows-1251" ;

$ch_name = "тут было название трекера" ;
$ch_link = "http://тут был урл трекера/" ;

$mysql_user = "тут был логин" ;
$mysql_pass = "тут был пароль" ;
$mysql_db = "тут было имя базы" ;

$images_dir = "тут был путь к картинкам" ;
$web_images_dir = "http://тут был урл трекера/descimages" ;

include("../include/global.php");
# ------------------------------------------- routines --
function RowSet ( $r ) {
$o_link = "http://тут был урл трекера/details.php?id=".$r['id'] ;
$o_desc = $r['descr'];
#$o_desc = substr ( $o_desc, 0 , 80 ) ;
$o_desc = str_replace ( "&", "and", $o_desc ) ;
$o_desc = convert_cyr_string ( $o_desc, "k", "w" ) ;
$o_desc = format_comment($o_desc);
$o_desc = str_replace ( "&nbsp;", " ", $o_desc ) ;
global $images_dir, $web_images_dir;
$image = "";
if (file_exists($images_dir."/1/".$r["id"].".gif")) $image = "<img src=\"".$web_images_dir."/1/".$r["id"].".gif\" align=\"left\" border=\"0\" />";
if (file_exists($images_dir."/1/".$r["id"].".jpg")) $image = "<img src=\"".$web_images_dir."/1/".$r["id"].".jpg\" align=\"left\" border=\"0\" />";
if (file_exists($images_dir."/1/".$r["id"].".png")) $image = "<img src=\"".$web_images_dir."/1/".$r["id"].".png\" align=\"left\" border=\"0\" />";
$o_desc = "<table width=\"100%\"><tr><td>" . $image . "</td></tr></table>" . $o_desc;
$o_name = str_replace ( "&", "&amp;", $r['name'] ) ;
$o_desc = str_replace ( "<", "&lt;", $o_desc );
$o_desc = str_replace ( ">", "&gt;", $o_desc );
$o_time = date ("D, d M Y H:i:s", strtotime ( $r['added'])) ;
$o_name = convert_cyr_string ( $o_name, "k", "w" ) ;
$outp = "<item>
      <title>".$o_name."</title>
      <link>".$o_link."</link>
      <description>".$o_desc."</description>
      <pubDate>".$o_time." +0300</pubDate>
      <guid>".$o_link."</guid>
    </item>" ;
return $outp ;
}

function PrintErrXml () {
global $ch_name, $ch_link ;
$ch_time = date ("D, d M Y H:i:s") ;
$output = "<?xml version=\"1.0\" encoding=\"windows-1251\"?>
<rss version=\"2.0\">
<channel>
<title>$ch_name</title>
<link>$ch_link</link>
<description>The New Ten Torrents</description>
<language>ru</language>
<pubDate>$ch_time +0300</pubDate>
<lastBuildDate>$ch_time +0300</lastBuildDate>
<docs>http://blogs.law.harvard.edu/tech/rss</docs>
<generator>GenericRSS 0.1</generator>
<managingEditor>local@qwerty.ru</managingEditor>
<webMaster>local@qwerty.ru</webMaster>
<item>
<title>Error.</title>
 <link>http://qwerty.ru</link>
 <description>вЕЦН-РН МЕ ЯНЕДХМХРЭЯЪ Я АЮГНИ.</description>
      <pubDate>".$ch_time." +0300</pubDate>
    </item>
</channel>
</rss>" ;
 print $output ;
 exit;
}

function ReadOldTime () {
$fp = fopen ("./dynamic/011var", "r" );
$times = fread ( $fp, 128 ) ;
fclose ( $fp ) ;
$times = str_replace ( "\n", "", $times );
$times = (integer)$times ;
$sec = time() - $times ;
return $sec ;
}

# -------------------------------------------main code----
header ( $S_header ) ;

$sec = ReadOldTime () ;
if ( $sec < 600 )
{
include ("./dynamic/ready2.php") ;
}
else
{
$ch_time = date ("D, d M Y H:i:s") ;
$output = "<?xml version=\"1.0\" encoding=\"windows-1251\"?>
<rss version=\"2.0\">
<channel>
<title>$ch_name</title>
<link>$ch_link</link>
<description>The New 20 Torrents</description>
<language>ru</language>
<pubDate>$ch_time +0300</pubDate>
<lastBuildDate>$ch_time +0300</lastBuildDate>
<docs>http://blogs.law.harvard.edu/tech/rss</docs>
<generator>GenericRSS 0.1</generator>
<managingEditor>nobody@nowhere.ru</managingEditor>
<webMaster>nobody@nowhere.ru</webMaster>" ;

$link = @mysql_connect("localhost", $mysql_user, $mysql_pass) or PrintErrXml() ;
@mysql_select_db($mysql_db) or PrintErrXml() ;
@mysql_query("SET NAMES koi8r");
$q = "SELECT id, name, descr, added, seeders FROM torrents WHERE level=0 ORDER BY otime DESC,id DESC LIMIT 20" ;
$qr = mysql_query( $q ) or die ("Error: Query execution failed");

while ($r = mysql_fetch_assoc ( $qr )) {
$output.= RowSet ( $r ) ;
} //while
$output.="</channel>
</rss>" ;

$output2 = addslashes ( $output ) ;
$output2 = "<?php print (\"".$output2."\"); ?>" ;
$fp = fopen ("./dynamic/ready2.php","w+") ;
fwrite ( $fp, $output2) ;
fclose ( $fp ) ;

$fp = fopen ("./dynamic/011var", "w+" );
fwrite ( $fp, time() ) ;
fclose ( $fp );

print $output ;
}
?>
В коде выделил цветом нестыковки.
Это переделка с кодировки koi8r.
Кроме того должно быть соответствие "LIMIT 20" (прокрутите текст кода вправо) с содержимым "description" (10 или 20).
Вроде мелочь, но всё же...

Кстати, эти строки я бы записал в обратном порядке:
Код:
if (file_exists($images_dir."/1/".$r["id"].".png")) $image = "<img src=\"".$web_images_dir."/1/".$r["id"].".png\" align=\"left\" border=\"0\" />";
else if (file_exists($images_dir."/1/".$r["id"].".jpg")) $image = "<img src=\"".$web_images_dir."/1/".$r["id"].".jpg\" align=\"left\" border=\"0\" />";
else if (file_exists($images_dir."/1/".$r["id"].".gif")) $image = "<img src=\"".$web_images_dir."/1/".$r["id"].".gif\" align=\"left\" border=\"0\" />";

Последний раз редактировалось RUSpectrum, 27.03.2008 в 16:57.
Ответить с цитированием
  #4  
Старый 28.03.2008, 00:26
Member
 
Регистрация: 19.12.2006
Пол: Male
Сообщений: 74
Цитата:
Сообщение от RUSpectrum Посмотреть сообщение
В коде выделил цветом нестыковки.
Это переделка с кодировки koi8r.
В коде совсем неслучайно присутствует convert_cyr_string...

ArjLover, дайте мне точку опоры, и я... структуру базы - напишу, как надо, ибо это совсем несложно...
Ответить с цитированием
  #5  
Старый 22.03.2008, 13:56
Аватар для ArjLover
Администратор
 
Регистрация: 25.11.2006
Адрес: Czech Republic Прага
Пол: Male
Сообщений: 2,863
Отправить сообщение для ArjLover с помощью ICQ
Shurik, спасибо конечно, но это не совсем от что хотелось бы. я не собираюсь анонсировать торренты. Хотя в анонсе новых пополнений наверно стоит публиковать все типы линков. Может еще новости с главной? или какие-то срочные технические объявления? А можно пускать несколько подвидов чтобы они не смешивались?
Ответить с цитированием
  #6  
Старый 22.03.2008, 22:40
Member
 
Регистрация: 19.12.2006
Пол: Male
Сообщений: 74
ArjLover, анонсировать торренты не нужно ссылки на торренты меняем на ссылки на информацию по видеофайлам и всё
Ответить с цитированием
  #7  
Старый 26.03.2008, 05:14
Member
 
Регистрация: 16.03.2007
Адрес: Canada Toronto, Canada
Пол: Male
Сообщений: 41
А нельзя это сделать так как это делают здесь:
http://mults.spb.ru/rss.php

Это ОЧЕНЬ удобно...

(RSS устанавливается на Mozilla Thunderbird)
Ответить с цитированием
  #8  
Старый 26.03.2008, 14:38
Аватар для ArjLover
Администратор
 
Регистрация: 25.11.2006
Адрес: Czech Republic Прага
Пол: Male
Сообщений: 2,863
Отправить сообщение для ArjLover с помощью ICQ
Дожили. Но по линку совсем непонятно как это сделано и работает. Я совсем не пользуюсь RSS в своей жизни.
Ответить с цитированием
  #9  
Старый 27.03.2008, 13:45
Senior Member
 
Регистрация: 06.03.2008
Адрес: Russian Federation Южный Урал
Пол: Male
Сообщений: 166
ArjLover, ссылку, указанную Esn, нужно посмотреть с помощью пункта контекстного меню броузера "Просмотр исходного кода страницы".

RSS - это разновидность языка XML.
RSS в Википедии.
(есть пример RSS 2.0 канала)
Оттуда взял вот эту ссылку:
Спецификация RSS 2.0 (хм... она на русском)
Есть примеры и главное - описание тэгов согласно международной спецификации.

Shurik привел пример PHP-кода (если я правильно понял).
К сожалению я не PHP-ишник (я "а-ля Mircosoft Windows"), хотя предложенный код вполне правильный.

Кстати, RSS поддерживается не только Mozilla Thunderbird, но и многими броузерами.
У меня Mozilla Firefox - всё прекрасно работает.

Не удивлюсь, что в форумном PHP-движке уже заложен код формирования RSS-новостей.
На каком-то форуме видел, была новостная ветка "прикрученная" к RSS-новостям.

P.S. - Если честно, то не понял в чем собственно проблема...
Ответить с цитированием
  #10  
Старый 28.03.2008, 02:03
Member
 
Регистрация: 16.03.2007
Адрес: Canada Toronto, Canada
Пол: Male
Сообщений: 41
Цитата:
Сообщение от ArjLover Посмотреть сообщение
Дожили. Но по линку совсем непонятно как это сделано и работает. Я совсем не пользуюсь RSS в своей жизни.
Как это сделано не знаю, а выглядит это вот так:



Справа: RSS от сайта
Слева: другии RSS-feeds к которым я подписался

Последний раз редактировалось Esn, 28.03.2008 в 02:20.
Ответить с цитированием
  #11  
Старый 27.03.2008, 13:53
Аватар для ArjLover
Администратор
 
Регистрация: 25.11.2006
Адрес: Czech Republic Прага
Пол: Male
Сообщений: 2,863
Отправить сообщение для ArjLover с помощью ICQ
Проблема в дизайне этого произведения. Как можно заметить у меня-то c html не особо, а уж все это заворачивать в RSS/XML.. и самое главное - я всегда прошу помощь в идеях, самому придумывать некогда, да и не качаю я сам не знаю что для этого нужно
Ответить с цитированием
  #12  
Старый 27.03.2008, 14:17
Senior Member
 
Регистрация: 06.03.2008
Адрес: Russian Federation Южный Урал
Пол: Male
Сообщений: 166
Цитата:
Сообщение от ArjLover Посмотреть сообщение
Проблема в дизайне этого произведения...
"Внешнего" дизайна у RSS просто не существует - это зависит только от самих программ (на стороне пользователя), умеющих работать с RSS-новостями.
т.е. PHP-скрипт не формирует HTML-страницу для RSS-канала.

Если я правильно понимаю, то проблема во "внутреннем" дизайне, т.е RSS (XML) коде?

Последний раз редактировалось RUSpectrum, 27.03.2008 в 14:20.
Ответить с цитированием
  #13  
Старый 27.03.2008, 21:52
Аватар для Pogonchik
Senior Member
 
Регистрация: 25.11.2007
Адрес: Russian Federation в Чёртьтанове
Пол: Male
Сообщений: 117

Прошу извинить, если не в тему, но вот на моем uTorrent имеется такая кнопка, как RSS загрузчик. Никто не может разъяснить, как этим можно пользоваться, и вообще - нужно ли мне это?
__________________
Восток - дело тонкое!
Ответить с цитированием
  #14  
Старый 27.03.2008, 22:40
Senior Member
 
Регистрация: 06.03.2008
Адрес: Russian Federation Южный Урал
Пол: Male
Сообщений: 166
Pogonchik, я думаю, что было бы очень хорошо "прикрутить" RSS-канал и к uTorrent...
Как пользоваться? Ну я думую, что в RSS-подписке должен быть список новых торрентов на ArjLover.

ArjLover, я тут посмотрел "валидатором", так он ругается на "кривость" RSS
И даже СПб-шный (хоть и поменьше)
И посмотрите коллекцию значков RSS (на любой вкус и цвет )

Последний раз редактировалось RUSpectrum, 27.03.2008 в 22:44.
Ответить с цитированием
  #15  
Старый 28.03.2008, 00:40
Senior Member
 
Регистрация: 06.03.2008
Адрес: Russian Federation Южный Урал
Пол: Male
Сообщений: 166
Shurik, я собственно говоря не понял к чему эта кодировка koi8r, если RSS формируется как windows-1251, а MySQL-база тоже windows-1251 ?
Ответить с цитированием
  #16  
Старый 28.03.2008, 00:54
Member
 
Регистрация: 19.12.2006
Пол: Male
Сообщений: 74
Ошибаешься, база там в koi8-r с очень давних времён (когда ещё set names koi8r не было в коде), а rss формируется в cp1251 с тех же самых времён. Все вопросы к тому, кто это писал.
Ответить с цитированием
  #17  
Старый 28.03.2008, 01:22
Senior Member
 
Регистрация: 06.03.2008
Адрес: Russian Federation Южный Урал
Пол: Male
Сообщений: 166
Shurik, тогда понятно... господи, какой кошмар

P.S. - Если честно, то сначала бы базу перегнать в windows-1251
Ответить с цитированием
  #18  
Старый 28.03.2008, 02:40
Member
 
Регистрация: 19.12.2006
Пол: Male
Сообщений: 74
RUSpectrum, если я и буду перегонять базу, то только в UTF-8. А вместо convert_cyr_string можно просто делать сразу set names cp1251. Главное - задаться целью и сделать. Но там это далеко не самая главная задача, я только сегодня, например, обнаружил одну неприятную уязвимость, которая висела, можно сказать, "на виду", но её почти два года никто не замечал... что довольно странно...
Ответить с цитированием
  #19  
Старый 28.03.2008, 12:33
Senior Member
 
Регистрация: 06.03.2008
Адрес: Russian Federation Южный Урал
Пол: Male
Сообщений: 166
Esn, да не волнуйтесь Вы так!
Будет RSS!
И ни сколько не хуже! (хм... а возможно и лучше, т.к. база позволяет выводить более полную информацию)

Цитата:
Сообщение от Shurik Посмотреть сообщение
RUSpectrum, если я и буду перегонять базу, то только в UTF-8.
Shurik, разумеется это будет лучше.

Хотя я обычно делал немного подругому:
SQL-база в кодировке CP1251 (windows-1251),
а кодировку страниц (HTML, XML и т.д.) делал UTF-8.

Цитата:
Сообщение от Shurik Посмотреть сообщение
Главное - задаться целью и сделать.
Хех... Так задайтесь этой целью!
Про себя уже написал - ну не PHP-ишник я.

Кстати, смотрел PHP-спецификацию.
Там есть функции по работе с DOM, xmlwriter. Их разве нельзя сюда как-то "прикрутить" ?
Ответить с цитированием
  #20  
Старый 30.03.2008, 13:28
Member
 
Регистрация: 19.12.2006
Пол: Male
Сообщений: 74
Цитата:
Сообщение от RUSpectrum Посмотреть сообщение
Хотя я обычно делал немного подругому:
SQL-база в кодировке CP1251 (windows-1251),
а кодировку страниц (HTML, XML и т.д.) делал UTF-8.
Вот это не интересно. Интереснее позволить использовать центрально-европейские, азиатские и прочие ненормальные символы на трекере. Поэтому если и будет переход - то на utf-8 везде.

Цитата:
Кстати, смотрел PHP-спецификацию.
Там есть функции по работе с DOM, xmlwriter. Их разве нельзя сюда как-то "прикрутить" ?
Это не нужно. В данном случае XML имеет настолько простую структуру, что проще и быстрее его генерировать вручную.
Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 13:28.


vBulletin® Version 3.6.8.
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Перевод: zCarot