Share Pastebin
Guest
Public paste!

Untitled

By: a guest | Mar 19th, 2010 | Syntax: Perl | Size: 12.83 KB | Hits: 86 | Expires: Never
Copy text to clipboard
  1. #!/usr/bin/perl -w
  2. use strict;
  3. use POE qw(Component::IRC Component::IRC::Plugin::Connector);
  4. use POE::Component::IRC::State;
  5. use Term::ANSIColor qw(:constants);
  6. $Term::ANSIColor::AUTORESET = 1;
  7. # my ($con0day,$conmp3,$contv,$conxvid,$conxxx,$conscr,$conapps) = (1,1,1,1,1,1,0);
  8. my %conf;
  9. $conf{"0DAY"} = 1;
  10. $conf{"MP3"} = 1;
  11. $conf{"TV"} = 1;
  12. $conf{"XVID"} = 1;
  13. $conf{"XXX"} = 1;
  14. $conf{"SCR"} = 1;
  15. $conf{"APPS"} = 0;
  16.  
  17.  
  18. my $times;
  19. my %rotator;
  20.  
  21. my $irc = POE::Component::IRC->spawn();
  22. POE::Session->create(
  23.   inline_states => {
  24.     _start           => \&_start,
  25.     irc_001          => \&on_connect,
  26.     irc_public       => \&on_public,
  27.     irc_invite       => \&on_invite,
  28.   },
  29.   package_states => [
  30.     'main' => [ qw(_start lag_o_meter) ],
  31.   ],
  32.   heap => { irc => $irc },
  33. );
  34. sub lag_o_meter {
  35.   my ($kernel,$heap) = @_[KERNEL,HEAP];
  36.   $kernel->delay( 'lag_o_meter' => 120 );
  37.   undef;
  38. }
  39. sub _start {
  40.   my $kernel  = $_[KERNEL];
  41.   my $heap    = $_[HEAP];
  42.   my $session = $_[SESSION];
  43.   $irc->yield( register => "all" );
  44.   $heap->{connector} = POE::Component::IRC::Plugin::Connector->new();
  45.   $irc->plugin_add( 'Connector' => $heap->{connector} );
  46.   $irc->yield( connect =>
  47.     { Nick     => "lfor",
  48.       Server   => "irc.p2p-network.net",
  49.       Port     => "6667",
  50.       UseSSL   => "0",
  51.       Username => "SQP",
  52.       Ircname  => "SQP",
  53.       Flood    => "1",
  54.       Debug => "0",
  55.     }
  56.   );
  57.   $kernel->delay( 'lag_o_meter' => 120 );
  58.   undef;
  59. }
  60.  
  61.  
  62.  
  63. sub on_invite {
  64.   my ($invitechan) = $_[ARG1];
  65.   if ($invitechan eq '#ht') { $irc->yield(join => "#ht"); }
  66.   if ($invitechan eq '#htlottery') { $irc->yield(join => "#htlottery"); }
  67. }
  68. sub on_connect {
  69.   $irc->yield( privmsg => NickServ => "identify raceme" );
  70.   $irc->yield( privmsg => ChanServ => "invite #ht.spam");
  71.   $irc->yield( privmsg => ChanServ => "invite #htlottery");
  72. }
  73.  
  74. sub log {
  75.   my ($event) = shift;
  76.   my $time = localtime();
  77.   my $log = 'trader.log';
  78.   open LOG, ">>", "$log" or print "$!\n";
  79.   print LOG "$time -> $event\n";
  80.   close LOG;
  81. }
  82.  
  83.  
  84. sub cc {
  85.   my ($rel,$sec) = @_;
  86.   if ($sec eq '0DAY') { if ($conf{"0DAY"} == 1) { return 1; }}
  87.   elsif ($sec eq 'APPS') { if ($conf{"APPS"} == 1) { return 1; }}
  88.   elsif ($sec eq 'MP3') { if ($conf{"MP3"} == 1) {
  89.     if ($rel !~ /_iNT|iNTERNAL|CABLE|SAT|DAB|DVB|TAPE|MIXTAPE|RADIO|DAT|DEMO|SBD|LINE|FM|AUDIOBOOK|x264|DVDRip/) { return 1; }
  90.     else { return 0; }
  91.   }}
  92.  
  93.   elsif ($sec eq 'TV') { if ($conf{"TV"} == 1) {
  94.     if ($rel !~ /x264|Blu[R|r]ay|DVDRip|iNTERNAL|720p|iTALiAN|SPANISH/) {
  95.       if ($rel =~ /Prison\.Break/) { return 1; }
  96.       elsif ($rel =~ /Lost/) { return 1; }
  97.       elsif ($rel =~ /Smallville/) { return 1; }
  98.       elsif ($rel =~ /Lost/) { return 1; }
  99.       elsif ($rel =~ /CSI/) { return 1; }
  100.       elsif ($rel =~ /Scrubs/) { return 1; }
  101.       elsif ($rel =~ /House/) { return 1; }
  102.       elsif ($rel =~ /Greys\.Anatomy/) { return 1; }
  103.       elsif ($rel =~ /Reaper/) { return 1; }
  104.       elsif ($rel =~ /Kyle\.XY/) { return 1; }
  105.       elsif ($rel =~ /Medium/) { return 1; }
  106.       elsif ($rel =~ /Gossip\.Girl/) { return 1; }
  107.       elsif ($rel =~ /One\.Tree\.Hill/) { return 1; }
  108.       elsif ($rel =~ /Bones/) { return 1; }
  109.       elsif ($rel =~ /How\.I\.Met\.Your\.Mother/) { return 1; }
  110.       elsif ($rel =~ /The\.Simpsons/) { return 1; }
  111.       elsif ($rel =~ /The\.Family\.Guy/) { return 1; }
  112.       elsif ($rel =~ /Desperate\.Housewives/) { return 1; }
  113.       elsif ($rel =~ /The\.Tudors/) { return 1; }
  114.       elsif ($rel =~ /Numb3rs/) { return 1; }
  115.       elsif ($rel =~ /Battlestar\.Galactica/) { return 1; }
  116.       elsif ($rel =~ /My\.Name\.Is\.Earl/) { return 1; }
  117.       elsif ($rel =~ /Cold\.Case/) { return 1; }
  118.       elsif ($rel =~ /Ghost\.Whisperer/) { return 1; }
  119.       elsif ($rel =~ /American\.Dad/) { return 1; }
  120.       elsif ($rel =~ /Greek/) { return 1; }
  121.  
  122.  
  123.       else { return 0; }
  124.     }
  125.     else { return 0; }}}
  126.   elsif ($sec eq 'XVID') { if ($conf{"XVID"} == 1) {
  127.     if ($rel !~ /VHS|Docu|German|GERMAN|SUBBED|STV|Musical|KOR|[F|f][R|r][E|e][N|n][C|c][H|h]|[I|i]NTERNAL|PORTUGUESE|SWED[i|I]SH|SUBFRENCH|[I|i]TAL[I|i]AN|NORWEG[I|i]AN|iNT|720p|x264|TEASER|SPAN[i|I]SH|Live|199.\.DVDRip|FLEM[I|i]SH|Hungarian|S\d\d/) {
  128.       if ($rel =~ /Larceny|DiAMOND|iMBT|EPiC|MoH|PUKKA|FLAiTE|NeDiVx|SAPHiRE|BaLD|KiDDoS|SATIVA|TRVE|SUNSPOT|RESERVED|/) {
  129.         return 1; }
  130.     }
  131.     else { return 0; }
  132.   }}
  133.  
  134.   elsif ($sec eq 'XXX') { if ($conf{"XXX"} == 1) {
  135.     if ($rel =~ /DivXfacTory|Pr0nStarS|PORNOLATiON|DFA|TESORO/) { return 1; }
  136.     else { return 0; }
  137.   }}
  138.   else { return 0; }
  139. }
  140.  
  141. sub on_public {
  142.   my ($who, $where, $what) = @_[ARG0, ARG1, ARG2];
  143.   print "$who $where->[0] $what\n";
  144.   if (($what =~ /PRE  (.*) (.*)/) && ($where->[0] eq '#ht.spam')) {
  145.     print $1,$2,"\n";
  146.     my $sec = $1; my $rel = $2; my $more = 3;
  147.     &check1($sec,$rel,$more);
  148.   }
  149.  
  150.  
  151.   elsif ($where->[0] eq '#htlottery') {
  152.     if ($what =~ /^!status/) {
  153.       foreach (keys %conf) {
  154.         if ($conf{$_} == 1) { $irc->yield(privmsg => '#htlottery' => "[$_] => [1]"); }
  155.         else { $irc->yield(privmsg => '#htlottery' => "[$_] => [0]"); }
  156.       }
  157.     }
  158.     elsif ($what =~ /^!help/) {
  159.       $irc->yield(privmsg => '#htlottery' => "\cC5!status\cC");
  160.       $irc->yield(privmsg => '#htlottery' => "\cC5!off SEKCJA");
  161.       $irc->yield(privmsg => '#htlottery' => "\cC5!on SEKCJA");
  162.     }
  163.     elsif ($what =~ /^!off (.*)/) {
  164.       if ((defined $conf{$1}) && ($conf{$1} == 1)) { $conf{$1} = 0; $irc->yield(privmsg => '#htlottery' => "$1 zostalo wylaczone"); }
  165.       else {
  166.         if (defined $conf{$1}) { $irc->yield(privmsg => '#htlottery' => "$1 jest wylaczone"); }
  167.         else { $irc->yield(privmsg => '#htlottery' => "Podaj prawidlowa sekcje"); }
  168.       }
  169.     }
  170.     elsif ($what =~ /^!on (.*)/) {
  171.       if ((defined $conf{$1}) && ($conf{$1} == 0)) { $conf{$1} = 1; $irc->yield(privmsg => '#htlottery' => "$1 zostalo wlaczone"); }
  172.       else {
  173.         if (defined $conf{$1}) { $irc->yield(privmsg => '#htlottery' => "$1 jest wlaczone"); }
  174.         else { $irc->yield(privmsg => '#htlottery' => "Podaj prawidlowa sekcje"); }
  175.       }
  176.     }
  177.   }
  178. }
  179.  
  180. sub check1 {
  181.   my ($sec,$rel,$more) = @_;
  182.   if ((&cc($rel,$sec) == 1) && ($more == 3)) {
  183.     if (($sec eq 'MP3') || ($sec eq '0DAY') || ($sec eq 'TV') || ($sec eq 'APPS')) {
  184.       &log("Sprawdzam czy jest 100% `$rel` w sekcji `$sec` || $rotator{$rel}");
  185.       &check($sec,$rel);
  186.     }
  187.     elsif (($sec eq 'XXX') || ($sec eq 'XVID')) {
  188.       &log("Sprawdzam czy jest 100% `$rel` w sekcji `$sec` || $rotator{$rel}");
  189.       &checkxvid($sec,$rel);
  190.     }
  191.   }
  192.  
  193.   elsif ((&cc($rel,$sec) == 1) && ($more == 1)) {
  194.     if (($sec eq 'XXX') || ($sec eq 'XVID')) {
  195.       &log("Sprawdzam czy jest 100% `$rel` w sekcji `$sec` || $rotator{$rel}");
  196.       &checkxvid($sec,$rel);
  197.     }
  198.   }
  199.   elsif ((&cc($rel,$sec) == 1) && ($more == 0)) {
  200.     if (($sec eq 'MP3') || ($sec eq '0DAY') || ($sec eq 'TV') || ($sec eq 'APPS')) {
  201.       &log("Sprawdzam czy jest 100% `$rel` w sekcji `$sec` || $rotator{$rel}");
  202.       &check($sec,$rel);
  203.     }
  204.   }
  205. }
  206.  
  207. sub check {
  208.   my ($sec,$rel) = @_;
  209.   my $exist;
  210.   my $dontrace = 0;
  211.   my $more = 0;
  212.   if ($sec eq '0DAY') {
  213.     $exist = `lftp -c 'open -e "ls $rel | grep \'SPeeDeR\' | grep -i \'COMPLETE\' | wc -l" S0DAY'`;
  214.     $times = 10;
  215.   }
  216.   elsif ($sec eq 'MP3') {
  217.     $exist = `lftp -c 'open -e "ls $rel | grep \'SPeeDeR\' | grep -i \'COMPLETE\' | wc -l" SMP3'`;
  218.     $times = 10;
  219.   }
  220.   elsif ($sec eq 'TV') {
  221.     $exist = `lftp -c 'open -e "ls $rel | grep \'SPeeDeR\' | grep -i \'COMPLETE\' | wc -l" STV'`;
  222.     $times = 15;
  223.   }
  224.   elsif (($sec eq 'XVID') && ($rel !~ /R5|DVDSCR|SCREENER|SCR|TS|TC|CAM/)) {
  225.     $exist = `lftp -c 'open -e "ls $rel | grep \'SPeeDeR\' | grep -i \'COMPLETE\' | wc -l" SMOVIESX'`;
  226.     $times = 15;
  227.   }
  228.   elsif ($sec eq 'XXX') {
  229.     $exist = `lftp -c 'open -e "ls $rel | grep \'SPeeDeR\' | grep -i \'COMPLETE\' | wc -l" SXXX'`;
  230.     $times = 15;
  231.   }
  232.   elsif (($sec eq 'XVID') && ($rel =~ /R5|DVDSCR|SCREENER|SCR|TS|TC|CAM/)) {
  233.     $exist = `lftp -c 'open -e "ls $rel | grep \'SPeeDeR\' | grep -i \'COMPLETE\' | wc -l" SSCR'`;
  234.     $times = 15;
  235.   }
  236.   chomp($exist);
  237.   if ($exist == 1) {
  238.     $irc->yield(privmsg => '#htlottery' => "Race: \cC5`$rel`\cC \cB`$sec`\cB");
  239.     &trade($sec,$rel);
  240.     if (defined $rotator{"$rel"}) { delete $rotator{"$rel"}; &log("Skasowano z rotatora `$rel`"); }
  241.     $dontrace = 1;
  242.   }
  243.   else {
  244.   &rotate($times,$rel,$sec,$dontrace,$more);
  245.  
  246.   }
  247. }
  248.  
  249.  
  250. sub rotate {
  251.   my ($times,$rel,$sec,$dontrace,$more) = @_;
  252.   if ($dontrace == 0) {
  253.     if (!defined $rotator{"$rel"}) { $rotator{"$rel"} = 0; }
  254.     if (defined $rotator{"$rel"}) {
  255.       $rotator{"$rel"}++;
  256.       unless ($rotator{$rel} >= $times) { &check1($sec,$rel,$more); }
  257.     }
  258.     if ($rotator{"rel"} >= $times) { delete $rotator{"$rel"}; &log("Skasowano z rotatora `$rel`"); }
  259.   }
  260.  
  261. }
  262.  
  263. sub checkxvid {
  264.   my ($sec,$rel) = @_;
  265.   my ($exist,$exist1,$more) = 0;
  266.   my $dontrace = 0;
  267.   if (($sec eq 'XVID') && ($rel !~ /R5|DVDSCR|SCREENER|SCR|TS|TC|CAM/)) {
  268.     $times = 15;
  269.     $exist = `lftp -c 'open -e "ls $rel | grep -i \'CD\.\' | wc -l" SMOVIESX'`;
  270.     chomp($exist);
  271.     $exist1 = `lftp -c 'open -e "find $rel | grep -i \'SPeeDeR\' | grep -i \'COMPLETE\' | wc -l" SMOVIESX'`;
  272.     chomp($exist1);
  273.   }
  274.   elsif ($sec eq 'XXX') {
  275.     $times = 15;
  276.     $exist = `lftp -c 'open -e "ls $rel | grep -i \'CD\.\' | wc -l" SXXX'`;
  277.     chomp($exist);
  278.     $exist1 = `lftp -c 'open -e "find $rel | grep -i \'SPeeDeR\' | grep -i \'COMPLETE\' | wc -l" SXXX'`;
  279.     chomp($exist1);
  280.   }
  281.   elsif (($sec eq 'XVID') && ($rel =~ /R5|DVDSCR|SCREENER|SCR|TS|TC|CAM/)) {
  282.     $times = 15;
  283.     $exist = `lftp -c 'open -e "ls $rel | grep -i \'CD\.\' | wc -l" SSCR'`;
  284.     chomp($exist);
  285.     $exist1 = `lftp -c 'open -e "find $rel | grep -i \'SPeeDeR\' | grep -i \'COMPLETE\' | wc -l" SSCR'`;
  286.     chomp($exist1);
  287.   }
  288.  
  289.    if (($exist == 0) && ($exist1 == 1)) {
  290.      &check($sec,$rel);
  291.    }
  292.    else {
  293.      if (($exist1 ne '') && ($exist == $exist1)) {
  294.       $more = 1;
  295.       $irc->yield(privmsg => '#htlottery' => "Race: \cC5`$rel`\cC \cB`$sec`\cB");
  296.       &trade($sec,$rel);
  297.       if (defined $rotator{"$rel"}) { delete $rotator{"$rel"}; &log("Skasowano z rotatora `$rel`"); }
  298.       $dontrace = 1;
  299.      }
  300.      else {$more = 3; &rotate($times,$rel,$sec,$dontrace,$more); }
  301.    }
  302. }
  303.  
  304. sub trade {
  305.   my ($sec,$rel) = @_;
  306.   my $retry = 0;
  307.   my $leave = 0;
  308.  
  309. do {
  310.     if ($leave < 1) {
  311.       print BOLD GREEN "Zamierzam przerzucać `$rel` `$sec`\n";
  312.       &log("Zamierzam przerzucac `$rel` z sekcji `$sec`");
  313.     }
  314.     $leave++;
  315.     if ($sec eq '0DAY') {
  316.       system("lftp -c 'open -e \"mirror -c -vvv --loop  --only-missing $rel ftp://ms:dwaraz\91.21.155.112:27461/0DAY/\" S0DAY'");
  317.  
  318.       my $check = `lftp -c 'open -e \"ls 0DAY/$rel | grep \'COMPLETE\' | grep \'FTA\' | wc -l" NUE'`;
  319.       chomp($check);
  320.       if ($check != 0) { $retry = 1; }
  321.     }
  322.     elsif ($sec eq 'MP3') {
  323.       system("lftp -c 'open -e \"mirror -c -vvv --loop --only-missing $rel ftp://ms:1337killler\91.121.155.192:27461/MP3-EN/\" SMP3'");
  324.  
  325.       my $check = `lftp -c 'open -e \"ls MP3-EN/$rel | grep \'COMPLETE\' | grep \'FTA\' | wc -l" NUE'`;
  326.       chomp($check);
  327.       if ($check != 0) { $retry = 1; }
  328.     }
  329.     elsif ($sec eq 'TV') {
  330.       system("lftp -c 'open -e \" mirror -c -vvv --loop --only-missing $rel ftp://ms:dwaraz\91.121.155.912:27461/TV-EN/\" STV'");
  331.  
  332.       my $check = `lftp -c 'open -e \"ls TV-EN/$rel | grep \'COMPLETE\' | grep \'FTA\' | wc -l" NUE'`;
  333.       chomp($check);
  334.       if ($check != 0) { $retry = 1; }
  335.     }
  336.     elsif (($sec eq 'XVID') && ($rel !~ /R5|SCREENER|DVDSCR|SCR|TS|TC|CAM/)) {
  337.       system("lftp -c 'open -e \" mirror -c -vvv --loop --only-missing $rel ftp://ms:dwaraz\91.121.165.112:27461/XVID-EN/\" SMOVIESX'");
  338.  
  339.       my $check = `lftp -c 'open -e \"find XVID-EN/$rel | grep \'COMPLETE\' | grep \'FTA\' | wc -l" NUE'`;
  340.       chomp($check);
  341.       if ($check != 0) { $retry = 1; }
  342.     }
  343.     elsif ($sec eq 'XXX') {
  344.       system("lftp -c 'open -e \" mirror -c -vvv --loop --only-missing $rel ftp://ms:dwaraz\91.121.255.112:27461/XXX/\" SXXX'");
  345.  
  346.       my $check = `lftp -c 'open -e \"find XXX/$rel | grep \'COMPLETE\' | grep \'FTA\' | wc -l" NUE'`;
  347.       chomp($check);
  348.       if ($check != 0) { $retry = 1; }
  349.     }
  350.     elsif (($sec eq 'XVID') && ($rel =~ /R5|SCREENER|DVDSCR|SCR|TS|TC|CAM/)) {
  351.       system("lftp -c 'open -e \" mirror -c -vvv --loop --only-missing $rel ftp://ms:raz\91.121.115.112:27461/XVID-EN/\" SSCR'");
  352.  
  353.       my $check = `lftp -c 'open -e \"find XVID-EN/$rel | grep \'COMPLETE\' | grep \'FTA\' | wc -l" NUE'`;
  354.       chomp($check);
  355.       if ($check != 0) { $retry = 1; }
  356.     }
  357.     else { $retry = 1; }
  358.   } while (($retry == 0) && ($leave <= 20));
  359.   unless ($leave >= 20) {
  360.     print BOLD GREEN "Przerzucilem `$rel` `$sec`\n";
  361.     &log("Przerzucilem `$rel` `$sec`\n");
  362.   }
  363. }
  364.  
  365. $poe_kernel->run();