]> git.rmz.io Git - dotfiles.git/blob - isync/post-sync.d/10-youtube
b6b0aba718cf06ca8fb842ba8f6f8d5ed76e3a90
[dotfiles.git] / isync / post-sync.d / 10-youtube
1 #!/usr/bin/env bash
2
3 errno=$1
4 mbsync_args=$*
5
6 if [[ $errno -ne 0 ]]; then
7 echo "mbsync failed, ignoring post-sync commands." >&2
8 exit
9 fi
10
11 if [[ "$mbsync_args" != "gmail" ]]; then
12 # only run for gmail account
13 exit
14 fi
15
16 yt_src_mb=youtube-orig
17 yt_dst_mb=youtube
18 yt_parser=$dir/parse-mail.py
19 maildirs=( $(sed -nr 's/^Path\s*(.*)$/\1/p' $config) )
20
21 if [[ -z $maildirs ]]; then
22 echo "Could not extract 'Path' from 'MaildirStore' in '$config'" >&2
23 exit 1
24 fi
25
26 shopt -s extglob
27 shopt -s nullglob
28 for maildir in "${maildirs[@]}"; do
29 # expand tilde
30 maildir=${maildir/#~/$HOME}
31
32 if [[ -d "$maildir/$yt_src_mb" ]]; then
33 echo "No mailbox at '$maildir/$yt_src_mb'"
34 continue
35 fi
36
37 for mail in "$maildir"/$yt_src_mb/new/* ; do
38 mangled_mail=${mail/$yt_src_mb/$yt_dst_mb}
39 # remove UID for mbsync to regenerate it
40 mangled_mail="${mangled_mail/,U=+([0-9])}"
41
42 echo -n "Parsing new message '$(basename "$mail")'..."
43 $yt_parser <"$mail" >"$mangled_mail"
44
45 if [[ $? -eq 0 ]]; then
46 echo " Success."
47 else
48 echo " Failure! Copying message as is."
49 cp "$mail" "$mangled_mail"
50 fi
51
52 # sync {a,m}time
53 touch --reference "$mail" "$mangled_mail"
54 mv "$mail" "${mail/new/cur}S"
55 done
56 # resync new yt_dst_mb
57 mbsync -c "$config" gmail-$yt_src_mb gmail-$yt_dst_mb
58 done