个人 python 学习笔记

本贴最后更新于 1706 天前,其中的信息可能已经时移世易

python 学习笔记

自制 tk 框架下载视频

# !/usr/bin/env python # -*- coding: utf-8 -*- """ @Time : 2020/10/19 15:39 @Author : Ping Wang @Email : ping.wang@hrbmu.edu.cn @Site : @File : @Software : PyCharm """ import os import tkinter as tk import re,urllib,requests from bs4 import BeautifulSoup from tkinter import filedialog,messagebox import pyperclip root = tk.Tk() root.title('网易云音乐MV下载器') root.geometry('700x400') root.configure(bg='whitesmoke') percent = None def callbackfunc(blocknum, blocksize, totalsize): global percent """ 回调函数 @blocknum: 已经下载的数据块 @blocksize: 数据块的大小 @totalsize: 远程文件的大小 """ percent = 100.0 * blocknum * blocksize / totalsize if percent > 100: percent = 100.0 canvas.coords(fill_line, (0, 0, 270 * percent / 100, 60)) label3_1['text'] = '%6.2f' % percent + '% '+'%.1f/%.1f M'%(blocknum * blocksize/1048576,totalsize/1048576) root.update() searchURL = downloadurl = hurl = murl = name = downloadpath = '','','','','','' def submitPaperurl(): global searchURL,downloadurl,hurl,murl,name,downloadpath,HD,MD try: button5.destroy() except: None # 获取网址 searchURL = EditText0.get(1.0, 'end')[:-1] searchURL=searchURL[:22]+searchURL[24:] # 爬取视频名称 ,视频下载网址 s = requests.get(searchURL).text hurl=urllib.parse.unquote(re.search(r'hurl=(.*)&murl',s,re.M)[1]) murl=urllib.parse.unquote(re.search(r'murl=(.*)&auto',s,re.M)[1]) name=re.search(r'&trackName=(.*)&artistName=',s,re.M)[1]+"-"\ +re.search(r'&artistName=(.*)&resourceId=',s,re.M)[1] chooseMD() # 显示视频名字 EditText1.delete(1.0,'end') EditText1.insert(1.0,name) HD.destroy() MD.destroy() if hurl!='': HD = tk.Radiobutton(frame21, text="高清", variable=var, value=1, command=chooseHD) HD.pack() if murl!='': MD = tk.Radiobutton(frame21, text="标清", variable=var, value=2, command=chooseMD) MD.pack() root.update() def chooseHD(): global downloadurl,downloadpath ''' if hurl=='': messagebox.showinfo(title='error', message='无高清下载链接',icon='error') ''' downloadurl = hurl downloadpath = os.getcwd()+'\\'+name+'-HD.mp4' EditText4.delete(1.0,'end') EditText4.insert(1.0,hurl) root.update() def chooseMD(): global downloadurl,downloadpath downloadurl = murl downloadpath = os.getcwd()+'\\'+name+'-MD.mp4' EditText4.delete(1.0,'end') EditText4.insert(1.0,murl) root.update() def copyDownloadurl(): pyperclip.copy(downloadurl) def downloadMV(): global button5 urllib.request.urlretrieve(downloadurl, downloadpath,callbackfunc) button5 = tk.Button(frame, text="播放", overrelief='sunken', bg='whitesmoke', activebackground='aliceblue', activeforeground='blue', font=("微软雅黑", 9, 'bold'), command=openMV) button5.pack(side='right', fill='x',padx=25) def clearall(): EditText0.delete(1.0, 'end') EditText1.delete(1.0, 'end') canvas.coords(fill_line, (0, 0, 0, 60)) label3_1['text'] = '%6.2f' % 0 + '%' def openMV(): os.startfile(downloadpath) # 创建标题 label = tk.Label(root, text="网易云音乐MV下载器", bg='whitesmoke', font=("华文楷体", 25, 'bold')) label.pack() ''' button = tk.Button(frame, text="一键下载", overrelief='sunken', bg='whitesmoke', activebackground='aliceblue', activeforeground='blue', font=("微软雅黑", 12, 'bold'), command=oneclick) button.pack() ''' frame = tk.Frame(root, bd=5, bg='whitesmoke') frame.pack() frame0 = tk.Frame(frame, bd=5, bg='whitesmoke') frame0.pack(anchor='w') label0 = tk.Label(frame0, text='输入视频网址(url):', bd=5, font=("微软雅黑", 10, 'bold'), bg='whitesmoke') label0.pack(side='left', fill='x') EditText0 = tk.Text(frame0, width=40, height=2) EditText0.pack(side='left', fill='x') button0 = tk.Button(frame0, text="提交", overrelief='sunken', bg='whitesmoke', activebackground='aliceblue', activeforeground='blue', font=("微软雅黑", 9, 'bold'), command=submitPaperurl) button0.pack(side='right', fill='x') frame1 = tk.Frame(frame, bd=5, bg='whitesmoke') frame1.pack(anchor='w') label1 = tk.Label(frame1, text='视频名字 :', bd=5, font=("微软雅黑", 10, 'bold'), bg='whitesmoke') label1.pack(side='left', fill='x',anchor='w') EditText1 = tk.Text(frame1, width=40, height=2) EditText1.pack(side='left', fill='x') frame2 = tk.Frame(frame, bd=5, bg='whitesmoke') frame2.pack(anchor='w') label2 = tk.Label(frame2, text='选择下载清晰度 :', bd=5, font=("微软雅黑", 10, 'bold'), bg='whitesmoke') label2.pack(side='left', fill='x') frame21 = tk.Frame(frame2, bd=5, bg='whitesmoke') frame21.pack(side='left', fill='x',padx=100) var = tk.IntVar() var.set(2) HD = tk.Radiobutton(frame21, text=' ', variable=var, value=1, command=[]) HD.pack() MD = tk.Radiobutton(frame21, text=' ', variable=var, value=2, command=[]) MD.pack() button2 = tk.Button(frame2, text="下载", overrelief='sunken', bg='whitesmoke', activebackground='aliceblue', activeforeground='blue', font=("微软雅黑", 9, 'bold'), command=downloadMV) button2.pack(side='right', fill='x',padx=25) frame4 = tk.Frame(frame, bd=5, bg='whitesmoke') frame4.pack(anchor='w') label4 = tk.Label(frame4, text='下载链接 :', bd=5, font=("微软雅黑", 10, 'bold'), bg='whitesmoke') label4.pack(side='left', fill='x') EditText4 = tk.Text(frame4, width=40, height=5) EditText4.pack(side='left', fill='x') button4 = tk.Button(frame4, text="复制到剪切板", overrelief='sunken', bg='whitesmoke', activebackground='aliceblue', activeforeground='blue', font=("微软雅黑", 8, 'bold'), command=copyDownloadurl) button4.pack(side='right', fill='x') # 进度条框架 frame3 = tk.Frame(frame, bd=5, bg='whitesmoke') frame3.pack(anchor='w') label3 = tk.Label(frame3, text='下载进度 :', bd=10, bg='whitesmoke', font=("微软雅黑", 9, 'bold')) label3.pack(side='left', fill='x') canvas = tk.Canvas(frame3, width=270, height=20, bg="white") canvas.pack(side='left', fill='x') fill_line = canvas.create_rectangle(1.5, 1.5, 0, 23, width=0, fill="green") label3_1 = tk.Label(frame3, text='%6.2f' % 0 + '%', bd=5, bg='whitesmoke', font=("微软雅黑", 9, 'bold')) label3_1.pack(side='right', fill='x') root.mainloop()
  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    554 引用 • 675 回帖
  • 笔记

    好记性不如烂笔头。

    311 引用 • 794 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • 知乎

    知乎是网络问答社区,连接各行各业的用户。用户分享着彼此的知识、经验和见解,为中文互联网源源不断地提供多种多样的信息。

    10 引用 • 66 回帖
  • 深度学习

    深度学习(Deep Learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。

    43 引用 • 44 回帖
  • Vditor

    Vditor 是一款浏览器端的 Markdown 编辑器,支持所见即所得、即时渲染(类似 Typora)和分屏预览模式。它使用 TypeScript 实现,支持原生 JavaScript、Vue、React 和 Angular。

    372 引用 • 1858 回帖
  • SQLServer

    SQL Server 是由 [微软] 开发和推广的关系数据库管理系统(DBMS),它最初是由 微软、Sybase 和 Ashton-Tate 三家公司共同开发的,并于 1988 年推出了第一个 OS/2 版本。

    21 引用 • 31 回帖
  • InfluxDB

    InfluxDB 是一个开源的没有外部依赖的时间序列数据库。适用于记录度量,事件及实时分析。

    2 引用 • 101 关注
  • Git

    Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

    211 引用 • 358 回帖
  • 阿里巴巴

    阿里巴巴网络技术有限公司(简称:阿里巴巴集团)是以曾担任英语教师的马云为首的 18 人,于 1999 年在中国杭州创立,他们相信互联网能够创造公平的竞争环境,让小企业通过创新与科技扩展业务,并在参与国内或全球市场竞争时处于更有利的位置。

    43 引用 • 221 回帖 • 56 关注
  • DevOps

    DevOps(Development 和 Operations 的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。

    59 引用 • 25 回帖 • 4 关注
  • 强迫症

    强迫症(OCD)属于焦虑障碍的一种类型,是一组以强迫思维和强迫行为为主要临床表现的神经精神疾病,其特点为有意识的强迫和反强迫并存,一些毫无意义、甚至违背自己意愿的想法或冲动反反复复侵入患者的日常生活。

    15 引用 • 161 回帖
  • 单点登录

    单点登录(Single Sign On)是目前比较流行的企业业务整合的解决方案之一。SSO 的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

    9 引用 • 25 回帖 • 2 关注
  • TensorFlow

    TensorFlow 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。

    20 引用 • 19 回帖 • 3 关注
  • 程序员

    程序员是从事程序开发、程序维护的专业人员。

    591 引用 • 3528 回帖 • 1 关注
  • OneDrive
    2 引用 • 6 关注
  • LeetCode

    LeetCode(力扣)是一个全球极客挚爱的高质量技术成长平台,想要学习和提升专业能力从这里开始,充足技术干货等你来啃,轻松拿下 Dream Offer!

    209 引用 • 72 回帖
  • 周末

    星期六到星期天晚,实行五天工作制后,指每周的最后两天。再过几年可能就是三天了。

    14 引用 • 297 回帖
  • 服务器

    服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。

    125 引用 • 585 回帖
  • JRebel

    JRebel 是一款 Java 虚拟机插件,它使得 Java 程序员能在不进行重部署的情况下,即时看到代码的改变对一个应用程序带来的影响。

    26 引用 • 78 回帖 • 677 关注
  • 链书

    链书(Chainbook)是 B3log 开源社区提供的区块链纸质书交易平台,通过 B3T 实现共享激励与价值链。可将你的闲置书籍上架到链书,我们共同构建这个全新的交易平台,让闲置书籍继续发挥它的价值。

    链书社

    链书目前已经下线,也许以后还有计划重制上线。

    14 引用 • 257 回帖 • 1 关注
  • 区块链

    区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法 。

    92 引用 • 752 回帖 • 3 关注
  • Bug

    Bug 本意是指臭虫、缺陷、损坏、犯贫、窃听器、小虫等。现在人们把在程序中一些缺陷或问题统称为 bug(漏洞)。

    76 引用 • 1742 回帖 • 2 关注
  • RemNote
    2 引用 • 16 回帖 • 25 关注
  • 创业

    你比 99% 的人都优秀么?

    82 引用 • 1395 回帖
  • SendCloud

    SendCloud 由搜狐武汉研发中心孵化的项目,是致力于为开发者提供高质量的触发邮件服务的云端邮件发送平台,为开发者提供便利的 API 接口来调用服务,让邮件准确迅速到达用户收件箱并获得强大的追踪数据。

    2 引用 • 8 回帖 • 507 关注
  • 反馈

    Communication channel for makers and users.

    120 引用 • 906 回帖 • 277 关注
  • 大疆创新

    深圳市大疆创新科技有限公司(DJI-Innovations,简称 DJI),成立于 2006 年,是全球领先的无人飞行器控制系统及无人机解决方案的研发和生产商,客户遍布全球 100 多个国家。通过持续的创新,大疆致力于为无人机工业、行业用户以及专业航拍应用提供性能最强、体验最佳的革命性智能飞控产品和解决方案。

    2 引用 • 14 回帖
  • HTML

    HTML5 是 HTML 下一个的主要修订版本,现在仍处于发展阶段。广义论及 HTML5 时,实际指的是包括 HTML、CSS 和 JavaScript 在内的一套技术组合。

    108 引用 • 295 回帖 • 1 关注
  • 阿里云

    阿里云是阿里巴巴集团旗下公司,是全球领先的云计算及人工智能科技公司。提供云服务器、云数据库、云安全等云计算服务,以及大数据、人工智能服务、精准定制基于场景的行业解决方案。

    85 引用 • 324 回帖 • 1 关注