Esempio n. 1
0
def get_feed_from_url(url):
    """
    Download a rss 2.0 feed and returns a class which represents that feed.
    :param url: URL of the feed to download.
    :return: Feed
    """
    rss = get_rss_feed_parser(url)
    if not is_rss_feed_valid(rss):
        raise LookupError("Sorry! We cannot parse the rss feed. Missing required element(s).")
    feed = Feed()
    feed.title = rss["channel"]["title"]
    feed.link = rss["channel"]["link"]
    feed.description = rss["channel"]["description"]
    feed.image = FeedItemImage(
        url=rss["channel"]["image"]["url"],
        title=rss["channel"]["image"]["title"],
        link=rss["channel"]["image"]["link"],
        width=rss["channel"]["image"]["width"],
        height=rss["channel"]["image"]["height"],
    )
    feed.items = []
    for item in rss["items"]:
        feed.items.append(
            FeedItem(
                title=item["title"],
                link=item["link"],
                guid=item["guid"],
                pub_date=datetime.fromtimestamp(mktime(item["published_parsed"])),
            )
        )
    return feed