new_contents: from idiokit import threado
  from abusehelper.core import utils, cymru, bot, events
  
  class MalwareDomainListBot(bot.PollingBot):
      def feed_keys(self, asns, **_ignored):
          for asn in set(map(unicode, asns)):
              yield (asn,)
  
      @threado.stream
      def poll(inner, self, asn, url='http://www.malwaredomainlist.com/mdl.php?search=%s&colsearch=ASN&quantity=All'):
          url = url % asn
  
          self.log.info("ASN%s: downloading", asn)
          try:
              info, fileobj = yield inner.sub(utils.fetch_url(url))
          except utils.FetchUrlFailed, fuf:
              self.log.error("ASN%s: downloading failed: %r", asn, fuf)
              return
  
          body = fileobj.read()
          body = body.split('<tr class="tabletitle">')
          if len(body) < 2:
              self.log.error("ASN%s: No data", asn)
              return
  
          head = body[1]
          body = body[2].split('</table')[0].split('<tr')
  
          if len(body) < 2:
              self.log.error("ASN%s: No data", asn)
              return
  
          metas = [x.split('>')[1].split('<')[0].strip()
                   for x in head.split('<td>')[1:]]
          metas = [x for x in metas if x]
  
          for row in body:
              row = row.replace('<wbr>', '')
              row = row.replace('<nobr>', '')
              row = row.replace('</nobr>', '')
  
              data = [x.split('<')[0].strip() for x in row.split('<td>')[1:]]
  
              # Some badly formed stuff
              if not data[0]:
                  continue
  
              new = events.Event()
              for i, key in enumerate(metas):
                  if not data[i] or data[i] == '-':
                      continue
                  val = data[i]
  
                  new.add(key, val)
  
              new.add('feed', 'malwaredomainlist')
  
              yield inner.send(new)
  
  if __name__ == "__main__":
      MalwareDomainListBot.from_command_line().execute()
  
subject: Add another version of malwaredomainlistbot