制作工具下载器 by tkinter

前言

这是一次想 实现进度条功能 而引发的小程序开发,越做发现涉及的东西越多,本文只做简单成效实现过程的描述,优化项目以后再做补充。

目录


概述

  • 先上效果图
    开始任务
    完成
    目录文件

  • 功能介绍
    该下载器只能下载已知工具包(即将例如 QQ、python、nginx 等包文件的链接复制粘贴到那个链接 Entry 里),通过点按打开按钮,选择要存放的目录。
    视频质量下拉菜单和暂停下载功能暂未实现,有待后期补充,如有大神,请指点一二。

源代码

本程序基于 Python 3.6.6 编写,如用 3.x 版本编辑,问题应该不大,请自行解决。
后期生成 exe 程序,需要用到 PyInstaller,我用的版本是 3.3.1。

实现下载器功能

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2018/8/27 15:40
# @Author  : Nimo
# @File    : study.py
# @Software: PyCharm

import os
import urllib
import time
import requests
from tkinter import *
from tkinter.scrolledtext import ScrolledText
from PIL import Image, ImageTk
import threading
from tkinter.filedialog import askdirectory
# 这里引入的两个包是为了后期生成exe程序用,源程序测试时请注释掉这两行以及后面的相关行
import base64
from picture.bak import img as logo

class GetFile():  #下载文件
    def __init__(self, url, dir_path):
        self.url = url
        self.dir_path = dir_path
        self.filename = ""
        self.re = requests.head(self.url, allow_redirects=True)  # 运行head方法时重定向
    # url and path 有效性检查
    def _is_valid(self):
        if self.url is '':
            scrolled_text.insert(INSERT, '请输入包件链接...\n')
            scrolled_text.see(END)
            return None
        else:
            pattern = '^(https|http|ftp)://.+$'
            # pattern = '^(https|http:)//([0-9a-zA-Z]*\.[0-9a-zA-Z]*\.(com|org)/).+$'
            url_pattern = re.compile(pattern, re.S)
            result = re.search(url_pattern, self.url)
            if result is None:
                scrolled_text.insert(INSERT, '错误的链接,请重新输入...\n')
                scrolled_text.see(END)
                return None
            else:
                if self.dir_path is '':
                    scrolled_text.insert(INSERT, '请输入包件保存路径...\n')
                    scrolled_text.see(END)
                    return None
                else:
                    path_pattern = re.compile('(^[A-Z]:/[0-9a-zA-Z_]+(/[0-9a-zA-Z_]+)*$)|(^[A-K]:/[0-9a-zA-Z_]*$)',
                                            
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的Tkinter懒人音乐下载的示例代码,它使用Python的requests库和BeautifulSoup库来从网上搜索和下载音乐。请注意,这只是一个示例,可能不适用于所有网站和音乐类型。 ```python import requests from bs4 import BeautifulSoup import tkinter as tk from tkinter import messagebox, filedialog def search_music(): query = entry.get() if not query: messagebox.showerror("Error", "Please enter a search query.") return url = "https://www.youtube.com/results?search_query=" + query response = requests.get(url) soup = BeautifulSoup(response.text, "html.parser") videos = soup.select(".yt-uix-tile-link") if not videos: messagebox.showerror("Error", "No videos found.") return video = videos[0] video_url = "https://www.youtube.com" + video["href"] response = requests.get(video_url) soup = BeautifulSoup(response.text, "html.parser") audio = soup.select(".audio-thumb") if not audio: messagebox.showerror("Error", "No audio found.") return audio_url = audio[0]["href"] download_music(audio_url) def download_music(url): filepath = filedialog.asksaveasfilename(defaultextension=".mp3") if not filepath: return response = requests.get(url) with open(filepath, "wb") as f: f.write(response.content) root = tk.Tk() root.title("Lazy Music Downloader") label = tk.Label(root, text="Enter a search query:") label.pack() entry = tk.Entry(root, width=50) entry.pack() button = tk.Button(root, text="Search", command=search_music) button.pack() root.mainloop() ``` 在这个示例中,我们首先使用requests库从YouTube搜索音乐,然后使用BeautifulSoup库从搜索结果中提取视频和音频的URL。最后,我们使用filedialog库提供的对话框来选择文件路径并下载音乐。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值