从视频网址获取Vine PostID

时间:2016-08-29 10:33:56

标签: c# video vine

我正在使用Vine API包装器“VineSharp”nuget包来尝试获取有关Vine视频的一些细节。 我有视频网址。即:“https://vine.co/v/eYgeYlYAOQv” 然而,为了获得葡萄藤的数据,显然VineSharp(以及其他Vine API包装纸)要求插入葡萄藤​​标识 - 我没有。

如果我有视频网址或视频ID,我会搜索谷歌以了解如何获取帖子ID - 但找不到任何内容。

如果Vine API支持帖子查询以使用帖子的id获取特定帖子的详细信息,那么只能从Json中检索另一个API调用(如时间轴或频道请求)来检索帖子ID本身是不合逻辑的。

我错过了什么?

1 个答案:

答案 0 :(得分:1)

一种执行此操作的hacky方法是使用WebClient class下载https://vine.co/v/eYgeYlYAOQv的内容并使用正则表达式解析结果。

帖子ID在返回的网页中多次出现。您可以使用以下正则表达式之一(或两者都可以):

vine://post/(\d+)[^\d]
"postIdStr":\s*"(\d+)"

第一个匹配组将包含帖子ID。

以下是尝试这两种模式的工作示例:https://regex101.com/r/aV9fD8/4

以下是一个下载网站,尝试这两种模式并打印第一个匹配的帖子ID的工作示例:https://dotnetfiddle.net/klWnxw

using (var client = new WebClient())
{       
    var content = client.DownloadString("https://vine.co/v/eYgeYlYAOQv");

    var postIdMatch = Regex.Match(
        content, 
        @"vine://post/(\d+)[^\d]|""postIdStr"":\s*""(\d+)""");

    if (postIdMatch.Success)
        Console.WriteLine(
            postIdMatch.Groups[1].Value != string.Empty 
                ? postIdMatch.Groups[1].Value 
                : postIdMatch.Groups[2].Value);
    else
        Console.WriteLine("No post ID found.");
}

输出:

  

1270971006727159808