iis不能新建网站,网站后台登陆口,网站建设成本估算,招标网站哪个比较好前言 不想升级IOS#xff0c;苦于找不到新的日历订阅url#xff0c;小菜鸡百度来百度去发现ics这东西可以自己做一个#xff0c;惊喜于看到了这篇文章--使用python获取日历信息并制作订阅文件_https: //github.com/lk-itween/calendar-CSDN博客
感谢作者大大。就想自己写一…前言 不想升级IOS苦于找不到新的日历订阅url小菜鸡百度来百度去发现ics这东西可以自己做一个惊喜于看到了这篇文章--使用python获取日历信息并制作订阅文件_https: //github.com/lk-itween/calendar-CSDN博客
感谢作者大大。就想自己写一个但是发现到网上去找日历也挺麻烦然后就参照写了一个比较简单的通过读取EXCEL节假日信息来生成ics目前已亲测成功。
准备工作 制作一个EXCEL记录节假日、补班和日期内容设置纯文本格式 日历订阅文件生成
解析excel拼接ics生成文件源码贴图如下。多个sheet根据sheet名生成多种日历。
#!/usr/bin/python
from datetime import datetime
import xlrdnow datetime.now().strftime(%Y%m%dT%H:%M:%S)
# name 日历名称
def set_ics_header(name):return BEGIN:VCALENDAR\n \ PRODID:NULL\n \ VERSION:2.0\n \ CALSCALE:GREGORIAN\n \ METHOD:PUBLISH\n \ fX-WR-CALNAME:{name}\n \ X-WR-TIMEZONE:Asia/Shanghai\n \ fX-WR-CALDESC:{name}\n \ BEGIN:VTIMEZONE\n \ TZID:Asia/Shanghai\n \ X-LIC-LOCATION:Asia/Shanghai\n \ BEGIN:STANDARD\n \ TZOFFSETFROM:0800\n \ TZOFFSETTO:0800\n \ TZNAME:CST\n \ DTSTART:19700101T000000\n \ END:STANDARD\n \ END:VTIMEZONE\ndef set_jr_ics(jr, date, uid): # jr: 节日date日期uid编序return BEGIN:VEVENT\n \ fDTSTART;VALUEDATE:{date}\n \ fDTEND;VALUEDATE:{date}\n \ fDTSTAMP:{date}T000001\n \ fUID:{date}T{uid:06}_jr\n \ fCREATED:{date}T000001\n \ fDESCRIPTION:{jr}\n \ fLAST-MODIFIED:{now}\n \ SEQUENCE:0\n \ STATUS:CONFIRMED\n \ fSUMMARY:{jr}\n \ TRANSP:TRANSPARENT\n \ END:VEVENT\ndef concat_ics(year, jjr_list,rq_list): # 返回一个完整的ics文件内容header set_ics_header(year)# 将节日进行编号生成list转成字符串jr_ics.join(list(map(set_jr_ics, jjr_list, rq_list,list(range(len(jjr_list))))))return header jr_ics END:VCALENDAR# 保存文件
def save_ics(fname, text):with open(fname, w, encodingutf-8) as f:f.write(text)#获取excel内容和sheet
def get_xlsfile(path):readfilexlrd.open_workbook(path)num readfile.nsheetsreturn readfile,numdef parse_jjr(table):nametable.namejjrlist(table.col_values(0))rqlist(map(dataformat,table.col_values(1)))return name,jjr,rqdef dataformat(date):return datetime.strptime(date, %Y/%m/%d).strftime(%Y%m%d)if __name__ __main__:readfile,num get_xlsfile(F:/ICS/calendar.xls)for i in range(num):name,jjr_list,rq_listparse_jjr(readfile.sheets()[i])jr_ics concat_ics(name,jjr_list,rq_list)filename fcalendar_{name}.icssave_ics(filename, jr_ics)
订阅日历信息 参照原文大大把代码和ics文件上传到gitee仓库
源码https://gitee.com/szjungle/calendar/blob/main/calendar.py
icshttps://gitee.com/szjungle/calendar/raw/main/calendar_2024year.ics 直接到日历里添加日历订阅总是验证失败可以换个方式用safari打开地址右上角“添加全部”可以添加到日历中就成功啦