Last active
August 29, 2015 14:05
-
-
Save oglops/6098e5efae6a48595218 to your computer and use it in GitHub Desktop.
用gyfcat来上传 可以指定要存的 gif 文件名
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
# the convert call depends on whether you have h264 support in | |
# convert -list format | |
# if you don't have it , then record to -vcodec huffyuv | |
# if you see convert: Not enough pixel data `/tmp/x.avi' @ avi.c/ReadAVIImage/1243. | |
# maybe try removing -vcodec completely and use uncompressed avi | |
if [ $# -eq 2 ]; then | |
echo -e "Usage: \n\t git-batch.sh -wruc\n\n" | |
exit 0 | |
fi | |
control_c() | |
# run if user hits control-c | |
{ | |
echo -en "\n*** Ouch! Exiting ***\n" | |
# cleanup | |
exit $? | |
} | |
# trap keyboard interrupt (control-c) | |
trap control_c SIGINT | |
for last; do true; done | |
if [[ "$last" == *.gif ]] | |
then | |
GIF_FILE=$last | |
echo 'file:' $last | |
fi | |
while getopts "wruc" OPTION; do | |
case $OPTION in | |
w) echo recording window | |
RECORD_WINDOW=true | |
FFCAST_PARAM="-w" | |
# ;& # this means continue to execute the next block without testing its pattern | |
;& | |
r) echo recording | |
TMP_AVI=$(mktemp /tmp/outXXXXXXXXXX.avi) | |
TMP_GIF=$(mktemp /tmp/outXXXXXXXXXX.gif) | |
if [ "$RECORD_WINDOW" = true ] ; then | |
echo "recording window is true" | |
fi | |
RECORD_CMD=$(echo ffcast ${FFCAST_PARAM:--s} ffmpeg -y -r 20 -vcodec huffyuv $TMP_AVI \&\& convert -set delay 10 -layers Optimize $TMP_AVI $TMP_GIF) | |
echo Record command : $RECORD_CMD | |
eval $RECORD_CMD | |
if [ -n "$GIF_FILE" ]; then | |
echo 'copying to specified gif file', $GIF_FILE | |
/bin/cp -f $TMP_GIF $GIF_FILE | |
TMP_GIF=$GIF_FILE | |
fi | |
export TMP_GIF=$TMP_GIF | |
# gwenview $TMP_GIF >/dev/null 2>&1 | |
gthumb --viewer $TMP_GIF >/dev/null 2>&1 | |
echo recorded gif : $TMP_GIF | |
# exit 0 | |
;;& | |
u) maxsize=2048 | |
if [ -n "$GIF_FILE" ]; then | |
TMP_GIF=$GIF_FILE | |
else | |
TMP_GIF=$(ls -t /tmp/out*.gif | head -1) | |
fi | |
actualsize=$(du -k $TMP_GIF | cut -f 1) | |
echo actialsize: $actualsize | |
if [ $actualsize -ge $maxsize ] | |
then | |
TMP_GIF2=$(mktemp /tmp/outXXXXXXXXXX.gif) | |
gifsicle -O2 --colors 64 $TMP_GIF > $TMP_GIF2 | |
TMP_GIF = $TMP_GIF2 | |
fi | |
echo 'uploading gif : '$TMP_GIF | |
# http://imgur.com/tools | |
~/scripts/imgurbash.sh $TMP_GIF | |
exit 0 | |
;;& | |
c) # upload to gyfcat | |
echo Uploading to gyfcat | |
if [ -n "$GIF_FILE" ]; then | |
TMP_GIF=$GIF_FILE | |
fi | |
GYFCAT_KEY=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 10 | head -n 1) | |
curl -i -F "key=$GYFCAT_KEY" -F "acl=private" -F "AWSAccessKeyId=AKIAIT4VU4B7G2LQYKZQ" -F "policy=eyAiZXhwaXJhdGlvbiI6ICIyMDIwLTEyLTAxVDEyOjAwOjAwLjAwMFoiLAogICAgICAgICAgICAiY29uZGl0aW9ucyI6IFsKICAgICAgICAgICAgeyJidWNrZXQiOiAiZ2lmYWZmZSJ9LAogICAgICAgICAgICBbInN0YXJ0cy13aXRoIiwgIiRrZXkiLCAiIl0sCiAgICAgICAgICAgIHsiYWNsIjogInByaXZhdGUifSwKCSAgICB7InN1Y2Nlc3NfYWN0aW9uX3N0YXR1cyI6ICIyMDAifSwKICAgICAgICAgICAgWyJzdGFydHMtd2l0aCIsICIkQ29udGVudC1UeXBlIiwgIiJdLAogICAgICAgICAgICBbImNvbnRlbnQtbGVuZ3RoLXJhbmdlIiwgMCwgNTI0Mjg4MDAwXQogICAgICAgICAgICBdCiAgICAgICAgICB9" -F "success_action_status=200" -F "signature=mk9t/U/wRN4/uU01mXfeTe2Kcoc=" -F "Content-Type=image/gif" -F "file=@$TMP_GIF" https://gifaffe.s3.amazonaws.com/ | |
echo GYFCAT_KEY: $GYFCAT_KEY | |
echo transcoding ... | |
# maybe i shoudl use jq to parse json file | |
# http://stedolan.github.io/jq/ | |
function jsonval { | |
temp=`echo $json | sed 's/\\\\\//\//g' | sed 's/[{}]//g' | awk -v k="text" '{n=split($0,a,","); for (i=1; i<=n; i++) print a[i]}' | sed 's/\"\:\"/\|/g' | sed 's/[\,]/ /g' | sed 's/\"//g' | grep -w $prop` | |
echo ${temp##*|} | |
} | |
json=$(curl http://upload.gfycat.com/transcode/$GYFCAT_KEY --silent) | |
prop='gfyName' | |
gyfid=`jsonval` | |
prop='mp4Url' | |
mp4Url=`jsonval` | |
prop='webmUrl' | |
webmUrl=`jsonval` | |
prop='gifUrl' | |
gifUrl=`jsonval` | |
echo API Response: $json | |
echo | |
echo gyfid: $gyfid | |
echo mp4Url: $mp4Url | |
echo webmUrl: $webmUrl | |
echo gifUrl: $gifUrl | |
echo --------------- | |
echo gyfurl: http://gfycat.com/$gyfid | |
exit 0 | |
;; | |
*) # echo "Incorrect options provided" exit 1 ;; | |
echo "done" | |
;; | |
esac | |
done |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment