| Архив | Об архиве | FAQ | New BAN List | Полезные ссылки | Друзья архива | Архив новостей |
|
| Регистрация | Справка | Правила форума | Поиск | Сообщения за день | Все разделы прочитаны | Пользователи | Календарь |
| Приёмная ArjLover-a Послания и пожелания по работе Архива |
![]() |
|
|
Опции темы | Опции просмотра |
|
|||
|
Немного переделав запросы к базе и всякую другую мелочёвку, можно получить то, что надо. Взято с одного трекера:
Код:
<?
# ---------- 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 ( " ", " ", $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 ( "&", "&", $r['name'] ) ;
$o_desc = str_replace ( "<", "<", $o_desc );
$o_desc = str_replace ( ">", ">", $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 ;
}
?>
|
|
||||
|
Shurik, спасибо конечно, но это не совсем от что хотелось бы. я не собираюсь анонсировать торренты. Хотя в анонсе новых пополнений наверно стоит публиковать все типы линков. Может еще новости с главной? или какие-то срочные технические объявления? А можно пускать несколько подвидов чтобы они не смешивались?
|
|
|||
|
А нельзя это сделать так как это делают здесь:
http://mults.spb.ru/rss.php Это ОЧЕНЬ удобно... (RSS устанавливается на Mozilla Thunderbird) |
|
|||
|
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. - Если честно, то не понял в чем собственно проблема... ![]() |
|
|||
|
"Внешнего" дизайна у RSS просто не существует - это зависит только от самих программ (на стороне пользователя), умеющих работать с RSS-новостями.
т.е. PHP-скрипт не формирует HTML-страницу для RSS-канала. Если я правильно понимаю, то проблема во "внутреннем" дизайне, т.е RSS (XML) коде? Последний раз редактировалось RUSpectrum, 27.03.2008 в 13:20. |
|
|||
|
Цитата:
Это переделка с кодировки 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 в 15:57. |
|
||||
![]() Прошу извинить, если не в тему, но вот на моем uTorrent имеется такая кнопка, как RSS загрузчик. Никто не может разъяснить, как этим можно пользоваться, и вообще - нужно ли мне это? ![]()
__________________
Восток - дело тонкое! |
|
|||
|
Pogonchik, я думаю, что было бы очень хорошо "прикрутить" RSS-канал и к uTorrent...
Как пользоваться? Ну я думую, что в RSS-подписке должен быть список новых торрентов на ArjLover. ArjLover, я тут посмотрел "валидатором", так он ругается на "кривость" RSS И даже СПб-шный (хоть и поменьше) И посмотрите коллекцию значков RSS (на любой вкус и цвет )Последний раз редактировалось RUSpectrum, 27.03.2008 в 21:44. |
|
|||
|
В коде совсем неслучайно присутствует convert_cyr_string...
ArjLover, дайте мне |
|
|||
|
Shurik, я собственно говоря не понял к чему эта кодировка koi8r, если RSS формируется как windows-1251, а MySQL-база тоже windows-1251 ?
![]() |
|
|||
|
Shurik, тогда понятно... господи, какой кошмар
P.S. - Если честно, то сначала бы базу перегнать в windows-1251 ![]() |
|
|||
|
Цитата:
![]() Справа: RSS от сайта Слева: другии RSS-feeds к которым я подписался Последний раз редактировалось Esn, 28.03.2008 в 01:20. |
|
|||
|
RUSpectrum, если я и буду перегонять базу, то только в UTF-8. А вместо convert_cyr_string можно просто делать сразу set names cp1251. Главное - задаться целью и сделать. Но там это далеко не самая главная задача, я только сегодня, например, обнаружил одну неприятную уязвимость, которая висела, можно сказать, "на виду", но её почти два года никто не замечал... что довольно странно...
|
|
|||
|
Esn, да не волнуйтесь Вы так!
Будет RSS! И ни сколько не хуже! (хм... а возможно и лучше, т.к. база позволяет выводить более полную информацию) Shurik, разумеется это будет лучше. Хотя я обычно делал немного подругому: SQL-база в кодировке CP1251 (windows-1251), а кодировку страниц (HTML, XML и т.д.) делал UTF-8. Хех... Так задайтесь этой целью! Про себя уже написал - ну не PHP-ишник я. Кстати, смотрел PHP-спецификацию. Там есть функции по работе с DOM, xmlwriter. Их разве нельзя сюда как-то "прикрутить" ? |
![]() |
| Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
| Опции темы | |
| Опции просмотра | |
|
|