Updated Twitter PowerShell Script
I’ve made a few updates to my Twitter PowerShell script, including a fix to ensure it complies with a change to the Twitter API and switching to tinyurl. Unfortunately my code highlighter doesn’t work so well with PowerShell so here it is in all it’s B&W glory.
##############################################################################
##
## Tweet-Blogpost.ps1 original code by Mike Ormond (https://mikeo.co.uk)
##
## Take a blogpost URL and post title and post a Twitter status update
## Uses TinyUrl to get a link to the post
##
## Example Usage:
## $postlink = "https://blogs.msdn.com/mikeormond/archive/2008/11/07/a-bit-of-an-experiment.aspx"
## $posttitle = "A Bit of an Experiment"
## $twitusername = "Twitter username here"
## $twitpassword = "Twitter password here"
##
## .\tweet-blogpost.ps1 $postlink $post.title $twitusername $twitpassword
##
##############################################################################
param ( [string] $postlink,
[string] $posttitle,
[string] $twitusername,
[string] $twitpassword)
[System.Reflection.Assembly]::LoadWithPartialName(”System.Web") | Out-Null
function SubmitWebRequest( [string] $RequestUrl,
[string] $RequestMethod,
[string] $RequestContentType,
[string] $PostString,
[string] $Username,
[string] $Password)
{
[System.Net.ServicePointManager]::Expect100Continue = $false
$request = [System.Net.WebRequest]::Create($RequestUrl)
if ($Username) {
$request.Credentials = new-object System.Net.NetworkCredential($Username, $Password)
}
$request.Method = $RequestMethod
if ($RequestMethod -ieq "POST") {
$request.ContentType = $RequestContentType
$formdata = [System.Text.Encoding]::UTF8.GetBytes($PostString)
$request.ContentLength = $formdata.Length
$requestStream = $request.GetRequestStream()
$requestStream.Write($formdata, 0, $formdata.Length)
$requestStream.Close()
}
$response = $request.GetResponse()
$reader = new-object System.IO.StreamReader($response.GetResponseStream())
$returnvalue = $reader.ReadToEnd()
$reader.Close()
return $returnvalue
}
##
## Generate the tiny URL
##
$tinyurlrequest = "https://tinyurl.com/api-create.php?url=" `
+ [System.Web.HttpUtility]::UrlEncode($postlink)
write-progress "Tweeting" "Getting tiny URL" -cu $tinyurlrequest
$tinyurl = SubmitWebRequest $tinyurlrequest "GET"
write-debug "Tweeting - Received tiny URL Response: $($tinyurl)"
##
## Post update to Twitter
##
## Check if we need to truncate post title as we're limited to 140 chars total
if ($posttitle.Length > 100)
{
$posttitle = $posttitle.Substring(0, 100)
}
$tweet = "New blogpost: " + $posttitle + " (" + $tinyurl + ")"
$tweetstring = [String]::Format("status={0}", $tweet)
write-progress "Tweeting" "Posting status update" -cu $tweetstring
write-debug "Tweeting: $($posttitle)"
$twitResponseText = SubmitWebRequest `
"https://twitter.com/statuses/update.xml" `
"POST" `
"application/x-www-form-urlencoded" `
$tweetstring `
$twitusername `
$twitpassword
write-debug "Tweeting - Posted status update. Response: $($twitResponseText)"
Technorati Tags: twitter,powershell
Comments
- Anonymous
January 29, 2009
PingBack from http://blogs.msdn.com/mikeormond/archive/2009/01/30/updated-twitter-powershell-script.aspx