Looking for hand histories

    • pieskot
      pieskot
      Bronze
      Joined: 20.02.2011 Posts: 4
      Hello!

      I'm working on bachelor thesis connecting machine learning & texas hold'em.
      At this point I'm looking for a big amount of data - especially private hand histories (having player's cards visible) FullTiltPoker prefered, cause I've got ready parsing engine for it. I'd really appreciate any support from your side!
      Hand histories can be anonymous - f.e simple md5sum hash on player's nicknames and you can sand them on pieskot665<AT>gmail<DOT>com anonymously if you're affraid of your privacy. If you'd like to help and don't know how to erase real nicknames from files - please contact me.
      Thanks for help

      Michał
  • 3 replies
    • VorpalF2F
      VorpalF2F
      Super Moderator
      Super Moderator
      Joined: 02.09.2010 Posts: 9,145
      Hi, pieskot,
      Do you have a script to remove player names?
      It would make it a lot easier for members to create truly anonymous hand histories.

      You should be aware that accepting hand histories that have not been anonymised will put you in breach of the terms and conditions of several poker rooms -- including Full Tilt

      Best of luck with your project!
      VS
    • pieskot
      pieskot
      Bronze
      Joined: 20.02.2011 Posts: 4
      I've just created one (written in perl). It can be runned f.e here:
      http://www.tutorialspoint.com/execute_perl_online.php
      Or you can download strawberryperl edition if you are windows user. Great thanks for support!
      http://strawberryperl.com/


      #!/usr/bin/perl
      use Digest::MD5 qw(md5_base64);
      my $usage = "USAGE: perl anon.pl <INPUT FILE PATH> <OUTPUT FILE PATH>\n";
      my $file_in = shift @ARGV || die $usage;
      my $file_out = shift @ARGV || die $usage;
      my $rx = qr/^(.*) (posts|mucks|has|checks|shows|folds|calls|bets|raises|wins)/;
      open(my $fh_in, $file_in) || die ('Cannot open input file');
      open(my $fh_out,'>',$file_out) || die ('Cannot file for writing');
      while ( my $line = <$fh_in> ) {
      $line =~ s/$rx/md5_base64($1) . " $2"/e;
      $line =~ s/Seat (\d): (.+) \(\$/"Seat $1: " . md5_base64($2) . ' ($'/e;
      $line =~ s/Seat (\d): [^\$]+$/"\n"/;
      $line =~ s/Dealt to ([^\[])+ \[/'Dealt to ' . md5_base64($1) . ' ['/e;
      $line =~ s/^Uncalled bet.*//;
      print $fh_out $line;
      }
    • pieskot
      pieskot
      Bronze
      Joined: 20.02.2011 Posts: 4
      UPDATE:

      I've corrected the scrip to have no external dependencies, now it can be easily run on toutorialspoint webpage. Only thing you need to do is upload file, then execute scrip (with filename parameters, input=uploaded file name and output=some_name) then download (should be visible on file tree on the lefet. Here's updated script code

      #!/usr/bin/perl
      my $usage = "USAGE: perl anon.pl <INPUT FILE PATH> <OUTPUT FILE PATH>\n";
      my $file_in = shift @ARGV || die $usage;
      my $file_out = shift @ARGV || die $usage;
      my $rx = qr/^(.+) (posts|mucks|has|checks|shows|folds|calls|bets|raises|wins)/;
      my %map=();
      open(my $fh_in, $file_in) || die ('Cannot open input file');
      open(my $fh_out,'>',$file_out) || die ('Cannot file for writing');
      while ( my $line = <$fh_in> ) {
      $map{$2} = "player$1" if $line =~ /Seat (\d): (.+) \(\$/;
      $line =~ s/Seat (\d): (.+) \(\$/"Seat $1: ".$map{$2}.' ($'/e;
      $line =~ s/$rx/$map{$1} . " $2"/e;
      $line =~ s/Seat (\d): [^\$]+$//;
      $line =~ s/Dealt to ([^\[])+ \[/'Dealt to ' . $map{$1} . ' ['/e;
      $line =~ s/^Uncalled bet.*//;
      %map =() if $line =~ /FullTiltPoker/;
      print $fh_out $line;
      }