1

C# と instasharp を使用して、instagram ユーザーのフォローリストを取得するための小さなプログラムを作成しています。以下のコードは最初の 50 を取得します。次のページに移動するには、ページネーション オプションを使用して次の URL を取得する必要があると思います。それが私が立ち往生したところです。ページネーションを使用して、フォローしているすべてのユーザーをループするにはどうすればよいですか?

var config = new InstaSharp.InstagramConfig("api", "oauth", "xxxxxx", "xxxxxxx", "xxxxxx");

var config1 = new InstaSharp.Endpoints.Relationships.Unauthenticated(config);
var result = config1.Follows(000000);

dynamic dyn = JsonConvert.DeserializeObject(result.Json);
foreach (var data in dyn.data)
{
    listBox1.Items.Add(data.username);
}
4

1 に答える 1

2

ここでの私の応答に基づいて: https://stackoverflow.com/a/25139236/88217

InstaSharp githubの単体テストを見ると、ページネーションの使用方法の例を確認できます。

    public async Task Follows_NextCursor()
    {
        //This test will fail if testing with an account with less than one page of follows
        var result = await relationships.Follows();
        result = await relationships.Follows(457273003/*ffujiy*/, result.Pagination.NextCursor);
        Assert.IsTrue(result.Data.Count > 0);
    }

ループしてすべてを取得したい場合は、次のようにすることをお勧めします。

int userID = 000000;
var result = await relationships.Follows(userID);

while(result.Data.Count > 0)
{
  dynamic dyn = JsonConvert.DeserializeObject(result.Json);
  foreach (var data in dyn.data)
  {
    listBox1.Items.Add(data.username); 
  }

  result = await relationships.Follows(userID, result.Pagination.NextCursor)
}

このコードはawaitを使用しているため、メソッドをasyncとしてマークする必要があります。これに伴う詳細については、async/await キーワードを参照することをお勧めします。Stephen Cleary のブログで適切な紹介を見つけることができます。

于 2014-08-05T17:15:55.020 に答える