• DONATE to NULLED!
    Вы можете помочь Форуму и команде, поддержать финансово.
    starwanderer - модератор этого раздела будет Вам благодарен!

Помощь Видео с VK в своем плеере

Miron4ik

Гуру форума
Регистрация
16 Сен 2012
Сообщения
170
Реакции
82
Всем привет.
Кто подскажет чего по следующему вопросу.
Необходимо вывести видео из VK в своем плеере на сайте WordPress (например uppod) или каком другом плеере. Основная задача - скрыть вообще плеер VK

Есть какие решения для подобного?
 
Для того что бы получить ссылку надо знать ID владельца и ID видео записи
К примеру есть Для просмотра ссылки Войди или Зарегистрируйся

Оттуда берем video174641510_170548050 и убираем "video", оставляя только цифры с подчеркиванием

Ссылка для получения всего: Для просмотра ссылки Войди или Зарегистрируйся

Получение токена: Для просмотра ссылки Войди или Зарегистрируйся

потом JSON_DECODE() и всё
 
Ссылка для получения всего: Для просмотра ссылки Войди или Зарегистрируйся
Вернется ссылка вида: Для просмотра ссылки Войди или Зарегистрируйся, а это плеер.
Если видео ютубовское(но вставлено в вк), вернется ссылка вообще такого вида: Для просмотра ссылки Войди или Зарегистрируйся
Раньше вроде как прямые ссылки возвращались только для официальных приложений для мобильных устройств, но получив токет Android приложения и обратившись по api, прямые ссылки так и не вернулись.

Но способы получить прямую ссылку есть: Для просмотра ссылки Войди или Зарегистрируйся, так что вопрос остается открытым.
 
Вернется ссылка вида: Для просмотра ссылки Войди или Зарегистрируйся, а это плеер.
Если видео ютубовское(но вставлено в вк), вернется ссылка вообще такого вида: Для просмотра ссылки Войди или Зарегистрируйся
Раньше вроде как прямые ссылки возвращались только для официальных приложений для мобильных устройств, но получив токет Android приложения и обратившись по api, прямые ссылки так и не вернулись.

Но способы получить прямую ссылку есть: Для просмотра ссылки Войди или Зарегистрируйся, так что вопрос остается открытым.
Если видео загружено в ВК, то возвращается ссылка на файлы и сам плеер отдельно:
Код:
files: {
mp4_240: 'http://cs510405v4...55b186bb1.240.mp4',
mp4_360: 'http://cs510405v4...55b186bb1.360.mp4',
mp4_480: 'http://cs510405v4...55b186bb1.480.mp4',
mp4_720: 'http://cs510405v4...55b186bb1.720.mp4'
},
player: 'http://vk.com/vid...=b30e278fb2977ee4',

А если видео с ютуба, к примеру, то ссылку на файл из ВК не получите, так как ВК не копирует видео на свои сервера, а вставляет с ютуба сразу. Получение ссылки на файл с ютуба это уже другая история
 
Последнее редактирование:
Если видео загружено в ВК, то возвращается ссылка на файлы и сам плеер отдельно:
Для обычных токенов уже давно только плеер возвращается. Для просмотра ссылки Войди или Зарегистрируйся предлагается использовать токен официального приложения VK для Android, он доверенный и мол для него возвращаются еще и прямые ссылки. Но Для просмотра ссылки Войди или Зарегистрируйся и используя его, в ответе все равно нет ссылок:
eac6e2b8b9cc.png
 
Для обычных токенов уже давно только плеер возвращается. Для просмотра ссылки Войди или Зарегистрируйся предлагается использовать токен официального приложения VK для Android, он доверенный и мол для него возвращаются еще и прямые ссылки. Но Для просмотра ссылки Войди или Зарегистрируйся и используя его, в ответе все равно нет ссылок:
eac6e2b8b9cc.png
Плеер распарсить не долго

Смотрим исходный код, там есть это:
Код:
if (window.devicePixelRatio >= 2) {
      document.body.className += ' is_2x';
    }
    domReady();
    var video_host = 'https://cs543609.vk.me/';
var video_uid = '174641510';
var video_vtag = 'd0f8e1e773';
var video_no_flv = 1;
var video_max_hd = '2';
var video_title = '99%25+%22%D1%81%D0%B0%D0%BC%D0%B8+%D1%81%D0%B5%D0%B1%D0%B5+%D1%80%D0%B5%D0%B6%D0%B8%D1%81%D0%B5%D1%80%D1%8B%22';
var video_author = '%D0%A0%D0%BE%D0%BC%D0%B0+%D0%9C%D0%BE%D1%80%D0%BE%D0%B7%D0%BE%D0%B2';
var vars = {"uid":"174641510","vid":170795784,"oid":174641510,"host":"https:\/\/cs543609.vk.me\/","vtag":"d0f8e1e773","ltag":"l_8c920e88","vkid":170795784,"md_title":"99%25+%22%D1%81%D0%B0%D0%BC%D0%B8+%D1%81%D0%B5%D0%B1%D0%B5+%D1%80%D0%B5%D0%B6%D0%B8%D1%81%D0%B5%D1%80%D1%8B%22","md_author":"%D0%A0%D0%BE%D0%BC%D0%B0+%D0%9C%D0%BE%D1%80%D0%BE%D0%B7%D0%BE%D0%B2","hd":2.000000,"no_flv":1,"hd_def":-1,"dbg_on":0,"t":"","duration":85,"thumb":"https:\/\/pp.vk.me\/c543609\/u174641510\/video\/l_8c920e88.jpg","hash":"874a1165b89d8f9124eaa3b336c28627","hash2":"53578945dbad9cfd","angle":0.000000,"img_angle":0.000000,"repeat":0,"show_ads":0,"legal_owner":0,"eid1":0,"puid37":"2","puid38":1,"water_mark":"","can_rotate":1,"url240":"https:\/\/cs543609.vk.me\/u174641510\/videos\/d0f8e1e773.240.mp4?extra=04ebISng9QGzSdUeUgczc3sppbN-H-iSwmxPsjpB5IEWnqupwZkwZt35m_rMxpmITCX7k_D5HnuaYkkHdDaKMOdEuJzDFYA","url360":"https:\/\/cs543609.vk.me\/u174641510\/videos\/d0f8e1e773.360.mp4?extra=04ebISng9QGzSdUeUgczc3sppbN-H-iSwmxPsjpB5IEWnqupwZkwZt35m_rMxpmITCX7k_D5HnuaYkkHdDaKMOdEuJzDFYA","url480":"https:\/\/cs543609.vk.me\/u174641510\/videos\/d0f8e1e773.480.mp4?extra=04ebISng9QGzSdUeUgczc3sppbN-H-iSwmxPsjpB5IEWnqupwZkwZt35m_rMxpmITCX7k_D5HnuaYkkHdDaKMOdEuJzDFYA","jpg":"https:\/\/pp.vk.me\/c543609\/u174641510\/video\/l_8c920e88.jpg","ip_subm":1,"proxy":"psv4","https":1,"video_ext":1,"is_vk":0,"is_ext":1,"lang_add":"Добавить к себе","lang_added":"Добавлено к себе","lang_share":"Рассказать друзьям","lang_like":"Мне нравится","lang_volume_on":"Включить звук","lang_volume_off":"Убрать звук","lang_volume":"Громкость","lang_hdsd":"Сменить качество","lang_fullscreen":"На весь экран","lang_window":"Свернуть","lang_rotate":"Повернуть","lang_ads_link":"Сайт рекламодателя","lang_ads":"Реклама","lang_ads_skip":"Пропустить рекламу","lang_ads_skip_time":"Пропустить рекламу через {time}","lang_report_problem":"Сообщить о проблеме...","video_play_hd":"Смотреть в высоком качестве","video_stop_loading":"Прервать загрузку","video_player_version":"ВКонтакте видео плеер ","goto_orig_video":"Перейти к видеозаписи","video_get_video_code":"Копировать код видео","video_load_error":"Видеофайл еще не загрузился или сервер с видеофайлом временно недоступен","video_get_current_url":"Копировать ссылку на кадр"}
var fixed_player_size = false;
window.resolution = 0;

Смотрим переменную vars, а там o_O. А там же ссылки на файлы! С плеером ютуба та же самая история
 
Смотрим переменную vars, а там o_O. А там же ссылки на файлы! С плеером ютуба та же самая история
Это обходной метод, он не через API VK.
Никто не дает гарантии, что он через день не отвалится.
 
Набросал небольшую функцию, возвращающую прямые ссылки на файлы (может, кому-то пригодится, только не забудьте заменить звездочки на ваш токен) :
PHP:
<?php
/**
* Возвращает массив прямых ссылок на видео(по разрешениям: 240, 360, 480, 720) с vk.com или -1 в случае ошибки
*
* @param  Индетификатор видео формата "число_число"|string  $videos
*/
function get_vk_video($videos){
    //получите токен, например, тут: http://web.eebuy.ru/page/get-vk-token
    $vk_access_token = '************************************************';

    //получаем ссылку на плеер
    $vk_url = "https://api.vk.com/method/video.get?videos=$videos&access_token=$vk_access_token";
    $vk_response = json_decode(file_get_contents($vk_url), true);

    //получаем прямые ссылки
    $vk_url = $vk_response[response][1][player];
    $vk_html = file_get_contents($vk_url);
    preg_match("|var vars = (.*)var fixed_player_size|sei", $vk_html, $vk_vars_str);
    $vk_vars_str[1] = trim(mb_convert_encoding($vk_vars_str[1], 'utf-8', mb_detect_encoding($vk_vars_str[1]))); //кодируем в utf8, иначе json_decode ругается
    $vk_vars = json_decode($vk_vars_str[1], true);

    //формируем массив прямых ссылок
    $vk_videos = array();
    if($vk_vars['url240'])
        $vk_videos['240'] = $vk_vars['url240'];
    if($vk_vars['url360'])
        $vk_videos['360'] = $vk_vars['url360'];
    if($vk_vars['url480'])
        $vk_videos['480'] = $vk_vars['url480'];
    if($vk_vars['url720'])
        $vk_videos['720'] = $vk_vars['url720'];

    return (count($vk_videos) > 0) ? $vk_videos : -1;
}

//пример
$video = get_vk_video('23875481_165268809');
var_dump($video);

?>

Но все равно этот метод не вернет ссылки на видео, которые запрещено встраивать. Так что должен быть другой способ.
 
Последнее редактирование:
Назад
Сверху