职场高效学习助手(碎片时间学习系统)
一、核心代码(模块化设计)
1. 配置文件(
"config.py")
集中管理系统参数与伪装界面内容。
# 配置模块:系统常量与伪装界面模板
import os
class Config:
# 学习片段时长范围(分钟)
MIN_DURATION = 5
MAX_DURATION = 10
# 数据存储路径
DATA_DIR = "learning_data"
PROGRESS_FILE = os.path.join(DATA_DIR, "progress.json")
# 伪装界面内容(工作报表/邮件列表模板)
DISGUISE_REPORT = [
"【周工作报表】\n- 项目A:完成需求评审(100%)\n- 项目B:开发中(60%)\n- 待办:会议纪要整理",
"【邮件列表】\n1. 领导:Q4目标确认(未读)\n2. 同事:会议邀请(已读)\n3. 系统:考勤提醒(已读)"
]
EXIT_CMD = "退出"
WELCOME_MSG = "欢迎使用职场高效学习助手(碎片时间学习系统)"
2. 资料导入模块(
"import_handler.py")
支持文字(TXT)和音频(MP3)导入,用
"pydub"处理音频。
# 资料导入:处理文字/音频文件读取
import os
from pydub import AudioSegment
from config import Config
def import_text(file_path):
"""导入TXT文字资料"""
if not os.path.exists(file_path) or not file_path.endswith(".txt"):
raise ValueError("文字文件不存在或格式错误(仅支持TXT)")
with open(file_path, "r", encoding="utf-8") as f:
return f.read().split("\n\n") # 按段落拆分(空行分隔)
def import_audio(file_path):
"""导入MP3音频资料,返回AudioSegment对象"""
if not os.path.exists(file_path) or not file_path.endswith(".mp3"):
raise ValueError("音频文件不存在或格式错误(仅支持MP3)")
return AudioSegment.from_mp3(file_path)
3. 内容拆分模块(
"content_splitter.py")
文字按段落拆分,音频按时长(5-10分钟)拆分。
# 内容拆分:将资料拆分为5-10分钟片段
from config import Config
from pydub.utils import make_chunks
def split_text(paragraphs, min_words=500, max_words=800):
"""文字按字数拆分(每段500-800字,约5-10分钟阅读量)"""
segments = []
current_segment = []
word_count = 0
for para in paragraphs:
para_words = len(para.split())
if word_count + para_words > max_words and current_segment:
segments.append("\n\n".join(current_segment))
current_segment = [para]
word_count = para_words
else:
current_segment.append(para)
word_count += para_words
if current_segment:
segments.append("\n\n".join(current_segment))
return segments
def split_audio(audio, min_sec=Config.MIN_DURATION*60, max_sec=Config.MAX_DURATION*60):
"""音频按时长拆分(5-10分钟/段)"""
chunk_length_ms = (min_sec + max_sec) // 2 * 1000 # 取中间值(7.5分钟)
return make_chunks(audio, chunk_length_ms) # 返回AudioSegment列表
4. 界面伪装模块(
"ui_disguiser.py")
模拟工作报表/邮件列表界面,支持一键切换学习/工作视图。
# 界面伪装:显示工作报表/邮件列表,隐藏学习内容
import random
from config import Config
def show_disguise():
"""显示伪装的工作界面(随机报表或邮件列表)"""
print("\n" + "="*40)
print(random.choice(Config.DISGUISE_REPORT)) # 随机显示报表或邮件
print("="*40 + "\n输入【学习】切换到学习界面,【退出】结束程序")
def switch_to_work():
"""切换到工作界面(隐藏学习内容)"""
print("\n【已切换到工作界面】")
show_disguise()
5. 学习进度记录模块(
"progress_tracker.py")
用JSON记录学习进度,支持断点续学。
# 进度跟踪:记录已完成学习内容,避免重复
import json
import os
from config import Config
def init_progress_file():
"""初始化进度文件"""
os.makedirs(Config.DATA_DIR, exist_ok=True)
if not os.path.exists(Config.PROGRESS_FILE):
with open(Config.PROGRESS_FILE, "w", encoding="utf-8") as f:
json.dump({"completed_segments": []}, f)
def mark_completed(segment_id):
"""标记片段为已完成"""
with open(Config.PROGRESS_FILE, "r+", encoding="utf-8") as f:
data = json.load(f)
if segment_id not in data["completed_segments"]:
data["completed_segments"].append(segment_id)
f.seek(0)
json.dump(data, f, ensure_ascii=False, indent=2)
def get_completed():
"""获取已完成片段ID列表"""
with open(Config.PROGRESS_FILE, "r", encoding="utf-8") as f:
return json.load(f)["completed_segments"]
6. 音频播放模块(
"audio_player.py")
后台播放音频片段,支持跳过重复内容。
# 音频播放:后台播放,支持跳过重复
import threading
import time
from pydub.playback import play
def play_audio_segment(audio_segment, segment_id):
"""后台播放单个音频片段"""
completed = get_completed() # 从progress_tracker导入
if segment_id in completed:
print(f"⏭️ 片段{segment_id}已学习,自动跳过")
return
print(f"▶️ 播放片段{segment_id}({len(audio_segment)//1000}秒)")
play(audio_segment) # 播放音频
mark_completed(segment_id) # 标记为已完成
7. 主程序入口(
"main.py")
整合模块,处理用户交互与功能调度。
# 主程序:整合模块,启动学习助手
import os
from import_handler import import_text, import_audio
from content_splitter import split_text, split_audio
from ui_disguiser import show_disguise, switch_to_work
from progress_tracker import init_progress_file, mark_completed, get_completed
from audio_player import play_audio_segment
from config import Config
def main():
init_progress_file()
print(Config.WELCOME_MSG)
show_disguise() # 初始显示伪装界面
while True:
cmd = input("\n请输入操作【学习/退出】:").strip()
if cmd == Config.EXIT_CMD:
print("感谢使用,再见!")
break
elif cmd == "学习":
# 模拟导入资料(实际可扩展文件选择对话框)
print("\n【学习界面】请选择资料类型:1.文字 2.音频")
choice = input("输入选项:").strip()
if choice == "1":
# 文字学习流程
text_paragraphs = import_text("sample.txt") # 替换为实际文件路径
segments = split_text(text_paragraphs)
for i, seg in enumerate(segments, 1):
seg_id = f"text_{i}"
if seg_id in get_completed():
print(f"⏭️ 文字片段{i}已学习,跳过")
continue
print(f"\n--- 文字片段{i} ---\n{seg}")
mark_completed(seg_id)
if input("按Enter继续,输入【工作】返回:") == "工作":
switch_to_work()
break
elif choice == "2":
# 音频学习流程
audio = import_audio("sample.mp3") # 替换为实际文件路径
segments = split_audio(audio)
for i, seg in enumerate(segments, 1):
seg_id = f"audio_{i}"
threading.Thread( # 后台播放
target=play_audio_segment,
args=(seg, seg_id),
daemon=True
).start()
if input("播放中...输入【工作】返回:") == "工作":
switch_to_work()
break
else:
print("无效选项,请重试")
else:
print("无效命令,请输入【学习】或【退出】")
if __name__ == "__main__":
main()
二、README文件(
"README.md")
# 职场高效学习助手(碎片时间学习系统)
## 项目简介
基于Python开发的碎片时间学习工具,支持导入文字/音频资料,自动拆分为5-10分钟片段,界面伪装成工作报表/邮件列表,帮助职场人合理利用时间间隙学习,避免专注被打断。
## 核心功能
1. **资料导入**:支持TXT文字、MP3音频文件
2. **智能拆分**:文字按段落拆分(500-800字/段),音频按时长拆分(5-10分钟/段)
3. **界面伪装**:模拟工作报表/邮件列表,一键切换学习/工作视图
4. **进度跟踪**:记录已完成片段,自动跳过重复内容
5. **后台播放**:音频片段后台播放,不阻塞操作
## 安装与使用
### 环境要求
- Python 3.8+
- 依赖库:`pydub`(音频处理)、`ffmpeg`(音频解码,需单独安装)
bash
pip install pydub
安装ffmpeg:"https://ffmpeg.org/" (https://ffmpeg.org/)(添加到系统PATH)
### 使用步骤
1. 下载代码:保存上述7个`.py`文件到文件夹(如`work_learning_helper`)
2. 准备资料:放入TXT文字文件(`sample.txt`)和MP3音频文件(`sample.mp3`)
3. 运行程序:`python main.py`
4. 操作示例:
欢迎使用职场高效学习助手...
输入【学习】切换到学习界面,【退出】结束程序
请输入操作【学习/退出】:学习
【学习界面】请选择资料类型:1.文字 2.音频
输入选项:1
--- 文字片段1 ---
(内容显示)
## 目录结构
├── config.py # 配置常量与伪装模板
├── import_handler.py # 资料导入(文字/音频)
├── content_splitter.py # 内容拆分(文字/音频)
├── ui_disguiser.py # 界面伪装与切换
├── progress_tracker.py # 学习进度记录(JSON)
├── audio_player.py # 音频后台播放
└── main.py # 程序入口
## 扩展方向
1. GUI界面:用Tkinter开发图形界面,增强伪装效果
2. 格式扩展:支持PDF/EPUB文字、WAV音频导入
3. 云同步:对接网盘存储学习资料与进度
三、使用说明
1. 安装依赖:
- 安装Python 3.8+,通过
"pip install pydub"安装音频库
- 安装FFmpeg(音频解码必需),并将
"bin"目录添加到系统环境变量
2. 准备资料:
- 在程序目录放入TXT文字文件(如
"sample.txt")和MP3音频文件(如
"sample.mp3")
3. 运行与操作:
- 执行
"python main.py"启动程序,初始显示伪装的工作报表/邮件列表
- 输入【学习】进入学习界面,选择文字/音频资料
- 学习中按Enter继续,输入【工作】瞬间切换回伪装界面
- 输入【退出】结束程序
四、核心知识点卡片
知识点 说明 代码应用示例
模块化设计 拆分导入、拆分、界面、进度等独立模块
"import_handler.py"与
"content_splitter.py"分离
音频处理 用
"pydub"库读取/拆分/播放音频
"AudioSegment.from_mp3()"、
"make_chunks()"
多线程播放
"threading"实现音频后台播放不阻塞
"threading.Thread(target=play_audio_segment)"
JSON数据持久化 用JSON文件记录学习进度,支持断点续学
"progress_tracker.py"中
"json.dump/load"
界面伪装逻辑 模拟工作报表模板,随机切换显示内容
"ui_disguiser.py"中
"random.choice(Config.DISGUISE_REPORT)"
内容拆分算法 文字按字数、音频按时长动态拆分
"split_text()"按500-800字分段,
"split_audio()"按7.5分钟分段
重复内容跳过 对比已完成片段ID,避免重复学习
"get_completed()"检查片段ID是否在列表中
注意事项
- 合法合规:本工具旨在帮助合理利用碎片时间学习,请遵守职场规章制度,避免影响正常工作
- 隐私保护:所有资料本地存储,不收集任何个人信息
- 扩展建议:可根据需求添加定时提醒、学习计划制定等功能
关注我,有更多实用程序等着你。