Как правильно парсить ссылку на видео?

Такие дела.
При создании поста пользователь в поле просто кидает ссылку с неизвестно какого ресурса (ну или хотя бы ограничимся топом из 5 самых известных).

Что мне с ней делать, чтобы при показе поста уже появлялся фрейм?

Определять по домену что за сервис, заносить в БД этот сервис, а потом, в шаблоне, просто подставлять нужный HTML?
Или есть способы попроще?
Помню, в ВК оочень долго не было этой фичи.
  • Вопрос задан
  • 1271 просмотр
Решения вопроса 1
Stalker_RED
@Stalker_RED
Могу подсказать про ютуб, в прошлом году с ним возился.
Получаем youtubeVideoId
/**
* выдергивает videoId из url или embed
* тесты здесь: http://jsfiddle.net/1j5do56g/1/
*
* @param string input
* @returns string youtube video id
*/
function youtubeGetID(input){
    var r = input.replace(/(>|<)/gi,'').split(/(vi\/|v=|\/v\/|youtu\.be\/|\/embed\/)/)
    if(r[2] !== undefined) {
        return r[2].split(/[^0-9a-z_\-]/i)[0]
    } else {
        r = input.match(/^.*(?:(?:youtu\.be\/|v\/|vi\/|u\/\w\/|embed\/)|(?:(?:watch)?\?v(?:i)?=|\&v(?:i)?=))([^#\&\?]*).*/)
        if(r && r[1] !== undefined) {
            return r[1]
        }
        else return input
    }
}

Тест: jsfiddle.net/1j5do56g/1

Делаем ссылку и используем как src для iframe
// parse and update id
        var youtubeId = youtubeGetID(field.val())
        field.val(youtubeId)

        // update iframe
        var newSrc = 'http://www.youtube.com/embed/' + youtubeId
        var iframe = field.closest('.panel-body').find('iframe')
        iframe.attr('src', newSrc)


С остальными сервисами такая-же история. Можете поискать готовые решения.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы