ios - 从Dropbox iOS Core API获取音频文件

标签 ios audio dropbox-api

我需要列出用户Dropbox中的所有音频文件。我已经在开发人员控制台上配置了我的应用程序以具有相应的权限。现在,我已经对用户进行了身份验证,我可以检索所有目录,但是我想要一个进入每个文件夹并列出可以找到的AudioFiles的方法。目前,我的方法可以做到这一点,但我有三个问题。

  • 该方法有点慢(递归)
  • 我遇到了两个随机错误(可能是由于每秒多个请求)

    列出一个随机文件夹。
    2015-06-02 12:44:52.634 Podbox[9038:2918749] Error loading metadata: Error      
    Domain=dropbox.com Code=503 "The operation couldn’t be completed. 
    (dropbox.com error 503.)" UserInfo=0x170270780 {path=/ios 
    dev/passbook/signpass/signpass.xcodeproj/xcuserdata/gsteele.xcuserdatad, 
    error=Rate limiting oauth_accesses_per_access_token}
    

    访问音乐
    2015-06-02 12:44:32.665 Podbox[9038:2918749] Error loading metadata: Error 
    Domain=NSURLErrorDomain Code=-1001 "The operation couldn’t be completed.
    (NSURLErrorDomain error -1001.)" 
    UserInfo=0x17047cf00 {path=/music/Blink 182/Unknown Album}
    
  • 我知道我只是在获取MP3文件。有没有一种方法可以获取所有媒体文件而不检查其所有PathExtensions?

  • 目前,我正在尝试这样的事情:
    - (void)restClient:(DBRestClient *)client loadedMetadata:(DBMetadata *)metadata {
    
      if (metadata.isDirectory) {
    
        for (DBMetadata *file in metadata.contents) {
    
                if (file.isDirectory) {
    
                    [self.restClient loadMetadata:file.path];
    
                } else if ([file.path.pathExtension isEqualToString:@"mp3"]){
    
                    NSLog(@"    %@", file.filename);
    
                }
    
            }
        }
    }
    

    你真棒。

    最佳答案

    当像这样递归使用元数据方法时,肯定会效率低下,因此,您需要使用loadDelta方法:

    /* Loads a list of files (represented as DBDeltaEntry objects) that have changed since the cursor was generated */
    - (void)loadDelta:(NSString *)cursor;
    
    - (void)restClient:(DBRestClient*)client loadedDeltaEntries:(NSArray *)entries reset:(BOOL)shouldReset cursor:(NSString *)cursor hasMore:(BOOL)hasMore;
    - (void)restClient:(DBRestClient*)client loadDeltaFailedWithError:(NSError *)error;
    

    这里有一个博客文章(尽管适用于Python),涵盖了如何使用它的基本思想:

    https://blogs.dropbox.com/developers/2013/12/efficiently-enumerating-dropbox-with-delta/

    在您的情况下,这应该是一种更有效的方法,可以解决您的前两个问题。

    但是,它没有提供过滤服务器上特定文件类型的方法,因此您需要在客户端进行操作。

    关于ios - 从Dropbox iOS Core API获取音频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30603124/

    相关文章:

    ios - NSTimeZone 初始化结果为 "unable to read data"

    ios - 如何使用 Phonegap/Cordova 获取实时麦克风电平?

    c++ - Cocos2d : How do I generate a texture, Sprite ,还是来自 2D 数组的图像?

    java - 音频文件下采样

    html - HTML-如果我打开索引文件,音频文件会起作用,但上传到Web时不会起作用

    应用恢复后 iOS Dropbox 数据存储崩溃

    ios - 将 TesseractOCR Objective-C 框架与 Swift iOS 应用程序一起使用(桥接头问题)

    java - 为什么使用Java Audiosystem的glissando频率会过高

    ios - Dropbox API iOS 不上传文件

    ruby-on-rails - 能够将图像上传到 Dropbox 但无法获取图像 url 并将其存储在数据库中