Skip to content
Extraits de code Groupes Projets
Sélectionner une révision Git
  • ff4f4f574044e045ab113b7e7442145e6952834d
  • master par défaut
  • cinch
  • ruby
  • gh-pages
  • v1.0.0
6 résultats

sites.pm

Blame
  • sites.pm 6,09 Kio
    package PlayBot::sites;
    
    use strict;
    use warnings;
    use utf8;
    
    use LWP::UserAgent;
    use JSON;
    use Module::Pluggable
      sub_name    => 'sites',
      search_path => ['PlayBot::sites'],
      require     => 1;
    use Storable qw(dclone);
    
    use PlayBot::utils::db;
    use PlayBot::utils::db::chan;
    use PlayBot::utils::print;
    use PlayBot::commands::parser;
    
    our $irc;
    our $log;
    our $regex;
    our $playbot_api_key;
    
    sub external_parse {
        my $url = shift;
    
        my $content = `./PlayBot.go "$url"`;
        if ( $? >> 8 != 0 ) {
            die "Error";
        }
    
        my ( $matched_url, $external_id, $url, $title, $author, $duration ) =
          split( /\n/, $content );
    
        return (
            author      => $author,
            external_id => $external_id,
            duration    => $duration,
            matched_url => $matched_url,
            playlist    => 0,
            site        => 'soundcloud',
            title       => $title,
            url         => $url,
        );
    }
    
    sub parse {
        my ( $kernel, $user, $chan, $msg, $playlist ) = @_;
        my ( $nick, $mask ) = split( /!/, $user );
    
        my $chan_conf = PlayBot::utils::db::chan->new($chan);
    
        my %content;
    
        my $matching_url;
        my @matching_tags;
    
        eval { %content = external_parse($msg) };
        if ($@) {
            # parsing
            foreach my $site ( __PACKAGE__->sites ) {
                if ( not grep { $site eq "PlayBot::sites::$_" } @{ $chan_conf->sites } ) {
                next;
                }
    
                my @args;
                if ( @args = ( $msg =~ $site->regex ) ) {
                    eval { %content = $site->get(@args) };
                    $matching_url = $&;