yage
fec8c5e560
introduce --verbosity flag rather than mixed logging settings; correct color misnaming to ANSI convention; added sanity-check; simplified hello-world; created FZF_USER_INPUT to replace the confusing FZF_HEAD and FZF_TAIL swap INFO for DEBUG v3-to-v4 upgrade docs bring some much-needed tender love and care to the scwrypts runner improved i/o handling on the run executable means this is no longer relevant FINALLY fix the weird cases for zsh/read builtin (particularly around reading one character from tty/pipe/file); also gave a --force-user-input flag in case you want to require user input on a yn prompt update ZLE plugin so it no more make errors FZF_(HEAD|TAIL) refactor to FZF_USER_INPUT plugins/kubectl migration from v3 to v4 plugins/ci migration from v3 to v4 refactor py/lib into python-scwrypts subproject verbosity is stupid lets call it log-level fix bug with virtualenv loading mergedeep to slow so I made my options dict shallow hokay first iteration of python-dudes is ready circleci configuration for python builds npm package for scwrypts 3.9.1 initial build/test steps for nodejs go go ok ok fix output ok ok finalize publish steps
47 lines
1.4 KiB
Bash
Executable File
47 lines
1.4 KiB
Bash
Executable File
#!/bin/zsh
|
|
use media/youtube
|
|
#####################################################################
|
|
|
|
MAIN() {
|
|
local URLS=($@)
|
|
|
|
[[ ${#URLS[@]} -eq 0 ]] && URLS=($(echo '' | FZF_USER_INPUT 'enter URL'))
|
|
[[ ${#URLS[@]} -eq 0 ]] && ABORT
|
|
|
|
local FILENAME=$(YT__GET_FILENAME $URLS)
|
|
[ ! $FILENAME ] && ERROR "unable to download '$URLS'"
|
|
|
|
INPUT_FILE="$YT__OUTPUT_DIR/$FILENAME"
|
|
|
|
[ ! -f "$INPUT_FILE" ] && {
|
|
SCWRYPTS__RUN youtube/download -- $URLS || return 1
|
|
}
|
|
|
|
SUCCESS "video download '$FILENAME' detected!"
|
|
|
|
LENGTH=$(GET_VIDEO_LENGTH "$INPUT_FILE")
|
|
[ ! $LENGTH ] && { ERROR "unable to determine video length for '$INPUT_FILE'"; return 2; }
|
|
START_TIME=$(echo 0 | FZF_USER_INPUT "enter start time (0 ≤ t < $LENGTH)")
|
|
[ ! $START_TIME ] && ABORT
|
|
END_TIME=$(echo $LENGTH | FZF_USER_INPUT "enter end time ($START_TIME > t ≥ $LENGTH)")
|
|
[ ! $END_TIME ] && ABORT
|
|
|
|
STATUS
|
|
STATUS "video : $FILENAME"
|
|
STATUS "start time : $START_TIME"
|
|
STATUS "end time : $END_TIME"
|
|
STATUS
|
|
OUTPUT_FILE=$(echo '' \
|
|
| FZF_USER_INPUT 'what should I call this clip? (.mp3)' \
|
|
| sed 's/\.mp3$//' \
|
|
)
|
|
[ ! $OUTPUT_FILE ] && ABORT
|
|
OUTPUT_FILE="$YT__OUTPUT_DIR/$OUTPUT_FILE.mp3"
|
|
|
|
ffmpeg -i "$INPUT_FILE" -q:a 0 -map a \
|
|
-ss $START_TIME -t $(($END_TIME - $START_TIME))\
|
|
"$OUTPUT_FILE" \
|
|
&& SUCCESS "created clip '$OUTPUT_FILE'" \
|
|
|| { ERROR "error creating clip '$(basename $OUTPUT_FILE)' (see above)"; return 3; }
|
|
}
|