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

"""A tiny tool used to test the `convert` plugin. It copies a file and appends
a specified text tag.
"""

from __future__ import division, absolute_import, print_function
import sys
import platform
import locale

PY2 = sys.version_info[0] == 2


# From `beets.util`.
def arg_encoding():
    try:
        return locale.getdefaultlocale()[1] or 'utf-8'
    except ValueError:
        return 'utf-8'


def convert(in_file, out_file, tag):
    """Copy `in_file` to `out_file` and append the string `tag`.
    """
    # On Python 3, encode the tag argument as bytes.
    if not isinstance(tag, bytes):
        tag = tag.encode('utf-8')

    # On Windows, use Unicode paths. (The test harness gives them to us
    # as UTF-8 bytes.)
    if platform.system() == 'Windows':
        if not PY2:
            in_file = in_file.encode(arg_encoding())
            out_file = out_file.encode(arg_encoding())
        in_file = in_file.decode('utf-8')
        out_file = out_file.decode('utf-8')

    with open(out_file, 'wb') as out_f:
        with open(in_file, 'rb') as in_f:
            out_f.write(in_f.read())
        out_f.write(tag)


if __name__ == '__main__':
    convert(sys.argv[1], sys.argv[2], sys.argv[3])

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

"""A tiny tool used to test the `convert` plugin. It copies a file and appends
a specified text tag.
"""

from __future__ import division, absolute_import, print_function
import sys
import platform
import locale

PY2 = sys.version_info[0] == 2


# From `beets.util`.
def arg_encoding():
    try:
        return locale.getdefaultlocale()[1] or 'utf-8'
    except ValueError:
        return 'utf-8'


def convert(in_file, out_file, tag):
    """Copy `in_file` to `out_file` and append the string `tag`.
    """
    # On Python 3, encode the tag argument as bytes.
    if not isinstance(tag, bytes):
        tag = tag.encode('utf-8')

    # On Windows, use Unicode paths. On Python 3, we get the actual,
    # Unicode filenames. On Python 2, we get them as UTF-8 byes.
    if platform.system() == 'Windows' and PY2:
        in_file = in_file.decode('utf-8')
        out_file = out_file.decode('utf-8')

    with open(out_file, 'wb') as out_f:
        with open(in_file, 'rb') as in_f:
            out_f.write(in_f.read())
        out_f.write(tag)


if __name__ == '__main__':
    convert(sys.argv[1], sys.argv[2], sys.argv[3])

Fix Windows encoding in convert stub (#2516)