25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.
 
 

55 satır
1.7 KiB

  1. #!/usr/bin/env zsh
  2. # Dependencies: exastash `es` in PATH, `path-to-eye-path` in PATH, and
  3. # apt install zsh ripgrep rclone curl
  4. set -eu -o pipefail
  5. # Enable job control for wait-until-jobs-below
  6. set -m
  7. # Wait until the number of shell jobs drops below a limit.
  8. # This can be used as an alternative to parallel using
  9. # for i in ...; do something $i &; wait-until-jobs-below 8; done
  10. wait-until-jobs-below() {
  11. while test $(jobs | wc -l) -ge "$1"; do
  12. sleep 0.1
  13. done
  14. }
  15. # provide as stdin the output of e.g.
  16. # es x find -t f -- ~/stash/YouTube | take-wanted-ids ~/dead-video-ids | rg '\.(mp4|webm|flv|video)$'
  17. RCLONE_DEST=jeff
  18. while read i; do
  19. echo $i
  20. eye_path=$(path-to-eye-path "$i" | sed -r "s,$HOME/stash/,,g")
  21. file_id=$(es x info -- "$i" | jq .id)
  22. size=$(es x info -- "$i" | jq .size)
  23. is_video=0
  24. echo -n "$i" | rg -q '\.(mp4|webm|flv|video)$' && is_video=1 || true
  25. the_eye_video_bytes_saved=0
  26. the_eye_video_files_saved=0
  27. if [[ $is_video -eq 1 ]]; then
  28. the_eye_video_bytes_saved=$size
  29. the_eye_video_files_saved=1
  30. fi
  31. # If already in namedfiles i.e. the-eye, skip
  32. es x info -- "$i" | rg -q -F '"type": "namedfiles"' && continue || true
  33. (
  34. es x get -s -- "$i" && \
  35. rclone --metadata --inplace --size-only --progress copyto "$i" "$RCLONE_DEST:$eye_path" && \
  36. curl --fail-with-body -u "ya: ." -X POST -d "{\"file_id\": $file_id, \"location\": \"the-eye\", \"pathname\": \"$eye_path\"}" https://ya.borg.xyz/cgi-bin/new-namedfiles && \
  37. curl -X POST -d "{\"the_eye_any_bytes_saved\": $size, \"the_eye_video_bytes_saved\": $the_eye_video_bytes_saved, \"the_eye_any_files_saved\": 1, \"the_eye_video_files_saved\": $the_eye_video_files_saved}" "http://eye.borg.xyz:31416/metrics" || true;
  38. rm -f -- "$i"
  39. ) &
  40. wait-until-jobs-below 16
  41. done