日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

python 根據列表批量下載網易云音樂的免費音樂

瀏覽:156日期:2022-07-03 13:15:37

運行效果

python 根據列表批量下載網易云音樂的免費音樂

代碼

# -*- coding:utf-8 -*-import requests, hashlib, sys, click, re, base64, binascii, json, osfrom Crypto.Cipher import AESfrom http import cookiejar'''Website:http://cuijiahua.comAuthor:Jack CuiRefer:https://github.com/darknessomi/musicbox'''class Encrypyed():'''解密算法'''def __init__(self):self.modulus = ’00e0b509f6259df8642dbc35662901477df22677ec152b5ff68ace615bb7b725152b3ab17a876aea8a5aa76d2e417629ec4ee341f56135fccf695280104e0312ecbda92557c93870114af6c9d05c4f7f0c3685b7a46bee255932575cce10b424d813cfe4875d3e82047b97ddef52741d546b8e289dc6935b3ece0462db0a22b8e7’self.nonce = ’0CoJUm6Qyw8W8jud’self.pub_key = ’010001’# 登錄加密算法, 基于https://github.com/stkevintan/nw_musicbox腳本實現def encrypted_request(self, text):text = json.dumps(text)sec_key = self.create_secret_key(16)enc_text = self.aes_encrypt(self.aes_encrypt(text, self.nonce), sec_key.decode(’utf-8’))enc_sec_key = self.rsa_encrpt(sec_key, self.pub_key, self.modulus)data = {’params’: enc_text, ’encSecKey’: enc_sec_key}return datadef aes_encrypt(self, text, secKey):pad = 16 - len(text) % 16text = text + chr(pad) * padencryptor = AES.new(secKey.encode(’utf-8’), AES.MODE_CBC, b’0102030405060708’)ciphertext = encryptor.encrypt(text.encode(’utf-8’))ciphertext = base64.b64encode(ciphertext).decode(’utf-8’)return ciphertextdef rsa_encrpt(self, text, pubKey, modulus):text = text[::-1]rs = pow(int(binascii.hexlify(text), 16), int(pubKey, 16), int(modulus, 16))return format(rs, ’x’).zfill(256)def create_secret_key(self, size):return binascii.hexlify(os.urandom(size))[:16]class Song():'''歌曲對象,用于存儲歌曲的信息'''def __init__(self, song_id, song_name, song_num, song_url=None):self.song_id = song_idself.song_name = song_nameself.song_num = song_numself.song_url = ’’ if song_url is None else song_urlclass Crawler():'''網易云爬取API'''def __init__(self, timeout=60, cookie_path=’.’):self.headers = {’Accept’: ’*/*’,’Accept-Encoding’: ’gzip,deflate,sdch’,’Accept-Language’: ’zh-CN,zh;q=0.8,gl;q=0.6,zh-TW;q=0.4’,’Connection’: ’keep-alive’,’Content-Type’: ’application/x-www-form-urlencoded’,’Host’: ’music.163.com’,’Referer’: ’http://music.163.com/search/’,’User-Agent’: ’Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36’}self.session = requests.Session()self.session.headers.update(self.headers)self.session.cookies = cookiejar.LWPCookieJar(cookie_path)self.download_session = requests.Session()self.timeout = timeoutself.ep = Encrypyed()def post_request(self, url, params):'''Post請求:return: 字典'''data = self.ep.encrypted_request(params)resp = self.session.post(url, data=data, timeout=self.timeout)result = resp.json()if result[’code’] != 200:click.echo(’post_request error’)else: return resultdef search(self, search_content, search_type, limit=9):'''搜索API:params search_content: 搜索內容:params search_type: 搜索類型:params limit: 返回結果數量:return: 字典.'''url = ’http://music.163.com/weapi/cloudsearch/get/web?csrf_token=’params = {’s’: search_content, ’type’: search_type, ’offset’: 0, ’sub’: ’false’, ’limit’: limit}result = self.post_request(url, params)return resultdef search_song(self, song_name, song_num, quiet=True, limit=9):'''根據音樂名搜索:params song_name: 音樂名:params song_num: 下載的歌曲數:params quiet: 自動選擇匹配最優結果:params limit: 返回結果數量:return: Song獨享'''result = self.search(song_name, search_type=1, limit=limit)if result[’result’][’songCount’] <= 0:click.echo(’Song {} not existed.’.format(song_name))else:songs = result[’result’][’songs’]if quiet:song_id, song_name = songs[0][’id’], songs[0][’name’]song = Song(song_id=song_id, song_name=song_name, song_num=song_num)return songdef get_song_url(self, song_id, bit_rate=320000):'''獲得歌曲的下載地址:params song_id: 音樂ID<int>.:params bit_rate: {’MD 128k’: 128000, ’HD 320k’: 320000}:return: 歌曲下載地址'''url = ’http://music.163.com/weapi/song/enhance/player/url?csrf_token=’csrf = ’’params = {’ids’: [song_id], ’br’: bit_rate, ’csrf_token’: csrf}result = self.post_request(url, params)# 歌曲下載地址song_url = result[’data’][0][’url’]# 歌曲不存在if song_url is None:click.echo(’Song {} is not available due to copyright issue.’.format(song_id))else:return song_urldef get_song_by_url(self, song_url, song_name, song_num, folder):'''下載歌曲到本地:params song_url: 歌曲下載地址:params song_name: 歌曲名字:params song_num: 下載的歌曲數:params folder: 保存路徑'''if not os.path.exists(folder):os.makedirs(folder)fpath = os.path.join(folder, str(song_num) + ’_’ + song_name + ’.mp3’)if sys.platform == ’win32’ or sys.platform == ’cygwin’:valid_name = re.sub(r’[<>:'/|?*]’, ’’, song_name)if valid_name != song_name:click.echo(’{} will be saved as: {}.mp3’.format(song_name, valid_name))fpath = os.path.join(folder, str(song_num) + ’_’ + valid_name + ’.mp3’)if not os.path.exists(fpath):resp = self.download_session.get(song_url, timeout=self.timeout, stream=True)length = int(resp.headers.get(’content-length’))label = ’Downloading {} {}kb’.format(song_name, int(length/1024))with click.progressbar(length=length, label=label) as progressbar:with open(fpath, ’wb’) as song_file:for chunk in resp.iter_content(chunk_size=1024):if chunk:song_file.write(chunk)progressbar.update(1024)class Netease():'''網易云音樂下載'''def __init__(self, timeout, folder, quiet, cookie_path):self.crawler = Crawler(timeout, cookie_path)self.folder = ’.’ if folder is None else folderself.quiet = quietdef download_song_by_search(self, song_name, song_num):'''根據歌曲名進行搜索:params song_name: 歌曲名字:params song_num: 下載的歌曲數'''try:song = self.crawler.search_song(song_name, song_num, self.quiet)except:click.echo(’download_song_by_serach error’)# 如果找到了音樂, 則下載if song != None:self.download_song_by_id(song.song_id, song.song_name, song.song_num, self.folder)def download_song_by_id(self, song_id, song_name, song_num, folder=’.’):'''通過歌曲的ID下載:params song_id: 歌曲ID:params song_name: 歌曲名:params song_num: 下載的歌曲數:params folder: 保存地址'''try:url = self.crawler.get_song_url(song_id)# 去掉非法字符song_name = song_name.replace(’/’, ’’)song_name = song_name.replace(’.’, ’’)self.crawler.get_song_by_url(url, song_name, song_num, folder)except:click.echo(’download_song_by_id error’)if __name__ == ’__main__’:timeout = 60output = ’Musics’quiet = Truecookie_path = ’Cookie’netease = Netease(timeout, output, quiet, cookie_path)music_list_name = ’music_list.txt’# 如果music列表存在, 那么開始下載if os.path.exists(music_list_name):with open(music_list_name, ’r’) as f:music_list = list(map(lambda x: x.strip(), f.readlines()))for song_num, song_name in enumerate(music_list):netease.download_song_by_search(song_name,song_num + 1)else:click.echo(’music_list.txt not exist.’)

以上就是python 根據列表批量下載網易云音樂的免費音樂的詳細內容,更多關于python 網易云音樂下載的資料請關注好吧啦網其它相關文章!

標簽: 網易云 Python
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美中文字幕一区二区| 91成人福利| 九九久久国产| 精品美女视频 | 日韩精品国产欧美| 日韩一区二区三免费高清在线观看 | 日韩美女国产精品| 欧美色综合网| 国产激情综合| 精品午夜久久| 国产成人免费视频网站视频社区| 久久中文在线| 免费污视频在线一区| 午夜国产精品视频免费体验区| 亚洲高清激情| 日韩精品一级中文字幕精品视频免费观看 | 国产不卡一区| 日韩中文首页| 在线视频精品| 亚洲一区二区小说| 中文字幕一区二区精品区| 亚洲精品系列| 国产欧美成人| 国产一区二区三区不卡视频网站 | 国产日韩三级| 国产一区二区三区免费在线| 精品三级久久| 老司机久久99久久精品播放免费| 激情综合在线| 日韩三级精品| 成人在线黄色| 亚洲激情社区| 国产日韩1区| 黄色aa久久| 最新日韩欧美| 欧美日本精品| 日韩电影免费在线观看| 亚洲免费在线| 国产激情欧美| 欧美日韩免费观看一区=区三区| 蜜桃av一区二区在线观看| 国产亚洲人成a在线v网站| 超级白嫩亚洲国产第一| 亚洲免费成人| 国产日产精品_国产精品毛片 | 最新国产精品久久久| 国产精品视频一区二区三区综合 | 日韩成人亚洲| 亚洲理论在线| a国产在线视频| 蜜臀av一区二区三区| 免费在线亚洲欧美| 宅男噜噜噜66国产日韩在线观看| 欧美日韩一区二区三区四区在线观看| 黄色网一区二区| 石原莉奈在线亚洲三区| 久久69成人| 丝袜美腿亚洲色图| 麻豆视频在线观看免费网站黄| 免费人成黄页网站在线一区二区 | 日本99精品| 91精品啪在线观看国产18| 日韩不卡一二三区| 亚洲午夜在线| 里番精品3d一二三区| 午夜在线精品偷拍| 最新中文字幕在线播放| 亚洲ww精品| 国产高清久久| 国内揄拍国内精品久久| 中文字幕日韩亚洲| 私拍精品福利视频在线一区| 欧美一区激情| 亚洲欧美视频一区二区三区| 激情黄产视频在线免费观看| 在线观看一区| 日韩精品欧美| 国产精品红桃| 中文字幕日本一区| 99精品电影| 免费日韩成人| 午夜久久av| 美女毛片一区二区三区四区| 精品淫伦v久久水蜜桃| 午夜亚洲福利| 九一精品国产| 首页国产精品| 国产精品香蕉| 亚洲网址在线观看| 亚洲网站视频| 国产一区二区三区天码| 欧美在线看片| 首页国产欧美日韩丝袜| 亚洲一级影院| 日韩三区免费| 精品网站999| 欧美精品中文| 日韩一区网站| 视频精品一区二区| 亚洲欧美久久| 亚洲免费播放| 激情五月综合| 99久久婷婷| 极品av在线| 国产不卡精品| 久久精品亚洲| 麻豆91精品91久久久的内涵| 国产欧美亚洲精品a| 日本午夜精品视频在线观看| 中文字幕一区二区三区在线视频| 午夜宅男久久久| 欧美日韩国产免费观看| 久久亚洲国产| 久久精品国内一区二区三区水蜜桃| 日本一二区不卡| 精品在线网站观看| 九九99久久精品在免费线bt| 国产精品tv| 国产精品第十页| 国产极品一区| 国产精品乱战久久久| 国产精品自在| 国产精品丝袜在线播放| 久久国际精品| 国产精品大片| 麻豆91在线播放| 精品久久久久久久| 国产一区不卡| 亚洲天堂免费电影| 日本精品在线中文字幕| 久久国产精品成人免费观看的软件| 亚洲黑丝一区二区| 黄色日韩精品| 蜜桃av一区二区在线观看| 四虎在线精品| 国产欧美日韩亚洲一区二区三区| 国产美女精品视频免费播放软件| 欧美片网站免费| 国产精品v日韩精品v欧美精品网站| 麻豆传媒一区二区三区| 97国产成人高清在线观看| 久久久久欧美精品| 亚洲在线网站| 日韩一二三区在线观看| 国产精品亚洲欧美一级在线| 韩日一区二区| 色天使综合视频| 99在线精品免费视频九九视 | 亚洲一级少妇| 欧美特黄一区| 中文字幕一区二区av| 国产剧情一区| 日本美女一区| 亚洲精品1区| 91亚洲无吗| 国产一区二区久久久久| 欧美日韩一二| 蜜臀久久久99精品久久久久久| 婷婷精品久久久久久久久久不卡| 日本一不卡视频| 精品视频高潮| 精品91久久久久| 日本中文字幕视频一区| 精品亚洲自拍| 欧美女激情福利| 国产欧美成人| 久久国产精品成人免费观看的软件| 免费成人av在线播放| 免费在线亚洲| 亚洲激情二区| 国产精品白浆| 欧美不卡高清| 奇米狠狠一区二区三区| 日韩大片在线播放| 亚洲精品人人| 激情国产在线| 中文字幕一区二区三区在线视频| 欧美激情亚洲| 亚洲激情黄色| 国产精品久久久久久妇女| 久久免费大视频| 欧美精品观看| 婷婷综合网站| 国产伦理一区| 狠狠干成人综合网| 麻豆精品在线| 久久99伊人| 国产成人精品免费视| 石原莉奈一区二区三区在线观看| 国模大尺度视频一区二区| 国产亚洲一级| 国产在线一区不卡| 在线综合视频| 荡女精品导航| 日韩欧美2区| 激情91久久| 97精品在线| 久久精品99久久久| 日韩专区在线视频| 久久久噜噜噜|