linklist.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import feedparser
  2. from frontpage import FrontPage
  3. from functions import sanitizeUrl
  4. import newspaper
  5. class LinkList():
  6. def __init__(self, url, selector=None, rss=False):
  7. self.links = []
  8. if rss:
  9. feed = feedparser.parse(url)
  10. if feed["bozo"]:
  11. print(url)
  12. print("RSS ERROR. PANIC")
  13. # print(feed["bozo"]) FIXME: If bozo==1 => error
  14. self.links = [i["link"] for i in feed["items"] if "link" in i ]
  15. else:
  16. if selector is None or selector == "":
  17. # s=newspaper.build(url,language="en",memoize_articles=False)
  18. # #memoize puede salvarme la vida
  19. s = newspaper.Source(
  20. url, memoize_articles=False, request_timeout=10)
  21. s.download()
  22. s.parse()
  23. s.set_categories()
  24. s.download_categories()
  25. s.parse_categories()
  26. s.generate_articles()
  27. self.links = [a.url for a in s.articles]
  28. else:
  29. f = FrontPage(url, selector)
  30. self.links = f.links
  31. self.links = self.purgeLinks(self.links)
  32. self.links = list(set(self.links)) # avoid dupes
  33. def purgeLinks(self, l):
  34. return [sanitizeUrl(link) for link in l if not "presslist" in link.lower() and not "videolist" in link.lower()]