从外部网址抓取视频网址

时间:2017-01-08 15:24:29

标签: php jquery curl video cross-domain

我试图从外部网址访问视频元素的网址。

这是我尝试访问的网址示例: https://www.musical.ly/v/MzA4NTExODI2MDI0MjMzNDgxOTEyMzI.html

file_get_contents和curl会返回一个没有视频的HTML代码,我做错了什么?

任何PHP / jQuery解决方案都会很棒!

1 个答案:

答案 0 :(得分:1)

似乎MzA4NTExODI2MDI0MjMzNDgxOTEyMzI - 网址的一部分是视频密钥。

他们正在调用:https://www.musical.ly/rest/v2/musicals/shareInfo?key=MzA4NT‌​ExODI2MDI0MjMzNDgxOT‌​EyMzI以json格式获取视频信息。

您可以这样做,只使用json响应中的videoUri吗?

实施例

为了好玩,我创建了一个如何从初始URL获取它的示例。这当然需要一些验证等等,但这是一个有效的例子:

<?php
$url      = 'https://www.musical.ly/v/MzA4NTExODI2MDI0MjMzNDgxOTEyMzI.html';

// Extract the url path and explode the segments
$segments = explode('/', parse_url($url, PHP_URL_PATH));

if (isset($segments[2])) {
    // We have the key segment so let's build the URL to fetch the info
    $infoUrl = 'https://www.musical.ly/rest/v2/musicals/shareInfo?key=' . rtrim($segments[2], '.html');
    $info    = file_get_contents($infoUrl);
    $info    = $info ? json_decode($info, true) : null;
}

if (isset($info['result'], $info['result']['videoUri'])) {
    // We have all we need, let's get the video uri
    echo $info['result']['videoUri'];
} else {
    die('No video URI found');
}