diff --git a/PlayBot/sites/spotify.pm b/PlayBot/sites/spotify.pm new file mode 100644 index 0000000000000000000000000000000000000000..1c5fb9fc487eaa1aa494aad291cae956e1b9114c --- /dev/null +++ b/PlayBot/sites/spotify.pm @@ -0,0 +1,45 @@ +package PlayBot::sites::spotify; + +use strict; +use warnings; + +use LWP::UserAgent; +use JSON; +use FindBin; + +my $conf; +my $endpoint = "https://api.spotify.com/v1/tracks/"; + +sub regex +{ + return qr#(?:^|[^!])https?://open.spotify.com/track/([a-zA-Z0-9_-]+)#; +} + +sub get { + shift; + my $id = shift; + + my $ua = LWP::UserAgent->new( + timeout => 30, + env_proxy => 1, + ); + my $response = $ua->get($endpoint + .$id); + die($response->status_line) unless ($response->is_success); + + my $content = decode_json($response->decoded_content); + +# die "video not found" if (not scalar @{ $content->{items} }); + + my %infos; + + $infos{'title'} = $content->{'name'}; + $infos{'duration'} = $content->{'duration_ms'} / 1000; + $infos{'site'} = 'spotify'; + $infos{'url'} = 'https://open.spotify/track/'.$id; + $infos{'author'} = $content->{'artists'}->[0]->{'name'}; + + return %infos; +} + +1; diff --git a/PlayBot/utils/db/chan.pm b/PlayBot/utils/db/chan.pm index b37c7778427e26139ea9f01e691f3a5064f3f8f1..7d3312f40184ba908371f7562d09d38ed580726b 100644 --- a/PlayBot/utils/db/chan.pm +++ b/PlayBot/utils/db/chan.pm @@ -32,7 +32,7 @@ around 'BUILDARGS' => sub if (not $row) { - $sites = ['dailymotion', 'mixcloud', 'soundcloud', 'youtube']; + $sites = ['dailymotion', 'mixcloud', 'soundcloud', 'youtube', 'spotify']; $sth = $dbh->prepare(' insert into playbot_config (name, sites)