Skip to content
Extraits de code Groupes Projets
Sélectionner une révision Git
  • c2fd0c1cb1ae858770b9532753407ea6c529a1c5
  • master par défaut
  • script
  • new-devel
  • devel
  • timingView-edit
  • fix-mpv
7 résultats

VivyCli.cc

Blame
  • 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 );
        }