diff --git a/PlayBot/sites.pm b/PlayBot/sites.pm index 57eff845cc498a1e22330ac4437638ed6fe1caae..1b09c2cc32c85d3107389f3f4296ccdbf3c17ec0 100644 --- a/PlayBot/sites.pm +++ b/PlayBot/sites.pm @@ -30,13 +30,14 @@ sub external_parse { die "Error"; } - my ( $external_id, $url, $title, $author, $duration ) = + 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, @@ -52,6 +53,9 @@ sub parse { my %content; + my $matching_url; + my @matching_tags; + eval { %content = external_parse($msg) }; if ($@) { # parsing @@ -63,6 +67,7 @@ sub parse { my @args; if ( @args = ( $msg =~ $site->regex ) ) { eval { %content = $site->get(@args) }; + $matching_url = $&; $content{playlist} = 0; last; } @@ -70,6 +75,7 @@ sub parse { and @args = ( $msg =~ $site->regex_playlist ) ) { eval { %content = $site->get_playlist(@args) }; + $matching_url = $&; $content{playlist} = 1; last; } @@ -80,13 +86,16 @@ sub parse { $log->warning($@); return; } + } else { + $matching_url = $content{matched_url}; + delete $content{matched_url}; } my $id; # if we get a new content, we must save it if (%content) { - $id = + ( $id, @matching_tags ) = insert_content( $kernel, $nick, $chan, dclone( \%content ), $msg, $playlist ); @@ -98,6 +107,8 @@ sub parse { } } } + + return ( $matching_url, @matching_tags ); } sub insert_content { @@ -189,7 +200,7 @@ sub insert_content { $dbh->commit; } - PlayBot::commands::parser::tag( $msg, $chan, $id ); + my @matching_tags = PlayBot::commands::parser::tag( $msg, $chan, $id ); my @tags; @@ -230,7 +241,7 @@ sub insert_content { privmsg => $chan => PlayBot::utils::print::print($content) ); } - return $content->{id}; + return $content->{id}, @matching_tags; } 1;