Skip to content
Extraits de code Groupes Projets
Sélectionner une révision Git
  • 60b40e28cbb66aa495839d3a74d343723c8bd795
  • master par défaut protégée
2 résultats

tab.h

Blame
  • parser.pm 3,53 Kio
    package sites::parser;
    
    use lib "$FindBin::Bin/lib/sites/";
    use youtube;
    use soundcloud;
    use mixcloud;
    use zippy;
    use dailymotion;
    
    use lib "$FindBin::Bin/lib/";
    use utils::print;
    
    our $irc;
    our $dbh;
    our $log;
    
    sub parse {
    	my ($kernel, $user, $chan, $msg) = @_;
    	my ($nick,$mask) = split(/!/,$user);
    
        my %content;
        my $id;
    
        # parsing
        if ($msg =~ m#(?:^|[^!])https?://(?:www.youtube.com/watch\?[a-zA-Z0-9_=&-]*v=|youtu.be/)([a-zA-Z0-9_-]+)#) {
    		eval { %content = youtube::get($1) };
    
    		$content{'site'} = 'youtube';
            $content{'url'} = 'https://www.youtube.com/watch?v='.$1;
    	}
    	elsif ($msg =~ m#(^|[^!])https?://soundcloud.com/([a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+)#) {
    		my $url = 'https://www.soundcloud.com/'.$2;
    		eval { %content = soundcloud::get($url) };
    		$content{'site'} = 'soundcloud';
    	}
    	elsif ($msg =~ m#(^|[^!])https?://www.mixcloud.com/([a-zA-Z0-9-_]+/[a-zA-Z0-9-_]+)#) {
    		my $url = 'https://www.mixcloud.com/'.$2;
    		eval { %content = mixcloud::get($url) };
    		$content{'site'} = 'mixcloud';
    	}
    	elsif ($msg =~ m#((^|[^!])http://www[0-9]+.zippyshare.com/v/[0-9]+/file.html)#) {
    		my $url = $1;
    		eval { %content = zippy::get($url) };
    		$content{'site'} = 'zippyshare';
    	}
        elsif ($msg =~ m#(?:^|[^!])https?://www.dailymotion.com/video/([a-z0-9]+)#) {
            eval { %content = dailymotion::get($1) };
            print $1."\n";
    
            $content{'site'} = 'dailymotion';
            $content{'url'} = 'https://www.dailymotion.com/video/' . $1;
        }
    
        # something goes wrong ?
        if ($@) {
            $log->warning ($@);
            return;
        }
    
        # if we get a new content, we must save it
        if (%content) {
    	    if ($debug) {
    		    $log->debug($content{'url'});
    	    }
    	    else {
    		    # insertion de la vidéo dans la bdd
    		    my $sth = $dbh->prepare_cached('
                    INSERT INTO playbot (type, url, sender, title, duration)
                    VALUES (?,?,?,?,?)');
    		    $log->error("Couldn't prepare querie; aborting") unless (defined $sth);