#!/usr/bin/perl # Copyright 2009 Karl Heinz Kremer - khk@khk.net use IPC::Open2; local (*Reader, *Writer); # MODIFY THE FOLLOWING THREE LINES $user = "YOUR TWITTER USER NAME"; $password = "YOUR TWITER PASSWORD"; $pathToTDFile = "~/Library/Preferences/TweetDeckFast.F9107117265DB7542C1A806C8DB837742CE14C21.1/Local\\ Store/td_26_" . $user . ".db"; # DON'T TOUCH ANYTHING BELOW THIS LINE - UNLESS YOU KNOW WHAT YOU ARE DOING $currentGroup = ""; # Run SQL command to get groups and user ids out of TweetDeck $sqlCmd = "SELECT columns.cName, friends.fUserID FROM friends JOIN groups ON friends.fUserID = groups.gUserID JOIN columns ON groups.gCID = columns.cID GROUP BY friends.fScreenName ORDER BY columns.cName;\n.quit\n"; $pid = open2(\*Reader, \*Writer, "sqlite3 " . $pathToTDFile); print Writer $sqlCmd; while () { if ( /Group: (.+)\|(\d+)/ ) { if ($currentGroup ne $1) { # creating new group print "Creating new group " . $1 . "\n"; $cmd = "curl -s -u " . $user . ":" . $password . " -d \"name=" . $1 . "\" http://twitter.com/" . $user . "/lists.xml"; `$cmd`; $currentGroup = $1; } print "Adding user " . $2 . "\n"; $cmd = "curl -s -u ". $user . ":" . $password . " -d \"id=" . $2 . "\" http://twitter.com/" . $user . "/" . $1 . "/members.xml"; `$cmd`; } } close Reader; close Writer; waitpid($pid, 0);