-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[#34] New Feature: programming Timers with full date, not only day of…
… the week - cleanup outdated timers at startup of Kodi - Bugfixes
- Loading branch information
Showing
16 changed files
with
699 additions
and
43 deletions.
There are no files selected for viewing
Binary file renamed
BIN
+4.61 MB
script.timers.4.0.0-pre-202408171225.zip → script.timers.4.0.0-pre-202408182230.zip
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,9 @@ | ||
import migration | ||
import service | ||
from resources.lib.utils import housekeeper | ||
|
||
if __name__ == "__main__": | ||
|
||
migration.migrate() | ||
housekeeper.cleanup_outdated_timers() | ||
service.run() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,77 @@ | ||
from datetime import datetime | ||
|
||
import xbmc | ||
import xbmcaddon | ||
from resources.lib.timer.storage import Storage | ||
from resources.lib.timer.timer import TIMER_BY_DATE, Timer | ||
from resources.lib.utils import datetime_utils | ||
|
||
ACTION_NOTHING = 0 | ||
ACTION_UPDATE = 1 | ||
ACTION_DELETE = 2 | ||
|
||
|
||
def check_timer(timer: Timer, threshold: datetime) -> int: | ||
|
||
if timer.is_weekly_timer() or timer.is_off(): | ||
return ACTION_NOTHING | ||
|
||
timer.init() | ||
timer.apply(dtd=datetime_utils.DateTimeDelta(threshold)) | ||
if timer.date == "": | ||
timer.to_timer_by_date(timer.upcoming_event) | ||
return ACTION_UPDATE | ||
|
||
last_known_date = datetime_utils.parse_date_str(timer.date) | ||
if timer.upcoming_event: | ||
timer.date = datetime_utils.to_date_str(timer.upcoming_event) | ||
|
||
weekdays_to_remove = list() | ||
has_upcoming = False | ||
for p in timer.periods: | ||
s, e, hit = p.hit(threshold, last_known_date) | ||
start = threshold + s | ||
end = threshold + e | ||
if not hit and end < threshold: | ||
weekdays_to_remove.append(start.weekday()) | ||
elif hit and timer.is_timer_by_date(): | ||
return ACTION_NOTHING | ||
elif threshold <= start <= end: | ||
has_upcoming = True | ||
|
||
timer.days = [day for day in timer.days if day not in weekdays_to_remove] | ||
if not timer.days or timer.days == [TIMER_BY_DATE] and not has_upcoming: | ||
return ACTION_DELETE | ||
|
||
elif weekdays_to_remove: | ||
return ACTION_UPDATE | ||
|
||
return ACTION_NOTHING | ||
|
||
|
||
def cleanup_outdated_timers() -> None: | ||
|
||
addon = xbmcaddon.Addon() | ||
if not addon.getSettingBool("clean_outdated"): | ||
return | ||
|
||
storage = Storage() | ||
timers = storage.load_timers_from_storage() | ||
|
||
updated_any = False | ||
timers_to_remove = list() | ||
|
||
now = datetime.today() | ||
for timer in timers: | ||
action = check_timer(timer, now) | ||
if action == ACTION_UPDATE: | ||
updated_any = True | ||
elif action == ACTION_DELETE: | ||
timers_to_remove.append(timer) | ||
|
||
for timer in timers_to_remove: | ||
xbmc.log(f"remove outdated timer: {str(timer)}", xbmc.LOGINFO) | ||
timers.remove(timer) | ||
|
||
if updated_any or timers_to_remove: | ||
storage.replace_storage(timers) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.