从外部 URL 抓取视频 URL
Grab video URL from external URL
我正在尝试从外部 URL 访问视频元素的 URL。
这是我正在尝试访问的 url 的示例:
https://www.musical.ly/v/MzA4NTExODI2MDI0MjMzNDgxOTEyMzI.html
file_get_contents 和 curl return 一个没有视频的 html 代码,我做错了什么?
任何 PHP/jQuery 解决方案都很棒!
url 的 MzA4NTExODI2MDI0MjMzNDgxOTEyMzI
部分似乎是视频密钥。
他们正在调用:https://www.musical.ly/rest/v2/musicals/shareInfo?key=MzA4NTExODI2MDI0MjMzNDgxOTEyMzI
以 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');
}
我正在尝试从外部 URL 访问视频元素的 URL。
这是我正在尝试访问的 url 的示例: https://www.musical.ly/v/MzA4NTExODI2MDI0MjMzNDgxOTEyMzI.html
file_get_contents 和 curl return 一个没有视频的 html 代码,我做错了什么?
任何 PHP/jQuery 解决方案都很棒!
url 的 MzA4NTExODI2MDI0MjMzNDgxOTEyMzI
部分似乎是视频密钥。
他们正在调用:https://www.musical.ly/rest/v2/musicals/shareInfo?key=MzA4NTExODI2MDI0MjMzNDgxOTEyMzI
以 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');
}