2017-09-18 3 views

답변

2

트위터 API는 사용자가 다음과 트위터에 LINQ 그 접근 방식을 계속 사람들을 의미하는 사용자와 친구에 따라 사람을 의미하는 용어 추종자를 사용합니다. 그래서, 당신은이처럼 Friendship/FriendshipType.FriendsList 쿼리를 사용합니다 : 결과를 통해

static async Task FriendsListAsync(TwitterContext twitterCtx) 
    { 
     Friendship friendship; 
     long cursor = -1; 
     do 
     { 
      friendship = 
       await 
       (from friend in twitterCtx.Friendship 
       where friend.Type == FriendshipType.FriendsList && 
         friend.ScreenName == "JoeMayo" && 
         friend.Cursor == cursor && 
         friend.Count == 200 
       select friend) 
       .SingleOrDefaultAsync(); 

      if (friendship != null && 
       friendship.Users != null && 
       friendship.CursorMovement != null) 
      { 
       cursor = friendship.CursorMovement.Next; 

       friendship.Users.ForEach(friend => 
        Console.WriteLine(
         "ID: {0} Name: {1}", 
         friend.UserIDResponse, friend.ScreenNameResponse)); 
      } 

     } while (cursor != 0); 
    } 

이 예제 페이지를 do/while 루프. cursor-1으로 설정되어 있으며 Twitter API 커서없이 쿼리가 시작됩니다. 각 쿼리는 사용자의 다음 페이지를 가져 오는 cursor을 할당합니다. if 블록에서 첫 번째 문은 사용자의 다음 페이지에 대해 cursor으로 friendship.CursorMovement.Next을 읽습니다. 다음 cursor0이면 모든 추종자를 읽었습니다.

쿼리가 실행 된 후 Users 속성에는 사용자 정보를 얻을 수있는 List<User> 속성이 있습니다. 이 데모는 목록의 각 구성원을 인쇄합니다. 당신이 큰 친구 목록과로 실행할 수있는 것들의

하나는 트위터 속도 제한을 초과에 대한 오류를 반환 할 것입니다. 당신은 TwitterQueryException을 잡기 초과 속도 제한에 대한 특성을 조사함으로써, try/catch 블록이 잡을 수 있습니다. 속도 제한 사항을 최소화하려면 count200으로 설정하십시오. 그렇지 않으면 카운트의 기본값은 20입니다.

samples을 다운로드하고 LINQ to Twitter 웹 사이트에서 documentation을 확인하십시오.

+1

귀하의 신속한 답변에 감사드립니다. 나는 이것을 알아 내기 위해 LINQ를 트위터에 넘길 시간이별로 없었지만 의심의 여지없이 잘 수행 된 제품이었다. 모든 개발자를 대신하여 귀하의 노력에 감사드립니다. – VMh

+1

편집 할 수는 없지만 "friend.Cursor == cursor"다음에 "&&"가 없습니다. 감사합니다. – VMh

+0

구문 수정 주셔서 감사합니다 - 나는 편집 - 행운을 빌어 요. –