Python Request Libary Error 404处理Soundcloud API

时间:2014-07-19 02:40:41

标签: python request http-status-code-404 soundcloud

所以我试图创建一个程序来获取最近上传的Soundcloud轨道的类型和位置,并将它们显示在地图上。我尝试使用Soundcloud API收集数据,但是在程序执行时随机点会抛出HTTPError。这是我的代码:

import soundcloud
import urllib2

client = soundcloud.Client(client_id="xxxxx",
                       client_secret="xxxxx",
                       username="xxxx",
                       password="xxxx")

def main():
        for trackId in getAllTrackId('tracks/'):
            try:
                trackId = str(trackId)
                userId = str(client.get('tracks/' + trackId).user_id)
                genre = client.get('tracks/' + trackId).genre
                country = client.get('users/' + userId).country
                city = client.get('users/' + userId).city
                user = client.get('tracks/' + trackId).user
            except urllib2.HTTPError, e:
                print e.geturl()
            if (type(city) != None) & (type(country) != None) & (type(genre) != None):
                try:
                    print 'User: ' + userId + '\t\tLocation: ' + city + ', ' + country + '\t\tGenre: ' + genre
                except:
                    print trackId

def getAllTrackId(path):
    items=[]
    page_size=200
    offset=0

    page = client.get(path, limit=page_size, offset=offset)
    #while (len(page) != 0):
    while (offset<=1000):
        for item in page:
            items.append(item.id)
        offset += page_size
        page = client.get(path, limit=page_size, offset=offset)

    return items

main()

我试图找出如何捕获错误,但也是为什么它首先被抛出。我是编程新手,所以我确信我的代码中有很多错误,但是如果有人能帮我解决这个问题,那就太棒了:))

(env)xxxxxxx-MacBook-Pro-2:soundcloudmap xxxxxxxxxx$ python soundcloudmap.py
User: 1278531       Location: Detroit, United States        Genre: HSB
User: 1139662       Location: Brasilia, Brazil      Genre: Beat
159333532
User: 23129248      Location: Cadiz, Spain      Genre: Breaks
159333523
User: 10761166      Location: Wadsworth, United States      Genre: Say

Traceback (most recent call last):
  File "soundcloudmap.py", line 43, in <module>
    main()
  File "soundcloudmap.py", line 28, in main
    userId = str(client.get('tracks/' + trackId).user_id)
  File "/Users/michaelspearman/code/soundcloudmap/env/lib/python2.7/site-packages/soundcloud/client.py", line 130, in _request
    return wrapped_resource(make_request(method, url, kwargs))
  File "/Users/michaelspearman/code/soundcloudmap/env/lib/python2.7/site-packages/soundcloud/request.py", line 134, in make_request
    result.raise_for_status()
  File "/Users/michaelspearman/code/soundcloudmap/env/lib/python2.7/site-packages/requests/models.py", line 795, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 404 Client Error: Not Found

编辑: 为了捕获错误,我只需要正确地遵循错误的路径.. duhh

    except urllib2.HTTPError, e:

应该是

    except requests.exceptions.HTTPError as e:

但我还是不确定为什么会被抛出..

1 个答案:

答案 0 :(得分:0)

来自Soundclould Python文档:

tracks = client.get('/tracks', limit=10)

将此与您的比较:

client.get('tracks/' + trackId).user_id

更具体地说,您错过了领先的/。添加它应该有效。