网易云音乐下载器

音乐下载器(本软件不得用于商业用途,仅做学习交流)

  1. 最近学了python 小试牛刀 试写了个网易云音乐下载器 可惜学得不精 只能下载能听到的歌曲 收费歌曲无能为力

  2. 使用挺简单的 就是 把要听的歌单地址复制到软件中 按下载就行了

  3. 在这里插入图片描述
    按打开网站 进入网易云音乐
    在这里插入图片描述
    选择一个自己喜欢的歌单或者歌曲 复制地址
    在这里插入图片描述
    在这里插入图片描述

用键盘 ctrl+v 黏贴到软件地址栏中 点击下载 速度还是挺快的 一下就完了
在这里插入图片描述
源码

import requests
import re
from lxml import etree
import os
import sys

class wangyi():
    def __init__(self,song_url):
        self.song_url = song_url
        self.headers={
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36',
        'Referer': 'https://music.163.com/',
        'Cookie': '_ntes_nuid=82fe201e46ba20e35d71ea7cb8ed32ce; _ntes_nnid=5cacaa7e37865185c6b2b20068aad68c,1529282484747; vjuids=57ef2709a.1643ad09a2e.0.065ebb025e1d3; __gads=ID=b835044bd90d4e10:T=1529995115:S=ALNI_MYTScfuvc2qpFIrZ-pnK5IA0WJEkQ; UM_distinctid=1645f8b11262ef-0a7fa78057d613-354c5266-13c680-1645f8b1127869; vjlast=1529995107.1530611308.13; vinfo_n_f_l_n3=5590f0ea0628c407.1.0.1530611307976.0.1530611328585; _iuqxldmzr_=32; WM_TID=R1Q8g4fF1%2FNmJwUV2QJKNLplmHcihvkN; JSESSIONID-WYYY=juyX%2FnJy99HtxQpJ%2F%2B8Wm%5CIsueiGiXXVtY2RxBw6aYeW0zC%5CQW5XJk6H4j2OB4VJA%2FDvavvWktYpFxD9QgXAdvZUl70CeUdy7VT%5C0yx5%2FSdZCDZzDGB8ixRf0ig%2Frr9QaGkuGdk6NZ0b0yewSiiE9yyhy%5CAS%5COpcW%2BuWba4vhjg2r6Ed%3A1533282780991; __utma=94650624.327510760.1533261565.1533265523.1533280981.3; __utmc=94650624; __utmz=94650624.1533280981.3.2.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; WM_NI=qzyyohObhtCNa%2BOok8crvWqAiDgEeDecnjAhPtiEtYa02iM8fmPkRdSbITIo%2FqIF7GanqvYK0Zcy4njfh%2F7S%2FChPB04G%2Ba5t9MjXAoeBREBHdRf1Ki0nJJKKohzMC7%2BVWWI%3D; WM_NIKE=9ca17ae2e6ffcda170e2e6ee95eb3c869ba282ec68b29e8eaed37995b6fb89c1219ab5bf93c765b199bfa4f22af0fea7c3b92ab3a6b79aee648dbea895c246a3f58190ea34a1aebab8f44bab9ca9a6e850a7bda28bc46494aca7a6f753a3f0fe8ad034a6b3a08cd17091be87b5cc65edaf87a7b64da3b2bf97dc41f486ad9ab766aabaa8d0b659ed9da8b1c13cf899e582b880fb93a6b9c465a79e9ea6c144a88eaad2ca63f4b286abca41adb8b6aec23de98a99b8cc37e2a3; __utmb=94650624.3.10.1533280981'
        }

    def single(self):
        print('正在努力地下载 请稍等')
        self.song_url = self.song_url.replace("#/","")
        sid = re.findall('\d+',self.song_url)[1]
        title = re.findall('\"title\": \"(.*?)\"',requests.get(self.song_url,headers=self.headers).content.decode())[0]
        ll = [':','\"','<','>','(',')','?','\'','-','\\','/','*']
        for l in ll:
            title = title.replace(l,'')
        temp = "http://music.163.com/song/media/outer/url?id={}.mp3"
        url = temp.format(sid)
        mp =requests.get(url,headers=self.headers).content
        with open(title+'.mp3','wb') as f:
                f.write(mp)
        print("下载完毕")


    def run(self):
        if re.findall('https://music.163.com/#/song\?id=(.*?)',self.song_url):
            self.single()
        else:
            
            print('正在努力地下载 请稍等')
            self.song_url = self.song_url.replace("#/","")
            html =requests.get(self.song_url,headers=self.headers).content
            html =etree.HTML(html)
            base = re.findall('\d+',self.song_url)[1]
            try:
                os.mkdir(base)
            except Exception as e:
                pass
            html =html.xpath("//ul[@class='f-hide']/li")

            for h in html:
                sid = h.xpath("./a/@href") 
                sid = re.findall('\d+',sid[0])[0]
                title = h.xpath("./a/text()")[0]
                ll = [':','\"','<','>','(',')','?','\'','-','\\','/','*']
                for l in ll:
                    title = title.replace(l,'')
                title = ".\{}\{}.mp3".format(base,title)
                temp = "http://music.163.com/song/media/outer/url?id={}.mp3"
                url = temp.format(sid)
                mp =requests.get(url,headers=self.headers).content
                with open(title,'wb') as f:
                    f.write(mp)
                print(title)
            print("下载完毕")



if __name__ == '__main__':
    url = sys.argv[1]
    w = wangyi(url)
    w.run()


from tkinter import *
from  tkinter  import ttk
import tkinter.messagebox
from wangyiyun import wangyi
import webbrowser
import threading
def calcPlus():

    print('开始下载音乐')
    links =link.get()
    wan = wangyi(links)
    wan.run()
    text ='下载音乐完毕'
    tkinter.messagebox.showinfo('提示',text)


def getweb():
    webbrowser.open("https://music.163.com/")


    
def thread_it():
    '''将函数打包进线程'''
    # 创建
    t = threading.Thread(target=calcPlus) 
    # 守护 !!!
    t.setDaemon(True) 
    # 启动
    t.start()


if __name__ == '__main__':
    root = Tk()
    root.title('网易云音乐歌单下载器--by 每天一游戏')
    link = StringVar()
    lb = tkinter.Listbox()

    f1 = Frame(root)
    f1.pack(padx=10,pady=5)


    Label(f1, text="要下载的音乐歌单:").grid(row=0,column=0)

    f1r = Frame(f1)
    f1r.grid(row=0, column=1)

    e1 = Entry(f1r, textvariable=link, width=50).grid(row=0,column=1)
    Button(f1r, text="下载", command=thread_it).grid(row=0, column=2)
    Button(f1r, text="打开网站", command=getweb).grid(row=0, column=3)


    mainloop()

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值