Ps Twitter Api
Problem this snippet solves:
Here is a set of PowerShell functions that give access to the Twitter web based APIs allowing you to interact with the Twitter service from within Windows PowerShell.
How to use this snippet:
Twitter Functions
Internal Helpers
function Shrink-Url() function Shrink-Links() function Set-TwitterCredentials() function Get-TwitterCredentials() function Execute-HTTPGetCommand() function Execute-HTTPPostCommand() function Process-TwitterStatus()
Status
function Get-TwitterPublicTimeline() function Get-TwitterFriendsTimeline() function Get-TwitterUserTimeline() function Get-TwitterStatus() function Set-TwitterStatus() function Get-TwitterReplies() function Destroy-TwitterStatus()
User
function Process-TwitterUsers() function Get-TwitterFriends() function Get-TwitterFollowers() function Get-TwitterUser()
Direct Messages
function Process-TwitterDirectMessages() function Get-TwitterDirectMessages() function Get-TwitterSentDirectMessages() function New-TwitterDirectMessage() function Destroy-TwitterDirectMessage()
Friendship
function Get-TwitterFriendshipExists function Process-Ids() function Get-TwitterSocialGraphFriendIds() function Get-TwitterSocialGraphFollowerIds()
Account
function Is-ValidHexColor() function Verify-TwitterCredentials() function End-TwitterSession() function Set-TwitterDeliveryDevice() function Set-TwitterProfileColors() function Set-TwitterProfileImage() function Set-TwitterProfileBackgroundImage() function Get-TwitterRateLimitStatus() function Set-TwitterProfile()
Favorites
function Get-TwitterFavorites() function Create-TwitterFavorite() function Destroy-TwitterFavorite()
Notification
function Follow-TwitterUser() function Leave-TwitterUser()
Block
function Create-TwitterBlock() function Destroy-TwitterBlock()
Help
function Get-TwitterHelpTest() function Get-TwitterDowntimeSchedule()
3rd Party Services
function Get-TwitterCounterStats() function Get-GroupMemberList()
Code :
#----------------------------------------------------------------------------
# The contents of this file are subject to the "END USER LICENSE AGREEMENT
# FOR F5 Software Development Kit for iControl"; you may not use this file
# except in compliance with the License. The License is included in the
# iControl Software Development Kit.
#
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
# the License for the specific language governing rights and limitations
# under the License.
#
# The Original Code is iControl Code and related documentation
# distributed by F5.
#
# The Initial Developer of the Original Code is F5 Networks,
# Inc. Seattle, WA, USA. Portions created by F5 are Copyright (C) 1996-2008
# F5 Networks, Inc. All Rights Reserved. iControl (TM) is a registered
# trademark of F5 Networks, Inc.
#
# Alternatively, the contents of this file may be used under the terms
# of the GNU General Public License (the "GPL"), in which case the
# provisions of GPL are applicable instead of those above. If you wish
# to allow use of your version of this file only under the terms of the
# GPL and not to allow others to use your version of this file under the
# License, indicate your decision by deleting the provisions above and
# replace them with the notice and other provisions required by the GPL.
# If you do not delete the provisions above, a recipient may use your
# version of this file under either the License or the GPL.
#----------------------------------------------------------------------------
[void] [Reflection.Assembly]::LoadWithPartialName("System.Web")
[void] [Reflection.Assembly]::LoadWithPartialName("System.Text")
[System.Net.ServicePointManager]::Expect100Continue = $false;
$script:g_creds = $null;
#============================================================================
# Shared Functions
#============================================================================
#----------------------------------------------------------------------------
# function Shrink-Url
#----------------------------------------------------------------------------
function Shrink-Url()
{
param([string]$longurl = $null, [string]$provider = "tinyurl");
$shorturl = $null;
if ( $longurl )
{
switch ($provider.ToLower())
{
"is.gd" {
$shorturl = Execute-HTTPGetCommand "http://is.gd/api.php?longurl=$longurl";
}
"tinyurl" {
$shorturl = Execute-HTTPGetCommand "http://tinyurl.com/api-create.php?url=$longurl";
}
"snipurl" {
$shorturl = Execute-HTTPGetCommand "http://snipurl.com/site/snip?r=simple&link=$longurl";
}
default {
$shorturl = Execute-HTTPGetCommand "http://tinyurl.com/api-create.php?url=$longurl";
}
}
}
$shorturl;
}
#----------------------------------------------------------------------------
# function Shrink-Links
#----------------------------------------------------------------------------
function Shrink-Links()
{
param([string]$text = $null, [string]$provider = "tinyurl");
[regex]$regex="(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?"
if ($text -match $regex)
{
$link = $matches[0]
}
#if an embedded url was found, convert it to a shortened link
if ($link)
{
$shrunklink = Shrink-Url $link
$text = $text.Replace($link, $shrunklink)
}
$text;
}
#----------------------------------------------------------------------------
# function Set-TwitterCredentials
#----------------------------------------------------------------------------
function Set-TwitterCredentials()
{
param([string]$user = $null, [string]$pass = $null);
if ( $user -and $pass )
{
$script:g_creds = New-Object System.Net.NetworkCredential -argumentList ($user, $pass);
}
else
{
$creds = Get-TwitterCredentials;
}
}
#----------------------------------------------------------------------------
# function Get-TwitterCredentials
#----------------------------------------------------------------------------
function Get-TwitterCredentials()
{
if ( $null -eq $g_creds )
{
trap { Write-Error "ERROR: You must enter your Twitter credentials for PoshTweet to work!"; continue; }
$c = Get-Credential
if ( $c )
{
$user = $c.GetNetworkCredential().Username;
$pass = $c.GetNetworkCredential().Password;
$script:g_creds = New-Object System.Net.NetworkCredential -argumentList ($user, $pass);
}
}
$script:g_creds;
}
#----------------------------------------------------------------------------
# function Execute-HTTPGetCommand
#----------------------------------------------------------------------------
function Execute-HTTPGetCommand()
{
param([string] $url = $null);
if ( $url )
{
[System.Net.WebClient]$webClient = New-Object System.Net.WebClient
if ( $url.ToLower().Contains("twitter.com") )
{
$webClient.Credentials = Get-TwitterCredentials
}
[System.IO.Stream]$stream = $webClient.OpenRead($url);
[System.IO.StreamReader]$sr = New-Object System.IO.StreamReader -argumentList $stream;
[string]$results = $sr.ReadToEnd();
$results;
}
}
#----------------------------------------------------------------------------
# function Execute-HTTPPostCommand
#----------------------------------------------------------------------------
function Execute-HTTPPostCommand()
{
param([string] $url = $null, [string] $data = $null);
if ( $url -and $data )
{
[System.Net.WebRequest]$webRequest = [System.Net.WebRequest]::Create($url);
$webRequest.ServicePoint.Expect100Continue = $false;
if ( $url.ToLower().Contains("twitter.com") )
{
$webRequest.Credentials = Get-TwitterCredentials
$webRequest.PreAuthenticate = $true;
}
$webRequest.ContentType = "application/x-www-form-urlencoded";
$webRequest.Method = "POST";
$webRequest.Headers.Add("X-Twitter-Client", "PoshTweet");
$webRequest.Headers.Add("X-Twitter-Version", "1.0");
$webRequest.Headers.Add("X-Twitter-URL", "http://devcentral.f5.com/s/poshtweet");
[byte[]]$bytes = [System.Text.Encoding]::UTF8.GetBytes($data);
$webRequest.ContentLength = $bytes.Length;
[System.IO.Stream]$reqStream = $webRequest.GetRequestStream();
$reqStream.Write($bytes, 0, $bytes.Length);
$reqStream.Flush();
[System.Net.WebResponse]$resp = $webRequest.GetResponse();
$rs = $resp.GetResponseStream();
[System.IO.StreamReader]$sr = New-Object System.IO.StreamReader -argumentList $rs;
[string]$results = $sr.ReadToEnd();
$results;
}
}
#============================================================================
# Status Functions
#============================================================================
#----------------------------------------------------------------------------
# Helper functions
#----------------------------------------------------------------------------
function Process-TwitterStatus()
{
param([string]$sxml = $null, [bool]$raw = $false);
if ( $sxml )
{
if ( $raw )
{
$sxml;
}
else
{
[xml]$xml = $sxml;
if ( $xml.statuses.status )
{
$stats = $xml.statuses.status;
}
elseif ($xml.status )
{
$stats = $xml.status;
}
$stats | Foreach-Object -process {
$info = "by " + $_.user.screen_name + ", " + $_.created_at;
if ( $_.source ) { $info = $info + " via " + $_.source; }
if ( $_.in_reply_to_screen_name ) { $info = $info + " in reply to " + $_.in_reply_to_screen_name; }
"-------------------------";
$_.text;
$info;
};
"-------------------------";
}
}
}
#----------------------------------------------------------------------------
# public_timeline
#----------------------------------------------------------------------------
function Get-TwitterPublicTimeline()
{
param([bool]$raw = $false);
$results = Execute-HTTPGetCommand "http://twitter.com/statuses/public_timeline.xml";
Process-TwitterStatus $results $raw;
}
#----------------------------------------------------------------------------
# friends_timeline
#----------------------------------------------------------------------------
function Get-TwitterFriendsTimeline()
{
param (
[string]$since = $null,
[int]$since_id = $null,
[int]$count = $null,
[int]$page = $null,
[bool]$raw = $false
);
if ( $since )
{
$args = "?since=$since";
}
if ( $since_id )
{
if ( $args ) { $args = "${args}&" } else { $args = "?" }
$args = "${args}since_id=$since_id";
}
if ( $count )
{
if ( $args ) { $args = "${args}&" } else { $args = "?" }
$args = "${args}count=$count";
}
if ( $page )
{
if ( $args ) { $args = "${args}&" } else { $args = "?" }
$args = "${args}page=$page";
}
Write-Host "Requesting URI: http://twitter.com/statuses/friends_timeline.xml${args}";
$results = Execute-HTTPGetCommand "http://twitter.com/statuses/friends_timeline.xml${args}";
Process-TwitterStatus $results $raw
}
#----------------------------------------------------------------------------
#user_timeline
#----------------------------------------------------------------------------
function Get-TwitterUserTimeline()
{
param([string]$username = $null, [bool]$raw = $false);
if ( $username )
{
$username = "/$username";
}
$results = Execute-HTTPGetCommand "http://twitter.com/statuses/user_timeline$username.xml";
Process-TwitterStatus $results $raw
}
#----------------------------------------------------------------------------
# show
#----------------------------------------------------------------------------
function Get-TwitterStatus()
{
param([string]$id, [bool]$raw = $false);
if ( $id )
{
$results = Execute-HTTPGetCommand "http://twitter.com/statuses/show/" + $id + ".xml";
Process-TwitterStatus $results $raw;
}
}
#----------------------------------------------------------------------------
# update
#----------------------------------------------------------------------------
function Set-TwitterStatus()
{
param([string]$status, [int]$in_reply_to_status_id = $null, [bool]$raw = $false);
$encstatus = [System.Web.HttpUtility]::UrlEncode("$status");
$args = "status=$encstatus";
if ( $in_reply_to_status_id )
{
$args += "&in_reply_to_status_id=${in_reply_to_status_id}";
}
$results = Execute-HTTPPostCommand "http://twitter.com/statuses/update.xml" $args;
Process-TwitterStatus $results $raw;
}
#----------------------------------------------------------------------------
# replies
#----------------------------------------------------------------------------
function Get-TwitterReplies()
{
param([bool]$raw = $false);
$results = Execute-HTTPGetCommand "http://twitter.com/statuses/replies.xml";
Process-TwitterStatus $results $raw;
}
#----------------------------------------------------------------------------
# destroy
#----------------------------------------------------------------------------
function Destroy-TwitterStatus()
{
param([string]$id = $null);
if ( $id )
{
Execute-HTTPPostCommand "http://twitter.com/statuses/destroy/$id.xml", "id=$id";
}
}
#============================================================================
# User Functions
#============================================================================
#----------------------------------------------------------------------------
# Helper functions
#----------------------------------------------------------------------------
function Process-TwitterUsers()
{
param([string]$sxml = $null, [bool]$raw = $false);
if ( $sxml )
{
if ( $raw )
{
$sxml;
}
else
{
[xml]$xml = $sxml;
if ( $xml.users.user )
{
$user = $xml.users.user;
}
elseif ($xml.user )
{
$user = $xml.user;
}
$user | Foreach-Object -process {
$id = $_.id;
$screen_name = $_.screen_name;
$name = $_.name;
$desc = $_.description;
$url = $_.url;
$followers_count = $_.followers_count;
$last_status = $_.status.text;
"-------------------------";
"$screen_name / $name (# $id , $followers_count followers) / $url";
"Bio: $desc";
"Tweet: $last_status";
};
"-------------------------";
}
}
}
#----------------------------------------------------------------------------
# friends
#----------------------------------------------------------------------------
function Get-TwitterFriends()
{
param([string]$id_or_screenname, [string]$page = $null, [bool]$raw = $false);
if ( $id_or_screenname )
{
$id_or_screenname = "/$id_or_screenname";
}
if ( $page )
{
$page = "?page=$page";
}
Write-Host "Requesting: http://twitter.com/statuses/friends$id_or_screenname.xml$page";
$results = Execute-HTTPGetCommand "http://twitter.com/statuses/friends$id_or_screenname.xml$page";
Process-TwitterUsers $results $raw;
}
#----------------------------------------------------------------------------
# followers
#----------------------------------------------------------------------------
function Get-TwitterFollowers()
{
param([string]$id_or_screenname, [string]$page = $null, [bool]$raw = $false);
if ( $id_or_screenname )
{
$id_or_screenname = "/$id_or_screenname";
}
if ( $page )
{
$page = "?page=$page";
}
Write-Host "Requesting: http://twitter.com/statuses/followers$id_or_screenname.xml$page";
$results = Execute-HTTPGetCommand "http://twitter.com/statuses/followers$id_or_screenname.xml$page";
Process-TwitterUsers $results $raw;
}
#----------------------------------------------------------------------------
# show
#----------------------------------------------------------------------------
function Get-TwitterUser()
{
param([string]$id = $null, [string]$email = $null, [bool]$raw = $false);
$url = $null;
if ( $id )
{
$url = "http://twitter.com/users/show/$id.xml";
}
elseif ( $email )
{
$url = "http://twitter.com/users/show.xml?email=$email";
}
if ( $url )
{
$results = Execute-HTTPGetCommand $url;
PRocess-TwitterUsers $results $raw;
}
}
#============================================================================
# Direct Message Functions
#============================================================================
#----------------------------------------------------------------------------
# Helper functions
#----------------------------------------------------------------------------
function Process-TwitterDirectMessages()
{
param([string]$sxml = $null, [bool]$raw = $false);
if ( $sxml )
{
if ( $raw )
{
$sxml;
}
else
{
[xml]$xml = $sxml;
if ( $xml.{direct-messages}.direct_message )
{
$dm = $xml.{direct-messages}.direct_message;
}
elseif ($xml.direct_message )
{
$dm = $xml.direct_message;
}
$dm | Foreach-Object -process {
$id = $_.id;
$text = $_.text;
$sender_screen_name = $_.sender_screen_name;
$name = $_.sender.name;
$created_at = $_.created_at;
"-------------------------";
"(DM #$id) $text";
"by $sender_screen_name / $name on $created_at";
};
"-------------------------";
}
}
}
#----------------------------------------------------------------------------
# direct_messages
#----------------------------------------------------------------------------
function Get-TwitterDirectMessages()
{
param([string]$since = $null, [string]$since_id = $null, [string]$page = $null, [bool]$raw = $false);
$args = $null;
if ( $since )
{
$args = "?since=$since";
}
elseif ( $since_id )
{
$args = "?since_id=$since_id";
}
elseif ( $page )
{
$args = "?page=$page";
}
$results = Execute-HTTPGetCommand "http://twitter.com/direct_messages.xml$args";
Process-TwitterDirectMessages $results $raw;
}
#----------------------------------------------------------------------------
# sent
#----------------------------------------------------------------------------
function Get-TwitterSentDirectMessages()
{
param([string]$since = $null, [string]$since_id = $null, [string]$page = $null, [bool]$raw = $false);
$args = $null;
if ( $since )
{
$args = "?since=$since";
}
elseif ( $since_id )
{
$args = "?since_id=$since_id";
}
elseif ( $page )
{
$args = "?page=$page";
}
$results = Execute-HTTPGetCommand "http://twitter.com/direct_messages/sent.xml$args";
Process-TwitterDirectMessages $results $raw;
}
#----------------------------------------------------------------------------
# new
#----------------------------------------------------------------------------
function New-TwitterDirectMessage()
{
param([string]$user = $null, [string]$text = $null, [bool]$raw = $false);
if ( $user -and $text )
{
$enctext = [System.Web.HttpUtility]::UrlEncode("$text");
$results = Execute-HTTPPostCommand "http://twitter.com/direct_messages/new.xml" "user=$user&text=$enctext"
Process-TwitterDirectMessages $results $raw;
}
}
#----------------------------------------------------------------------------
# destroy
#----------------------------------------------------------------------------
function Destroy-TwitterDirectMessage()
{
param([string]$id = $null);
if ( $id )
{
$results = Execute-HTTPPostCommand "http://twitter.com/direct_messages/destroy/$id.xml" "id=$id";
}
}
#============================================================================
# Friendship Functions
#============================================================================
#----------------------------------------------------------------------------
# create
#----------------------------------------------------------------------------
function Create-TwitterFriendship()
{
param([string]$id = $null, [bool]$follow = $true, [bool]$raw = $false);
if ( $id )
{
$follow = $follow.ToString().ToLower();
$results = Execute-HTTPPostCommand "http://twitter.com/friendsips/create/${id}.xml" "id=${id}&follow=${follow}"
Process-TwitterUsers $results $raw;
}
}
#----------------------------------------------------------------------------
# destroy
#----------------------------------------------------------------------------
function Destroy-TwitterFriendship()
{
param([string]$id = $null, [bool]$raw = $false);
if ( $id )
{
$results = Execute-HTTPPostCommand "http://twitter.com/friendships/destroy/${id}.xml" "id=${id}"
$results;
Process-TwitterUsers $results $raw;
}
}
#----------------------------------------------------------------------------
# exists
#----------------------------------------------------------------------------
function Get-TwitterFriendshipExists
{
param([string]$user_a = $null, [string]$user_b = $null);
if ( $user_a -and $user_b )
{
$results = Execute-HTTPGetCommand "http://twitter.com/friendships/exists.xml?user_a=${user_a}&user_b=${user_b}";
$results;
}
}
#============================================================================
# Social Graph Functions
#============================================================================
#----------------------------------------------------------------------------
# Helper Functions
#----------------------------------------------------------------------------
function Process-Ids()
{
param([string]$sxml = $null, [bool]$raw = $false);
if ( $sxml )
{
if ( $raw )
{
$sxml;
}
else
{
[xml]$x = $sxml;
$i = 1;
$x.ids.id | ForEach-Object -Process {
$info = "[$i] : " + $_;
$info;
$i++;
}
}
}
}
#----------------------------------------------------------------------------
# ids (friends)
#----------------------------------------------------------------------------
function Get-TwitterSocialGraphFriendIds()
{
param([string]$id = $null, [bool]$raw = $false);
$args = "";
if ( $id )
{
$args = "?id=${id}";
}
$results = Execute-HTTPGetCommand "http://twitter.com/friends/ids.xml$args";
Process-Ids $results $raw;
}
#----------------------------------------------------------------------------
# ids (followers)
#----------------------------------------------------------------------------
function Get-TwitterSocialGraphFollowerIds()
{
param([string]$id = $null, [bool]$raw = $false);
$args = "";
if ( $id )
{
$args = "?id=${id}";
}
$results = Execute-HTTPGetCommand "http://twitter.com/followers/ids.xml$args";
Process-Ids $results $raw;
}
#============================================================================
# Account Functions
#============================================================================
#----------------------------------------------------------------------------
# helper functions
#----------------------------------------------------------------------------
function Is-ValidHexColor()
{
param([string]$color_in_hex = $null)
[bool]$valid = $false;
if ( $color_in_hex )
{
[regex]$regex3 = "[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]";
[regex]$regex6 = "[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]";
if ( ($color_in_hex.Length -eq 3) -and ($color_in_hex -match $regex3) )
{
$valid = $true;
}
elseif ( ($color_in_hex.Length -eq 6) -and ($color_in_hex -match $regex6) )
{
$valid = $true;
}
}
$valid;
}
#----------------------------------------------------------------------------
# verify_credentials
#----------------------------------------------------------------------------
function Verify-TwitterCredentials()
{
$results = Execute-HTTPGetCommand "http://twitter.com/account/verify_credentials.xml";
$results;
}
#----------------------------------------------------------------------------
# end_session
#----------------------------------------------------------------------------
function End-TwitterSession()
{
$results = Execute-HTTPPostCommand "http://twitter.com/account/end_session.xml" "";
$results;
}
#----------------------------------------------------------------------------
# update_delivery_device
#----------------------------------------------------------------------------
function Set-TwitterDeliveryDevice()
{
param([string]$device = $null);
if ( $device )
{
if ( $device.Equals("sms") -or $device.Equals("im") -or $device.Equals("none") )
{
$results = Execute-HTTPPostCommand "http://twitter.com/account/update_delivery_device.xml?device=$device" "device=$device";
$results;
}
else
{
Write-Error "device must be either sms, im, or none!"
}
}
}
#----------------------------------------------------------------------------
# update_profile_colors
#----------------------------------------------------------------------------
function Set-TwitterProfileColors()
{
param(
[string]$background_color = $null,
[string]$text_color = $null,
[string]$link_color = $null,
[string]$sidebar_fill_color = $null,
[string]$sidebar_border_color = $null);
$args = $null;
if ( $background_color )
{
if ( Is-ValidHexColor $background_color )
{
if ( $args ) { $args = "$args&"; }
$args = "${args}profile_background_color=$background_color";
}
else
{
Write-Error "background_color '$background_color' must be a 3 or 6 valid hexadecimal value!";
}
}
if ( $text_color )
{
if ( Is-ValidHexColor $text_color )
{
if ( $args ) { $args = "$args&"; }
$args = "${args}profile_text_color=$text_color";
}
else
{
Write-Error "text_color '$text_color' must be a 3 or 6 valid hexadecimal value!";
}
}
if ( $link_color )
{
if ( Is-ValidHexColor $link_color )
{
if ( $args ) { $args = "$args&"; }
$args = "${args}profile_link_color=$link_color";
}
else
{
Write-Error "link_color '$link_color' must be a 3 or 6 valid hexadecimal value!";
}
}
if ( $sidebar_fill_color )
{
if ( Is-ValidHexColor $sidebar_fill_color )
{
if ( $args ) { $args = "$args&"; }
$args = "${args}profile_sidebar_fill_color=$sidebar_fill_color";
}
else
{
Write-Error "sidebar_fill_color '$sidebar_fill_color' must be a 3 or 6 valid hexadecimal value!";
}
}
if ( $sidebar_border_color )
{
if ( Is-ValidHexColor $sidebar_border_color )
{
if ( $args ) { $args = "$args&"; }
$args = "${args}profile_sidebar_border_color=$sidebar_border_color";
}
else
{
Write-Error "sidebar_border_color '$sidebar_border_color' must be a 3 or 6 valid hexadecimal value!";
}
}
if ( $args )
{
Write-Host "http://twitter.com/account/update_profile_colors.xml - $args";
$results = Execute-HTTPPostCommand "http://twitter.com/account/update_profile_colors.xml" $args;
$results;
}
}
#----------------------------------------------------------------------------
# update_profile_image
#----------------------------------------------------------------------------
function Set-TwitterProfileImage()
{
param([string]$image = $null);
if ( $image )
{
$results = Execute-HTTPPostCommand "http://twitter.com/account/update_profile_image.xml" "image=$image";
$results;
}
}
#----------------------------------------------------------------------------
# update_profile_background_image
#----------------------------------------------------------------------------
function Set-TwitterProfileBackgroundImage()
{
param([string]$image = $null);
if ( $image )
{
$results = Execute-HTTPPostCommand "http://twitter.com/account/update_profile_background_image.xml" "image=$image";
$results;
}
}
#----------------------------------------------------------------------------
# rate_limit_status
#----------------------------------------------------------------------------
function Get-TwitterRateLimitStatus()
{
param([bool]$raw = $false);
$sXml = Execute-HTTPGetCommand "http://twitter.com/account/rate_limit_status.xml";
if ( $sXml )
{
if ( $raw )
{
$sXml;
}
else
{
[xml]$results = $sXml;
$remaining_hits = $results.hash.{remaining-hits}.get_InnerText();
$hourly_limit = $results.hash.{hourly-limit}.get_InnerText();
$reset_time_in_seconds = $results.hash.{reset-time-in-seconds}.get_InnerText();
$reset_time = $results.hash.{reset-time}.get_InnerText();
"Remaining Hits: $remaining_hits";
"Hourly Limit : $hourly_limit";
"Reset Time (s): $reset_time_in_seconds s.";
"Reset Time : $reset_time";
}
}
}
#----------------------------------------------------------------------------
# update_profile
#----------------------------------------------------------------------------
function Set-TwitterProfile()
{
param(
[string]$name = $null,
[string]$email = $null,
[string]$url = $null,
[string]$location = $null,
[string]$description = $null);
$args = $null;
if ( $name )
{
if ( $args ) { $args = "$args&"; }
$args = "${args}name=$name";
}
if ( $email )
{
if ( $args ) { $args = "$args&"; }
$args = "${args}email=$email";
}
if ( $url )
{
if ( $args ) { $args = "$args&"; }
$args = "${args}url=$url";
}
if ( $location )
{
if ( $args ) { $args = "$args&"; }
$args = "${args}location=$location";
}
if ( $description )
{
if ( $args ) { $args = "$args&"; }
$args = "${args}description=$description";
}
if ( $args )
{
$results = Execute-HTTPPostCommand "http://twitter.com/account/update_profile.xml" $args;
$results;
}
}
#============================================================================
# Favorite Functions
#============================================================================
#----------------------------------------------------------------------------
# favorites
#----------------------------------------------------------------------------
function Get-TwitterFavorites()
{
param([string]$id, [string]$page = $null, [bool]$raw = $false);
if ( $id )
{
$id = "/$id";
}
if ( $page )
{
$page = "?page=$page";
}
$results = Execute-HTTPGetCommand "http://twitter.com/favorites${id}.xml${page}";
Process-TwitterStatus $results $raw;
}
#----------------------------------------------------------------------------
# create
#----------------------------------------------------------------------------
function Create-TwitterFavorite()
{
param([string]$id, [bool]$raw = $false);
if ( $id )
{
$id = "/$id";
}
$results = Execute-HTTPPostCommand "http://twitter.com/favorites/create${id}.xml" "id=${id}";
Process-TwitterStatus $results $raw;
}
#----------------------------------------------------------------------------
# destroy
#----------------------------------------------------------------------------
function Destroy-TwitterFavorite()
{
param([string]$id, [bool]$raw = $false);
if ( $id )
{
$id = "/$id";
}
$results = Execute-HTTPPostCommand "http://twitter.com/favorites/destroy${id}.xml" "id=${id}";
Process-TwitterStatus $results $raw;
}
#============================================================================
# Notification Functions
#============================================================================
#----------------------------------------------------------------------------
# follow
#----------------------------------------------------------------------------
function Follow-TwitterUser()
{
param([string]$id, [bool]$raw = $false);
if ( $id )
{
$results = Execute-HTTPPostCommand "http://twitter.com/notifications/follow/${id}.xml" "id=${id}";
Process-TwitterUsers $results $raw;
}
}
#----------------------------------------------------------------------------
# leave
#----------------------------------------------------------------------------
function Leave-TwitterUser()
{
param([string]$id, [bool]$raw = $false);
if ( $id )
{
$results = Execute-HTTPPostCommand "http://twitter.com/notifications/leave/${id}.xml" "id=${id}";
Process-TwitterUsers $results $raw;
}
}
#============================================================================
# Block Functions
#============================================================================
#----------------------------------------------------------------------------
# create
#----------------------------------------------------------------------------
function Create-TwitterBlock()
{
param([string]$id, [bool]$raw = $false);
if ( $id )
{
$results = Execute-HTTPPostCommand "http://twitter.com/blocks/create/${id}.xml" "id=${id}";
Process-TwitterUsers $results $raw;
}
}
#----------------------------------------------------------------------------
# destroy
#----------------------------------------------------------------------------
function Destroy-TwitterBlock()
{
param([string]$id, [bool]$raw = $false);
if ( $id )
{
$results = Execute-HTTPPostCommand "http://twitter.com/blocks/destroy/${id}.xml" "id=${id}";
Process-TwitterUsers $results $raw;
}
}
#============================================================================
# Help Functions
#============================================================================
#----------------------------------------------------------------------------
# test
#----------------------------------------------------------------------------
function Get-TwitterHelpTest()
{
$results = Execute-HTTPGetCommand "http://twitter.com/help/test.xml";
$results;
}
#----------------------------------------------------------------------------
# downtime_schedule
#----------------------------------------------------------------------------
function Get-TwitterDowntimeSchedule()
{
$results = Execute-HTTPGetCommand "http://twitter.com/help/downtime_schedule.xml";
$results;
}
#============================================================================
# TwitterCounter
#============================================================================
#----------------------------------------------------------------------------
# Get-TwitterCounterStats
#----------------------------------------------------------------------------
function Get-TwitterCounterStats()
{
param([string]$username = $null, [int]$results = 14, [bool]$raw = $false);
$output = "xml";
$stats = $null;
if ( $username )
{
$stats = Execute-HTTPGetCommand "http://twittercounter.com/api/?username=$username&output=$output&results=$results"
}
if ( !$raw )
{
$stats = [xml]$stats;
$stats.twittercounter
}
else
{
$stats;
}
}
#============================================================================
# Utilities
#============================================================================
function Get-GroupMemberList()
{
param([string]$url = $null, [string]$tagstart = $null);
if ( $tagstart -eq $null ) { $tagstart = "entrybody"; }
# Posh Twitter Users "http://www.mindofroot.com/powershell-twitterers/";
if ( $url )
{
$site = Execute-HTTPGetRequest $url;
$previous = @()
$start = $site.IndexOf('')
$site = $site.substring($start)
$start = $site.IndexOf('')
$site = $site.substring($start)
$end = $site.IndexOf('
') + 5
[xml]$doc = $site.substring(0,$end)
$results = $doc.ul.li | select @{name='Name';Expression={$_.a.'#text'}}, @{name='TwitterURL';Expression={$_.a.href}}, @{name='UserName';Expression={$_.a.href -replace 'http://twitter.com/'}}
$results = $results[1..($results.count-1)]
return $results
}
}Published Mar 09, 2015
Version 1.0CodeCentral_194
Cirrostratus
Joined May 05, 2019
CodeCentral_194
Cirrostratus
Joined May 05, 2019
No CommentsBe the first to comment