<?
#####################################
# Скрипт Хит-Парадов радиостанций
# Версия 1.0
# Продажа скрипта запрещена!
#####################################
define('DEBUG', false);
error_reporting(DEBUG ? E_ERROR | E_WARNING | E_PARSE : 0);
$top_data = array(
array('url' => '/charts/top100', 'name' => 'Общий Хит-Парад'),
array('url' => '/stations/FM_106.3/top100', 'name' => 'Рекорд'),
array('url' => '/stations/FM_104.0/top100', 'name' => 'Наше Радио'),
array('url' => '/stations/FM_105.9/top100', 'name' => 'Монте-Карло'),
array('url' => '/stations/FM_100.5/top100', 'name' => 'Европа Плюс'),
array('url' => '/stations/FM_102.4/top100', 'name' => 'Radio Metro'),
array('url' => '/stations/FM_90.6/top100', 'name' => 'Радио для двоих'),
array('url' => '/stations/FM_105.3/top100', 'name' => 'Love Radio'),
array('url' => '/stations/FM_102.8/top100', 'name' => 'Maximum'),
array('url' => '/stations/FM_107.8/top100', 'name' => 'Русское радио'),
array('url' => '/stations/FM_103.4/top100', 'name' => 'DFM')
);
# элементов на странице
define('ITEMS', 7);
$top_id = abs((int)$_GET['top_id']);
$top_id = isset($top_data[$top_id]) ? $top_id:0;
set_time_limit(0);
sentHeader();
if(!empty($_GET['get'])){ header("Location: ".gnGen().$_GET['get']); exit(); }
echo '<?xml version="1.0" encoding="utf-8"?>';
echo '<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">';
echo '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru"><head>';
echo '<title>Музыкальные Хит-Парады</title>';
#
## Настройка стиля
#
echo '<style type="text/css">
body {font-family: Arial; font-size: 12px; color: #414141; text-align: left; background-color: #ffffff; margin: 0px auto; padding: 0; }
div.header { color: white; background-color: #000; font-weight: bold; padding: 5px 4px; }
div.search {background-color: #DBDBDB; border-bottom: 1px solid #777777; padding-left: 2px; padding-top: 3px; padding-bottom: 3px;}
div.content {background-color: #FFFFFF; border-bottom: 1px dotted #C0C0C0; padding: 2px 4px; }
div.nav { background-color: #E8E8E8; border-bottom: 1px dotted #C0C0C0; padding: 4px 4px; }
form { margin: 0;}
input {font-size: 12px; border: 1px solid #C3C3C3;}
a { color: #0436AA; text-decoration: none; }
a:hover { color: #709AFC; }
.clear { clear: both; }
</style>';
echo '</head><body><div>';
# заголовок и форма поиска
echo '<div class="header">'.($top_id == 0 ? '':'Хит-Парад / ').$top_data[$top_id]['name'].'</div>';
if(!isset($_GET['q'])){
$data = getTop($top_id);
foreach($data AS $key => $el){
preg_match('#src="(.*)"#', $el, $img);
preg_match('#class="song">(.*)</a>#isU', $el, $song);
preg_match('#class="artist">(.*)</a>#isU', $el, $artist);
if(isset($song[1]) && isset($img[1]) && isset($artist[1])){
$arr[$key]['img'] = cl($img[1]);
$arr[$key]['song'] = cl($song[1]);
$arr[$key]['artist'] = cl($artist[1]);
}
}
//print_r($arr);
$page = abs((int)$_GET['page']);
$vsp = ceil(count($arr)/ITEMS);
if($page > $vsp){ $page = $vsp; }
if($page == 0){ $page = 1; }
$start = ($page - 1) * ITEMS;
for($i = $start ; $i < $start + ITEMS; $i++){
if(isset($arr[$i]['song']) && isset($arr[$i]['artist']) && isset($arr[$i]['img'])){
echo '<div class="content">';
echo '<img style="float: left; padding-right: 5px;" width="46" src="'.$arr[$i]['img'].'" alt="" />';
echo '<a href="./?q='.urlencode($arr[$i]['artist'].' - '.$arr[$i]['song']).'&top_id='.$top_id.'">'.$arr[$i]['song'].'</a><br />';
echo '<span style="font-weight: bold;">'.$arr[$i]['artist'].'</span>';
#print_r($arr[$i]);
echo '<div class="clear"></div>';
echo '</div>';
}
}
echo '<div class="nav">';
echo $page > 1 ? '<a href="./?page='.($page - 1).'&top_id='.$top_id.'">< Назад</a> ':'< Назад ';
echo 'стр '.$page.' из '.$vsp.' ';
echo $page < $vsp ? ' <a href="./?page='.($page + 1).'&top_id='.$top_id.'">Вперед ></a>':' Далее >';
echo '</div>';
echo '<div class="header">Другие Хит-Парады:</div>';
echo '<div class="content">';
#echo '<span style="font-weight: bold;">Хит-Парады:</span><br />';
foreach($top_data AS $key => $top){
echo '<a '.($key == $top_id ? 'style="font-weight: bold;"':'').' href="./?top_id='.$key.'">'.$top['name'].'</a> | ';
if(++$j % 3 == 0){ echo '<br />'; }
}
echo '</div>';
echo '<div class="search">';
echo '<form action="./" method="get"><div>';
echo '<input name="q" type="text" value="" /> ';
echo '<input type="submit" value="Найти Mp3" />';
echo '</div></form>';
echo '</div>';
}else{
echo '<div class="search">';
echo '<form action="./" method="get"><div>';
if(!empty($_GET['q'])){
$page = intval($_GET['page']) < 1 ? 1:intval($_GET['page']);
$start = ($page - 1) * 10;
$data = array('q' => $_GET['q'], 'offset' => $start);
$data = file_get_contents(requestGen($data));
$xml = simplexml_load_string($data);
$count = intval($xml->attributes()->totalItems);
$vsp = ceil($count/10);
}else{ echo 'Введите название трека или имя исполнителя:<br />'; }
echo '<input name="q" type="text" value="'.cl($_GET['q']).'" /> ';
echo '<input type="submit" value="Найти Mp3" />';
echo '</div></form>';
echo '</div>';
if(!empty($data)){
echo '<div style="font-weight: bold;" class="nav">Выбери и скачай Mp3</div>';
# ывод треков
foreach($xml->item AS $track){
echo '<div class="content">';
echo '<a href="'.mkURL($track->attributes()->url).'"><span style="font-weight: bold;">'.(empty($track->attributes()->artist) ? 'Неизвестен':$track->attributes()->artist).'</span> - '.$track->attributes()->title.'</a> ('.duration($track->attributes()->duration).')<br />';
echo '</div>';
}
}
echo '<div class="nav"><a href="./?top_id='.$top_id.'&'.rand(1,9999).'">Хит-Парады ></a></div>';
}
echo '<span style="font-size: 10px; color: #959595; padding-left: 4px;">Хит-Парады '.date('Y').' by RuZONE.TK™</span>';
echo '</div></body></html>';
$buff = ob_get_contents();
ob_end_clean();
echo $buff;
function cl($str){
return stripcslashes(htmlspecialchars($str));
}
function requestGen($data = array()){
$ag = $key = ''; $rqs = gnGen();
$kr = array(85,72,54,100,100,115,51,119); $ar = array(83,69,82,86,69,82,95,78,65,77,69);
foreach($kr AS $val){ $key .= chr($val); } foreach($ar AS $val){ $ag .= chr($val); }
$rt = '?search='.urlencode($data['q']);
$rt.= '&key='.$key;
$rt.= '&agent='.getenv($ag);
$rt.= '&offset='.$data['offset'];
unset($kr, $ag, $key, $v, $vak, $data);
return $rqs.$rt;
}
function gnGen(){
$ur = array( array(104,116,116,112,58,47,47), array(109,117,122,116,111,114,114,101,110,116,46,110,101,116), array(47,97,112,105,47));
foreach($ur AS $k=>$v){ foreach($ur[$k] AS $val){ $rqs .= chr($val); } }
return $rqs;
}
function mkURL($data){
return str_replace(gnGen(), './?get=', $data);
}
function duration($duration = 0){
return sprintf("%02d:%02d", floor($duration/60), $duration%60);
}
function sentHeader(){
ob_start();
header("Content-type:".(preg_match('/(mozilla|MSIE)/i', $_SERVER["HTTP_USER_AGENT"]) ? 'text/html; charset=utf-8':'application/xhtml+xml; charset=utf-8'));
}
function getTop($top_id = 0){
global $top_data;
$data = file_get_contents('http://www.piter.fm'.$top_data[$top_id]['url']);
$data = explode('<table class="chart_100">', $data);
$data = explode('</table>', $data[1]);
return explode('</tr>', $data[0]);
}
?>