Change deprecated OptionParser for ArgumentParser

This commit is contained in:
2017-04-18 01:49:08 +02:00
parent 6c121a5b6a
commit bf3682bd00

View File

@@ -38,15 +38,13 @@ for use in the D3.js JavaScript library.
""" """
from __future__ import division
from optparse import OptionParser
import os
import io
import plistlib
import json
import datetime import datetime
import io
import json
import os
import plistlib
import sys import sys
import argparse
class SetEncoder(json.JSONEncoder): class SetEncoder(json.JSONEncoder):
@@ -89,7 +87,6 @@ class ITunesParser:
Read library and return Tracks part Read library and return Tracks part
""" """
plist = plistlib.readPlist(self.library_file) plist = plistlib.readPlist(self.library_file)
print(plist['Features'])
return plist['Tracks'] return plist['Tracks']
def _process_songs(self): def _process_songs(self):
@@ -237,34 +234,34 @@ class ITunesParser:
#### main block #### #### main block ####
# Default input & output files # Default input & output files
DEFAULT_LIBRARY_FILE = os.path.expanduser('iTunesLibrary.xml') DEFAULT_LIBRARY_FILE_NAME = 'iTunesLibrary.xml'
DEFAULT_OUTPUT_FILE = os.path.dirname(os.path.realpath(__file__)) + '/es-music-data.json' DEFAULT_OUTPUT_FILE_NAME = '/es-music-data.json'
DEFAULT_LIBRARY_FILE = os.path.expanduser(DEFAULT_LIBRARY_FILE_NAME)
DEFAULT_OUTPUT_FILE = os.path.dirname(os.path.realpath(__file__)) + DEFAULT_OUTPUT_FILE_NAME
# Get options # Get options
parser = OptionParser(version="%prog 1.0") parser = argparse.ArgumentParser()
parser.add_option('-f', '--file', dest='file', type='string', parser.add_argument('-f', '--file', default=DEFAULT_LIBRARY_FILE,
help='iTunes Library XML file path', help='iTunes Library XML file path (default: ./' + DEFAULT_LIBRARY_FILE_NAME + ')')
default=DEFAULT_LIBRARY_FILE) parser.add_argument('-o', '--output', default=DEFAULT_OUTPUT_FILE,
parser.add_option('-o', '--output', dest='output', type='string', help='Output to file (default: .' + DEFAULT_OUTPUT_FILE_NAME + ')')
help='Output to file (default=./js/music-data.json)', parser.add_argument('-c', '--console', action='store_true',
default=DEFAULT_OUTPUT_FILE) help='Output to console instead of file')
parser.add_option('-c', '--console', dest='console', action='store_true', # parser.add_argument('-v', '--verbose', action='store_true',
help='Output to console instead of file') # help='Verbose output')
parser.add_option('-v', '--verbose', dest='verbose', action='store_true',
help='Verbose output')
if __name__ == '__main__': if __name__ == '__main__':
(options, args) = parser.parse_args() args = parser.parse_args()
itunes_parser = ITunesParser(options.file) itunes_parser = ITunesParser(args.file)
output = itunes_parser.to_json() output = itunes_parser.to_json()
if options.console: if args.console:
print(output) print(output)
else: else:
with io.open(options.output, 'wb') as outfile: with io.open(args.output, 'wb') as outfile:
if sys.version_info.major == 2: if sys.version_info.major == 2:
outfile.write(bytes(output)) outfile.write(bytes(output))
elif sys.version_info.major == 3: elif sys.version_info.major == 3:
outfile.write(bytes(output, 'UTF-8')) outfile.write(bytes(output, 'UTF-8'))
print('JSON data written to: ' + options.output) print('JSON data written to: ' + args.output)