25 개 이상의 메시지를 게시 페치하는 방법. 내가 제한 매개 변수를 설정하면, 내 코드는 내가 restfb를 사용하는 모든 메시지를 게시 얻으려고
는 Parameter.with ("제한", 100)
, 그것은 100 개의 메시지를 제공하지만 난 후 메시지를 가져 오는에 제한하고 싶지 않아요. 그래서,
제한 매개 변수를 설정하지 않고 검색 기준과 일치하는 게시물 메시지의 전체 목록을 얻을 수 있습니까?
25 개 이상의 메시지를 게시 페치하는 방법. 내가 제한 매개 변수를 설정하면, 내 코드는 내가 restfb를 사용하는 모든 메시지를 게시 얻으려고
는 Parameter.with ("제한", 100)
, 그것은 100 개의 메시지를 제공하지만 난 후 메시지를 가져 오는에 제한하고 싶지 않아요. 그래서,
제한 매개 변수를 설정하지 않고 검색 기준과 일치하는 게시물 메시지의 전체 목록을 얻을 수 있습니까?
FB에서 무제한 결과를 가져올 방법이 없습니다. 기본 제한은 25로 설정되어 있습니다. 알고 계신대로 limit
매개 변수를 사용하여 변경할 수 있습니다. 웹 검색 제한을위한 상위 경계를 찾지 못했습니다. 어쩌면, 당신은 매우 높은 금액으로 설정할 수 있습니다.
아마도 루프를 사용해 볼 수 있습니다. FB는 매번 1000을 넘을 수 없으므로 루프를 사용하여 전체 피드를 가져올 수 있습니다. 다음은이 같은 오프셋 사용 : 저는 최근 시험으로
변수와 그 값이 100020003000 될 것입니다 될 것입니다 오프셋Parameter.with("limit", 1000));
Parameter.with("offset", offset));
...
, 당신은 아무것도 지정할 필요가 없습니다. 연결 클래스는이 방법의 Iterable을 구현
의 다음 페이지를 가져옵니다하지 않을 경우
Connection<Post> messages = publicFbClient.fetchConnection("search",
Post.class,
Parameter.with("q", "Watermelon"),
Parameter.with("since", fromDate),
Parameter.with("until", toDate),
Parameter.with("type", "post"));
for (List<Post> feedConnectionPage : messages) {
for (Post post : myFeedConnectionPage) {
// do stuff with post
}
}
반환 할 수있는 어떤 종류의 메소드를 원한다면 당신은 수천 개의 결과를 반환 할 수 있고 그것들을 통한 크롤링은 몇 초 (수분에서 수분 또는 수 시간이 걸릴 수도 있습니다) 결과 객체 배열이 실제로 커질 수 있기 때문에 매우 신중할 것입니다. 더 나은 아이디어는 비동기 호출을 사용하고 메소드의 결과를 주기적으로 체크 아웃하는 것입니다.
"이후"매개 변수가 무시 된 것처럼 보이지만. 게시물은 최신에서 오래된 것으로 가져오고 페이징을 할 때이 매개 변수를 어떻게 든 남겨 두었다고 생각합니다.
희망 나는 당신을 위해 더 분명하게 :)
우리는 포스트 Iterator 객체가 있습니다. 그래서 우리는 이런 식으로 작업을 수행 할 수 있습니다
Connection<Post> messages = publicFbClient.fetchConnection(...) ;
someMethodUsingPage(messages);
while (messages.hasNext()) {
messages = facebookClient.fetchConnectionPage(messages.getNextPageUrl(), Post.class);
someMethodUsingPage(messages);
}
다음 각 메시지에서 우리는 향후 25 메시지를해야합니다.
모든 검색어에 대해 기본 설정 값 25가 반환됩니다. 한계를 넘어서는 한계 매개 변수를 사용해야합니다. –
FB는 제한된 결과 크기로 기계에 많은 부하를 발생시키지 않으므로 '제한'을 처리해야한다고 생각합니다. – micfra
예, 방법이 있습니다 ... – beinghuman