various updates and configs
This commit is contained in:
@@ -10,6 +10,7 @@ REQUIRED_ENV+=(DESKTOP__SFX_PATH)
|
||||
|
||||
${scwryptsmodule}() {
|
||||
local SCWRYPTS_NOTIFICATION_ENGINES=(echo notify.desktop)
|
||||
local DESCRIPTION='plays a sound effect'
|
||||
|
||||
eval "$(utils.parse.autosetup)"
|
||||
|
||||
@@ -47,6 +48,10 @@ ${scwryptsmodule}.parse.locals() {
|
||||
${scwryptsmodule}.parse.usage() {
|
||||
USAGE__description='
|
||||
play the indicated sound effect by mapped name or filename
|
||||
'
|
||||
|
||||
USAGE__args='
|
||||
\$1 mapped name or filename
|
||||
|
||||
mapped names :
|
||||
backlight notify
|
||||
@@ -54,10 +59,6 @@ ${scwryptsmodule}.parse.usage() {
|
||||
mute volume
|
||||
gamedock homedock undock
|
||||
'
|
||||
|
||||
USAGE__args='
|
||||
\$1 mapped name or filename
|
||||
'
|
||||
}
|
||||
|
||||
${scwryptsmodule}.parse.validate() {
|
||||
@@ -67,6 +68,6 @@ ${scwryptsmodule}.parse.validate() {
|
||||
;
|
||||
|
||||
[ -f "${SFX_FILE}" ] \
|
||||
|| notify.error "unable to locate sfx file '$1'" \
|
||||
|| notify.error "unable to locate sfx file '${SFX_FILE}'" \
|
||||
|| return 1
|
||||
}
|
||||
|
||||
@@ -54,7 +54,7 @@ ${scwryptsmodule}() {
|
||||
echo.status "${ACTION}ing ${TARGET}"
|
||||
cloud.aws s3 sync $A $B \
|
||||
&& echo.success "${TARGET} up-to-date" \
|
||||
|| { ERROR "unable to sync ${TARGET} (see above)"; return 1; }
|
||||
|| { echo.error "unable to sync ${TARGET} (see above)"; return 1; }
|
||||
}
|
||||
|
||||
#####################################################################
|
||||
@@ -81,7 +81,7 @@ ${scwryptsmodule}.parse.usage() {
|
||||
|
||||
${scwryptsmodule}.parse.validate() {
|
||||
[ "${TARGET}" ] \
|
||||
|| ERROR 'must specify a target'
|
||||
|| echo.error 'must specify a target'
|
||||
|
||||
TARGET_LOCAL="${HOME}/${TARGET}"
|
||||
TARGET_CLOUD="s3://${MEDIA_SYNC__S3_BUCKET}/${TARGET}"
|
||||
|
||||
@@ -36,7 +36,7 @@ ${scwryptsmodule}() {
|
||||
|
||||
[[ $FAILED_COUNT -eq 0 ]] \
|
||||
&& echo.success "successfully completed ${ACTION} for ${TARGET_COUNT} / ${TARGET_COUNT} target(s)" \
|
||||
|| ERROR "failed ${ACTION} for ${FAILED_COUNT} / ${TARGET_COUNT} target(s)" \
|
||||
|| echo.error "failed ${ACTION} for ${FAILED_COUNT} / ${TARGET_COUNT} target(s)" \
|
||||
;
|
||||
}
|
||||
|
||||
|
||||
@@ -28,10 +28,10 @@ ${scwryptsmodule}.validate() {
|
||||
case "${ACTION}" in
|
||||
( push | pull | pull-first-synchronize | push-first-synchronize ) ;;
|
||||
( '' )
|
||||
ERROR 'must specify a media sync action'
|
||||
echo.error 'must specify a media sync action'
|
||||
;;
|
||||
( * )
|
||||
ERROR "invalid media sync action '${ACTION}'"
|
||||
echo.error "invalid media sync action '${ACTION}'"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ ${scwryptsmodule}() {
|
||||
-ss ${START_TIME_SECONDS} -t $((${END_TIME_SECONDS} - ${START_TIME_SECONDS}))\
|
||||
"${OUTPUT_FILENAME}" \
|
||||
&& echo.success "created clip '${OUTPUT_FILENAME}'" \
|
||||
|| ERROR "error creating clip '$(basename -- "${OUTPUT_FILENAME}")' (see above)"
|
||||
|| echo.error "error creating clip '$(basename -- "${OUTPUT_FILENAME}")' (see above)"
|
||||
}
|
||||
|
||||
#####################################################################
|
||||
@@ -53,7 +53,7 @@ ${scwryptsmodule}.parse() {
|
||||
# local START_TIME_SECONDS END_TIME_SECONDS optional
|
||||
|
||||
local PARSED=0
|
||||
|
||||
|
||||
case $1 in
|
||||
-i | --input-filename ) PARSED=2; INPUT_FILENAME="$2" ;;
|
||||
-o | --output-filename ) PARSED=2; OUTPUT_FILENAME="$2" ;;
|
||||
@@ -84,24 +84,24 @@ ${scwryptsmodule}.parse.validate() {
|
||||
&& [ "${INPUT_FILENAME}" ] \
|
||||
&& [ -f "${INPUT_FILENAME}" ] \
|
||||
&& [ "${OUTPUT_FILENAME}" ] \
|
||||
|| ERROR "must provide a valid input and output filename\ninput : '${INPUT_FILENAME}\noutput : '${OUTPUT_FILENAME}'" \
|
||||
|| echo.error "must provide a valid input and output filename\ninput : '${INPUT_FILENAME}\noutput : '${OUTPUT_FILENAME}'" \
|
||||
|| return
|
||||
|
||||
[[ ${OUTPUT_FILENAME} =~ .mp3$ ]] || OUTPUT_FILENAME="${OUTPUT_FILENAME}.mp3"
|
||||
|
||||
local VIDEO_LENGTH_SECONDS=$(media.ffmpeg.get-video-length-seconds "${INPUT_FILENAME}")
|
||||
[ "${VIDEO_LENGTH_SECONDS}" ] && [[ "${VIDEO_LENGTH_SECONDS}" -gt 0 ]] \
|
||||
|| ERROR "unable to determine video length; is '${INPUT_FILENAME}' a video?" \
|
||||
|| echo.error "unable to determine video length; is '${INPUT_FILENAME}' a video?" \
|
||||
|| return
|
||||
|
||||
local CLIP_METHOD=start-time-to-end-time
|
||||
case ${USE_WHOLE_VIDEO} in
|
||||
true )
|
||||
[ ! "${START_TIME_SECONDS}" ] \
|
||||
|| ERROR "conflicting arguments '--start' and '--use-whole-video'"
|
||||
|| echo.error "conflicting arguments '--start' and '--use-whole-video'"
|
||||
|
||||
[ ! "${END_TIME_SECONDS}" ] \
|
||||
|| ERROR "conflicting arguments '--end' and '--use-whole-video'"
|
||||
|| echo.error "conflicting arguments '--end' and '--use-whole-video'"
|
||||
;;
|
||||
false )
|
||||
[ ! "${START_TIME_SECONDS}" ] && [ ! "${END_TIME_SECONDS}" ] \
|
||||
@@ -118,28 +118,28 @@ ${scwryptsmodule}.parse.validate() {
|
||||
interactive )
|
||||
START_TIME_SECONDS=$(echo 0 | utils.fzf.user-input "enter start time (0 ≤ t < ${VIDEO_LENGTH_SECONDS})")
|
||||
[ "${START_TIME_SECONDS}" ] \
|
||||
|| ERROR 'interactive user abort' \
|
||||
|| echo.error 'interactive user abort' \
|
||||
|| return
|
||||
|
||||
END_TIME_SECONDS=$(echo ${VIDEO_LENGTH_SECONDS} | utils.fzf.user-input "enter end time (${START_TIME_SECONDS} > t ≥ $VIDEO_LENGTH_SECONDS)")
|
||||
[ "${END_TIME_SECONDS}" ] \
|
||||
|| ERROR 'interactive user abort' \
|
||||
|| echo.error 'interactive user abort' \
|
||||
|| return
|
||||
;;
|
||||
esac
|
||||
|
||||
[[ "${START_TIME_SECONDS}" -ge 0 ]] \
|
||||
|| ERROR "cannot use negative start time (start time = ${START_TIME_SECONDS})"
|
||||
|| echo.error "cannot use negative start time (start time = ${START_TIME_SECONDS})"
|
||||
|
||||
[[ "${END_TIME_SECONDS}" -gt 0 ]] \
|
||||
|| ERROR "end time must be after the video starts (end time = ${END_TIME_SECONDS})"
|
||||
|| echo.error "end time must be after the video starts (end time = ${END_TIME_SECONDS})"
|
||||
|
||||
[[ "${START_TIME_SECONDS}" -lt "${VIDEO_LENGTH_SECONDS}" ]] \
|
||||
|| ERROR "start time must be before video ends (start time = ${START_TIME_SECONDS}; video length = ${VIDEO_LENGTH_SECONDS})"
|
||||
|| echo.error "start time must be before video ends (start time = ${START_TIME_SECONDS}; video length = ${VIDEO_LENGTH_SECONDS})"
|
||||
|
||||
[[ "${END_TIME_SECONDS}" -le "${VIDEO_LENGTH_SECONDS}" ]] \
|
||||
|| ERROR "end time cannot go beyond video end (end time = ${END_TIME_SECONDS}; video length = ${VIDEO_LENGTH_SECONDS})"
|
||||
|| echo.error "end time cannot go beyond video end (end time = ${END_TIME_SECONDS}; video length = ${VIDEO_LENGTH_SECONDS})"
|
||||
|
||||
[[ "${START_TIME_SECONDS}" -lt "${END_TIME_SECONDS}" ]] \
|
||||
|| ERROR "start time must come before end time (start time = ${START_TIME_SECONDS}; end time = ${END_TIME_SECONDS})"
|
||||
|| echo.error "start time must come before end time (start time = ${START_TIME_SECONDS}; end time = ${END_TIME_SECONDS})"
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ ${scwryptsmodule}() {
|
||||
local FILENAME="$1"
|
||||
|
||||
[ "${FILENAME}" ] && [ -f "${FILENAME}" ] \
|
||||
|| ERROR "invalid or missing file '${FILENAME}'" \
|
||||
|| echo.error "invalid or missing file '${FILENAME}'" \
|
||||
|| return 1
|
||||
|
||||
ffprobe \
|
||||
|
||||
@@ -29,14 +29,14 @@ ${scwryptsmodule}.validate() {
|
||||
MSCORE_FILENAME="$(cd "${MSCORE__SCORES_PATH}"; find . -type f | grep '\.msc[zx]$' | utils.fzf 'select a score')"
|
||||
|
||||
[ "${MSCORE_FILENAME}" ] && [ -f "${MSCORE__SCORES_PATH}/${MSCORE_FILENAME}" ] \
|
||||
|| ERROR "invalid score '${MSCORE_FILENAME}'"
|
||||
|| echo.error "invalid score '${MSCORE_FILENAME}'"
|
||||
|
||||
MSCORE_FILENAME="${MSCORE__SCORES_PATH}/${MSCORE_FILENAME}"
|
||||
;;
|
||||
|
||||
( * )
|
||||
[ -f "${MSCORE_FILENAME}" ] \
|
||||
|| ERROR "no score '${MSCORE_FILENAME}' exists"
|
||||
|| echo.error "no score '${MSCORE_FILENAME}' exists"
|
||||
;;
|
||||
esac
|
||||
|
||||
@@ -65,7 +65,7 @@ ${scwryptsmodule}.validate() {
|
||||
|
||||
[ -f "${TEMP_FILE}" ] \
|
||||
&& MSCORE_FILENAME="${TEMP_FILE}" \
|
||||
|| ERROR "failed to extract '${TEMP_FILE}'" \
|
||||
|| echo.error "failed to extract '${TEMP_FILE}'" \
|
||||
|| MSCORE_FILENAME='' \
|
||||
;
|
||||
|
||||
|
||||
@@ -20,13 +20,13 @@ ${scwryptsmodule}() {
|
||||
local FILENAME="$(media.youtube.get-filename "${URL}")"
|
||||
|
||||
[ "${FILENAME}" ] \
|
||||
|| ERROR "could not find metadata; cannot proceed with download\n${URL}" \
|
||||
|| echo.error "could not find metadata; cannot proceed with download\n${URL}" \
|
||||
|| return 1
|
||||
|
||||
media.youtube.yt-dlp "${URL}" \
|
||||
--format 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/mp4' \
|
||||
&& echo.success "finished download of ${URL}\n$(media.youtube.get-download-path)/${FILENAME}" \
|
||||
|| ERROR "failed to download '${FILENAME}' (${URL})"
|
||||
|| echo.error "failed to download '${FILENAME}' (${URL})"
|
||||
;
|
||||
}
|
||||
|
||||
@@ -59,5 +59,5 @@ ${scwryptsmodule}.parse.usage() {
|
||||
|
||||
${scwryptsmodule}.parse.validate() {
|
||||
[ "$URL" ] \
|
||||
|| ERROR "must provide download URL"
|
||||
|| echo.error "must provide download URL"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user