{
    "componentChunkName": "component---src-templates-post-jsx",
    "path": "/blog/youtube-to-mp3",
    "result": {"data":{"post":{"id":"2975c3e5-31f0-5800-8ef6-209e87b78e04","body":"var _excluded = [\"components\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n/* @jsxRuntime classic */\n/* @jsx mdx */\n\nvar _frontmatter = {\n  \"priority\": 0.8,\n  \"title\": \"YouTube to MP3\",\n  \"slug\": \"/youtube-to-mp3\",\n  \"description\": \"A program that simplifies the process of downloading and converting Youtube videos to MP3 files from the command-line\",\n  \"date\": \"2018-05-27T00:00:00.000Z\",\n  \"category\": \"Python\",\n  \"image\": \"./img/yt2mp3.jpg\",\n  \"repo\": \"yt2mp3\",\n  \"tags\": [\"python\", \"terminal\", \"projects\"],\n  \"published\": true\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n    props = _objectWithoutProperties(_ref, _excluded);\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"undefined\", null, mdx(\"p\", {\n    \"className\": \"badges flex mb-10\"\n  }, \"\\n  \", mdx(\"a\", {\n    parentName: \"p\",\n    \"className\": \"pr-3\",\n    \"href\": \"https://travis-ci.org/tterb/yt2mp3\"\n  }, mdx(\"img\", {\n    parentName: \"a\",\n    \"src\": \"https://travis-ci.org/tterb/yt2mp3.svg?branch=master\",\n    \"alt\": \"Build Status\"\n  })), \"\\n  \", mdx(\"a\", {\n    parentName: \"p\",\n    \"className\": \"pr-3\",\n    \"href\": \"https://pypi.python.org/pypi/yt2mp3/\"\n  }, mdx(\"img\", {\n    parentName: \"a\",\n    \"src\": \"https://img.shields.io/pypi/v/yt2mp3.svg\",\n    \"alt\": \"PyPi Version\"\n  })), \"\\n  \", mdx(\"a\", {\n    parentName: \"p\",\n    \"className\": \"pr-3\",\n    \"href\": \"https://codecov.io/gh/tterb/yt2mp3\"\n  }, mdx(\"img\", {\n    parentName: \"a\",\n    \"src\": \"https://codecov.io/gh/tterb/yt2mp3/branch/master/graph/badge.svg\",\n    \"alt\": \"CodeCov\"\n  })), \"\\n  \", mdx(\"a\", {\n    parentName: \"p\",\n    \"className\": \"pr-3\",\n    \"href\": \"https://yt2mp3.readthedocs.io/en/latest/?badge=latest\"\n  }, mdx(\"img\", {\n    parentName: \"a\",\n    \"src\": \"https://readthedocs.org/projects/yt2mp3/badge/?version=latest\",\n    \"alt\": \"Documentation Status\"\n  })), \"\\n  \", mdx(\"a\", {\n    parentName: \"p\",\n    \"className\": \"pr-3\",\n    \"href\": \"https://pypi.python.org/pypi/yt2mp3/\"\n  }, mdx(\"img\", {\n    parentName: \"a\",\n    \"src\": \"https://pypip.in/py_versions/yt2mp3/badge.svg\",\n    \"alt\": \"PyPI Python Versions\"\n  })), \"\\n  \", mdx(\"a\", {\n    parentName: \"p\",\n    \"className\": \"pr-3\",\n    \"href\": \"https://opensource.org/licenses/MIT\"\n  }, mdx(\"img\", {\n    parentName: \"a\",\n    \"src\": \"https://img.shields.io/badge/License-MIT-yellow.svg\",\n    \"alt\": \"License\"\n  })), \"\\n\"), \"  \"), mdx(\"p\", {\n    \"className\": \"flex items-center\"\n  }, \"\\n  \", mdx(\"img\", {\n    parentName: \"p\",\n    \"src\": \"https://cdn.rawgit.com/tterb/yt2mp3/d96b8c70/docs/images/terminal.svg\",\n    \"alt\": \"preview\",\n    \"width\": 750\n  }), \"\\n\"), mdx(\"h2\", null, \"Description\"), mdx(\"p\", null, \"This program simplifies the process of searching, downloading and converting Youtube videos to MP3 files from the command-line. All you need is the video URL or the name of the artist/track you\\u2019re looking for.\", mdx(\"br\", {\n    parentName: \"p\"\n  }), \"\\n\", \"The program will attempt to retrieve data for a song matching the provided input by querying the iTunes API and use the data to find a corresponding YouTube video, if a URL is not provided. The video will then be downloaded, converted, and the gathered data will be used to populate the metadata of the MP3.\", mdx(\"br\", {\n    parentName: \"p\"\n  }), \"\\n\", \"Once finished, the resulting MP3 file will be saved to your \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"Downloads\"), \" directory, with the following file-structure \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"Music/{artist}/{track}.mp3\"), \".  \"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, mdx(\"em\", {\n    parentName: \"strong\"\n  }, \"Note:\")), \" If a URL is provided and no match is found for the song data, the program will prompt the user for the track/artist and the YouTube thumbnail will be used as the album artwork.  \"), mdx(\"h2\", null, \"Getting Started\"), mdx(\"h3\", null, \"Prerequisites\"), mdx(\"p\", null, \"The program only requires that you have Python 3.4+ and \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://www.ffmpeg.org/\",\n    \"target\": \"_blank\",\n    \"rel\": \"nofollow noopener noreferrer\"\n  }, \"ffmpeg\"), \" or \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://www.libav.org/\",\n    \"target\": \"_blank\",\n    \"rel\": \"nofollow noopener noreferrer\"\n  }, \"libav\"), \" installed. For more information, check out the \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://yt2mp3.readthedocs.io/en/latest/additional_setup.html\",\n    \"target\": \"_blank\",\n    \"rel\": \"nofollow noopener noreferrer\"\n  }, \"additional setup\"), \".\"), mdx(\"h3\", null, \"Install\"), mdx(\"p\", null, \"You can install the program with the following command:  \"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-bash\"\n  }, \"$ pip install yt2mp3\\n\")), mdx(\"h2\", null, \"Usage\"), mdx(\"p\", null, \"The program can be executed via the as follows:  \"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-bash\"\n  }, \"$ yt2mp3 [-options]\\n\")), mdx(\"h4\", null, \"Options:\"), mdx(\"br\", null), mdx(\"table\", null, mdx(\"thead\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"thead\"\n  }, mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, \"Flag\"), mdx(\"th\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }))), mdx(\"tbody\", {\n    parentName: \"table\"\n  }, mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"-t, --track\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, \"Specify the track name query\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"-a, --artist\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, \"Specify the artist name query\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"-u, --url\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, \"Specify a Youtube URL or ID\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"-p, --playlist\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, \"Specify a Youtube playlist URL or ID\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"-o, --overwrite\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, \"Overwrite the file if one exists in output directory\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"-r, --resolution\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, \"Specify the resolution for the cover-art\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"-q, --quiet\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, \"Suppress program command-line output\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"-v, --verbose\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, \"Display a command-line progress bar\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"--version\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, \"Show the version number and exit\")), mdx(\"tr\", {\n    parentName: \"tbody\"\n  }, mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, mdx(\"inlineCode\", {\n    parentName: \"td\"\n  }, \"-h, --help\")), mdx(\"td\", {\n    parentName: \"tr\",\n    \"align\": \"left\"\n  }, \"Display information on usage and functionality\")))), mdx(\"br\", null), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, mdx(\"em\", {\n    parentName: \"strong\"\n  }, \"Note:\")), \" Displaying the progress bar with the \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"-v, --verbose\"), \" flag currently has a significant impact on download performance, due to \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://github.com/nficano/pytube/issues/180\",\n    \"target\": \"_blank\",\n    \"rel\": \"nofollow noopener noreferrer\"\n  }, \"#180\"), \".  \"), mdx(\"hr\", null), mdx(\"h2\", null, \"Documentation\"), mdx(\"p\", null, \"Further documentation is available on \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://yt2mp3.readthedocs.io/en/latest/\",\n    \"target\": \"_blank\",\n    \"rel\": \"nofollow noopener noreferrer\"\n  }, \"Read The Docs\")), mdx(\"h2\", null, \"Development\"), mdx(\"p\", null, \"If you\\u2019d like to contribute to the project, you can download and install the program with the following commands:  \"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-bash\"\n  }, \"# Clone the repository / most up to date is on saftyBranch\\n$ git clone https://github.com/tterb/yt2mp3\\n\\n# Navigate to the directory\\n$ cd yt2mp3\\n\\n# Install program dependencies\\n$ pip install -r requirements.txt\\n\")));\n}\n;\nMDXContent.isMDXComponent = true;","fields":{"slug":"/youtube-to-mp3"},"frontmatter":{"title":"YouTube to MP3","description":"A program that simplifies the process of downloading and converting Youtube videos to MP3 files from the command-line","date":"27 May 2018","category":"Python","image":{"childImageSharp":{"gatsbyImageData":{"layout":"fullWidth","backgroundColor":"#d8d8d8","images":{"fallback":{"src":"/static/048f74e768ffe733825b8f449de839a2/91008/yt2mp3.jpg","srcSet":"/static/048f74e768ffe733825b8f449de839a2/9b503/yt2mp3.jpg 750w,\n/static/048f74e768ffe733825b8f449de839a2/321ef/yt2mp3.jpg 1080w,\n/static/048f74e768ffe733825b8f449de839a2/84dcd/yt2mp3.jpg 1366w,\n/static/048f74e768ffe733825b8f449de839a2/91008/yt2mp3.jpg 1920w","sizes":"100vw"},"sources":[{"srcSet":"/static/048f74e768ffe733825b8f449de839a2/5f850/yt2mp3.webp 750w,\n/static/048f74e768ffe733825b8f449de839a2/2c010/yt2mp3.webp 1080w,\n/static/048f74e768ffe733825b8f449de839a2/5126b/yt2mp3.webp 1366w,\n/static/048f74e768ffe733825b8f449de839a2/132b9/yt2mp3.webp 1920w","type":"image/webp","sizes":"100vw"}]},"width":1,"height":0.5453125}}}}},"avatar":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/b24b72d8f366da7af02542a735d82fa0/f9edd/me.jpg","srcSet":"/static/b24b72d8f366da7af02542a735d82fa0/93848/me.jpg 60w,\n/static/b24b72d8f366da7af02542a735d82fa0/73bb6/me.jpg 120w,\n/static/b24b72d8f366da7af02542a735d82fa0/f9edd/me.jpg 240w,\n/static/b24b72d8f366da7af02542a735d82fa0/97a19/me.jpg 480w","sizes":"(min-width: 240px) 240px, 100vw"},"sources":[{"srcSet":"/static/b24b72d8f366da7af02542a735d82fa0/927d1/me.webp 60w,\n/static/b24b72d8f366da7af02542a735d82fa0/507b0/me.webp 120w,\n/static/b24b72d8f366da7af02542a735d82fa0/8d565/me.webp 240w,\n/static/b24b72d8f366da7af02542a735d82fa0/21b1a/me.webp 480w","type":"image/webp","sizes":"(min-width: 240px) 240px, 100vw"}]},"width":240,"height":240}}}},"pageContext":{"slug":"/youtube-to-mp3"}},
    "staticQueryHashes": []}