def listtracks(continuation_token: nil)
      oauth2_refresh_access_token if oauth2_access_token_expired?

      pb_body = MusicManager::ExportTracksRequest.new
      pb_body.client_id = uploader_id
      pb_body.export_type = MusicManager::ExportTracksRequest::TrackType::ALL
      pb_body.continuation_token = continuation_token unless continuation_token.nil?

      uri = URI('https://music.google.com/music/exportids')

      http = Net::HTTP.new(uri.host, uri.port)
      http.use_ssl = true

      req = Net::HTTP::Post.new(uri.path)
      req.body = pb_body.serialize_to_string
      req['Content-Type'] = 'application/x-google-protobuf'
      req['Authorization'] = oauth2_authentication_header
      req['X-Device-ID'] = uploader_id
      res = http.request(req)

      unless res.is_a? Net::HTTPSuccess
        fail Error, 'listtracks failed: #{res.code}'
      end

      MusicManager::ExportTracksResponse.new.parse_from_string(res.body)
    end
def listtracks(continuation_token: nil)
      oauth2_refresh_access_token if oauth2_access_token_expired?

      pb_body = MusicManager::ExportTracksRequest.new
      pb_body.client_id = uploader_id
      pb_body.export_type = MusicManager::ExportTracksRequest::TrackType::ALL
      pb_body.continuation_token = continuation_token unless continuation_token.nil?

      uri = URI('https://music.google.com/music/exportids')

      http = Net::HTTP.new(uri.host, uri.port)
      http.use_ssl = true

      req = Net::HTTP::Post.new(uri.path)
      req.body = pb_body.serialize_to_string
      req['Content-Type'] = 'application/x-google-protobuf'
      req['Authorization'] = oauth2_authentication_header
      req['X-Device-ID'] = uploader_id
      res = http.request(req)

      unless res.is_a? Net::HTTPSuccess
        fail Error, 'listtracks failed: #{res.code}'
      end

      MusicManager::ExportTracksResponse.new.parse_from_string(res.body)
    end
MusicManager API