python实战笔记之(9):TKinter制作知乎视频下载器

前两天写了一个下载知乎视频的小程序,现在给他加了个图形界面,并生成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):
	try:
		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
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值