C # Как встроить видео по URL (например, Facebook)? - PullRequest
1 голос
/ 28 марта 2012

Я пытаюсь разрешить пользователям размещать видео на моем сайте, указав только URL.Прямо сейчас я могу разрешить видео на YouTube, просто проанализировав URL-адрес и получив идентификатор, а затем вставив этот идентификатор в заданный код для встраивания и поместив его на страницу.

Это ограничивает меня толькоТем не менее, для видео на YouTube я собираюсь сделать что-то похожее на Facebook, где вы можете вставить URL-адрес YouTube «Поделиться» ИЛИ URL-адрес страницы или любой другой URL-адрес видео, и оно загружает видео в проигрыватель.

Есть идеи, как они это делают?или любой другой сопоставимый способ показать видео только по URL?Имейте в виду, что видео на YouTube (которые, вероятно, были бы наиболее популярными в любом случае) не дают URL-адрес видео, а URL-адрес видео на странице YouTube (поэтому их код для встраивания необходим только с идентификатором).

Надеюсь, это имело смысл, и я надеюсь, что кто-нибудь сможет дать мне несколько советов, где искать!

Спасибо, ребята.

1 Ответ

3 голосов
/ 28 марта 2012

Я бы предложил добавить поддержку атрибутов OpenGraph , которые распространены среди контент-сервисов, которые позволяют другим сайтам встраивать свой контент.Информация на страницах будет содержаться в тегах <meta>, что означает, что вам придется загружать URL-адрес с помощью чего-то вроде HtmlAgilityPack :

var doc = new HtmlDocument();
doc.Load(webClient.OpenRead(url)); // not exactly production quality

var openGraph = new Dictionary<string, string>();
foreach (var meta in doc.DocumentNode.SelectNodes("//meta"))
{
    var property = meta["property"];
    var content = meta["content"];
    if (property != null && property.Value.StartsWith("og:"))
    {
        openGraph[property.Value]
            = content != null ? content.Value : String.Empty;
    }
}

// Supported by: YouTube, Vimeo, CollegeHumor, etc
if (openGraph.ContainsKey("og:video"))
{
    // 1. Get the MIME Type
    string mime;
    if (!openGraph.TryGetValue("og:video:type", out mime))
    {
        mime = "application/x-shockwave-flash"; // should error
    }

    // 2. Get width/height
    string _w, _h;
    if (!openGraph.TryGetValue("og:video:width", out _w)
     || !openGraph.TryGetValue("og:video:height", out _h))
    {
        _w = _h = "300"; // probably an error :)
    }

    int w = Int32.Parse(_w), h = Int32.Parse(_h);

    Console.WriteLine(
        "<embed src=\"{0}\" type=\"{1}\" width=\"{2}\" height=\"{3}\" />",
        openGraph["og:video"],
        mime,
        w,
        h);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...