2

Я пытаюсь получить все соединения (взаимодействия) на странице facebook с определенного периода времени. Я использую жемчужину koala и фильтрую запрос с «since: 1.month.ago.to_i», который, кажется, работает нормально. Однако это дает мне 25 результатов за раз. Если я изменю предел до 446 (максимум, кажется), который работает лучше. Но ... если я использую .next_page, чтобы дать мне следующий набор результатов в пределах заданного временного диапазона, вместо этого он просто дает мне следующий набор результатов, не подчиняясь временному диапазону.Как получить все соединения с определенного периода времени

Например, допустим, что я не увеличиваю лимит, и у меня есть 25 результатов за запрос. Я делаю что-то вроде:

@api.get_connections(@fan_page_id, "feed", {since: 1.month.ago.to_i}) 

давайте предположим, что для этого есть 30 результатов, и первый запрос получает меня 25 (предел по умолчанию). затем, если я это сделать:

@api.get_connections(@fan_page_id, "feed", {since: 1.month.ago.to_i}).next_page 

вместо возвращения 5 последних результатов, она возвращает более 25, 20 из которых не являются «так: 1.month.ago.to_i». У меня есть цикл цикла, проходящий через страницы, но я не знаю, где остановиться, так как он просто возвращает результаты мне независимо от того, сколько я продолжаю звонить .next_page.

  1. есть ли лучший способ сделать это?
  2. Если нет, то какой лучший способ проверить, чтобы сообщение, которое я просматриваю в цикле, все еще находится в пределах диапазона времени, который я хочу, и чтобы вырваться, если нет?

вот мой код:

def perform(fan_page_id, pagination_options = {}) 
    @since_date = pagination_options[:since_date] if pagination_options[:since_date] 
    @limit = pagination_options[:limit] if pagination_options[:limit] 

    @oauth = Koala::Facebook::OAuth.new 
    @api = Koala::Facebook::API.new @oauth.get_app_access_token 

    fb_page = @api.get_object(fan_page_id) 
    @fan_page_id = fb_page["id"] 

    # Collect all the users who liked, commented, or liked *and* commented on a post 
    process_posts(@api.get_connections(@fan_page_id, "feed", {since: @since_date})) do |post| 

     ## do stuff based on each post 

    end 
    end 


    private 
    # Take each post from the specified feed and perform the provided 
    # code on each post in that feed. 
    # 
    # @param [Koala::Facebook::API::GraphCollection] feed An API response containing a page's feed 
    def process_posts(feed, options = {}) 
     raise ArgumentError unless block_given? 

     current_feed = feed 

     begin 

     current_feed.each { |post| yield(post) } 
     current_feed = current_feed.next_page 

     end while current_feed.any? 
    end 

ответ

0
current = @api.get_connections(@fan_page_id, "feed", {since: 1.month.ago.to_i}) 

next = current.next_page 

next = next.next_page 

..... 

Пожалуйста, попробуйте это, я думаю, что они работают.

Смежные вопросы