# Buggy code
def run(self, info):
    metadata = {}
    if info.get("title") is not None:
        metadata["title"] = info["title"]
    if info.get("upload_date") is not None:
        metadata["date"] = info["upload_date"]
    if info.get("artist") is not None:
        metadata["artist"] = info["artist"]
    elif info.get("uploader") is not None:
        metadata["artist"] = info["uploader"]
    elif info.get("uploader_id") is not None:
        metadata["artist"] = info["uploader_id"]
    if info.get("description") is not None:
        metadata["description"] = info["description"]
        metadata["comment"] = info["description"]
    if info.get("webpage_url") is not None:
        metadata["purl"] = info["webpage_url"]
    if info.get("album") is not None:
        metadata["album"] = info["album"]

    if not metadata:
        self._downloader.to_screen("[ffmpeg] There isn't any metadata to add")
        return [], info

    filename = info["filepath"]
    temp_filename = prepend_extension(filename, "temp")

    if info["ext"] == "m4a":
        options = ["-vn", "-acodec", "copy"]
    else:
        options = ["-c", "copy"]

    for name, value in metadata.items():
        options.extend(["-metadata", "%s=%s" % (name, value)])

    self._downloader.to_screen("[ffmpeg] Adding metadata to '%s'" % filename)
    self.run_ffmpeg(filename, temp_filename, options)
    os.remove(encodeFilename(filename))
    os.rename(encodeFilename(temp_filename), encodeFilename(filename))
    return [], info


# Traceback (FFmpegPostProcessorError)
[debug] System config: []
[debug] User config: []
[debug] Command-line args: [u'--ignore-config', u'--verbose', u'--download-archive', u'/home/vxbinaca/.ytdlarchive', u'--no-overwrites', u'--call-home', u'--continue', u'--write-info-json', u'--write-description', u'--write-thumbnail', u'--merge-output-format', u'mkv--all-subs', u'--sub-format', u'srt', u'--convert-subs', u'srt', u'--write-sub', u'--add-metadata', u'https://vimeo.com/70668043', u'https://vimeo.com/70666333']
[debug] Encodings: locale UTF-8, fs UTF-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2016.01.27
[debug] Python version 2.7.10 - Linux-4.2.0-25-generic-x86_64-with-Ubuntu-15.10-wily
[debug] exe versions: ffmpeg 2.7.5-0ubuntu0.15.10.1, ffprobe 2.7.5-0ubuntu0.15.10.1, rtmpdump 2.4
[debug] Proxy map: {}
[debug] Public IP address: 76.101.221.232
[vimeo] 70668043: Downloading webpage
[vimeo] 70668043: Extracting information
[vimeo] 70668043: Downloading webpage
[vimeo] 70668043: Downloading JSON metadata
[vimeo] 70668043: Downloading m3u8 information
[info] Video description is already present
[info] Video description metadata is already present
[vimeo] 70668043: Thumbnail is already present
[debug] Invoking downloader on u'https://10-lvl3-hls.vimeocdn.com/1453990861-28223b02a7d6053983227f4b64333f85d0240957/01/4133/2/70668043/178317076.mp4.m3u8'
[download] Ask Ash No. 1-70668043.mp4 has already been downloaded
[download] 100% of 9.83MiB
[ffmpeg] Adding metadata to 'Ask Ash No. 1-70668043.mp4'
[debug] ffmpeg command line: ffmpeg -y -i 'file:Ask Ash No. 1-70668043.mp4' -c copy -metadata 'comment=More | junnnktank.com/thenakedissue/faq
f. Ash twitter.com/ashvandeesch
This is Ash. She'"'"'s from Holland. She'"'"'s a regular {and fucking awesome} contributor to The Naked Issue. You ask her questions, she makes a video and answers them {while looking pretty damn cute}.
Ask Ash | thenakedissue@junnnktank.com' -metadata 'description=More | junnnktank.com/thenakedissue/faq
f. Ash twitter.com/ashvandeesch
This is Ash. She'"'"'s from Holland. She'"'"'s a regular {and fucking awesome} contributor to The Naked Issue. You ask her questions, she makes a video and answers them {while looking pretty damn cute}.
Ask Ash | thenakedissue@junnnktank.com' -metadata artist=JUNNNKTANK -metadata 'title=Ask Ash No. 1' -metadata date=20130719 -metadata purl=https://vimeo.com/70668043 'file:Ask Ash No. 1-70668043.temp.mp4'
ERROR: Conversion failed!
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/youtube_dl/YoutubeDL.py", line 1737, in post_process
files_to_delete, info = pp.run(info)
File "/usr/local/lib/python2.7/dist-packages/youtube_dl/postprocessor/ffmpeg.py", line 395, in run
self.run_ffmpeg(filename, temp_filename, options)
File "/usr/local/lib/python2.7/dist-packages/youtube_dl/postprocessor/ffmpeg.py", line 159, in run_ffmpeg
self.run_ffmpeg_multiple_files([path], out_path, opts)
File "/usr/local/lib/python2.7/dist-packages/youtube_dl/postprocessor/ffmpeg.py", line 155, in run_ffmpeg_multiple_files
raise FFmpegPostProcessorError(msg)
FFmpegPostProcessorError

# Fixed code
def run(self, info):
    metadata = {}
    if info.get("title") is not None:
        metadata["title"] = info["title"]
    if info.get("upload_date") is not None:
        metadata["date"] = info["upload_date"]
    if info.get("artist") is not None:
        metadata["artist"] = info["artist"]
    elif info.get("uploader") is not None:
        metadata["artist"] = info["uploader"]
    elif info.get("uploader_id") is not None:
        metadata["artist"] = info["uploader_id"]
    if info.get("description") is not None:
        metadata["description"] = info["description"]
        metadata["comment"] = info["description"]
    if info.get("webpage_url") is not None:
        metadata["purl"] = info["webpage_url"]
    if info.get("album") is not None:
        metadata["album"] = info["album"]

    if not metadata:
        self._downloader.to_screen("[ffmpeg] There isn't any metadata to add")
        return [], info

    filename = info["filepath"]
    temp_filename = prepend_extension(filename, "temp")

    if info["ext"] == "m4a":
        options = ["-vn", "-acodec", "copy"]
    else:
        options = ["-c", "copy"]

    for name, value in metadata.items():
        options.extend(["-metadata", "%s=%s" % (name, value)])

    # https://github.com/rg3/youtube-dl/issues/8350
    if info["protocol"] == "m3u8_native":
        options.extend(["-bsf:a", "aac_adtstoasc"])

    self._downloader.to_screen("[ffmpeg] Adding metadata to '%s'" % filename)
    self.run_ffmpeg(filename, temp_filename, options)
    os.remove(encodeFilename(filename))
    os.rename(encodeFilename(temp_filename), encodeFilename(filename))
    return [], info