code: def add_fast_resume(meta, datapath):
      
      # Get list of files
      files = meta["info"].get("files", None)
      single = files is None
      if single:
          if os.path.isdir(datapath):
              datapath = os.path.join(datapath, meta["info"]["name"])
          files = [Bunch(
              path=[os.path.abspath(datapath)],
              length=meta["info"]["length"],
          )]
  
      # Prepare resume data
      resume = meta.setdefault("libtorrent_resume", {})
      resume["bitfield"] = len(meta["info"]["pieces"]) // 20
      resume["files"] = []
      piece_length = meta["info"]["piece length"]
      offset = 0
  
      for fileinfo in files:
          # Get the path into the filesystem
          filepath = os.sep.join(fileinfo["path"])
          if not single:
              filepath = os.path.join(datapath, filepath.strip(os.sep))
  
          # Check file size
          if os.path.getsize(filepath) != fileinfo["length"]:
              raise OSError(errno.EINVAL, "File size mismatch for %r [is %d, expected %d]" % (
                  filepath, os.path.getsize(filepath), fileinfo["length"],
              ))
  
          # Add resume data for this file
          resume["files"].append(dict(
              priority=1,
              mtime=int(os.path.getmtime(filepath)),
              completed=(offset+fileinfo["length"]+piece_length-1) // piece_length
                       - offset // piece_length,
          ))
          offset += fileinfo["length"]
  
      return meta
docs: Add fast resume data to a metafile dict.