Ошибка «объект не может быть вызван» означает, что рассматриваемый объект не поддерживает синтаксис вызова функции (например, attrib("src")
).
xml.etree.ElementTree.Element.attrib
- это dict
, поэтому вы должны использовать синтаксис скобок (attrib["src"]
) или другие методы dict
для доступа к его элементам.
def read_wpl_file(self,start,filename):
self.tree = ET.parse(filename)
self.smil = self.tree.getroot()
self.head = self.smil.find("head")
self.title = self.head.find("title").text
self.body = self.smil.find("body")
self.seq = self.body.find("seq")
self.media = self.seq.findall("media")
self.songs = []
for song_in_playlist in self.media:
self.song = {}
self.song.update({"path": song_in_playlist.attrib["src"]})
self.song.update({"album_title" : song_in_playlist.attrib["albumTitle"]})
self.song.update({"album_artist" : song_in_playlist.attrib["albumArtist"]})
self.song.update({"title" : song_in_playlist.attrib["trackTitle"]})
self.song.update({"artist" : song_in_playlist.attrib["trackArtist"]})
self.song.update({"duration" : song_in_playlist.attrib["duration"]})
self.songs.append(self.song)
print(self.songs)