This article has been dead for over three months
You
import binascii
class ITunesLibKeys():
def __init__(self, xml_file, itl_file):
self.file_xml = xml_file
self.file_itl = itl_file
self.xml_key = self.xml_key_find()
self.itl_key = self.itl_key_find()
self.valid_key = self.key_compare()
self.new_key = ''
def xml_key_find(self):
f_x = open(self.file_xml)
f_xml = f_x.readlines()
f_x.close()
for item in f_xml:
if item.find('<key>Library Persistent ID</key>') != -1:
before_xml, tag_before, rest_xml = str(item).partition('<key>Library Persistent ID</key><string>')
key_xml, tag_after, after_xml = rest_xml.partition('</string>')
return key_xml
def itl_key_find(self):
f_i = open(self.file_itl, 'rb')
f_itl_bin = f_i.read()
f_i.close()
f_itl_hex = str(binascii.hexlify(f_itl_bin)).upper()
return f_itl_hex[104:120]
def key_compare(self):
if self.xml_key == self.itl_key:
return True
else:
return False
def new_user_key(self):
while len(self.new_key) != 16:
self.new_key = raw_input('Enter the new key:').upper()
def xml_key_replace(self, sel_key):
f_x = open(self.file_xml)
f_xml = f_x.read()
f_x.close()
f_xml = f_xml.replace(self.xml_key, sel_key)
f_x = open(self.file_xml, 'w')
f_x.write(f_xml)
f_x.close()
def itl_key_replace(self, sel_key):
f_i = open(self.file_itl, 'rb')
f_itl_bin = f_i.read()
f_i.close()
f_itl_hex = str(binascii.hexlify(f_itl_bin)).upper()
f_itl_hex = f_itl_hex.replace(self.xml_key, sel_key)
f_i = open(self.file_itl, 'wb')
f_itl_bin = binascii.unhexlify(f_itl_hex)
f_i.write(f_itl_bin)
f_i.close()