libechonest 1.0.0

libechonest 1.0.0

测试已测试
语言语言 Obj-CObjective C
许可证 BSD 3.0
发布最新版本2014年12月

未归属维护。



 
依赖项
ASIHTTPRequest~> 1.8.1
SBJson~> 3.2
Reachability~> 3.1.0
TSLibraryImport= 0.0.1
 

  • 回声巢

一个用于回声巢API的Objective-C库

安装

  1. 获取libechonest项目。
  2. 编译它。
  3. 包含库的头文件,并链接到libechonest.a

除了链接到libechonest.a,您的应用程序还需要链接到以下框架和库

  • AVFoundation.framework
  • CFNetwork.framework
  • MediaPlayer.framework
  • MobileCoreServices.framework
  • SystemConfiguration.framework
  • libz.dylib

注意:您必须在项目的“其他链接器标志”设置中添加-Objc-all_load。(有关原因,请参阅使用categories构建Objective-C静态库。)

使用方式

#import <ENAPI.h>

...
[ENAPI initWithApiKey:@"YOUR_API_KEY"];
ENAPIRequest *request = [ENAPIRequest requestForEndpoint:@"artist/audio"];
request.delegate = self;                              // our class implements ENAPIRequestDelegate
[request setValue:@"Radiohead" forParameter:@"name"]; // name=Radiohead
[request setIntegerValue:15 forParameter:@"results"]; // results=15
[request startAsynchronous];

...

- (void)requestFinished:(ENAPIRequest *)request {
    NSAssert1(200 == request.responseStatusCode, @"Expected 200 OK, Got: %d", request.responseStatusCode);
    NSArray *audio = [request.response valueForKeyPath:@"response.audio"];
}

...

设置参数值

注意,在ENAPIRequest上存在为整数、浮点数和BOOL设置的带类型的方法setValue:forParameter:。支持多个值的参数使用值的NSArray来设置。

ENAPIRequest *request = [ENAPIRequest requestForEndpoint:@"artist/search"];
[request setBoolValue:YES forParameter:@"fuzzy_match"];
[request setFloatValue:0.5f forParameter:@"min_hotttnesss"];
[request setValue:@"radiohead" forParameter:@"name"];
// multiple values
NSArray *descriptions = [NSArray arrayWithObjects:@"mood:chill", @"location:london", nil];
[request setValue:descriptions forParameter:@"description"];

注意,如果一个参数支持多个值,但你只使用一个,你可以正常设置它,例如

[request setValue:@"mood:chill" forParameter:@"description"];

访问资源

访问艺术家沙盒需要对请求进行OAuth签名。ENAPIRequest现在处理像sandbox/access端点的GET请求的OAuth签名。这种支持需要您声明您的Echo Nest API消费者密钥和共享密钥。

提供了一个新的初始化器

[ENAPI initWithApiKey:@"YOUR_API_KEY" 
          ConsumerKey:@"YOUR_CONSUMER_KEY" 
      AndSharedSecret:@"YOUR_SHARED_SECRET"];

或者,您可以通过setter设置消费者密钥和共享密钥

[ENAPI setConsumerKey:@"YOUR_CONSUMER_KEY"];
[ENAPI setSharedSecret:@"YOUR_SHARED_KEY"];

注意:您的账户的共享密钥在Echo Nest开发者配置文件页面上列出。它不是一个从端点获得的令牌。

目前端点仅需要OAuth签名(因此不需要OAuth令牌)。需要API Key、消费者密钥和共享密钥。

访问沙盒需要您个别接受服务条款(《https://developer.echonest.com/account/sandboxes`))。

使用方式

#import <ENAPI.h>

...

ENAPIRequest * req = [[ENAPIRequest alloc] initWithEndpoint:@"sandbox/access"];

// Note - you must agree to the sandbox terms of service to gain 
//        access to the individual artist sandboxes 

[req setValue:assetId text forParameter:@"id"];     // id={desired-asset}
[req setValue:@"emi_gorillaz" forParameter:@"sandbox"]; // sandbox=emi_gorillaz

req.delegate = self;                        // our class implements ENAPIRequestDelegate

[req startAsynchronous];