#!/bin/bash # __ __ # ____ ___ ______ / /___ ____ _____/ /__ _____ # / __ `/ / / / __ \/ / __ \/ __ `/ __ / _ \/ ___/ # / /_/ / /_/ / / / / / /_/ / /_/ / /_/ / __/ / # \__, /\__,_/_/ /_/_/\____/\__,_/\__,_/\___/_/ # /____/ # --------------------------------------------------- # Author :: Miris /// GitHub :: MirisWisdom/Albumin # --------------------------------------------------- # This simple Bash script lets you download the video # using yt-dlp, and then takes care of extracting its # audio into a file for each song w/ ffmpeg! # It does not re-encode or tag any of the audio files # due to raw preservation being its purpose. # You should run it line by line rather than blindly! # Feel free to tweak & suggest improvements! # --------------------------------------------------- # We'll be using the ID for both file and directory. VIDEO_ID='zm5UBm4lXlw' # Create and enter the new directory. mkdir -p "${VIDEO_ID}" && cd "${VIDEO_ID}" # Download the audio file using yt-dlp. yt-dlp -x -f bestaudio "${VIDEO_ID}" -o "${VIDEO_ID}.%%(ext)s" # Figure out the downloaded file name and extension. SRC_FILE=$(ls "${VIDEO_ID}".*) # ls command should only output the downloaded file name! FILE_EXT=${SRC_FILE:12} # file id + dot = 12 characters; extension length varies! ffmpeg -ss 00:00:00 -to 00:04:13 -i "${SRC_FILE}" -vn -acodec copy ". 1.${FILE_EXT}" ffmpeg -ss 00:04:13 -to 00:09:11 -i "${SRC_FILE}" -vn -acodec copy ". 2.${FILE_EXT}" ffmpeg -ss 00:09:11 -to 00:13:22 -i "${SRC_FILE}" -vn -acodec copy ". 3.${FILE_EXT}" ffmpeg -ss 00:13:22 -to 00:17:41 -i "${SRC_FILE}" -vn -acodec copy ". 4.${FILE_EXT}" ffmpeg -ss 00:17:41 -to 00:21:16 -i "${SRC_FILE}" -vn -acodec copy ". 5.${FILE_EXT}" ffmpeg -ss 00:21:16 -to 00:24:36 -i "${SRC_FILE}" -vn -acodec copy ". 6.${FILE_EXT}" ffmpeg -ss 00:24:36 -to 00:28:47 -i "${SRC_FILE}" -vn -acodec copy ". 7.${FILE_EXT}" ffmpeg -ss 00:28:47 -to 00:32:41 -i "${SRC_FILE}" -vn -acodec copy ". 8.${FILE_EXT}" ffmpeg -ss 00:32:41 -to 00:37:40 -i "${SRC_FILE}" -vn -acodec copy ". 9.${FILE_EXT}" ffmpeg -ss 00:37:40 -to 00:42:52 -i "${SRC_FILE}" -vn -acodec copy ". 10.${FILE_EXT}" ffmpeg -ss 00:42:52 -to 00:48:32 -i "${SRC_FILE}" -vn -acodec copy ". 11.${FILE_EXT}" ffmpeg -ss 00:48:32 -to 00:51:39 -i "${SRC_FILE}" -vn -acodec copy ". 12.${FILE_EXT}" ffmpeg -ss 00:51:39 -to 00:56:40 -i "${SRC_FILE}" -vn -acodec copy ". 13.${FILE_EXT}" ffmpeg -ss 00:56:40 -to 01:00:31 -i "${SRC_FILE}" -vn -acodec copy ". 14.${FILE_EXT}" ffmpeg -ss 01:00:31 -to 01:04:36 -i "${SRC_FILE}" -vn -acodec copy ". 15.${FILE_EXT}" ffmpeg -ss 01:04:36 -to 01:08:37 -i "${SRC_FILE}" -vn -acodec copy ". 16.${FILE_EXT}" ffmpeg -ss 01:08:37 -to 01:13:21 -i "${SRC_FILE}" -vn -acodec copy ". 17.${FILE_EXT}" ffmpeg -ss 01:13:21 -to 01:17:41 -i "${SRC_FILE}" -vn -acodec copy ". 18.${FILE_EXT}" ffmpeg -ss 01:17:41 -to 01:21:18 -i "${SRC_FILE}" -vn -acodec copy ". 19.${FILE_EXT}" ffmpeg -ss 01:21:18 -to 01:25:29 -i "${SRC_FILE}" -vn -acodec copy ". 20.${FILE_EXT}" ffmpeg -ss 01:25:29 -to 01:29:31 -i "${SRC_FILE}" -vn -acodec copy ". 21.${FILE_EXT}" ffmpeg -ss 01:29:31 -to 01:33:56 -i "${SRC_FILE}" -vn -acodec copy ". 22.${FILE_EXT}" ffmpeg -ss 01:33:56 -to 01:37:51 -i "${SRC_FILE}" -vn -acodec copy ". 23.${FILE_EXT}" ffmpeg -ss 01:37:51 -to 01:43:18 -i "${SRC_FILE}" -vn -acodec copy ". 24.${FILE_EXT}" ffmpeg -ss 01:43:18 -to 01:47:15 -i "${SRC_FILE}" -vn -acodec copy ". 25.${FILE_EXT}" ffmpeg -ss 01:47:15 -to 01:51:18 -i "${SRC_FILE}" -vn -acodec copy ". 26.${FILE_EXT}" ffmpeg -ss 01:51:18 -to 01:57:06 -i "${SRC_FILE}" -vn -acodec copy ". 27.${FILE_EXT}" ffmpeg -ss 01:57:06 -to 02:01:56 -i "${SRC_FILE}" -vn -acodec copy ". 28.${FILE_EXT}" ffmpeg -ss 02:01:56 -to 02:07:09 -i "${SRC_FILE}" -vn -acodec copy ". 29.${FILE_EXT}" ffmpeg -ss 02:07:09 -to 02:11:10 -i "${SRC_FILE}" -vn -acodec copy ". 30.${FILE_EXT}" ffmpeg -ss 02:11:10 -to 02:15:06 -i "${SRC_FILE}" -vn -acodec copy ". 31.${FILE_EXT}" ffmpeg -ss 02:15:06 -to 02:20:32 -i "${SRC_FILE}" -vn -acodec copy ". 32.${FILE_EXT}" ffmpeg -ss 02:20:32 -to 02:25:56 -i "${SRC_FILE}" -vn -acodec copy ". 33.${FILE_EXT}" ffmpeg -ss 02:25:56 -to 02:30:08 -i "${SRC_FILE}" -vn -acodec copy ". 34.${FILE_EXT}" ffmpeg -ss 02:30:08 -to 02:33:56 -i "${SRC_FILE}" -vn -acodec copy ". 35.${FILE_EXT}" ffmpeg -ss 02:33:56 -to 02:38:32 -i "${SRC_FILE}" -vn -acodec copy ". 36.${FILE_EXT}" ffmpeg -ss 02:38:32 -to 02:42:53 -i "${SRC_FILE}" -vn -acodec copy ". 37.${FILE_EXT}" ffmpeg -ss 02:42:53 -to 02:46:27 -i "${SRC_FILE}" -vn -acodec copy ". 38.${FILE_EXT}" ffmpeg -ss 02:46:27 -to 02:51:11 -i "${SRC_FILE}" -vn -acodec copy ". 39.${FILE_EXT}" ffmpeg -ss 02:51:11 -to 02:55:54 -i "${SRC_FILE}" -vn -acodec copy ". 40.${FILE_EXT}" ffmpeg -ss 02:55:54 -to 02:59:45 -i "${SRC_FILE}" -vn -acodec copy ". 41.${FILE_EXT}" ffmpeg -ss 02:59:45 -to 03:03:21 -i "${SRC_FILE}" -vn -acodec copy ". 42.${FILE_EXT}" ffmpeg -ss 03:03:21 -to 03:06:52 -i "${SRC_FILE}" -vn -acodec copy ". 43.${FILE_EXT}" ffmpeg -ss 03:06:52 -to 03:11:08 -i "${SRC_FILE}" -vn -acodec copy ". 44.${FILE_EXT}" ffmpeg -ss 03:11:08 -to 03:14:28 -i "${SRC_FILE}" -vn -acodec copy ". 45.${FILE_EXT}" ffmpeg -ss 03:14:28 -to 03:18:25 -i "${SRC_FILE}" -vn -acodec copy ". 46.${FILE_EXT}" ffmpeg -ss 03:18:25 -to 03:22:44 -i "${SRC_FILE}" -vn -acodec copy ". 47.${FILE_EXT}" ffmpeg -ss 03:22:44 -to 03:26:52 -i "${SRC_FILE}" -vn -acodec copy ". 48.${FILE_EXT}" ffmpeg -ss 03:26:52 -to 03:30:38 -i "${SRC_FILE}" -vn -acodec copy ". 49.${FILE_EXT}" ffmpeg -ss 03:30:38 -to 03:34:22 -i "${SRC_FILE}" -vn -acodec copy ". 50.${FILE_EXT}" ffmpeg -ss 03:34:22 -to 03:37:24 -i "${SRC_FILE}" -vn -acodec copy ". 51.${FILE_EXT}" ffmpeg -ss 03:37:24 -to 03:41:20 -i "${SRC_FILE}" -vn -acodec copy ". 52.${FILE_EXT}" ffmpeg -ss 03:41:20 -to 03:45:17 -i "${SRC_FILE}" -vn -acodec copy ". 53.${FILE_EXT}" ffmpeg -ss 03:45:17 -to 03:48:41 -i "${SRC_FILE}" -vn -acodec copy ". 54.${FILE_EXT}" ffmpeg -ss 03:48:41 -to 03:52:59 -i "${SRC_FILE}" -vn -acodec copy ". 55.${FILE_EXT}" ffmpeg -ss 03:52:59 -to 03:56:01 -i "${SRC_FILE}" -vn -acodec copy ". 56.${FILE_EXT}" ffmpeg -ss 03:56:01 -to 04:00:30 -i "${SRC_FILE}" -vn -acodec copy ". 57.${FILE_EXT}" ffmpeg -ss 04:00:30 -to 04:05:24 -i "${SRC_FILE}" -vn -acodec copy ". 58.${FILE_EXT}" ffmpeg -ss 04:05:24 -to 04:09:27 -i "${SRC_FILE}" -vn -acodec copy ". 59.${FILE_EXT}" ffmpeg -ss 04:09:27 -to 04:13:10 -i "${SRC_FILE}" -vn -acodec copy ". 60.${FILE_EXT}" ffmpeg -ss 04:13:10 -to 04:16:26 -i "${SRC_FILE}" -vn -acodec copy ". 61.${FILE_EXT}" ffmpeg -ss 04:16:26 -to 04:20:17 -i "${SRC_FILE}" -vn -acodec copy ". 62.${FILE_EXT}" ffmpeg -ss 04:20:17 -to 04:24:09 -i "${SRC_FILE}" -vn -acodec copy ". 63.${FILE_EXT}" ffmpeg -ss 04:24:09 -to 04:28:29 -i "${SRC_FILE}" -vn -acodec copy ". 64.${FILE_EXT}" ffmpeg -ss 04:28:29 -to 04:32:30 -i "${SRC_FILE}" -vn -acodec copy ". 65.${FILE_EXT}" ffmpeg -ss 04:32:30 -to 04:36:13 -i "${SRC_FILE}" -vn -acodec copy ". 66.${FILE_EXT}" ffmpeg -ss 04:36:13 -to 04:40:28 -i "${SRC_FILE}" -vn -acodec copy ". 67.${FILE_EXT}" ffmpeg -ss 04:40:28 -to 04:44:14 -i "${SRC_FILE}" -vn -acodec copy ". 68.${FILE_EXT}" ffmpeg -ss 04:44:14 -to 04:48:44 -i "${SRC_FILE}" -vn -acodec copy ". 69.${FILE_EXT}" ffmpeg -ss 04:48:44 -to 04:53:10 -i "${SRC_FILE}" -vn -acodec copy ". 70.${FILE_EXT}" ffmpeg -ss 04:53:10 -to 04:57:50 -i "${SRC_FILE}" -vn -acodec copy ". 71.${FILE_EXT}" ffmpeg -ss 04:57:50 -to 05:01:56 -i "${SRC_FILE}" -vn -acodec copy ". 72.${FILE_EXT}" ffmpeg -ss 05:01:56 -to 05:06:20 -i "${SRC_FILE}" -vn -acodec copy ". 73.${FILE_EXT}" ffmpeg -ss 05:06:20 -to 05:10:49 -i "${SRC_FILE}" -vn -acodec copy ". 74.${FILE_EXT}" ffmpeg -ss 05:10:49 -to 05:15:10 -i "${SRC_FILE}" -vn -acodec copy ". 75.${FILE_EXT}" ffmpeg -ss 05:15:10 -to 05:19:18 -i "${SRC_FILE}" -vn -acodec copy ". 76.${FILE_EXT}" ffmpeg -ss 05:19:18 -to 05:23:49 -i "${SRC_FILE}" -vn -acodec copy ". 77.${FILE_EXT}" ffmpeg -ss 05:23:49 -to 05:27:45 -i "${SRC_FILE}" -vn -acodec copy ". 78.${FILE_EXT}"