next_song.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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. calculate_yyyy_mm_dd_date,
  18. switch_to_song,
  19. make_sure_cachefile_exists,
  20. )
  21. from input import get_songchooser_cachefile_content, validate_songchooser_config
  22. def cycle_to_next_song() -> None:
  23. cachefile_content = get_songchooser_cachefile_content()
  24. if (
  25. not (
  26. len(cachefile_content) == 2
  27. and match(r"[0-9]{4}-[0-9]{2}-[0-9]{2}$", cachefile_content[0])
  28. and match(r"^[0-9]+$", cachefile_content[1])
  29. )
  30. or cachefile_content[0].strip() != calculate_yyyy_mm_dd_date()
  31. ):
  32. switch_to_song(1)
  33. else:
  34. switch_to_song(int(cachefile_content[1]) + 1)
  35. def main() -> None:
  36. validate_songchooser_config()
  37. make_sure_cachefile_exists()
  38. cycle_to_next_song()
  39. if __name__ == "__main__":
  40. main()