我有一个简单的wordpress插件,可以从Vimeo获取信息。我试图使用他们的"简单的api"从vimeo获取视频持续时间元数据。使用以下代码:
function vimeo_duration ($id) {
try {
$ch = curl_init("http://vimeo.com/api/v2/video/$id/json");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$res = curl_exec($ch);
$obj = json_decode($res, true);
return $obj[0]['duration'];
} catch (Exception $e) {
# returning 0 if the Vimeo API fails for some reason.
return '0';
}
}
结果:空白。它没有取任何东西而且没有" 0"同样。
此链接是我们用来从http://vimeo.com/api/v2/video/244509537/json获取信息的链接,当您在浏览器中加载时,它会提供以下结果:
(结尾' json'可以替换为" / php"或" / xml"它将以相应的格式给出结果。)
但是我发现不再支持此api 而且我必须使用 new Api 来获取我想要的持续时间数据。 (也许这就是为什么它没有提取数据)
我已经通过StackOverflowa和其他来源进行了搜索,但我无法找到一个有效的例子。我还阅读了vimeo文档,但是我无法实现它。我按照他们的建议创建了 API ,现在拥有访问令牌。
我已经使用了我在StackOverflow中找到的代码并对其进行了一些修改。但是它不会返回任何值。 结果再次是空白。它没有取任何东西而且它没有返回" 0"同样。
function vimeo_duration ($id) {
try {
$authorization = 'your_vimeo_api_authorization_token_goes_here';
$ch = curl_init();
curl_setopt_array($ch, array(
CURLOPT_URL => "https://api.vimeo.com/videos/$id",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => array(
"authorization: Bearer {$authorization}",
"cache-control: no-cache",
),
));
$res = curl_exec($ch);
$obj = json_decode($res, true);
return $obj[0]['duration'];
} catch (Exception $e) {
# returning 0 if the Vimeo API fails for some reason.
return "0";
}
}
有人可以帮助您使用此代码吗?我看到其他人有兴趣使用新的API来获取不同类型的信息,但这里没有很多工作示例,还有很多未解决的问题。
答案 0 :(得分:2)
试试这个:
Sub In_knapp_Click()
Dim i As Long
Dim g As Long
Dim a As Long
Dim b As Long
b = 3
For a = 1 To 7 Step 1
If Weekday(Now(), vbMonday) = a Then
For g = 3 To 12 Step 2
If g = 11 Then
MsgBox "Ingen Ut tid hittades"
Exit For
Else
If IsEmpty(Worksheets("Pontevedra").Cells(b, g).Value) Then
For i = 2 To 10 Step 2
If IsEmpty(Worksheets("Pontevedra").Cells(b, i).Value) Then
Worksheets("Pontevedra").Cells(b, i).Value = Now
ButtonOneClick = True
Exit For
Else
MsgBox "Fel"
End If
Else
Next g
End If
Else
b = b + 1
End If
Next a
End Sub
我所做的改变:
function vimeo_duration ($id) {
try {
$authorization = 'your_vimeo_api_authorization_token_goes_here';
$ch = curl_init();
curl_setopt_array($ch, array(
CURLOPT_URL => "https://api.vimeo.com/videos/$id?fields=duration",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => array(
"authorization: Bearer {$authorization}",
"cache-control: no-cache",
),
));
$res = curl_exec($ch);
$obj = json_decode($res, true);
return $obj['duration'];
} catch (Exception $e) {
# returning 0 if the Vimeo API fails for some reason.
return "0";
}
}
更改为https://api.vimeo.com/videos/$id
。这告诉我们的API 仅为您拉回https://api.vimeo.com/videos/$id?fields=duration
。结果是更快的响应,因为我们不处理您不使用的数据,以及更高的速率限制。有关详细信息,请参阅https://developer.vimeo.com/api/common-formats#json-filter。duration
现在是return $obj[0]['duration'];
。由于您要查询单个视频,因此结果集是一个关联数组。使用以下内容运行这些更改,我会收到return $obj['duration'];
:
9