package YTMusicAPI::Mixins::BrowsingMixin; use strict; use warnings; use Moose::Role; use YTMusicAPI::Helpers; use YTMusicAPI::Navigation; use YTMusicAPI::Parsers::Browsing; use YTMusicAPI::Continuations; sub get_song { my ( $self, $video_id, $signature_timestamp ) = @_; my $endpoint = "player"; if ( !$signature_timestamp ) { $signature_timestamp = time() - 1; } my $params = { "playbackContext" => { "contentPlaybackContext" => { "signatureTimestamp" => $signature_timestamp } }, "video_id" => $video_id, }; my $response = $self->_send_request( $endpoint, $params ); my @keys = ( "videoDetails", "playabilityStatus", "streamingData", "microformat", "playbackTracking" ); foreach my $k ( keys %$response ) { unless ( grep { $_ eq $k } @keys ) { delete $response->{$k}; } } return $response; } 1;