#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import datetime as dt
import os
import re
import symuid
import symuid.library.itunes
import sys


def symuid_import_itunes(xml_library_path, path_regex_sub):
    lib = symuid.library.itunes.XmlLibrary(xml_library_path)
    for itunes_track in lib.tracks:
        # TODO create tag if last_play_dt is None
        if itunes_track.last_play_dt and itunes_track.local:
            track_path = itunes_track.local_path
            for pattern, repl in path_regex_sub:
                track_path = re.sub(pattern, repl, track_path)
            if not os.path.exists(track_path):
                sys.stderr.write('{!r}: not found\n'.format(track_path))
            else:
                symuid_track = symuid.Track(path=track_path)
                # TODO dt=dt.datetime.now()
                symuid_track.register_play_count(
                    symuid.PlayCount(
                        player='itunes',
                        library_id=lib.id,
                        register_dt=itunes_track.last_play_dt,
                        count=itunes_track.play_count,
                    ),
                    tag_set_cb=lambda tr, tag:
                        print('{!r}: set tag {!r}'.format(tr.path, tag)),
                )


def _init_argparser():
    import argparse
    argparser = argparse.ArgumentParser(description=None)
    argparser.add_argument('xml_library_path')
    argparser.add_argument(
        '--path-regex-sub',
        nargs=2,
        action='append',
        metavar=('regex', 'replacement'),
        default=[],
        help='(default: %(default)r)',
    )
    return argparser


def main(argv):
    argparser = _init_argparser()
    args = argparser.parse_args(argv[1:])
    symuid_import_itunes(**vars(args))
    return 0

if __name__ == "__main__":
    sys.exit(main(sys.argv))