Skip to content

# 中小学语文示范诵读库 A web application for displaying and playing audio readings of Chinese language texts for primary and secondary schools.

License

Notifications You must be signed in to change notification settings

baixjian/mandarin-reading-resource

 
 

Repository files navigation

中小学语文示范诵读库

GitHub GitHub last commit GitHub repo size GitHub stars

一个用于展示和播放中小学语文课文朗读音频的Web应用程序。

English version

项目简介

本项目是一个基于Web的音频播放平台,专门用于展示中小学语文课文的朗读音频资源。它提供了按年级、学期分类的音频资源浏览功能,以及搜索和分页功能,让用户能够方便地找到并播放所需的课文朗读音频。

音频资源来源于中央人民广播电台中小学语文示范诵读库,版权归原作者所有。

功能特点

  • 🎵 音频播放:支持在线播放课文朗读音频
  • 📚 分类浏览:按年级和学期对音频资源进行分类
  • 🔍 搜索功能:支持通过课文标题搜索音频资源
  • 📄 分页展示:每页显示15个资源,避免页面卡顿
  • 🎛️ 播放互斥:同时只能播放一个音频,自动停止其他音频
  • 🎨 响应式设计:适配不同屏幕尺寸,支持移动端浏览
  • ⚡ 性能优化:采用分页加载技术,提升页面性能
  • ⌨️ 键盘支持:支持空格键控制播放/暂停
  • 📁 本地加载:支持直接从本地文件系统加载数据
  • 📊 播放状态跟踪:自动保存播放进度和完成状态
  • 🔄 自动保存播放进度:每5秒自动保存一次播放进度
  • 💾 本地存储播放状态:使用localStorage保存播放状态,包括播放时间、总时长、播放次数和完成状态
  • 🎯 焦点播放控制:支持键盘快捷键控制当前焦点播放器
  • 🌐 多种加载方式:支持服务器加载、XMLHttpRequest加载和FileReader本地文件读取
  • 🖱️ 多种交互方式:支持播放器容器点击和按钮获得焦点等多种交互方式

技术栈

  • HTML5
  • CSS3
  • JavaScript (ES6+)
  • Web Audio API
  • LocalStorage

项目结构

├── index.html         # 主页面
├── list.json          # 音频资源数据文件
├── server.py          # 本地开发服务器脚本
├── README.md          # 项目说明文档
├── README_EN.md       # 项目说明文档(英文版)
├── DISCLAIMER.md      # 免责声明
├── LICENSE            # 许可证文件
├── .gitignore         # Git忽略文件配置
└── opus/              # 音频文件目录
    ├── 1-1-1.opus
    ├── 1-1-2.opus
    └── ...

使用方法

在线访问

  1. 访问项目GitHub Pages地址(部署后):
    https://ZedeX.github.io/mandarin-reading-resource/
    

本地运行

有两种方式可以在本地运行项目:

方法一:直接访问Github托管网页(推荐)

  1. 访问项目GitHub托管页面:
    https://ZedeX.github.io/mandarin-reading-resource/
    

方法二:使用本地服务器

  1. 克隆项目到本地:

    git clone https://github.com/ZedeX/mandarin-reading-resource.git
    cd mandarin-reading-resource
  2. 启动本地服务器:

    python server.py
  3. 在浏览器中访问:

    http://localhost:8000
    

方法三:直接打开HTML文件

  1. 克隆项目到本地:

    git clone https://github.com/ZedeX/mandarin-reading-resource.git
    cd mandarin-reading-resource
  2. 在浏览器中直接打开index.html文件

  3. 在页面上点击"选择文件"按钮,选择list.json文件并点击"加载数据"

注意:使用方法三时,由于浏览器安全限制,可能无法正确加载音频文件。如果遇到问题,请使用方法一或二。

数据格式

音频资源数据存储在list.json文件中,格式如下:

[
  {
    "src": "opus/1-1-1.opus",
    "年级": "1",
    "学期": "1",
    "课文序号": "第1课",
    "课文标题": "秋天天气凉了树叶黄了"
  },
  ...
]

自定义配置

修改每页显示数量

index.html文件中找到以下代码并修改数值:

const itemsPerPage = 15; // 修改此数值改变每页显示的资源数量

修改播放器样式

可以通过修改CSS中的以下类来自定义播放器样式:

  • .custom-audio-player - 播放器容器
  • .play-btn - 播放/暂停按钮
  • .progress-container - 进度条容器
  • .progress-bar - 进度条
  • .time-display - 时间显示

播放状态跟踪功能

本项目具备智能播放状态跟踪功能,可以自动保存用户的播放进度:

功能说明

  1. 播放进度保存:每隔5秒自动保存当前播放位置
  2. 播放完成记录:记录已完成播放的音频及播放次数
  3. 状态恢复:重新打开页面时自动恢复上次播放位置
  4. 本地存储:使用浏览器localStorage存储播放状态,不上传到服务器

显示信息

在每个音频项下方会显示播放状态信息:

  • 未播放过的音频:不显示任何信息
  • 播放过但未完成:显示上次播放到的时间点和完成百分比
  • 已完成播放:显示播放次数和上次播放到的时间点

存储机制

播放状态信息存储在浏览器的localStorage中,每个音频文件的状态以独立的键值对形式保存,互不干扰。

键盘快捷键

  • 空格键 - 播放/暂停当前选中的音频
  • Esc键 - 停止当前播放的音频

浏览器兼容性

  • Chrome 50+
  • Firefox 45+
  • Safari 10+
  • Edge 13+
  • Internet Explorer 11+

许可证

本项目采用MIT许可证,详情请见LICENSE文件。

免责声明

本项目仅为方便学习和研究使用。音频资源来源于中央人民广播电台中小学语文示范诵读库,版权归原作者所有。详细免责声明请参见DISCLAIMER.md文件。

贡献

欢迎提交Issue和Pull Request来帮助改进项目。

  1. Fork项目
  2. 创建功能分支 (git checkout -b feature/新功能)
  3. 提交更改 (git commit -am '添加新功能')
  4. 推送到分支 (git push origin feature/新功能)
  5. 创建Pull Request

作者

ZedeX

致谢

Star历史

Stargazers over time

特别说明

本项目所有代码均由TRAE生成。

About

# 中小学语文示范诵读库 A web application for displaying and playing audio readings of Chinese language texts for primary and secondary schools.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • HTML 66.4%
  • JavaScript 25.8%
  • CSS 5.5%
  • Python 2.3%