docs: def do_exec(config, config_dir):
      """
      CLI action "process the feed from specified configuration".
      """
      if not os.path.exists(config_dir):
          print "Configuration '{}' does not exist.".format(config)
          exit(1)
  
      print "The parser for '{}' config has been initialized.".format(config)
  
      config_file = os.path.join(config_dir, 'config')
      with open(config_file, 'r') as f:
          config_data = json.load(f)
  
      url = config_data['url']
      torrent_dir = config_data['torrent_dir']
      ensure_dir(torrent_dir)
  
      filters_file = os.path.join(config_dir, 'filter')
      filters = read_file(filters_file)
  
      blacklist_file = os.path.join(config_dir, 'blacklist')
      blacklist = read_file(blacklist_file)
  
      print "Fetching URL {}".format(url)
      r = requests.get(url)
      if r.status_code != 200:
          print "Failed to fetch RSS feed."
  
      xml = r.text.encode('utf-8')
      parser = etree.XMLParser(ns_clean=True, recover=True, encoding='utf-8')
      tree  = etree.fromstring(xml, parser)
      items = tree.xpath('//item')
      downloaded = 0
      for e in items:
          e_title = e.xpath('title')[0].text
          e_link = e.xpath('link')[0].text
          if not drop_it(e_title, filters, blacklist):
              downloaded += 1
              target_file = os.path.join(torrent_dir, e_title + '.torrent')
              r = requests.get(e_link, stream=True)
              with open(target_file, 'wb') as f:
                  for chunk in r.iter_content(4096):
                      f.write(chunk)
  
      print "Items found: {}, items downloaded: {}."\
          .format(len(items), downloaded)