1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
| import xml.etree.ElementTree as etree
class Band:
countFile = open('countBand.txt', encoding='utf-8')
count = int(countFile.read())
countFile.close()
def __init__(self, name = "No name", pmembers = {}):
self._id = Band.count
self._name = name
self._members = pmembers
print("Initializing band nr {0}".format(Band.count))
print(" Members: ")
print(pmembers)
self._songs = []
if name != "No name":
Band.count = Band.count+1
countFile = open('countBand.txt', encoding='utf-8', mode='w')
countFile.write("{0}".format(Band.count))
countFile.close()
self.save()
def save(self):
#print("Saving {0}".format(self._id))
fileName = "Bands/Band{0}.xml".format(self._id)
saveFile = open(fileName, encoding='utf-8', mode='w')
saveFile.write("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n")
saveFile.write("<Band>\n")
saveFile.write(" <id>{0}</id>\n".format(self._id))
saveFile.write(" <name>{0}</name>\n".format(self._name))
saveFile.write(" <members>\n")
for (name, instruments) in self._members.items():
#print(" Saving " + name)
saveFile.write(" <member name=\"{0}\">\n".format(name))
for instr in instruments:
saveFile.write(" <instrument>{0}</instrument>\n".format(instr))
saveFile.write(" </member>\n")
saveFile.write(" </members>\n")
saveFile.write(" <songs>\n")
for song in self._songs:
saveFile.write(" <song>{0}</song>\n".format(song))
saveFile.write(" </songs>\n")
saveFile.write("</Band>\n")
saveFile.close()
def fromXml(self,bandId):
fileName = "Bands/Band{0}.xml".format(bandId)
tree = etree.parse(fileName)
root = tree.getroot()
self._name = root.find("name").text
membersNode = root.find("members").findall("member")
for member in membersNode:
instrumentsNode = member.findall("instrument")
instrumentsList = []
for instr in instrumentsNode:
instrumentsList.append(instr.text)
#print("Adding member " + member.attrib["name"])
self.addMember(member.attrib["name"], instrumentsList, 0)
songsNode = root.find("songs").findall("song")
for song in songsNode:
self.addSong(song.text, 0)
self._id = root.find("id").text
self.save()
return self
def addMember(self, name, instruments, save = 1):
self._members[name] = instruments
if save == 1:
self.save()
def addSong(self, songId, save = 1):
if not songId in self._songs:
self._songs.append(songId)
if save == 1:
self.save()
if __name__ == '__main__':
band1 = Band("Adrana", {"Anae": [5], "Grhyll": [1,4]})
band1.addMember("Emeric", [2])
band1.addSong(21)
band1.addSong(23)
band2 = Band("Heavy Nuggets Cordons Bleus")
band2.addMember("Nathan", [1,2,3])
band2.addSong(11)
band2.addMember("Fabien", [1,2,4])
band1.addMember("Ludovic", [1])
band3 = Band("Essai", {"Essai1": [19]})
band3.addMember("Essai2", [8])
band5 = Band().fromXml(1)
#print(band1._members)
#print(band5._members)
#band5.addSong(9999)
#print(band1._members)
#print(band5._members)
#print("band1 : {0}".format(band1._id))
#print("band2 : {0}".format(band2._id))
#print("band3 : {0}".format(band3._id)) |