обращаю внимание на отсутствие кавычек. если xclip вернет "ничего", youtube-dl получит не два аргумента, а три - "youtube-dl" "-g" и "", как нормальный язык, а не БАСХ. (да, я знаю про '"$(ебоныноссо)"' ("''" это кавычки моего цитирования))
например savefrom выглядел бы так. (мне было лень проверять, поэтому я переписал, но не проверял)
#!/bin/fish
set c (tempfile)
function --on-signal EXIT cleanup;
rm "$c"
end
set ua 'Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.12) Gecko/20101028 Firefox/3.6.12'
set u (echo "$1"|urlencode)
curl -A "$ua" -c "$c" "http://savefrom.net/$1" -s > /dev/null
curl -s -A "$ua" -b "$c" 'http://en.savefrom.net/savefrom.php' -d "sf_url=$u&sf_submit.x=0&sf_submit.y=0" | tr -d \\n |
# Wasted half an hour on this crazy shit
sed -e 's/.*eval(unescape(\([^)]*\)).*/print(unescape(\1));/' | js |
sed -e 's/.*>\(var[^<]*\)<.*/\1/;s/\;var s=document.*tex/\;/;s/eval(\([^;]*\))\;.*$/\1\;'\''\;print(t);/' | js |
sed -e 's#window\['\''\\x65\\x76\\x61\\x6c'\''\](f)#print(f)#' | cat (echo 'u62=function(a,b,c){return a.replace(c,b);};'|psub) - | js |
sed -e 's/eval/print/' | js |
perl -ne 's#.*?{"url":"([^"]*)".*#\1#g and print' | sed -e 's#\\\/#/#g'
@l29ah автор fish'а считает что process substitution is evil, поэтому в fish нет <(говно) как части синтаксиса, но есть команда psub которая при использовании в виде (говно|psub) дает такое же поведение
дважды напиздел насчет квотинга. когда тестил оказывается по ошибке массив создал и неправильно понял результат. правильно (с необходимым количеством квотинга) так:
#!/bin/fish
set c (tempfile)
function --on-signal EXIT cleanup;
rm $c
end
set ua 'Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.12) Gecko/20101028 Firefox/3.6.12'
set u (echo $1|urlencode)
curl -A $ua -c $c "http://savefrom.net/$1" -s > /dev/null
curl -s -A $ua -b $c 'http://en.savefrom.net/savefrom.php' -d "sf_url=$u&sf_submit.x=0&sf_submit.y=0" | tr -d \\n |
# Wasted half an hour on this crazy shit
sed -e 's/.*eval(unescape(\([^)]*\)).*/print(unescape(\1));/' | js |
sed -e 's/.*>\(var[^<]*\)<.*/\1/;s/\;var s=document.*tex/\;/;s/eval(\([^;]*\))\;.*$/\1\;'\''\;print(t);/' | js |
sed -e 's#window\['\''\\x65\\x76\\x61\\x6c'\''\](f)#print(f)#' | cat (echo 'u62=function(a,b,c){return a.replace(c,b);};'|psub) - | js |
sed -e 's/eval/print/' | js |
perl -ne 's#.*?{"url":"([^"]*)".*#\1#g and print' | sed -e 's#\\\/#/#g'