function Get-TwitterList()
{
$wc = new-object system.net.webclient
$site = $wc.DownloadString('http://www.mindofroot.com/powershell-twitterers/')
$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
}
function Get-TwitterFriends()
{
param ($username, $password)
$cred = New-Object System.Net.NetworkCredential -argumentList $username, $password
$wc = new-object System.Net.WebClient
$wc.Credentials = $cred
$nbrofpeople = 0
$page = "?page="
$names = @()
$twitter = "http://twitter.com/statuses/"
$friends = $twitter + "friends.xml"
$url = $friends
do {
if ($nbrofpeople -gt 0)
{
$url = $friends+$page+($nbrofpeople/100 +1)
}
[xml]$nameslist = $wc.DownloadString($url)
foreach ($one in $nameslist.users.user)
{
$user = "" | select name, username, twitterurl, linkurl
$user.name = $one.name
$user.username = $one.screen_name
$user.twitterurl = "http://twitter.com/$($one.screen_name)"
$user.linkurl = $one.url
$names += $user
}
$nbrofpeople += 100
} while ($names.count -eq $nbrofpeople)
return $names
}
function Add-TwitterFriend()
{
param($username, $password)
begin
{
$baseurl = 'http://twitter.com/friendships/create/{0}.xml'
$cred = New-Object System.Net.NetworkCredential -ArgumentList $username,$password
}
process
{
$url = $baseurl -f $_.UserName
$request = [Net.WebRequest]::Create($url)
$request.ServicePoint.Expect100Continue = $false
$request.Credentials = $cred
$request.ContentType = "application/x-www-form-urlencoded"
$request.Method = "POST"
$bytes = [System.Text.Encoding]::ASCII.GetBytes('follow=true')
$request.ContentLength = $bytes.Length
$requestStream = [System.IO.Stream]$request.GetRequestStream()
$requestStream.write($bytes, 0, $bytes.Length)
$response = $request.GetResponse()
if ($response)
{
$reader = [System.IO.StreamReader]$response.GetResponseStream()
([xml]$reader.ReadToEnd()).status
}
else
{
Write-Warning "Oops! There was a problem with your request."
Write-Warning $Error[0] | select *
}
}
}
$TwitterUserName=Read-Host "Enter your Twitter Accountname"
$twitterpassword=Read-Host "Enter your Twitter Password"
$friends = Get-TwitterFriends $TwitterUserName $twitterpassword
$friendlist=@()
$friends | foreach {$friendlist+=$_.TwitterURL}
#filter your own name
$list=Get-TwitterList | where {$_.username -notmatch $twitterusername}
foreach ($item in $list) {
if ($friendlist -notcontains $item.Twitterurl) {
Write-Host ("Adding {0} ({1})" -f $item.name,$item.twitterurl) -fore RED
$item | Add-TwitterFriend $TwitterUserName $twitterpassword
}
}