From 4cd93b09b3a179515630114078739564a35af38d Mon Sep 17 00:00:00 2001 From: katherine Date: Sun, 19 Feb 2017 03:47:19 -0700 Subject: move remaining funcs from .zshrc everything should be modular now also, cleaned up make-gif to properly parse arguments and check things --- .zshrc-linux-desktop | 387 --------------------------------------------------- 1 file changed, 387 deletions(-) (limited to '.zshrc-linux-desktop') diff --git a/.zshrc-linux-desktop b/.zshrc-linux-desktop index ec2a5fb..f1808ac 100644 --- a/.zshrc-linux-desktop +++ b/.zshrc-linux-desktop @@ -1,396 +1,9 @@ ################### ALIASES ################## alias ssh-socks='ssh -C2qTnN -D 9853 shmibbles.me' -alias sx='startx' if [[ "$(whence sshfs)" != "" ]] then alias smounth='mkdir -p ~/shmibbles.me; sshfs shmibbles.me: ~/shmibbles.me' alias smountw='mkdir -p ~/shmibbles.me; sshfs shmibbles.me:/usr/local/www/apache24/data/ ~/shmibbles.me' alias sumount='fusermount -u ~/shmibbles.me; rmdir ~/shmibbles.me' fi - -################## FUNCTIONS ################## - -# list stats about mpd library file types, to motivate me -# to do better! -mpd-filetypes() { - local pattern - - # if args exist, read them as file extensions in a pattern - if - if [[ ! -z "$@" ]]; then - pattern=$(echo "$@" | sed -e 's/\s/|/g' -e 's/\(.*\)/(\1)/') - else - # else hackily yoink recognised types from mpd --version - pattern=$(mpd --version \ - | sed -n '1h; 1!H; ${g; s/.*Decoders plugins:\(.*\)Output.*/\1/g; p}' \ - | sed -e 's/.*\]//' | tr -d '\n' \ - | sed -e 's/^ //' -e 's/\s/|/g' -e 's/\(.*\)/(\1)/') - fi - - # find file counts - local i=1 - local total=0 - local totalstr='total' - local counts=() - local types=() - find ~/music -type f -regextype posix-extended \ - -regex ".*\.$pattern" | grep -oE "\.$pattern$" \ - | sort | uniq -c | sed -e 's/^\s*\([0-9]* \)\./\1/' | \ - while read -A line; do - counts[$i]=${line[1]} - types[$i]=${line[2]} - total=$(( $total + ${line[1]} )) - i=$(( $i + 1 )) - done - - # calculate percentages - local twidth=0 - local cwidth=0 - local percentages=() - for i in {1..${#types}}; do - percentages[$i]="%$(calc -p \ - "a=${counts[$i]} * 100 / $total; round(a, 5-digits(a), 16)" \ - | tr -d '~')" - - done - - types=( 'type' "${types[@]}" 'total' ) - counts=( 'count' "${counts[@]}" $total ) - percentages=( 'percent' "${percentages[@]}" ' ') - - # calculate padding widths - for i in {1..${#types}}; do - if [[ ${#types[$i]} -gt $twidth ]]; then - twidth=${#types[$i]} - fi - - if [[ ${#counts[$i]} -gt $cwidth ]]; then - cwidth=${#counts[$i]} - fi - done - - - # print results - local linelen=$(( $twidth + $cwidth + 13 )) - local j - echo -n "┌" - for (( j=0; j < $linelen; j++ )); do - echo -n "─" - done - echo "┐" - - for i in {1..${#types}}; do - if [[ $i -eq 2 || $i -eq ${#types} ]]; then - echo -n "├" - for (( j=0; j < $linelen; j++ )); do - echo -n "─" - done - echo "┤" - fi - - if [[ $i -eq 1 ]]; then - printf "│ %${twidth}s " "${types[$i]}" - else - printf "│ %${twidth}s: " "${types[$i]}" - fi - - printf "%${cwidth}s" "${counts[$i]}" - - if [[ $i -eq 1 || $i -eq ${#types} ]]; then - printf " %-7s │\n" "${percentages[$i]}" - else - printf ", %-7s │\n" "${percentages[$i]}" - fi - done - - echo -n "└" - for (( j=0; j < $linelen; j++ )); do - echo -n "─" - done - echo "┘" -} - -# take a screenshot, upload to /img/scrot, and update current symlink -ssh-scrot() { - archey3 - - local name - if [[ "$1" != "" ]]; then - name=$1 - else - echo -n "name: " - read name - fi - - local date=$(date +'%Y-%m-%d') - - local folder="http/img/scrot" - ssh shmibbles.me "mkdir -p $folder/$date" - - if [[ "${?#0}" != "" ]]; then - return 1 - fi - - ssh shmibbles.me "cd $folder; rm current 2>/dev/null; ln -s $date current" - - for i in {3..1}; do - echo -n "$i " - sleep 1 - done - - echo 'cheese!' - sleep .1 - - scrot /tmp/$name.png - convert -scale 250x /tmp/$name.png /tmp/${name}_small.png - - scp /tmp/$name.png /tmp/${name}_small.png shmibbles.me:http/img/scrot/$date - - echo "https://shmibbles.me/img/scrot/$date/$name.png" | tr -d '\n' | xclip -i -selection clipboard - echo "https://shmibbles.me/img/scrot/$date/$name.png" | tr -d '\n' | xclip -i -selection primary - echo "https://shmibbles.me/img/scrot/$date/${name}_small.png" | tr -d '\n' | xclip -i -selection clipboard - echo "https://shmibbles.me/img/scrot/$date/${name}_small.png" | tr -d '\n' | xclip -i -selection primary - - echo 'sent!' - - rm /tmp/$name.png /tmp/${name}_small.png - -} - -make-gif-old() { - - if [[ -z "$1" ]]; then - break - fi - - rm -f make-gif-palette.png - rm -f make-gif-palette.png - rm -f make-gif-in - - rm -f make-gif-in - - ln -s "$1" make-gif-in - - local start - echo -n "start [00:00:00]: " - read start - if [[ -z "$start" ]]; then - start="00:00:00" - fi - - local length - echo -n "length [full]: " - read length - if [[ -z "$length" ]]; then - t="" - length="" - else - t="-t" - fi - - local fps - echo -n "fps [10]: " - read fps - if [[ -z "$fps" ]]; then - fps="10" - fi - - local width - echo -n "width [480]: " - read width - if [[ -z "$width" ]]; then - width="480" - fi - - local subs - echo -n "use subtitles? [y/N]: " - read subs - if [[ "$subs" == "y" || "$subs" == "Y" ]]; then - subs="true" - else - subs="" - fi - - if [[ $subs ]]; then - ffmpeg -y -ss "$start" $t "$length" -i "$1" \ - -copyts -vf "subtitles=make-gif-in,fps=$fps,scale=$width:-1:flags=lanczos,palettegen" make-gif-palette.png - ffmpeg -ss "$start" $t "$length" -i "$1" -i make-gif-palette.png \ - -copyts -filter_complex \ - "subtitles=make-gif-in,fps=$fps,scale=$width:-1:flags=lanczos[x];[x][1:v]paletteuse" \ - out.gif - else - ffmpeg -y -ss "$start" $t "$length" -i "$1" \ - -vf "fps=$fps,scale=$width:-1:flags=lanczos,palettegen" make-gif-palette.png - ffmpeg -ss "$start" $t "$length" -i "$1" -i make-gif-palette.png -filter_complex \ - "fps=$fps,scale=$width:-1:flags=lanczos[x];[x][1:v]paletteuse" \ - out.gif - fi - - rm -f make-gif-palette.png - rm -f make-gif-in -} - -# export a section of a video to gif -make-gif() { - - local i - - local infile="" - local outfile="out.gif" - local start="00:00:00" - local t="" - local length="" - local fps="10" - typeset -i fps - local width="480" - typeset -i width - local subs="n" - - # parse args - local assign=false - local assignopt="" - local interact=true - for i in "$@"; do - if [[ $assign ]]; then - assign=false - case $assignopt in - # output - -o) outfile="$i" ;; - # start - -s) start="$i" ;; - # length - -l) t="-t"; length="$i" ;; - # fps - -f) fps="$i" ;; - # width - -w) width="$i" ;; - # subs? - -t) subs="y" ;; - *) - >&2 echo "err: unrecognised option" - return - ;; - esac - else - case $i in - -*) - assign=true - assignopt="$i" - interact=false - ;; - *) - if [[ -z "$infile" ]]; then - infile="$i" - else - >&2 echo "err: multiple inputs specified" - return - fi - ;; - esac - fi - done - - if [[ $assign ]]; then - >&2 echo "err: malformed arg" - return - fi - - if [[ -z "$infile" ]]; then - >&2 echo "err: no input specified" - return - fi - - # interactive prompting - if [[ $interact ]]; then - read "i?start [00:00:00]: " - if [[ "$i" ]]; then - start="$i" - fi - - read "i?length [full]: " - if [[ "$i" ]]; then - t="-t" - length="$i" - fi - - read "i?fps [10]: " - if [[ "$i" ]]; then - fps="$i" - fi - - read "i?width [480]: " - if [[ "$i" ]]; then - width="$i" - fi - - read -q "subs?use subtitles? [y/N]: " - >&2 echo -e "\n" - - read "i?write to: " - if [[ "$i" ]]; then - outfile="$i" - fi - fi - - rm -f make-gif-palette.png - rm -f make-gif-palette.png - rm -f make-gif-in - - ln -s "$infile" make-gif-in - - >&2 echo "converting..." - - if [[ "$subs" == "y" ]]; then - ffmpeg -loglevel 0 -y -ss "$start" $t "$length" -i "$infile" \ - -copyts -vf "subtitles=make-gif-in,fps=$fps,scale=$width:-1:flags=lanczos,palettegen" make-gif-palette.png - ffmpeg -loglevel 0 -ss "$start" $t "$length" -i "$infile" -i make-gif-palette.png \ - -copyts -filter_complex \ - "subtitles=make-gif-in,fps=$fps,scale=$width:-1:flags=lanczos[x];[x][1:v]paletteuse" \ - make-gif-out - else - ffmpeg -loglevel 0 -y -ss "$start" $t "$length" -i "$infile" \ - -vf "fps=$fps,scale=$width:-1:flags=lanczos,palettegen" make-gif-palette.png - ffmpeg -loglevel 0 -ss "$start" $t "$length" -i "$infile" -i make-gif-palette.png -filter_complex \ - "fps=$fps,scale=$width:-1:flags=lanczos[x];[x][1:v]paletteuse" \ - make-gif-out - fi - - >&2 echo "optimising..." - - rm -f make-gif-palette.png - rm -f make-gif-in - - gifsicle -O3 -o "$outfile" make-gif-out - - rm -f make-gif-out - - >&2 echo "done!" -} - -# um... -fuck() { - local fuck="fuck" - while true; do - echo -en "\e[$((RANDOM%2));$((RANDOM%8+30))m" - - for i in {1..${#fuck}}; do - if [[ $((RANDOM%2)) -eq 1 ]]; then - echo -n $fuck[$i] | tr '[:lower:]' '[:upper:]' - else - echo -n $fuck[$i] - fi - done - - for i in {1..$((RANDOM%20))}; do - echo -n " " - done - done -} - -tmr() { - transmission-daemon - sleep 1 - transmission-remote-cli - transmission-remote localhost --exit -} -- cgit v1.2.3