Помогите с регуляркой preg_match

  • Автор темы
  • Модер.
  • #11
:confused:
Наглядный пример Для просмотра ссылки Войди или Зарегистрируйся - в табе скачать - ссылки получает левые, т.к. "vtag":"06dbabab79", не соответствует действительности, при этом значение которое он выдает в ссылках - вообще нет при просмотре кода страницы... Он же должен отдавать ссылки именно для моего IP с которого я открываю эту ссылку, а получается что часть видео загруженного мной на выходе получает ссылки не верные, старые видео загруженные другими - vtag определяет нормально и всё можно скачать :nezn:
Подскажите тогда если регулярка нормально прописана - то куда копать и где искать косяк в парсинге-выводе инфы?
 
:confused:
Наглядный пример Для просмотра ссылки Войди или Зарегистрируйся - в табе скачать - ссылки получает левые, т.к. "vtag":"06dbabab79", не соответствует действительности, при этом значение которое он выдает в ссылках - вообще нет при просмотре кода страницы... Он же должен отдавать ссылки именно для моего IP с которого я открываю эту ссылку, а получается что часть видео загруженного мной на выходе получает ссылки не верные, старые видео загруженные другими - vtag определяет нормально и всё можно скачать :nezn:
Подскажите тогда если регулярка нормально прописана - то куда копать и где искать косяк в парсинге-выводе инфы?
Там сразу плеер вставлен контактовский, а Вы хотите ссылку получать.
При генерации страницы с плеером адреса всегда разные вставляются, дабы распределять нагрузку на сервера.

Если вставлять сразу плеер (iframe), то тут и регулярки не нужны. И привязка к IP того, кто в данный момент смотрит.
 
  • Автор темы
  • Модер.
  • #13
Там сразу плеер вставлен контактовский, а Вы хотите ссылку получать.
При генерации страницы с плеером адреса всегда разные вставляются, дабы распределять нагрузку на сервера.

Если вставлять сразу плеер (iframe), то тут и регулярки не нужны. И привязка к IP того, кто в данный момент смотрит.
плеер то их, и вставлен как убрали они часть API видео через который можно было смотреть нормально в другом плеере. Не работают ссылки СКАЧАТЬ, а не сам плеер! И выдавать ссылки на скачивание должен тому IP который смотрит сейчас конкретный фильм... А по факту - вообще не понятно что не работает :(
 
Смотри что у тебя выдирается функцией print_r($matches); тогда и поймешь в чем дело.
 
  • Автор темы
  • Модер.
  • #15
Смотри что у тебя выдирается функцией print_r($matches); тогда и поймешь в чем дело.
как именно она должна вывести чтобы понять почему ссылку дергает не так??
 
$html = file_get_contents(urldecode($link));
получил код страницы
preg_match('/(?<=var vars = ).+}/', $html, $matches);
вот после этой строки и проверь что у тебя записалось в $matches. Если причина явно в этом месте то и копать нужно здесь.
 
  • Автор темы
  • Модер.
  • #17
$html = file_get_contents(urldecode($link));
получил код страницы
preg_match('/(?<=var vars = ).+}/', $html, $matches);
вот после этой строки и проверь что у тебя записалось в $matches. Если причина явно в этом месте то и копать нужно здесь.
Это понятно. Выводит строку массива в том виде в котором она представлена в исходном виде. Но опять же, данные если сразу же смотреть исходный код с выдираемого видео - отличается от того что выводится кодом выше, и ссылка не работает. Повторюсь: в ссылках все верно определяется, кроме имён файлов 270785a3d8.***.mp4, именно первая часть и отличается, и откуда она вообще берется при выводе ссылок - не понятно...
 
PHP:
<?php
function getVKVideoInfo($link, $getFilesizes = false) {
    $html = file_get_contents(urldecode($link));
    preg_match('/(?<=var vars = ).+}/', $html, $matches);
    $json = json_decode(mb_convert_encoding($matches[0], "UTF-8", "CP1251"), true);
    $result['name'] = urldecode($json['md_title']);
    foreach ($json as $key => $value) {
        if (strpos($key, 'url') === 0) {
            preg_match('/^.+videos\/\w+\.(\d{3,4}).(\w{3,5})(?>=?)/', $value, $matches);
            preg_match('/^.+videos\/\w+\.?(\d{3,4})?.(\w{3,5})(?>=?)/', $value, $matches);
            $temp = array('link' => $value, 'quality' => $matches[1], 'format' => $matches[2]);
            if ($getFilesizes) {
                $head = array_change_key_case(get_headers($matches[0], true));
                $temp['size'] =  round($head['content-length'] / 1024 / 1024, 2);
            }
            $result['urls'][] = $temp;
            unset($temp);
        }
    }

    return $result;
}

print_r( getVKVideoInfo('http://vk.com/video_ext.php?oid=317204999&id=171444669&hash=de8b10f2b0efeca4'));
результат:
Код:
Array
(
    [name] => 1/5175
    [urls] => Array
        (
            [0] => Array
                (
                    [link] => http://cs542307v4.vk.me/7/u317204999/videos/ba0078942e.240.mp4?extra=ZKlUaCK3-P1Yyyz3SB0TEXMQMaI5X7akL4SO0sVeM2Imga1rbWS048PPZg_qyL0zUspr_Srst_PQyNuh5gL_UF0TQqzyMA
                    [quality] => 240
                    [format] => mp4
                )

            [1] => Array
                (
                    [link] => http://cs542307v4.vk.me/7/u317204999/videos/ba0078942e.360.mp4?extra=ZKlUaCK3-P1Yyyz3SB0TEXMQMaI5X7akL4SO0sVeM2Imga1rbWS048PPZg_qyL0zUspr_Srst_PQyNuh5gL_UF0TQqzyMA
                    [quality] => 360
                    [format] => mp4
                )

            [2] => Array
                (
                    [link] => http://cs542307v4.vk.me/7/u317204999/videos/ba0078942e.480.mp4?extra=ZKlUaCK3-P1Yyyz3SB0TEXMQMaI5X7akL4SO0sVeM2Imga1rbWS048PPZg_qyL0zUspr_Srst_PQyNuh5gL_UF0TQqzyMA
                    [quality] => 480
                    [format] => mp4
                )

            [3] => Array
                (
                    [link] => http://cs542307v4.vk.me/7/u317204999/videos/ba0078942e.720.mp4?extra=ZKlUaCK3-P1Yyyz3SB0TEXMQMaI5X7akL4SO0sVeM2Imga1rbWS048PPZg_qyL0zUspr_Srst_PQyNuh5gL_UF0TQqzyMA
                    [quality] => 720
                    [format] => mp4
                )

        )

)

что не так? или какую ссылку тестировать что бы увидеть ошибку
 
  • Автор темы
  • Модер.
  • #19
что не так? или какую ссылку тестировать что бы увидеть ошибку
Для просмотра ссылки Войди или Зарегистрируйся
Здесь у меня например должны быть 0873834248.240.mp4 а выдается через этот код 54eda044df.240.mp4 и соответственно не качает, т.к. ошибку 404 выдает. Ссылки так выдает только на новые загруженные файлы, а старые файлы загруженные уже давно - выводят нормально.
Для просмотра ссылки Войди или Зарегистрируйся - тут не работает, а тут Для просмотра ссылки Войди или Зарегистрируйся например работает...
 
Смотри, я получил Для просмотра ссылки Войди или Зарегистрируйся видео показывает, почему тебе нужно имя файла из цифр а цифробуквенное не подходит? Разница только в имени файла? Может нужно подправить скрипт который качает? Что бы он мог качать цифробуквенные файлы.
 
Назад
Сверху