2014-09-13 5 views

답변

0

이 작업을 수행하려는 언어는 무엇입니까? 또한 파일이 downloadable을 true로 반환하면 파일의 이름이 적절해야합니다.

예 : JSON에서

https://soundcloud.com/msmrsounds/ms-mr-hurricane-chvrches-remix

:

이 파일에 대한 링크
"download_url": "https://api.soundcloud.com/tracks/90787841/download" 

: Hurricane (CHVRCHES remix).wav

stream_url MP3가 제대로라는 이름의 파일을 반환하지 않습니다. 다음은 API에서 트랙 이름을 가져 와서 해당 파일 이름의 스트리밍 파일을 다운로드하기 위해 작성한 작은 Python 스크립트입니다. URL 변수를 다운로드하려는 트랙의 soundcloud.com URL로 바꿉니다.

import json, requests 

url = 'https://api.soundcloud.com/resolve.json' 

your_client_id = '[PUT YOUR client_id HERE]' 

params = dict(
    url='https://soundcloud.com/msmrsounds/ms-mr-hurricane-chvrches-remix', 
    client_id=your_client_id, 
) 

# resolve 
resp = requests.get(url=url, params=params) 
data = json.loads(resp.text) 

# get api url 
track_url = data.get('location') 

track_resp = requests.get(url=url, params=params) 
track_data = json.loads(resp.text) 

# get stream_url 

track_title = track_data.get('title') 

stream_url = track_data.get('stream_url') 

print track_title 
print stream_url 

stream_params = dict(
    client_id=your_client_id, 
) 

stream_resp = requests.get(url=url, params=params) 

# pass in title + '.mp3' for filename 
with open(track_title + '.mp3', 'wb') as handle: 
    response = requests.get(url=stream_url, params=stream_params, stream=True) 

    if not response.ok: 
     # Something went wrong 
     print 'Error downloading mp3' 

    for block in response.iter_content(1024): 
     if not block: 
      break 

     handle.write(block) 
+0

이 질문은 내가 원하는 것을하기 위해 헤더를 사용하여 해결되었습니다. 답변을 주셔서 감사합니다 @ JAL –

+0

@AgusSayyupoenya 내 대답은 허용으로 표시하시기 바랍니다. 감사. – JAL