def get_song(data2,data4): for j in range(len(data2)): musiclist=cloudmusic.getPlaylist(data2[j]) for music in musiclist: writer.writerow([music.id, music.name, music.url, music.artist,music.artistId, music.album,music.albumId,data4[j],data2[j]]) csv_file.close()
def download_music(list_id): try: play_list = cloudmusic.getPlaylist(list_id) for music in play_list: music.download(level='lossless') print('下载完成') except: print('获取失败,请输入正确的歌单id')
def music_list(self,type): self.ui.music_list_id_Edit.clear() method = self.ui.music_list_tableWidget.rowCount() for i in range(method): self.ui.music_list_tableWidget.removeRow(0) music_id = int(self.ui.music_list_Edit.text()) if type =='music_paly': music_play_list = cloudmusic.getPlaylist(music_id) else: music_play_list = cloudmusic.getAlbum(music_id) self.ui.music_list_label.setText(f'搜索成功!共{len(music_play_list)}首') for i in range(len(music_play_list)): self.ui.music_list_tableWidget.insertRow(0) for i in range(len(music_play_list)): self.ui.music_list_tableWidget.setItem(i, 0, QTableWidgetItem(f"{music_play_list[i].name}")) self.ui.music_list_tableWidget.setItem(i, 1, QTableWidgetItem(f"{music_play_list[i].artist[0]}")) self.ui.music_list_tableWidget.setItem(i, 2, QTableWidgetItem(f"《{music_play_list[i].album}》")) self.ui.music_list_id_Edit.insertPlainText(f'{music_play_list[i].id}\n')
def getmusic(): choice = ['1.获取歌单信息', '2.获取个人信息', '3.退出本系统'] choose = e.buttonbox('请选择操作', '网易云音乐系统', choice) if choose == choice[0]: list_id = e.integerbox('请输入歌单的id', '网易云音乐系统', upperbound=999999999) try: play_list = cloudmusic.getPlaylist(list_id) except: e.msgbox('获取失败,请输入正确的歌单id') getmusic() choice1 = ['1.下载歌单', '2.退出本程序'] msg = '' for each in play_list: msg += each.name + '\n' choose = e.buttonbox('歌曲名如下:\n' + msg, '请选择接下来的操作', choice1) if choose == choice1[0]: dir = e.diropenbox('请选择存放地址') os.chdir(dir) e.msgbox('点确定以开始下载', '网易云音乐系统') for music in play_list: music.download(level='lossless') e.msgbox('下载完成') elif choose == choice1[1]: pass elif choose == choice[1]: id = e.integerbox('请输入要查找的id', '网易云音乐系统', '515694669', upperbound=999999999) if id == None: getmusic() user = cloudmusic.getUser(id) msg = '' dict1 = { 'id': '用户id', 'level': '用户等级', 'listenSongs': '累计听歌数量', 'createTime': '账号创建时间', 'nickname': '用户昵称', 'avatarUrl': '头像url', 'city': '所在城市的行政区划代码', 'province': '所在省份的行政区划代码', 'vipType': 'vip类型', 'birthday': '生日时间戳', 'signature': '个性签名', 'fans': '粉丝数量', 'follows': '关注的用户数量', 'eventCount': '动态数量', 'playlistCount': '创建的歌单数量' } for key, value in dict1.items(): msg += str(value) + ':' + str(eval('user.' + str(key))) + '\n' choice = ['1.获取用户的歌单(下载)', '2.退出本程序'] choose = e.buttonbox('信息如下:\n' + msg, '网易云音乐系统', choice) if choose == choice[0]: msg = '' playlist = user.getPlaylist() n = 0 for each in playlist: msg += str(n) + '.' + each['name'] + '\n' n += 1 choice = ['1.下载歌单', '2.退出本程序'] choose = e.buttonbox('歌单名称:\n' + msg, '网易云音乐系统', choice) #515694669 if choose == choice[0]: tips = '请选择下载的范围\n' list_range = e.enterbox( tips + msg + '(请用“,”将各歌单分割,如“1-2,3,4”)', '网易云音乐系统') print(list_range) if list_range == None: getmusic() list1 = [] if ',' or ',' in list_range: #将范围分割 list_range = list_range.replace(',', ',') list_range = list_range.split(',') print(list_range) for each in list_range: if '-' in each: a, b = each.split('-') list_range.remove(each) for i in range(int(a), int(b) + 1): list1.append(i) else: list1.append(int(each)) elif '-' in list_range: a, b = list_range.split('-') for i in range(int(a), int(b) + 1): list1.append(i) else: list1.append(int(list_range)) list1 = list(set(list1)) if e.ccbox('歌单范围是%s,点按continue开始下载' % str(list1)): try: dir = e.diropenbox('请选择存放地址') for i in list1: dirname = playlist[int(i)]['name'] dirs = os.path.join(dir, dirname) os.mkdir(dirs) os.chdir(dirs) download_music(playlist[int(i)]['id']) os.chdir(dir) except: getmusic() elif choose == choice[1]: pass show()
import os print("请输入想干的事情\n1.下载单曲音乐\n2.下载歌单\n3.下载专辑\n") todo = input("你的选择是: ") if (todo == "1"): songid = input("请输入歌曲id: ") music = cloudmusic.getMusic(songid) print("歌名:{}".format(music.name)) print("歌手:{}".format(music.artist)) print("专辑:{}".format(music.album)) print("音频文件url:{}".format(music.url)) os.system("aria2c --split 200 " + "\"" + music.url + "\"" + " " + "-o " + "\"" + music.name + ".m4a" + "\"") elif (todo == "2"): playlist1 = input("请输入歌单id: ") playlist = cloudmusic.getPlaylist(playlist1) for music in playlist: print("歌名:{}".format(music.name)) print("歌手:{}".format(music.artist)) print("专辑:{}".format(music.album)) print("音频文件url:{}".format(music.url)) os.system("aria2c --split 200 " + "\"" + music.url + "\"" + " " + "-o " + "\"" + music.name + ".m4a" + "\"") elif (todo == "3"): album1 = input("请输入专辑id: ") album = cloudmusic.getAlbum(album1) for music in album: print("歌名:{}".format(music.name)) print("歌手:{}".format(music.artist)) print("专辑:{}".format(music.album)) print("音频文件url:{}".format(music.url))
def getPlaylist(id): playlist = cloudmusic.getPlaylist(id) for music in playlist: print(music.name) music.download('./cloudmusic', "lossless")
from os.path import join, getsize #Handling the problem of Windows reserved words in file names intab = "?*/\\|.:><\"\'" outtab = " " trantab = str.maketrans(intab, outtab) Error_List = "\n----------------------------------------------------\n" If_End = False while not If_End: If_Download = False while not If_Download: Music_List_ID = input( "Please enter the ID of the Netease cloud music playlist that you wish to download:\n" ) musiclist = cloudmusic.getPlaylist(Music_List_ID) #Display the number of songs in the playlist and confirm whether to download print("The playlist you wish to download contains ", len(musiclist), " songs. Do you want to download? Y/N") Check_Download = input() if Check_Download == "Y" or Check_Download == "y": If_Download = True If_Path = False while not If_Path: Download_Addrass = input( "Please enter the path where you want to store the song:\n") if os.path.isdir(Download_Addrass): If_Path = True else: print("The path you entered is illegal! Please re-enter!") #Make sure the quality of music(standard by default
# 601776277 是我的一个歌单id # print(playlist) # [<Music object - 445702291>, <Music object - 27198683>, <Music object - 27198679>, <Music object - 1868496>, <Music object - 26857076>, <Music object - 27198673>, <Music object - 27198672>, <Music object - 27198671>, <Music object - 1868520>, <Music object - 1868553>, <Music object - 486069583>, <Music object - 27198663>, <Music object - 1869285>, <Music object - 27198691>, <Music object - 1868483>] # 每个Music object包含属性:url(音频文件链接),level(品质),tyoe(格式),id(歌曲id),name(歌曲名),aitist(歌手),album(所属专辑),size(音频文件大小) # 每个Music object包含方法:1.download()下载到本地 2.review()获取详细评论 # music = cloudmusic.getMusic(1381755293) # print(music.getCommentCount()) # comments = music.getHotComments() # for com in comments: # print(com['content']) # print(com['likeCount']) musiclist = cloudmusic.getPlaylist(362246091) # 循环输出每个Music对象的评论数 for music in musiclist: print(music.name) print(music.getCommentsCount()) print(len(musiclist)) # loader = api.createLoader() # loader.data = musicList # if __name__ == "__main__": # loader.start()
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2020/05/27 下午 2:58 # @Author : 殇夜殇雪 # @File : 歌单.py import cloudmusic import io import sys sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='gb18030') 歌单 = cloudmusic.getPlaylist(5002003275) print(type(歌单)) print(歌单) for i in range(len(歌单)): print(f"第{i + 1}首:{歌单[i].name}")
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2020/05/30 下午 9:54 # @Author : 殇夜殇雪 # @File : 对象方法.py import cloudmusic import io import sys sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='gb18030') 对象 = cloudmusic.getPlaylist(5002003275) # 对应歌单ID 排行 = cloudmusic.getUser(1804446467) # print(type(对象)) for i in range(len(对象)): print(f"创建者ID:{对象[i].artistId}") print(f"歌曲ID:{对象[i].id}") print(f"第{i+1}首:{对象[i].name}") print(f"格式:{对象[i].type}")
import cloudmusic playlist = cloudmusic.getPlaylist(5374691276) for music in playlist: music.download(level="lossless")