ããã ï¼Dropboxã®diffï¼å·®åï¼ãã¨ããï¼
ããããååãªããDropboxã¸curlã³ãã³ãã§ã¢ã¯ã»ã¹ãããã£ãã®ãï¼ã¨ããã¨ãDropboxã®éå»ã®ãã¼ã¸ã§ã³ã¨ã®å·®åãè¦ããã£ãã®ã ãDropboxã®ç´ æ´ãããããæ©è½ã®ä¸ã¤ã«ãéå»ä¸ã¶æéãããã®ãã¡ã¤ã«ã®å¤æ´å±¥æ´ãä¿æããä»çµã¿ããããéå»ã®ãã¼ã¸ã§ã³ãè¦ããã¨ãã¯...
- Finderã§Dropboxå ã®ãã¡ã¤ã«ãå³ã¯ãªãã¯ãã¦ã以åã®ãã¼ã¸ã§ã³ã表示ãã鏿ããã
- ããã¨ãWebãã©ã¦ã¶ã®Dropboxãã¼ã¸ãéãã¦ããã¼ã¸ã§ã³å±¥æ´ããªã¹ã表示ãããã®ã ã
- ãã®ãªã³ã¯ãã¯ãªãã¯ããã°ããã®å 容ã表示ãããã
- ãã®ãªã³ã¯ãoption-ã¯ãªãã¯ããã°ããã¡ã¤ã«ã¨ãã¦ãã¦ã³ãã¼ããããã
ç´ æ´ãããï¼AppleãOSXã§ãã¼ã¸ã§ã³ã¨ããä»çµã¿ãä½ã以åãããã¼ã¸ã§ã³ç®¡çããã¦ããããã¡ã¤ã«ã®åæãä¿¡é ¼æ§ãé«ãã使ãåæãããã¶ãå¿«é©ã常ã«iDiskã®ä¸æ©å ãé²ãã§ããããããªDropboxã§ãdiffãã¨ããããªã£ãã®ã ã
å äººã®æãæ¢ã
- èªåãããããã¨æã£ããã¨ã¯ãä¸çã®ã©ããã§ã誰ãããã£ã¨è©¦ãã¦ããã
- è»è¼ªã®åçºæãããªãããã«ãã¾ãã¯Webãå¿µå ¥ãã«æ¤ç´¢ããã¹ããªã®ã ã
- ãã®ããã«ãã¦ãäºã¤ã®ä»çµã¿ãè¦ã¤ããã
DropDiffï¼ã³ãã³ãï¼
$ chmod a+x ~/Downloads/dropdiff.sh $ ~/Downloads/dropdiff.sh ~/Dropbox/hello.txt Unhandled DB schema version 2
- å®è¡æ¨©éãä»å ãã¦ãããã¤ãã®ãã¼ã¸ã§ã³ã試ãã¦ã¿ãããã¨ã©ã¼ãåºã¦ãã¾ãã
- ã©ããDropboxã®DBãåç §ãã¦ãã¹ãåå¾ãã¦ãããããªã®ã ãã©ãããããã¾ãã§ãã¦ããªãæãã
- ã¾ãããã¨ãæ£å¸¸ã«å®è¡ã§ããã¨ãã¦ããææ°ãã¡ã¤ã«ã¨ä¸ã¤åã®ãã¼ã¸ã§ã³ã®å·®åã«éå®ãããããã ã
DropboxDiffï¼Chromeæ©è½æ¡å¼µï¼
- ãã¡ãã¯Chromeã®æ©è½æ¡å¼µãGUIã§ã¨ãããå·®åãèªç±ã«é¸æãã¦ãDiffãã¿ã³ã§åºæ¥ãã¯ããªãã ãã©...
- ãã¦ã¹ãããããåã£ãã¾ã¾ããã£ããã«çµããæ°é ããªã...ã
- ï¼è¨å®ã®Diff Programã«ã¯ã/usr/bin/opendiff ãè¨å®ããï¼
ã©ã¡ãããèªåã®ç°å¢ã§ã¯ãã¾ãåãã¦ãããªãã£ã...ã
dropbox_diffããã¸ã§ã¯ãã®éå§
ã¨ããããã§ãèªåã§ä½ã£ã¦ã¿ãæ°ã«ãªã£ã¦ãååã«ã¤ãªãããï¼ãããªçµç·¯ã§curlã§Dropboxã«ã¢ã¯ã»ã¹ããããªã£ãã®ã ï¼
æ¹éãªã©
- ã·ã³ãã«ã«ãdiffã³ãã³ãã®åºåã§ååã
- dropdiff.shãåèã«ãããã¨ããããdiffæ¬æ¥ã®ã³ã¼ããããå¨è¾ºã®ã³ã¼ããèªåã«ã¨ã£ã¦ã¯è¤ééãã
- ãã£ã¦ãå ¨é¨èªåã§æ¸ãç´ãã
- ææ°ãã¼ã¸ã§ã³ã ãã§ãªãããããããã¼ã¸ã§ã³ã®å·®åãã¨ããããã«ããã
ååã®ã³ã¼ã
#!/bin/bash EMAIL_ADRESS=$1 PASSWORD=$2 FILE_NAME=$3 curl -L -c cookie.txt -o output.html https://www.dropbox.com/login TOKEN=`cat output.html | grep -e '<input type="hidden" name="t" value=".*" />' | grep -o 'value=".*"' | grep -o '".*"' | grep -o '[^"].*[^"]'` curl -L -b cookie.txt -c login_cookie.txt -o output.html \ --data-urlencode "t=$TOKEN" \ --data-urlencode "login_email=$EMAIL_ADRESS" \ --data-urlencode "login_password=$PASSWORD" \ https://www.dropbox.com/login curl -L -b login_cookie.txt -o output.html "https://www.dropbox.com/revisions/$FILE_NAME"
ææ°ã®diffã®ã¿åºåã§ãããã¼ã¸ã§ã³
- æåã¯ã¨ã«ããåããã¨ãç®æãã¦ãææ°ãã¼ã¸ã§ã³ã¨ãã®ä¸ã¤åã®diffã®ã¿ãå®ç¾ããã
- ååããã°ã¤ã³ããã¨ããã¾ã§ã¯ã§ãã¦ããã®ã§ã
- ãã¨ã¯ãã¼ã¸ã§ã³å±¥æ´ã®ãã¼ã¸ãåºåãã¦ã
- ãã®ä¸ãããåãã¼ã¸ã§ã³ã¸ã®ãªã³ã¯URLãæãåºãã
- ææ°ãã¼ã¸ã§ã³ã®ä¸ã¤åã®ãã¡ã¤ã«ããã¦ã³ãã¼ããã¦ã
- diffåºåãã¦ããã
- ã³ãã³ã弿°ã«ãã¹ã¯ã¼ããªã©ãå ¥åããã®ã¯ã»ãã¥ãªãã£ä¸ãããããªãã®ã§ãï¼ã³ãã³ãå±¥æ´ã«æ®ã£ã¦ãã¾ãï¼
- ã³ãã³ãå®è¡å¾ã«å¯¾è©±çã«ã¡ã¼ã«ã¢ãã¬ã¹ã¨ãã¹ã¯ã¼ããå ¥åããããã«å¤æ´ããã
#!/bin/bash FILE_PATH=$1 FILE_NAME="${FILE_PATH##*/}" REVISION_FILE_PATH="https://www.dropbox.com/revisions/$FILE_NAME" read -p 'email-adress: ' EMAIL_ADRESS read -s -p 'password: ' PASSWORD; echo curl -L -c cookie.txt -o output.html https://www.dropbox.com/login TOKEN=`cat output.html | grep -e '<input type="hidden" name="t" value=".*" />' | grep -o 'value=".*"' | grep -o '".*"' | grep -o '[^"].*[^"]'` curl -L -b cookie.txt -c login_cookie.txt -o output.html \ --data-urlencode "t=$TOKEN" \ --data-urlencode "login_email=$EMAIL_ADRESS" \ --data-urlencode "login_password=$PASSWORD" \ https://www.dropbox.com/login curl -L -w "%{url_effective}" -b login_cookie.txt -o output.html $REVISION_FILE_PATH echo URLS=(`cat output.html|grep -o '<a href="https://dl-web.dropbox.com/get/.*</a>'|grep -o '"https://.*"'|grep -o '[^"].*[^"]'`) echo ${URLS[@]} CONTENTS=`curl -s -b login_cookie.txt ${URLS[1]}` echo -en $CONTENTS|diff -u - $FILE_PATH
- å®è¡çµæ
$ ./dropbox_curl.sh ~/Dropbox/hello.txt email-adress: [email protected] password: % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 19952 0 19952 0 0 14062 0 --:--:-- 0:00:01 --:--:-- 21639 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 369 0 274 100 95 293 101 --:--:-- --:--:-- --:--:-- 340 100 100k 0 100k 0 0 45941 0 --:--:-- 0:00:02 --:--:-- 163k % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 24212 0 24212 0 0 20839 0 --:--:-- 0:00:01 --:--:-- 23529 https://www.dropbox.com/revisions/hello.txt https://dl-web.dropbox.com/get/hello.txt?w=507561d6&sjid=29 https://dl-web.dropbox.com/get/hello.txt?w=507561d6&sjid=28 --- - 2012-10-07 17:12:28.000000000 +0900 +++ /Users/zari/Dropbox/hello.txt 2012-10-06 13:06:31.000000000 +0900 @@ -1 +1 @@ -hello +hello world!!
以ä¸ãå¿ è¦æå°éã®ã³ã¼ãã®ã¹ãæ¸ã
ç¡é§ãªå¦çãç¹°ãè¿ããåé¤ãã
- login_cookie.txtãæã«å ¥ããã°ããããæåç£ã«Dropboxã«èªç±ã«ã¢ã¯ã»ã¹ã§ããã
- ãã£ã¦ãæ¯åãã°ã¤ã³ããã®ã¯ç¡é§ãªã®ã§ãå¿ è¦ãªã¨ãã ããã°ã¤ã³ããä»çµã¿ã«å¤æ´ã
- å
·ä½çã«ã¯ããã¼ã¸ã§ã³å±¥æ´ã®ãã¼ã¸ã«ã¢ã¯ã»ã¹ããã¨ãããªãã¤ã¬ã¯ããããããã°ã¤ã³ãç´ãããã«ããã
- ï¼ãã°ã¤ã³ãå¿ è¦ãªæã¯ããã°ã¤ã³ãã¼ã¸ã¸ãªãã¤ã¬ã¯ãããã¯ãï¼
- -w "%{url_effective}" ï¼ æå¾ã«ã¢ã¯ã»ã¹ããURLãè¿ããªãã·ã§ã³è¨å®ã
- -Lã¨çµã¿åããããã¨ã§ããªãã¤ã¬ã¯ãå ã®URLãåå¾ã§ããã®ã ã
- åªæã®ãããªé·ãã³ã¼ãã¯ãæ©è½å¥ã«é¢æ°ã«ã¾ã¨ããã
#!/bin/bash FILE_PATH=$1 FILE_NAME="${FILE_PATH##*/}" REVISION_FILE_PATH="https://www.dropbox.com/revisions/$FILE_NAME" dropbox_login() { read -p 'email-adress: ' EMAIL_ADRESS read -s -p 'password: ' PASSWORD; echo curl -L -c cookie.txt -o output.html https://www.dropbox.com/login TOKEN=`cat output.html | grep -e '<input type="hidden" name="t" value=".*" />' | grep -o 'value=".*"' | grep -o '".*"' | grep -o '[^"].*[^"]'` curl -L -b cookie.txt -c login_cookie.txt -o output.html \ --data-urlencode "t=$TOKEN" \ --data-urlencode "login_email=$EMAIL_ADRESS" \ --data-urlencode "login_password=$PASSWORD" \ https://www.dropbox.com/login } revision_files_page() { curl -L -w "%{url_effective}" -b login_cookie.txt -o output.html $REVISION_FILE_PATH } extract_file_urls() { cat output.html|grep -o '<a href="https://dl-web.dropbox.com/get/.*</a>'|grep -o '"https://.*"'|grep -o '[^"].*[^"]' } download_revision_file() { curl -s -b login_cookie.txt ${URLS[$1]} } # ãªãã¤ã¬ã¯ãããæã ããã°ã¤ã³ãç´ã RES=`revision_files_page` if [ $RES != $REVISION_FILE_PATH ]; then dropbox_login revision_files_page fi echo URLS=(`extract_file_urls`) echo ${URLS[@]} CONTENTS=`download_revision_file 1` echo -en $CONTENTS|diff -u - $FILE_PATH
ä»»æã®ãã¼ã¸ã§ã³ãæå®ãã¦diff
- ä¸è¨ã¾ã§ã¯ãææ°ã®ãã¼ã¸ã§ã³ã¨ãã®ä¸ã¤åã®å·®åããã¨ããªãã£ãã
- ããã§ã¯å¯¾è©±çã«æä½ãã¦ãä»»æã®ãã¼ã¸ã§ã³ãæå®ã§ããããã«ããã
- whileãããã¯å
ã対話çã«ä»»æã®ãã¼ã¸ã§ã³ãæå®ããé¨åã
- ä½ãå ¥åããªãå ´åã¯ãææ°ãã¼ã¸ã§ã³ã¨ãã®ä¸ã¤åã®diffã
- ãã¼ã¸ã§ã³çªå·ãä¸ã¤ã ãå ¥åããå ´åã¯ããã¼ã¸ã§ã³çªå·ã¨ãã®ä¸ã¤åã®diffã
- ãã¼ã¸ã§ã³çªå·ãã¹ãã¼ã¹ã§åºåã£ã¦äºã¤å ¥åããå ´åã¯ãäºã¤ã®ãã¼ã¸ã§ã³çªå·ã®diffã
- ãã¼ã¸ã§ã³çªå·ã®ç¯å²ããã§ãã¯ããããè£å©ã³ãã³ãã®å¦çãªã©ã§é·ããªã£ã¦ãããããã£ã¦ãããã¨ã¯å¿ æ»ã«æ¡ä»¶å¤æããã¦ããã ãã
- ã¤ãã§ã«ãDropboxç´ä¸ã®ãã¡ã¤ã«ããæ£å¸¸ã«åããªãã£ãç¶æ ãä¿®æ£ããã
- Dropboxå ã«ãDropboxãã¨ãããã©ã«ããåå¨ããªãéããæ£å¸¸ã®åãäºå®ã
#!/bin/bash FILE_PATH=$1 DROPBOX_PATH="${FILE_PATH##*/Dropbox/}" REVISION_FILE_URL="https://www.dropbox.com/revisions/$DROPBOX_PATH" # Dropboxã¸ãã°ã¤ã³ãã dropbox_login() { read -p 'email-adress: ' EMAIL_ADRESS read -s -p 'password: ' PASSWORD; echo curl -L -c cookie.txt -o output.html https://www.dropbox.com/login TOKEN=`cat output.html | grep -e '<input type="hidden" name="t" value=".*" />' | grep -o 'value=".*"' | grep -o '".*"' | grep -o '[^"].*[^"]'` curl -L -b cookie.txt -c login_cookie.txt -o output.html \ --data-urlencode "t=$TOKEN" \ --data-urlencode "login_email=$EMAIL_ADRESS" \ --data-urlencode "login_password=$PASSWORD" \ https://www.dropbox.com/login } # ãã¡ã¤ã«ã®ãã¼ã¸ã§ã³ç®¡çã®ãã¼ã¸ãåå¾ãã revision_files_page() { curl -L -w "%{url_effective}" -b login_cookie.txt -o output.html $REVISION_FILE_URL } # ãã¼ã¸ã§ã³ãã¨ã®ãã¡ã¤ã«ã®URLãæãåºã extract_file_urls() { cat output.html|grep -o '<a href="https://dl-web.dropbox.com/get/.*</a>'|grep -o '"https://.*"'|grep -o '[^"].*[^"]' } # æå®ãããã¼ã¸ã§ã³ã®ãã¡ã¤ã«ããã¦ã³ãã¼ããã download_revision_file() { curl -s -b login_cookie.txt ${URLS[$(($MAX_VERSION - $1))]} } # ãªãã¤ã¬ã¯ãããæã ããã°ã¤ã³ãç´ã RES=`revision_files_page` if [ $RES != $REVISION_FILE_URL ]; then dropbox_login revision_files_page fi # ãã¡ã¤ã«ã®URLãé åã«ãã¦ããã¼ã¸ã§ã³ã®åæ°ãåå¾ãã URLS=(`extract_file_urls`) MAX_VERSION=${#URLS[@]} # 対話çã«æä½ãã while : do # ãã¼ã¸ã§ã³ãªã¹ãã表示 echo echo '*** Version list(Top is newest) ***' for (( i = $MAX_VERSION; i > 0 ; --i )) do echo -e " $i: Version$i" done # å ¥åå¾ ã¡ read -p 'Select( number [o]pen [h]elp [q]uit )> ' VER1 VER2 # å ¥åã³ãã³ãã®å¦çããã¼ã¸ã§ã³çªå·ãåå¾ãå ¥åå¤ã®ã¨ã©ã¼å¦ç if [[ $VER1 = "q" ]]; then echo 'quit' exit elif [[ $VER1 = "o" ]]; then echo 'open' continue elif [[ $VER1 = "h" ]]; then echo 'help' continue elif [[ $VER1 =~ ^[0-9]*$ ]] && [[ $VER2 =~ ^[0-9]*$ ]]; then if [[ -z "$VER1" ]]; then VER1=$MAX_VERSION fi if [[ -z "$VER2" ]]; then VER2=$VER1 VER1=`expr $VER1 - 1` fi if [[ $VER1 -gt 0 ]] && [[ $VER1 -le $MAX_VERSION ]] && [[ $VER2 -gt 0 ]] && [[ $VER2 -le $MAX_VERSION ]]; then break fi fi echo 'error!' exit done echo "\`diff Version$VER1 Version$VER2\`" echo # æå®ãã¼ã¸ã§ã³ããã¦ã³ãã¼ããã if [[ $(($MAX_VERSION - $VER1)) = 0 ]]; then CONTENTS_1=`cat $FILE_PATH` else CONTENTS_1=`download_revision_file $VER1` fi if [[ $(($MAX_VERSION - $VER2)) = 0 ]]; then CONTENTS_2=`cat $FILE_PATH` else CONTENTS_2=`download_revision_file $VER2` fi # diffåºå diff -u <(echo "$CONTENTS_1") <(echo "$CONTENTS_2") echo
- æå®ãã¼ã¸ã§ã³ããã¦ã³ãã¼ãããã¨ã...
- ææ°ã®ãã¼ã¸ã§ã³ã¯ãOSãã¡ã¤ã«ã·ã¹ãã ã®Dropboxå ã«åå¨ããã®ã§ããããå©ç¨ããã
- ããããä½åãªãã¦ã³ãã¼ãããªããã¨ã§ãå¦çã®é«éåã«ã¤ãªããã®ã ã
ä»ä¸ã
対話çãªæä½ã®openã³ãã³ãã»helpã³ãã³ãã®å¦çã追å ãã¦ãã²ã¨ã¾ãå®äºã
- ã³ã¼ãã¯githubã«ã¢ãããã¼ããã¦ã¿ãã
- http://github.com/zarigani/dropbox_diff
éçºç°å¢
åèãã¼ã¸
ä¹ ãã¶ãã«ã·ã§ã«ã¹ã¯ãªããã触ãã¨ãæ¯åº¦ã®ãã¨ãªãããåªæã®ããã«æãã¦ãã¾ãããããã®ãã¼ã¸ã«åºé¢ããªãã£ããã100ä¸å¹´ããã£ã¦ãdropbox_diff.shã¯å®æããªãã£ãã§ãããããã¹ã¦ã®ç´ æ´ãããæ å ±ãã¼ã¸ã«æè¬ã§ãï¼