吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1951|回复: 7
收起左侧

[讨论] 用写tk了个ui歌曲下载 业余爱好还是tk简单 qt真难学

[复制链接]
lihu5841314 发表于 2021-8-26 22:29
[Asm] 纯文本查看 复制代码
from   tkinter import  ttk
import  tkinter  as tk
import  time,re
import parsel
import  requests
import urllib.parse
from tkinter.filedialog import askdirectory
import threading


headers = {
    'Referer': 'https://www.9ku.com/',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36'
}


def start_music():
    for i  in  range(5):
        name=ui.path1.get()
        ui.t.insert('insert',"正在搜索歌曲:"+name)
        ui.t.insert('insert', "\n")
        name1 = urllib.parse.quote(name)
        url = f"https://baidu.9ku.com/song/?key={name1}"
        try:
            rep1 = requests.get(url=url, headers=headers).text
            music_nums = re.findall(r'<li><input\s+style="display:none"\sclass="check"\stype="checkbox"\svalue="(.*?)@',rep1)
            selector = parsel.Selector(rep1)
            songNames = selector.xpath('//ul[@class="clearfix"]/li/a[@class="songName"]/text()').extract()
            singerNames = selector.xpath('//ul[@class="clearfix"]/li/a[@class="singerName"]/text()').extract()
            for music_num, songname, singerName in zip(music_nums, songNames, singerNames):
                dowm_url = f'https://www.9ku.com/down/{music_num}.htm'
                resp = requests.get(url=dowm_url, headers=headers)
                music_url = re.findall('a\shref="(.*?)" style="display', resp.text)[0]
                print(music_url, songname, singerName)
                ui.t.insert('insert', music_url ,songname ,singerName)
                ui.t.insert('insert', "\n")
                music_down(music_url,songname,name)
            print('所有歌曲下载完毕')
            ui.t.insert('insert', '所有歌曲下载完毕')
            break
        except:
            print('没有找到,请输入正确的歌曲名称')
            ui.t.insert('insert', '没有找到,请输入正确的歌曲名称')
            ui.t.insert('insert', "\n")
            continue


def music_down(music_url,songname,name):
    pat=ui.vv.get()
    print(pat)
    path = pat +"\\" + name + songname+ ".mp3"
    resp = requests.get(url=music_url, headers=headers).content
    with open(path, "wb")  as  f:
        f.write(resp)
        ui.t.insert('insert',f"歌曲{name} 歌手{songname}下载完成")
        ui.t.insert('insert', "\n")
def main():
    ui.t.delete('1.0','end')
    start = time.time()
    thread=threading.Thread(target=start_music)
    thread.start()
    tim =  time.time() - start
    tim = round(tim,2)
    print("一共耗时",tim)
    ui.t.insert('insert',f"一共耗时{tim}秒")
    ui.t.insert('insert', "\n")


class music_ui():
    def __init__(self,root):
        self.root =root
        self.vv=tk.StringVar()
        self.path1 = tk.StringVar()

    def ui_cuaw(self):
        # 标题
        self.root.title("音乐下载")
        # 画布大小
        self.root.geometry("600x480")
        #标签
        tk.Label(self.root,text="九酷歌曲下载",font="楷体").place(x=250,y=10)
        # 备注
        tk.Label(self.root, text="可以搜索歌曲名或者歌手名支持模糊搜索").place(x=40, y=30)
        #搜索按钮
        ttk.Button(self.root,text="搜索",command=start_music).place(x=40,y=50)
        #输入框
        ttk.Entry(self.root,width=60,textvariable=self.path1).place(x=140,y=52)
        #选择存放地址
        ttk.Button(self.root, text="选择存放地址",command=self.storage).place(x=40, y=80)
        ttk.Entry(self.root, width=60,textvariable=self.vv).place(x=140, y=82)
        #状态文本框
        tk.Label(self.root, text="下载状态").place(x=240, y=110)
        ttk.Button(self.root, text="歌曲下载", command=main).place(x=40, y=110)
        self.t=tk.Text(self.root, width=75,height=24)
        self.t.place(x=40, y=140)

    def storage(self):
        path = askdirectory()
        music_down_path=path.replace("/","\\\\")
        print(music_down_path)
        self.vv1= self.vv.set(music_down_path)


if __name__ == '__main__':
    #画布
    root= tk.Tk()
    #ui类
    ui = music_ui(root)
    ui.ui_cuaw()
    #循环
    root.mainloop()


打包了的
链接: https://pan.baidu.com/s/13G5c1KtkDUew7e0lrusRBQ 提取码: haj6 复制这段内容后打开百度网盘手机App,操作更方便哦
九酷.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

236A 发表于 2021-8-26 22:49
把一些控件的属性记好就是了   在信号里面调windowsAPI我经常把qt当成MFC来写  而且在vs里面还支持MFC的一些类 超好用
414246704 发表于 2021-8-26 22:59
cq2002 发表于 2021-8-26 23:14
Keing 发表于 2021-8-27 09:15
Qt还好吧,能写出挺好看的界面
 楼主| lihu5841314 发表于 2021-8-27 10:06
Keing 发表于 2021-8-27 09:15
Qt还好吧,能写出挺好看的界面

好看是好看  就是要记得东西多了些
loven99 发表于 2021-11-2 10:47
失效了,楼主老大
Prozacs 发表于 2021-11-2 17:30
QT美化可比tk好太多了。当然自己用tk就够了。丑点无所谓。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 23:00

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表