Advertisement
pr4wn

Test version of pwntter.pl

Feb 3rd, 2012
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 8.25 KB | None | 0 0
  1. #######################################################################
  2. #
  3. # Copyright 2011, prawn.  sean dot prawn at gmail dot com
  4. #
  5. # This program is free software: you can redistribute it and/or modify
  6. # it under the terms of the GNU General Public License as published by
  7. # the Free Software Foundation, either version 3 of the License, or
  8. # (at your option) any later version.
  9. #
  10. # This program is distributed in the hope that it will be useful,
  11. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13. # GNU General Public License for more details.
  14. #
  15. # You should have received a copy of the GNU General Public License
  16. # along with this program.  If not, see <http://www.gnu.org/licenses/>.
  17. #
  18. #######################################################################
  19.  
  20. ############################# pwntter #################################
  21. #
  22. #       Extension for TTYyter to dump data into mysql tables.
  23. #
  24. #######################################################################
  25. # CPAN Modules
  26. use DBI;
  27. use Date::Manip;
  28. use HTML::Entities;
  29.  
  30. # mysql database config
  31. my $host     = "localhost";
  32. my $db       = "pwntter";
  33. my $user_id  = "pwntter";
  34. my $password = "pwntter";
  35. my $pwntter_version = "0.3";
  36.  
  37. sub date_format {
  38.   my $date = shift;
  39.   my $s;
  40.   if (! defined $date) {exit};
  41.   $s = substr( $date, 0, 4 );            #yyyy
  42.   $s = $s . '-' . substr( $date, 4, 2 ); #-mm
  43.   $s = $s . '-' . substr( $date, 6, 2 ); #-dd
  44.   $s = $s . ' ' . substr( $date, 8, 8 ); # hh:mm:mm
  45.  
  46.   return( $s );
  47.  
  48. }
  49.  
  50. $handle = sub {
  51.  
  52.      my $dbh = DBI->connect("DBI:mysql:database=$db;host=$host",
  53.                             "$user_id", "$password",
  54.                             {'RaiseError' => 1});
  55.  
  56.      my $ref = shift;
  57.  
  58.      #tweet data
  59.      my $id = $ref->{'id_str'};
  60.      my $text = &descape(decode_entities($ref->{'text'}));
  61.      my $created_at = ParseDate($ref->{'created_at'});
  62.      my $source = &descape($ref->{'source'});
  63.      my $geo_lat = $ref->{geo}->{coordinates}->[0];
  64.      my $geo_long = $ref->{geo}->{coordinates}->[1];
  65.  
  66.      #user data
  67.      my $user_id = $ref->{'user'}->{'id'};
  68.      my $name = &descape($ref->{'user'}->{'name'});
  69.      my $screen_name = &descape($ref->{'user'}->{'screen_name'});
  70.      my $description = &descape($ref->{'user'}->{'description'});
  71.      my $profile_image_url = &descape($ref->{'user'}->{'profile_image_url'});
  72.      my $location = &descape($ref->{'user'}->{'location'});
  73.      my $url = &descape($ref->{'user'}->{'url'});
  74.      my $protected = ($ref->{'user'}->{'protected'} eq "true");
  75.      my $followers_count = $ref->{'user'}->{'followers_count'};
  76.      my $friends_count = $ref->{'user'}->{'friends_count'};
  77.  
  78.      if (defined ($ref{'user'}->{created_at}) ) {
  79.        my $user_created_at = ParseDate($ref->{'user'}->{'created_at'});
  80.      }
  81.  
  82.      my $favourites_count = $ref->{'user'}->{'favourites_count'};
  83.      my $utc_offset = $ref->{'user'}->{'utc_offset'};
  84.      my $time_zone = $ref->{'user'}->{'time_zone'};
  85.      my $statuses_count = $ref->{'user'}->{'statuses_count'};
  86.      my $following = ($ref->{'user'}->{'following'} eq "true");
  87.      my $verified = ($ref->{'user'}->{'verified'} eq "true");
  88.      my $geo_enabled = ($ref->{'user'}->{'geo_enabled'} eq "true");
  89.      if (! defined $ref->{'user'}{'id'}) {
  90.        $user_id = $ref->{'from_user_id'};
  91.      }
  92.  
  93.      if ( $utc_offset == "") { $utc_offset = 0; }
  94.      #format dates to mysql datetime format YYYY-MM-DD HH:MM:SS
  95.      if ($created_at ne '') {$created_at = date_format($created_at);}
  96.      if ($user_created_at ne ''){ $user_created_at  = date_format($user_created_at);}
  97.      my $sql =  "replace into `tweets` " .
  98.         "SET `id` = ?, " .
  99.         " `user_id` = ?, " .
  100.         " `screen_name` = ?, " .
  101.         " `text` = ?, " .
  102.         " `created_at` = ?, " .
  103.         " `source` = ?, " .
  104.         " `user_name` = ?, " .
  105.                 " `geo_lat` = ?, " .
  106.         " `geo_long` = ?";
  107.  
  108.  
  109.  
  110.      my $sth = $dbh->prepare($sql);
  111.  
  112.      $sth->execute($id, $user_id, $screen_name, $text, $created_at,
  113.         $source, $name, $geo_lat, $geo_long);        
  114.  
  115.      my $user_sql = "replace into `users` " .
  116.             "SET `id` = ?, " .
  117.             " `name` = ?, " .
  118.             " `screen_name` = ?, " .
  119.             " `description` = ?, " .
  120.             " `location` = ?, " .
  121.             " `profile_image_url` = ?, " .
  122.             " `url` = ?, " .
  123.             " `protected` = ?, " .
  124.             " `followers_count` = ?, " .
  125.             " `friends_count` = ?, " .
  126.             " `created_at` = ?, " .
  127.             " `favourites_count` = ?, " .
  128.             " `utc_offset` = ?, " .
  129.             " `time_zone` = ?, " .
  130.             " `statuses_count` = ?, " .
  131.             " `following` = ?, " .
  132.             " `verified` = ?, " .
  133.             " `geo_enabled` = ?";
  134.  
  135.  
  136.      $sth = $dbh->prepare($user_sql);
  137.      $sth->execute($user_id, $name, $screen_name, $description, $location,
  138.             $profile_image_url, $url, $protected,
  139.             $followers_count, $friends_count, $created_at,
  140.             $favourites_count, $utc_offset, $time_zone,
  141.             $statuses_count, $following, $verified, $geo_enabled);
  142.  
  143.      return 1;
  144. };
  145.  
  146. $dmhandle = sub {
  147.  
  148.      my $ref = shift;
  149.  
  150.  
  151.      my $dbh = DBI->connect("DBI:mysql:database=$db;host=$host",
  152.                             "$user_id", "$password",
  153.                             {'RaiseError' => 1});
  154.  
  155.  
  156.      #Direct Message data
  157.      my $id = $ref->{'id_str'};
  158.      my $sender_id = &descape($ref->{'sender_id'});
  159.      my $text = &descape(decode_entities($ref->{'text'}));
  160.      my $recipient_id = &descape($ref->{'recipient_id'});
  161.      my $created_at = ParseDate($ref->{'created_at'});
  162.      my $sender_screen_name = &descape($ref->{'sender_screen_name'});
  163.      my $recipient_screen_name = &descape($ref->{'recipient_screen_name'});
  164.  
  165.    
  166.      #sender data
  167.      my $user_id = $ref->{'sender'}->{'id'};
  168.      my $name = &descape($ref->{'sender'}->{'name'});
  169.      my $screen_name = &descape($ref->{'sender'}->{'screen_name'});
  170.      my $description = &descape($ref->{'sender'}->{'description'});
  171.      my $profile_image_url = &descape($ref->{'sender'}->{'profile_image_url'});
  172.      my $location = &descape($ref->{'sender'}->{'location'});
  173.      my $url = &descape($ref->{'sender'}->{'url'});
  174.      my $protected = ($ref->{'sender'}->{'protected'} eq "true");
  175.      my $followers_count = $ref->{'sender'}->{'followers_count'};
  176.      my $friends_count = $ref->{'sender'}->{'friends_count'};
  177.      my $user_created_at = ParseDate($ref->{'sender'}->{'created_at'});
  178.      my $favourites_count = $ref->{'sender'}->{'favourites_count'};
  179.      my $utc_offset = $ref->{'sender'}->{'utc_offset'};
  180.      my $time_zone = $ref->{'sender'}->{'time_zone'};
  181.      my $statuses_count = $ref->{'sender'}->{'statuses_count'};
  182.      my $following = ($ref->{'user'}->{'following'} eq "true");
  183.      my $verified = ($ref->{'user'}->{'verified'} eq "true");
  184.  
  185.      #format dates to mysql datetime format YYYY-MM-DD HH:MM:SS
  186.      $created_at = date_format($created_at);
  187.      $user_created_at = date_format($user_created_at);
  188.  
  189.      my $dm_sql = "replace into `direct_messages` " .
  190.               "SET `id` = ?, " .
  191.               " `sender_id` = ?, " .
  192.               " `text` = ?, " .
  193.               " `recipient_id` = ?, " .
  194.               " `created_at` = ?, " .
  195.               " `sender_screen_name` = ?, " .
  196.               " `recipient_screen_name` =?";
  197.    
  198.  
  199.  
  200.      my $sth = $dbh->prepare($dm_sql);
  201.      $sth->execute($id, $sender_id, $text, $recipient_id, $created_at,
  202.     $sender_screen_name, $recipient_screen_name);        
  203.      
  204.      if ( $utc_offset == "") { $utc_offset = 0; }
  205.  
  206.      my $sender_sql = "replace into `users` " .
  207.             "SET `id` = ?, " .
  208.             " `name` = ?, " .
  209.             " `screen_name` = ?, " .
  210.             " `description` = ?, " .
  211.             " `location` = ?, " .
  212.             " `profile_image_url` = ?, " .
  213.             " `url` = ?, " .
  214.             " `protected` = ?, " .
  215.             " `followers_count` = ?, " .
  216.             " `friends_count` = ?, " .
  217.             " `created_at` = ?, " .
  218.             " `favourites_count` = ?, " .
  219.             " `utc_offset` = ?, " .
  220.             " `time_zone` = ?, " .
  221.             " `statuses_count` = ?, " .
  222.             " `following` = ?, " .
  223.             " `verified` = ?";
  224.  
  225.      $sth = $dbh->prepare($sender_sql);
  226.      $sth->execute($user_id, $name, $screen_name, $description, $location,
  227.             $profile_image_url, $url, $protected, $friends_count,
  228.             $followers_count, $created_at, $favourites_count,
  229.             $utc_offset, $time_zone, $statuses_count, $following,
  230.             $verified);
  231.  
  232.  
  233.  
  234.  
  235.      return 1;
  236. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement