commit 347b481bdb3a9600cfcba4d0287786ef105df0e5 Author: Isaac Shoebottom Date: Tue Feb 7 13:03:10 2023 -0400 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1f82078 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +# Ignore everything +* + +# Except these files +!*.ps1 +!*.md +!.gitignore +!LICENSE \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..8b21d1d --- /dev/null +++ b/LICENSE @@ -0,0 +1,24 @@ +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..19d31ec --- /dev/null +++ b/README.md @@ -0,0 +1,7 @@ +YouTube Music Library Downloader +=== +Does what it says on the tin. + +# Usage + +`.\ytmlibdl.ps1 [playlist url]` \ No newline at end of file diff --git a/ytmlibdl.ps1 b/ytmlibdl.ps1 new file mode 100644 index 0000000..c7221cb --- /dev/null +++ b/ytmlibdl.ps1 @@ -0,0 +1,36 @@ +# Save first arg and reparse to contain quotes + +if (!$args) { + Write-Host "Input a playlist URL" + Exit 1 +} + +$videoURL = $args[0] +$videoURL = "$videoURL" +# Get status code to check for valid url +if ($videoURL.StartsWith("https://music.youtube.com/playlist")) { + $statusCode = Invoke-WebRequest $videoURL | % {$_.StatusCode} +} else { + Write-Host "Input a valid playlist URL" + Exit 1 +} + + + + +# Documentation for output formats: https://github.com/yt-dlp/yt-dlp#output-template +if ($statusCode -eq 200) { + yt-dlp ` + -f ba ` + -x ` + --audio-quality 0 ` + --audio-format mp3 ` + --embed-metadata ` + -o "%(artist)s/%(album)s/%(playlist_index)s - %(track)s.%(ext)s" ` + $videoURL +} else { + Write-Host "Input a valid playlist URL" + Exit 1 +} + +# To run, provide any youtube music url. For example: https://music.youtube.com/playlist?list=OLAK5uy_lYdwxvfKoDIiUba2_Dh1Pc-zOLLANCwKY \ No newline at end of file