You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python按日期自动下载Viber每日发送的照片?

用Python按日期下载Viber发送的照片

方法一:读取Viber本地数据库(推荐,稳定高效)

Viber PC版会把所有聊天记录(包括图片的本地存储路径)存在SQLite数据库里,直接读取这个数据库是最靠谱的方式,不需要API权限。

步骤:

  1. 找到Viber的本地数据库文件

    • Windows:C:\Users\<你的用户名>\AppData\Roaming\ViberPC\<你的手机号>\viber.db
    • macOS:~/Library/Application Support/ViberPC/<你的手机号>/viber.db
      (替换掉<你的用户名>和<你的手机号>为实际内容)
  2. Python脚本示例
    这个脚本会查询指定日期的图片消息,然后把图片复制到你指定的文件夹:

    import sqlite3
    import shutil
    import os
    from datetime import datetime
    
    # 配置参数
    DB_PATH = r"C:\Users\YourName\AppData\Roaming\ViberPC\1234567890\viber.db"  # 替换成你的数据库路径
    TARGET_FOLDER = "./viber_photos_20240520"  # 保存图片的目标文件夹
    TARGET_DATE = "2024-05-20"  # 要下载的日期,格式YYYY-MM-DD
    
    # 创建目标文件夹
    if not os.path.exists(TARGET_FOLDER):
        os.makedirs(TARGET_FOLDER)
    
    # 连接数据库(运行前请关闭Viber,否则数据库会被锁定)
    conn = sqlite3.connect(DB_PATH)
    cursor = conn.cursor()
    
    # 查询指定日期的图片消息:type=3表示图片消息,timestamp是毫秒级时间戳
    query = """
    SELECT body FROM messages 
    WHERE type = 3 
    AND datetime(timestamp/1000, 'unixepoch', 'localtime') LIKE ?
    """
    cursor.execute(query, (f"{TARGET_DATE}%",))
    results = cursor.fetchall()
    
    # 复制图片到目标文件夹
    for idx, result in enumerate(results):
        img_path = result[0]
        if os.path.exists(img_path):
            # 生成新文件名避免重复
            new_filename = f"photo_{idx+1}_{os.path.basename(img_path)}"
            shutil.copy2(img_path, os.path.join(TARGET_FOLDER, new_filename))
            print(f"已复制:{img_path} -> {new_filename}")
        else:
            print(f"文件不存在:{img_path}")
    
    # 关闭数据库连接
    conn.close()
    print("下载完成!")
    

注意:

  • 运行脚本前必须关闭Viber,否则数据库会被程序锁定无法读取。
  • messages表的body字段直接存储了图片在本地的完整路径,直接复制即可。

方法二:用PyAutoGUI模拟手动下载(适合不想碰数据库的情况)

如果不想操作数据库,可以用自动化工具模拟手动点击下载,缺点是依赖屏幕坐标,稳定性不如读取数据库。

步骤:

  1. 安装依赖:

    pip install pyautogui
    
  2. 简单脚本示例(需根据你的Viber界面调整坐标):

    import pyautogui
    import time
    
    # 配置参数
    TARGET_DATE = "2024-05-20"
    
    # 打开Viber(替换为你的Viber任务栏图标坐标,可通过pyautogui.position()获取)
    pyautogui.click(x=100, y=1000)
    time.sleep(2)
    
    # 点击搜索框并输入日期
    pyautogui.click(x=500, y=50)
    pyautogui.typewrite(f"{TARGET_DATE}")
    time.sleep(1)
    
    # 模拟右键保存图片(需根据你的界面调整图片和菜单坐标)
    for i in range(10):  # 假设下载10张图片
        pyautogui.rightClick(x=600, y=200 + i*150)
        time.sleep(0.5)
        pyautogui.click(x=650, y=250 + i*150)  # "保存图片"选项的坐标
        time.sleep(1)
    
    print("模拟下载完成!")
    

注意:

  • 用pyautogui.position()可以获取当前鼠标位置的坐标,用来调整脚本里的x、y值。
  • 运行时不要操作鼠标键盘,否则会干扰自动化流程。

内容的提问来源于stack exchange,提问作者Skye

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 15:01:19