Скачиваем фото с mamba.ru (love.mail.ru). [Обновлено]
![]()
Хочу представить вам userJS для сохранения фотографий с мамбы.
Данное расширение добавляет кнопочку Download рядом с кнопкой Close.

Подробности под катом
![]()
Хочу представить вам userJS для сохранения фотографий с мамбы.
Данное расширение добавляет кнопочку Download рядом с кнопкой Close.

Подробности под катом
Давайте же проведем небольшое сравнение в скорости.
1) Curl
< ?
function curl($url)
{
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL,$url);
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");
curl_setopt ($ch, CURLOPT_TIMEOUT, 60);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec ($ch);
curl_close($ch);
return $result;
}
2) Sockets
function sockets($host) {
$fp = fsockopen("www.".$host, 80, $errno, $errstr, 30);
$out = "GET / HTTP/1.1\r\n";
$out .= "Host: www.".$host."\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
$f='';
while (!feof($fp)) {
$f .= fgets($fp, 1024);
}
return $f;
}
3) file_get_contents
function fgc($url){
return file_get_contents($url);
}
4) MultiCurl
function multiRequest($data,$nobody=false,$options = array(), $oneoptions = array())
{
$curls = array();
$result = array();
$mh = curl_multi_init();
foreach ($data as $id => $d)
{
$curls[$id] = curl_init();
$url = (is_array($d) && !empty($d['url'])) ? $d['url'] : $d;
curl_setopt($curls[$id], CURLOPT_URL, $url);
curl_setopt($curls[$id], CURLOPT_HEADER, 0);
curl_setopt($curls[$id], CURLOPT_RETURNTRANSFER, true);
curl_setopt($curls[$id], CURLOPT_FOLLOWLOCATION,1);
curl_setopt($curls[$id], CURLOPT_USERAGENT,"Mozilla/5.0(Windows;U;WindowsNT5.1;ru;rv:1.9.0.4)Gecko/2008102920AdCentriaIM/1.7Firefox/3.0.4");
//curl_setopt($curls[$id], CURLOPT_COOKIEJAR,'cookies.txt');
//curl_setopt($curls[$id], CURLOPT_COOKIEFILE,'cookies.txt');
//curl_setopt($curls[$id], CURLOPT_NOBODY, $nobody);
if (!empty($options))
{
curl_setopt_array($curls[$id], $options);
}
if (!empty($oneoptions[$id]))
{
curl_setopt_array($curls[$id], $oneoptions[$id]);
}
if (is_array($d))
{
if (!empty($d['post']))
{
curl_setopt($curls[$id], CURLOPT_POST, 1);
curl_setopt($curls[$id], CURLOPT_POSTFIELDS, $d['post']);
}
}
curl_multi_add_handle($mh, $curls[$id]);
}
$running = null;
do
{
curl_multi_exec($mh, $running);
}
while($running > 0);
foreach($curls as $id => $content)
{
$result[$id] = curl_multi_getcontent($content);
//echo curl_multi_getcontent($content);
curl_multi_remove_handle($mh, $content);
}
curl_multi_close($mh);
return $result;
}
В качестве теста получим страницу «http://google.de» сто раз.
$url = 'google.de';
$start = microtime(1);
for($i=0;$i<100;$i++)
curl($url);
$end = microtime(1);
echo "Curl:".($end-$start)."\n";
$start = microtime(1);
for($i=0;$i<100;$i++)
fgc("http://$url/");
$end = microtime(1);
echo "file_get_contents:".($end-$start)."\n";
$start = microtime(1);
for($i=0;$i<100;$i++)
sockets($url);
$end = microtime(1);
echo "Sockets:".($end-$start)."\n";
$start = microtime(1);
for($i=0;$i<100;$i++)
$arr[]=$url;
multiRequest($arr);
$end = microtime(1);
echo "MultiCurl:".($end-$start)."\n";
?>
Результаты:
Curl: 5.39667105675 file_get_contents: 7.99799394608 Sockets: 2.99629592896 MultiCurl: 0.736907958984
Как видим, лидирует мультикурл, беспощадно оставляя своих соперником далеко позади. Применять multicurl стоит лишь тогда, когда имеется объемное количество url‘ов.
Иначе, если список «страниц», которые необходимо «посетить» небольшой(2,3,5,10), самый рациональный вариант – использовать сокеты, но..кому как, мне например, несмотря на то, что т socket‘ы выигрывают у curl‘а, удобнее использовать его, т.к нет проблем с заголовками(headers) и прочим.
Что выбрать? Решать только вам.
Написал довольно простую реализацию журнала отметок с использованием php и ajax.
Ниже представлена пара скриншотов, которые наглядно демонстрируют функционал.

UPDATE: Добавлены всплывающие уведомления.
Дальнейшее описание и исходники под катом.
Читать полностью
Несколько дней назад мой товарищ попросил меня помочь с одним вопросом.
Задача была следующей: заменить все ссылки вида
http://google.com
на кликабельные ,т.е
<a href="http://google.com">http://google.com</a>
Чуть ниже представлена простейшая реализация:
$text=preg_replace('#((?:http|https):\/\/[^\s]+)#i','<a href="$1" />$1', $text);
Если же просто надо спарсить ссылки, то:
preg_match_all('#((?:http|https):\/\/[^\s]+)#i',$text,$matches);
print_r($matches);
Начнем с того – что такое iptables?
iptables – утилита(служба) для контроля сетевого трафика или попросту некий фаерволл с огромными возможностями.
Важно: запускать iptables необходимо с правами root’a.
Синтаксис iptables следующий:
iptables [-t ТАБЛИЦА] -A ЦЕПОЧКА ПАРАМЕТРЫ -j ДЕЙСТВИЕ
Ключи для работы с цепочками:
-A – добавить новое правило.
-D – удалить правило.
-F – удалить все правила.
-R – замена правила.
-L – вывод списка всех правил.
В таблице filter(по умолчанию) существую следующие цепочки:
INPUT – входящий трафик.
OUTPUT – исходящий трафик.
FORWARD – пересылаемый(транзитный) трафик.
Параметры:
-p – протокол, можно использовать all,icmp,tcp,udp.
-s – ip адрес/хост источника.
-d – ip адрес/хост назначения.
-i – интерфейс на который пришел пакет.
-o – интерфейс с которого уйдет пакет .
(просмотреть все интерфейсы можно с помощью команды.ifconfig, обычно это eth0)
–sport – порт источника.
–dport – порт назначения.
Действия:
ACCEPT – разрешить пакеты.
REJECT – блокировать пакеты с сообщением об отказе.
DROP – блокировать пакеты(более приоритетный вариант, нежели REJECT, т.к для блокируемого ip адреса(или диапазонов) будет аналогичный эффект тому, когда сервер находится в дауне).
Несколько примеров:
1) Блокируем все входящие пакеты с ip адреса 111.111.111.111
iptables -A INPUT -s 111.111.111.111 -j DROP
А с помощью знака «!«(отрицание) можно сделать блокировку всех адресов(хостов), кроме заданного.
Например, с помощью нижеприведенной команды, пакеты будут блокироваться со всех адресов, кроме 111.111.111.111
iptables -A INPUT ! -s 111.111.111.111 -j DROP
2) Снимаем бан с IP 111.111.111.111
iptables -D INPUT -s 111.111.111.111 -j DROP
3) Просмотр списка с правилами
iptables -L INPUT --line-numbers
Таким образом мы сможем увидить все пронумерованные правила, которые также можно удалить с помощью ключа -D.
Нижеприведенная команда удаляет правила под номером 5.
iptables -D INPUT 5
4) Поностью очищаем список со всеми правилами
iptables -F
5) Блокируем входящие пакеты для диапазона ip адресов c 192.168.0.8 по 192.168.0.25
iptables -I INPUT -m iprange --src-range 192.168.0.8-192.168.0.25 -j DROP
6) Блокируем весь входящий трафик на 80 порт(http).
iptables -A INPUT -p tcp --sport 80 -j DROP
7) Блокируем домен vk.com(вконтакте).
iptables -A INPUT -s vk.com -j DROP # блокируем входящие пакеты от домена vk.com iptables -A OUTPUT -d vk.com -j DROP # блокируем исходящие пакеты к домену vk.com
Другие домены вконтакта: vk.com, vkontakte.ru, incontact.ru , durov.ru
alias ban='iptables -I INPUT -j DROP -s' alias unban='iptables -D INPUT -j DROP -s'
После чего можно гораздо быстрее банить ip адрес командой
ban 111.111.111.111
и снимать бан командой
unban 111.111.111.111
Набросал простенький скриптик на bash для чека баланса антикапчи с использованием curl/wget.
#!/bin/bash
login="your_login_here"
pword="your_password_here"
post_string="login=${login}&password=${pword}"
url="http://antigate.com/panel.php"
which curl > /dev/null
if [ $? -eq 0 ]; then
#echo "Using curl..."
GET_CMD="curl -sd "
else
which wget > /dev/null
if [ $? -eq 0 ]; then
#echo "Using wget..."
GET_CMD="wget -q -O - --post-data "
else
echo "Could not find wget or curl"
exit 2
fi
fi
respone=`${GET_CMD} ${post_string} ${url}| sed -n -e 's/.*<span class=\"hlinks\">\(.*\)<\/span>.*/\1/p'`
echo "Ваш баланс: ${respone}"
или однострочный вариант:
curl -sd "login=your_login_here&password=your_password_here" http://antigate.com/panel.php | sed -n -e 's/.*<span class=\"hlinks\">\(.*\)<\/span>.*/\1/p'

Довольно таки старый «баг» контакта, позволяющий просматривать закрытые фото (aka «Фотография защищена настройками приватности«).
Как это работает?
Берем нашу фотографию, которую хотим увидеть,
ищем в URL ее id(через «_«, например 111111_111111)
Заходим на свою стену и пишем:
[[photo111111_111111]]qwert
(после ]] обязательно необходимо добавить какую-нибудь комбинацию символов)
В итоге на стену будет отправлено превью нашей фотографии, по клику на которое мы получим полное фото. После этого запись на стене можно удалить.
Слудующий скрипт выполняет все вышеописанные действия автоматически, от вас только требуется указать ссылку, например:
http://vk.com/photos.php?act=show&id=17555451_140583084&uid=10824648
или
http://vk.com/photo17555451_140583084
(Ссылки в примерах случайные – следовательно неработоспособные)
< ?php
header('Content-Type: text/html; charset=utf-8');
echo '<form method="get"><input type="text" name="url" size="50"/><input type="submit" value="GET"/>';
if(!isset($_REQUEST['url']) || empty($_REQUEST['url']))die('Введите адрес картинки');
#################################
# Просматриваем скрытые фото Вконтакте
# by #Wolf#
# http://wolf-et.ru/
# License: gnu gpl v3
#################################
$email=''; //ваш логин
$pass=''; //ваш пароль
$url=$_REQUEST['url'];
function post($url,$post=false,$refer=false){//функция
$ch=curl_init($url);
curl_setopt($ch,CURLOPT_USERAGENT,"Mozilla/5.0(Windows;U;WindowsNT5.1;ru;rv:1.9.0.4)Gecko/2008102920AdCentriaIM/1.7Firefox/3.0.4");
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_HEADER,0);//заголовки
if($header)
curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
curl_setopt($ch,CURLOPT_POSTFIELDS,$post);
curl_setopt($ch,CURLOPT_REFERER,$refer);
curl_setopt($ch,CURLOPT_COOKIEJAR,'../cookies.txt');
curl_setopt($ch,CURLOPT_COOKIEFILE,'../cookies.txt');
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
$result=curl_exec($ch);
return $result;
}
function decode($hash)
{
function hashes($str)
{
$length=strlen($str);
$tmp="";
for($i=0;$i< $length;$i++)
$tmp.=$str[$length-$i-1];
return $tmp;
}
return hashes(substr($hash,strlen($hash)-5).substr($hash,4,strlen($hash)-12));
}
function rand_s($num){
$a=array_merge(range('A','Z'),range('a','z'),range(0,9));
shuffle($a);
for($i=0;$i<$num;$i++){
$t.=$a[array_rand($a)];
}
return $t;
}
//act=a_post_wall&hash=c1ac3250fd1533fdda&message=12313313&to_id=197445970603&top_id=&type=0&old=1
$result=iconv("windows-1251","UTF-8",post('http://vk.com/login.php','act=login&success_url=&fail_url=&try_to_login=1&to=&vk=&email='.$email.'&pass='.$pass,'http://vk.com/'));//auth
preg_match('#[\d]+_[\d]+#',$url,$photo);
preg_match('#javascript:\spostWall\(([\d]+),\s\'([0-9a-f]+)\'\)#is',$result,$data);
$r=post('http://vk.com/wall.php','act=a_post_wall&hash='.decode($data[2]).'&message='.urlencode('[[photo'.$photo[0].']]').'test&to_id='.$data[1].'&top_id=&type=0&old=1');//отправляем
//print_r($data);
$regxp='#id=\\\"wallphoto_src'.$photo[0].'\\\" value=\\\"(.*?)\\\"\s\\\/>#';
preg_match_all($regxp, $r, $m);
preg_match_all('#deletePost\(([\d]+),[\s]?([\d]+),[\s]?\'([a-z0-9]{18})\'\)#is',$r,$del);
$img=str_replace("\\","",$m[1][0]);
post('http://vk.com/wall.php','act=a_delete&oid='.$del[2][0].'&cid='.$del[1][0].'&hash='.$del[3][0].'&old=1');//удаляем
echo '<img src="'.$img.'" />';
?>
Сегодня мне понадобилось сохранить все фотографии из одного альбома ВКонтакте.

Кратко опишу:
Указываете ссылку на одну из фотографий в альбоме (пример vk.com/photo112028_151118304),
и скрипт парсит javascript массив с url’ами изображений.
Для этого необходимо включить «Ускоренный режим просмотра фотографий«,
что мы и делаем устаналивая в куках значение remixnotajaxphotos равное нулю. В итоге полученный массив с url’ами картинок качаем в указанную директорию.
<?php
set_time_limit(0);
$email='my_mail@gmail.com'; //ваш логин
$pass='my_password'; //ваш пароль
$albumurl='http://vk.com/photo111111_111111'; //ссылка на одну фотогарфию из альбома
$wdir=$_SERVER['DOCUMENT_ROOT'].'/vk'; // get full path. дописываем структуру папок от корня(/vk)
function post($url,$post=false,$refer=false){ //сопсно функция <img src='http://wolf-et.ru/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />
$ch=curl_init($url);
curl_setopt($ch,CURLOPT_USERAGENT,"Mozilla/5.0(Windows;U;WindowsNT5.1;ru;rv:1.9.0.4)Gecko/2008102920AdCentriaIM/1.7Firefox/3.0.4");
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_HEADER,1);//заголовки
curl_setopt($ch,CURLOPT_POSTFIELDS,$post);
curl_setopt($ch,CURLOPT_REFERER,$refer);
curl_setopt($ch,CURLOPT_COOKIE,'remixnotajaxphotos=0;'); //(Включаем ускоренный режим просмотра фотографий)ОБЯЗАТЕЛЬНО!
curl_setopt($ch,CURLOPT_COOKIEJAR,'cookies.txt');//пишем печеньки
curl_setopt($ch,CURLOPT_COOKIEFILE,'cookies.txt'); //читаем печеньки
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
$result=curl_exec($ch);
return$result;
}
if(!file_exists($wdir)) //существует ли директория?
{if(!mkdir($wdir,0777,TRUE)) //НЕТ. пытаемся создать
{die('Cannot create folder <b><fontcolor="red">'.$wdir.'</font></b>.
Please change permissions on<b>777</b>.');}}// не получилось =( die
$result=post('http://vk.com/login.php',
'act=login&success_url=&fail_url=&try_to_login=1&to=&vk=&email='.$email.'&pass='.$pass,
'http://vk.com/');//auth
$result1=post($albumurl,false,'http://vk.com/profile.php');//go to album url
preg_match_all('#\\["(.*?)",[\\s]?"(.*?)",[\\s]?"(.*?)"\\]#i',$result1,$urls);//парсим фотки
foreach($urls[3] as $val){
$val=str_replace("\\","",$val);//удаляем экранирование символа "/"
preg_match('#([x|m]_.*?)[.]([jpg|gif|png$]{3})#i',$val,$names); //парсии имя файла и расширение
file_put_contents($wdir.'/'.$names[1].'.'.$names[2],file_get_contents($val));//качаем картинку и записываем в папку
}
?>

Недавно мой знакомый (журналист на новостном портале) попросил меня «накатать» небольшой скриптик, для упрощения рутиной работы (копипастинг данных и оборачивание в BB-code).
Парсит нижеприведенный список значений:
1)Назывние
2)Оригинальное название
3)Год
4)Страна
5)Слоган
6)Режиссер
7)Сценарий
8)Продюсер
9)Оператор
10)Композитор
11)Жанр
12)Бюджет
13)Сборы в США
14)Сборы в мире
15)Сборы в России
16)Премьера (мир)
17)Премьера (РФ)
18)Релиз на DVD
19)Релиз на Blu-Ray
20)Рейтинг MPAA
21)Время
22)Описание
23)Рейтинг Кинопоиск
24)Рейтинг IMDb
25)Картинка(логотип фильма)
26)Ссылку на трейлер
27)Картинку к трейлеру
Парсер съедает ссылки вида: http://www.kinopoisk.ru/level/1/film/251733/ и просто ID фильма: 251733
Авторизация необходима для обхода бана.
Код:
<form method='get'>
<input type='text' name='id' value='<?php echo $m[0];?>' size="40">
<input type='submit' value='get' name='submit'>
</form>
<?
#################################
# Kinopoisk.ru parser
# by #Wolf#
# http://wolf-et.ru/
#################################
if(empty($_REQUEST['id'])){die("die");}
//header ("Content-type: text/html; charset=utf-8");
$user='login';
$password='password';
function post($url,$post,$refer)
{
if($post==null){$post=false;}
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.4) Gecko/2008102920 AdCentriaIM/1.7 Firefox/3.0.4");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_REFERER, $refer);
curl_setopt($ch, CURLOPT_COOKIEJAR, "./cookie.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE, "./cookie.txt");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
return $result;
}
preg_match('#([0-9]{2,7})#',$_REQUEST['id'],$m);
post('http://www.kinopoisk.ru/level/30/','shop_user[login]='.$user.'&shop_user[pass]='.$password.'&shop_user[mem]=on&auth=%E2%EE%E9%F2%E8+%ED%E0+%F1%E0%E9%F2','http://www.kinopoisk.ru');
$result=post('http://www.kinopoisk.ru/level/1/film/'.$m[0].'/',null,'http://www.kinopoisk.ru/');
$result= iconv("cp1251", "utf8", $result);
//echo $result;
$parse=array(
'name' => '#<h1 style=\"margin: 0; padding: 0\" class="moviename-big">(.*?)</h1>#si',
'originalname'=> '#13px">(.*?)</span>#si',
'year' => '#год</td><td class=\"\">(.*?)</td></tr>#si',
'country' => '#страна</td><td class=\"\">(.*?)</td></tr>#si',
'slogan' => '#слоган</td><td style="color: \#555">(.*?)</td></tr>#si',
'director' => '#режиссер</td><td>(.*?)</td></tr>#si',
'script' => '#сценарий</td><td>(.*?)</td></tr>#si',
'producer' => '#продюсер</td><td>(.*?)</td></tr>#si',
'operator' => '#оператор</td><td>(.*?)</td></tr>#si',
'composer' => '#композитор</td><td>(.*?)</td></tr>#si',
'genre' => '#жанр</td><td>(.*?)</td></tr>#si',
'budget' => '#бюджет</td><td class=\"dollar\">(.*?)</td></tr>#si',
'usa_charges' => '#США</td><td class=\"dollar\">(.*?)</td></tr>#si',
'world_charges'=> '#мире</td><td class=\"dollar\">(.*?)</td></tr>#si',
'rus_charges' => '#России</td><td class=\"dollar\">(.*?)</td></tr>#si',
'world_premiere'=>'#мир\)</td><td class=\"calendar\">(.*?)</td></tr>#si',
'rus_premiere' => '#РФ\)</td><td class="calendar">(.*?)</td></tr>#si',
'dvd' => '#dvd">(.*?)</td></tr>#is',
'bluray' => '#bluray">(.*?)</td></tr>#is',
'MPAA' => '#MPAA</td><td class=\"[\S]{1,100}\"><a href=\'[\S]{1,100}\'><img src=\'/[\S]{1,100}\' height=11 alt=\'(.*?)\' border=0#si',
'time' => '#id="runtime">(.*?)</td></tr>#si',
'description' => '#<span class=\"_reachbanner_\">(.*?)</span>#si',
'imdb' => '#IMDB:\s(.*?)</div>#si',
'kinopoisk' => '#text-decoration: none">(.*?)<span#si',
'kp_votes' => '#<span style=\"font:100 14px tahoma, verdana\">(.*?)</span>#si',
);
$new=array();
foreach($parse as $index => $value)
{
preg_match($value,$result,$matches);
$new[$index]=preg_replace("#<a.+?>(.+?)</a>#is","$1",$matches[1]);
}
preg_match('#getTrailer\("(.*?)","(.*?)","(.*?)","[0-9]+","[0-9]+","(.*?)",""\);#i',$result,$trailer);
/////////////////////////print//////////////////////////////
echo '[img]http://www.kinopoisk.ru/images/film/'.$m[0].'.jpg[/img]<br />';
echo '[Ссылка на трейлер] http://'.$trailer[4].'.kinopoisk.ru/trailers/flv/'.$trailer[2].'<br />';
echo '[Трейлер preview] http://'.$trailer[4].'.kinopoisk.ru/trailers/flv/'.$trailer[3].'<br />';
echo '[b]Назывние:[/b]'.$new['name'].'<br />';
echo '[b]Оригинальное название:[/b]'.$new['originalname'].'<br />';
echo '[b]Год:[/b]'.$new['year'].'<br />';
echo '[b]Страна:[/b]'.$new['country'].'<br />';
echo '[b]Слоган:[/b]'.$new['slogan'].'<br />';
echo '[b]Режиссер:[/b]'.$new['director'].'<br />';
echo '[b]Сценарий:[/b]'.$new['script'].'<br />';
echo '[b]Продюсер:[/b]'.$new['producer'].'<br />';
echo '[b]Оператор:[/b]'.$new['operator'].'<br />';
echo '[b]Композитор:[/b]'.$new['composer'].'<br />';
echo '[b]Жанр:[/b]'.$new['genre'].'<br />';
echo '[b]Бюджет:[/b]'.$new['budget'].'<br />';
echo '[b]Сборы в США:[/b]'.$new['usa_charges'].'<br />';
echo '[b]Сборы в мире:[/b]'.$new['world_charges'].'<br />';
echo '[b]Сборы в России:[/b]'.$new['rus_charges'].'<br />';
echo '[b]Премьера (мир):[/b]'.$new['world_premiere'].'<br />';
echo '[b]Премьера (РФ):[/b]'.$new['rus_premiere'].'<br />';
echo '[b]Релиз на DVD:[/b]'.$new['dvd'].'<br />';
echo '[b]Релиз на Blu-Ray:[/b]'.$new['bluray'].'<br />';
echo '[b]Рейтинг MPAA:[/b]'.$new['MPAA'].'<br />';
echo '[b]Время:[/b]'.$new['time'].'<br />';
echo '[b]Описание:[/b]'.$new['description'].'<br />';
echo '[b]Рейтинг Кинопоиск:[/b]'.$new['kinopoisk'].'('.$new['kp_votes'].' )<br />';
echo '[b]Рейтинг IMDb:[/b]'.$new['imdb'].'<br />';
?>
С праздником, дорогие друзья!

/me загадал на новый год инвайт на habrahabr
Большое спасибо inlanger’y за предоставленный инвайт!
Смотрим HEX календарик с хабра :]
