Module: Audd

Defined in:
lib/audd.rb,
lib/audd/client.rb,
lib/audd/errors.rb,
lib/audd/source.rb,
lib/audd/version.rb,
lib/audd/http_client.rb,
lib/audd/models/model.rb,
lib/audd/response_parser.rb,
lib/audd/recognize_request.rb,
lib/audd/models/error_response.rb,
lib/audd/models/deezer_metadata.rb,
lib/audd/models/spotify_metadata.rb,
lib/audd/models/music_brainz_entry.rb,
lib/audd/models/recognition_result.rb,
lib/audd/models/apple_music_metadata.rb,
lib/audd/models/recognize_success_response.rb,
sig/audd.rbs

Overview

Unofficial Ruby SDK for the AudD music recognition API.

audd = Audd.new("your_token")
result = audd.recognize(file: "clip.mp3").execute!
result&.title

See https://docs.audd.io/ for the API itself.

Defined Under Namespace

Modules: ResponseParser, Source Classes: API, ApiError, AppleMusicMetadata, AuthenticationError, BlockedError, Client, ConfigurationError, ConnectionError, DeezerMetadata, Error, ErrorResponse, HttpClient, InvalidAudioError, InvalidParameterError, InvalidRequestError, Model, MusicBrainzEntry, NeedsUpdateError, NotReleasedError, QuotaError, RateLimitError, RecognitionResult, RecognizeRequest, RecognizeSuccessResponse, SerializationError, ServerError, SpotifyMetadata, StreamLimitError, SubscriptionError, TimeoutError

Constant Summary collapse

ERROR_CLASSES_BY_CODE =

Maps AudD's numeric error codes onto the classes above. The code list is the enum in the OpenAPI ErrorResponse schema; 40 has no documented meaning, so it falls through to ServerError along with anything new.

{
  900 => AuthenticationError,
  901 => AuthenticationError,
  903 => AuthenticationError,
  902 => QuotaError,
  904 => SubscriptionError,
  905 => SubscriptionError,
  50 => InvalidRequestError,
  51 => InvalidRequestError,
  600 => InvalidRequestError,
  601 => InvalidRequestError,
  602 => InvalidRequestError,
  700 => InvalidRequestError,
  701 => InvalidRequestError,
  702 => InvalidRequestError,
  906 => InvalidRequestError,
  300 => InvalidAudioError,
  400 => InvalidAudioError,
  500 => InvalidAudioError,
  610 => StreamLimitError,
  611 => RateLimitError,
  907 => NotReleasedError,
  19 => BlockedError,
  31337 => BlockedError,
  20 => NeedsUpdateError,
  100 => ServerError,
  1000 => ServerError
}.freeze
VERSION =

Returns:

  • (String)
"0.2.0"

Class Method Summary collapse

Class Method Details

.error_class_for(code) ⇒ Object

Unknown codes are still errors — just not ones we can name.



122
123
124
# File 'lib/audd/errors.rb', line 122

def self.error_class_for(code)
  ERROR_CLASSES_BY_CODE.fetch(code, ServerError)
end

.new(api_token) ⇒ Object



60
61
62
63
64
65
66
# File 'lib/audd.rb', line 60

def self.new(api_token)
  if api_token.nil?
    raise ConfigurationError, "No AudD api_token given. Get one at https://dashboard.audd.io."
  end

  API.new(api_token)
end