从视频URL获取Vine post

本文关键字:Vine post 获取 URL 视频 | 更新日期: 2023-09-27 18:04:26

我正在使用Vine API包装器"VineSharp" nuget包来尝试获取有关Vine视频的一些细节。我有视频的URL。例如:"https://vine.co/v/eYgeYlYAOQv"然而,为了获得vine post数据,显然VineSharp(以及其他vine API包装器)要求插入vine post ID -我没有。

我搜索了很多谷歌,想知道如果我有视频URL或视频ID,我怎么能得到帖子ID -但找不到任何东西。

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

我错过了什么?

从视频URL获取Vine post

WebClient类下载https://vine.co/v/eYgeYlYAOQv的内容,用正则表达式解析结果。

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

<>以前葡萄://post/(' d +) [^ ' d] 之前<>之前"postIdStr":' s *"(' d +)" 之前

第一个匹配组将包含post ID。

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

下面是一个工作示例,下载网站,尝试两种模式并打印第一个匹配的post 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