我正在使用Vine API包装器“VineSharp”nuget包来尝试获取有关Vine视频的一些细节。 我有视频网址。即:“https://vine.co/v/eYgeYlYAOQv” 然而,为了获得葡萄藤的数据,显然VineSharp(以及其他Vine API包装纸)要求插入葡萄藤标识 - 我没有。
如果我有视频网址或视频ID,我会搜索谷歌以了解如何获取帖子ID - 但找不到任何内容。
如果Vine API支持帖子查询以使用帖子的id获取特定帖子的详细信息,那么只能从Json中检索另一个API调用(如时间轴或频道请求)来检索帖子ID本身是不合逻辑的。
我错过了什么?
答案 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