如何在 C# 中从 Instagram API Sharp 返回当前趋势标签
Posted
技术标签:
【中文标题】如何在 C# 中从 Instagram API Sharp 返回当前趋势标签【英文标题】:How to return current trending hashtags from Instagram API Sharp in C# 【发布时间】:2021-05-17 16:19:10 【问题描述】:我正在尝试使用 Instagram API Sharp C# API 来尝试返回当前流行的主题标签列表。我找到了添加该功能的页面,但我认为我不了解如何实现它。
这里是开发人员所说的实现方式的链接:https://github.com/ramtinak/InstagramApiSharp/issues/227
这是我将其添加到项目时遇到的错误
public static async Task<List<String>> GetPopularTags()
var test = InstaApi.HashtagProcessor.GetTopHashtagMediaListAsync("plant", PaginationParameters.MaxPagesToLoad(1)).Wait();
我一般是编程新手,所以它可能是一个简单的修复。任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:问题似乎出在您调用GetTopHashtagMediaListAsync
的方式上。这与这个特定的API无关,而是对如何在C#中使用Task
s的误解。
先提醒一下:在 SO 上发布与代码相关的问题时,请尽可能以文本而不是图像的形式提供代码和错误/异常。如果能以文本格式查看您的代码,那就太好了。
无论如何...以下返回Task<IResult<InstaSectionMedia>>
:
InstaApi.HashtagProcessor
.GetTopHashtagMediaListAsync("plant", PaginationParameters.MaxPagesToLoad(1));
但是,您在其上调用Wait()
,它不会返回值(返回类型void
),而是阻止当前线程等待Task
完成。这样做你也会失去对任务的引用。一种解决方案(虽然不是正确的解决方案,但仅用于说明目的)是将其拆分为三个步骤:
// Get/start the task
var task = InstaApi.HashtagProcessor
.GetTopHashtagMediaListAsync("plant", PaginationParameters.MaxPagesToLoad(1));
// Wait for it to complete
task.Wait();
// Use the result
var result = task.Result;
// ...
如前所述,这不是一个很好的解决方案,因为您通过调用Wait()
实质上阻塞了当前线程,它占用了您的应用程序中的一个线程,除了等待之外什么都不做。使用Task
s 时,您通常希望await
它利用C# 中内置的异步功能(实际上您已经使用async
关键字为它准备了方法)。因此,处理代码的更好方法是将上述所有三个步骤合并到一个 await
语句中:
var result = await InstaApi.HashtagProcessor
.GetTopHashtagMediaListAsync("plant", PaginationParameters.MaxPagesToLoad(1));
这样,您可以让应用程序在等待任务完成时将线程用于其他事情。完成后,结果将分配给result
,代码将从中断处继续。
【讨论】:
好的,谢谢让我知道代码块,我用代码编辑了问题。但是,我仍然收到错误消息。然而,错误不是因为.Wait()
部分。我刚刚创建了一个“InstaApi”实例,然后在下面引用它。我会用更好的解释来回答我自己的问题【参考方案2】:
原来我需要创建一个 InstaApi
的实例并使用它来获取 Hashtags 列表
public static IInstaApi api = InstaApiBuilder.CreateBuilder().SetUser(userSession)
.UseLogger(new DebugLogger(InstagramApiSharp.Logger.LogLevel.All))
.Build();
public static async Task<List<String>> GetPopularTags()
var test = await api.HashtagProcessor.GetTopHashtagMediaListAsync("plant", PaginationParameters.MaxPagesToLoad(1));
我也错误地使用了.Wait()
方法。我必须在前面添加“等待”才能正确接收结果。
【讨论】:
以上是关于如何在 C# 中从 Instagram API Sharp 返回当前趋势标签的主要内容,如果未能解决你的问题,请参考以下文章