mirror of
https://github.com/captn3m0/youtube-cue.git
synced 2024-09-07 22:46:26 +00:00
.github | ||
src | ||
test | ||
.editorconfig | ||
.gitignore | ||
.npmignore | ||
CHANGELOG.md | ||
index.js | ||
package-lock.json | ||
package.json | ||
README.md |
youtube-cue
![Total Dependencies](https://img.shields.io/badge/Total%20Dependencies-4-orange)
Generate CUE sheet from timestamps in youtube video description.
What is this for?
- If you have DJ-mix or album on YouTube that you'd like to generate a CUE sheet for.
- The video has timestamps in the video description.
- The video is publicly available on Youtube.
youtube-cue
will read the video description, get the timestamps and generate a CUE sheet accordingly. It will also work if track durations are used instead of timestamps.
Anti-features
- It does not download tracks from YouTube
- It does not split your tracks
- It does not tag your tracks.
For all of the above, there are better tools available, such as youtube-dl, m4acut, mp3splt, cuetools, beets and many more. youtube-cue tries to do one thing well.
Installation
npm install -g youtube-cue
Upgrade
npm update -g youtube-cue
Usage
You need to pass 2 parameters, a Youtube URL and a output CUE filename. YouTube short URLs (youtu.be
) are accepted. You can additionally pass a audio-file
argument which is used for the FILE
specified in the CUE file.
youtube-cue [--audio-file audio.m4a] <youtube_url> [output_file]
Options
--help, Show help
--audio-file, Input Audio File (optional) that is written to the CUE sheet
The default audio file is set to %VIDEOTITLE.m4a
The default output file is set to %VIDEOTITLE.cue
where $VIDEOTITLE is the title of the YouTube video.
Generally the parser detects whether numbers are positional timestamps or track durations.
To enforce a desired interpretation you can use these flags:
--timestamps Parse as positional timestamps (relative to the start of the playlist)
--durations Parse as track durations
The above 2 are only needed to force behaviour in
very specific edge cases, they should not be required for most files.
Examples
$ youtube-cue --audio-file audio.m4a "https://www.youtube.com/watch?v=WzpmVxvoBoc" "The Groovy Nobody - Solarium.cue"
"The Groovy Nobody - Solarium.cue" saved
Personal Usage
I have this in my .bashrc
to download, split, tag, and import albums using beet:
function ytdl.album() {
cd $(mktemp -d)
youtube-dl -f "bestaudio[ext=m4a]" --output "audio.m4a" "$1"
youtube-cue --audio-file "audio.m4a" "$1" tracks.cue
m4acut -C tracks.cue "audio.m4a" && \
trash audio.m4a && \
beet import -map .
}
HACKING
- If it does not work on a specific video, please attach the complete output
- Pull Requests are welcome that add support for a better parser without breaking the existing tests
- Please add tests for any new functionality
License
Licensed under the MIT License