get_youtube_videos/classify_videos.sh

61 lines
2.6 KiB
Bash
Executable file

#!/bin/bash
if [ -z "${HOME}" ]; then
if [ "$(whoami)" == "root" ]; then
HOME="/root"
else
HOME=$(grep "$(whoami)" /etc/passwd | awk 'BEGIN {FS=":"} {print($6)}')
fi
fi
CONFIG_FILE="${HOME}/.config/get_youtube_videos.conf"
download_dir="$(grep download_dir "${CONFIG_FILE}" | awk 'BEGIN {FS="="} {print($2)}' | sed 's/"//g')"
if [ "${download_dir}" == "" ]; then
download_dir="${HOME}/downloaded_youtube_videos"
fi
cd "${download_dir}" || exit 1
chmod 0777 "${download_dir}" -R
chown glances:ssl-cert "${download_dir}" -R
if [ -r "${HOME}/.config/youtube_channels_folders.json" ]; then
while read -r video_id
do
if [ -n "${video_id}" ]; then
echo "Video ID: '${video_id}'"
channel=$(yt-dlp -J -- "${video_id}" | jq '.channel' | sed 's/"//g' | head -n1)
if [ -z "${channel}" ] && [ "${channel}" == "null" ]; then
channel='Unknwon channel'
fi
echo "Channel name: '${channel}'"
if [ -n "${video_id}" ] && [ "${video_id}" != "null" ]; then
channel_folder=$(jq ".[\"${channel}\"]" "${HOME}/.config/youtube_channels_folders.json" | sed 's/"//g')
if [ -n "${channel_folder}" ] && [ "${channel_folder}" != "null" ]; then
mkdir -p "${channel_folder}"
while read -r file
do
echo "Moving file '${file}' to '${channel_folder}'..."
mv -- "${file}" "${channel_folder}/"
done <<< "$(ls | grep -- "${video_id}")"
else
echo "No folder for channel '${channel}', leaving files in the folder"
fi
fi
fi
done <<< "$(find . -mindepth 1 -maxdepth 1 | grep -v downloaded | grep -Eo '\[[^]]{11}' | tr -d '[]' | sort | uniq)"
fi
# while read -r video_id
# do
# if [ -n "${video_id}" ]; then
# echo "Video ID: '${video_id}'"
# channel=$(yt-dlp -J -- "${video_id}" | jq '.channel' | sed 's/"//g' | head -n1)
# if [ -z "${channel}" ] && [ "${channel}" == "null" ]; then
# channel='Unknwon channel'
# fi
# echo "Channel name: '${channel}'"
# if [ -n "${video_id}" ] && [ "${video_id}" != "null" ]; then
# mkdir -p "${channel}"
# while read -r file
# do
# echo "Moving file '${file}'..."
# mv -- "${file}" "${channel}/"
# done <<< "$(ls | grep -- "${video_id}")"
# fi
# fi
# done <<< "$(find . -mindepth 1 -maxdepth 1 | grep -v downloaded | grep -Eo '/[^\. ]{11}' | tr -d '/' | sort | uniq)"