code: def _make_meta(self, tracker_url, root_name, private, progress):
          
          # Calculate piece size
          if self._fifo:
              # TODO we need to add a (command line) param, probably for total data size
              # for now, always 1MB
              piece_size_exp = 20
          else:
              total_size = self._calc_size()
              if total_size:
                  piece_size_exp = int(math.log(total_size) / math.log(2)) - 9
              else:
                  piece_size_exp = 0
  
          piece_size_exp = min(max(15, piece_size_exp), 24)
          piece_size = 2 ** piece_size_exp
  
          # Build info hash
          info, totalhashed = self._make_info(piece_size, progress, self.walk() if self._fifo else sorted(self.walk()))
  
          # Enforce unique hash per tracker
          info["x_cross_seed"] = hashlib.md5(tracker_url).hexdigest()
  
          # Set private flag
          if private:
              info["private"] = 1
  
          # Freely chosen root name (default is basename of the data path)
          if root_name:
              info["name"] = root_name
  
          # Torrent metadata
          meta = {
              "info": info,
              "announce": tracker_url.strip(),
          }
  
          #XXX meta["encoding"] = "UTF-8"
  
          # Return validated meta dict
          return check_meta(meta), totalhashed
docs: Create torrent dict.