# ptgdp: Play the Goddamned Playlist A tool to play a plaintext music playlist composed entirely of youtube-dl search queries or URLs ## Installation Put `ptgdp` somewhere in `$PATH` and install youtube-dl. Additionally, you need some implementation of `pgrep`, which is probably already on your system, and Bash. ## Quickstart Make a file containing some download queries. For example: myplaylist ``` nine inch nails play the goddamned part alice in chains love hate love megadeth high speed dirt tool parabola ``` Then invoke `ptgdp`: ptgdp myplaylist And that's basically it. See `ptgdp -h` and the sections below for more info. ## Configuration Move `ptgdp.conf` from this repo to `~/.config/ptgdp.conf` and change the values as you see fit. Alternatively, invoke `ptgdp` with `-c` and point it at your config file. ## Return Codes | Code | Meaning | | --: | :-- | | `1` | Syntax error | | `50` | Misconfigured backend | | `51` | Backend could not be set up (i.e. mpd failed to update) | | `60` | Playlist does not exist | | `61` | Playlist is unreadable | ## Tips * `ytsearch:` is only the *default* search. If a line is prefixed with another search type (ex. `scsearch:dagoth ur fanfiction`), youtube-dl will respect it. * You can use URLs if you want to. * You can comment a playlist file by prefixing the line with `#`. ## FAQ **Q**: Why? **A**: I wanted to kick my dependence on Spotify while still having access to easy music. At first I just used YouTube, but after fighting their horrid suggestions system, I decided it probably wouldn't be too hard to use `youtube-dl` to wrap it. Thus this tool was born. Simple plaintext playlist files and a rofi script to queue them up with only a couple keystrokes seemed like a convenient enough implementation to me. **Q**: Holy fuck ow my disk space **A**: Songs are stored in ~/Music/PTGDP Songs. Clean it up if it gets too big; they'll be redownloaded as needed. Songs are cached both for offline usage and because YouTube searches aren't exactly the most consistent things over time. On the bright side, though, youtube-dl downloads most songs in Opus, which has insane quality per byte. **Q**: Why is your tool downloading the shitty "w/ lyrics" versions of songs with ass quality? **A**: Because YouTube searches suck. That being said, they will also parse out descriptions, so you can stick the copyright text or something in your search query. Alternatively, find a good video and just stick the URL in your playlist. **Q**: Why isn't my music player supported? **A**: Open a bug report/pull request. Alternatively, use `ptgdp -m` and some glue. ## Bugs * Because I haven't quite figured out how to into mpd sockets, this tool assumes that `$XDG_MUSIC_DIR` (`~/Music`) is the root of your library when using the mpd backend.