美文网首页程序员人工智能通识程序园
【编程】自定义下载简书文章和图片

【编程】自定义下载简书文章和图片

作者: zhyuzh3d | 来源:发表于2019-05-31 16:36 被阅读9次

    欢迎关注我的专栏( つ•̀ω•́)つ【人工智能通识】
    【专题】简书下载器:Python-Tkinter项目编程入门


    继续本专题前面的文章。

    梳理Tkinter界面

    梳理后运行结果如下:


    对应的main.py代码如下:

    from tkinter import *
    from tkinter import ttk
    import time
    import random
    import modules.reqs as reqs  # 导入reqs请求函数
    import modules.options as opts
    from tkinter.scrolledtext import ScrolledText
    
    # 创建窗体
    root = Tk()
    root.title('简书文章下载器')
    root.resizable(width=False, height=False)
    root.config(background='#EEE')
    
    
    def run():  # 启动获取动作
        reqs.getAll(opts, [0], [4])
    
    
    def refreshInfo():  # 信息的自刷新函数
        text = reqs.genInfoStr()
        text += '\nState:'+reqs.state
        text += '\nCurVol:'+reqs.curVol
        text += '\nCurArt:'+reqs.curArt
        text += '\nCurImg:'+reqs.curImg
        info.config(text=text)
        info.after(500, refreshInfo)
    
    
    # 创建界面
    rown = 0  # 占位符
    ttk.Frame(root, height=10).grid() 
    
    rown += 1  # header输入框
    iptHeader = ScrolledText(root, height=1, width=50)
    iptHeader.grid(row=rown, padx=10, pady=0, sticky=W)
    
    rown += 1  # header输入框说明
    label1 = ttk.Label(root, text='粘贴header,不要包含:打头的部分,去除if-none-match行')
    label1.grid(row=rown, pady=0, padx=10, sticky=W)
    
    rown += 1  # 占位符
    ttk.Frame(root, height=20).grid(row=rown) 
    
    rown += 1 # 文集序号输入框
    iptVol = Text(root,height=1, width=50)
    iptVol.grid(row=rown, padx=10, pady=0, sticky=W)
    
    rown += 1  # vol输入框说明
    label2 = ttk.Label(root, text='文集列表,请用逗号分隔,如0,1,2')
    label2.grid(row=rown, pady=0, padx=10, sticky=W)
    
    rown += 1  # 占位符
    ttk.Frame(root, height=20).grid(row=rown) 
    
    rown += 1 # 文集序号输入框
    iptArt = Text(root,height=1, width=50)
    iptArt.grid(row=rown, padx=10, pady=0, sticky=W)
    
    rown += 1  # vol输入框说明
    label3 = ttk.Label(root, text='文章列表,请用逗号分隔,如0,1,2')
    label3.grid(row=rown, pady=0, padx=10, sticky=W)
    
    rown += 1  # 占位符
    ttk.Frame(root, height=30).grid(row=rown) 
    
    # 运行按钮
    rown += 1
    bt = ttk.Button(root, text='开始下载', width=30,command=run)
    bt.grid(row=rown, padx=10,ipady=10 ,pady=0, sticky='WE')
    
    # 信息标签
    rown += 1
    info = ttk.Label(root, text='?/?')
    info.grid(row=rown,  padx=10, ipady=10, ipadx=10, sticky=W)
    info.after(500, refreshInfo)  # 自动循环更新
    
    root.mainloop()
    

    获取用户输入

    在Tkinter中可以使用xxx.get('1.0',END)来获取输入内容,这里的1.0表示从头获取,END表示获取全部。

    我们修改run函数:

    def run():  # 启动获取动作
    
        hdrs=iptHeader.get("1.0",END)
        vols=iptVol.get("1.0",END)
        arts=iptArt.get("1.0",END)
    
        opts.headers=opts.str2obj(hdrs, '\n', ': ')
    
        volnarr=[]
        volsarr = vols.split(',')
        volnarr = map(lambda x: int(x), volsarr)
        volnarr=list(set(volnarr))
    
        artnarr=[]
        artsarr = arts.split(',')
        artnarr = map(lambda x: int(x), artsarr)
        artnarr=list(set(artnarr))
    
        reqs.getAll(opts, volnarr, artnarr)
    

    然后运行main.py,从浏览器复制粘贴你的headers,然后设定文集列表和文章列表,点击按钮就能开始下载文章了。

    自动保存和读取headers

    每次都手工复制headers比较麻烦,我们为软件增加自动保存和读取headers的功能。

    每次打开的时候自动尝试读取config.txt文件,填充到iptHeaders,然后每次运行都自动将输入框的文字保存到config.txt文件。

    在最底部添加代码:

    def writeHeaders():  # 将header写入到临时文件
        hdrs = iptHeader.get("1.0", END)
        with open(os.getcwd()+'/config.txt', 'a') as f:
            f.write(hdrs)
    
    def  readHeaders(): #读取设置文件并填充到界面
        fpath=os.getcwd()+'/config.txt'
        if os.path.exists(fpath):
            f=open(fpath,'r')
            hdrs=f.read()
            iptHeader.insert(INSERT,hdrs)
    
    readHeaders()
    
    root.mainloop()
    

    注意root.mainloop()要放在最后。

    最后汇总

    如果要打包成独立运行的软件(不安装python也可以运行),那么请参考这个文章:

    【编程】用Py2app打包Python-Tkinter项目

    整个项目代码已经同步到我的github中,你也可以从dist文件夹下找到mac版本的打包软件直接下载使用。地址是:

    zhyuzh的简书下载器JianshuDownloader

    整个项目暂时告一段落,全部文章已整理在:

    【专题】Python-Tkinter项目编程入门


    欢迎关注我的专栏( つ•̀ω•́)つ【人工智能通识】


    每个人的智能新时代

    如果您发现文章错误,请不吝留言指正;
    如果您觉得有用,请点喜欢;
    如果您觉得很有用,欢迎转载~


    END

    相关文章

      网友评论

        本文标题:【编程】自定义下载简书文章和图片

        本文链接:https://www.haomeiwen.com/subject/qwfgtctx.html