Тема: RSS
Показать сообщение отдельно
  #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 ;
}
?>
Ответить с цитированием