symuid-import-cmus 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. import datetime as dt
  4. import os
  5. import symuid
  6. import symuid.library.cmus
  7. LIBRARY_ID_LENGTH_MIN = 8
  8. def symuid_import_cmus(library_id, cache_path):
  9. assert len(library_id) >= LIBRARY_ID_LENGTH_MIN, library_id
  10. lib = symuid.library.cmus.Cache(
  11. path=os.path.expanduser(cache_path),
  12. )
  13. for cmus_track in lib.get_tracks():
  14. if not os.path.exists(cmus_track.path):
  15. sys.stderr.write('{!r}: not found\n'.format(cmus_track.path))
  16. elif cmus_track.play_count > 0: # TODO play_count = 0
  17. symuid_track = symuid.Track(path=cmus_track.path.decode())
  18. symuid_track.register_play_count(
  19. player='cmus',
  20. library_id=library_id,
  21. register_dt=dt.datetime.now(),
  22. play_count=cmus_track.play_count,
  23. tag_set_cb=lambda tr, tag:
  24. print('{!r}: set tag {!r}'.format(tr.path, tag)),
  25. )
  26. def _init_argparser():
  27. import argparse
  28. argparser = argparse.ArgumentParser(description=None)
  29. argparser.add_argument('library_id')
  30. argparser.add_argument(
  31. 'cache_path',
  32. nargs='?',
  33. default='~/.config/cmus/cache',
  34. help='(default: %(default)r)',
  35. )
  36. return argparser
  37. def main(argv):
  38. argparser = _init_argparser()
  39. args = argparser.parse_args(argv[1:])
  40. symuid_import_cmus(**vars(args))
  41. return 0
  42. if __name__ == "__main__":
  43. import sys
  44. sys.exit(main(sys.argv))