<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def parse_argv():
 """ Parse command line arguments. Settings will be stored in the global variables declared above. """

    parser = argparse.ArgumentParser(description='Find lyrics for a set of mp3'
                                     ' files and embed them as metadata')
    parser.add_argument('-j', '--jobs', help='Number of parallel processes',
                        type=int, metavar='N', default=1)
    parser.add_argument('-o', '--overwrite', help='Overwrite lyrics of songs'
                        ' that already have them', action='store_true')
    parser.add_argument('-s', '--stats', help='Print a series of statistics at'
                        ' the end of the execution', action='store_true')
    parser.add_argument('-v', '--verbose', help='Set verbosity level (pass it'
                        ' up to three times)', action='count')
    parser.add_argument('-d', '--debug', help='Enable debug output',
                        action='store_true')
    group = parser.add_mutually_exclusive_group()
    group.add_argument('-r', '--recursive', help='Recursively search for'
                       ' mp3 files', metavar='path', nargs='?', const='.')
    group.add_argument('--from-file', help='Read a list of files from a text'
                       ' file', type=str)
    parser.add_argument('songs', help='The files/songs to search lyrics for',
                        nargs='*')

    args = parser.parse_args()

    CONFIG['overwrite'] = args.overwrite
    CONFIG['print_stats'] = args.stats

    if args.verbose is None or args.verbose == 0:
        logger.setLevel(logging.CRITICAL)
    elif args.verbose == 1:
        logger.setLevel(logging.INFO)
    else:
        logger.setLevel(logging.DEBUG)

    if args.jobs <= 0:
        msg = 'Argument -j/--jobs should have a value greater than zero'
        parser.error(msg)
    else:
        CONFIG['jobcount'] = args.jobs

    songs = set()
    if args.from_file:
        songs = load_from_file(args.from_file)
        if not songs:
            raise ValueError('No file names found in file')
    elif args.recursive:
        mp3files = glob.iglob(args.recursive + '/**/*.mp3', recursive=True)
        songs = set(Song.from_filename(f) for f in mp3files)
    elif args.songs:
        if os.path.exists(args.songs[0]):
            parser = Song.from_filename
        else:
            parser = Song.from_string
        songs.update(map(parser, args.songs))
    else:
        songs.add(get_current_song())

    # Just in case some song constructors failed, remove all the Nones
    return songs.difference({None})