zoukankan      html  css  js  c++  java
  • 现在听歌要各大平台到处跑,嫌麻烦?制作个人专属的音乐下载器

    前言

    之前大家有没有过从电脑上下载歌曲MP3文件放到手机内存卡的经历,随着时代发展,现在的各大音乐软件已经成为播放器,下载音乐是要收费的,现在教大家从零开始可以通过python通过爬虫爬取音乐,教大家打造自己的音乐下载器

    知识点:

    1. python基础知识
    2. requests库
    3. urllib库
    4. BeautifulSoup

    环境:

    • windows
    • pycharm
    • python3

    先看效果图

     

    代码

    导入工具

    import os
    from urllib.request import urlretrieve
    from tkinter import *
    import requests
    import json
    import jsonpath
    from selenium import webdriver

    下载歌曲

    def song_load(song_url,song_title):
    
        # 创建文件夹
        os.makedirs('music', exist_ok=True)
        path = 'music{}.mp3'.format(song_title)
        text.insert(END, '歌曲:{},正在下载...'.format(song_title))
        # 文本框滚动
        text.see(END)
        # 更新
        text.update()
    
        urlretrieve(song_url, path)
    
        text.insert(END, '下载完毕:{},请试听'.format(song_title))
        # 文本框滚动
        text.see(END)
        # 更新
        text.update()

    搜索歌曲的id 名字

    def get_music_name():
        # 获取输入框的歌曲名称
        name = entry.get()
        platform = var.get()
        headers = {
    
            # 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36',
            # 'Referer': 'http://music.onlychen.cn/?name=%E4%BB%A5%E7%88%B6%E4%B9%8B%E5%90%8D&type=qq',
            # 'Origin': 'http://music.onlychen.cn',
            # 'Host': 'music.onlychen.cn',
            # 'Cookie': 'UM_distinctid=173e1b3fd7f683-018ad69a1b7ba2-3c634103-1fa400-173e1b3fd8084b; CNZZDATA1279162877=486742487-1597218425-null%7C1597462873',
            'X-Requested-With': 'XMLHttpRequest',
    
        }
    
        params = {
            'input': name,
            'filter': 'name',
            'type': platform,  # netease 网易云
            'page': '1',
        }
        # 拼接url
        url = 'http://music.onlychen.cn/'
        resp = requests.post(url,data=params,headers=headers)
        data = resp.json()
        print(data)
        title = jsonpath.jsonpath(data,"$..title")[0]
        author = jsonpath.jsonpath(data,"$..author")[0]
        url = jsonpath.jsonpath(data,"$..url")[0]
        print(title)
        print(author)
        print(url)
        # 下载歌曲
        song_load(url,title)

    搭建界面

    # 1.创建画布
    root = Tk()
    # 2.添加标题
    root.title('全网音乐下载器')
    # 3.设置窗口大小
    root.geometry('560x450+400+200')
    # 4.标签控件
    label = Label(root, text='请输入下载的歌曲:', font=('华文行楷', 20))
    # 5.定位
    label.grid()
    # 6.输入框
    entry = Entry(root, font=('隶书', 20))
    # 7.定位
    entry.grid(row=0, column=1)
    # 单选按钮***
    var = StringVar()
    r1 = Radiobutton(root,text="网易云",variable=var,value='netease')
    r1.grid(row=2, column=0)
    r2 = Radiobutton(root,text="qq",variable=var,value='qq')
    r2.grid(row=2, column=1)
    # 8.列表框
    text = Listbox(root, font=('楷书', 16), width=50, heigh=15)
    # 9.定位 columnspan 组件横跨的列数
    text.grid(row=3, columnspan=2)
    # 点击下载按钮
    button = Button(root, text='开始下载', font=('隶书', 15), command=get_music_name)
    # 定位 sticky 对齐方式 W E N S  东南西北
    button.grid(row=4, column=0, sticky=W)
    # 退出程序的按钮
    button1 = Button(root, text='退出程序', font=('隶书', 15), command=root.quit)
    # 定位 sticky 对齐方式 W E N S  东南西北
    button1.grid(row=4, column=1, sticky=E)
    # 显示界面
    root.mainloop()

     

    PS:如有需要Python学习资料的小伙伴可以加下方的群去找免费管理员领取

     

    可以免费领取源码、项目实战视频、PDF文件等

  • 相关阅读:
    Android WebView使用
    Android
    Instant Buy Android API Tutorial
    cocos2dx 手势识别
    cocos2d-x 判断两条直线是否相交
    golang 环境bash 以及shell
    技术描述
    golang web开发获取get、post、cookie参数
    Linux curl 模拟form表单提交信息和文件
    Golang HTTP文件上传
  • 原文地址:https://www.cnblogs.com/hhh188764/p/13518573.html
Copyright © 2011-2022 走看看