电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

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

瀏覽:31日期: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
相關文章:
主站蜘蛛池模板: 注塑_注塑加工_注塑模具_塑胶模具_注塑加工厂家_深圳环科 | 方源木业官网-四川木门-全国木门专业品牌| 发光字|标识设计|标牌制作|精神堡垒 - 江苏苏通广告有限公司 | 湖南印刷厂|长沙印刷公司|画册印刷|挂历印刷|台历印刷|杂志印刷-乐成印刷 | 成人纸尿裤,成人尿不湿,成人护理垫-山东康舜日用品有限公司 | 企业微信scrm管理系统_客户关系管理平台_私域流量运营工具_CRM、ERP、OA软件-腾辉网络 | bng防爆挠性连接管-定做金属防爆挠性管-依客思防爆科技 | 全球化工设备网—化工设备,化工机械,制药设备,环保设备的专业网络市场。 | 威廉希尔WilliamHill·足球(中国)体育官方网站 | 砂石生产线_石料生产线设备_制砂生产线设备价格_生产厂家-河南中誉鼎力智能装备有限公司 | 石家庄网站建设|石家庄网站制作|石家庄小程序开发|石家庄微信开发|网站建设公司|网站制作公司|微信小程序开发|手机APP开发|软件开发 | 天空彩票天下彩,天空彩天空彩票免费资料,天空彩票与你同行开奖,天下彩正版资料大全 | 奇酷教育-Python培训|UI培训|WEB大前端培训|Unity3D培训|HTML5培训|人工智能培训|JAVA开发的教育品牌 | 老城街小面官网_正宗重庆小面加盟技术培训_特色面馆加盟|牛肉拉面|招商加盟代理费用多少钱 | 环球电气之家-中国专业电气电子产品行业服务网站! | 南汇8424西瓜_南汇玉菇甜瓜-南汇水蜜桃价格 | 校园文化空间设计-数字化|中医文化空间设计-党建|法治廉政主题文化空间施工-山东锐尚文化传播公司 | 杭州画室_十大画室_白墙画室_杭州美术培训_国美附中培训_附中考前培训_升学率高的画室_美术中考集训美术高考集训基地 | b2b网站大全,b2b网站排名,找b2b网站就上地球网 | 蔬菜配送公司|蔬菜配送中心|食材配送|饭堂配送|食堂配送-首宏公司 | 真空冷冻干燥机_国产冻干机_冷冻干燥机_北京四环冻干 | 通用磨耗试验机-QUV耐候试验机|久宏实业百科 | 制冷采购电子商务平台——制冷大市场 | 泰兴市热钻机械有限公司-热熔钻孔机-数控热熔钻-热熔钻孔攻牙一体机 | 减速机电机一体机_带电机减速器一套_德国BOSERL电动机与减速箱生产厂家 | 有声小说,听书,听小说资源库-听世界网| 整合营销推广|营销网络推广公司|石家庄网站优化推广公司|智营销 好物生环保网、环保论坛 - 环保人的学习交流平台 | 深圳展厅设计_企业展馆设计_展厅设计公司_数字展厅设计_深圳百艺堂 | 模型公司_模型制作_沙盘模型报价-中国模型网 | 碳钢法兰厂家,非标法兰,定制异型,法兰生产厂家-河北九瑞管道 | 包塑软管|金属软管|包塑金属软管-闵彬管业 | 柔性测斜仪_滑动测斜仪-广州杰芯科技有限公司 | 深圳离婚律师咨询「在线免费」华荣深圳婚姻律师事务所专办离婚纠纷案件 | 深圳VI设计-画册设计-LOGO设计-包装设计-品牌策划公司-[智睿画册设计公司] | 山东聚盛新型材料有限公司-纳米防腐隔热彩铝板和纳米防腐隔热板以及钛锡板、PVDF氟膜板供应商 | 上海公司注册-代理记账-招投标审计-上海昆仑扇财税咨询有限公司 上海冠顶工业设备有限公司-隧道炉,烘箱,UV固化机,涂装设备,高温炉,工业机器人生产厂家 | 上海诺狮景观规划设计有限公司 | 间苯二酚,间苯二酚厂家-淄博双和化工 | 交流伺服电机|直流伺服|伺服驱动器|伺服电机-深圳市华科星电气有限公司 | 北京办公室装修,办公室设计,写字楼装修-北京金视觉装饰工程公司 北京成考网-北京成人高考网 | 礼仪庆典公司,礼仪策划公司,庆典公司,演出公司,演艺公司,年会酒会,生日寿宴,动工仪式,开工仪式,奠基典礼,商务会议,竣工落成,乔迁揭牌,签约启动-东莞市开门红文化传媒有限公司 |