中国工作日接口api
workday 中国工作日接口 之前用别人的接口,然后突然就不能用了。简单写一个python-api
引用hinese_calendar写一个简单的api,主要是处理工作日上班时间集团网络限速,其它时间自动不限速,对外出链接回公司提高带宽利用率
可以直接部署Vercel
import chinese_calendar as cc
from datetime import datetime
from flask import Flask, request, jsonify
import pytz
app = Flask(__name__)
def get_cst_time():
"""
获取并转换服务器当前时间为中国标准时间(CST)。
"""
local_time = datetime.now() # 获取系统本地时间
cst_timezone = pytz.timezone('Asia/Shanghai') # CST 时区为中国标准时间
cst_time = local_time.astimezone(cst_timezone) # 将本地时间转换为 CST 时间
return cst_time
def get_cst_time():
"""
获取并转换服务器当前时间为中国标准时间(CST)。
"""
local_time = datetime.now() # 获取系统本地时间
cst_timezone = pytz.timezone('Asia/Shanghai') # CST 时区为中国标准时间
cst_time = local_time.astimezone(cst_timezone) # 将本地时间转换为 CST 时间
return cst_time
@app.route('/api/is_workday', methods=['GET', 'POST'])
def is_workday():
if request.method == 'GET':
date_str = request.args.get('date')
elif request.method == 'POST':
data = request.get_json()
date_str = data.get('date') if data else None
# 获取服务器当前时间并转换成 CST
server_time = get_cst_time().date()
# 如果没有提供日期参数,则使用服务器当前时间
if not date_str:
date = server_time
else:
try:
date = datetime.strptime(date_str, '%Y-%m-%d').date()
except ValueError:
return jsonify({"error": "Invalid date format. Use YYYY-MM-DD"}), 400
is_workday = cc.is_workday(date)
return jsonify({
"date": date.isoformat(),
"is_workday": is_workday
})
if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000)
接口调用 vercel.app的域名需要自己使用代理
curl --location 'https://workday-pi.vercel.app/api/is_workday'
curl --location 'https://workday-pi.vercel.app/api/is_workday?date=2024-07-27'
curl --location 'https://workday-pi.vercel.app/api/is_workday' \
--header 'Content-Type: application/json' \
--data '{
"date": "2024-07-28"
}'
公司路由器限速使用的是Mkirotik限速脚本
:local startHour 19
:local endHour 9
:local currentTime [:tonum [:pick [/system clock get time] 0 2]]
:local isEnabled [/queue tree find]
# 调用中国工作日API
:local today [/system clock get date]
# 此接口已失效
#:local isWorkDay ([/tool fetch url="https://holiday-api.mooim.com/v1/$([/system clock get date])" output=user as-value without-paging ]->"data")
# 使用自己的api
:local isWorkDay ([/tool fetch url="https://workday-pi.vercel.app/api/is_workday?date=$([/system clock get date])" output=user as-value without-paging ]->"data")
# 转换成array格式 7.13版本才支持
:local isWorkDayArray [:deserialize value=$isWorkDay from=json]
# 检查是否是工作日
# 方法1.查找是否包含true
# :if ([:find ($isWorkDay) "true"] > -1) do={
#:if ($isWorkDayArray->"work"->"is_work" = true) do={
# 直接json过滤需要的参数
:if ($isWorkDayArray->"is_workday") do={
:log info "Today is a work day."
# 检查当前时间是否在禁用范围内
:if (($currentTime >= $startHour) or ($currentTime < $endHour)) do={
:log info "Disabling Queue Tree rules..."
# 禁用所有 Queue Tree 规则
/queue tree disable [find ]
} else={
:log info "Enabling Queue Tree rules..."
/queue tree enable [find ]
}
} else={
:log info "Today is not a work day. Disabling all Queue Tree rules..."
# 禁用所有 Queue Tree 规则
/queue tree disable [find ]
}
文章作者 🐳Myki
上次更新 2024-07-29