Pull to refresh

Получить видео с vk.com при помощи PHP. Все гораздо проще

Доброго времени суток, уважаемые хабравчане. Недавно я прочитал мой Получить видео с vk.com при помощи PHP и был ошеломлен. Видимо, не я один, так как карма автора XProx была изрядно попорчена. В комментариях называли приведенный код «говнокодом», автор статьи утверждал что "через API нельзя скачать видео", вводил в заблуждение пользователей и говорил что подобный код стоит 300 вечнозеленых. Все это вызвало во мне бурю эмоций, я не удержался и решил написать статью. Я решил подойти по другому к поставленной задаче и выложить свое решение.

Для заинтересовавшихся скажу, что для получения прямых ссылок на видео нам достаточно следующего кода:
define('ACCESS_TOKEN', '********');

function api($method, $params = array())
{
	$params['access_token'] = ACCESS_TOKEN;
	
	$url = 'https://api.vk.com/method/' . $method . '?' . http_build_query($params);
	$response = file_get_contents($url);
	return json_decode($response, true);
}

$api = api('video.get', array(
	'videos' => '23962687_159622161',
));

print_r($api);

И все!
Результат вышеприведенного кода:
Array
(
    [response] => Array
        (
            [0] => 1
            [1] => Array
                (
                    [vid] => 159622161
                    [owner_id] => 23962687
                    [title] => Nero – Guilt (Official Video)
                    [description] => ↳ vk.com/dubstep_top
                    [duration] => 181
                    [link] => video159622161
                    [image] => http://cs12850.userapi.com/u27720818/video/m_367520e6.jpg
                    [image_medium] => http://cs12850.userapi.com/u27720818/video/l_a956702d.jpg
                    [date] => 1302727066
                    [views] => 10479
                    [files] => Array
                        (
                            [mp4_240] => http://cs12850.userapi.com/u27720818/videos/4c4e2b2044.240.mp4
                            [mp4_360] => http://cs12850.userapi.com/u27720818/videos/4c4e2b2044.360.mp4
                            [mp4_480] => http://cs12850.userapi.com/u27720818/videos/4c4e2b2044.480.mp4
                            [mp4_720] => http://cs12850.userapi.com/u27720818/videos/4c4e2b2044.720.mp4
                        )

                    [player] => http://vk.com/video_ext.php?oid=23962687&id=159622161&hash=008045cc2d45fd4d
                )

        )

)


Думаю, комментарии тут не нужны. В массиве files мы имеем необходимые нам ссылки. Но давайте по порядку. Для работы скрипта нам нужен токен, да причем не обычный, а доверенного приложения, которое может получать через API прямые ссылки на видео. Доверенными приложениями ВКонтакте являются официальные мобильные клиенты для Android, iPhone, etc. Поступаем следующим образом. Нехитрыми путями узнаем идентификатор приложения Adnroid: 2274003 и формируем ссылку для получения токена: http://oauth.vk.com/authorize?client_id=2274003&response_type=token. После перехода по ссылке и разрешения доступа браузер перенаправляет нас на страницу вида: oauth.vk.com/blank.html#access_token=****&expires_in=86400&user_id=***. С этого адреса мы и берем access_token. Всем спасибо за внимание. Отправляйте, пожалуйста, найденные ошибки в личные сообщения. Очень надеюсь на инвайт :)
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.