force_song.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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 sys import argv
  16. from utils import (
  17. error_msg,
  18. make_sure_file_exists,
  19. switch_to_song,
  20. )
  21. from input import validate_songchooser_config
  22. import config as const
  23. # pylint: disable=inconsistent-return-statements
  24. def get_force_int() -> int:
  25. try:
  26. return int(argv[1])
  27. except IndexError:
  28. error_msg("couldn't parse force song integer")
  29. def exit_if_force_int_is_illegal():
  30. force_int = get_force_int()
  31. if force_int > const.OBS_MIN_SUBDIRS:
  32. error_msg("force integer too big")
  33. if force_int < 1:
  34. error_msg("force integer cannot be smaller than 1")
  35. def main() -> None:
  36. validate_songchooser_config()
  37. make_sure_file_exists(const.NEXTSONG_CACHE_FILE)
  38. exit_if_force_int_is_illegal()
  39. switch_to_song(get_force_int())
  40. if __name__ == "__main__":
  41. main()