ctftime_client.py 910 B

123456789101112131415161718192021222324252627
  1. import feedparser
  2. class CTFTimeClient(object):
  3. feed_url = 'https://ctftime.org/event/list/upcoming/rss/'
  4. def fetch_data():
  5. """Function to update the CTF db with new announced CTFs"""
  6. feed = feedparser.parse(CTFTimeClient.feed_url)
  7. events = []
  8. for post in feed.entries:
  9. event = {}
  10. event["title"] = post.title
  11. event["link"] = post.id
  12. event["url"] = post.url
  13. event["weight"] = post.weight
  14. event["format_text"] = post.format_text
  15. event["format"] = int(post.format)
  16. event["onsite"] = not bool(post.onsite)
  17. event["restrictions"] = post.restrictions
  18. event["start_date"] = post.start_date
  19. event["finish_date"] = post.finish_date
  20. event["id"] = post.ctftime_url.split('/')[2]
  21. events.append(event)
  22. return events