Sélectionner une révision Git
soundcloud.pm 3,71 Kio
package PlayBot::sites::soundcloud;
use strict;
use warnings;
use utf8;
use LWP::UserAgent;
use JSON;
use Scalar::Util qw(looks_like_number);
use PlayBot::utils::Logging;
my $log = PlayBot::utils::Logging->new( 'STDOUT', 1 );
my $root = 'https://api.soundcloud.com';
my $clientId = 'f4956716fe1a9dc9c3725af822963365';
our $clientSecret;
my $access_token = '';
my $access_token_time;
sub regex_playlist {
return
qr#(?:^|[^!])https?://(?:www\.)?soundcloud.com/([a-zA-Z0-9_-]+/sets/[a-zA-Z0-9_-]+)(?:\?.+)?#;
}
sub regex {
return
qr#(?:^|[^!])https?://(?:www\.)?soundcloud.com/([a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+)(?:\?.+)?#;
}
sub get_access_token {
if ( $access_token ne '' && time() - $access_token_time <= 3000 ) {
return $access_token;
}
$log->info("Get a new soundcloud token");
my $ua = LWP::UserAgent->new(
timeout => 30,
env_proxy => 1,
);
my $response =
$ua->post( $root
. '/oauth2/token?grant_type=client_credentials&client_id='
. $clientId
. '&client_secret='
. $clientSecret, );
die( $response->status_line ) unless ( $response->is_success );
my $content = decode_json( $response->decoded_content );
$access_token = $content->{'access_token'};
$access_token_time = time();
return $access_token;
}
sub get_playlist {
shift;
my $id = shift;
my $ua = LWP::UserAgent->new(
timeout => 30,
env_proxy => 1,
);
my $response;
if ( looks_like_number($id) ) {
$response =
$ua->get( $root . '/playlists/' . $id . '?client_id=' . $clientId );
}