2014-09-13 73 views
0

下载时如何获取自动文件名?所以当我下载文件时,文件名本身自动保存着名歌曲/艺术​​家,例如:从名字(amgdgapwgd.mp3)到(Artist - Song title.mp3)。下载时替换文件名mp3

回答

0

你想要做什么语言?另外,如果文件返回downloadable等于true,则该文件应具有正确的名称。

例子:

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

从JSON:

"download_url": "https://api.soundcloud.com/tracks/90787841/download" 

链接到本文件:Hurricane (CHVRCHES remix).wav

stream_url MP3不返回正确命名的文件。下面是我刚刚写的一个小Python脚本,用于从API获取曲目名称并下载带有该文件名的流式文件。只需将网址变量替换为您希望下载的音轨的soundcloud.com网址即可。

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

这个问题解决了,我用Header做我想做的事。谢谢你的回答@JAL – 2014-09-20 02:36:01

+0

@AgusSayyupoenya如果我的答案有帮助,请将其标记为已接受。谢谢。 – JAL 2014-09-20 15:57:45