diff options
Diffstat (limited to 'odin/strm/cleanup_youtube')
| -rwxr-xr-x | odin/strm/cleanup_youtube | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/odin/strm/cleanup_youtube b/odin/strm/cleanup_youtube new file mode 100755 index 00000000..0df15d0b --- /dev/null +++ b/odin/strm/cleanup_youtube | |||
| @@ -0,0 +1,61 @@ | |||
| 1 | #!@zsh@/bin/zsh | ||
| 2 | |||
| 3 | function notmuch { | ||
| 4 | while true; do | ||
| 5 | result=$($_env NOTMUCH_CONFIG=${HOME}/.notmuch-rss-config @notmuch@/bin/notmuch "$@" 2>&1) | ||
| 6 | if ! [[ $result =~ "already locked" ]]; then | ||
| 7 | echo -nE $result | ||
| 8 | return | ||
| 9 | fi | ||
| 10 | sleep 2 | ||
| 11 | done | ||
| 12 | } | ||
| 13 | |||
| 14 | tagFile="" | ||
| 15 | |||
| 16 | function cleanup { | ||
| 17 | [[ -n "${tagFile}" ]] && rm -fv ${tagFile} | ||
| 18 | } | ||
| 19 | |||
| 20 | dir=/srv/media/youtube | ||
| 21 | maxsize=$((1024 * 1024 * 1024 * 50)) | ||
| 22 | |||
| 23 | while [[ $(du -bs $dir | awk '{ print $1; }') -gt $maxsize ]]; do | ||
| 24 | find $dir -type f -not -path $dir/CACHEDIR.TAG -print0 | \ | ||
| 25 | xargs -0 -- $_stat --printf '%W %Y %Z %X %n\0' | \ | ||
| 26 | sort -t '\0' -z | \ | ||
| 27 | awk -F '\0' '{ gsub("^\\S+\\s+\\S+\\s+\\S+\\s+\\S+\\s+", "", $1); printf "%s\0", $1; }' | \ | ||
| 28 | xargs -0 -- rm -v | ||
| 29 | done | ||
| 30 | |||
| 31 | find $dir -xtype l -delete | ||
| 32 | find $dir -type d -empty -delete | ||
| 33 | |||
| 34 | notmuch search --output=messages --format=text 'is:cached' | \ | ||
| 35 | while read id; do | ||
| 36 | untag=false | ||
| 37 | url=$(notmuch show --format=raw "$id" | grep 'http://odin.asgard.yggdrasil/youtube' | sed -r 's|^.*href="http://odin.asgard.yggdrasil/youtube/([^"]+)".*$|\1|' | sed -f /usr/lib/url_unescape.sed) | ||
| 38 | |||
| 39 | printf "%s\n ‘%s’\n" ${id} ${dir}/${url} | ||
| 40 | |||
| 41 | if [[ -z "${url}" ]]; then | ||
| 42 | printf " Could not extract filename.\n" | ||
| 43 | untag=true | ||
| 44 | fi | ||
| 45 | |||
| 46 | if [[ -n "${url}" && ! -e "${dir}/${url}" ]]; then | ||
| 47 | printf " File vanished\n" | ||
| 48 | untag=true | ||
| 49 | fi | ||
| 50 | |||
| 51 | if ${untag}; then | ||
| 52 | if [[ -z "${tagFile}" ]]; then | ||
| 53 | tagFile=$(mktemp --tmpdir $$.tags.XXXXXXXXXX) | ||
| 54 | printf "Using %s\n" ${tagFile} | ||
| 55 | fi | ||
| 56 | |||
| 57 | { printf "-cached -- %s\n" ${id} >> ${tagFile} } && printf " Tagging ‘-cached’...\n" | ||
| 58 | fi | ||
| 59 | done | ||
| 60 | |||
| 61 | [[ -n "${tagFile}" ]] && notmuch tag --batch --input=${tagFile} | ||
