Sélectionner une révision Git
-
Alexandre Morignot a rédigé
This reverts commit 397042dd.
Alexandre Morignot a rédigéThis reverts commit 397042dd.
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 = $&;