[Помогите] Видео с VK в своем плеере

Тема в разделе "Wordpress", создана пользователем Miron4ik, 6 фев 2015.

Модераторы: DzSoft, Sorcus
  1. Miron4ik

    Miron4ik

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

    Есть какие решения для подобного?
     
  2. Q_BASIC

    Q_BASIC

    Регистр.:
    30 ноя 2013
    Сообщения:
    406
    Симпатии:
    280
    Ссылку на файл видео получить с помощью API, а потом спокойно через любой плеер открыть. Что сложного?
     
    Miron4ik и Цукер нравится это.
  3. Miron4ik

    Miron4ik

    Регистр.:
    16 сен 2012
    Сообщения:
    156
    Симпатии:
    81
    А подробнее можно? Как получить ссылку на видео?
     
  4. Q_BASIC

    Q_BASIC

    Регистр.:
    30 ноя 2013
    Сообщения:
    406
    Симпатии:
    280
    Для того что бы получить ссылку надо знать ID владельца и ID видео записи
    К примеру есть https://vk.com/video?z=video174641510_170548050/album174641510

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

    Ссылка для получения всего: https://api.vk.com/method/video.get?videos=174641510_170548050&access_token=TOKEN

    Получение токена: http://web.eebuy.ru/page/get-vk-token

    потом JSON_DECODE() и всё
     
    AlgoriVismut, latteo и Miron4ik нравится это.
  5. Contego

    Contego Создатель

    Регистр.:
    9 июл 2011
    Сообщения:
    18
    Симпатии:
    10
    Вернется ссылка вида: https://vk.com/video_ext.php?oid=23875481&id=165268809&hash=7d6b6540e3c2b14b, а это плеер.
    Если видео ютубовское(но вставлено в вк), вернется ссылка вообще такого вида: www.youtube.com/embed/-ZRElQXyNaQ
    Раньше вроде как прямые ссылки возвращались только для официальных приложений для мобильных устройств, но получив токет Android приложения и обратившись по api, прямые ссылки так и не вернулись.

    Но способы получить прямую ссылку есть: http://searchengines.guru/showthread.php?t=881879, так что вопрос остается открытым.
     
  6. Q_BASIC

    Q_BASIC

    Регистр.:
    30 ноя 2013
    Сообщения:
    406
    Симпатии:
    280
    Если видео загружено в ВК, то возвращается ссылка на файлы и сам плеер отдельно:
    Код:
    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',
    А если видео с ютуба, к примеру, то ссылку на файл из ВК не получите, так как ВК не копирует видео на свои сервера, а вставляет с ютуба сразу. Получение ссылки на файл с ютуба это уже другая история
     
    Последнее редактирование: 7 фев 2015
    AlgoriVismut нравится это.
  7. Contego

    Contego Создатель

    Регистр.:
    9 июл 2011
    Сообщения:
    18
    Симпатии:
    10
    Для обычных токенов уже давно только плеер возвращается. Вот тут предлагается использовать токен официального приложения VK для Android, он доверенный и мол для него возвращаются еще и прямые ссылки. Но получив и используя его, в ответе все равно нет ссылок:
    [​IMG]
     
  8. Q_BASIC

    Q_BASIC

    Регистр.:
    30 ноя 2013
    Сообщения:
    406
    Симпатии:
    280
    Плеер распарсить не долго

    Смотрим исходный код, там есть это:
    Код:
    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. А там же ссылки на файлы! С плеером ютуба та же самая история
     
    idimka, AlgoriVismut и Miron4ik нравится это.
  9. Contego

    Contego Создатель

    Регистр.:
    9 июл 2011
    Сообщения:
    18
    Симпатии:
    10
    Это обходной метод, он не через API VK.
    Никто не дает гарантии, что он через день не отвалится.
     
  10. Contego

    Contego Создатель

    Регистр.:
    9 июл 2011
    Сообщения:
    18
    Симпатии:
    10
    Набросал небольшую функцию, возвращающую прямые ссылки на файлы (может, кому-то пригодится, только не забудьте заменить звездочки на ваш токен) :
    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);

    ?>
    Но все равно этот метод не вернет ссылки на видео, которые запрещено встраивать. Так что должен быть другой способ.
     
    Последнее редактирование: 7 фев 2015
    idimka и Miron4ik нравится это.