#!/usr/bin/python3

"""Prefix year onto titles for mp3 files."""

import sys

import eyed3


def usage(retval):
    """Output a usage message."""
    if retval:
        write = sys.stderr.write
    else:
        write = sys.stdout.write
    write('Usage: {} --year 2017 --files 1.mp3 2.mp3\n'.format(sys.argv[0]))
    sys.exit(retval)


def process_mp3(year, filename):
    """Process one mp3 file."""
    print('Prepending year {} to mp3 file {}'.format(year, filename))
    audiofile = eyed3.load(filename)
    audiofile.tag.album = '{}-{}'.format(year, audiofile.tag.album)
    audiofile.tag.save()


def main():
    """Prepend years to album names."""
    year = None
    filenames = []
    while sys.argv[1:]:
        if sys.argv[1] == '--year':
            year = sys.argv[2]
            del sys.argv[1]
        elif sys.argv[1] == '--files':
            filenames = sys.argv[2:]
            del sys.argv[2:]
        elif sys.argv[1] in ('-h', '--help'):
            usage(0)
        else:
            sys.stderr.write('{}: Unrecognized option: {}\n'.format(sys.argv[0], sys.argv[1]))
            usage(1)
        del sys.argv[1]
    if year is None:
        sys.stderr.write('{}: --year is a required option\n'.format(sys.argv[0]))
        usage(1)
    if not filenames:
        sys.stderr.write('{}: --files is a required option\n'.format(sys.argv[0]))
        usage(1)
    for filename in filenames:
        if filename.endswith('.mp3'):
            process_mp3(year, filename)
        else:
            sys.stderr.write('{}: Unrecognized file type: {}\n'.format(sys.argv[0], filename))
            sys.exit(1)


main()