2015-04-10 2 views
1

Я использую метод fetch_and_parse Feedjira для синтаксического анализа RSS-каналов в моем приложении, но некоторые RSS-каналы, которые я им кормит, - это URL-адреса фида, которые перенаправляются на другой URL-адрес фида, и Feedjira не выполняет эти перенаправления, и мой fetch_and_parse терпит неудачу. Есть ли способ заставить Feedjira следовать переадресации RSS?Как получить Feedjira для переадресации?

ответ

1

Я столкнулся с этой же проблемой, и решить ее вручную выборки каналов (с помощью Фарадея) и вызова FeedJira::Feed.parse с результирующим XML:

def fetch(host, url) 
    conn = Faraday.new(:url => host) do |faraday| 
    faraday.use FaradayMiddleware::FollowRedirects, limit: 3 
    end 

    response = conn.get url 
    return response.body 
end 

xml = fetch("http://www.npr.org", "/templates/rss/podcast.php?id=510298") 
podcast = Feedjira::Feed.parse(xml) 

Вы можете также обезьяна-патч метод Feedjira в connection сделать то же самое вещь, хотя я бы не рекомендовал:

module Feedjira 
    class Feed 
    def self.connection(url) 
     Faraday.new(url: url) do |conn| 
     conn.use FaradayMiddleware::FollowRedirects, limit: 3 
     end 
    end 
    end 
end 

podcast = Feedjira::Feed.fetch_and_parse("http://www.npr.org/templates/rss/podcast.php?id=510298") 
+0

Вот как я в конечном итоге решил эту проблему давным-давно. Спасибо за ответ! Я забыл обновить этот вопрос. – tommybond