MCPcopy Index your code
hub / github.com/clips/pattern / Newsfeed

Class Newsfeed

pattern/web/__init__.py:2458–2497  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2456# http://www.feedparser.org/
2457
2458class Newsfeed(SearchEngine):
2459
2460 def __init__(self, license=None, throttle=1.0, language=None):
2461 SearchEngine.__init__(self, license, throttle, language)
2462
2463 def search(self, query, type=NEWS, start=1, count=10, sort=LATEST, size=SMALL, cached=True, **kwargs):
2464 """ Returns a list of results from the given RSS or Atom newsfeed URL.
2465 """
2466 if type != NEWS:
2467 raise SearchEngineTypeError
2468 if not query or start < 1 or count < 1:
2469 return Results(query, query, NEWS)
2470 # 1) Construct request URL.
2471 # 2) Parse RSS/Atom response.
2472 kwargs.setdefault("unicode", True)
2473 kwargs.setdefault("throttle", self.throttle)
2474 tags = kwargs.pop("tags", [])
2475 data = URL(query).download(cached=cached, **kwargs)
2476 data = feedparser.parse(bytestring(data))
2477 results = Results(query, query, NEWS)
2478 results.total = None
2479 for x in data["entries"][:count]:
2480 s = "\n\n".join([v.get("value") for v in x.get("content", [])]) or x.get("summary")
2481 r = Result(url=None)
2482 r.id = self.format(x.get("id"))
2483 r.url = self.format(x.get("link"))
2484 r.title = self.format(x.get("title"))
2485 r.text = self.format(s)
2486 r.date = self.format(x.get("updated"))
2487 r.author = self.format(x.get("author"))
2488 r.language = self.format(x.get("content") and \
2489 x.get("content")[0].get("language") or \
2490 data.get("language"))
2491 for tag in tags:
2492 # Parse custom tags.
2493 # Newsfeed.search(tags=["dc:identifier"]) => Result.dc_identifier.
2494 tag = tag.replace(":", "_")
2495 r[tag] = self.format(x.get(tag))
2496 results.append(r)
2497 return results
2498
2499feeds = {
2500 "Nature": "http://feeds.nature.com/nature/rss/current",

Callers 1

06-feed.pyFile · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…