使用Windows .bat文件代码发布到Twitter帐户

时间:2014-05-04 03:59:00

标签: bash command-line github ssh

我试图设置一个在git提交后运行的自动推文脚本。我使用Windows 7在命令行中可以使用curl。

我不确定如何使用语言Windows脚本运行设置变量,也不确定oauth进程是否正确。

我有api密钥和秘密,以及消费者密钥和秘密,但我不知道如何将它们全部包装在一起。

以下是我试图用作基础的代码mashup代码:

#!/bin/sh

# PATH modification needed for http_post and oauth_sign
export PATH=$PATH:/usr/local/bin

toplevel_path=`git rev-parse --show-toplevel`
toplevel_dir=`basename "$toplevel_path"`

branch=`git rev-parse --abbrev-ref HEAD`
subject=`git log --pretty=format:%s -n1`
hashtags="#code #$toplevel_dir"
tweet=$hashtags' ['$branch']: "'$subject'"'

# truncate tweets that are longer than 140 characters
if [ ${#tweet} -gt 140 ]
    then
        tweet_trunc=$(echo $tweet | cut -c1-137)
        tweet=${tweet_trunc}...
fi

//set vars
consumer_key="mPijnvYpD0sHAY8r*******"
consumer_secret="OWuvuyQeYrT3ToJgyvNdR6baNuDldmTDF5IIJCI************"
access_token="2476143012-ld78CrgnNY3kUmD0QRdvIchXeDC13nO3********"
access_secret="3HTdOlf8jCVzPi5I9usV7rIbGFtM5f****************"

//build oauth
//post data

//example curl code found during research
curl --request 'POST' 'https://api.twitter.com/1.1/statuses/update.json' --header 'Authorization: OAuth oauth_consumer_key="mPijnvYpD0sHAY8r6fkox0KBj", oauth_nonce="OWuvuyQeYrT3ToJgyvNdR6baNuDldmTDF5IIJCIablQbyHA2PS", oauth_signature="Ba6IB8uH2SjtrK8a%2FgZnqCgvIKs%3D", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1346207448", oauth_token="14814762-vvYtBOLX8hBAQ0i0f1k4wxrioG1jOk49MJrqn3myE", oauth_version="1.0"' --verbose -F "media[]=@mack.jpg" -F "status=Test from cURL" --header "Expect: "

任何帮助都表示赞赏。

1 个答案:

答案 0 :(得分:1)

兄弟,在Windows上你应该立即使用PowerShell。 .bat很蹩脚!

$toplevel_path = git rev-parse --show-toplevel
$toplevel_dir = Split-Path $toplevel_path -Leaf
$branch = git rev-parse --abbrev-ref HEAD
$subject = git log --pretty=format:%s -n1
$hashtags = "#code #$toplevel_dir"
$tweet = '{0} [{1}]: "{2}"' -f $hashtags, $branch, $subject

if ($tweet.length -gt 140) {
  $tweet = $tweet.substring(0,137)
}

$oauths =
  'oauth_consumer_key="mPijnvYpD0sHAY8r6fkox0KBj"',
  'oauth_nonce="OWuvuyQeYrT3ToJgyvNdR6baNuDldmTDF5IIJCIablQbyHA2PS"',
  'oauth_signature="Ba6IB8uH2SjtrK8a%2FgZnqCgvIKs%3D"',
  'oauth_signature_method="HMAC-SHA1"',
  'oauth_timestamp="1346207448"',
  'oauth_token="14814762-vvYtBOLX8hBAQ0i0f1k4wxrioG1jOk49MJrqn3myE"',
  'oauth_version="1.0"'

$header = 'Authorization: OAuth {0}' -f ($oauths -join ',')

curl --verbose --request POST -F 'media[]=@mack.jpg' `
  -F 'status=Test from cURL' --header 'Expect: ' `
  --header $header https://api.twitter.com/1.1/statuses/update.json
  • 命令替换实际上比使用Bash
  • 更好
  • PowerShell“printf”很酷
  • 数组很酷
  • 延续字符`虽然太小但很难看到