### Added
- `--yt-dlp-args <argstring>` to allow passing of yt-dlp args as a string (using yt-dlp CLI format)
### Fixed
- Make `--sync` method work as intended
### Changed
- Use [yt-dlp](https://github.com/yt-dlp/yt-dlp/) to download and process tracks
- Store description in "comment" tag instead of "description" tag for Ogg/FLAC files
- Change default track format string to include track artist and ID
- Drop `termcolor`, `requests`, `tqdm`, `pathvalidate`, `filelock` dependencies
- Switch to `pyproject.toml` instead of `setup.py`
- **Breaking:** Change `--sync` file format to include downloaded filenames
### Removed
- **Breaking:** Remove `--remove`
- **Breaking:** Remove `-n`
- **Breaking:** Drop support for Python 3.7 and 3.8
- **Breaking:** When writing to stdout, files no longer contain metadata
* Add -s <search_term> command line argument
* add final newline
* Format and lint
* Update README
* Update no results test to use random query
---------
Co-authored-by: 7x11x13 <x7x11x13@gmail.com>
* Added '--add-description' option
This new option will add the track description to a txt file (using the same filename as the music file).
Some music players will display this text whilst the track is playing - great for tracklists on DJ mixes and podcasts.
* Added subfolder switch
* Revert: Added subfolder switch
Accidently pushed to my branch by mistake - changes reverted
* Fix lint errors
* Add test for description file
* Fix tests for pull requests
---------
Co-authored-by: 7x11x13 <x7x11x13@gmail.com>
* refactor: don't touch the global logging config
* test: skip m4a test if there's no go+ sub instead of erroring
* Log to stderr
---------
Co-authored-by: 7x11x13 <x7x11x13@gmail.com>
* feat: download to stdout if name is `-` #493
still a wip though, somehow i need to add metadata to these streams oh well...
* refactor: rework reencoding, metadata adding
* chore: ignore .idea
* chore: add dev requirements
* test: suppress encoding warnings
* feat: add reworked ffmpeg progress bar
* perf: use memoryview for streaming responses
* fix: fix large tracks downloading
* refactor: migrate threads to asyncio (wip)
* Revert "refactor: migrate threads to asyncio (wip)"
This reverts commit d6e247ee2f.
* refactor: get rid of the queue
* refactor: inline stderr thread, adjust buf sizes
* perf: don't reencode original wavs/hls streams
* refactor: mark threads as daemonic
* refactor: remove unused imports
* fix: reencode aacs with adts
* refactor(metadata): output a bit more detailed error message
* refactor: properly reencode m4a
* Performance improvements
* Bump version
* Update README
---------
Co-authored-by: 7x11x13 <x7x11x13@gmail.com>