Архив Об архиве FAQ New BAN List Полезные ссылки Друзья архива Архив новостей
Архив by ArjLover   Архив 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:16.


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