new_contents: import logging
  from datetime import datetime, timedelta
  from core.observables import Hostname
  from core.feed import Feed
  from core.errors import ObservableValidationError
  from core.config.config import yeti_config
  
  class MalwareMustDieCncs(Feed):
  
      default_values = {
          "frequency": timedelta(hours=24),
          "name": "MalwareMustDieCncs",
          "source" : "https://malwared.malwaremustdie.org/rss.php",
          "description": "List of cncs",
      }
  
      def update(self):
          since_last_run = datetime.now() - self.frequency
          for item in self.update_xml('item', ["title", "description"]):
              if datetime.strptime(item["description"], "%d/%b/%Y") < since_last_run:
                  break
              self.analyze(item["title"])
  
      def analyze(self, cnc):
  
          try:
              cnc_data = Hostname.get_or_create(value=cnc)
              if cnc_data.new or self.name not in cnc_data.sources:
                  cnc_data.add_context({"source": self.name})
                  cnc_data.add_source(self.name)
          except ObservableValidationError as e:
              logging.error(e)
  
subject: Create malwaremustdiecncs.py