PERL Code to change Google talk status
Code : stat.pl
The following code changes the status of gmail/gtalk user status.
Requires NET::XMPP module, and with SSL modules installed.
#!/usr/bin/perl
#usage : perl stat.pl <status>
use strict;
use Net::XMPP;
## Pls fill in these here :)
my $username = "";
my $password = "";
my $hostname = 'talk.google.com';
my $port = 5222;
my $componentname = 'gmail.com';
my $connectiontype = 'tcpip';
my $tls = 1;
my $Con = new Net::XMPP::Client(debuglevel=>0);
my $status = $Con->Connect(
hostname => $hostname,
port => $port,
componentname => $componentname,
connectiontype => $connectiontype,
tls => $tls,
timeout => 10);
if (!(defined($status))) {
exit(0);
}
my $sid = $Con->{SESSION}->{id};
$Con->{STREAM}->{SIDS}->{$sid}->{hostname} = $componentname;
my @result = $Con->AuthSend(
username => $username,
password => $password,
resource => "neuron");
$Con->Send("<iq type='get' to='gmail.com'><query xmlns='http://jabber.org/protocol/disco#info'/></iq>");
$Con->Process();
my $iq = $Con->SendAndReceiveWithID("<iq type='get' to='$username\@gmail.com'><query xmlns='google:shared-status'/></iq>");
my ($status,$statuslist,$show) = ("","","");
$status = $1 if($iq->GetXML() =~ m/<status>(.*?)<\/status>/);
$statuslist = $1 if($iq->GetXML() =~ m/(<status-list(.*)<\/status-list>)/);
$show = $1 if($iq->GetXML() =~ m/<show>(.*?)<\/show>/);
my $status = $ARGV[0];
#Change status
$Con->Send("<iq type='set' to='$username\@gmail.com'><query xmlns='google:shared-status'>
<status>$status</status><show>$show</show>
$statuslist
</query></iq>");
$Con->Process();
$Con->PresenceSend(type=>'unavailable');
$Con->Process();
$Con->Disconnect();
$Con->Process();
exit;
Usage
perl stat.pl "my status"
Worked? or Crap?
Lemme know....
;)
3 comments:
Worked AND crap?
It's working code, and I am not going to argue with working code. However, I'll point out that it doesn't go well with strict and warnings because you redefine $status three times. Thank you for it. I'll likely poke at it, make it "Modern" a bit, then blog it. Thanks!
okie sure, do let me know of the new code.
Thanx in advance. :)
Here's my first pass.
http://varlogrant.blogspot.com/2009/03/setting-your-gtalk-status-with-perl.html
I have to do more work getting credentials out of the code and into a config file.
Post a Comment