Python 使用tkinter开发exe程序,开发酷我音乐免费下载软件


程序功能:开发使用selenium打开浏览器,播放酷我音乐,获取歌曲url,下载歌曲

安装模块:
pip install tkinter
pip install selenium
pip install pyinstaller
pip install pypiwin32

源代码:

from tkinter import *
from selenium import  webdriver
import time,re,requests,os,zipfile
LOG_LINE_NUM = 0
class MY_GUI_SET():
    """小工具"""

    def __init__(self, init_window_name):
        self.init_window_name = init_window_name

    def set_init_window(self):
        self.init_window_name.title("酷我音乐免下载收费的下载软件  注意:收费听取的下载不了!    箭头转圈,请勿点击以免卡顿(管理员身份运行)")
        self.init_window_name.geometry("730x320+10+10")
        self.init_window_name.attributes("-alpha", 1)  # 虚化 值越小虚化程度越高
        # 标签
        self.init_data_label = Label(self.init_window_name, text="输入播放页url  例如:http://www.kuwo.cn/play_detail/111")
        self.init_data_label.grid(row=0, column=0)
        self.name_data_label = Label(self.init_window_name, text="输入歌曲名字")
        self.name_data_label.grid(row=0, column=12)
        self.result_data_label = Label(self.init_window_name, text="文件路径")
        self.result_data_label.grid(row=12, column=12)
        self.log_label = Label(self.init_window_name, text="下载信息")
        self.log_label.grid(row=12, column=0)
        self.log_label = Label(self.init_window_name, text="@ 2020版权所有       https://blog.51cto.com/982439641")
        self.log_label.grid(row=24, column=0)
    # 文本框
        self.init_data_Text = Text(self.init_window_name, width=45, height=9)  # 原始数据录入框
        self.init_data_Text.grid(row=1, column=0, rowspan=10, columnspan=10)
        self.log_data_Text = Text(self.init_window_name, width=45, height=9)  # 日志框
        self.log_data_Text.grid(row=13, column=0, columnspan=10)
        self.name_data_Text = Text(self.init_window_name, width=45, height=9)  # 处name果展示
        self.name_data_Text.grid(row=1, column=12, rowspan=10, columnspan=10)
        self.result_data_Text = Text(self.init_window_name, width=45, height=9)  # 处理结果展示
        self.result_data_Text.grid(row=13, column=12, columnspan=10)
        # 按钮
        self.str_trans_to_md5_button = Button(self.init_window_name, text="开始下载", bg="lightblue", width=10,
                                              command=self.Get_music_url)  # 调用内部方法  加()为直接调用
        self.str_trans_to_md5_button.grid(row=1, column=11)
    def Get_music_url(self):
        try:
            a=self.init_data_Text.get(1.0, END).strip().replace("\n", "").encode()
            b = self.name_data_Text.get(1.0, END).strip().replace("\n", "").encode()
            Web_url=str(a,encoding="utf-8")
            name=str(b,encoding="utf-8")
            c=os.getenv("SystemDrive")                 #获取主盘符
            path = c+ "\chromedriver.exe"
            self.write_log_to_Text("第一次安装环境会慢一点....")
            self.write_log_to_Text("检测浏览器驱动....")
            if not os.path.exists(path):                    #判断有没有Gg启动程序,安装Gg启动程序
                exe = requests.get("https://raw.githubusercontent.com/xiaoxuenice/xiaoxue/master/chromedriver.exe")
                with open(‘{}‘.format(path), ‘wb‘) as f:
                    f.write(exe.content)
                    self.write_log_to_Text("安装浏览器驱动....")
            g_path = c+"\Program Files (x86)\Google"
            if not os.path.exists(g_path):                       #判断有没有Gg浏览器,安装Gg浏览器
                g_exe=requests.get("https://raw.githubusercontent.com/xiaoxuenice/xiaoxue/master/Google.zip")
                with open(‘{}.zip‘.format(g_path),‘wb‘) as f:
                    f.write(g_exe.content)
                    a = zipfile.ZipFile("{}\Program Files (x86)\Google.zip".format(c))
                    a.extractall("{}\Program Files (x86)\\".format(c))
                    self.write_log_to_Text("安装浏览器....")

            header = {‘User-Agent‘: "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"}
            a = webdriver.Chrome(executable_path=path, desired_capabilities=header)
            self.write_log_to_Text("正在打开浏览器.....")
            a.minimize_window()
            a.get(Web_url)
            try:
                a.find_element_by_class_name("play").click()
                time.sleep(5)
                self.write_log_to_Text("正在获取歌曲url....")
                url = re.findall(‘src=\"(https\:\/\/.*?mp3)\"‘, a.page_source)[0]
                try:
                    url[0]
                except Exception as f :
                    self.write_log_to_Text("歌曲URL获取失败!!!\n")
                    exit()
                a.close()
                dir = c + "\歌曲"
                if not os.path.exists(dir):
                    os.makedirs(dir)
                mi = requests.get(url)
                with open(‘{}/{}.mp3‘.format(dir,name), ‘wb‘) as f:
                    f.write(mi.content)
                    self.result_data_Text.delete(1.0, END)
                    self.result_data_Text.insert(1.0, ‘{}\{}.mp3‘.format(dir,name))
                    self.write_log_to_Text("歌曲{}下载成功!!!\n".format(name))
            except Exception as error:
                print(error)
                self.write_log_to_Text( "下载错误,付费歌曲!!!\n")
        except Exception as f:
            self.write_log_to_Text(f)
    # 获取当前时间
    def get_current_time(self):
        current_time = time.strftime(‘%H:%M:%S‘, time.localtime(time.time()))
        return current_time

    # 日志动态打印
    def write_log_to_Text(self, logmsg):
        global LOG_LINE_NUM
        current_time = self.get_current_time()
        logmsg_in = str(current_time) + " " + str(logmsg) + "\n"  # 换行
        if LOG_LINE_NUM <= 5:
            self.log_data_Text.insert(END, logmsg_in)
            LOG_LINE_NUM = LOG_LINE_NUM + 1
        else:
            self.log_data_Text.delete(1.0, 2.0)
            self.log_data_Text.insert(END, logmsg_in)

if __name__=="__main__":
    init_window = Tk()
    MY_GUI_SET(init_window).set_init_window()
    init_window.mainloop()


程序打包:(-i 可选参数,为ico图标)
打包好的程序:

程序使用:
再次注意:软件输入歌曲url,必须为免费播放音乐

这个是编译好的程序
https://raw.githubusercontent.com/xiaoxuenice/xiaoxue/master/酷我歌曲下载.exe
管理员身份运行
仅供学习使用!!!让初学者更好理解如何开发程序

原文地址:https://blog.51cto.com/982439641/2487151

时间: 2024-10-28 12:13:32

Python 使用tkinter开发exe程序,开发酷我音乐免费下载软件的相关文章

《Flask Web开发:基于Python的Web应用开发实战》pdf 完整版免费下载

<Flask Web开发:基于Python的Web应用开发实战>.pdf pdf 完整版免费下载: https://u253469.ctfile.com/fs/253469-292665036 更多电子书下载: http://hadoopall.com/book 内容简介 本书不仅适合初级Web开发人员学习阅读,更是Python程序员用来学习高级Web开发技术的优秀参考书. ? 学习Flask应用的基本结构,编写示例应用: ? 使用必备的组件,包括模板.数据库.Web表单和电子邮件支持: ?

微信小程序开发—小程序开发入门

本篇将为大家详细介绍如何安装小程序开发工具,并进行一个完整小程序的开发. 下载安装微信web开发者工具 下载地址: windows64:https://servicewechat.com/wxa-dev-logic/download_redirect?type=x64 windows32:https://servicewechat.com/wxa-dev-logic/download_redirect?type=ia32 mac:https://servicewechat.com/wxa-dev

去掉vs开发c++程序开发时产生的.ipch和.sdf文件方法

在使用Visual Studio 2010开发C++程序的时候,会发现有一些奇怪的文件被创建出来,比如一个叫ipch的文件夹,和一个与工程同名的.sdf文件,而且ipch下面的文件和.sdf文件都很大,至少有10M,大项目可能超过100M,那这些文件是干什么用的呢? 这些文件是Visual Studio用来保存预编译的头文件 和Intellisense 用的,删除这些文件对于工程的开发完全没有影响.那如果我既想使用预编译的头文件和Intellisense,又不想看到这些无聊的文件该怎么办呢? 在

如何把Python脚本导出为exe程序

转载自: http://www.jianshu.com/p/8dbdfbd3716d 一.pyinstaller简介 pyinstaller将Python脚本打包成可执行程序,使在没有Python环境的机器上运行最新版是pyinstaller 3.1.1.支持python2.7和python3.3+.可运行在Windows,Mac和Linux操作系统下.但它不是跨编译的,也就是说在Windows下用PyInstaller生成的exe只能运行在Windows下,在Linux下生成的只能运行在Lin

(转)Python_如何把Python脚本导出为exe程序

原文地址:https://www.cnblogs.com/robinunix/p/8426832.html 一.pyinstaller简介 Python是一个脚本语言,被解释器解释执行.它的发布方式: .py文件:对于开源项目或者源码没那么重要的,直接提供源码,需要使用者自行安装Python并且安装依赖的各种库.(Python官方的各种安装包就是这样做的) .pyc文件:有些公司或个人因为机密或者各种原因,不愿意源码被运行者看到,可以使用pyc文件发布,pyc文件是Python解释器可以识别的二

Python爬取王者荣耀官网,实现一对一下载软件!

效果: 我没有弄文件夹保存,因为皮肤与英雄都是一一对应,这样子更加方便操作. 点击下载皮肤后,会自动从官网下载一个json文件,所以出了新英雄.新皮肤软件会自动更新.高清图: 但是有个别新皮肤官网也没有提供数据,找不到新皮肤下载的选择项时,点击影藏皮肤获取按钮输入英雄名字,再点击隐藏皮肤下载即可. 环境: 系统:Windows 模块:requests. json.os.time.tkinter 编辑器:sublime(获取视频教程) tkinter部分代码 界面还算比较简单的,就那么几个组件.

浅谈程序开发心理学

个人从小对于心理学就十分感兴趣.之前读过社会心理学,后来无意中才知道关于程序开发的也有一本心理学的书.能够有幸读到这样一本书,不得不说是一种享受.这本书关于程序开发的新的诠释,使我对程序开发有了更深刻的认识.以前对于程序开发大多还停留在机器的程度上,看了这本书后,才明白程序开发,首先,是作为一种人类行为存在的. 程序开发首先要考虑的是人,符合人的心理行为,接下来再去开发.程序开发还是一种写作形式,与其他写作形式一样,要学习,就需要去阅读他人的程序.程序本身有其局限性,计算机的局限性,语言的局限性

程序开发心理学阅读笔记——结束篇

作为个人行为的程序开发及程序开发工具 程序开发的差异->人格因素->智力水平以及问题求解能力->积极性.培训以及实验1.我们所关注的个体偏差,可以进一步地按照一般性的方式被划分为“个性”.“智力”.以及“培训”或者“经验”.2.如果需要衡量程序员的绩效.语言的性能.操作系统的性能,或者其他方面,我们首先需要确定的是:所有人正在为之努力的,是同一个问题.3.要把定义说明转换成最中的程序,需要经过各种不同的工作:而为了完成这些不同的工作,就必须要有各种类型的人才.4.程序开发并不是一个一成不

程序开发心理学阅读笔记——第II篇

作为社会行为的软件开发程序开发组->程序开发团队->程序开发项目1.要判断程序员的某个集体是否构成一支团队,要看其中的成员以何种方式相互协作,以共同开发软件产品.2.健康的团队要始终能够保持自我的生命活力.正是由于这种特点,即使有成员中途离队,也可以建立并维护一支具有共同价值观与习惯的新团队. 程序开发组3.非正规的机制到处存在,而且如果你还没有真正搞清楚其规律,就企图改变什么,那将会是十分危险的——你可能会把有些操作系统搞得一团糟:同时,任何替代方案都需要付出更高昂的代价.4.正如自动电梯破