X-Git-Url: https://git.rmz.io/dotfiles.git/blobdiff_plain/754c5606e8424b0bee621de9d31d186112da46a0..68cd21a9e728be519620a9f3ae107cdb4fa6fffe:/isync/post-sync.d/10-youtube?ds=inline diff --git a/isync/post-sync.d/10-youtube b/isync/post-sync.d/10-youtube new file mode 100755 index 0000000..b6b0aba --- /dev/null +++ b/isync/post-sync.d/10-youtube @@ -0,0 +1,58 @@ +#!/usr/bin/env bash + +errno=$1 +mbsync_args=$* + +if [[ $errno -ne 0 ]]; then + echo "mbsync failed, ignoring post-sync commands." >&2 + exit +fi + +if [[ "$mbsync_args" != "gmail" ]]; then + # only run for gmail account + exit +fi + +yt_src_mb=youtube-orig +yt_dst_mb=youtube +yt_parser=$dir/parse-mail.py +maildirs=( $(sed -nr 's/^Path\s*(.*)$/\1/p' $config) ) + +if [[ -z $maildirs ]]; then + echo "Could not extract 'Path' from 'MaildirStore' in '$config'" >&2 + exit 1 +fi + +shopt -s extglob +shopt -s nullglob +for maildir in "${maildirs[@]}"; do + # expand tilde + maildir=${maildir/#~/$HOME} + + if [[ -d "$maildir/$yt_src_mb" ]]; then + echo "No mailbox at '$maildir/$yt_src_mb'" + continue + fi + + for mail in "$maildir"/$yt_src_mb/new/* ; do + mangled_mail=${mail/$yt_src_mb/$yt_dst_mb} + # remove UID for mbsync to regenerate it + mangled_mail="${mangled_mail/,U=+([0-9])}" + + echo -n "Parsing new message '$(basename "$mail")'..." + $yt_parser <"$mail" >"$mangled_mail" + + if [[ $? -eq 0 ]]; then + echo " Success." + else + echo " Failure! Copying message as is." + cp "$mail" "$mangled_mail" + fi + + # sync {a,m}time + touch --reference "$mail" "$mangled_mail" + mv "$mail" "${mail/new/cur}S" + done + # resync new yt_dst_mb + mbsync -c "$config" gmail-$yt_src_mb gmail-$yt_dst_mb +done