diff --git a/Logging.pm b/Logging.pm deleted file mode 100644 index 6b7085bbfda620b556316df2384c1a529e868b98..0000000000000000000000000000000000000000 --- a/Logging.pm +++ /dev/null @@ -1,606 +0,0 @@ -package Logging; - -# ==============[ Classe pour gérer les logs correctement ]============== # -# Date : 29/10/2010 # -# Auteur : TC # -# ======================================================================= # - -use strict; -use warnings; - -use Fcntl ':mode'; - - -# ### -# new -# Instancie la classe - un constructeur en somme -# ### -sub new -{ - my $class = shift; - my $self = { - _file => shift, - _colored => 0, - _pending => 0, - _utf8 => 0, - _right_align => shift, - }; - - bless $self, $class; - - # On active la couleur que si on est sur un terminal - # C'est moche après pour les fichiers ou un less - if($self->file eq "STDOUT") - { - $self->{"_colored"} = 1 if((stat(STDOUT))[2] & S_IFCHR); - } - elsif($self->file eq "STDERR") - { - $self->{"_colored"} = 1 if((stat(STDERR))[2] & S_IFCHR); - } - else - { - $self->{"_colored"} = 1 if((stat($self->file))[2] & S_IFCHR); - } - - - unless(defined $self->{"_right_align"}) - { - $self->{"_right_align"} = 0; - } - - return $self; -} # Fin new - - -# ### -# file -# Renvoie/maj $self->{'_file'} -# ### -sub file -{ - my $self = shift; - $self->{"_file"} = $_[0] if(defined($_[0])); - return $self->{"_file"}; -} # Fin file - - -# ### -# colored -# Renvoie/maj $self->{'_colored'} -# ### -sub colored -{ - my $self = shift; - $self->{"_colored"} = $_[0] if(defined($_[0])); - return $self->{"_colored"}; -} # Fin colored - - -# ### -# pending -# Renvoie/maj $self->{'_pending'} -# ### -sub pending -{ - my $self = shift; - $self->{"_pending"} = $_[0] if(defined($_[0])); - return $self->{"_pending"}; -} # Fin pending - - -# ### -# utf8 -# Renvoie/maj $self->{"_utf8"} -# ### -sub utf8 -{ - my $self = shift; - $self->{"_utf8"} = $_[0] if(defined($_[0])); - return $self->{"_utf8"}; -} # Fin utf8 - - -# ### -# right_align -# Renvoie/maj $self->{"_right_align"} -# ### -sub right_align -{ - my $self = shift; - $self->{"_right_align"} = $_[0] if(defined($_[0])); - return $self->{"_right_align"}; -} # Fin right_align - - -# ### -# debug -# Fonction gérant les logs du niveau debug (1) -# ### -sub debug -{ - my ($self, $text) = @_; - return unless(defined $text); - - chomp $text; - - my $parent = ( caller(1) )[3]; - $parent = "" if(!defined($parent)); - - if($self->colored) - { - $text = "\e[36mDEBUG\e[0m:$parent:$text"; - } - else - { - $text = "DEBUG:$parent:$text"; - } - - return $self->print_in_file($text, $self->DEBUG); -} # Fin debug - - -# ### -# pending_debug -# Fonction gérant les logs du niveau debug (1) -# ### -sub pending_debug -{ - my ($self, $text) = @_; - chomp $text; - - my $parent = ( caller(1) )[3]; - $parent = "" if(!defined($parent)); - - if($self->colored) - { - $text = "\e[36mDEBUG\e[0m:$parent:$text"; - } - else - { - $text = "DEBUG:$parent:$text"; - } - - return $self->pending_in_file($text, $self->DEBUG); -} # Fin pending_debug - - -# ### -# info -# Fonction gérant les logs du niveau info (2) -# ### -sub info -{ - my ($self, $text) = @_; - return unless(defined $text); - - chomp $text; - - my $parent = ( caller(1) )[3]; - $parent = "" if(!defined($parent)); - - if($self->colored) - { - $text = "\e[33;1mINFO\e[0m:$parent:$text"; - } - else - { - $text = "INFO:$parent:$text"; - } - - return $self->print_in_file($text, $self->INFO); -} # Fin info - - -# ### -# pending_info -# Fonction gérant les logs du niveau info (2) -# ### -sub pending_info -{ - my ($self, $text) = @_; - return unless(defined $text); - - chomp $text; - - my $parent = ( caller(1) )[3]; - $parent = "" if(!defined($parent)); - - if($self->colored) - { - $text = "\e[33;1mINFO\e[0m:$parent:$text"; - } - else - { - $text = "INFO:$parent:$text"; - } - - return $self->pending_in_file($text, $self->INFO); -} # Fin pending_info - - -# ### -# warning -# Fonction gérant les logs du niveau warning (3) -# ### -sub warning -{ - my ($self, $text) = @_; - return unless(defined $text); - - chomp $text; - - my $parent = ( caller(1) )[3]; - $parent = "" if(!defined($parent)); - - if($self->colored) - { - $text = "\e[33mWARNING\e[0m:$parent:$text"; - } - else - { - $text = "WARNING:$parent:$text"; - } - - return $self->print_in_file($text, $self->WARNING); -} # Fin warning - - -# ### -# pending_warning -# Fonction gérant les logs du niveau warning (3) -# ### -sub pending_warning -{ - my ($self, $text) = @_; - return unless(defined $text); - - chomp $text; - - my $parent = ( caller(1) )[3]; - $parent = "" if(!defined($parent)); - - if($self->colored) - { - $text = "\e[33mWARNING\e[0m:$parent:$text"; - } - else - { - $text = "WARNING:$parent:$text"; - } - - return $self->pending_in_file($text, $self->WARNING); -} # Fin pending_warning - - -# ### -# error -# Fonction gérant les logs du niveau error (4) -# ### -sub error -{ - my ($self, $text) = @_; - return unless(defined $text); - - chomp $text; - - my $parent = ( caller(1) )[3]; - $parent = "" if(!defined($parent)); - - if($self->colored) - { - $text = "\e[31mERROR\e[0m:$parent:$text"; - } - else - { - $text = "ERROR:$parent:$text"; - } - - return $self->print_in_file($text, $self->ERROR); -} # Fin error - - -# ### -# pending_error -# Fonction gérant les logs du niveau error (4) -# ### -sub pending_error -{ - my ($self, $text) = @_; - return unless(defined $text); - - chomp $text; - - my $parent = ( caller(1) )[3]; - $parent = "" if(!defined($parent)); - - if($self->colored) - { - $text = "\e[31mERROR\e[0m:$parent:$text"; - } - else - { - $text = "ERROR:$parent:$text"; - } - - return $self->pending_in_file($text, $self->ERROR); -} # Fin pending_error - - -# ### -# critical -# Fonction gérant les logs du niveau critical (5) -# ### -sub critical -{ - my ($self, $text) = @_; - return unless(defined $text); - - chomp $text; - - my $parent = ( caller(1) )[3]; - $parent = "" if(!defined($parent)); - - if($self->colored) - { - $text = "\e[31;1mCRITICAL\e[0m:$parent:$text"; - } - else - { - $text = "CRITICAL:$parent:$text"; - } - - return $self->print_in_file($text, $self->CRITICAL); -} # Fin critical - - -# ### -# pending_critical -# Fonction gérant les logs du niveau critical (5) -# ### -sub pending_critical -{ - my ($self, $text) = @_; - return unless(defined $text); - - chomp $text; - - my $parent = ( caller(1) )[3]; - $parent = "" if(!defined($parent)); - - if($self->colored) - { - $text = "\e[31;1mCRITICAL\e[0m:$parent:$text"; - } - else - { - $text = "CRITICAL:$parent:$text"; - } - - return $self->pending_in_file($text, $self->CRITICAL); -} # Fin pending_critical - - -# ### -# print_in_file -# Écrit dans le fichier -# ### -sub print_in_file -{ - my ($self, $text, $level) = @_; - return unless(defined $text); - - chomp $text; - $text = "[\e[32m" . (scalar localtime time) . "\e[0m] $text"; - - $self->end_pending(0, $level) if($self->pending); - - if($self->file eq "STDOUT") - { - print STDOUT $text."\n"; - } - elsif($self->file eq "STDERR") - { - print STDERR $text."\n"; - } - else - { - open LOG, ">>", $self->file or return 0; - print LOG $text."\n"; - close LOG; - - print $text."\n" if(defined($level) && $Config::debug >= $level); - } - - return 1; -} # Fin print_in_file - - -# ### -# pending_in_file -# Écrit dans le fichier en attendant de savoir si ça a réussi ou pas -# ### -sub pending_in_file -{ - my ($self, $text, $level) = @_; - return unless(defined $text); - - chomp $text; - $text = "[" . (scalar localtime time) . "] $text"; - - if($self->file eq "STDOUT") - { - if($self->right_align) - { - printf STDOUT "%-90s", $text; - } - else - { - print STDOUT $text; - } - } - elsif($self->file eq "STDERR") - { - if($self->right_align) - { - printf STDERR "%-90s", $text; - } - else - { - print STDERR $text; - } - } - else - { - if($self->right_align) - { - open LOG, ">>", $self->file or return 0; - printf LOG "%-90s", $text; - close LOG; - - printf "%-90s", $text if(defined($level) && $Config::debug >= $level); - } - else - { - open LOG, ">>", $self->file or return 0; - print LOG $text; - close LOG; - - print $text if(defined($level) && $Config::debug >= $level); - } - } - - $self->pending(1); - - return 1; -} # Fin pending_in_file - - -# ### -# end_pending -# Écrit dans le fichier le résultat de l'attente -# ### -sub end_pending -{ - my ($self, $done_or_error, $level) = @_; - - my $done = ""; - - if($done_or_error) - { - if($self->colored) - { - $done = sprintf "%c[32m Done ", 0x1B; - } - else - { - $done = sprintf " Done \n"; - } - - $done .= "☑" if($self->utf8); - } - else - { - if($self->colored) - { - $done = sprintf "%c[31m Error ", 0x1B; - } - else - { - $done = sprintf " Error \n"; - } - - $done .= "☒" if($self->utf8); - } - - $done .= "\e[0m\n" if($self->colored); - - - # À partir d'ici, $done peut vouloir dire que c'est bon, ou pas - if($self->file eq "STDOUT") - { - printf STDOUT $done; - } - elsif($self->file eq "STDERR") - { - printf STDERR $done; - } - else - { - open LOG, ">>", $self->file or return 0; - printf LOG $done; - close LOG; - - printf $done if(defined($level) && $Config::debug >= $level); - } - - - $self->pending(0); - - return 1; -} # Fin end_pending - - -# -# Fonctions pour récupérer les différents niveaux de debug -# -sub DEBUG { return 3; } -sub INFO { return 2; } -sub WARNING { return 1; } -sub ERROR { return 0; } -sub CRITICAL { return -1; } -# Pour ceux qui préfèrent utiliser des variables... -our $DEBUG = 3; -our $INFO = 2; -our $WARNING = 1; -our $ERROR = 0; -our $CRITICAL = -1; -our %LVL_NAME = ( - "DEBUG" => 3, - "INFO" => 2, - "WARNING" => 1, - "ERROR" => 0, - "CRITICAL" => -1 -); - -# Et dans l'autre sens -sub LVL -{ - my ($self, $num) = @_; - - my %LVL = ( - 3 => "DEBUG", - 2 => "INFO", - 1 => "WARNING", - 0 => "ERROR", - "-1" => "CRITICAL" - ); - - return $LVL{$num}; -} -our %LVL = ( - 3 => "DEBUG", - 2 => "INFO", - 1 => "WARNING", - 0 => "ERROR", - "-1" => "CRITICAL" -); - - -# ### -# dbg -# Imprime des infos de debug à l'écran (STDOUT) -# ### -sub dbg -{ - my $self = shift; - - require Data::Dumper; - print Data::Dumper->Dump([$self], [qw(Logging)]); -} # Fin dbg - - -1; - -__END__ - diff --git a/PlayBot.pl b/PlayBot.pl index 7ba0881551581d7ea63a0e106497f82099a7f87c..8203c699bffe5609cb723f9512c30fa9c92f8f17 100755 --- a/PlayBot.pl +++ b/PlayBot.pl @@ -13,11 +13,10 @@ use FindBin; use lib "$FindBin::Bin/lib/"; use Logging; -use lib "$FindBin::Bin/lib/sites"; -use youtube; -use soundcloud; -use mixcloud; -use zippy; +use sites::youtube; +use sites::soundcloud; +use sites::mixcloud; +use sites::zippy; # nom du fichier diff --git a/mixcloud.pm b/mixcloud.pm deleted file mode 100644 index 8cd29a53518b7b1021a9f25c6e7623648b7071ee..0000000000000000000000000000000000000000 --- a/mixcloud.pm +++ /dev/null @@ -1,71 +0,0 @@ -package mixcloud; - -use LWP::UserAgent; -use HTML::Parser; -use HTML::Entities; - -require Exporter; -our @ISA = qw(Exporter); -our @EXPORT = qw(mixcloud); - - -my $inTitle = 0; -my $inAuthor = 0; -my %infos; - - -sub mixcloud { - my ($url) = @_; - - my $ua = LWP::UserAgent->new( - agent => "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 GTB7.1", - timeout => 30 - ); - - my $response = $ua->get($url); - die($response->status_line) unless ($response->is_success); - - my $content = $response->decoded_content; - - my $parser = HTML::Parser->new(); - $parser->handler(text => \&parser_text, 'text'); - $parser->handler(start => \&parser_start, 'tagname'); - $parser->handler(end => \&parser_end, 'tagname'); - $parser->unbroken_text(1); - $parser->report_tags('title', 'a'); - $parser->parse($content); - $parser->eof(); - - $infos{'url'} = $url; - - return %infos; -} - -sub parser_text -{ - my ($text) = @_; - chomp $text; - $text = decode_entities($text); - - if ($inTitle) { - $text =~ s/\n//; - $text =~ s/ \| Mixcloud .*//; - $text =~ s/^ *//; - $text =~ s/[^a-zA-Z0-9\(\)\[\]]*$//; - ($infos{'author'}, $infos{'title'}) = split (' - ', $text, 2); - } -} - -sub parser_start -{ - my ($tag) = @_; - $inTitle = 1 if ($tag eq 'title'); -} - -sub parser_end -{ - my ($tag) = @_; - $inTitle = 0 if ($tag eq 'title'); -} - -1; diff --git a/soundcloud.pm b/soundcloud.pm deleted file mode 100644 index 1e00ebfb755515ed016121cf8e9d045a9f1bf001..0000000000000000000000000000000000000000 --- a/soundcloud.pm +++ /dev/null @@ -1,35 +0,0 @@ -package soundcloud; - -use LWP::UserAgent; -use JSON; - -require Exporter; -our @ISA = qw(Exporter); -our @EXPORT = qw(soundcloud); - - -my $root = 'http://api.soundcloud.com'; -my $clientId = 'f4956716fe1a9dc9c3725af822963365'; - - -sub soundcloud { - my ($url) = @_; - - my $ua = LWP::UserAgent->new(timeout => 30); - - my $response = $ua->get($root.'/resolve.json?url='.$url.'&client_id='.$clientId); - die($response->status_line) unless ($response->is_success); - - $content = decode_json($response->decoded_content); - $infos{'title'} = $content->{'title'}; - $infos{'author'} = $content->{'user'}->{'username'}; - $infos{'url'} = $url; - - if ($content->{'downloadable'}) { - $infos{'ddl'} = $content->{'download_url'}; - } - - return %infos; -} - -1; diff --git a/youtube.pm b/youtube.pm deleted file mode 100644 index d9039b50ce6425aa736166fbeb465b13d0bd3ed4..0000000000000000000000000000000000000000 --- a/youtube.pm +++ /dev/null @@ -1,76 +0,0 @@ -package youtube; - -use LWP::UserAgent; -use HTML::Parser; -use HTML::Entities; - -require Exporter; -our @ISA = qw(Exporter); -our @EXPORT = qw(youtube); - - -my $inTitle = 0; -my $inAuthor = 0; -my %infos; - - -sub youtube { - my ($url) = @_; - - my $ua = LWP::UserAgent->new( - agent => "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 GTB7.1", - timeout => 30 - ); - - my $response = $ua->get($url); - die($response->status_line) unless ($response->is_success); - - my $content = $response->decoded_content; - - my $parser = HTML::Parser->new(); - $parser->handler(text => \&parser_text, 'text'); - $parser->handler(start => \&parser_start, 'tagname,attr'); - $parser->handler(end => \&parser_end, 'tagname'); - $parser->unbroken_text(1); - $parser->report_tags('title', 'a'); - $parser->parse($content); - $parser->eof(); - - $infos{'url'} = $url; - - return %infos; -} - -sub parser_text -{ - my ($text) = @_; - chomp $text; - - if ($inTitle) { - $text =~ s/\n//; - $text =~ s/- YouTube//; - $text =~ s/^ *//; - $text =~ s/[^a-zA-Z0-9\(\)\[\]]*$//; - $infos{'title'} = decode_entities($text); - } - elsif ($inAuthor) { - $infos{'author'} = $text; - } -} - -sub parser_start -{ - my ($tag, $attr) = @_; - $inTitle = 1 if ($tag eq 'title'); - return unless (defined $attr); - $inAuthor = 1 if ($tag eq 'a' && exists($attr->{'class'}) && $attr->{'class'} =~ /yt-user-name author/); -} - -sub parser_end -{ - my ($tag) = @_; - $inTitle = 0 if ($tag eq 'title'); - $inAuthor = 0 if ($tag eq 'a'); -} - -1; diff --git a/zippy.pm b/zippy.pm deleted file mode 100644 index 872b13a6ac2b2a12ee61e2752398181d4eb25038..0000000000000000000000000000000000000000 --- a/zippy.pm +++ /dev/null @@ -1,70 +0,0 @@ -package zippy; - -use LWP::UserAgent; -use HTML::Parser; -use HTML::Entities; - -require Exporter; -our @ISA = qw(Exporter); -our @EXPORT = qw(zippy); - - -my $inTitle = 0; -my $inAuthor = 0; -my %infos; - - -sub zippy { - my ($url) = @_; - - my $ua = LWP::UserAgent->new( - agent => "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 GTB7.1", - timeout => 30 - ); - - my $response = $ua->get($url); - die($response->status_line) unless ($response->is_success); - - my $content = $response->decoded_content; - - my $parser = HTML::Parser->new(); - $parser->handler(text => \&parser_text, 'text'); - $parser->handler(start => \&parser_start, 'tagname'); - $parser->handler(end => \&parser_end, 'tagname'); - $parser->unbroken_text(1); - $parser->report_tags('title', 'a'); - $parser->parse($content); - $parser->eof(); - - $infos{'url'} = $url; - $infos{'author'} = undef; - - return %infos; -} - -sub parser_text -{ - my ($text) = @_; - chomp $text; - $text = decode_entities($text); - - if ($inTitle) { - $text =~ s/^Zippyshare.com - //; - $text =~ s/\.mp3$//; - $infos{'title'} = $text; - } -} - -sub parser_start -{ - my ($tag) = @_; - $inTitle = 1 if ($tag eq 'title'); -} - -sub parser_end -{ - my ($tag) = @_; - $inTitle = 0 if ($tag eq 'title'); -} - -1;