分享一个无聊自己写的一个实用小工具:音乐下载器

看图:

代码分享:

import requests
import json,sys
from moviepy.editor import *
import os , threading
session = requests.session()
header = {'user-agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36'}
#清空输入内容
def text_log_clear():text_log.delete("1.0","end")
def text_views_clear():text_views.delete("1.0","end")
def get_vids():# music_name = input("请输入歌曲名字\n")text_views_clear()music_name = entry.get()if not music_name:text_views.insert(END,'歌曲名不能为空!!!')returnmusic_url = "https://c.y.qq.com/soso/fcgi-bin/client_search_cp?ct=24&qqmusic_ver=1298&remoteplace=txt.yqq.mv&searchid=143180272530132869&aggr=0&catZhida=1&lossless=0&sem=1&t=12&p=1&n=12&w={}&g_tk_new_20200303=5381&g_tk=5381&loginUin=0&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8&notice=0&platform=yqq.json&needNewCode=0".format(music_name)try:response = session.get(url=music_url, headers=header).textresult = json.loads(response)lens = len(result['data']['mv']['list'])except:text_log.insert(END,"网络请求出问题了噢!快去看看哪里出问题了吧~")for index in range(0, lens):song = result['data']['mv']['list'][index]['mv_name']singer = result['data']['mv']['list'][index]['singer_name']indexs = str(index) + ": " + song + "----" + singer+"\n"text_views.insert(END,indexs)with open("log.txt","w",encoding="utf-8") as f :f.write(response)# print(str(index) + ": " + song + "----" + singer)# s = input("请输入你要下载的MV(如没有你想要的视频可输入非数字):")
def downlald():with open('log.txt',"r",encoding="utf-8") as f:sheet = json.loads(f.read())s = entry2.get()if s :text_log_clear()text_log.insert(END, "请稍后...\n")vids = sheet['data']['mv']['list'][int(s)]['v_id']song_name = sheet['data']['mv']['list'][int(s)]['mv_name']singer_name = sheet['data']['mv']['list'][int(s)]['singer_name']singer_name = singer_name.replace("/", ",")name = song_name + "--" + singer_nameflie = song_name + "--" + singer_name + '.mp4'text_log_clear()text_log.insert(END, name + "下载中.......\n")dowlond(vids,name,flie)else:text_log_clear()text_log.insert(END, "输入有误!!!\n")
def dowlond(vids,name,flie):url = "https://u.y.qq.com/cgi-bin/musicu.fcg"#请求参数data1 = {"getMvUrl":{"module":"gosrf.Stream.MvUrlProxy","method":"GetMvUrls","param":{"vids":[vids],"request_typet":10001,"addrtype":3}},"comm":{"ct":24,"cv":4747474,"g_tk":5381,"uin":0,"format":"json","platform":"yqq"}}data = json.dumps(data1)  #转字符串mv_response = session.post(url=url,headers=header,data=data).text#提取高清URL位置mv_url = json.loads(mv_response)["getMvUrl"]["data"][vids]['mp4'][2]['freeflow_url'][-1]# print("下载地址:\n"+mv_url)mv = session.get(mv_url).contenttry:with open(flie,"wb") as f:f.write(mv)# print("mp3文件下载中.......")with VideoFileClip(flie) as video:audio = video.audioaudio.write_audiofile(path_entry.get() + "/" + name + '.'+path2.get())# print(name + "mp3文件下载完成")os.remove(flie)text_log.insert(END,name + "下载完成\n")except:text_log.insert(END, name + "下载出错了,请重试...\n")
#多进程
class Thread():def sceh():sech_thread = threading.Thread(target=get_vids).start()def downlald():downlald_thread = threading.Thread(target=downlald).start()def go_clear():text_views_clear()text_log_clear()
#图形界面
import tkinter
from tkinter import StringVar,END ,scrolledtext
from tkinter.filedialog import askdirectory
root = tkinter.Tk()
root.wm_iconbitmap('软件图标.ico')
root.geometry('550x375')
title = root.title("音乐下载器")
lable = tkinter.Label(root,text = "请输入你要搜索的歌曲:")
lable.place(x=0,y=0)
lable2 = tkinter.Label(root,text="请输入你要下载的歌曲:")
lable2.place(x=0,y=200)
entry = tkinter.Entry(root,width=29)
entry.place(x=150,y=0)
entry2 = tkinter.Entry(root,width=5)
entry2.place(x=150,y=200)
text_views = scrolledtext.ScrolledText(root,width = 50,height = 10)
text_log = tkinter.Text(root,width=50,height=5)
text_log.place(x=0,y=260)
text_views.place(x=0,y=60)
input_button = tkinter.Button(root,text = "搜索",command = Thread.sceh)
download_button = tkinter.Button(root,text="下载",command = Thread.downlald)
lable_path = tkinter.Label(root,text = "文件保存路径:")
lable_path.place(x=380,y=0)
def get_path():_path = askdirectory()path.set(_path)
path = StringVar()
path_entry = tkinter.Entry(root,textvariable = path,width=20)
path_entry.place(x=380,y=25)
path_button = tkinter.Button(root,text = "浏览",command = get_path)
path_button.place(x=380,y=50)
#音频格式选择
type_lable = tkinter.Label(root,text = "选择保存格式")
type_lable.place(x=380,y=80)
path2 = StringVar()
path2.set('mp3')
tkinter.Radiobutton(root,text = "MP3",variable=path2,value='mp3').place(x=380,y=100)
tkinter.Radiobutton(root,text = "WMA",variable=path2,value='wma').place(x=450,y=100)
clear = tkinter.Button(root,text = "清空",command=Thread.go_clear)
close = tkinter.Button(root,text = "退出",command = sys.exit)
close.place(x=500,y=330)
clear.place(x=0,y=330)
download_button.place(x=0,y=225)
input_button.place(x=0,y=25)
#背景图片
from PIL import Image,ImageTk
im=Image.open("背景图片.jpg")
img=ImageTk.PhotoImage(im)
tkinter.Label(root,image=img).place(x=380,y=180)
tkinter.Label(root,text = "https://blog.csdn.net/weixin_40018318?spm=1001.2014.3001.5343",font=("隶书",8)).place(x=70,y=330)
import webbrowser
# 设置label标签
link = tkinter.Label(root, text='点击进入我的csdn主页', font=('Arial', 9))
link.place(x=75, y=350)
#我的主页
def open_url(event):# 此处必须注意,绑定的事件函数中必须要包含event参数webbrowser.open("https://blog.csdn.net/weixin_40018318?spm=1001.2014.3001.5343", new=0)
link.bind("<Button-1>", open_url)
root.mainloop()

免费听好歌曲,音乐下载工具相关推荐

  1. 免费音乐下载工具,了解一下

    享一个免费的 VIP音乐下载工具 简约的界面 只有一个小图标 即可完成下载 有一个小遗憾就是 不能下载无损音乐 歌曲波特率都是 128kbps (小声哔哔:和我那69块钱耳机特别配...) 一些歌曲下 ...

  2. 免费听歌的音乐播放器,又可以听听青春的味道了

    软件介绍 在QQ音乐.网易云音乐.酷狗音乐这些大平台漫天飞的环境下,无vip听歌只能听开头,感觉非常的不爽,所以今天就来推荐一个听歌神器『洛雪播放器』,基本可以听市面上的全部歌曲. 这个听歌软件是一个 ...

  3. 微信最新版,免费听所有VIP音乐!

    以下内容来自公众号逆锋起笔,关注每日干货及时送达 昨天,iOS微信跳过8.0.35版本直接更新到了8.0.36正式版,带来了非常多的新变化,一起来看看吧. 微信和QQ音乐限时联动:免费听所有VIP音乐 ...

  4. Mipony 免费的网络硬盘批量下载工具,下载网盘文件省时省力!

    现在用网盘分享文件的人越来越多了,所以异次元之前推出了一个"找文件网盘搜索引擎"方便大家查找下载资源.如果你常常下载一些网盘的资源,你肯定会发现大多数国外网盘免费下载时都需要等待一 ...

  5. IDM下载器免费高质量的Win下载工具无使用限制

    这是Windows 平台上的一款下载软件,它支持不同类型的浏览器,几乎能下载网页中所有的数据,还不会弹出广告.internetdownloadmanager(IDM下载器)是一款很不错的下载工具,很多 ...

  6. 喜欢听音乐,适合在孤独寂寞的时候听的歌曲打包下载!

    一个人的时候,总喜欢听音乐.也许是害怕孤独,或者是害怕没有声音的空间吧!但是一向以来我都觉得自己是个喜欢音乐的孩子,爱得莫名其妙,爱得让人觉得不可思议.但我内心明白自己其实并不太懂音乐. 无论是坐在教 ...

  7. 在国外怎么听国内歌曲音乐方法

    以下5个服务都要开 IKE and AuthIP IPsec Keying Modules IPsec Policy Agent Remote Access Auto Connection Manag ...

  8. iApp开发的网易云音乐下载工具源码

    正文: 目前已经对接酷狗和网易云的官方接口,所有VIP音乐都可以下载了的,酷狗有个代码在编辑框的文本更新监听事件里的文本内容已改变. 程序: lanzou.com/iyVAK04astvi 图片:

  9. 免费的外文文献搜索下载工具推荐

    目前有一款免费的,适合多学科内部文献资料搜索下载的软件-semantic scholar,能够快速删选内容的同时提供给全文下载. Semantic Scholar 利用机器学习技术,可以从文献文本中挑 ...

最新文章

  1. Oracle 11g R2 常见问题处理
  2. 大牛带你深入SpringBoot:自定义Endpoint 及实现原理
  3. 51单片机复习:矩阵键盘
  4. MySQL导出表结构相关字段以及把字段由下划线转驼峰命名
  5. 分页携带请求参数_一个值得深思的小问题 请求中的参数值为空要不要携带该参数?...
  6. CentOS 7.4 下 如何部署 AspNetCore 结合 consul
  7. Android项目中如何用好构建神器Gradle?
  8. 代码组织和部署 文件操作 node.js 1
  9. css基础内容之background
  10. Html5-audio标签简介及手机端不自动播放问题
  11. 拉普拉斯方程续有限差分法
  12. 计算机为什么不能新建文档,电脑无法新建word文档怎么办
  13. 计算机的游戏功能,游戏同步器功能介绍、作用讲解及使用方法
  14. 天降公网ip | 你也许已经有公网IP了
  15. BigDecimal非负数判断
  16. 石头扫地机器人遇见地毯_作为用户我强烈推荐石头扫地机器人!请看我的使用体验...
  17. casio计算机如何计算标准差,怎样在卡西欧5800里计算标准差和方差,不要普通计算,用里面设计好的模式,...
  18. Top 7 PHP Security Blunders
  19. DevEco Studio使用技巧
  20. python基础 判断题

热门文章

  1. Python连接postgresql数据库入门
  2. Docker系列之MySQL安装教程
  3. 计算机中专综合知识,湖南省汨罗市职业中专高考(八)计算机应用专业综合知识试题讲解.doc...
  4. vue-cli生成的模板各个文件详解(转)
  5. Oracle分区表索引
  6. 在PC上安装Android SDK与Android模拟器 - 使用Android Studio 3.1.1
  7. 查看phpinfo方法
  8. 关于SE54视图簇的创建和维护
  9. 解决SharedPerferences初始化报NullPoint空指针的异常
  10. python计算ks