Файл: z.php
Строк: 260
<?
function gettime()
{
$part_time = explode(' ', microtime());
$real_time = $part_time[1].substr($part_time[0], 1);
return $real_time;
}
$mystart = gettime();
header("Expires: ".gmdate("D, d M Y H:i:s")." GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Content-type:text/html; charset=utf-8");
define('BRAIN_FUCK','HlVMxcYgC'); // этой херней зайцы шифровали ключ =)
define ('SAVE_DATA_FILE','music/data.dat');// тут будем хранить данные
// статусы загрузки
define ('ERROR',-1);
define ('WAIT',0);
define ('PREPARE',1);
define ('DONE',2);
define ('TOO_LARGE',-2);
define ('TIME_OUT',time()-600); // тайм аут 10 минут
ini_set('user_agent', 'android'); // это браузер зайцев
// ------------------------------------------------------------------------------------------------------------------------------------------------------ //
function d($str)
{
echo '<pre>'.print_r($str,true).'</pre>';
}
// ------------------------------------------------------------------------------------------------------------------------------------------------------ //
function str_prepare ($str,$cut)
{
return htmlspecialchars(mb_substr($str,0,$cut,'utf8'));
}
// ------------------------------------------------------------------------------------------------------------------------------------------------------ //
function get_auth($forse=FALSE)
{
if (!$forse && file_exists(SAVE_DATA_FILE))
{
$a_auth = unserialize(file_get_contents(SAVE_DATA_FILE));
if (isset($a_auth['token']))
{
return $a_auth['token'];
}
}
$a_auth = json_decode( file_get_contents('http://zaycev.net/external/hello')); //получаем токен 1
if (isset($a_auth->token))
{
$a_auth = json_decode( file_get_contents('http://zaycev.net/external/auth?code='.$a_auth->token.'&hash='.md5($a_auth->token.BRAIN_FUCK))); //получаем токен 2
if (isset($a_auth->token))
{
file_put_contents(SAVE_DATA_FILE,serialize(array('time'=>time(),'token' => $a_auth->token)));
return $a_auth->token;
} else die ('Fuck! Not found token 2');
} else die ('Fuck! Not found token 1');
}
// ------------------------------------------------------------------------------------------------------------------------------------------------------ //
function get_data($url)
{
$a_data = json_decode(file_get_contents($url));
if (isset($a_data->error))
{
echo '<div class="wr"">Ошибка!<br/>Обновите страницу</div>';
get_auth(TRUE); // принудительная авторизация
}
return $a_data;
}
// ------------------------------------------------------------------------------------------------------------------------------------------------------ //
function progress_bar($percent, $title = '')
{
if ($title === ''){$title = $percent.'%';}
echo '<div style="background:#eee; overflow: auto;"><span style="float:right; color:#000; font-size:85%; line-height:10px; margin-right:5px;">';
echo $title.'</span><div style="background:#00dd00; height:10px; width:'.$percent.'%; border-radius:4px;"></div></div>';
}
// ------------------------------------------------------------------------------------------------------------------------------------------------------ //
function my_navigate($total,$page,$url,$arg='p')
{
$s= '<div class="tools" align="center">';
if ($total > 0)
{
$p = $page;
$st = $p-3;
$end = $p+3;
if ($st < 1) $st=1;
if ($end > $total) $end=$total;
if ($p > 1) $s.= '<a '.$cl.' href="'.$url.'&'.$arg.'=1">«</a> ';
for ($i=$st; $i<=$end; $i++)
{
if ($i==$p)
$s.=' <b>'.$p.'</b> ';
else
$s.='[<a '.$cl.' href="'.$url.'&'.$arg.'='.$i.'">'.$i.'</a>]';
}
if ($p < $total) $s.= ' <a '.$cl.' href="'.$url.'&'.$arg.'='.$total.'">»</a>';
} else $s.='---';
$s.='</div>';
return $s;
}
// ------------------------------------------------------------------------------------------------------------------------------------------------------ //
echo "<?xml version="1.0" encoding="utf-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">n";
echo '<title>Your bunny wrote</title><link rel="stylesheet" href="template/main.css" type="text/css"></head><body>';
$access_token = get_auth();
if (isset($_GET['load'])) //загружаем
{
$load=intval($_GET['load']);
$f = 'music/'.$load.'.dat';
$mp3 = 'music/'.$load.'.mp3';
if (file_exists($f)) // временные данные
{
$a_data=unserialize(file_get_contents($f));
switch ($a_data['status']) {
case TOO_LARGE:
echo '<div class="wr">Слишком большой файл - Подготовлен не полностью</div>';
case DONE: // готово
echo '<div class="head">Теперь можно скачать</div>';
?>
<object type="application/x-shockwave-flash" data="template/ump3player.swf" height="60" width="400">
<param name="wmode" value="transparent" /><param name="allowFullScreen" value="true" />
<param name="allowScriptAccess" value="always" />
<param name="movie" value="template/ump3player.swf" />
<param name="FlashVars" value="way=<?=$mp3?>&swf=template/ump3player.swf&w=400&h=40&time_seconds=0&autoplay=1&q=1&skin=sky&volume=80&comment=" />
</object><br/>
<?
echo '<p align="center"><a class="t" href="'.$mp3.'">Скачать</a></p>';
echo '<div class="tools">---</div>';
echo '<p align="center"><a class="t" href="z.php">[ Назад ]</a></p>';
break;
case PREPARE: //стартуем скачивание
$fp = fsockopen($_SERVER['SERVER_NAME'],80);
fputs($fp,'GET '.dirname($_SERVER['PHP_SELF'])."/template/get.php?song=".$load." HTTP/1.0rnHost: ".$_SERVER['SERVER_NAME']."rnrn");
usleep(300); // чтобы не отключился сразу
fclose($fp);
$a_data['status'] = WAIT;
file_put_contents($f,serialize($a_data));
case WAIT: // ожидание
echo '<div class="head">Подготовка файла к скачиванию</div>';
if (file_exists($mp3)) // вывод статистики закачки
{
$size = filesize($mp3);
$proc = $size > 0 ? round(($size * 100) / ($a_data['size'] ), 1) : 0;
progress_bar($proc, $proc.'%').'<br /><br />';
echo '<br/><b>'.round($size/1024,2).' Kb</b>';
echo ' из <b>'.round($a_data['size']/1024,2).' Kb</b><br/><br/>';
} else echo '<p align="center">Поиск зеркал для скачивания...</p>'; // для отвода глаз =)
echo '<p align="center"><a class="t" href="z.php?load='.$load.'&_='.time().'">Обновить</a></p>';
echo '<div class="tools">---</div>';
break;
default: // ошибка попробуем получить новые данные
echo '<div class="wr">Произошла ошибка</div>';
echo '<p align="center"><a class="t" href="z.php?load='.$load.'&_='.time().'">Ок</a></p>';
//$a_data['status'] = PREPARE; // сбросим ошибку
//file_put_contents($f,serialize($a_data));
unlink($f);
break;
}
}
else
{
$a_data = json_decode(file_get_contents('http://zaycev.net/external/download?id='.$load.'&access_token='.$access_token));
if (isset($a_data->url))
{
echo '<div class="head">Подготовка файла к скачиванию</div>';
echo '<p align="center"> Это может занять некоторое время.</p>';
// создать временный файл данных
file_put_contents($f,serialize(array('time'=>time(),'url'=>$a_data->url,'status'=>PREPARE)));
echo '<p align="center"><a class="t" href="z.php?load='.$load.'&_='.time().'">Обновить</a></p>';
echo '<div class="tools">---</div>';
} else echo '<p></p>Fuck! Not found url</p>';
}
}
elseif (isset($_GET['artist']))
{
$artist=intval($_GET['artist']);
$mp3 = 'music/'.$song.'.mp3';
$a_data = json_decode(file_get_contents('http://zaycev.net/external/artist/'.$artist.'?access_token='.$access_token));
if (isset( $a_data->artist))
{
echo '<div class="head">'.$a_data->artist->name.'</div>';
echo '<div style="max-height:20em; overflow: auto;">';
if (!empty($a_data->artist->smallImageUri)) echo '<img style="float:left;margin: 5px 10px 2px 2px" src="'.$a_data->artist->smallImageUri.'" alt="Load">';
if (!empty($a_data->artist->about)) echo $a_data->artist->about.'<br/>'; else echo '<center>Нет описания</center>';
echo '</div>';
} else echo '<p></p>Fuck! Not found artist</p>';
echo '<div class="tools">---</div>';
echo '<p align="center"><a class="t" href="z.php">[ Назад ]</a></p>';
}
elseif (isset($_GET['song']))
{
$song=intval($_GET['song']);
echo '<div class="head">Player</div>';
$a_data = json_decode(file_get_contents('http://zaycev.net/external/track/'.$song.'?access_token='.$access_token));
if (isset($a_data->track))
{
if (!empty($a_data->track->name)) echo 'Название трека: <b>'.$a_data->track->name.'</b><br/>';
if (!empty($a_data->track->artistName)) echo 'Исполнитель: <b>'.$a_data->track->artistName.'</b><br/>';
if (!empty($a_data->track->duration)) echo 'Время звучания: <b>'.date('i:s',$a_data->track->duration).'</b><br/>';
if (!empty($a_data->track->bitrate)) echo 'Качество: <b>'.$a_data->track->bitrate.' Kb/s</b><br/>';
if (!empty($a_data->track->size)) echo 'Размер: <b>'.$a_data->track->size.' Mb</b><br/>';
}
/*
$a_data = json_decode(file_get_contents('http://zaycev.net/external/download?id='.$song.'&access_token='.$access_token));
if (isset($a_data->url))
{
// создать временный файл данных
$f = 'music/'.$song.'.dat';
file_put_contents($f,serialize(array('time'=>time(),'url'=>$a_data->url,'status'=>PREPARE)));
} else echo '<p></p>Fuck! Not found url</p>';
?>
<object type="application/x-shockwave-flash" data="template/ump3player.swf" height="60" width="400">
<param name="wmode" value="transparent" /><param name="allowFullScreen" value="true" />
<param name="allowScriptAccess" value="always" />
<param name="movie" value="template/ump3player.swf" />
<param name="FlashVars" value="way=<?=$mp3?>&swf=template/ump3player.swf&w=400&h=40&time_seconds=0&autoplay=0&q=1&skin=sky&volume=80&comment=" />
</object><br/>
<?
echo '<p align="center"><a class="t" href="'.$mp3.'">Скачать</a></p>';
*/
echo '<p align="center"><a class="t" href="z.php?load='.$song.'">СкачЯть</a></p>';
echo '<div class="tools">---</div>';
echo '<p align="center"><a class="t" href="z.php">[ Назад ]</a></p>';
}
else
{
$p = isset($_GET['p']) ? intval($_GET['p']) : 1;
if (isset($_GET['query'])) // поиск
{
$query = urlencode (str_prepare($_GET['query'],255));
$type=0;
$sort=0;
$style='';
$a_data = get_data('http://zaycev.net/external/search?query='.$query.'&page='.$p.'&type='.$type.'&sort='.$sort.'&style='.$style.'&access_token='.$access_token);
} else $a_data = get_data('http://zaycev.net/external/top?page='.$p.'&access_token='.$access_token);
echo '<div class="head">Your bunny wrote</div>';
?>
<form action="z.php" id="search-box" method="get">
<input type="text" name="query"/>
<input type="submit" value="Поиск" />
</form>
<?
if (!empty($a_data->pagesCount))
{
$total = intval($a_data->pagesCount);
foreach($a_data->tracks as $k=> $v)
{
echo '<div class="mess"><a href="z.php?song='.$v->id.'">'.$v->track.'</a> - ';
echo '<a href="z.php?artist='.$v->artistId.'">'.$v->artistName.'</a><br/>';
echo $v->duration.' / '.$v->size.'Мб';
echo '</div>';
}
echo my_navigate($total,$p,'z.php?t=1&'.(isset($query) ? 'query='.$query : ''));
} else echo '<p></p>Fuck! Not found page</p>';
echo ' - <a href="z.php">ТОП</a><br/>';
}
$end = gettime();
echo '<p align="center">['.round(($end - $mystart), 5).']<br/>';
echo '</p></body></html>';
// разные функции зайцев
# варианты при вводе поискового запроса
//$a_data = json_decode(file_get_contents('http://zaycev.net/external/autocomplete/?query='.$query .'&access_token='.$access_token));;
?>