next_song.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #!/usr/bin/env python3
  2. """
  3. Copyright © 2023 Noah Vogt <noah@noahvogt.com>
  4. This program is free software: you can redistribute it and/or modify
  5. it under the terms of the GNU General Public License as published by
  6. the Free Software Foundation, either version 3 of the License, or
  7. (at your option) any later version.
  8. This program is distributed in the hope that it will be useful,
  9. but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. GNU General Public License for more details.
  12. You should have received a copy of the GNU General Public License
  13. along with this program. If not, see <http://www.gnu.org/licenses/>.
  14. """
  15. from re import match
  16. from utils import (
  17. get_yyyy_mm_dd_date,
  18. switch_to_song,
  19. make_sure_file_exists,
  20. )
  21. from input import get_cachefile_content, validate_songchooser_config
  22. import config as const
  23. def cycle_to_next_song() -> None:
  24. cachefile_content = get_cachefile_content(const.NEXTSONG_CACHE_FILE)
  25. if (
  26. not (
  27. len(cachefile_content) == 2
  28. and match(r"[0-9]{4}-[0-9]{2}-[0-9]{2}$", cachefile_content[0])
  29. and match(r"^[0-9]+$", cachefile_content[1])
  30. )
  31. or cachefile_content[0].strip() != get_yyyy_mm_dd_date()
  32. ):
  33. switch_to_song(1)
  34. else:
  35. switch_to_song(int(cachefile_content[1]) + 1)
  36. def main() -> None:
  37. validate_songchooser_config()
  38. make_sure_file_exists(const.NEXTSONG_CACHE_FILE)
  39. cycle_to_next_song()
  40. if __name__ == "__main__":
  41. main()