init
This commit is contained in:
commit
af823f79fd
|
@ -0,0 +1,73 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
YTDLP=$(which yt-dlp)
|
||||
JQ=$(which jq)
|
||||
FFMPEG=$(which ffmpeg)
|
||||
|
||||
download() {
|
||||
DOWNLOAD_LINK="${1}"
|
||||
SAVE_PATH="${2}"
|
||||
|
||||
# cd "${SAVE_PATH}"
|
||||
|
||||
${YTDLP} -o "${SAVE_PATH}/%(id)s.%(ext)s" \
|
||||
-f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best' \
|
||||
--write-auto-subs --write-subs --sub-lang en,ru --convert-subs srt --sub-format txt \
|
||||
${DOWNLOAD_LINK}
|
||||
}
|
||||
|
||||
create_structure() {
|
||||
PLAYLIST="${1}"
|
||||
JSON="$(${YTDLP} --flat-playlist -j "${PLAYLIST}" 2>/dev/null)"
|
||||
TITLE="$(echo ${JSON} | ${JQ} -r '.playlist_title' | head -n 1)"
|
||||
VIDEOS="$(echo ${JSON} | ${JQ} -r '.title')"
|
||||
IDS="$(echo ${JSON} | ${JQ} -r '.id')"
|
||||
LINKS="$(echo ${JSON} | ${JQ} -r '.original_url')"
|
||||
ALL_LINES=$(echo "${JSON}" | wc -l)
|
||||
|
||||
mkdir -v "${TITLE}"
|
||||
|
||||
for ((NUMBER=1; NUMBER<=ALL_LINES; NUMBER++)); do
|
||||
VIDEO="$(echo "${VIDEOS}" | awk "NR==${NUMBER}")"
|
||||
LINK="$(echo "${LINKS}" | awk "NR==${NUMBER}")"
|
||||
VIDEO="${VIDEO//\//-}"
|
||||
DIR_NAME="${NUMBER} - ${VIDEO}"
|
||||
|
||||
mkdir -v "${TITLE}/${DIR_NAME}"
|
||||
|
||||
download "${LINK}" "${TITLE}/${DIR_NAME}"
|
||||
done
|
||||
}
|
||||
|
||||
main() {
|
||||
COMMAND="${1}"
|
||||
[ ! -z ${COMMAND} ] && shift
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
KEY="${1}"
|
||||
VALUE="${2}"
|
||||
case "${KEY}" in
|
||||
-p|--playlist)
|
||||
PLAYLIST="${VALUE}"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
case "${COMMAND}" in
|
||||
create)
|
||||
[ -z "${PLAYLIST}" ] && echo "Playlist link unknown" && exit 1
|
||||
create_structure "${PLAYLIST}"
|
||||
;;
|
||||
*)
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
main "${@}"
|
Loading…
Reference in New Issue