前两天写了一个下载知乎视频的小程序,现在给他加了个图形界面,并生成exe文件。同时对原来的程序进行了优化,使用多线程进行任务分配和下载ts文件,解决了GUI卡顿的问题并大大加快了下载速度。
界面如下:
1.自动检测文章链接是否规范以及链接对应的文章是否含有视频
2.自动检测视频保存路径的规范性,路径可以自己填入或点击“打开”按钮选择
3.可以选择视频质量,有HD、SD、LD三种
4.最下面的滚动文本框可以显示相关提示信息
import os
import json
import requests
from requests import RequestException
from tkinter import *
from tkinter.scrolledtext import ScrolledText
from PIL import Image, ImageTk
import threading
from tkinter.filedialog import askdirectory
def is_valid(url, path):
if url is '':
print('请输入文章链接...')
scrolled_text.insert(INSERT, '请输入文章链接...\n')
scrolled_text.see(END)
return None
else:
url_pattern = re.compile('^(https://www.zhihu.com/question/\d{8,9}/answer/\d{9})$', re.S)
result = re.search(url_pattern, url)
if result is None:
print('错误的文章链接,请重新输入...')
scrolled_text.insert(INSERT, '错误的文章链接,请重新输入...\n')
scrolled_text.see(END)
return None
else:
if path is '':
print('请输入视频保存路径...')
scrolled_text.insert(INSERT, '请输入视频保存路径...\n')
scrolled_text.see(END)
return None
else:
path_pattern = re.compile('(^[a-zA-Z]:/[0-9a-zA-Z_]+(/[0-9a-zA-Z_]+)*$)|(^[a-zA-Z]:/[0-9a-zA-Z_]*$)', re.S)
result = re.search(path_pattern, path)
if result is None:
print('错误的文件路径,请重新输入...')
scrolled_text.insert(INSERT, '错误的文件路径,请重新输入...\n')
scrolled_text.see(END)
return None
else:
return True
def get_page(url):
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36'
response = requests.get(url, headers=headers, timeout=30)
if response.status_code == 200:
return response.text
print('链接访问失败,请重试...')
scrolled_text.insert(INSERT, '链接访问失败,请重试...\n')
scrolled_text.see(END)
return None
except RequestExcep
我想用
python
构建一个
视频
播放
器
,但是我的应用程序将有更多的按钮,而不仅仅是play/pause,所以我需要在窗口中插入
视频
。在到现在为止我有这个代码:import
tkinter
import osimport gigi.require_version('Gst', '1.0')from gi.repository import GObject, Gstdef set_frame_handle...
前文我们已经完成了一个集暂停、倍速、显示进度条功能为一体的
视频
播放
器
,今天我们再来增加一个新的功能——发送弹幕。
tkinter
播放
视频
的原理,就是读取每一帧的图片,然后刷新画布。所以如果想实现弹幕功能,只要获取输入文本框中的文本,再写到图片上就好了。cv2.putText能够实现这个功能,但无法添加中文,所以我们需要换一种方法。首先,我们需要from PIL import ImageDraw,Im...
1.选择
视频
文件
from
tkinter
.filedialog import askdirectory,askopenfilename
from
tkinter
import *
def selectPath():
path_ = askopenfilename()
path.set(path_)
root = Tk()
path = StringVar()
Label(root,text = "目标路径:").grid(row = 0, column = 0)
Entry(root,
import
tkinter
as tk
from
tkinter
.filedialog import askopenfilename, askdirectory
from
tkinter
.messagebox import askquestion
# from demo_neo import Extractor
from PIL import Image
from PIL import Imag...
# 导入一些包
# opencv2 是 三方库 需要 pip install
python
-opencv
video_path = './welcome.wmv' #
视频
的路径
win ...
# 将类作为参数传入
# app = App(
tkinter
.Tk(), "
tkinter
player", 'test.mp4')
def __init__(self, window, window_t