ФорумПрограммированиеPHP для идиотов → Парсинг видео

Парсинг видео

  • TRIAL

    Сообщения: 988 Репутация: N Группа: Джедаи

    Spritz 5 мая 2011 г. 23:37

    Всем привет.
    Понимаю что тема изъезжена уже миллион раз но всё же…
    Интересует парсинг видео контакта и ютьюба. В принципе со всем разобрался. Да и гемороя вроде нет особого, все предлагают готовую ссылку в виде <iframe>.
    Но обратил внимание что тут на пыхе ютьюб выводится через object а контакт через iframe. Хотелось бы услышать ваше мнение, как всё же лучше и почему.
    И главные вопрос: парсить ютьюб просто, у них за название видео отвечает параметр v=******* который просто извлечь и засунуть хоть в обчект хоть в фрейм, а вот в контакте так не получается (у меня), там прямая ссылка на видео имеет вид video12345_54321 где первые и вторые циферки это oid и id видео, но чтоб оно работало нужен еще hash, которого в ссылке нету. Можно его как-то выудить или проще не гемороиться и заставить пользователя копировать и постить код <iframe>.
    И последний вопрос. Так как в регулярках я всё еще не силен, то хотел бы узнать, из текста такого вида
    <iframe src='http://vkontakte.ru/video_ext.php?oid=9445433&id=140561777&hash=13c6c9b5c85e9002' width='607' height='360' frameborder='0'></iframe>

    можно за раз извлечь url и значения width и height? Я на всё это дело юзаю 5 разных preg_match() и мне это не нравиться.
    from TRIAL with LOVE
  • mario

    Сообщения: 6067 Репутация: N Группа: Джедаи

    Spritz 5 мая 2011 г. 23:42, спустя 5 минут 35 секунд

    но чтоб оно работало нужен еще hash, которого в ссылке нету.

    почитай в api как получать хэш, наверное это обычный мд5/ша1 хэш от контактации oid и id
  • Trieg

    Сообщения: 41 Репутация: N Группа: Адекваты

    Spritz 6 мая 2011 г. 1:39, спустя 1 час 56 минут 26 секунд

    можно за раз извлечь url и значения width и height? Я на всё это дело юзаю 5 разных preg_match() и мне это не нравиться.

    $subject = "<iframe src='http://vkontakte.ru/video_ext.php?oid=9445433&id=140561777&hash=13c6c9b5c85e9002' width='607' height='360' frameborder='0'></iframe>";
    preg_match("#<iframe src='(?P<url>.*)' width='(?P<width>\d*)' height='(?P<height>\d*)' frameborder='0'>#", $subject, $matches);
    var_dump($matches);

  • TRIAL

    Сообщения: 988 Репутация: N Группа: Джедаи

    Spritz 6 мая 2011 г. 5:04, спустя 3 часа 25 минут 29 секунд

    Чего-то не работает :(
    Ну мой способ пока пашет, этого хватает.
    Еще вопрос - а как картинку к видео получить в контакте? На ютьюбе всё опять таки просто, код видео вставляем в ссылку http://i3.ytimg.com/vi/код_видео/default.jpg и получаем превьюшку. В контакте всё как всегда запутано и как из видео дернуть картинку понятия не имею. Никто не подскажет?
    from TRIAL with LOVE
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 6 мая 2011 г. 5:11, спустя 7 минут 1 секунду

    никак, вставляй iframe. хеш зависит от oid / vid - да, но как зависит не нарывался ни разу, была задача пару раз видео драть и сохранять к ним - все провально.
    Сапожник без сапог
  • Elif

    Сообщения: 21 Репутация: N Группа: Кто попало

    Spritz 6 мая 2011 г. 23:14, спустя 18 часов 2 минуты 25 секунд

    На ColdFusion я бы сделал так

    <CFSet xmlDoc = XMLParse(xml)>
    <CFDump var="#xmlDoc#">
  • Elif

    Сообщения: 21 Репутация: N Группа: Кто попало

    Spritz 6 мая 2011 г. 23:19, спустя 5 минут 37 секунд

    <CFSet xmlDoc = XMLParse("<iframe src='http://vkontakte.ru/video_ext.php?oid=9445433&id=140561777&hash=13c6c9b5c85e9002' width='607' height='360' frameborder='0'></iframe>")>
    <pre>
    <CFOutput>#xmlDoc#</CFOutput>
    </pre>
  • Reestr

    Сообщения: 20 Репутация: N Группа: Кто попало

    Spritz 8 мая 2011 г. 13:37, спустя 1 день 14 часов 17 минут

    $con = scurl('http://vkontakte.ru/video'.$out['id_owner'].'_'.$out['id_video']);
    preg_match('/HTML\(\'(.*)video\//i', $con, $url);
    preg_match('/"vtag":"([a-z0-9-]+)"/i', $con, $tag);
    preg_match('/"vkid":"([0-9]+)"/i', $con, $vkid);

    if (!preg_match('/vkontakte.ru/i', $url[1]))
    {
    preg_match('/HTML\(\'(.*?)\'/i', $con, $url);
    $file = preg_replace('/thumbnails(.*?)/si', '', $url[1]);
    $file.= 'video/'.$tag[1].$vkid[1].'.vk.flv';
    $ext = 'flv';
    }
    else
    {
    $file = $url[1].'video/'.$tag[1].'.360.mp4';
    $ext = 'mp4';
    }

    писал когда-то, может пригодится
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 9 мая 2011 г. 4:11, спустя 14 часов 33 минуты 30 секунд

    Reestr, гениально! а главное не учтен простейший факт - ссылка на видео файл зависит от IP :D
    Сапожник без сапог
  • Reestr

    Сообщения: 20 Репутация: N Группа: Кто попало

    Spritz 10 мая 2011 г. 0:47, спустя 20 часов 36 минут 5 секунд

    я писал поиск видео и до ip мне не было ровным счетом никакого дела, ибо это всегда был ip сервера
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 10 мая 2011 г. 4:56, спустя 4 часа 8 минут 49 секунд

    Reestr, ты ахуенно гениален :-D

    Спустя 38 сек.
    даже сам не понимаешь своей гениальности
    Сапожник без сапог
  • Reestr

    Сообщения: 20 Репутация: N Группа: Кто попало

    Spritz 10 мая 2011 г. 7:53, спустя 2 часа 56 минут 55 секунд

    ты охуенно сарказмичен, быть может - это твое жизненное кредо, быть может - высерки перед монитором онли

    но если ты что-то хочешь покрыть хуями - будь добр объяснить свои dude'ки…
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 10 мая 2011 г. 8:43, спустя 50 минут 9 секунд

    ибо это всегда был ip сервера

    и смотреть видео можно было только с него же.
    Сапожник без сапог
  • Reestr

    Сообщения: 20 Репутация: N Группа: Кто попало

    Spritz 11 мая 2011 г. 0:14, спустя 15 часов 31 минуту 43 секунды

    был тупо поиск - скачка

Пожалуйста, авторизуйтесь, чтобы написать комментарий!