|
@@ -6,42 +6,14 @@ import os
|
|
|
import symuid
|
|
|
import symuid.library.cmus
|
|
|
|
|
|
-FILE_PREFIX = b'CTC'
|
|
|
-VERSION_LENGTH = 1
|
|
|
-SUPPORTED_VERSION = b'\x0c'
|
|
|
-# always big endian, see cache_init()
|
|
|
-FLAGS_BYTEORDER = 'big'
|
|
|
-FLAGS_LENGTH = 4
|
|
|
-FLAG_64_BIT = 0x01
|
|
|
-
|
|
|
-
|
|
|
-def import_track(cmus_track):
|
|
|
- if cmus_track.play_count > 0:
|
|
|
- print(cmus_track.play_count, cmus_track.path)
|
|
|
-
|
|
|
|
|
|
def symuid_import_cmus(cache_path):
|
|
|
- with open(os.path.expanduser(cache_path), 'rb') as cache:
|
|
|
- # see cache.c cache_init()
|
|
|
- assert cache.read(len(FILE_PREFIX)) == FILE_PREFIX
|
|
|
- cache_version = cache.read(VERSION_LENGTH)
|
|
|
- assert cache_version == SUPPORTED_VERSION, cache_version
|
|
|
- flags = int.from_bytes(
|
|
|
- cache.read(FLAGS_LENGTH),
|
|
|
- byteorder=FLAGS_BYTEORDER, # persistent
|
|
|
- )
|
|
|
- assert flags & FLAG_64_BIT
|
|
|
- # support no other flags
|
|
|
- assert flags & ~FLAG_64_BIT == 0, flags
|
|
|
- # size includes size itself
|
|
|
- while True:
|
|
|
- size = symuid.library.cmus._int_from_bytes_sys(cache.read(4))
|
|
|
- if size == 0:
|
|
|
- break
|
|
|
- cmus_track = symuid.library.cmus.Track(size, cache.read(size - 4))
|
|
|
- import_track(cmus_track)
|
|
|
- # see cache.c write_ti ALIGN
|
|
|
- cache.read((-size) % 8)
|
|
|
+ lib = symuid.library.cmus.Cache(
|
|
|
+ path=os.path.expanduser(cache_path),
|
|
|
+ )
|
|
|
+ for cmus_track in lib.get_tracks():
|
|
|
+ if cmus_track.play_count > 0:
|
|
|
+ print(cmus_track.play_count, cmus_track.path)
|
|
|
|
|
|
|
|
|
def _init_argparser():
|