Package: sine.alarmclock
闹钟Python制作的windows命令行闹钟，指令简单，带倒计时模式，可精确到秒。可设置一次性闹钟、按星期重复的闹钟、按掉后一段时间（周期）再响的闹钟。可自定义beep音频或使用本地铃声。任务栏闪烁提醒、系统消息提醒（以下均得到pypiwin32模块支持）。托盘图标：提供闪烁提醒、左键隐藏窗口、右键菜单、悬浮显示状态文字。v0.7.1开始放弃兼容 python2 ，改为 python3.6+建议从PyPI安装从PyPI安装pip install sine.alarmclock运行选择一个工作目录，命令行执行：python -m sine.alarmclock该工作目录用于：保存闹钟数据保存用户配置放置本地铃声（方便引用）常用指令简介（v0.4-）假设当前时间5月8日17:10添加一次性闹钟（可追加提示信息）：
18:         18:00
18:30       18:30
30          17:30
-10         17:20 （10分钟后）
-1:         18:10 （1小时后）
/10 12:     5月10号12:00

闹钟响后：
Enter       暂停闹钟，延迟响
a           取消闹钟，不再响
s           关闭闹钟

w1 -10      把第一个闹钟改为10分钟后概念定义（v0.5-）一次性闹钟
: 用完自动删除。星期重复闹钟
: 一般意义上的闹钟。比如设置工作日响，也可不重复，表示只响一次（每天有效），之后自动关闭。周期重复闹钟
: 每次取消之后间隔一定时间后再响。和整点报时不同，是从取消之后计算。（本人用于提醒部分有冷却时间的游戏活动）取消闹钟（cancel）
: “按掉”，表示完成任务或忽略。提醒闹钟（remind）
: 正在（响铃）提醒的闹钟。到期闹钟（expired）
: 提醒过的闹钟。全部指令（v0.7-）分为三个页面主页面（闹钟列表）q ---- 退出

添加闹钟：
[<date>] <time> [<msg>]              ---- 一次性闹钟
[<date>] <time> w <weekdays> [<msg>] ---- 按星期重复
[<date>] <time> r <period> [<msg>]   ---- 按周期重复

修改：
e<index>                 ---- 进入编辑页面
w<index> [<date>] <time> ---- 修改时间
a[<index>]               ---- 取消闹钟。默认取消第一个到期闹钟。
s[<index> ...]           ---- 切换开关。默认关闭第一个到期闹钟或第一个闹钟。
r<index> ...             ---- 删除闹钟

d     ---- 切换静音
Enter ---- 延迟提醒，{提醒间隔}之后再响（对所有到期闹钟）编辑页面w[<date>] <time>       ---- 修改时间
a<seconds>             ---- 提前若干秒提醒
m<msg>                 ---- 修改信息
r[<weekdays>|<period>] ---- 修改重复时间（闹钟种类不能更改）
s[<wav_file>]          ---- 设置本地铃声，使用相对或绝对路径，可省略后缀。
                            此外，'default'表示播放beep音频；空表示无铃声；
                            还可用win32的几个注册表声音（见配置文件）。响铃页面（屏幕闪烁时）Enter ---- 延迟提醒，{提醒间隔}之后再响（对所有提醒闹钟）
a     ---- 取消第一个提醒闹钟。
s     ---- 关掉第一个提醒闹钟。指令参数格式（v0.4-）日期和时间（date/time）默认时间格式：其中H小时，M分钟，S秒  
M  
H:  
:S  
H:M  
:M:S  
H:M:S  

默认日期格式：其中y两位年份，m月份，d日  
/d  
m/d  
y/m/d时间前面加上'-'为倒计时模式，比如'-10'为10分钟之后。周期（period）同'时间'格式，不能超过24小时。星期（weekdays）星期一到日分别对应 1234567数字并列，可乱序只输入"0"等其他字符表示不重复比如"12345", "13756", "0"其他'...'表示可输入多个值（空格分离）。其他特性列表中显示的时间为闹钟下一次生效的时间，类似于日程或事件。列表在非当天的闹钟之前添加一个空行，突出今天的闹钟（任务或事件）。可取消未到期的闹钟：对星期重复闹钟，可取消下一次提醒。例如当前星期日，闹钟在工作日，取消一次则星期一不会响铃，时间相应推迟到星期二，以此类推。特别地，对不重复的闹钟，关闭。
（通过重新开启闹钟重置。）对周期重复闹钟，从当前时间重新开始计时。（类似于响铃后取消。）对一次性闹钟，相当于关闭。星期重复闹钟，类似一般意义上的闹钟，会在程序重新启动（包括电脑唤醒后）刷新。表现类似于手机闹钟，关机后到时的闹钟不会在开机后补充响铃。添加闹钟时，如果闹钟时间已过，则自动推迟设置为明天（对于星期重复闹钟则是下一个有效日）。配置一般配置clock.conf，里面有说明。日期时间格式date.conf，time.conf中配置识别格式（按顺序尝试识别）。文件内容为键值对：key：识别读取数据的格式；value：要替换的字段。主要针对闹钟时间的设置（正常模式），对未输入字段置0。原理说明：比如%M=minute,second,microsecond只读取一个数字（分钟），替换掉当前时间的分、秒、微秒，这就保留了当前时间的日期和小时，而没有读到的秒和微秒，相当于置0，最终设置为当前小时的这个分钟。beep音频配置beep.conf配置调用winsound.Beep的时序。每行有2种格式：只有1个数字代表延迟（毫秒）。逗号分隔的2个数字代表声音频率和时长（毫秒）。这段音频将会循环播放。配置只在启动时读取，要生效必须重新启动。托盘图标使用ico后缀格式的图片文件：
正常状态clock.ico
静音状态quiet.ico
提醒状态alarm.ico
消息提示msg.ico(另外显示的图标)
需要自定义时替换相应文件即可。更新日志v1.0.6, 2019-12-14托盘图标支持在资源管理器重启后重新显示v1.0.5, 2019-8-10修复托盘悬浮显示已关闭的闹钟。v1.0.4, 2019-8-6增加日志配置。修复代码（不影响使用）v1.0.3, 2019-7-31修复代码（不影响使用）v1.0.2, 2019-7-31修复唤醒时没有更新星期重复闹钟。v1.0.1, 2019-7-26修复托盘的闹钟排序偶尔不正常。v1.0.0, 2019-7-21增加数据保存的可靠性，更改了数据存储方式。依赖包整理。放弃 python2 兼容。增加配置: encoding, debug.no_clear_screenv0.7.3, 2019-4-17修复：托盘提示信息可能更新不及时v0.7.2, 2019-3-15修复：全屏时右键菜单可能打不开。v0.7.1, 2019-2-9转为在 python3.6+ 下运行。增加了 pypiwin32 依赖，无需再安装 win32api, win32gui 。v0.7.0, 2018-10-22全部汉化，配置文件支持中文字符。增加windows系统消息提示的弹出（右下角，只在首次响铃时，可关闭）。左键点击托盘切换到窗口，再次点击才隐藏。托盘右键菜单可静音、关闭消息提示。托盘右键菜单可提前取消今日闹钟。托盘悬浮文字显示静音等状态。窗口和悬浮文字显示标题为：闹钟 v版本号。新增日志记录，可通过配置 debug 开启。 *主页面增加静音的指令 'd' 。闹钟列表更明显分隔开今日闹钟、已关闭的闹钟。强化前置窗口、前置托盘右键菜单。托盘悬浮文字在响铃时有所强调。托盘悬浮文字增加最大长度的限制（默认24），并取消引号。在睡眠唤醒和跨天时更新托盘悬浮文字。增加闹钟读取异常时对文件的备份。声音 和 消息提示 的状态也显示在屏幕上。新增 msg.ico 为弹窗提示的图标。更新托盘图标，放大了一些，更新静音的样式。铃声改为播放最后（时间最晚）的闹钟。新建重复闹钟指令中，'w' 和 'r' 后不再需要空格。更新时间识别格式的默认值。修改beep最大持续时间为2秒。v0.6.3, 2018-9-21修复有到期闹钟时无法隐藏/显示窗口的问题。v0.6.2, 2018-9-19响铃时左键点击托盘即可停止响铃，延迟提醒。修正托盘菜单文字v0.6.1, 2018-9-15托盘右键可以取消到期闹钟。增加不支持托盘时的处理。修复启动时悬浮不显示闹钟的问题。v0.6.0, 2018-9-12增加托盘图标的显示与功能:单击图标隐藏/显示窗口。图标右键菜单：延迟提醒、静音、退出。有到期闹钟时图标闪烁。悬停显示到期闹钟或当日闹钟。v0.5.7, 2018-8-13修改时间时也会将以过时间推迟到明天。v0.5.6, 2018-7-30修复添加星期闹钟时会在当天响的问题。凌晨刷新列表。v0.5.5, 2018-6-7更改配置文件格式为properties（使用新的properties库读取）。更新了时间格式文件（time）配置，为了适配properties格式对冒号进行了转义，另外可用小数点代替冒号。指令接受大写字母修复v0.5.2以来项目没有上传默认配置文件到PyPI。优化任务栏闪烁，同时闪烁窗口。（flashWindow库更新）v0.5.4, 2018-6-4修复5.0版本后开启时没有重排序的问题。v0.5.3, 2018-6-4主列表的空行也会间隔开已关闭的闹钟了。v0.5.2, 2018-5-23项目管理调整：项目改成独立库，发布到PyPI。从github的个人python仓库独立出来作为一个项目，以PyPI库的格式管理，同时将几个依赖移至PyPI，以便通过pip安装。v0.5.1, 2018-5-20修复响铃自动停止时的异常问题。v0.5.0, 2018-5-18程序改由根目录以模块运行。重新定义一次性闹钟，用完自动删除；原本的一次性闹钟改为星期重复闹钟，只是重复星期为空。可以自定义beep音频。配置中布尔变量可以用0设置（原本只能用False）。修改了数据存储格式，提供了转换脚本。闹钟列表中对非今天的闹钟以空行分隔。电脑睡眠/待机（5分钟以上）唤醒后自动更新星期重复闹钟。为了更新不影响配置，代码版本控制中，配置文件重新定义为默认配置文件，在无配置文件时将被复制。修复部分异常警告没有生效。修复配置读取异常时默认配置不生效。修复不支持任务栏闪烁时导致的问题。修复铃声文件不存在时的问题，会播放beep。修复把目录视为文件判断为文件存在所导致的问题。修复周期重复闹钟创建时的周期可为0。修复提前提醒时间可为负。v0.4.0, 2018-1-20简化命令格式。增加可编辑内容。增加提前提醒功能。可配置日期时间识别格式，还有其他配置。更新数据文件版本为3。列表增加“重复”的显示。音频文件支持绝对或相对路径，并在启动程序或修改时检查存在性。v0.3.5, 2018-1-18增加配置：默认铃声（新增闹钟时）。使用'default'表示默认beep铃声。同时，支持不响铃（设置为空）。v0.3.4, 2018-1-12部分配置从文件clock.conf读取，详细说明见配置文件。v0.3.3增加闹铃时任务栏闪烁的提醒修正添加星期重复闹钟时没有进行过时判断v0.3.2修复添加星期重复时没有指定星期导致出错的问题。修改时间时会对一次性和星期重复进行过时处理。v0.3.1一次性闹钟不会设置为过去时间了（比如当天过期则自动设置为明天）过期一次性闹钟的开启改为“下一天”的时间修复修改信息的问题（原本只会取信息第一个空格之前的内容）补上编辑界面的指令错误提示v0.3.0增加自定义铃声的功能，要求wav格式放在根目录下增加编辑页面，可供修改信息和铃声调整页面信息的展示顺序修复关闭普通闹钟后没有重新排序v0.2.4优化later：有提醒闹钟时延迟所有提醒闹钟，没有时延迟所有到期闹钟修正cancel，对关闭的闹钟无效优化switch：只在开启且过期才重置时间优化闹钟排序方式：关闭的闹钟在最后（会按被关闭顺序）更正expired为remind；对cancel和switch使用同样的选择方式：第一个提醒或过期修正cf指令说明说明中增加了概念解释v0.2.3修复闹铃自动结束不刷新界面（显示闹钟列表）的问题修正回车说明修复延迟提醒的逻辑错误switch默认关闭首个到期闹钟设置时间后自动开启闹钟优化按键取消remove的默认值v0.2.2修复错误指令的输出增加修改时间分离出2种时间输入方式：直接和倒计时，给所有输入情况v0.2.1修复暂停没有保存，启动30秒后不响的问题v0.2增加2种重复闹钟：星期、周期增加闹钟的开关和停止操作增加输入错误的反馈响铃时间30秒v0.1.1增加修改信息修复删除输入不对时的重复反馈v0.1可添加指定(日期)时间的闹钟、倒计时闹钟，可附带信息；到时间后，屏幕闪烁到期的闹钟，并有报警声；手动暂停后，在闹钟列表中有!!!标识，5分钟后会再响真正的关掉必须通过序号删除闹钟倒计时只是输入形式，并不显示为倒计时