Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix plist encoding error caused by chars in range 0x00-0x1f #4

Closed
wants to merge 1 commit into from

Conversation

Lendar
Copy link

@Lendar Lendar commented Nov 28, 2016

Crash is caused by this code in plistlib.py: https://github.com/enthought/Python-2.7.3/blob/master/Lib/plistlib.py#L215

My fix removes specials characters, so plistlib can do its job.

Here is a stack trace:

2016-11-28 22:37:20 INFO: Outputting iTunes XML to '/Users/lendar/Music/iTunes/iTunes Library.xml'...
Traceback (most recent call last):
  File "./swinsian2itlxml.py", line 327, in <module>
    main()
  File "./swinsian2itlxml.py", line 322, in main
    itunes_music_folder=args.itunes_music_folder)
  File "./swinsian2itlxml.py", line 312, in generate_xml
    plistlib.writePlist(plist_dict, itunes_xml)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plistlib.py", line 94, in writePlist
    writer.writeValue(rootObject)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plistlib.py", line 252, in writeValue
    self.writeDict(value)
  File "./swinsian2itlxml.py", line 37, in writeDict
    self.writeValue(value)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plistlib.py", line 252, in writeValue
    self.writeDict(value)
  File "./swinsian2itlxml.py", line 37, in writeDict
    self.writeValue(value)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plistlib.py", line 252, in writeValue
    self.writeDict(value)
  File "./swinsian2itlxml.py", line 37, in writeDict
    self.writeValue(value)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plistlib.py", line 239, in writeValue
    self.simpleElement("string", value)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plistlib.py", line 172, in simpleElement
    value = _escapeAndEncode(value)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plistlib.py", line 215, in _escapeAndEncode
    raise ValueError("strings can't contains control characters; "
ValueError: strings can't contains control characters; use plistlib.Data instead

@mhite
Copy link
Owner

mhite commented May 29, 2017

Thank you -- much appreciated. I've merged a similar fix along with update notes crediting you. (See #5)

@mhite mhite closed this May 29, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants