mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-05 15:38:19 +08:00
Merge pull request #2646 from InfinityPacer/dev
This commit is contained in:
+30
-1
@@ -1,6 +1,6 @@
|
|||||||
|
import datetime
|
||||||
import random
|
import random
|
||||||
from typing import List
|
from typing import List
|
||||||
import datetime
|
|
||||||
|
|
||||||
|
|
||||||
class TimerUtils:
|
class TimerUtils:
|
||||||
@@ -41,6 +41,35 @@ class TimerUtils:
|
|||||||
|
|
||||||
return trigger
|
return trigger
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def random_even_scheduler(num_executions: int = 1,
|
||||||
|
begin_hour: int = 7,
|
||||||
|
end_hour: int = 23) -> List[datetime.datetime]:
|
||||||
|
"""
|
||||||
|
按执行次数尽可能平均生成随机定时器
|
||||||
|
:param num_executions: 执行次数
|
||||||
|
:param begin_hour: 计划范围开始的小时数
|
||||||
|
:param end_hour: 计划范围结束的小时数
|
||||||
|
"""
|
||||||
|
trigger_times = []
|
||||||
|
start_time = datetime.datetime.now().replace(hour=begin_hour, minute=0, second=0, microsecond=0)
|
||||||
|
end_time = datetime.datetime.now().replace(hour=end_hour, minute=0, second=0, microsecond=0)
|
||||||
|
|
||||||
|
# 计算范围内的总分钟数
|
||||||
|
total_minutes = int((end_time - start_time).total_seconds() / 60)
|
||||||
|
# 计算每个执行时间段的平均长度
|
||||||
|
segment_length = total_minutes // num_executions
|
||||||
|
|
||||||
|
for i in range(num_executions):
|
||||||
|
# 在每个段内随机选择一个点
|
||||||
|
start_segment = segment_length * i
|
||||||
|
end_segment = start_segment + segment_length
|
||||||
|
minute = random.randint(start_segment, end_segment - 1)
|
||||||
|
trigger_time = start_time + datetime.timedelta(minutes=minute)
|
||||||
|
trigger_times.append(trigger_time)
|
||||||
|
|
||||||
|
return trigger_times
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def time_difference(input_datetime: datetime) -> str:
|
def time_difference(input_datetime: datetime) -> str:
|
||||||
"""
|
"""
|
||||||
|
|||||||
Reference in New Issue
Block a user